Oracle库中的部分synonym被删,已经不能用闪回恢复。
幸好有昨晚expdp的原数据备份,现尝试用数据库泵impdp的sqlfile功能恢复一下。
以下为恢复的步骤:
执行以下命令会将dumpfile中的内容导出到sqlfile指定的文件中,而不会把数据导入到数据库中。
$ impdp dbuser/dbpassword directory=DPUMPDIR dumpfile=metadata_2015-03-19_01.DMP NCRYPTION_PASSWORD=Encry_password sqlfile=20150319_expdp.sql
dbuser/dbpassword 指连接数据库的用户名和密码
directory参数从以下视图中获取
SELECT * FROM dba_directories
dumpfile指expdp导出的原数据文件
NCRYPTION_PASSWORD指expdp备份时指定的密码
sqlfile指要导出的SQL文件
Import: Release 11.2.0.3.0 - Production on Thu Mar 19 11:46:29 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
Master table "dbuser"."SYS_SQL_FILE_FULL_01" successfully loaded/unloaded
Starting "dbuser"."SYS_SQL_FILE_FULL_01": dbuser/******** directory=DPUMPDIR dumpfile=metadata_2015-03-19_01.DMP ENCRYPTION_PASSWORD=******** sqlfile=20150319_expdp.sql
Processing object type SCHEMA_EXPORT/USER
...
...
Job "dbuser"."SYS_SQL_FILE_FULL_01" successfully completed at 11:48:19
打开sqlfile指定的导出文件,找到需要恢复的synonym,重建即可。
第一次执行impdp命令遇到的错误:
ORA-39006: internal error
ORA-39213: Metadata processing is not available
解决方法:
以sysdba的身份登录,执行
SQL> exec dbms_metadata_util.load_stylesheets
第二次执行impdp命令遇到的错误:
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Data Mining and Real Application Testing options
ORA-39006: internal error
再次执行还遇到同样的错误,网上也没有其它的办法。
原来是导出库的版本和执行导入命令库的版本不一致。
换个一致的版本,执行导入命令,ok。