[20171115]redo and commit.txt
[20171115]redo and commit.txt
--//參考Jonathan Lewis的
--//很早以前的帖子,自己覺得很有意思,重複測試:
--//事務已經提交,但是redo log buffer還沒有寫到磁碟.看看發生什麼情況?
1.環境:
SCOTT@book> @&r/ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
2.建立測試環境:
--//session 1:
create table t1(n1 number);
insert into t1 values(1);
commit;
--//session 2:
$ ps -ef | grep ora_lgwr_boo[k]
oracle 9275 1 0 08:29 ? 00:00:00 ora_lgwr_book
SYS@book> oradebug setospid 9275
Oracle pid: 13, Unix process pid: 9275, image: oracle@xxxx (LGWR)
SYS@book> oradebug suspend
Statement processed.
--//這樣做的目的認為掛起寫redo日誌檔案.
3.測試:
--//session 1:
update t1 set n1 = 2;
commit;
--//掛起!!
--//session 2:
SYS@book> select * from scott.t1;
N1
----------
2
SYS@book> @ &r/wait
P1RAW P2RAW P3RAW P1 P2 P3 SID SERIAL# SEQ# EVENT STATE WAIT_TIME_MICRO SECONDS_IN_WAIT
---------------- ---------------- ----- --- ---------- --- ---- -------- ----- ------------- ------- --------------- ---------------
00000000000001B8 0000000017701BD7 00 440 393223127 0 274 5 84 log file sync WAITING 26787924 27
--//可以發現session 1的提交已經生效,做一個shutdown abort. 然後重啟資料庫
SYS@book> shutdown abort
ORACLE instance shut down.
SYS@book> startup
ORACLE instance started.
Total System Global Area 634732544 bytes
Fixed Size 2255792 bytes
Variable Size 197133392 bytes
Database Buffers 427819008 bytes
Redo Buffers 7524352 bytes
Database mounted.
Database opened.
SYS@book> select * from scott.t1;
N1
----------
1
--//回到原來的值.
--//也許你認為提交根本就是掛起了,根本沒有完成.
--//但是你簡單做一個放大,假設commit時間很長,commit主要操作修改塊,做一個快速提交,然後修改undo 事務槽標識,標識事務已經提交,然後將
--//這些修改從日誌快取寫入日誌檔案.
--//提交的當中還沒有完成前(至少認為寫入日誌檔案才會完成),這個時候你另外的會話已經可以看到提交的結果.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2147329/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20190531]建立job與commit.txtMIT
- [20171115]關於namespace.txtnamespace
- 【REDO】Oracle redo undo 學習Oracle Redo
- 【REDO】Oracle redo內部結構Oracle Redo
- 【REDO】Oracle redo advice-sqlOracle RedoSQL
- Redo Log之一:理解Oracle redo logOracle Redo
- MySQL redoMySql
- Oracle Redo and UndoOracle Redo
- Redo的原理
- Oracle redo解析之-1、oracle redo log結構計算Oracle Redo
- MySQL:Redo & binlogMySql
- mysql之 redo logMySql
- look-into-oracle-redoOracle
- Oracle REDO損壞Oracle Redo
- 簡述REDO操作
- UNDO REDO 區別
- REDO日誌管理
- oracle redo log operationOracle Redo
- [20171115]恢復資料檔案塊頭3補充.txt
- [20171115]恢復資料檔案塊頭4補充.txt
- oracle 線上調整redoOracle
- redo日誌損壞
- standby redo log的理解
- redo重做日誌管理
- Redo 和 Undo 概念解析
- redo_log_switch_date
- innodb redo原理小結
- redo log file 優化優化
- MySQL 日誌 undo | redoMySql
- Redo active狀態解析
- Redo內部解析(三)
- Redo內部解析(二)
- Redo內部解析(一)
- Oracle redo log重組Oracle Redo
- Oracle Dump Redo Log FileOracle
- undo log和redo log
- oracle的redo和undoOracle
- Redo Log之二:遷移redo log到不同的儲存路徑