ORACLE数据文件和控制文件头部8543.docx
《ORACLE数据文件和控制文件头部8543.docx》由会员分享,可在线阅读,更多相关《ORACLE数据文件和控制文件头部8543.docx(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、为了回答关于深入浅出Oracle中的一些疑问,引出本系列文章,讨论链接参考:在上一讲中,我们说过:当我们使用file_hdrs事件来转储数据文件头信息时,Oracle会转储两部分信息,一部分来自控制文件,一部分来自数据文件,在数据库启动过程中,这两部分信息要用来进行启动验证。在数据库open的过程中,Oracle要进行检查中包含以下两个过程:第一次检查数据文件头中的Checkpoint cnt是否与对应控制文件中的Checkpoint cnt一致.如果相等,进行第二次检查.第二次检查数据文件头的开始SCN和对应控制文件中的结束SCN是否一致如果结束SCN等于开始SCN,则不需要对那个文件进行恢
2、复.对每个数据文件都完成检查后,打开数据库.同时将每个数据文件的结束SCN设置为无穷大.通过以下过程我们来进一步说明一下这个内容。我们来看以下来自控制文件部分(选取一个文件测试): DATA FILE #4: (name #4) /opt/oracle/oradata/eygle/eygle01.dbfcreation size=0 block size=8192 status=0xe head=4 tail=4 dup=1tablespace 4, index=4 krfil=4 prev_file=0unrecoverable scn: 0x0000.00000000 01/01/1988
3、 00:00:00Checkpoint cnt:58 scn: 0x0000.002ac8ee 08/11/2006 09:48:29Stop scn: 0x0000.002ac8ee 08/11/2006 09:48:29Creation Checkpointed at scn: 0x0000.0015078d 06/06/2006 09:41:54thread:0 rba:(0x0.0.0).aux_file is NOT DEFINED 这部分中包含的重要信息有:检查点计数: Checkpoint cnt:58检查点SCN: scn: 0x0000.002ac8ee 08/11/2006
4、 09:48:29数据文件Stop SCN:Stop scn: 0x0000.002ac8ee 08/11/2006 09:48:29我们再看来自数据文件头的信息:FILE HEADER:Software vsn=153092096=0x9200000, Compatibility Vsn=134217728=0x8000000Db ID=1407686520=0x53e79778, Db Name=EYGLEActivation ID=0=0x0Control Seq=979=0x3d3, File size=1280=0x500File Number=4, Blksiz=8192, Fil
5、e Type=3 DATATablespace #4 - EYGLE rel_fn:4 Creation at scn: 0x0000.0015078d 06/06/2006 09:41:54Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0reset logs count:0x232bee1f scn: 0x0000.0007c781 recovered at 08/10/2006 20:57:53status:0x0 root dba:0x00000000 chkpt cnt: 58 ctl cnt:57beg
6、in-hot-backup file size: 0Checkpointed at scn: 0x0000.002ac8ee 08/11/2006 09:48:29.这部分中包含的重要信息有:检查点SCN: Checkpointed at scn: 0x0000.002ac8ee 08/11/2006 09:48:29检查点计数: chkpt cnt: 58 ctl cnt:57这两者都和控制文件中所记录的一致。如果这两者一致,数据库启动时就能通过验证,启动数据库。那么如果不一致呢?Oracle则请求进行恢复。我们看,从备份中恢复eygle01.dbf文件.首先第一部分从控制文件中获得的信息是
7、相同的: DATA FILE #4: (name #4) /opt/oracle/oradata/eygle/eygle01.dbfcreation size=0 block size=8192 status=0xe head=4 tail=4 dup=1tablespace 4, index=4 krfil=4 prev_file=0unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00Checkpoint cnt:58 scn: 0x0000.002ac8ee 08/11/2006 09:48:29Stop scn: 0x0000.00
8、2ac8ee 08/11/2006 09:48:29Creation Checkpointed at scn: 0x0000.0015078d 06/06/2006 09:41:54.aux_file is NOT DEFINED 检查点计数: Checkpoint cnt:58检查点SCN: scn: 0x0000.002ac8ee 08/11/2006 09:48:29数据文件Stop SCN:Stop scn: 0x0000.002ac8ee 08/11/2006 09:48:29而从文件头中获得的备份文件信息则是: FILE HEADER:Software vsn=153092096=
9、0x9200000, Compatibility Vsn=134217728=0x8000000Db ID=1407686520=0x53e79778, Db Name=EYGLEActivation ID=0=0x0Control Seq=973=0x3cd, File size=1280=0x500File Number=4, Blksiz=8192, File Type=3 DATATablespace #4 - EYGLE rel_fn:4 Creation at scn: 0x0000.0015078d 06/06/2006 09:41:54Backup taken at scn:
10、0x0000.00000000 01/01/1988 00:00:00 thread:0reset logs count:0x232bee1f scn: 0x0000.0007c781 recovered at 08/10/2006 20:57:53status:0x0 root dba:0x00000000 chkpt cnt: 53 ctl cnt:52begin-hot-backup file size: 0Checkpointed at scn: 0x0000.002ac5f9 08/10/2006 20:58:21.我们看到此时备份文件的信息:检查点是:Checkpointed at
11、 scn: 0x0000.002ac5f9 08/10/2006 20:58:21检查点计数为:chkpt cnt: 53 ctl cnt:52这两者不再一致,首先是检查点技术不一致,当前文件的chkpt cnt为53,小于控制文件中记录的58,Oracle可以判断文件是从备份中恢复的,或者文件故障,需要进行介质恢复。我们看如果此时我们试图打开数据库,则Oracle提示文件需要介质恢复: SQL alter database open;alter database open*ERROR at line 1:ORA-01113: file 4 needs media recoveryORA-01
12、110: data file 4: /opt/oracle/oradata/eygle/eygle01.dbf执行恢复: SQL recover datafile 4;Media recovery complete.我们看看恢复完成之后,控制文件和数据文件的变化.首先看控制文件的变化: DATA FILE #4: (name #4) /opt/oracle/oradata/eygle/eygle01.dbfcreation size=0 block size=8192 status=0xe head=4 tail=4 dup=1tablespace 4, index=4 krfil=4 pre
13、v_file=0unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00Checkpoint cnt:59 scn: 0x0000.002ac8ee 08/11/2006 09:48:29Stop scn: 0x0000.002ac8ed 08/11/2006 09:48:29Creation Checkpointed at scn: 0x0000.0015078d 06/06/2006 09:41:54.检查点计数: Checkpoint cnt:59执行了恢复之后,检查点计数较前增加了1检查点SCN: scn: 0x0000.002ac8
14、ee 08/11/2006 09:48:29数据文件Stop scn: 0x0000.002ac8ed 08/11/2006 09:48:29数据文件Stop scn和数据文件进行了同步。数据文件头信息: FILE HEADER:Software vsn=153092096=0x9200000, Compatibility Vsn=134217728=0x8000000Db ID=1407686520=0x53e79778, Db Name=EYGLEActivation ID=0=0x0Control Seq=983=0x3d7, File size=1280=0x500File Numbe
15、r=4, Blksiz=8192, File Type=3 DATATablespace #4 - EYGLE rel_fn:4 Creation at scn: 0x0000.0015078d 06/06/2006 09:41:54Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0reset logs count:0x232bee1f scn: 0x0000.0007c781 recovered at 08/11/2006 10:11:26status:0x0 root dba:0x00000000 chkpt
16、cnt: 59 ctl cnt:58begin-hot-backup file size: 0Checkpointed at scn: 0x0000.002ac8ed 08/11/2006 09:48:29.我们看到此时数据文件的信息:检查点是:Checkpointed at scn: 0x0000.002ac8ed 08/11/2006 09:48:29这个检查点和控制文件中记录的stop scn一致,数据库启动可以顺利进行。检查点计数为:chkpt cnt: 59 ctl cnt:58我们打开数据库: SQL alter database open;Database altered.SQL
17、 alter session set events immediate trace name file_hdrs level 10;Session altered.此时数据库恢复正常运行。控制文件信息如下: DATA FILE #4: (name #4) /opt/oracle/oradata/eygle/eygle01.dbfcreation size=0 block size=8192 status=0xe head=4 tail=4 dup=1tablespace 4, index=4 krfil=4 prev_file=0unrecoverable scn: 0x0000.000000
18、00 01/01/1988 00:00:00Checkpoint cnt:60 scn: 0x0000.002ac8ef 08/11/2006 10:19:30Stop scn: 0xffff.ffffffff 08/11/2006 09:48:29Creation Checkpointed at scn: 0x0000.0015078d 06/06/2006 09:41:54此时stop scn被置为无穷大。数据文件头信息如下:FILE HEADER:Software vsn=153092096=0x9200000, Compatibility Vsn=134217728=0x8000000
19、Db ID=1407686520=0x53e79778, Db Name=EYGLEActivation ID=0=0x0Control Seq=984=0x3d8, File size=1280=0x500File Number=4, Blksiz=8192, File Type=3 DATATablespace #4 - EYGLE rel_fn:4 Creation at scn: 0x0000.0015078d 06/06/2006 09:41:54Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0rese
20、t logs count:0x232bee1f scn: 0x0000.0007c781 recovered at 08/11/2006 10:11:26status:0x4 root dba:0x00000000 chkpt cnt: 60 ctl cnt:59begin-hot-backup file size: 0Checkpointed at scn: 0x0000.002ac8ef 08/11/2006 10:19:30未完待续.datafile block block size :8192Offset 0 1 2 3 4 5 6 7 8 9 a b c d e f 00014000
21、 06 A2 00 00 0A 00 40 01 0E 89 43 00 00 00 05 02 type frmt spare1/2_kcbh rdba scn seq flg 1 : 20 bytestype: 0x06=trans data defined in kcb.h frmt: 8i9i 都是0x02 10.1.0 2k: 0x62 4k:0x82 8k:0xa2 16k:0xc2 (logfile 0x22 512 bytes) spare1/2_kcbh: ub1 spare1_kcbh this field is no longer used (old inc#, now
22、always 0) ub1 spare2_kcbh this field is no longer used (old ts#, now always 0) rdba: 0x0140000a 转换成2进制后它的前10 bit 表示file id 后22 bit 表示的block id 可以看出一个tablespace 可以有1023 个datafile ,每个datafile可以有4M 的block10G 出现的 big datafile 这里表示的就是block id了 没有file id 9.2.0试验过一个tablespace可以有1023个datafile 一个object可以存放在1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ORACLE 数据文件 控制 文件 头部 8543
限制150内