执行数据泵导出数据的时候出现如下问题:
Estimate in progress using STATISTICS method...
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.CONFIGURE_METADATA_UNLOAD [ESTIMATE_PHASE]
ORA-04063: package body "SYS.DBMS_METADATA" has errors
ORA-06508: PL/SQL: could not find program unit being called: "SYS.DBMS_METADATA"
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.KUPW$WORKER", line 9715
产生ORA-04063的错误,尝试去手动编译,看有没有报错
SQL> alter package SYS.DBMS_METADATA compile package;
SQL> alter package SYS.DBMS_METADATA compile body;
Warning: Package Body altered with compilation errors.
SQL> show errors
Errors for PACKAGE BODY SYS.DBMS_METADATA:
LINE/COL ERROR
-------- -----------------------------------------------------------------
82/1 PL/SQL: Item ignored
82/33 PLS-00201: identifier 'SYS.KU$_OBJGRANT_T' must be declared
1766/13 PL/SQL: Item ignored
1766/13 PLS-00201: identifier 'SYS.KU$_CALLOUT_T' must be declared
1809/5 PL/SQL: SQL Statement ignored
1809/18 PLS-00320: the declaration of the type of this expression is
incomplete or malformed
1813/5 PL/SQL: Statement ignored
1813/22 PLS-00320: the declaration of the type of this expression is
incomplete or malformed
LINE/COL ERROR....................
默认情况下DBMS_SYSTEM包只能由sys访问,DBMS_SYSTEM包也没有创建同义词,试着通过创建public同义词并授权看能否解决。
SQL> CREATE PUBLIC SYNONYM dbms_system FOR DBMS_SYSTEM;
Synonym created.
SQL> GRANT EXECUTE ON dbms_system TO user;
Grant succeeded.
然后重新编译包,发现问题并未解决,权限没有问题,继续排查。
catproc是用来创建数据库的基本过程和包的,试着重新创建一下,看能否顺利编译。
下面操作生产库慎用,要关库了。
SQL> shutdown immediate;
SQL> startup restict; ---启动到限制模式
SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql;
SQL> shutdown immediate;
SQL> startup;
发现一切OK,继续数据泵导出,可以正常操作。
Estimate in progress using STATISTICS method...
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.CONFIGURE_METADATA_UNLOAD [ESTIMATE_PHASE]
ORA-04063: package body "SYS.DBMS_METADATA" has errors
ORA-06508: PL/SQL: could not find program unit being called: "SYS.DBMS_METADATA"
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.KUPW$WORKER", line 9715
产生ORA-04063的错误,尝试去手动编译,看有没有报错
SQL> alter package SYS.DBMS_METADATA compile package;
SQL> alter package SYS.DBMS_METADATA compile body;
Warning: Package Body altered with compilation errors.
SQL> show errors
Errors for PACKAGE BODY SYS.DBMS_METADATA:
LINE/COL ERROR
-------- -----------------------------------------------------------------
82/1 PL/SQL: Item ignored
82/33 PLS-00201: identifier 'SYS.KU$_OBJGRANT_T' must be declared
1766/13 PL/SQL: Item ignored
1766/13 PLS-00201: identifier 'SYS.KU$_CALLOUT_T' must be declared
1809/5 PL/SQL: SQL Statement ignored
1809/18 PLS-00320: the declaration of the type of this expression is
incomplete or malformed
1813/5 PL/SQL: Statement ignored
1813/22 PLS-00320: the declaration of the type of this expression is
incomplete or malformed
LINE/COL ERROR....................
默认情况下DBMS_SYSTEM包只能由sys访问,DBMS_SYSTEM包也没有创建同义词,试着通过创建public同义词并授权看能否解决。
SQL> CREATE PUBLIC SYNONYM dbms_system FOR DBMS_SYSTEM;
Synonym created.
SQL> GRANT EXECUTE ON dbms_system TO user;
Grant succeeded.
然后重新编译包,发现问题并未解决,权限没有问题,继续排查。
catproc是用来创建数据库的基本过程和包的,试着重新创建一下,看能否顺利编译。
下面操作生产库慎用,要关库了。
SQL> shutdown immediate;
SQL> startup restict; ---启动到限制模式
SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql;
SQL> shutdown immediate;
SQL> startup;
发现一切OK,继续数据泵导出,可以正常操作。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29535374/viewspace-2128738/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29535374/viewspace-2128738/