Skip to Main Content

Japanese

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

単一レコードへの複数プロセスからの更新によるデッドロックの可能性

831659Oct 4 2011 — edited Oct 4 2011
ある質問サイトで単一レコードを複数プロセスで行ロックする場合、以下のような理由でデッドロックが発生する可能性があるとの記述がありました。
========================================
環境:Oracle10g

同一レコードを複数プロセスが同時に行ロックを掛けようとした場合、
1.Aがレコードのロック状態を検査。ロック無しと判定
2.Bがレコードのロック状態を検査。ロック有りと判定
3.Aがレコードをロック
4.Bがレコードのロック上書きロック
5.Aが更新の為にレコード取得を試みる。が、4でBにロックされている為、ロックが解除されるまで処理待ち
6.Bが更新の為にレコード取得を試みる。が、3でAにロックされている為、ロックが解除されるまで処理待ち
7.デッドロック発生
========================================
このようなことは本当に起こるのでしょうか?
もし起こるのであれば行ロックもうかつに使えず、全ての排他処理はプロセス側でセマフォやミューテックスを使い制御する必要があることになりますよね?

どなたか知っている人がいたら教えていただきたいと思います。
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Nov 1 2011
Added on Oct 4 2011
6 comments
2,307 views