oracle exp ORA-31600和ORA-00942问题的解决

来源:互联网 发布:c语言多线程编程入门 编辑:程序博客网 时间:2024/05/13 15:21

oracle exp ORA-31600和ORA-00942问题的解决

在不同版本的Oracle之间Exp导出时,出现ORA-00942错误.

连接到: Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.7.0 - Production
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即将导出指定的用户...
. 正在导出 pre-schema 过程对象和操作
. 正在导出用户 NORMALSOFT 的外部函数库名称
. 导出 NORMALSOFT 类型同义词
. 导出私有类型同义词
. 正在导出用户 NORMALSOFT 的对象类型定义
EXP-00008: 遇到 ORACLE 错误 942
ORA-00942: 表或视图不存在
EXP-00024: 未安装导出视图,请通知您的 DBA
EXP-00000: 导出终止失败

上网检索后发现由于数据库打补丁后没有更新EXP数据字典所致,更新catexp.sql.

sqlplus /nolog
connect / as sysdba;
@$ORACLE_HOME/rdbms/admin/catexp.sql


再次执行导出出现下面ORA-31600错误提示:
连接到: Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.7.0 - Production
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即将导出指定的用户...
. 正在导出 pre-schema 过程对象和操作
. 正在导出用户 NORMALSOFT 的外部函数库名称
. 导出 NORMALSOFT 类型同义词
. 导出私有类型同义词
. 正在导出用户 NORMALSOFT 的对象类型定义
即将导出 NORMALSOFT 的对象 ...
. 正在导出数据库链接
. 正在导出序号
. 正在导出群集定义
EXP-00056: 遇到 ORACLE 错误 31600
ORA-31600: 输入值 EMIT_SCHEMA 无效, 它用于参数 NAME, 位于函数 SET_TRANSFORM_PARAM 中
ORA-06512: 在"SYS.DBMS_SYS_ERROR", line 105
ORA-06512: 在"SYS.DBMS_METADATA_INT", line 3926
ORA-06512: 在"SYS.DBMS_METADATA_INT", line 4050
ORA-06512: 在"SYS.DBMS_METADATA", line 836
ORA-06512: 在line 1
EXP-00000: 导出终止失败

检查后发现忘记安装catpatch.sql更新数据字典.
sqlplus /nolog
shutdown immediate;
startup migrate;
@$ORACLE_HOME/rdbms/admin/catpatch.sql;
shutdown immediate;
startup;
再次导出,问题解决.