2016-10-26 5 views
0

私はデータベースを継承していて、毎晩夜間にロック問題が発生しました。このデータベースには重大なロックの問題があり、通常のドリルはアプリケーション層を1つずつバウンスすることですロックが解除されます。私はこれに疲れていて、私が先に進み、ブロックセッションを終了することができるドキュメンテーションに出くわしました。私は、データベースが破損する危険性を持っているか、私は事前に定義された閾値危険なOracleデータベースセッションを終了する

、時間以上のセッション・ブロックの後に先に行くとデータベースのブロッキングセッションを殺す場合

私は疑問に思って? もしそうなら? データベースを破損していると仮定しても、アプリケーションサーバーを再起動することも、同じように危険であり、私にとっても痛いものです。

ここで選択するオプションは、開発者がブロックを引き起こしているコードを修正するまで自動的にブロックセッションを終了させることです。

よろしく ニック

+2

データベースを破壊することはありませんが、セッションを終了するとコミットされていない変更はすべて消去されます。セッションが進行中でした。ですから、バッチ処理を中断したり、バッチ処理を破損したりする可能性があります。セッションを終了すると、すぐに問題が発生する可能性がありますが、デッドロック状態になっている理由を理解するために、コードを実際に調べる必要があります。 – DanK

+0

ありがとうDanKこれはバッチ処理ではありませんが、アプリケーションのOLTPの種類私はit.Theアプリケーションを削除し、挿入を削除し、挿入をブロックし、アプリケーションが停止するまでゆっくりとビルド – user3249433

+0

@DanKと同意します。ロックは他の人と同じ行を更新するような、愚かで予測できないことをやめさせるためのものです。セッションを殺すことは本当にそれがちょうどそれが同じ順序で起こるようにタイミングを変更するのに役立ちません。 – ShoeLace

答えて

1

リソースマネージャディレクティブMAX_IDLE_BLOCKER_TIMEがために作成された正確な目的のように思えます。

Example

1

いいえ、それはロールバックされ、UNDOが生成されるように、セッションを殺すことになるではない破損したデータベース、あなたがそれを殺したとき、それは「殺すためにマーク」のメッセージを与え、

はそれを行います"kill -9 .."ではなく、 "sid、serial#"を無効にしてください。

関連する問題