ネットワークが停止すると、DBリンク全体でストアドプロシージャクエリが永遠にハングします

StackOverflow https://stackoverflow.com/questions/331114

質問

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

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

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

役に立ちましたか?

解決 2

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

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top