【问题标题】:Oracle import dump file throwing ORA-39088 errorOracle 导入转储文件引发 ORA-39088 错误
【发布时间】:2012-03-04 16:27:28
【问题描述】:

我正在尝试从 Oracle 10g 数据泵实用程序创建的转储文件中导入数据。我发出的命令是

impdp \"username/password@DB as sysdba\" remap_schema=SRC_SCHEMA:TARGET_SCHEMA remap_tablespace=source_tablespace:target_tablespace DUMPFILE=db.dmp

我收到以下错误消息:

ORA - 39001: Invalid argument value
ORA - 39000: Bad dump file spcification
ORA - 39088: file name cannot contain a path specification

这个错误的原因是什么?

【问题讨论】:

    标签: oracle import impdp oracle-dump


    【解决方案1】:

    来自the documentation

    ORA-39088:文件名不能包含路径规范
    原因:转储文件、日志文件或 sql 文件的名称包含路径规范.
    操作:使用目录对象的名称来指示文件的存储位置。

    这表明您显示为DUMPFILE=db.dmp 的参数实际上类似于DUMPFILE=C:\some\dir\path\db.dmp,这是不允许的。您必须使用数据库可识别的目录并使用DIRECTORY参数指定它。


    正如该目录参数链接中的@ruffin 注释,您可以将转储文件放在默认的DATA_PUMP_DIR 目录中,您可以从dba_directories 视图中找到该目录,或者,如果您有权使用该对象,则可以在@ 987654331@ 查看。您要导入的用户必须已被授予读取和写入权限,您才能使用它。您还需要能够将转储文件移动到操作系统目录中,因此那里的权限也可能是个问题。

    如果您没有合适的目录对象,您拥有数据库权限和操作系统访问权限,则需要创建一个并授予合适的权限。这需要由具有适当权限的人完成,通常为SYS

    create directory my_data_pump_dir as 'C:\some\dir\path';
    grant read, write on directory my_data_pump_dir to <username>;
    

    然后将import修改为有:

    ... DUMPFILE=db.dmp DIRECTORY=my_data_pump_dir
    

    请注意,操作系统目录必须对数据库服务器上的 Oracle 用户帐户(运行数据库进程的人,pmon 等)可用。您不能使用本地文件导入远程数据库,除非本地目录以某种方式安装在远程服务器上。旧的imp 命令是一个客户端应用程序,经常在服务器上运行,但不是必须的; impdp 是一个服务器端应用程序。

    【讨论】:

    • DIRECTORY 参数页面说,directory_object 是数据库目录对象的名称(不是实际目录的文件路径)。安装后,特权用户可以访问名为 DATA_PUMP_DIR 的默认目录对象,如果我只想加载 dmp 文件并进行取证,这并不是最有用的。除了将 dmp 文件粘贴到appropriate dpdump folder 之外,还有更好的答案吗?也就是我怎么do指向C:\myDir?
    • @ruffin - 作为 DBA,您需要 create a directory 引用该操作系统位置,并将对该新目录对象的权限授予运行 impdp 的任何人。希望您知道 O/S 目录必须位于数据库服务器上,而不是客户端计算机上。您不能在命令行上指定 O/S 目录;从链接到“默认位置”:“需要目录对象的原因是为了确保数据的安全性和完整性”。但这应该是一个新问题,无论是在这里还是在Database Administrators
    • 很公平——我认为既然我们假设 OP 正在尝试一些固定的路径,我们可以继续重新解释并将其扩展到答案,所以我们把它都放在了同一个地方。 2¢,fwiw 等。我相信应用程序开发人员(他们经常得到 dbas 给他们的连接字符串,然后编码离开)也通常会得到遗留转储,并且预计会比 dbas 预期更频繁地进行本地机器取证/原型设计(我'我第四次这样的请求),所以这是一个有趣的问题和有用的技能。谢谢!
    • @ruffin - 是的,可能比我在第一次阅读时想象的更相关,我想说'......如果需要更详细'但在评论中用完了空间,如果它听起来比我的意思更苛刻,请道歉!令人困惑的是,dba.se 不仅适用于 DBA,而且我认为它是 impdp 问题的更好归宿,即使它是开发人员在做的工作,但它是一个灰色地带,意见不一。
    猜你喜欢
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 2015-02-07
    • 2016-05-11
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多