0

XX と XY という 2 つの運用環境があります。どちらも Oracle 11g リリース 11.2.0.2.0 上にあります。どちらの環境にも、ジョブをキューに入れたりキューから取り出して処理するためのキュー テーブルとジョブ キューがあります。アプリケーション サーバーは Apache Tomcat バージョン 6.0.32 です。

私が直面している問題は、XX 環境では Oracle スケジューラがほぼ毎日現地時間の午後 4 時 30 分に「ハング」または「スタック」するのに対し、XY 環境では完全に正常に動作することです。スケジュールされたジョブのエントリがキュー テーブルに蓄積され始め、アラートがトリガーされます。その後、誰かがアプリケーション サーバーを再起動する必要があります。その後、すべてが完全に正常に機能し、保留中のジョブは問題なく処理されます。DBA は常にデータベースに問題はないと言っていますが、私はあまり確信が持てません。

Google で検索すると、このリンクにたどり着きました: 11.2 へのアップグレード後に DBMS_SCHEDULER ジョブがスタック し、説明に基づいて、DB パラメータjob_queue_processesをチェックして比較しました。それは同じ値/詳細を持っているので、私はここで行き止まりになっています。

job_queue_processes の値

アプリケーションを再起動しているときに、出力/表示で以下の例外が発生しましたが、ログには記録されませんでした:

Mar 18, 2014 11:44:19 AM org.apache.catalina.startup.Catalina stopServer
SEVERE: Catalina.stop:
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:189)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:422)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:338)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:416)

そこで今疑問に思っているのは、

  • ジョブがエンキューされている間に DB への接続が失われ、その間に Oracle スケジューラが「ハング」することはありますか?
  • 確認/検証する必要がある他のデータベース パラメータはありますか? これは Oracle の既知のバグですか? はいの場合、それはどこかに文書化されていますか? すみません、読み飛ばしたかもしれません。
  • DBA に確認を依頼する必要があるその他の情報はありますか?

助けてくれてありがとう。

編集: クエリの出力へのリンク =>select * from DBA_SCHEDULER_JOBSリンクの Excel に記載されています: Job_output.xlsx

ありがとう!

2014 年 3 月 20 日更新

問題はまだ解決されていません。したがって、クエリからの出力が質問の下にいくつか掲載されています。

SQL> select queue,msg_state,expiration_reason,count(*)
  2  from AQ$JOB_QTBL
  3  group by queue,msg_state,expiration_reason;

QUEUE                          MSG_STATE        EXPIRATION_REASON    COUNT(*)
------------------------------ ---------------- ------------------ ----------
JOB_Q                          READY                                        4

SQL> select owner, name, queue_type, max_retries, retry_delay
  2    from dba_queues
  3   where queue_table = 'JOB_QTBL'
  4   and owner = 'ENV_XX';

OWNER                          NAME                           QUEUE_TYPE         MAX_RETRIES RETRY_DELAY
------------------------------ ------------------------------ -------------------- ----------- -----------
ENV_XX                        AQ$_JOB_QTBL_E                 EXCEPTION_QUEUE                0           0
ENV_XX                        JOB_Q                          NORMAL_QUEUE                   5           0

SQL> 
4

0 に答える 0