Freeze file header

SQL> select * from v$version where rownum=1;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
我们可以使用alter tablespace ... begin backup将表空间置于联机备份模式,然后用操作系统命令进行数据文件的物理拷贝,达到备份的目的,这个过程中数据文件还是照样联机,并进行正常的数据插入,但会导致比平常更多的REDO记录的产生。
产生较多的REDO记录是由热备引起的,因为在热备过程中,我们采用copy/ocopy命令,这个是属于操作系统的命令,他和Oracle是不相关的,不能和Oracle的内部进程如dbwr进行交互,因为操作系统读取数据文件时,他的IO尺寸并不是block size的大小,一般会更小,这样会导致一个数据块被读取多次,而每次获取的部分都不一致(数据不断更新,产生split block ),为了恢复这种断裂的热备块,Oracle进行了数据块前映象这个操作,对于backup模式的数据文件块,在第一次受到DML影响时,先将数据块整个COPY到REDO中,后续的DML在进行UNDO,正常REDO信息的记录,当恢复数据文件时,会先应用最先的数据块前映像,然后才是后续的REDO记录信息,更多的日志记录就是这个前映像产生的,这个不能和UNDO弄混淆,他是整个数据块,而不是简单的行记录,由于Oracle本身不知道在拷贝时那些块可能出现热备,所以只要是BACKUP期间有DML的块,就按照上面的情况处理,所以如果在backup期间运行大量的批处理程序,日志信息会集聚增多, 这个主要是以后数据文件做恢复的起始SCN,在BEGIN BACKUP下达后,系统要对表空间执行检查点,并将该检查点前的所有事务应用都固化到数据文件,然后冻结这个SCN,直到使用END BACKUP,使备份过程结束,再更新为新的SCN,冻结的原因是因为使用操作系统命令拷贝数据文件时,他不能保证第一个读取的块就是数据文件头,如果不冻结,则可能从备份开始,已经多次更新了文件头,而此时文件头还没有被拷贝,这样等文件头被拷贝后,他的SCN已经远远大于了数据文件中其他数据块的SCN,这样从文件头的SCN来定位恢复起点就不现实了。(http://blog.itpub.net/7728585/viewspace-545610)
下面我们模拟这个过程(以system表空间为例):
SQL> alter session set events 'immediate trace name file_hdrs  level 10';
会话已更改。
SQL> select value from v$diag_info where name='Default Trace File';
VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/orcl3939/orcl3939/trace/orcl3939_ora_4862.trc

DATA FILE #1: 
  name #7: /u01/app/oracle/oradata/orcl3939/system01.dbf
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:1223 scn: 0x0000.0080ab79 05/22/2015 23:01:37
 Stop scn: 0xffff.ffffffff 05/21/2015 12:23:57
 Creation Checkpointed at scn:  0x0000.00000007 08/13/2009 23:00:53
 thread:0 rba:(0x0.0.0)
 ...
...
 Offline scn: 0x0000.000b8337 prev_range: 0
 Online Checkpointed at scn:  0x0000.000b8338 09/28/2014 17:41:34
 thread:1 rba:(0x1.2.0)
 ...
 ...
 Hot Backup end marker scn: 0x0000.00000000
 aux_file is NOT DEFINED 
 Plugged readony: NO
 Plugin scnscn: 0x0000.00000000
 Plugin resetlogs scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Foreign creation scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Foreign checkpoint scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Online move state: 0
 V10 STYLE FILE HEADER:
Compatibility Vsn = 186646528=0xb200000
Db ID=3848072073=0xe55ceb89, Db Name='ORCL3939'
Activation ID=0=0x0
Control Seq=17079=0x42b7, File size=103680=0x19500
File Number=1, Blksiz=8192, File Type=3 DATA
Tablespace #0 - SYSTEM  rel_fn:1 
Creation   at   scn: 0x0000.00000007 08/13/2009 23:00:53
Backup taken at scn: 0x0000.00773f1c 05/05/2015 19:12:20 thread:1
 reset logs count:0x333ab14e scn: 0x0000.000b8338
 prev reset logs count:0x296a3120 scn: 0x0000.00000001
 recovered at 05/20/2015 14:09:45
 status:0x2004 root dba:0x00400208 chkpt cnt:  1223 ctl cnt:1222
begin-hot-backup file size: 103680
Checkpointed at scn:  0x0000.0080ab79 05/22/2015 23:01:37
 thread:1 rba:(0x1ee.2.10)
....
....
======================================================================
SQL> alter tablespace system begin backup;
表空间已更改。
SQL> select * from v$backup where status='ACTIVE';


     FILE# STATUS                CHANGE# TIME
---------- ------------------ ---------- --------------
         1 ACTIVE                8440239 22-5月 -15

DATA FILE #1: 
  name #7: /u01/app/oracle/oradata/orcl3939/system01.dbf
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:1224 scn: 0x0000.0080c9af 05/22/2015 23:58:23
 Stop scn: 0xffff.ffffffff 05/21/2015 12:23:57
 Creation Checkpointed at scn:  0x0000.00000007 08/13/2009 23:00:53
 thread:0 rba:(0x0.0.0)
....
....
 aux_file is NOT DEFINED 
 Plugged readony: NO
 Plugin scnscn: 0x0000.00000000
 Plugin resetlogs scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Foreign creation scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Foreign checkpoint scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Online move state: 0
 V10 STYLE FILE HEADER:
Compatibility Vsn = 186646528=0xb200000
Db ID=3848072073=0xe55ceb89, Db Name='ORCL3939'
Activation ID=0=0x0
Control Seq=17091=0x42c3, File size=103680=0x19500
File Number=1, Blksiz=8192, File Type=3 DATA
Tablespace #0 - SYSTEM  rel_fn:1 
Creation   at   scn: 0x0000.00000007 08/13/2009 23:00:53
Backup taken at scn: 0x0000.0080c9af 05/22/2015 23:58:23 thread:1
 reset logs count:0x333ab14e scn: 0x0000.000b8338
 prev reset logs count:0x296a3120 scn: 0x0000.00000001
 recovered at 05/20/2015 14:09:45
 status:0x2001 root dba:0x00400208  chkpt cnt: 1224 ctl cnt:1223
begin-hot-backup file size: 103680
Checkpointed at scn:  V10 STYLE FILE HEADER: 05/22/2015 23:58:23
 thread:1 rba:(0x1ee.fe0c.10)
 .....
.....
============================================================
SQL> alter tablespace system end backup;
表空间已更改。
SQL> select * from v$backup where status='ACTIVE';
未选定行
DATA FILE #1: 
  name #7: /u01/app/oracle/oradata/orcl3939/system01.dbf
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:1225 scn: 0x0000.0080c9af 05/22/2015 23:58:23
 Stop scn: 0xffff.ffffffff 05/21/2015 12:23:57
 Creation Checkpointed at scn:  0x0000.00000007 08/13/2009 23:00:53
 thread:0 rba:(0x0.0.0)
 .....
.....
 Hot Backup end marker scn: 0x0000.00000000
 aux_file is NOT DEFINED 
 Plugged readony: NO
 Plugin scnscn: 0x0000.00000000
 Plugin resetlogs scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Foreign creation scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Foreign checkpoint scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Online move state: 0
 V10 STYLE FILE HEADER:
Compatibility Vsn = 186646528=0xb200000
Db ID=3848072073=0xe55ceb89, Db Name='ORCL3939'
Activation ID=0=0x0
Control Seq=17097=0x42c9, File size=103680=0x19500
File Number=1, Blksiz=8192, File Type=3 DATA
Tablespace #0 - SYSTEM  rel_fn:1 
Creation   at   scn: 0x0000.00000007 08/13/2009 23:00:53
Backup taken at scn: 0x0000.0080c9af 05/22/2015 23:58:23 thread:1
 reset logs count:0x333ab14e scn: 0x0000.000b8338
 prev reset logs count:0x296a3120 scn: 0x0000.00000001
 recovered at 05/20/2015 14:09:45
 status:0x2004 root dba:0x00400208  chkpt cnt: 1225 ctl cnt:1224
begin-hot-backup file size: 103680
Checkpointed at scn:  0x0000.0080c9af 05/22/2015 23:58:23
 thread:1 rba:(0x1ee.fe0c.10)
 .....
.....
Backup Checkpointed at scn:  0x0000.0080c9af 05/22/2015 23:58:23
 thread:1 rba:(0x1ee.fe0c.10)
....
....
=========================================
DATA FILE #1: 
这里的内容是来自控制文件
V10 STYLE FILE HEADER:
这里的内容是来自数据文件头
数据库一致性检验也是通过比较数据文件头和控制文件里的信息,
首先是比较数据文件头里记录的ckpt cnt是否和控制文件记录的ckpt cnt相等,如果相等,则进行下一步的检验,
比较数据文件头的开始checkpoint  scn是否和控制文件的结束checkpoint scn一致,一致则打开数据库,否则进行恢复。
上面通过转储的三部分可以看出,热备后checkpoint scn到结束热备都没有发生改变,但是ckpt cnt没有被冻结,
在此过程中scn被冻结。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值