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をチェックして比較しました。それは同じ値/詳細を持っているので、私はここで行き止まりになっています。

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