由于某些原因要从dmp文件中恢复某张表。为了与原表中的数据进行比对,恢复时使用了REMAP_TABLE功能来
重命名表。但原表中有索引,所以在恢复的时候会报索引已经存在的错误。为了避免这个错误,尝试使用了
CONTENT=DATA_ONLY功能,即只导入数据。但在导入的时候出现了ORA-39034 ,提示重命名的表不存在。
ORA-39034: Table TABLE_DATA:"SCOTT"."TEST01_BAK11" does not exist.
测试脚本如下:
impdp scott/tiger DIRECTORY=DPUMPDIR DUMPFILE=20121026_%U.dmp tables=TEST01 REMAP_TABLE=TEST01:TEST01_BAK11 logfile=test01imp.log ENCRYPTION_PASSWORD=SCOTTPWD CONTENT=DATA_ONLY
错误信息如下:
Starting "SCOTT"."SYS_IMPORT_TABLE_01": SCOTT/******** DIRECTORY=DPUMPDIR DUMPFILE=20121026_%U.dmp tables=TEST01 REMAP_TABLE=TEST01:TEST01_BAK11 logfile=test01imp.log ENCRYPTION_PASSWORD=******** CONTENT=DATA_ONLY
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
ORA-39034: Table TABLE_DATA:"SCOTT"."TEST01_BAK11" does not exist.
Job "SCOTT"."SYS_IMPORT_TABLE_01" completed with 1 error(s) at 10:26:36
解决方法:
1.先在数据库中创建rename的表
SQL>CREATE TABLE TEST01_BAK11 AS SELECT * FROM TEST01 WHERE 1=0 ;
2.然后再执行导入脚本即可
impdp中同时使用REMAP_TABLE ,CONTENT=DATA_ONLY 功能时要注意重命名的表一定要存在。