Oracle プロセス P1 (例: SID=123) によってアクセスされるテーブル TAB1 があります。このプロセスでは、動的 SQL 削除とそれに続くコミットが要求されます。
SID=123 によって開始されたプロセス P1 は、この TAB1 関連の操作とは別に、多くの操作で構成されています。
シナリオ:
SID=123 がアクティブです。P1 が TAB1 に行排他ロックを課しました (locked_object ビューのクエリから取得)。
別の Oracle プロセス P2 は、SID=124 によって開始されます (P1 とまったく同じプロセスですが、データ入力のセットが異なります)。P1 が開始された直後 (たとえば、2 ~ 3 分)。
SID=124 は、SID=123 によって開始されたプロセス P1 が完了するまで待機しています。P2 が TAB1 に行排他ロックを課しました (locked_object ビューのクエリから取得)。
質問:
P2 による同じ行レベルのロックは、P1 による行レベルのロックから「先に進むことができる」ことを期待していると思います。プロセス P1 によって TAB1 に課せられたロックを手動でオーバーライドし (それが可能であることを願っています)、TAB1 での操作が終了したらロックを解放することはできますか? これは、P1 全体が終了するまで、P2 が現在 TAB1 で抱えている長い待ち時間を短縮するのに役立ちますか?
どんな提案でも大歓迎です。これについてさらに情報が必要な場合はお知らせください。