暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

数据文件头信息与数据库恢复

原创 eygle 2019-11-21
529

在数据文件头存在一系列的重要信息,这些信息包括检查点信息、数据库名称、软件版本信息等,在重建控制文件进行恢复时,可以从数据文件头获得这部分信息并写入重建的控制文件用于恢复。那么可以来看一下在数据文件头都记录了哪些信息,通过如下命令我们可以将数据文件头信息转储出来:

SQL> ALTER SESSION SET EVENTS ' IMMEDIATE TRACE NAME FILE_HDRS LEVEL 10';
Session altered.

检查跟踪文件,可以从中获得如下数据文件头的信息,摘录SYSTEM表空间的输出作为示例:

FILE HEADER:
        Software vsn=153092096=0x9200000, Compatibility Vsn=134217728=0x8000000
        Db ID=1407686520=0x53e79778, Db Name='EYGLE'
        Activation ID=0=0x0
        Control Seq=1299703=0x13d4f7, File size=27017=0x6989
        File Number=1, Blksiz=8192, File Type=3 DATA
Tablespace #0 - SYSTEM  rel_fn:1
Creation   at   scn: 0x0000.00000007 04/24/2006 11:34:39
Backup taken at scn: 0x0004.6c2d657e 02/12/2007 15:54:52 thread:1
 reset logs count:0x25196a85 scn: 0x0004.6c594c14 recovered at 05/12/2007 22:51:46
 status:0x4 root dba:0x004001a1 chkpt cnt: 6957 ctl cnt:6956
begin-hot-backup file size: 32000
Checkpointed at scn:  0x0004.6c59876a 05/13/2007 11:51:03
 thread:1 rba:(0x8.2.10)
 enabled  threads:  01000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000
Backup Checkpointed at scn:  0x0004.6c2d657e 02/12/2007 15:54:52
 thread:1 rba:(0x18e1.30.10)
 enabled  threads:  01000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000
……

注意在输出部分中的Checkpointed at scn和thread信息,这两个信息记录了数据文件的检查点SCN及Redo Byte Address(RBA)。这里的RBA包含了重要的恢复信息,代表最后完成的检查点对应的RBA,如果数据文件需要恢复,则需要根据这个RBA来决定应该从哪个日志文件(或归档日志文件)开始。
可能很多朋友都曾对类似如下信息有所思考,在通过重建控制文件进行恢复时,控制文件中已经不存在归档日志的相关信息了,但是Oracle仍然能够准确地提示我们需要的控制文件名称,那么这个信息从何而来呢?

SQL> recover database using backup controlfile;          
ORA-00279: change 18997660553 generated at 05/12/2007 22:24:28 needed for thread 1
ORA-00289: suggestion : /opt/oracle/product/9.2.0/dbs/arch1_31.dbf
ORA-00280: change 18997660553 for thread 1 is in sequence #31

这个信息就是来自数据文件头,RBA信息中就包含了日志的序列号,RBA的主要由以下三部分组成:rba:(0x8.2.10)
1.日志文件序号 4 bytes
2.日志文件块号 4 bytes
3.日志记录偏移量 2 bytes
具备了这个信息,再加上参数文件中定义的log_archive_format参数,Oracle就可以推演出日志序列及日志文件名称,提示恢复。

对于本例,0x8代表的日志文件序号就是8,所以当恢复时,Oracle将从日志序列8开始请求恢复。而从数据库的当前日志序列中可以看到,正在被使用的日志序列正是8。

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /opt/oracle/product/9.2.0/dbs/arch
Oldest online log sequence     6
Next log sequence to archive   8
Current log sequence           8
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论