首先,为一个非常新手的问题道歉。当我支持的客户转移到 12c 时,我才刚刚开始掌握数据泵转储在 11g 中的工作原理。的运气。:)
所以一个希望快速的问题:我正在使用同事运行 12c 的 Windows 服务器来尝试导入客户的数据泵转储(有他们的转储和日志文件),但我不知道将转储放在哪里进行导入。 当我运行时:
select * from dba_directories where directory_name='DATA_PUMP_DIR';
这是返回的输出:
c:adeaime_voracle/admin/seeddata/dpdump/
该目录在此计算机上的任何地方都不存在,而且它看起来像一个不寻常的目录路径。(我的同事正在度假,否则我当然会问)。
那么 12c 中是否发生了一些变化,它对待目录的方式略有不同? 我一直在想,创建此服务器的人肯定不可能只是将数据泵目录指向这样不存在的路径。我目前正在谷歌上搜索自己,所以我想简短的问题只是我从哪里开始,作为确定我的目录在哪里删除我的转储导入文件的第一步?
再次,为令人尴尬的新手问题道歉,并提前感谢您接受我的问题。
使用以下 sql 查询。
select * from dba_directories where directory_name='DATA_PUMP_DIR';
Oracle 将允许您为不存在的物理目录创建一个目录元数据条目,这就是这里发生的情况。 因此,无论用户具有CREATE ANY DICTIONARY
权限,都需要(重新)将 Oracle 元数据目录创建到现有目录,并确保物理目录上的操作系统权限设置为允许 Oracle 用户 ID 读取和写入该目录。 正如@OldProgrammer所建议的,它看起来像有人结合了一半的Unix和一半的Windows路径分隔符。
如果有一个目录 c:\ade\aime_v\oracle\admin\seeddata\dpdump(并且您的转储文件在那里),那么以下内容应该可以工作;如果您从非 dba 标识(在下面的示例中some_user)导入,则还需要在该目录上读取 dba 授权:
drop directory data_pump_dir;
create directory data_pump_dir as 'c:adeaime_voracleadminseeddatadpdump';
-- grant read on data_pump_dir to some_user;