2011-07-25 9 views
1

私はOracleデータベースを持っています。 select、update、insert、delete操作にOracleDataAdapter(Oracle.DataAccess.dll)を使用します。私は(テーブル)ロックを自分で設定しません(トランザクションを開始するだけです)。私は "test1"というエントリを持つ "test"という名前のoracleテーブルを持っています。DB同期の動作

は今、私の質問:人Bは正確に同じ時間にエントリを削除/更新中

頂けるAがエントリー「TEST1」を読んで?

最悪の場合はどうなりますか?古い一致/空の一致、またはあらゆる種類の例外/エラー(例:「TableLocked-Exception」)が発生する可能性がありますか?

ありがとう

答えて

1

Oracleでは、読者はライターをブロックしません。したがって、1つのセッションで別のセッションがその行を更新または削除すると同時に行を読み取ることができます。リーダーは、照会が開始されたシステム変更番号(SCN)に存在していた行を表示します。

2つのセッションが同じ行を同時に更新または削除しようとしていた場合、ブロックされるのは唯一の時間です。それは一般的に例外を生成しません。その代わりに、ロックを待っていたセッションは、保持セッションがトランザクションを終了することによってロックを解放するまでブロックされます。ロックを待機するタイムアウトを指定した場合、または問題を解決するためにデッドロック・セッションのいずれかを強制終了する必要があり、コードがデッドロックしているとOracleが検出した場合は、例外が発生する可能性があります。