oracle聯機熱備份的原理(2)
附:
有興趣的可以看看dump的資料塊
透過下面的查詢找一個表對應的資料塊
SQL>; select file_id,block_id,blocks
2 from dba_extents
3 where segment_name='EMPLOYEES';
FILE_ID BLOCK_ID BLOCKS
---------- ---------- ----------
5 81 8
dump一個塊到udump的trc檔案
SQL>; alter system dump datafile 5 block 81;
System altered.
在udump目錄找到對應的trc檔案,找到dump那段
Start dump data blocks tsn: 6 file#: 5 minblk 81 maxblk 81
buffer tsn: 6 rdba: 0x01400051 (5/81)
scn: 0x0000.00086c4d seq: 0x01 flg: 0x04 tail: 0x4b502001
後面省略了
scn: 0x0000.00086c4d是16進位制你可以換算過來552013
你可以嘗試做一下修改,不過一定要保證對應的塊被修改了,並且被寫了,才能反映出來
/************************************************/
關於scn的理解
系統檢查點scn(v$database(checkpoint_change#))
資料檔案檢查點(v$datafile(checkpoint_change#))
資料檔案終止scn(v$datafile(last_change#))
資料檔案中存放的檢查點
啟動scn (v$datafile_header(checkpoint_change#)
1、系統檢查點scn
當一個檢查點動作完成之後,Oracle就把系統檢查點的SCN儲存到控制檔案中。
select checkpoint_change# from v$database
2、資料檔案檢查點scn
當一個檢查點動作完成後,Oracle就把每個資料檔案的scn單獨存放在控制檔案中。
select name,checkpoint_change# from v$datafile
3、啟動scn
Oracle把這個檢查點的scn儲存在每個資料檔案的檔案頭中,這個值稱為啟動scn,
因為它用於在資料庫例項啟動時,檢查是否需要執行資料庫恢復。
select name,checkpoint_change# from v$datafile_header
4、終止scn
每個資料檔案的終止scn都儲存在控制檔案中。
select name,last_change# from v$datafile
在正常的資料庫操作過程中,所有正處於聯機讀寫模式下的資料檔案的終止scn都為null.
5、在資料庫執行期間的scn值
在資料庫開啟並執行之後,控制檔案中的系統檢查點、控制檔案中的資料檔案檢查點scn
和每個資料檔案頭中的啟動scn都是相同的。控制檔案中的每個資料檔案的終止scn都為null.
在安全關閉資料庫的過程中,系統會執行一個檢查點動作,這時所有資料檔案的終止scn
都會設定成資料檔案頭中的那個啟動scn的值。在資料庫重新啟動的時候,
Oracle將檔案頭中的那個啟動scn與資料庫檔案檢查點scn進行比較,
如果這兩個值相互匹配,oracle接下來還要比較資料檔案頭中的啟動scn和控制檔案
中資料檔案的終止scn。如果這兩個值也一致,就意味著所有資料塊多已經提交,所有
對資料庫的修改都沒有在關閉資料庫的過程中丟失,因此這次啟動資料庫的過程
也不需要任何恢復操作,此時資料庫就可以開啟了。當所有的資料庫都開啟之後,
儲存在控制檔案中的資料檔案終止scn的值再次被更改為null,
這表示資料檔案已經開啟並能夠正常使用了。
------------------------------------------
澄清幾個概念
1)系統當前SCN並不是在任何的資料庫操作發生時都會改變,SCN是在事務提交或回滾時改變,
2) 在控制檔案,資料檔案頭,資料塊,日誌檔案頭,日誌檔案change vector中都有SCN,但其作用各不相同資料檔案頭中包含了該資料檔案的checkpoint SCN,表示給資料檔案最近一次執行檢查點操作時的SCN.日誌檔案頭中包含了low scn,next scn,表示給日誌檔案包含有從low scn到next scn的redo record.控制檔案中包含了每個資料檔案的checkpoint SCN,stop SCN,每個日誌檔案的low scn,next scn.控制檔案中checkpoint scn同資料檔案頭中checkpoint scn相同,除非資料檔案被手工替換掉.控制檔案中的low scn,next scn同日志檔案中low scn和next scn相同在資料庫正常執行時,控制檔案中對應資料檔案的stop SCN都是最大值.在正常關閉資料庫的情況下,在關閉前會執行一次檢查點工作當oracle會將資料緩衝區上的內容全部寫回到磁碟中,然後更新控制檔案中對應資料檔案的stop SCN,使其等於checkpoint SCN
但在異常當機的情況下,由於最後一次檢查點未進行或進行中間被中止,因而在控制檔案,就存在部分的資料檔案stop SCN為最大值,在資料庫重新啟動後,會檢查控制檔案中對應每個資料檔案的stop SCN,如果stop SCN不等於控制檔案中對應每個資料檔案的checkpoint SCN,就會使用日誌檔案redo從checkpoint SCN開頭到stop SCN為止的全部資料庫操作.在定位到底是使用哪一個redo log檔案時,就用到了日誌檔案頭中的low scn,next scn,也就是說要使用的redo log 的low scn ,next scn必須包含資料檔案重做所須的change vector.
在確定了哪個資料檔案須redo後,oracle會比較change vector中的SCN和資料檔案資料塊中的SCN,如果change vector的SCN小於資料塊的scn,則跳過此change vector,否則redo
資料塊中ITL中還有SCN,但它的作用是用於產生一致性讀快照[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18921899/viewspace-1017261/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle聯機熱備份的原理(轉)Oracle
- oracle聯機熱備份的原理(1)Oracle
- oracle聯機熱備份的原理,及rman增量備份原理Oracle
- Oracle聯機熱備份的原理及rman增量備份原理Oracle
- oracle聯機熱備份的原理及rman增量備份原理(zt)Oracle
- 揭祕ORACLE備份之--熱備份(也叫聯機備份)Oracle
- Oracle熱備份原理分析Oracle
- oracle雙機熱備份Oracle
- 熱備份原理
- oracle雙機熱備份方法Oracle
- Oracle使用者管理熱備份原理Oracle
- Oracle 聯機備份 離線備份 物理備份 恢復Oracle
- oracle的熱備份和冷備份Oracle
- Oracle 熱備份Oracle
- Oracle冷備份和熱備份的處理Oracle
- Oracle 熱備份和冷備份的區別Oracle
- Oracle OCP(62):熱備份Oracle
- Oracle備份恢復之熱備份恢復及異機恢復Oracle
- Oracle學習系列—資料庫備份—熱備份Oracle資料庫
- 歸納熱備份機制
- oracle備份恢復的大致原理!Oracle
- ORACLE備份策略(2)Oracle
- Oracle資料庫的熱備份與完整恢復測試 (2)Oracle資料庫
- Oracle資料庫冷備份與熱備份操作梳理Oracle資料庫
- mysql的冷備份與熱備份MySql
- Oracle物理熱備份指令碼(ZT)Oracle指令碼
- 搭建Oracle的exp備份機Oracle
- 資料庫備份與異機恢復——熱備份方式資料庫
- DB2 V9聯機備份還原(七)DB2
- DB2 V9聯機備份還原(六)DB2
- DB2 V9聯機備份還原(五)DB2
- DB2 V9聯機備份還原(四)DB2
- DB2 V9聯機備份還原(三)DB2
- DB2 V9聯機備份還原(二)DB2
- DB2 V9聯機備份還原(一)DB2
- 歸檔模式下聯機熱備份某個表空間步驟模式
- linux下oracle熱備份指令碼LinuxOracle指令碼
- 學一點 mysql 雙機異地熱備份----快速理解mysql主從,主主備份原理及實踐MySql