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

Oracle 21c XE导入dmp文件失败问题求助

Oracle 21c XE 导入DMP文件问题排查与解决

问题1:初始impdp提示找不到目录、无法创建日志

原因

impdp无法直接识别操作系统本地路径,必须使用Oracle数据库级别的目录对象,而非物理路径。

解决

  1. 以SYSDBA身份登录PDB,创建数据库目录对象:
ALTER SESSION SET CONTAINER=XEPDB1;
CREATE DIRECTORY dump_dir AS 'C:\dump';
  1. 给操作用户授予目录读写权限:
GRANT READ, WRITE ON DIRECTORY dump_dir TO system;
  1. 确保操作系统路径C:\dump存在,且Oracle服务账户拥有该路径的读写权限。
  2. 执行导入时使用目录对象名:
impdp system/123 directory=dump_dir dumpfile=test.dmp logfile=import.log full=y

问题2:移至默认dpdump后遇ORA-65096错误

原因

Oracle 21c XE的根容器(CDB)默认禁止创建用户,你直接在CDB下执行全量导入,尝试创建的UserA等属于PDB级用户,根容器不允许此类操作。

解决

必须切换到目标PDB(XEPDB1)执行导入:

  1. 登录到PDB:
sqlplus system/123@XEPDB1
  1. 确认默认DATA_PUMP_DIR对应的操作系统路径(通常为C:\app\<用户名>\product\21c\dbhomeXE\rdbms\log\dpdump\XEPDB1\),将test.dmp放入该路径。
  2. 在PDB内执行导入命令:
impdp system/123@XEPDB1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=import.log full=y

问题3:创建import用户后遇ORA-1017登录拒绝

原因

  • 用户可能创建在根容器(CDB)而非目标PDB,导致登录PDB时身份无效;
  • 用户未被授予CREATE SESSION权限,或密码输入错误。

解决

  1. 确保在PDB内创建并授权用户:
ALTER SESSION SET CONTAINER=XEPDB1;
CREATE USER import IDENTIFIED BY 123;
GRANT CREATE SESSION, IMP_FULL_DATABASE TO import;
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO import;
  1. 登录时明确指定PDB,避免默认登录到CDB。

问题4:用@XEPDB1遇ORA-12154 TNS解析失败

原因

本地tnsnames.ora文件未配置XEPDB1条目,或配置信息错误。

解决

  1. 定位tnsnames.ora路径(一般为C:\app\<用户名>\product\21c\dbhomeXE\network\admin\);
  2. 添加或修改XEPDB1的TNS配置:
XEPDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XEPDB1)
    )
  )
  1. 重启Oracle监听服务,或直接使用你后续尝试的直连方式替代。

问题5:直连提示导入成功但无表和用户

原因

  • DMP文件导出上下文与当前PDB不匹配,比如导出自其他容器或数据库;
  • 导入时未处理用户/表空间映射,导致对象因已存在或资源缺失未实际导入;
  • 导入日志存在警告信息被忽略,比如权限不足、对象跳过等。

解决

  1. 查看导入日志import.log,搜索ORA-或warning关键字,定位具体原因;
  2. 若目标用户已存在,使用remap_schema参数映射到新用户:
impdp import/123@//10.0.2.15:1521/xepdb1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=import.log full=y remap_schema=UserA:new_userA remap_schema=UserB:new_userB
  1. 若表空间不存在,用remap_tablespace映射到PDB默认表空间(如USERS):
impdp import/123@//10.0.2.15:1521/xepdb1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=import.log full=y remap_tablespace=old_tablespace:USERS
  1. 若DMP为用户级导出,替换full=y为指定用户:
impdp import/123@//10.0.2.15:1521/xepdb1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=import.log schemas=UserA,UserB,UserC

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:12:52