檢查點和oracle資料庫的恢復(一)SCN
scn號研究
什麼是scn(system change number)號
scn號是ORACLE資料庫一個內部時鐘,是資料庫的歷史時間記錄,用來衡量ORACLE事務(transaction)發生的順序,是一個時間概念。 scn號不斷增加,可以理解為直至無窮大。
什麼時候scn號會增加
scn號會實時增加的,而且只會增加不會減少,反映資料庫的更新歷史。
怎樣查詢目前系統最新的scn號
SQL>select dbms_flashback.get_system_change_number from dual; (9i以前)
SQL>select current_scn# from v$database;(10g以後)
scn號的存在什麼地方
1. 控制檔案中當:
- Database checkpoint SCN(系統常規檢查點checkpoint對應的scn號,Oracle就把系統檢查點的scn儲存到控制檔案中)
SQL> select checkpoint_change# from v$database; |
- Controlfile checkpoint SCN(增量檢查點更新的scn)
- Redo checkpoint scn(redo程式記錄的檢查點資訊和Database checkpoint SCN 是一致的)
- Resetlogs scn(系統在執行resetlogs操作時的scn號,當資料庫系統做resetlogs操作完成之後會把這時scn號記錄到控制檔案)
SQL>select RESETLOGS_CHANGE# from v$database;
- Datafile Checkpoint scn(一個檢查點動作完成後,Oracle就把每個資料檔案的scn單獨存放在控制檔案中,每個資料檔案一個)
SQL> select name, CHECKPOINT_CHANGE# from v$datafile where name ='FILENAME';
- End scn號(ORACLE將End scn號存放在控制檔案中,這個scn號用於檢查資料庫啟動過程是否需要做instance recovery,每個資料檔案一個)
SQL> select name, LAST_CHANGE# from v$datafile where name ='FILENAME';
- First scn、Next scn(控制檔案中包含每個日誌檔案的low scn和next scn)
線上重做日誌
select group#,thread#,sequence#,first_change# from v$log; |
歸檔重做日誌
select NAME,THREAD#,SEQUENCE#,FIRST_CHANGE#,NEXT_CHANGE# from v$archived_log; |
2. 資料檔案中(頭部):
- Start scn(ORACLE將Start scn號存放在資料檔案頭中,這個scn用於檢查資料庫啟動過程是否需要做media recovery,每個資料檔案一個)
SQL> Select name,checkpoint_change# from v$datafile_header where name ='FILENAME';
3. 資料檔案
4. 日誌檔案(日誌檔案頭中包含了low scn,next scn,表示該日誌檔案包含有從low scn到next scn的redo record)
接下來我們例項演示一下
Dump控制檔案
Alter session set events 'immediate trace name controlf level 8';
開啟一個新的session
Dump資料檔案頭部
Alter session set events 'immediate trace name file_hdrs level 10'; |
獲得處於current狀態的日子檔案
SQL> select l.STATUS,lf.member from v$log l,v$logfile lf where l.GROUP#=lf.GROUP#; STATUS ---------------- MEMBER -------------------------------------------------------------------------------- INACTIVE +DISKGROUP1/ora/onlinelog/group_3.263.683896045 CURRENT +DISKGROUP1/ora/onlinelog/group_2.262.683896043 INACTIVE +DISKGROUP1/ora/onlinelog/group_1.261.683896043 |
開啟一個新的session
Dump日誌檔案
Alter system dump logfile '+DISKGROUP1/ora/onlinelog/group_2.262.683896043'; |
注意:
在每次dump檔案後都要重新開啟一個session才能重新dump下一個文件,在dump檔案後用
SELECT d.VALUE || '/' || LOWER (RTRIM (i.INSTANCE, CHR (0))) || '_ora_' || p.spid || '.trc' trace_file_name FROM (SELECT p.spid FROM v$mystat m, v$session s, v$process p WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p, (SELECT t.INSTANCE FROM v$thread t, v$parameter v WHERE v.NAME = 'thread' AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i, (SELECT VALUE FROM v$parameter WHERE NAME = 'user_dump_dest') d / |
控制dump檔案節選
第一段
*************************************************************************** 此處為Resetlogs scn Database checkpoint SCN,系統常規檢查點checkpoint對應的scn號,Oracle就把系統檢查點的scn儲存到控制檔案中 Threads: #Enabled=1, #Open=1, Head=1, Tail=1 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 Max log members = 3, Max data members = 1 Controlfile Checkpointed at scn: 0x0000.000a32ca 04/17/2009 15:59:53 增量檢查點更新的scn 。。。。。。。。。。。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。。。。。。。。。。。。。 *************************************************************************** dirty buffer的數量 增量檢查點會更新low cache rba heartbeat: 684440041 mount id: 1302634282 心跳檢驗沒三秒檢查一次,用於驗證例項的存活性。
DATABASE ENTRY
***************************************************************************
(size = 316, compat size = 316, section max = 1, section in-use = 1,
last-recid= 0, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 1, numrecs = 1)
04/11/2009 11:07:20
DB Name "ORA"
Database flags = 0x00404001 0x00001000
Controlfile Creation Timestamp 04/11/2009 11:07:20
Incmplt recovery scn: 0x0000.00000000
Resetlogs scn: 0x0000.00089d08 Resetlogs Timestamp 04/11/2009 11:07:22
Prior resetlogs scn: 0x0000.00000001 Prior resetlogs Timestamp 12/19/2006 04:16:53
Redo Version: compatible=0xa200300
#Data files = 4, #Online files = 4
Database checkpoint: Thread=1 scn: 0x0000.000a326c
enabled threads: 01000000 00000000 00000000 00000000
Arch list: Head=2, Tail=2, Force scn: 0x0000.00096e74scn: 0x0000.000a326b
Activation ID: 1302138531
CHECKPOINT PROGRESS RECORDS
***************************************************************************
(size = 8180, compat size = 8180, section max = 11, section in-use = 0,
last-recid= 0, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 2, numrecs = 11)
THREAD #1 - status:0x2 flags:0x0dirty:11
low cache rba:(0x8.b85.0) on disk rba:(0x8.bfb.0)
on disk scn: 0x0000.000a340b 04/17/2009 16:10:26
resetlogs scn: 0x0000.00089d08 04/11/2009 11:07:22
THREAD #2 - status:0x0 flags:0x0 dirty:0
low cache rba:(0x0.0.0) on disk rba:(0x0.0.0)
on disk scn: 0x0000.00000000 01/01/1988 00:00:00
resetlogs scn: 0x0000.00000000 01/01/1988 00:00:00
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
第二段
redo程式檢查點,這個檢查點和Database的檢查點資訊一致。 thread:1 rba:(0x8.2.10)
***************************************************************************
REDO THREAD RECORDS
***************************************************************************
(size = 256, compat size = 256, section max = 8, section in-use = 1,
last-recid= 0, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 9, numrecs = 8)
THREAD #1 - status:0xf thread links forward:0 back:0
#logs:3 first:1 last:3 current:2 last used seq#:0x8
enabled at scn: 0x0000.00089d08 04/11/2009 11:07:22
disabled at scn: 0x0000.00000000 01/01/1988 00:00:00
opened at 04/17/2009 15:59:49 by instance ora
Checkpointed at scn: 0x0000.000a326c 04/17/2009 15:59:49
enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000
第三段 日誌檔案中的first scn和next scn,當前檔案的next scn為無窮大
***************************************************************************
LOG FILE RECORDS
***************************************************************************
(size = 72, compat size = 72, section max = 16, section in-use = 3,
last-recid= 6, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 10, numrecs = 16)
LOG FILE #1:
(name #3) +DISKGROUP1/ora/onlinelog/group_1.261.683896043
Thread 1 redo log links: forward: 2 backward: 0
siz: 0x19000 seq: 0x00000006 hws: 0x6 bsz: 512 nab: 0x92aa flg: 0x1 dup: 1
Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.0008e394
Low scn: 0x0000.00096e74 04/14/2009 12:57:09
Next scn: 0x0000.0009de44 04/17/2009 15:17:12
LOG FILE #2:
(name #2) +DISKGROUP1/ora/onlinelog/group_2.262.683896043
Thread 1 redo log links: forward: 3 backward: 1
siz: 0x19000 seq: 0x00000008 hws: 0x2 bsz: 512 nab: 0xffffffff flg: 0x8 dup: 1
Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.0009de44
Low scn: 0x0000.000a326b 04/17/2009 15:59:48
Next scn: 0xffff.ffffffff 01/01/1988 00:00:00
LOG FILE #3:
(name #1) +DISKGROUP1/ora/onlinelog/group_3.263.683896045
Thread 1 redo log links: forward: 0 backward: 2
siz: 0x19000 seq: 0x00000007 hws: 0x5 bsz: 512 nab: 0xa8c flg: 0x1 dup: 1
Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.00096e74
Low scn: 0x0000.0009de44 04/17/2009 15:17:12
Next scn: 0x0000.000a326b 04/17/2009 15:59:48
第四段
*************************************************************************** checkpoint cnt號:checkpoint的次數 scn:為Datafile Checkpoint scn stop scn當資料庫正常開啟時 這個值被設為無窮大。
DATA FILE RECORDS
***************************************************************************
(size = 428, compat size = 428, section max = 100, section in-use = 4,
last-recid= 7, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 11, numrecs = 100)
DATA FILE #1:
(name #7) +DISKGROUP1/ora/datafile/system.256.683895993
creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1
tablespace 0, index=1 krfil=1 prev_file=0
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:63 scn: 0x0000.000a326c 04/17/2009 15:59:49
Stop scn: 0xffff.ffffffff 04/17/2009 15:57:34
Creation Checkpointed at scn: 0x0000.00000008 12/19/2006 04:17:12
thread:0 rba:(0x0.0.0)
資料檔案dump
DATA FILE #1: 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 datafile cnt號和control file cnt號 begin scn號
(name #7) +DISKGROUP1/ora/datafile/system.256.683895993
creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1
tablespace 0, index=1 krfil=1 prev_file=0
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:63 scn: 0x0000.000a326c 04/17/2009 15:59:49
Stop scn: 0xffff.ffffffff 04/17/2009 15:57:34
Creation Checkpointed at scn: 0x0000.00000008 12/19/2006 04:17:12
thread:0 rba:(0x0.0.0)
enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000
Hot Backup end marker scn: 0x0000.00000000
aux_file is NOT DEFINED
V10 STYLE. FILEHEADER (header前面的資訊來自控制檔案,後面的來自資料檔案頭部)
Compatibility Vsn = 169870080=0xa200300
Db ID=1302124456=0x4d9cd7a8, Db Name='ORA'
Activation ID=0=0x0
Control Seq=457=0x1c9, File size=61440=0xf000
File Number=1, Blksiz=8192, File Type=3 DATA
Tablespace #0 - SYSTEM rel_fn:1
Creation at scn: 0x0000.00000008 12/19/2006 04:17:12
Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0
reset logs count:0x28c36cea scn: 0x0000.00089d08 reset logs terminal rcv data:0x0 scn: 0x0000.00000000
prev reset logs count:0x245542b5 scn: 0x0000.00000001 prev reset logs terminal rcv data:0x0 scn: 0x0000.00000000
recovered at 04/17/2009 15:59:47
status:0x2004 root dba:0x00400179 chkpt cnt: 63 ctl cnt:62
begin-hot-backup file size: 0
Checkpointed at scn: 0x0000.000a326c 04/17/2009 15:59:49
thread:1 rba:(0x8.2.10)
日誌檔案dump檔案
DUMP OF REDO FROM FILE '+DISKGROUP1/ora/onlinelog/group_2.262.683896043' 與控制檔案中對應的low scn和next scn |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23071790/viewspace-672128/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SCN號與oracle資料庫恢復的關係Oracle資料庫
- Oracle資料庫啟動過程驗證檢查點SCNOracle資料庫
- SCN, checkpoint 及資料庫的恢復資料庫
- Oracle 檢查點涉及的SCNOracle
- (轉)SCN號與oracle資料庫恢復的關係Oracle資料庫
- SCN與資料庫恢復的關係資料庫
- SCN, Checkpoint 與 oracle資料庫恢復的關係(final)Oracle資料庫
- oracle日誌挖機 找到scn號 進行資料庫恢復Oracle資料庫
- Oracle SCN機制解析 (SCN, checkpoint檢查點) - finalOracle
- 關於資料檔案頭的檢查點SCN
- Oracle資料庫冷備和恢復Oracle資料庫
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- BBED 修改oracle 資料檔案的 SCN 號來做資料庫不完全恢復。Oracle資料庫
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- Oracle RAC恢復成單節點資料庫Oracle資料庫
- zt_Oracle資料恢復:資料檔案頭的SCN與時間校驗_file$_scnOracle資料恢復
- 【SCN】Oracle檢查scn值指令碼Oracle指令碼
- oracle資料庫SCNOracle資料庫
- ORACLE 恢復中SCN的應用Oracle
- Oracle 11g 資料庫恢復(一)Oracle資料庫
- oracle資料庫備份和恢復的內容Oracle資料庫
- 【資料庫資料恢復】ASM磁碟組掉線的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 關於資料檔案頭的檢查點SCN知識
- RMAN基於時間點恢復Oracle資料庫Oracle資料庫
- oracle scn與備份恢復backup recovery(一)Oracle
- oracle基於SCN增量恢復Oracle
- Oracle資料庫Redo故障的恢復Oracle資料庫
- Oracle資料庫的非常規恢復Oracle資料庫
- 【備份恢復】閃回資料庫(二) 基於 SCN 閃回資料庫資料庫
- 【資料庫資料恢復】ASM例項不能掛載的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 【資料庫資料恢復】Oracle資料庫ASM磁碟組掉線如何恢復資料?資料庫資料恢復OracleASM
- oracle資料庫SCN概念Oracle資料庫
- 一次Oracle資料庫恢復過程Oracle資料庫
- 【資料庫資料恢復】斷電導致Oracle資料庫資料丟失的資料恢復案例資料庫資料恢復Oracle
- Oracle異地資料庫恢復Oracle資料庫
- Oracle資料庫終極恢復Oracle資料庫