oracle commit提交到底作了什麼
oracle commit所作的工作如下:
1,產生一個scn
與此事務相關聯的undo tablespace的itl標誌為提交即flag為-c--;
並且為此事務分配一個唯一的scn並記錄到undo tablespace的事務表中
2,lgwr把log buffer餘下的重作日誌條目寫入到log file中;
而且要把上述提交事務產生的scn一併寫入到log file中
3,oracle把表及行上加的鎖釋放掉
其它等待它的事務就可以繼續工作了
4,刪除儲存點
5,如果提交事務所修改的資料塊還在sga中;
此時沒有其它會話修改這些資料塊
資料塊就清除這些資料塊上的鎖標誌
(最理想的情況是:commit動作一產生就清除資料塊上的鎖標誌,這樣就不用之後的select清除資料塊上的鎖標誌了)這個概念相當重要
另:塊清除會產生redo,因為可能select會產生redo,就可能會導致下次檢查點發生寫入這個資料塊到datafile中
6,oracle標誌commit完成
1,產生一個scn
與此事務相關聯的undo tablespace的itl標誌為提交即flag為-c--;
並且為此事務分配一個唯一的scn並記錄到undo tablespace的事務表中
2,lgwr把log buffer餘下的重作日誌條目寫入到log file中;
而且要把上述提交事務產生的scn一併寫入到log file中
3,oracle把表及行上加的鎖釋放掉
其它等待它的事務就可以繼續工作了
4,刪除儲存點
5,如果提交事務所修改的資料塊還在sga中;
此時沒有其它會話修改這些資料塊
資料塊就清除這些資料塊上的鎖標誌
(最理想的情況是:commit動作一產生就清除資料塊上的鎖標誌,這樣就不用之後的select清除資料塊上的鎖標誌了)這個概念相當重要
另:塊清除會產生redo,因為可能select會產生redo,就可能會導致下次檢查點發生寫入這個資料塊到datafile中
6,oracle標誌commit完成
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-756756/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle的commit做了什麼?OracleMIT
- commit做了什麼?MIT
- oracle commit的時候究竟發生了什麼OracleMIT
- Git拆分commit提交GitMIT
- 【TUNE_ORACLE】你建立的索引為什麼不工作了?(一)Oracle索引
- 【TUNE_ORACLE】你建立的索引為什麼不工作了?(三)Oracle索引
- 【TUNE_ORACLE】你建立的索引為什麼不工作了?(二)Oracle索引
- Oracle的redo到底記錄了什麼Oracle
- Git修改commit提交資訊GitMIT
- commit 的非同步提交MIT非同步
- 非同步提交(Asynchronous COMMIT)非同步MIT
- oracle switch logfile日誌切換及alter system checkpoint作了什麼Oracle
- git commit提交空內容GitMIT
- 到底什麼叫智慧?
- 到底vuex是什麼?Vue
- 到底什麼是抽象?抽象
- git 修改已有commit的提交日期GitMIT
- 【譯】到底什麼是DOM
- 機器學習到底是什麼?機器學習
- ? babel到底是什麼❓Babel
- git commit未能提交指定檔案原因GitMIT
- Git 實用操作:撤銷 Commit 提交GitMIT
- Git 修改已提交的commit註釋GitMIT
- Git基於指定commit提交建立分支GitMIT
- 三階段提交(Three-phase commit)MIT
- git 刪除錯誤提交的commitGit除錯MIT
- 提交內容到版本庫:git commitGitMIT
- Git刪除錯誤提交的commitGit除錯MIT
- imp匯入時default 按table提交,使用commit按buffer提交MIT
- 在JavaScript中this到底指代什麼?JavaScript
- 理解DOM到底是什麼
- 到底什麼是API經濟API
- Java到底是什麼呢Java
- HTTPS 到底加密了什麼?HTTP加密
- 到底什麼時候使用mqMQ
- vue $set到底幹了什麼Vue
- 到底什麼是資料中臺?
- New運算子到底做了什麼