--- 非归档模式下 offline 恢复
SQL> select file#,status,CHECKPOINT_CHANGE# from v$datafile;
FILE# STATUS CHECKPOINT_CHANGE#
---------- ------- ------------------
1 SYSTEM 2094895
3 ONLINE 2094895
4 ONLINE 2094895
5 ONLINE 2095969
7 ONLINE 2094895
SQL> select file#,status,CHECKPOINT_CHANGE# from v$datafile_header;
FILE# STATUS CHECKPOINT_CHANGE#
---------- ------- ------------------
1 ONLINE 2094895
3 ONLINE 2094895
4 ONLINE 2094895
5 ONLINE 2095969
7 ONLINE 2094895
alter database datafile 7 offline drop;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
select file#,status,CHECKPOINT_CHANGE# from v$datafile;
FILE# STATUS CHECKPOINT_CHANGE#
---------- ------- ------------------
1 SYSTEM 2097362
3 ONLINE 2097362
4 ONLINE 2097362
5 ONLINE 2097362
7 RECOVER 2094895
select file#,status,CHECKPOINT_CHANGE# from v$datafile_header;
FILE# STATUS CHECKPOINT_CHANGE#
---------- ------- ------------------
1 ONLINE 2097362
3 ONLINE 2097362
4 ONLINE 2097362
5 ONLINE 2097362
7 OFFLINE 2094895
SQL> recover datafile 7;
ORA-00279: change 2094895 generated at 04/22/2025 15:10:07 needed for thread 1
ORA-00289: suggestion : /oradata/archivelog/1_1_1195382645.dbf
由于redo 被覆盖,现在去recover 会报错
--正常的数据文件头scn
BBED> set dba 5,1
DBA 0x01400001 (20971521 5,1)
BBED> p kcvfhckp
struct kcvfhckp, 36 bytes @484
struct kcvcpscn, 8 bytes @484
ub4 kscnbas @484 0x00237681
--offline 的数据文件头scn
BBED> set dba 7,1
DBA 0x01c00001 (29360129 7,1)
BBED> p kcvfhckp
struct kcvfhckp, 36 bytes @484
struct kcvcpscn, 8 bytes @484
ub4 kscnbas @484 0x001ff72f
ub2 kscnwrp @488 0x8000
ub2 kscnwrp2 @490 0x0000
ub4 kcvcptim @492 0x4779064f
ub2 kcvcpthr @496 0x0001
--下面把 2ff71f00 修改成 81762300
BBED> d /v dba 7,1 offset 484
File: /oradata/ORCL/users01.dbf (7)
Block: 1 Offsets: 484 to 995 Dba:0x01c00001
-------------------------------------------------------
2ff71f00 00800000 4f067947 01000000 l /.......O.yG....
BBED> d /v dba 1,1 offset 484
File: /oradata/ORCL/system01.dbf (1)
Block: 1 Offsets: 484 to 995 Dba:0x00400001
-------------------------------------------------------
81762300 00800000 b9657a47 01000000 l .v#......ezG....
08000000 0c070000 10003f92 02000000 l ..........?.....
00000000 00000000 00000000 00000000 l ................
--后面的00不能写,写了报错
modify /x 817623 dba 7,1 offset 484
sum apply
SQL> recover datafile 7;
Media recovery complete.
SQL> alter database datafile 7 online;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




