【後で調べる】Tag: ORA-39077: unable to subscribe agent KUPC$A_1_083325450472000
Tag: ORA-39077: unable to subscribe agent KUPC$A_1_083325450472000
https://geodatamaster.com/tag/ora-39077-unable-to-subscribe-agent-kupca_1_083325450472000/
data pump(expdp)が以下のようなエラーで異常終了した場合、一度この状態になると何度やっても失敗する
ORA-31626: job does not exist ジョブが存在しません ORA-31638: cannot attach to job XXX for user XXX ジョブXXXに連結できません ORA-06512: at “SYS.KUPV$FT”, line 1142 ORA-06512: at “SYS.DBMS_SYS_ERROR”, line 95 ORA-06512: at “SYS.KUPV$FT_INT”, line 498 ORA-06512: at “SYS.DBMS_SYS_ERROR”, line 95 ORA-06512: at “SYS.KUPC$QUE_INT”, line 294 ORA-06512: at “SYS.DBMS_AQADM_SYS”, line 9306 ORA-06512: at “SYS.DBMS_PRVTAQIS”, line 1873 ORA-06512: at “SYS.DBMS_PRVTAQIS”, line 3802 ORA-06512: at “SYS.DBMS_RULE_ADM”, line 296 ORA-06512: at “SYS.DBMS_RULEADM_INTERNAL”, line 106 等ORA-06512エラーが複数行出力される ORA-39077: unable to subscribe agent KUPC$A_1_xxxxxxxx to queue “KUPC$C_1_XXXXXXXX” エージェントagent KUPC$A_1_xxxxxxxxをキューagent KUPC$A_1_xxxxxxxxにサブスクライブできませn ORA-00972: identifier is too long 数値または値のエラー
以下の数値が100万を超えている
SQL> SELECT "SYS"."AQ$_KUPC$DATAPUMP_QUETAB_1_N".NEXTVAL val# FROM DUAL; VAL# ---------- 1000251
以下の記述実行でも可 SQL> SELECT "SYS"."AQ$_KUPC$DATAPUMP_QUETAB_1_N".NEXTVAL FROM DUAL; NEXTVAL ---------- 1000251
2つの解決策があり、
1つはパッチをあてることである(※使用しているOracleのVerに対応したパッチがある場合)
Data Pump Recommended Proactive Patches For 19.10 and Above (Doc ID 2819284.1)
https://support.oracle.com/knowledge/Oracle%20Database%20Products/2819284_1.html
パッチはオンラインで適用し、データベースサービスをシャットダウンする必要はない
download the bundle patch and apply it “online” with NO database service shutdown required…
もう1つはdatapumpカタログを再作成することである
SQL> @$ORACLE_HOME/rdbms/admin/catdph.sql SQL> @$ORACLE_HOME/rdbms/admin/prvtdtde.plb SQL> @$ORACLE_HOME/rdbms/admin/catdpb.sql SQL> @$ORACLE_HOME/rdbms/admin/dbmspump.sql SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql を順に実行していく。
↓実行例
SQLPlusに接続 sqlplus / as sysdba SELECT "SYS"."AQ$_KUPC$DATAPUMP_QUETAB_1_N".NEXTVAL val# FROM DUAL; 作業前の値を確認。100万件以上であれば同症状が発現する可能性。 SQL> @$ORACLE_HOME/rdbms/admin/catdph.sql 権限付与が成功しました。 PL/SQLがプロシージャが正常に完了しました。 パッケージが作成されました。 パッケージ本体が作成されました。 等のメッセージ SQL> @$ORACLE_HOME/rdbms/admin/prvtdtde.plb ライブラリが作成されました。 シノニムが作成されました。 パッケージが作成されました。 等のメッセージ SQL> @$ORACLE_HOME/rdbms/admin/catdpb.sql 権限付与が成功しました。 ビューが作成されました。 シノニムが作成されました。 コメントが作成されました。 表が作成されました。 表が削除されました。 1行が作成されました。 コミットが完了しました。 等のメッセージ SQL> @$ORACLE_HOME/rdbms/admin/dbmspump.sql 型が作成されました。 型本体が作成されました。 ライブラリが作成されました。 等のメッセージ SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql PL/SQLプロシージャが正常に完了しました。 ファンクションが作成されました。 ファンクションが削除されました。 等のメッセージ
再度、以下のSQLをsysdba権限を持つユーザーで実行し
SELECT "SYS"."AQ$_KUPC$DATAPUMP_QUETAB_1_N".NEXTVAL val# FROM DUAL;
結果、数が減少したことを確認する。sysdba権限を持つユーザで実行しても、順序が存在しないなどのエラーになる場合は、一回expdpで適当なテーブルをエクスポートしてから、もう一度実行してみる。
※参考
https://www.orafaq.com/forum/t/203195/
You hit a known bug, if AQ$_KUPC$DATAPUMP_QUETAB_1_N reaches 1000000 you have this error. No patch in your version, the workaround is to recreate the Data Pump environment: