You are performing a database eXPort against your 9.2 database. The database export abnormally ends with the following errors: EXP-00056: Oracle error 31600 encountered ORA-31600: invalid input value EMIT_SCHEMA for parameter NAME in function SET_TRANSFORM_PARAM ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105 ORA-06512: at "SYS.DBMS_METADATA_INT", line 3926 ORA-06512: at "SYS.DBMS_METADATA_INT", line 4050 ORA-06512: at "SYS.DBMS_METADATA", line 836 ORA-06512: at line 1 EXP-00000: Export terminated unccessfully .
这个问题困扰我好几天,原本好好的export在上了Oracle的patchset后,竟然无法进行fully export,查了很久只知道是个bug,最后终於知道解决办法,分享给各位。
1) 假如在安装patchset之前就已经有资料库存在,则安装好patch后必须补做下面程序:
sqlplus /nolog
SQLconnect sys as sysdba Connected.
SQLshutdown normal; after database is shutdown ...
SQLstartup migrate [pfile=...] use the pfile if using one, skip if using spfile
SQLspool c:catpatch.log
SQL@c:oracleora92 dbmsadmincatpatch.sql
SQLspool off
SQLshutdown normal; after database is shutdown ...
SQLstartup restrict [pfile=...] use the pfile if using one, skip if using spfile
SQL@c:oracleora92 dbmsadminutlrp.sql
SQLalter system disable restricted session;
执行过catpatch.sql后,你的资料库就可以继续正常使用fully export了。(此script会执行很久)
2) 若是安装patch后才利用DBCA建立新资料库,若在DBCA GUI下你选择OLTP OR OLAP...等资料库模式来建立,则资料库建好仍然必须补做catpatch.sql,若你是选择customer方式来建立资料库,他会帮你执行相关程序,也就是说你不需要在补做catpatch.sql了,不过这种方式的建立DB时间较长。