おらくるのいる生活

OracleのDBAとしての、障害対応やらパフォーマンス・チューニングやらの日々を綴っています

expdpでORA-39127が発生

11gから19cへのデータ移行リハ中の環境で、11g環境でのexpdp実行時にORA-39127が発生したとの連絡がありました。

環境は以下の通りです。

Oracle Database SE 11.2.0.4

RHEL 

発生したエラーの詳細は以下の通りです。

ORA-39127: コールから"SYS"."DBMS_JVM_EXP_PERMS"."GRANT_SYSPRIVS_EXP"で予期しないエラーが発生しました
ORA-44002: オブジェクト名が無効です
ORA-06512: "SYS.DBMS_ASSERT", 行383
ORA-06512: "SYS.DBMS_METADATA", 行9408

 

早速MOS(My Oracle Support)で調べたところ、以下のドキュメントが見つかりました。

DataPump Export (EXPDP) Failed On Identifier SYS.DBMS_JVM_EXP_PERMS Must Be Declared (ドキュメントID 1095533.1)

 

JAVAVMコンポーネント削除後に、 SYS. DBMS_JVM_EXP_PERMSというパッケージが残存してしまう事により発生するエラーで、コンポーネント状態の確認は以下のSQLで行えます。

SQL> select comp_id, version, status from dba_registry;

COMP_ID       VERSION            STATUS   
------------- ------------------ ---------
EM                 11.2.0.4.0         VALID    
OWM             11.2.0.4.0         VALID    
CATALOG       11.2.0.4.0         VALID    
CATPROC       11.2.0.4.0         VALID    
JAVAVM         11.2.0.4.0         REMOVED  
XML               11.2.0.4.0         REMOVED  
CATJAVA        11.2.0.4.0         REMOVED  

7行が選択されました。

CATJAVAとJAVAVMが削除されているのがわかりますね。

※このDBではXMLも削除されていますが、エラートは無関係です。

対処法はSYSユーザで以下のSQLを実行し、残存したパッケージを消す事です。

SQL> delete from exppkgobj$ where package like '%JVM%';
SQL> commit;

この後、エラーは発生しなくなりました。