bbed copy修复坏块和delete的数据
来源:互联网 发布:c语言cos函数怎么求 编辑:程序博客网 时间:2024/05/18 16:13
我们来模拟一下非系统表空间数据文件出现坏块,或者误删除数据后使用bbed的copy命令来恢复的实验,前提是我们有之前此数据文件的备份,因为我们需要从老数据文件中copy block来恢复
SQL> create table goolen as select object_id,object_name,object_type from dba_objects where rownum <=400;
Table created.
SQL> select tablespace_name from dba_segments where segment_name='GOOLEN';
TABLESPACE_NAME
------------------------------
USERS
SQL> select file_name from dba_data_files where tablespace_name='USERS';
FILE_NAME
--------------------------------------------------------------------------------
/opt/app/oracle/oradata/goolen/users01.dbf
SQL> shut immediate
ORA-01031: insufficient privileges
SQL> conn / as sysdba
Connected.
SQL> shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
--备份一个数据文件,恢复的时候需要用到
SQL> ! cp /opt/app/oracle/oradata/goolen/users01.dbf /opt/app/oracle/oradata/goolen/users01-bk.dbf
SQL> select
2 rowid,
3 dbms_rowid.rowid_relative_fno(rowid)rel_fno,
4 dbms_rowid.rowid_block_number(rowid)blockno,
5 dbms_rowid.rowid_row_number(rowid) rowno
6 from goolen where rownum =1;
select
*
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 18992
Session ID: 96 Serial number: 7
SQL> startup
ORACLE instance started.
Total System Global Area 2087780352 bytes
Fixed Size 2214936 bytes
Variable Size 1207960552 bytes
Database Buffers 872415232 bytes
Redo Buffers 5189632 bytes
Database mounted.
Database opened.
SQL> conn scott/tiger
Connected.
SQL> select
2 rowid,
3 dbms_rowid.rowid_relative_fno(rowid)rel_fno,
4 dbms_rowid.rowid_block_number(rowid)blockno,
5 dbms_rowid.rowid_row_number(rowid) rowno
6 from goolen where rownum =1;
ROWID REL_FNO BLOCKNO ROWNO
------------------ ---------- ---------- ----------
AAASOtAAEAAAACrAAA 4 171 0
SQL> select count(*) from goolen;
COUNT(*)
----------
400
--bbed数据文件列表中添加一行,把备份的数据文件加进去:
[oracle@localhost bbed]$ vim filelist.txt
4 /opt/app/oracle/oradata/goolen/users01.dbf 57671680
3 /opt/app/oracle/oradata/goolen/undotbs01.dbf 31457280
2 /opt/app/oracle/oradata/goolen/sysaux01.dbf 587202560
1 /opt/app/oracle/oradata/goolen/system01.dbf 713031680
5 /opt/app/oracle/oradata/goolen/users01-bk.dbf 57671680
[oracle@localhost bbed]$ bbed parfile=bbed.par
Password:
BBED: Release 2.0.0.0.0 - Limited Production on Thu Oct 24 15:42:39 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED> info
File# Name Size(blks)
----- ---- ----------
1 /opt/app/oracle/oradata/goolen/system01.dbf 87040
2 /opt/app/oracle/oradata/goolen/sysaux01.dbf 71680
3 /opt/app/oracle/oradata/goolen/undotbs01.dbf 3840
4 /opt/app/oracle/oradata/goolen/users01.dbf 7040
5 /opt/app/oracle/oradata/goolen/users01-bk.dbf 7040
--修改4号文件的171块
BBED> m /x 1234 dba 4,171
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /opt/app/oracle/oradata/goolen/users01.dbf (4)
Block: 171 Offsets: 0 to 511 Dba:0x010000ab
------------------------------------------------------------------------
12340000 ab000001 f98e1a00 00000204 265b0000 01000000 ad230100 f78e1a00
00000000 03003200 a8000001 ffff0000 00000000 00000000 00000000 00800000
f78e1a00 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00011101
ffff3402 67053303 33030000 11016e1f 5a1f491f 371f211f 0e1ff11e de1eca1e
b71e961e 841e731e 581e441e 311e1e1e 0c1ef81d e71dd61d c21dae1d 9d1d8b1d
771d661d 4e1d3a1d 201d0d1d fa1ce71c d41cc01c b01c931c 7d1c691c 521c411c
2e1c1c1c 0a1cf71b e31bd21b bf1baa1b 991b871b 731b5f1b 4b1b371b 241b101b
ef1ad91a c41aad1a 961a821a 6c1a561a 451a341a 221a0a1a f419dc19 c419b319
9f198519 72195f19 4c193b19 28191519 0019e918 d218ba18 a0188e18 7a186618
52183e18 28181218 fd17e617 c717b417 9f178817 70175117 3b172217 0d17f216
d716c016 aa168516 6d165516 3f162316 1116fd15 e715d115 bb15a315 8b157815
53153d15 2c151915 0615f214 dc14c114 a4149114 76146414 4f143b14 29141614
fd13e013 c413a513 8c137613 5f134513 20130b13 f412dc12 c412a912 84126612
48123212 19120112 e911ce11 b3119811 7d116211 47112b11 0f11f310 d710bf10
a5108e10 77105e10 42102910 0e10f40f cf0fb30f 970f820f 680f4c0f 340f150f
<32 bytes per line>
BBED> sum apply;
Check value for File 4, Block 171:
current = 0xcd32, required = 0xcd32
--我们再查询这个表的时候,oracle就会检测到此表中存在坏块,并且报错
SQL> alter system flush buffer_cache;
System altered.
SQL> select count(*) from goolen;
select count(*) from goolen
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 4, block # 171)
ORA-01110: data file 4: '/opt/app/oracle/oradata/goolen/users01.dbf'
--通过copy老数据文件中的block来恢复这个坏块
BBED> copy file 5 block 171 to file 4 block 171
File: /opt/app/oracle/oradata/goolen/users01.dbf (4)
Block: 171 Offsets: 0 to 511 Dba:0x010000ab
------------------------------------------------------------------------
06a20000 ab000001 f98e1a00 00000204 265b0000 01000000 ad230100 f78e1a00
00000000 03003200 a8000001 ffff0000 00000000 00000000 00000000 00800000
f78e1a00 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00011101
ffff3402 67053303 33030000 11016e1f 5a1f491f 371f211f 0e1ff11e de1eca1e
b71e961e 841e731e 581e441e 311e1e1e 0c1ef81d e71dd61d c21dae1d 9d1d8b1d
771d661d 4e1d3a1d 201d0d1d fa1ce71c d41cc01c b01c931c 7d1c691c 521c411c
2e1c1c1c 0a1cf71b e31bd21b bf1baa1b 991b871b 731b5f1b 4b1b371b 241b101b
ef1ad91a c41aad1a 961a821a 6c1a561a 451a341a 221a0a1a f419dc19 c419b319
9f198519 72195f19 4c193b19 28191519 0019e918 d218ba18 a0188e18 7a186618
52183e18 28181218 fd17e617 c717b417 9f178817 70175117 3b172217 0d17f216
d716c016 aa168516 6d165516 3f162316 1116fd15 e715d115 bb15a315 8b157815
53153d15 2c151915 0615f214 dc14c114 a4149114 76146414 4f143b14 29141614
fd13e013 c413a513 8c137613 5f134513 20130b13 f412dc12 c412a912 84126612
48123212 19120112 e911ce11 b3119811 7d116211 47112b11 0f11f310 d710bf10
a5108e10 77105e10 42102910 0e10f40f cf0fb30f 970f820f 680f4c0f 340f150f
<32 bytes per line>
BBED> sum apply
Check value for File 4, Block 171:
current = 0x5b26, required = 0x5b26
--再次查询这个表,已经可以正常查询
SQL> alter system flush buffer_cache;
System altered.
SQL> select count(*) from goolen;
COUNT(*)
----------
400
--我们删除几行数据
SQL> delete goolen where rownum <=100;
100 rows deleted.
SQL> commit;
Commit complete.
SQL> alter system flush buffer_cache;
System altered.
SQL> select count(*) from goolen;
COUNT(*)
----------
300
BBED> copy file 5 block 171 to file 4 block 171
File: /opt/app/oracle/oradata/goolen/users01.dbf (4)
Block: 171 Offsets: 0 to 511 Dba:0x010000ab
------------------------------------------------------------------------
06a20000 ab000001 f98e1a00 00000204 265b0000 01000000 ad230100 f78e1a00
00000000 03003200 a8000001 ffff0000 00000000 00000000 00000000 00800000
f78e1a00 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00011101
ffff3402 67053303 33030000 11016e1f 5a1f491f 371f211f 0e1ff11e de1eca1e
b71e961e 841e731e 581e441e 311e1e1e 0c1ef81d e71dd61d c21dae1d 9d1d8b1d
771d661d 4e1d3a1d 201d0d1d fa1ce71c d41cc01c b01c931c 7d1c691c 521c411c
2e1c1c1c 0a1cf71b e31bd21b bf1baa1b 991b871b 731b5f1b 4b1b371b 241b101b
ef1ad91a c41aad1a 961a821a 6c1a561a 451a341a 221a0a1a f419dc19 c419b319
9f198519 72195f19 4c193b19 28191519 0019e918 d218ba18 a0188e18 7a186618
52183e18 28181218 fd17e617 c717b417 9f178817 70175117 3b172217 0d17f216
d716c016 aa168516 6d165516 3f162316 1116fd15 e715d115 bb15a315 8b157815
53153d15 2c151915 0615f214 dc14c114 a4149114 76146414 4f143b14 29141614
fd13e013 c413a513 8c137613 5f134513 20130b13 f412dc12 c412a912 84126612
48123212 19120112 e911ce11 b3119811 7d116211 47112b11 0f11f310 d710bf10
a5108e10 77105e10 42102910 0e10f40f cf0fb30f 970f820f 680f4c0f 340f150f
<32 bytes per line>
BBED> sum apply;
Check value for File 4, Block 171:
current = 0x5b26, required = 0x5b26
SQL> alter system flush buffer_cache;
System altered.
SQL> select count(*) from goolen;
COUNT(*)
----------
SQL> create table goolen as select object_id,object_name,object_type from dba_objects where rownum <=400;
Table created.
SQL> select tablespace_name from dba_segments where segment_name='GOOLEN';
TABLESPACE_NAME
------------------------------
USERS
SQL> select file_name from dba_data_files where tablespace_name='USERS';
FILE_NAME
--------------------------------------------------------------------------------
/opt/app/oracle/oradata/goolen/users01.dbf
SQL> shut immediate
ORA-01031: insufficient privileges
SQL> conn / as sysdba
Connected.
SQL> shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
--备份一个数据文件,恢复的时候需要用到
SQL> ! cp /opt/app/oracle/oradata/goolen/users01.dbf /opt/app/oracle/oradata/goolen/users01-bk.dbf
SQL> select
2 rowid,
3 dbms_rowid.rowid_relative_fno(rowid)rel_fno,
4 dbms_rowid.rowid_block_number(rowid)blockno,
5 dbms_rowid.rowid_row_number(rowid) rowno
6 from goolen where rownum =1;
select
*
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 18992
Session ID: 96 Serial number: 7
SQL> startup
ORACLE instance started.
Total System Global Area 2087780352 bytes
Fixed Size 2214936 bytes
Variable Size 1207960552 bytes
Database Buffers 872415232 bytes
Redo Buffers 5189632 bytes
Database mounted.
Database opened.
SQL> conn scott/tiger
Connected.
SQL> select
2 rowid,
3 dbms_rowid.rowid_relative_fno(rowid)rel_fno,
4 dbms_rowid.rowid_block_number(rowid)blockno,
5 dbms_rowid.rowid_row_number(rowid) rowno
6 from goolen where rownum =1;
ROWID REL_FNO BLOCKNO ROWNO
------------------ ---------- ---------- ----------
AAASOtAAEAAAACrAAA 4 171 0
SQL> select count(*) from goolen;
COUNT(*)
----------
400
--bbed数据文件列表中添加一行,把备份的数据文件加进去:
[oracle@localhost bbed]$ vim filelist.txt
4 /opt/app/oracle/oradata/goolen/users01.dbf 57671680
3 /opt/app/oracle/oradata/goolen/undotbs01.dbf 31457280
2 /opt/app/oracle/oradata/goolen/sysaux01.dbf 587202560
1 /opt/app/oracle/oradata/goolen/system01.dbf 713031680
5 /opt/app/oracle/oradata/goolen/users01-bk.dbf 57671680
[oracle@localhost bbed]$ bbed parfile=bbed.par
Password:
BBED: Release 2.0.0.0.0 - Limited Production on Thu Oct 24 15:42:39 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED> info
File# Name Size(blks)
----- ---- ----------
1 /opt/app/oracle/oradata/goolen/system01.dbf 87040
2 /opt/app/oracle/oradata/goolen/sysaux01.dbf 71680
3 /opt/app/oracle/oradata/goolen/undotbs01.dbf 3840
4 /opt/app/oracle/oradata/goolen/users01.dbf 7040
5 /opt/app/oracle/oradata/goolen/users01-bk.dbf 7040
--修改4号文件的171块
BBED> m /x 1234 dba 4,171
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /opt/app/oracle/oradata/goolen/users01.dbf (4)
Block: 171 Offsets: 0 to 511 Dba:0x010000ab
------------------------------------------------------------------------
12340000 ab000001 f98e1a00 00000204 265b0000 01000000 ad230100 f78e1a00
00000000 03003200 a8000001 ffff0000 00000000 00000000 00000000 00800000
f78e1a00 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00011101
ffff3402 67053303 33030000 11016e1f 5a1f491f 371f211f 0e1ff11e de1eca1e
b71e961e 841e731e 581e441e 311e1e1e 0c1ef81d e71dd61d c21dae1d 9d1d8b1d
771d661d 4e1d3a1d 201d0d1d fa1ce71c d41cc01c b01c931c 7d1c691c 521c411c
2e1c1c1c 0a1cf71b e31bd21b bf1baa1b 991b871b 731b5f1b 4b1b371b 241b101b
ef1ad91a c41aad1a 961a821a 6c1a561a 451a341a 221a0a1a f419dc19 c419b319
9f198519 72195f19 4c193b19 28191519 0019e918 d218ba18 a0188e18 7a186618
52183e18 28181218 fd17e617 c717b417 9f178817 70175117 3b172217 0d17f216
d716c016 aa168516 6d165516 3f162316 1116fd15 e715d115 bb15a315 8b157815
53153d15 2c151915 0615f214 dc14c114 a4149114 76146414 4f143b14 29141614
fd13e013 c413a513 8c137613 5f134513 20130b13 f412dc12 c412a912 84126612
48123212 19120112 e911ce11 b3119811 7d116211 47112b11 0f11f310 d710bf10
a5108e10 77105e10 42102910 0e10f40f cf0fb30f 970f820f 680f4c0f 340f150f
<32 bytes per line>
BBED> sum apply;
Check value for File 4, Block 171:
current = 0xcd32, required = 0xcd32
--我们再查询这个表的时候,oracle就会检测到此表中存在坏块,并且报错
SQL> alter system flush buffer_cache;
System altered.
SQL> select count(*) from goolen;
select count(*) from goolen
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 4, block # 171)
ORA-01110: data file 4: '/opt/app/oracle/oradata/goolen/users01.dbf'
--通过copy老数据文件中的block来恢复这个坏块
BBED> copy file 5 block 171 to file 4 block 171
File: /opt/app/oracle/oradata/goolen/users01.dbf (4)
Block: 171 Offsets: 0 to 511 Dba:0x010000ab
------------------------------------------------------------------------
06a20000 ab000001 f98e1a00 00000204 265b0000 01000000 ad230100 f78e1a00
00000000 03003200 a8000001 ffff0000 00000000 00000000 00000000 00800000
f78e1a00 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00011101
ffff3402 67053303 33030000 11016e1f 5a1f491f 371f211f 0e1ff11e de1eca1e
b71e961e 841e731e 581e441e 311e1e1e 0c1ef81d e71dd61d c21dae1d 9d1d8b1d
771d661d 4e1d3a1d 201d0d1d fa1ce71c d41cc01c b01c931c 7d1c691c 521c411c
2e1c1c1c 0a1cf71b e31bd21b bf1baa1b 991b871b 731b5f1b 4b1b371b 241b101b
ef1ad91a c41aad1a 961a821a 6c1a561a 451a341a 221a0a1a f419dc19 c419b319
9f198519 72195f19 4c193b19 28191519 0019e918 d218ba18 a0188e18 7a186618
52183e18 28181218 fd17e617 c717b417 9f178817 70175117 3b172217 0d17f216
d716c016 aa168516 6d165516 3f162316 1116fd15 e715d115 bb15a315 8b157815
53153d15 2c151915 0615f214 dc14c114 a4149114 76146414 4f143b14 29141614
fd13e013 c413a513 8c137613 5f134513 20130b13 f412dc12 c412a912 84126612
48123212 19120112 e911ce11 b3119811 7d116211 47112b11 0f11f310 d710bf10
a5108e10 77105e10 42102910 0e10f40f cf0fb30f 970f820f 680f4c0f 340f150f
<32 bytes per line>
BBED> sum apply
Check value for File 4, Block 171:
current = 0x5b26, required = 0x5b26
--再次查询这个表,已经可以正常查询
SQL> alter system flush buffer_cache;
System altered.
SQL> select count(*) from goolen;
COUNT(*)
----------
400
--我们删除几行数据
SQL> delete goolen where rownum <=100;
100 rows deleted.
SQL> commit;
Commit complete.
SQL> alter system flush buffer_cache;
System altered.
SQL> select count(*) from goolen;
COUNT(*)
----------
300
BBED> copy file 5 block 171 to file 4 block 171
File: /opt/app/oracle/oradata/goolen/users01.dbf (4)
Block: 171 Offsets: 0 to 511 Dba:0x010000ab
------------------------------------------------------------------------
06a20000 ab000001 f98e1a00 00000204 265b0000 01000000 ad230100 f78e1a00
00000000 03003200 a8000001 ffff0000 00000000 00000000 00000000 00800000
f78e1a00 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00011101
ffff3402 67053303 33030000 11016e1f 5a1f491f 371f211f 0e1ff11e de1eca1e
b71e961e 841e731e 581e441e 311e1e1e 0c1ef81d e71dd61d c21dae1d 9d1d8b1d
771d661d 4e1d3a1d 201d0d1d fa1ce71c d41cc01c b01c931c 7d1c691c 521c411c
2e1c1c1c 0a1cf71b e31bd21b bf1baa1b 991b871b 731b5f1b 4b1b371b 241b101b
ef1ad91a c41aad1a 961a821a 6c1a561a 451a341a 221a0a1a f419dc19 c419b319
9f198519 72195f19 4c193b19 28191519 0019e918 d218ba18 a0188e18 7a186618
52183e18 28181218 fd17e617 c717b417 9f178817 70175117 3b172217 0d17f216
d716c016 aa168516 6d165516 3f162316 1116fd15 e715d115 bb15a315 8b157815
53153d15 2c151915 0615f214 dc14c114 a4149114 76146414 4f143b14 29141614
fd13e013 c413a513 8c137613 5f134513 20130b13 f412dc12 c412a912 84126612
48123212 19120112 e911ce11 b3119811 7d116211 47112b11 0f11f310 d710bf10
a5108e10 77105e10 42102910 0e10f40f cf0fb30f 970f820f 680f4c0f 340f150f
<32 bytes per line>
BBED> sum apply;
Check value for File 4, Block 171:
current = 0x5b26, required = 0x5b26
SQL> alter system flush buffer_cache;
System altered.
SQL> select count(*) from goolen;
COUNT(*)
----------
400
- bbed copy修复坏块和delete的数据
- BBED标记坏块以及修复坏块
- bbed处理一个坏块的过程
- 非常规数据恢复的几种场景(利用bbed恢复坏块数据)
- ORACLE BMR快速修复数据坏块
- 使用BBED恢复delete删除的数据
- 【Oracle】使用bbed恢复delete的数据
- BBED模拟表数据块的损坏
- 如何修复未格式化的坏块?
- bbed 解析数据块
- Oracle BBED模拟坏块&验证坏块
- Oracle 坏块修复
- oracle BBED---数据块浏览和编辑工具 详解
- 用BBED理解和修改Oracle数据块
- BBED模拟数据块不一致
- 使用dbms_repair修复坏块
- postgres数据库坏块修复
- dbms_repair包修复坏块
- Tomcat server.xml笔记
- 文件夹选项为什么没有了共享一页?
- Android Fragment实践(二)
- 转载_echo的一些命令
- (简单模拟2.1.2)POJ 1922 Ride to School(求最小值)
- bbed copy修复坏块和delete的数据
- Makefile文件中如何输出打印变量
- 企业知识管理安全
- “位域”与结构体内部对齐、结构体外部对齐(自己定义的)
- 通过WebView实现简单的浏览器
- 类型转换
- hdu ——3018——Ant Trip(一笔画问题)
- 面试中常见的琐碎知识(一)
- Sql 今天凌晨的时间