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

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

commit」文は、「rollback」文と同様にDCL(Data Control Language)と呼ばれ、

データを制御するSQL文になります。

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

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

あわせて読みたい
[OracleDB] rollbackでデータ更新の取り消し OracleDatabaseの「rollback」文について紹介します。 「rollback」文は、「commit」文と同様にDCL(Data Control Language)と呼ばれ、 データを制御するSQL文になりま...
目次

基本構文:commit

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

commit; 

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

commit write [wait | nowait] [immediate | batch] 

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文も暗黙コミットされます。

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

Oracleの基本 ~データベース入門から設計/運用の初歩までposted with ヨメレバ

渡部 亮太,相川 潔,日比野 峻佑,岡野 平八郎,宮川 大地 技術評論社 2017-09-22

Amazonで探す

Kindleで探す

楽天ブックスで探す

楽天koboで探す

7netで探す

hontoで探す

e-honで探す

紀伊國屋書店で探す

よかったらシェアしてね!
  • URLをコピーしました!
目次