datafile的file header存储在第一个block里
Oracle considers four attributes of this data structure when determining if a datafile is sync with the other data files of the database:(不同oracle版本offset可能不同)
▪ kscnbas (at offset 484) – SCN of last change to the datafile.
▪ kcvcptim (at offset 492) -Time of the last change to the datafile.
▪ kcvfhcpc (at offset 140) – Checkpoint count.
▪ kcvfhccc (at offset 148) – Unknown, but is always 1 less than thecheckpoint point count.
Oracle有4个属性来判断datafile 是否和其他的datafile 一致,如果都一致可以正常操作,如果不一致那么会报ORA-01113错误
模拟bbed修改数据文件头的检查点SCN、检查点时间点、检查点计数
1、asmcmd cp拷贝ASM文件到文件系统:
ASMCMD> cp BBED.268.1038092825 /tmp
2、日志切换:
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL> /
System altered.
SQL> /
System altered.
3、关闭数据库
SQL> shutdown immediate;
4、asmcmd rm删除bbed数据文件
5、启动数据库到mount,删除所有归档
6、注册datafilecopy并且恢复bbed数据文件
RMAN> catalog datafilecopy '/tmp/BBED.268.1038092825';
RMAN> restore from datafilecopy datafile 6;
7、启动数据库报错
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 6 needs media recovery
ORA-01110: data file 6: '+DAT/orcl11g/datafile/bbed.268.1038095477'
8、查看控制文件SCN、数据文件头SCN
SQL> set linesize 260 pagesize 10000
SQL> col name for a80
SQL> alter session set NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss';
SQL> select name,FILE#,CHECKPOINT_CHANGE#,UNRECOVERABLE_CHANGE#,CHECKPOINT_TIME,UNRECOVERABLE_TIME,LAST_CHANGE#,LAST_TIME from v$datafile;
NAME FILE# CHECKPOINT_CHANGE# UNRECOVERABLE_CHANGE# CHECKPOINT_TIME UNRECOVERABLE_TIME LAST_CHANGE# LAST_TIME
-------------------------------------------------------------------------------- ---------- ------------------ --------------------- ------------------- ------------------- ------------ -------------------
+DAT/orcl11g/datafile/system.259.1037918023 1 1118269 0 2020-04-18 23:37:47 1118269 2020-04-18 23:37:47
+DAT/orcl11g/datafile/sysaux.260.1037918027 2 1118269 0 2020-04-18 23:37:47 1118269 2020-04-18 23:37:47
+DAT/orcl11g/datafile/undotbs1.261.1037918031 3 1118269 0 2020-04-18 23:37:47 1118269 2020-04-18 23:37:47
+DAT/orcl11g/datafile/undotbs2.263.1037918045 4 1118269 0 2020-04-18 23:37:47 1118269 2020-04-18 23:37:47
+DAT/orcl11g/datafile/users.264.1037918049 5 1118269 0 2020-04-18 23:37:47 1118269 2020-04-18 23:37:47
+DAT/orcl11g/datafile/bbed.268.1038095477 6 1118269 0 2020-04-18 23:37:47 1118269 2020-04-18 23:37:47
SQL> select CHECKPOINT_CHANGE#,CURRENT_SCN from v$database;
CHECKPOINT_CHANGE# CURRENT_SCN
------------------ -----------
1118269 0
SQL> select file#,name,bytes,STATUS,FORMAT,RECOVER,FUZZY,CHECKPOINT_CHANGE#,CHECKPOINT_TIME,CHECKPOINT_COUNT from v$datafile_header;
FILE# NAME BYTES STATUS FORMAT REC FUZ CREATION_CHANGE# CHECKPOINT_CHANGE# CHECKPOINT_TIME CHECKPOINT_COUNT
---------- -------------------------------------------------------------------------------- ---------- ------- ---------- --- --- ---------------- ------------------ ------------------ ----------------
1 +DAT/orcl11g/datafile/system.259.1037918023 807403520 ONLINE 10 NO NO 7 1118269 2020-04-18 23:37:47 107
2 +DAT/orcl11g/datafile/sysaux.260.1037918027 629145600 ONLINE 10 NO NO 1781 1118269 2020-04-18 23:37:47 107
3 +DAT/orcl11g/datafile/undotbs1.261.1037918031 613416960 ONLINE 10 NO NO 2814 1118269 2020-04-18 23:37:47 107
4 +DAT/orcl11g/datafile/undotbs2.263.1037918045 209715200 ONLINE 10 NO NO 15543 1118269 2020-04-18 23:37:47 106
5 +DAT/orcl11g/datafile/users.264.1037918049 5242880 ONLINE 10 NO NO 15878 1118269 2020-04-18 23:37:47 106
6 +DAT/orcl11g/datafile/bbed.268.1038095477 104857600 ONLINE 10 YES NO 1109648 1116548 2020-04-18 22:12:50 18
9、bbe修改数据文件头检查点scn、检查点时间
BBED> set file 6
FILE# 6
BBED> dump offset 484
File: /tmp/BBED.268.1038092825 (6)
Block: 1 Offsets: 484 to 995 Dba:0x01800001
------------------------------------------------------------------------
84091100 00000000 db0be03d 01000000 59000000 31390000 10000000 02000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0d000d00 0d000100 00000000 00000000 00000000 02008001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<32 bytes per line>
说明file 6 scn 1116548转换为16进制就是110984,由于linux是小字节,转换为84091100
SQL> select to_char('1116548','xxxxxxxxx') from v$database;
TO_CHAR('1
----------
110984
BBED> dump offset 492
File: /tmp/BBED.268.1038092825 (6)
Block: 1 Offsets: 492 to 1003 Dba:0x01800001
------------------------------------------------------------------------
db0be03d 01000000 59000000 31390000 10000000 02000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 0d000d00 0d000100
00000000 00000000 00000000 02008001 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<32 bytes per line>
BBED> dump offset 140
File: /tmp/BBED.268.1038092825 (6)
Block: 1 Offsets: 140 to 651 Dba:0x01800001
------------------------------------------------------------------------
12000000 d50be03d 11000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
06000000 04004242 45440000 00000000 00000000 00000000 00000000 00000000
00000000 06000000 00000000 00000000 d101e03d 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 84091100 00000000
db0be03d 01000000 59000000 31390000 10000000 02000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 0d000d00 0d000100
<32 bytes per line>
BBED> dump offset 148
File: /tmp/BBED.268.1038092825 (6)
Block: 1 Offsets: 148 to 659 Dba:0x01800001
------------------------------------------------------------------------
11000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 06000000 04004242
45440000 00000000 00000000 00000000 00000000 00000000 00000000 06000000
00000000 00000000 d101e03d 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 84091100 00000000 db0be03d 01000000
59000000 31390000 10000000 02000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 0d000d00 0d000100 00000000 00000000
<32 bytes per line>
BBED> set file 5
FILE# 5
BBED> dump offset 484
File: /tmp/USERS.264.1037918049 (5)
Block: 1 Offsets: 484 to 995 Dba:0x01400001
------------------------------------------------------------------------
3d101100 00000000 4b11e03d 01000000 62000000 ad000000 10000b8b 02000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0d000d00 0d000100 00000000 00000000 00000000 02004001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<32 bytes per line>
说明file 6 scn 1118269转换为16进制就是11103d,由于linux是小字节,转换为3d101100
SQL> select to_char('1118269','xxxxxxx') from v$database;
TO_CHAR(
--------
11103d
BBED> dump offset 492
File: /tmp/USERS.264.1037918049 (5)
Block: 1 Offsets: 492 to 1003 Dba:0x01400001
------------------------------------------------------------------------
4b11e03d 01000000 62000000 ad000000 10000b8b 02000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 0d000d00 0d000100
00000000 00000000 00000000 02004001 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<32 bytes per line>
BBED> dump offset 140
File: /tmp/USERS.264.1037918049 (5)
Block: 1 Offsets: 140 to 651 Dba:0x01400001
------------------------------------------------------------------------
6a000000 00000000 69000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
05000000 05005553 45525300 00000000 00000000 00000000 00000000 00000000
00000000 05000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 3d101100 00000000
4b11e03d 01000000 62000000 ad000000 10000b8b 02000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 0d000d00 0d000100
<32 bytes per line>
BBED> dump offset 148
File: /tmp/USERS.264.1037918049 (5)
Block: 1 Offsets: 148 to 659 Dba:0x01400001
------------------------------------------------------------------------
69000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 05000000 05005553
45525300 00000000 00000000 00000000 00000000 00000000 00000000 05000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 3d101100 00000000 4b11e03d 01000000
62000000 ad000000 10000b8b 02000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 0d000d00 0d000100 00000000 00000000
<32 bytes per line>
修改offset 484和offset 492(由于控制文件记录的数据文件检查点scn、检查点时间和数据文件头不一致)
BBED> m/x 3d101100 offset 484
File: /tmp/BBED.268.1038092825 (6)
Block: 1 Offsets: 484 to 995 Dba:0x01800001
------------------------------------------------------------------------
3d101100 00000000 db0be03d 01000000 59000000 31390000 10000000 02000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0d000d00 0d000100 00000000 00000000 00000000 02008001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<32 bytes per line>
BBED> m/x 4b11e03d offset 492
File: /tmp/BBED.268.1038092825 (6)
Block: 1 Offsets: 492 to 1003 Dba:0x01800001
------------------------------------------------------------------------
4b11e03d 01000000 59000000 31390000 10000000 02000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 0d000d00 0d000100
00000000 00000000 00000000 02008001 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<32 bytes per line>
BBED> sum apply
Check value for File 6, Block 1:
current = 0xcb6a, required = 0xcb6a
将数据文件从文件系统恢复到asm,可以打开数据库:
[oracle@ora11g-node01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sun Apr 19 02:11:38 2020
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 6 needs media recovery
ORA-01110: data file 6: '+DAT/orcl11g/datafile/bbed.268.1038095477'
SQL> recover datafile 6;
Media recovery complete.
SQL> alter database open;
Database altered.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




