暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
修改数据文件头做完全恢复-bbed3.pdf
318
4页
2次
2021-10-15
10墨值下载
修改数据文件头做完全恢复-bbed3.txt
实验目的:
一个表空间的数据文件损坏,使用以前的备份进行恢复,但是需要的归档文件无法
提供,而且该表空间存放的是历史的数据,很少改变,但由于其它的原因(定时的往该表空
间存储新数据),无法变成只读模式。
这种情况下由于缺少归档,数据库无法recovery,但是跟该表空间相关的数据改变
很少或者没有,这种情况下我们可以通过改变数据文件头的检查点号,让oracle避开对该文
件的检查,实现完全恢复,及时打开数据库。
1、数据库异常断电,导致users表空间的数据文件损坏
2、从早期的备份中转储数据文件到目标位置
3、对数据库进行recovery,假如归档日志损坏,该表空间没有被修改,但是没有变成
readonly,数据库无法做完全recovery,所以无法打开:
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 4 needs media recovery
ORA-01110: data file 4: '/u01/app/oracle/oradata/TIANJIN/users01.dbf'
SQL> recover database;
ORA-00279: change 1951719 generated at 08/25/2012 13:52:08 needed for thread 1
ORA-00289: suggestion :
/home/oracle/oracle/product/10.2.0/db_1/dbs/arch1_107_783745676.dbf
ORA-00280: change 1951719 for thread 1 is in sequence #107
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: cannot open archived log
'/home/oracle/oracle/product/10.2.0/db_1/dbs/arch1_107_783745676.dbf'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
4、由于该表空间没有被修改,归档日志里面应该没有记录有关该表空间被改变的信息,但
是oracle不知道,所以它必须要用到归档,才能够进行recovery,此时,我们的解决办法
是:把该表空间的数据文件头的检查点号改成跟控制文件记录的一样,那么oracle就不会做
介质恢复,只做实例恢复,则就能够recovery成功,可以使用bbed来实现。
5、查询控制文件中的每个数据文件所应该有的检查点号:
SQL> select name,CHECKPOINT_CHANGE# from v$datafile;
NAME CHECKPOINT_CHANGE#
-------------------------------------------------- ------------------
/u01/app/oracle/oradata/TIANJIN/system01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/undotbs01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/sysaux01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/users01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/example01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/rbs01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/gguser.dbf 1991891
第 1 页
Tel:010-88589826 Fax:010-88587520 网址: http://www.cuug.com
修改数据文件头做完全恢复-bbed3.txt
6、查询控制文件中的每个数据文件头实际的检查点号:
SQL> select name,CHECKPOINT_CHANGE# from v$datafile_header;
NAME CHECKPOINT_CHANGE#
-------------------------------------------------- ------------------
/u01/app/oracle/oradata/TIANJIN/system01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/undotbs01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/sysaux01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/users01.dbf 1951719
/u01/app/oracle/oradata/TIANJIN/example01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/rbs01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/gguser.dbf 1991891
通过比较,我们发现当前数据文件头的检查点号是:1951719,把它转换成16进制
是1DC7E7;而所应该有的检查点号是1991891,转换成16进制是1E64D3。
7、使用BBED进行修改,先显示有关数据文件的信息:
BBED> info
File# Name Size(blks)
----- ---- ----------
1 /u01/app/oracle/oradata/TIANJIN/system01.dbf 64000
2 /u01/app/oracle/oradata/TIANJIN/undotbs01.dbf 5120
3 /u01/app/oracle/oradata/TIANJIN/sysaux01.dbf 35840
4 /u01/app/oracle/oradata/TIANJIN/users01.dbf 5280
5 /u01/app/oracle/oradata/TIANJIN/example01.dbf 12800
8 /u01/app/oracle/oradata/TIANJIN/rbs01.dbf 2560
9 /u01/app/oracle/oradata/TIANJIN/gguser.dbf 6400
8、设置需要修改的数据文件:
BBED> set dba 4,1
DBA 0x01000001 (16777217 4,1)
9、dump其中的内容:
BBED> d /v dba 4,1
File: /u01/app/oracle/oradata/TIANJIN/users01.dbf (4)
Block: 1 Offsets: 0 to 511 Dba:0x01000001
-------------------------------------------------------
0ba20000 01000001 00000000 00000104 l ..............
d8d50000 00000000 0001200a 0bbd9409 l 卣........ ...
50524f44 5f544a00 1b120000 a0140000 l PROD_TJ.......
10、打印数据文件头的信息:
BBED> p kcvfhckp
struct kcvfhckp, 36 bytes @484
struct kcvcpscn, 8 bytes @484
ub4 kscnbas @484 0x001dc7e7 --这里就是16
进制的检查点号
ub2 kscnwrp @488 0x0000
ub4 kcvcptim @492 0x2f38cc88
ub2 kcvcpthr @496 0x0001
union u, 12 bytes @500
struct kcvcprba, 12 bytes @500
ub4 kcrbaseq @500 0x0000006b
第 2 页
Tel:010-88589826 Fax:010-88587520 网址: http://www.cuug.com
修改数据文件头做完全恢复-bbed3.txt
ub4 kcrbabno @504 0x00000002
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
11、dump数据文件头数据块中offset是484的内容:
BBED> d /v dba 4,1 offset 484
File: /u01/app/oracle/oradata/TIANJIN/users01.dbf (4)
Block: 1 Offsets: 484 to 995 Dba:0x01000001
-------------------------------------------------------
e7c71d00 0000870a 88cc382f 01000000 l 缜......./....
6b000000 02000000 1000ffbf 02000000 l k.............
00000000 00000000 00000000 00000000 l ................
00000000 00000000 00000000 00000000 l ................
00000000 00000000 00000000 00000000 l ................
通过观察我们发现一个有趣现象,原来数据文件头的检查点号是1DC7E7,但是存储
的时候倒过来了,变成e7c71d00,那么我们以后改成1E64D3的时候,也要到过来,变成
d3641e,后面的两个00省略。
12、修改数据文件头的检查点号:
BBED> m /x d3641e dba 4,1 offset 484
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /u01/app/oracle/oradata/TIANJIN/users01.dbf (4)
Block: 1 Offsets: 484 to 995 Dba:0x01000001
------------------------------------------------------------------------
d3641e00 0000870a 88cc382f 01000000 6b000000 02000000 1000ffbf 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
13、保留修改:
BBED> sum apply
Check value for File 4, Block 1:
current = 0x76ef, required = 0x76ef
14、重新启动数据库到mount状态,坚持数据文件头的检查点号:
SQL> select name,CHECKPOINT_CHANGE# from v$datafile_header;
NAME CHECKPOINT_CHANGE#
-------------------------------------------------- ------------------
/u01/app/oracle/oradata/TIANJIN/system01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/undotbs01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/sysaux01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/users01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/example01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/rbs01.dbf 1991891
/u01/app/oracle/oradata/TIANJIN/gguser.dbf 1991891
第 3 页
Tel:010-88589826 Fax:010-88587520 网址: http://www.cuug.com
of 4
10墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。