キューを再構築するには、次の手順に従います
(1)wf_queue_temp_jms_tableバックアップテーブルにバックアップされるレコードを確認します。
select wfjd.corr_id corrid, msg_state state, count(*) COUNT
from applsys.aq$wf_java_deferred wfjd
where msg_state IN('READY', 'WAIT')
group by corr_id, wfjd.msg_state;
(2)ワークフローエージェントリスナーサービスをシャットダウンし、WF_JAVA_DEFERREDキューのレコードをapps.wf_queue_temp_jms_tableバックアップテーブルにバックアップします。
システム管理者>OracleApplicationsManager>ワークフロー>サービスコンポーネント>ワークフローエージェントリスナーサービス
sqlplus apps/ @wfaqback.sql
例:
sqlplus apps/apps @$FND_TOP/sql/wfaqback.sql WF_JAVA_DEFERRED
(3)すべてのレコードがwf_queue_temp_jms_tableテーブルにあることを確認します。
select CORR_ID corrid, QUEUE queue, count (*)
from apps.wf_queue_temp_jms_table
group by CORR_ID, QUEUE;
(4)aq_tm_processes=0に設定します。
alter system set aq_tm_processes=0;
(5)後で再作成する必要があるCORRIDのインデックスを含むテーブルスペースの名前をメモします。
SELECT index_name, tablespace_name
FROM all_indexes
WHERE index_name = 'WF_JAVA_DEFERRED_N1';
(6)WF_JAVA_DEFERREDキューとqueue_tableを削除します。
declare>
begin
dbms_aqadm.stop_queue(queue_name => 'APPLSYS.WF_JAVA_DEFERRED', wait =>
FALSE);
end;
/
ぶら下がっている場合は、力を使うことができます
declare>
begin
dbms_aqadm.drop_queue_table(queue_table => 'APPLSYS.WF_JAVA_DEFERRED', force
=> TRUE);
end;
/
(7)WF_JAVA_DEFERREDキューを再作成します。
sqlplus / @wfbesqc.sql
例:
sqlplus apps/apps @$FND_TOP/patch/115/sql/wfbesqc.sql APPLSYS APPS
(8)サブスクライバーを追加します。
sqlplus APPSusr/<pass> @wfbesqsubc.sql
構文例:
sqlplus apps/<pass> @$FND_TOP/patch/115/sql/wfbesqsubc.sql APPLSYS APPS
(9)インデックスを再作成します(他のオブジェクトのインデックスが追加されるため、オブジェクトに関するORA-00955エラーは無視してください。):
sqlplus APPSusr/<pass> @FND_TOP/patch/115/sql/wfbesqidxc.sql APPLSYS APPS tablespace_name
構文例:
sqlplus apps/apps @$FND_TOP/patch/115/sql/wfbesqidxc.sql APPLSYS APPS APPS_TS_QUEUES
(10)WF_JAVA_DEFERREDのデータをキューに戻します。
sqlplus apps/<pass> @wfaqrenq.sql
例:
sqlplus apps/apps @$FND_TOP/sql/wfaqrenq.sql WF_JAVA_DEFERRED
(11)すべてのレコードがキューに戻っていることを確認します。
select wfjd.corr_id corrid, msg_state state, count(*) COUNT
from applsys.aq$wf_java_deferred wfjd
where msg_state IN('READY', 'WAIT')
group by corr_id, wfjd.msg_state;
(12)ワークフローエージェントリスナーサービスを開始し、キュー上のイベントを処理していることを確認します。
システム管理者>OracleApplicationsManager>ワークフロー>サービスコンポーネント>ワークフローエージェントリスナーサービス
select wfjd.corr_id corrid, msg_state state, count(*) COUNT
from applsys.aq$wf_java_deferred wfjd
where msg_state IN('READY', 'WAIT')
group by corr_id, wfjd.msg_state;
投稿が気に入っていただければ幸いです。改善するためにフィードバックを提供してください