You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Oracle 19c expdp导出schema时遭遇目录无效错误求助

Oracle 19c expdp导出prf_schema时出现ORA-39087目录无效错误的排查与解决

问题场景

在Oracle 19c中尝试使用expdp导出prf_schema,执行以下步骤后报错:

  • 登录sysdba:sqlplus / as sysdba
  • 创建目录对象:create directory prf_dir as '/home/oracle/Export Full';
  • 授权目录权限:grant read, write on directory prf_dir to prf_schema;
  • 授予导出权限:grant datapump_exp_full_database to prf_schema;
  • 退出sqlplus后执行导出命令:
expdp prf_schema/Password1@pdb_1 DIRECTORY=prf_dir DUMPFILE=prf_schema_dump.dmp LOGFILE=prf_schema_dump.log schemas=prf_schema;

错误信息

ORA-39002:  invalid operation
ORA-39070: Unable to open the log file
ORA-39087: directory name prf_dir is invalid.

已完成的预检查

  • 通过dba_directory确认prf_dir存在;
  • 物理路径/home/oracle/Export Full权限为777;
  • 此前用相同步骤导出app_schema成功,仅更换schema名后出现错误。

排查与解决方法

核心原因:目录对象创建容器不匹配

由于此前导出app_schema成功,说明操作流程本身无问题,本次报错大概率是目录对象创建在CDB$ROOT容器,而prf_schema属于PDB(pdb_1)容器,导致PDB中的schema无法识别该目录对象。

解决步骤

  1. 重新登录sysdba并切换到目标PDB:
sqlplus / as sysdba
alter session set container=pdb_1;
  1. 确认当前PDB容器下是否存在prf_dir,若不存在则重新创建并授权:
-- 若目录已存在可跳过create语句
create directory prf_dir as '/home/oracle/Export Full';
grant read, write on directory prf_dir to prf_schema;
grant datapump_exp_full_database to prf_schema;
exit;
  1. 再次执行expdp导出命令:
expdp prf_schema/Password1@pdb_1 DIRECTORY=prf_dir DUMPFILE=prf_schema_dump.dmp LOGFILE=prf_schema_dump.log schemas=prf_schema;

额外验证步骤(可选)

若仍报错,可登录prf_schema验证目录权限:

sqlplus prf_schema/Password1@pdb_1
select * from all_directories where directory_name = 'PRF_DIR';
select privilege from user_tab_privs where table_name = 'PRF_DIR';
  • 若第一条查询无结果,说明目录未在PDB中创建;
  • 若第二条查询无READ/WRITE权限,需重新执行授权语句。

内容的提问来源于stack exchange,提问作者Vicky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 16:22:47