Oracle 21c XE导入dmp文件失败问题求助
Oracle 21c XE 导入DMP文件问题排查与解决
问题1:初始impdp提示找不到目录、无法创建日志
原因
impdp无法直接识别操作系统本地路径,必须使用Oracle数据库级别的目录对象,而非物理路径。
解决
- 以SYSDBA身份登录PDB,创建数据库目录对象:
ALTER SESSION SET CONTAINER=XEPDB1; CREATE DIRECTORY dump_dir AS 'C:\dump';
- 给操作用户授予目录读写权限:
GRANT READ, WRITE ON DIRECTORY dump_dir TO system;
- 确保操作系统路径
C:\dump存在,且Oracle服务账户拥有该路径的读写权限。 - 执行导入时使用目录对象名:
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)执行导入:
- 登录到PDB:
sqlplus system/123@XEPDB1
- 确认默认
DATA_PUMP_DIR对应的操作系统路径(通常为C:\app\<用户名>\product\21c\dbhomeXE\rdbms\log\dpdump\XEPDB1\),将test.dmp放入该路径。 - 在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权限,或密码输入错误。
解决
- 确保在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;
- 登录时明确指定PDB,避免默认登录到CDB。
问题4:用@XEPDB1遇ORA-12154 TNS解析失败
原因
本地tnsnames.ora文件未配置XEPDB1条目,或配置信息错误。
解决
- 定位
tnsnames.ora路径(一般为C:\app\<用户名>\product\21c\dbhomeXE\network\admin\); - 添加或修改XEPDB1的TNS配置:
XEPDB1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XEPDB1) ) )
- 重启Oracle监听服务,或直接使用你后续尝试的直连方式替代。
问题5:直连提示导入成功但无表和用户
原因
- DMP文件导出上下文与当前PDB不匹配,比如导出自其他容器或数据库;
- 导入时未处理用户/表空间映射,导致对象因已存在或资源缺失未实际导入;
- 导入日志存在警告信息被忽略,比如权限不足、对象跳过等。
解决
- 查看导入日志
import.log,搜索ORA-或warning关键字,定位具体原因; - 若目标用户已存在,使用
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
- 若表空间不存在,用
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
- 若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
相关产品推荐
相关产品推荐

