經過:
- 環境:服務器:chndsora9,實例cdesb01,數據庫版本11.2.0.4
- 操作:導出用戶schema 'ESBST02所有表到'ESBST03下
- 執行命令:expdp \'/ as sysdba \' directory=DATA_PUMP_DIR dumpfile= ESBST02_0336.DMP logfile=ESBST02200326.log schemas=ESBST02 compression=all;
- 報錯:>>> ORA-31642: the following SQL statement fails:
BEGIN "SYS"."DBMS_CUBE_EXP".SCHEMA_CALLOUT(:1,0,1,'11.02.00.04.00'); END;
ORA-04063: package body "SYS.DBMS_CUBE_EXP" has errors
ORA-06508: PL/SQL: could not find program unit being called: "SYS.DBMS_CUBE_EXP"
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 281 MB
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PASSWORD_HISTORY
ORA-39127: unexpected error from call to export_string :=SYS.DBMS_CUBE_EXP.SCHEMA_INFO_EXP('ESBST02',0,1,'11.02.00.04.00',newblock)
ORA-04063: package body "SYS.DBMS_CUBE_EXP" has errors
ORA-06508: PL/SQL: could not find program unit being called: "SYS.DBMS_CUBE_EXP"
ORA-06512: at line 1
ORA-06512: at "SYS.DBMS_METADATA", line 10256
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
ORA-39127: unexpected error from call to export_string :=SYS.DBMS_CUBE_EXP.INSTANCE_EXTENDED_INFO_EXP('AW$EXPRESS','SYS',1,2,0,'SYS',1,'11.02.00.04.00',newblock)
ORA-04063: package body "SYS.DBMS_CUBE_EXP" has errors
ORA-06508: PL/SQL: could not find program unit being called: "SYS.DBMS_CUBE_EXP"
- 我的解決辦法(還沒有實施,本來想在MOS上面找的,但是MOS一直打不開),請大家幫忙分析下,有沒有更好的辦法,這個辦法具有一定風險性:
Perform the following:
sqlplus / as sysdba
— backup the table SYS.EXPPKGACT$ before deleting the row
SQL> CREATE TABLE SYS.EXPPKGACT$_BACKUP AS SELECT * FROM SYS.EXPPKGACT$;
— delete the DBMS_CUBE_EXP from the SYS.EXPPKGACT$
SQL> DELETE FROM SYS.EXPPKGACT$ WHERE PACKAGE = ‘DBMS_CUBE_EXP’ AND SCHEMA= ‘SYS’;
SQL> COMMIT;
Run EXPDP command again.