手動データ・ロック
データの同時実行性、データの整合性および文レベルの読取り一貫性を確保するために、Oracle Databaseは常に自動的にロックを実行します。ただし、このデフォルトのロック・メカニズムは上書きすることができます。デフォルト・ロックの上書きは、次のような状況で有効です。
-
アプリケーションで、他のトランザクションによる変更を反映せず、トランザクションの継続時間にわたってデータの一貫性を維持する必要がある場合。トランザクション・レベルの読取り一貫性は、明示的なロック、読取り専用トランザクション、シリアライズ可能トランザクションを使用するか、デフォルトのロックを上書きすることで実現できます。
-
アプリケーションで、あるトランザクションが他のトランザクションの完了まで待機せずに済むように、そのトランザクションがリソースに排他的アクセスできるようにする必要がある場合。トランザクションが継続している間、明示的にデータをロックできます。
自動ロックは、次の2つのレベルで上書きできます。
-
トランザクション。トランザクション・レベルのロックは、次のSQL文で上書きできます。
-
SET
TRANSACTION
ISOLATION
LEVEL
-
LOCK
TABLE
-
SELECT
...FOR
UPDATE
これらの文で取得されたロックは、トランザクションがコミットまたはロールバックされた後で解除されます。
-
-
セッション。必要なトランザクションの分離レベルは、
ALTER
SESSION
SET
ISOLATION
LEVEL
文を使用して設定できます。
ノート:
Oracleのデフォルト・ロックを上書きする場合、データベース管理者やアプリケーション開発者は、データの整合性が保証される、データの同時実行性が許容範囲内である、デッドロックは発生する可能性がないかまたは発生しても適切に処理される、などの条件を満たす必要があります。これらの条件の詳細は、『Oracle Database概要』を参照してください。