11gから19cへのデータ移行リハ中の環境で、11g環境でのexpdp実行時にORA-39127が発生したとの連絡がありました。
環境は以下の通りです。
発生したエラーの詳細は以下の通りです。
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を実行し、残存したパッケージを消す事です。
この後、エラーは発生しなくなりました。