Database OracleDB インフラ

[OracleDB] commitでデータ更新の確定

投稿日:2018年7月31日 更新日:

こんにちは!シミダイ(@shimidai2100)です。

OracleDatabaseの「commit」文について紹介します。

commit」文は、「rollback」文と同様にDCL(Data Control Language)と呼ばれ、データを制御するSQL文になります。

データベースのcommitは各データベースで動作が異なります。

この記事ではcommit時にOracle Database特有のイベントについても説明していきます。

[OracleDB] rollbackでデータ更新の取り消し

こんにちは!シミダイ(@shimidai2100)です。 OracleDatabaseの「rollback」文について紹介します。 「rollback」文は、「commit」文と同様にDCL(Data ...

続きを見る


基本構文:commit

commitの基本構文は以下になります。

あまり知られていませんが、commit文にもオプションがあります。

wait | nowait

wait」オプションを指定すると、REDOログの書き込みが完了後に次の処理に移ります。

nowait」オプションを指定すると、REDOログの書き込みが完了しなくて次の処理に移ります。

nowaitはスループットが向上しますが、異常終了時にREDOの損失が発生します。

なお何も指定しない場合は「wait」が指定されています。

immediate | batch

immediate」オプションを指定すると、ログライター(LGWR)プロセスが即座にトランザクションのREDO情報をログに書き込みます。

batch」オプションを指定すると、更新情報がREDOログバッファに配置され、後ほどまとめてREDOログへ書き込みます。

何も指定しない場合は「immediate」が指定されています。

comit時のOracleDBの動作

OracleDatabaseではcommit文が発行されると以下のイベントを実施します。

  1. システム変更番号(SCN)
  2. LGWR(ログ・ライター)プロセスがREDOログバッファ内の更新情報とトランザクションのSCNをREDOログに書き込む。
  3. 行と表に対して保持されているロックが解放
  4. セーブポイントの削除
  5. コミットのクリーンアウト
  6. トランザクションの完了

暗黙コミット

Oracle Databaseでは「DDL」文を実行すると暗黙コミットが行われます。

  • create文 (create table, create index, create user)
  • alter文 (alter table, alter index, alter system)
  • drop文 (drop table, drop user, drop tablespace)
  • truncate

上記のDDL文を実行すると暗黙コミットがされるので注意しましょう。

※上記以外のDDL文も暗黙コミットされます。

またSQL*Plusからログアウト(exit や quit)した場合もコミットされます。

スポンサードリンク

関連記事

-Database, OracleDB, インフラ

Translate »

Copyright© shimidai2100 , 2018 All Rights Reserved.