Oracle ロック アプリケーション 注意点

Oracle において ロック に関して示す。

ロック指針

  ・画面出力の前には、COMMIT、ROLLBACK、カーソルCLOSEを忘れずにする。
  ・画面入力中など人間のThinkTime時に、ロックを発行するような設計はしない。
  ・バッチプログラムでは、適宜COMMIT、ROLLBACKを発行して、ロック範囲を広げないようにする。

ACID特性

  Atomicity 原子性
  Consistency 一貫性
  Isolation 分離性
  Durability 持続性

発生しうる問題

  1.更新内容の消滅(ロスとアップデート)
    他トランザクションの更新結果を上書きしてしまう。
  2.ダーティーリード
    COMMITされてない行もSELECTできてしまう。
  3.反復読み取りの不一致
    トランザクション中で、同一SELECTを発行したら、内容が変わってたり、削除されていたりする。
  4.ファントム読み取り
    トランザクション中で、同一SELECTを発行したら、追加行を含んで返されたりしてしまう。

トランザクション分離レベル(ISO SQL標準分離レベル)

  分離レベル      ダーティーリード    反復読み取りの不一致    ファントム読み取り    Oracle9i
  SERIALIZABLE    ×                  ×                      ×                    サポート
  REPEATABLE READ ×                  ×                      ○                    未サポート
  READ COMMITED   ×                  ○                      ○                    デフォルト
  READ UNCOMMITED ○                  ○                      ○                    未サポート
  ○:発生しうる、×:発生しない

ご訪問頂き有難う御座います。 当サイトを効率良く使うためにまずは FrontPage を見て下さい。 検索方法、一覧表示などの各情報を纏めています。
当サイトの説明 → Frontpage