--//第一种修复方式
alter database create datafile 7 as '/u01/app/oradata/QXY/tt.dbf'
创建datafile后,其scn是非常老的,需要进行recover,需要该scn应用后面所有的归档,但是数据文件被损坏的时候,数据基本上也是最新的,
并不需要从create_scn开始应用归档,这个时候可以通过bbed直接修改数据文件头,告诉recover datafile的时候从哪里开始应用归档
--//破坏数据文件头
BBED> copy file 6 block 5 to file 7 block 1
File: /u01/app/oradata/QXY/tt.dbf (7)
Block: 1 Offsets: 0 to 11 Dba:0x01c00001
------------------------------------------------------------------------
1ea20000 0 e4851b00
<32 bytes per line>
BBED> sum apply
Check value for File 7, Block 1:
current = 0xc109, required = 0xc109
BBED> verify
DBVERIFY - Verification starting
FILE = /u01/app/oradata/QXY/tt.dbf
BLOCK = 1
Block 1 is corrupt
Corrupt block relative dba: 0x0 (file 0, block 1)
Bad header found during verification
Data in bad block:
type: 30 format: 2 rdba: 0x0
last change scn: 0x0000.001b85e4 seq: 0x1 ***: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x85e41e01
check value in block header: 0xc109
computed block checksum: 0x0
Total Blocks Examined : 1
Total Blocks Processed (Data) : 0
Total Blocks Failing (Data) : 0
Total Blocks Processed (Index): 0
Total Blocks Failing (Index): 0
Total Blocks Empty : 0
Total Blocks Marked Corrupt : 1
Total Blocks Influx : 0
Message 531 not found; product=RDBMS; facility=BBED
--//启动数据库
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
Database mounted.
ORA-01122: database file 7 failed verification check
ORA-01110: data file 7: '/u01/app/oradata/QXY/tt.dbf'
ORA-01210: data file header is media corrupt
--//创建数据文件头
SQL> alter database create datafile 7 as '/u01/app/oradata/QXY/tt.dbf'
2 ;
Database altered.
SQL>
--//recover数据文件
SQL> recover datafile 7;
ORA-00279: change generated at 09/21/2020 16:48:18 needed for thread 1 <=======需要的时间,其实就是数据文件刚创建的时间
ORA-00289: suggestion : /u01/app/fast_recovery_area/QXY/archivelog/2020_12_02/o1_mf_1_181_%u_.arc
ORA-00280: change for thread 1 is in sequence #181
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: cannot open archived log '/u01/app/fast_recovery_area/QXY/archivelog/2020_12_02/o1_mf_1_181_%u_.arc'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
ORA-00308: cannot open archived log '/u01/app/fast_recovery_area/QXY/archivelog/2020_12_02/o1_mf_1_181_%u_.arc'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
TO_CHAR(CREATION_TI FILE#
------------------- ----------
2013-08-24 11:37:33 1
2013-08-24 11:37:37 2
2013-08-24 12:07:19 3
2013-08-24 11:37:49 4
2020-07-15 17:11:46 5
2020-09-16 09:42:54 6
2020-09-21 16:48:18 7
7 rows selected.
SQL>
--bbed修改恢复的起始时间和需要应用的归档号(归档号可以根据实际情况指定)
BBED> set dba 7,1
DBA 0x01c00001 ( 7,1)
BBED> p kcvfhckp
struct kcvfhckp, 36 bytes @484
struct kcvcpscn, 8 bytes @484
ub4 kscnbas @484 0x00242e04 <====change#
ub2 kscnwrp @488 0x0000
ub4 kcvcptim @492 0x3eaffe52
ub2 kcvcpthr @496 0x0001
union u, 12 bytes @500
struct kcvcprba, 12 bytes @500
ub4 kcrbaseq @500 0x000000b5 <====归档号
ub4 kcrbabno @504 0x00008ec3
ub2 kcrbabof @508 0x0010
ub1 kcvcpetb[0] @512 0x02
ub1 kcvcpetb[1] @513 0x00
ub1 kcvcpetb[2] @514 0x00
ub1 kcvcpetb[3] @515 0x00
ub1 kcvcpetb[4] @516 0x00
ub1 kcvcpetb[5] @517 0x00
ub1 kcvcpetb[6] @518 0x00
ub1 kcvcpetb[7] @519 0x00
BBED>
--//查看归档
SQL> select SEQUENCE#,FIRST_TIME,NEXT_TIME,FIRST_CHANGE# ,NEXT_CHANGE# from v$archived_log;
SEQUENCE# FIRST_TIME NEXT_TIME FIRST_CHANGE# NEXT_CHANGE#
---------- ------------------ ------------------ ------------- ------------
325 30-NOV-20 02-DEC-20
326 02-DEC-20 02-DEC-20
--//修改归档号为326 ,change# 为
SQL>
SQL> select to_char(326,'xxxx') from dual;
TO_CH
-----
146
SQL>
SQL> select to_char(,'xxxxxxxx') from dual;
TO_CHAR(4
---------
42484e
SQL>
--//bbed修改
BBED> set dba 7,1
DBA 0x01c00001 ( 7,1)
BBED> p kcvfhckp
struct kcvfhckp, 36 bytes @484
struct kcvcpscn, 8 bytes @484
ub4 kscnbas @484 0x00242e04
ub2 kscnwrp @488 0x0000
ub4 kcvcptim @492 0x3eaffe52
ub2 kcvcpthr @496 0x0001
union u, 12 bytes @500
struct kcvcprba, 12 bytes @500
ub4 kcrbaseq @500 0x000000b5
ub4 kcrbabno @504 0x00008ec3
ub2 kcrbabof @508 0x0010
ub1 kcvcpetb[0] @512 0x02
ub1 kcvcpetb[1] @513 0x00
ub1 kcvcpetb[2] @514 0x00
ub1 kcvcpetb[3] @515 0x00
ub1 kcvcpetb[4] @516 0x00
ub1 kcvcpetb[5] @517 0x00
ub1 kcvcpetb[6] @518 0x00
ub1 kcvcpetb[7] @519 0x00
BBED> set offset 500
OFFSET 500
BBED> d /v count 12
File: /u01/app/oradata/QXY/tt.dbf (7)
Block: 1 Offsets: 500 to 511 Dba:0x01c00001
-------------------------------------------------------
b c38e0000 l ............
<16 bytes per line>
BBED> m /x 4601
File: /u01/app/oradata/QXY/tt.dbf (7)
Block: 1 Offsets: 500 to 511 Dba:0x01c00001
------------------------------------------------------------------------
c38e0000
<32 bytes per line>
BBED> d /v count 12
File: /u01/app/oradata/QXY/tt.dbf (7)
Block: 1 Offsets: 484 to 495 Dba:0x01c00001
-------------------------------------------------------
042e2400 00000000 52feaf3e l ..$.....R..>
<16 bytes per line>
BBED> m /x 4e4842
File: /u01/app/oradata/QXY/tt.dbf (7)
Block: 1 Offsets: 484 to 495 Dba:0x01c00001
------------------------------------------------------------------------
4e 00000000 52feaf3e
<32 bytes per line>
BBED> sum apply
Check value for File 7, Block 1:
current = 0xc80e, required = 0xc80e
BBED> verify
DBVERIFY - Verification starting
FILE = /u01/app/oradata/QXY/tt.dbf
BLOCK = 1
Total Blocks Examined : 1
Total Blocks Processed (Data) : 0
Total Blocks Failing (Data) : 0
Total Blocks Processed (Index): 0
Total Blocks Failing (Index): 0
Total Blocks Empty : 0
Total Blocks Marked Corrupt : 0
Total Blocks Influx : 0
Message 531 not found; product=RDBMS; facility=BBED
--//恢复数据文件并启动数据库
SQL> recover datafile 7;
Media recovery complete.
SQL> alter database open;
Database altered.
SQL>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/62358.html