0

私がサポートする多くのストアド プロシージャは、WAN 経由でリモート データベースにクエリを実行します。ネットワークはときどきダウンしますが、これまでに起こった最悪の事態は、手順が失敗し、再起動する必要があったことです。

ここ数週間、不吉な方向に進んでいます。手順が失敗する代わりに、奇妙なロック状態でハングします。これらは Oracle 内で強制終了することはできず、それらが存在する限り、プロシージャの他のコピーを実行しようとするとハングします。私たちが見つけた唯一の解決策は、OS からの「kill -9」で問題のあるプロシージャを強制終了することです。これらの手順の一部は、数か月、さらには数年も変更されていないため、DB または DB 構成に根本的な原因があると思われます。

問題を解決するために私たちができることについて何か考えがある人はいますか? または、PL/SQL には、プログラムで処理できる例外を作成できるように、コードに追加できるタイムアウト メカニズムがありますか?

4

2 に答える 2

1

データベースのバージョンは? SQL の実行または PL/SQL でスタックしていますか? 最近、ルーチンに例外処理を追加した人はいますか? 9iR2 では、呼び出しルーチンに例外を発生させる代わりに、すべての例外をキャッチして実行し続けるように言われたことを覚えています (基本的には、一部が失敗しても、ジョブ内のすべてのアイテムを実行しようとします)。必然的に、SQL が失敗し、例外ハンドラーに引っかかって再試行されるという無限ループにジョブが陥ることがありました。また、WHEN OTHERS も「あなたのセッションが強制終了されました」という例外をキャッチしたため、それらを強制終了できませんでした。後者は 10g で例外がキャッチされないように変更されたと思います。

于 2008-12-01T19:47:52.557 に答える
0

これが発生した原因を特定することはできませんでした。これは、2008 年 10 月の累積的なパッチの欠陥であると考えています。おそらく、それを修正した後のパッチです。数か月間発生していないので(ネットワークの停止が何度かありました)、問題が解決したことを願っています.

于 2009-02-02T14:25:54.420 に答える