BBED是Block Browser/Editor的缩写,是Oracle的一个内部工具,不对外发布文档及支持。 BBED随软件发布,但是我们需要进行简单的relink才能使用。
在使用bbed前,需进行编译连接。但由于Oracle 11g开始不再提供这两个库文件ssbbded.o
,ssbbded.o
,我们在编译时会报以下错误:
[oracle@dbserver1 lib]$ cd $ORACLE_HOME/rdbms/lib
[oracle@dbserver1 lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
Linking BBED utility (bbed)
rm -f /u01/app/oracle/product/11.2.0/db_1/rdbms/lib/bbed
gcc -o /u01/app/oracle/product/11.2.0/db_1/rdbms/lib/bbed -m64 -L/u01/app/oracle/product/11.2.0/db_1/rdbms/lib/ -L/u01/app/oracle/product/11.2.0/db_1/lib/ -L/u01/app/oracle/product/11.2.0/db_1/lib/stubs/ /u01/app/oracle/product/11.2.0/db_1/lib/s0main.o /u01/app/oracle/product/11.2.0/db_1/rdbms/lib/ssbbded.o /u01/app/oracle/product/11.2.0/db_1/rdbms/lib/sbbdpt.o `cat /u01/app/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -ldbtools11 -lclntsh `cat /u01/app/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/app/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lztkg11 -lztkg11 -lclient11 -lnnetd11 -lvsn11 -lcommon11 -lgeneric11 -lmm -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `cat /u01/app/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/app/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lclient11 -lnnetd11 -lvsn11 -lcommon11 -lgeneric11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lclient11 -lnnetd11 -lvsn11 -lcommon11 -lgeneric11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `cat /u01/app/oracle/product/11.2.0/db_1/lib/sysliblist` -Wl,-rpath,/u01/app/oracle/product/11.2.0/db_1/lib -lm `cat /u01/app/oracle/product/11.2.0/db_1/lib/sysliblist` -ldl -lm -L/u01/app/oracle/product/11.2.0/db_1/lib
gcc: /u01/app/oracle/product/11.2.0/db_1/rdbms/lib/ssbbded.o: No such file or directory
gcc: /u01/app/oracle/product/11.2.0/db_1/rdbms/lib/sbbdpt.o: No such file or directory
make: *** [/u01/app/oracle/product/11.2.0/db_1/rdbms/lib/bbed] Error 1
这两个文件可以从Oracle 10g拷贝相关文件到Oracle 11g对应目录下
如果没有安装Oracle 10g数据库,怎么从Oracle安装介质中提取呢?
1)安装介质解压,把解压出来的jar包再解压,查找jar包解压出来的文件即可,可以使用以下脚本:
cd database_10.2
for jar in $(find . -type f -name "*.jar"|grep rdbms);do
jar -tvf $jar | grep sbbd && echo $jar
done
2)示例
[root@dbserver1 database_10.2]# for jar in $(find . -type f -name "*.jar"|grep rdbms);do
> jar -tvf $jar | grep sbbd && echo $jar
> done
1863 Sat Sep 17 19:59:24 CST 2005 rdbms/lib/sbbdpt.o
1191 Sat Sep 17 19:59:28 CST 2005 rdbms/lib/ssbbded.o
./stage/Components/oracle.rdbms/10.2.0.1.0/1/DataFiles/filegroup33.jar
3043 Thu Sep 08 03:43:08 CST 2005 rdbms/lib32/sbbdpt.o
2721 Thu Sep 08 03:43:08 CST 2005 rdbms/lib32/ssbbded.o
./stage/Components/oracle.rdbms.hybrid/10.2.0.1.0/1/DataFiles/filegroup1.jar
3)找到了32位库文件和64位的库文件,我们只需解压64位jar文件
[root@dbserver1 lib]# jar -xvf filegroup33.jar
[root@dbserver1 lib]# ls -l|grep sbbd
-rw-r--r-- 1 root root 1863 Sep 17 2005 sbbdpt.o
-rw-r--r-- 1 root root 1191 Sep 17 2005 ssbbded.o
[root@dbserver1 lib]# chown oracle:oinstall *sbbd*
4)复制到11g $ORACL_HOME/rdbms/lib目录中
[oracle@dbserver1 lib]$ cp *sbbd* /u01/app/oracle/product/11.2.0/db_1/rdbms/lib/
5)再次编译
[oracle@dbserver1 lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
Linking BBED utility (bbed)
rm -f /u01/app/oracle/product/11.2.0/db_1/rdbms/lib/bbed
gcc -o /u01/app/oracle/product/11.2.0/db_1/rdbms/lib/bbed -m64 -L/u01/app/oracle/product/11.2.0/db_1/rdbms/lib/ -L/u01/app/oracle/product/11.2.0/db_1/lib/ -L/u01/app/oracle/product/11.2.0/db_1/lib/stubs/ /u01/app/oracle/product/11.2.0/db_1/lib/s0main.o /u01/app/oracle/product/11.2.0/db_1/rdbms/lib/ssbbded.o /u01/app/oracle/product/11.2.0/db_1/rdbms/lib/sbbdpt.o `cat /u01/app/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -ldbtools11 -lclntsh `cat /u01/app/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/app/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lztkg11 -lztkg11 -lclient11 -lnnetd11 -lvsn11 -lcommon11 -lgeneric11 -lmm -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `cat /u01/app/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/app/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lclient11 -lnnetd11 -lvsn11 -lcommon11 -lgeneric11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lclient11 -lnnetd11 -lvsn11 -lcommon11 -lgeneric11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `cat /u01/app/oracle/product/11.2.0/db_1/lib/sysliblist` -Wl,-rpath,/u01/app/oracle/product/11.2.0/db_1/lib -lm `cat /u01/app/oracle/product/11.2.0/db_1/lib/sysliblist` -ldl -lm -L/u01/app/oracle/product/11.2.0/db_1/lib
[oracle@dbserver1 lib]$ ./bbed
Message 112 not found; No message file for product=RDBMS, facility=BBED
BBED-00113: file not found
6)错误Message 112 not found,说明BBED命令还缺失二个mesg文件:bbedus.msb,bbedus.msg,使用同样的方法获得:
[oracle@dbserver1 database_10.2]$ for jar in $(find . -type f -name "*.jar"|grep rdbms);do
> jar -tvf $jar | grep bbedus && echo $jar
> done
8704 Fri Sep 09 09:46:10 CST 2005 rdbms/mesg/bbedus.msb
10270 Tue Jul 25 19:32:00 CST 2000 rdbms/mesg/bbedus.msg
./stage/Components/oracle.rdbms.util/10.2.0.1.0/1/DataFiles/filegroup5.jar
[root@dbserver1 opt]# jar -xvf filegroup5.jar
[root@dbserver1 mesg]# chown oracle:oinstall bbedus.ms*
[oracle@dbserver1 mesg]$ cp bbedus* $ORACLE_HOME/rdbms/mesg/
默认情况下,bbed工具是被编译连接到rdbms/lib目录下的。因此并不是在通常的$ORACLE_HOME/bin目录。
[oracle@dbserver1 lib]$ cp bbed $ORACLE_HOME/bin/
[oracle@dbserver1 ~]$ bbed
Password:
#默认密码:blockedit
BBED: Release 2.0.0.0.0 - Limited Production on Mon Dec 3 14:50:46 2018
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED> show
FILE# 0
BLOCK# 1
OFFSET 0
DBA 0x00000000 (0 0,1)
FILENAME
BIFILE bifile.bbd
LISTFILE
BLOCKSIZE 8192
MODE Browse
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH 80
COUNT 512
LOGFILE log.bbd
SPOOL No
命令项 | 描述 |
---|---|
BLOCKSIZE | 可编辑的数据文件标准块大小。 |
MODE | bbed可运行模式(browser或edit) |
SILENT | 不将输出打印到标准输出上(Y或N) |
SPOOL | 操作记录写出到bbed.log文件 (Y或N) |
LISTFILE | 列出可编辑的文件 |
CMDFILE | 可执行命令的文件名清单 |
BIFILE | undo文件文件名。默认为bifile.bbd |
LOGFILE | 用户日志文件文件名。默认为log.bbd |
PARFILE | 列有命令项的参数文件 |
[oracle@dbserver1 ~]$ bbed blocksize=8192 filename=/u01/app/oracle/oradata/ocmdb/users01.dbf
Password:
BBED: Release 2.0.0.0.0 - Limited Production on Mon Dec 3 15:10:41 2018
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED> map
File: /u01/app/oracle/oradata/ocmdb/users01.dbf (0)
Block: 1 Dba:0x00000000
------------------------------------------------------------
Data File Header
struct kcvfh, 860 bytes @0
ub4 tailchk @8188
RMAN> backup database format '/tmp/db_%U.dbf';
[oracle@dbserver1 ~]$ vim bbed.par
password=blockedit
blocksize=8192
listfile=/home/oracle/bbed/fileunix.log
mode=edit
fileunix.log文件内容,可以用以下sql生成:
SQL> select file#||' '||name||' '||bytes from v$datafile;
1 /u01/app/oracle/oradata/ocmdb/system01.dbf 1073741824
2 /u01/app/oracle/oradata/ocmdb/sysaux01.dbf 340787200
3 /u01/app/oracle/oradata/ocmdb/undotbs01.dbf 209715200
4 /u01/app/oracle/oradata/ocmdb/users01.dbf 524288000
5 /u01/app/oracle/oradata/ocmdb/apps01.dbf 524288000
[oracle@dbserver1 bbed]$ bbed parfile=bbed.par
BBED: Release 2.0.0.0.0 - Limited Production on Mon Dec 3 16:09:26 2018
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED> info
File# Name Size(blks)
----- ---- ----------
1 /u01/app/oracle/oradata/ocmdb/system01.dbf 131072
2 /u01/app/oracle/oradata/ocmdb/sysaux01.dbf 41600
3 /u01/app/oracle/oradata/ocmdb/undotbs01.dbf 25600
4 /u01/app/oracle/oradata/ocmdb/users01.dbf 64000
5 /u01/app/oracle/oradata/ocmdb/apps01.dbf 64000
BBED> set file 4
FILE# 4
BBED> modify 1000 file 4 block 384
File: /u01/app/oracle/oradata/ocmdb/users01.dbf (4)
Block: 384 Offsets: 0 to 511 Dba:0x01000180
------------------------------------------------------------------------
03e80000 80010001 4f3d0900 00000104 19840000 00000000 00000000 00000000
00000000 53000000 ff2f0000 20100000 52000000 0d020000 00040000 0d2f0001
00000000 52000000 03000000 0c2e0000 00000000 00000000 00000000 53000000
00000000 7c420000 00000040 81010001 07000000 88010001 08000000 90010001
08000000 98010001 08000000 a0010001 08000000 a8010001 08000000 b0010001
08000000 b8010001 08000000 c0010001 08000000 c8010001 08000000 d0010001
08000000 d8010001 08000000 e0010001 08000000 e8010001 08000000 f0010001
08000000 f8010001 08000000 00020001 80000000 00010001 80000000 80020001
80000000 00030001 80000000 80030001 80000000 00040001 80000000 80040001
80000000 00050001 80000000 80050001 80000000 00060001 80000000 80060001
80000000 00070001 80000000 80070001 80000000 00080001 80000000 80080001
80000000 00090001 80000000 80090001 80000000 000a0001 80000000 800a0001
80000000 000b0001 80000000 800b0001 80000000 000c0001 80000000 800c0001
80000000 000d0001 80000000 800d0001 80000000 000e0001 80000000 800e0001
80000000 000f0001 80000000 800f0001 80000000 00100001 80000000 80100001
80000000 00110001 80000000 80110001 80000000 00120001 80000000 80120001
<32 bytes per line>
BBED> verify
DBVERIFY - Verification starting
FILE = /u01/app/oracle/oradata/ocmdb/users01.dbf
BLOCK = 384
Block 384 is corrupt
Corrupt block relative dba: 0x01000180 (file 0, block 384)
Bad header found during verification
Data in bad block:
type: 3 format: 0 rdba: 0x01000180
last change scn: 0x0000.00093d4f seq: 0x1 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x3d4f1001
check value in block header: 0x8419
computed block checksum: 0x4a13
DBVERIFY - Verification complete
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
[oracle@dbserver1 bbed]$ dbv file=/u01/app/oracle/oradata/ocmdb/users01.dbf blocksize=8192
DBVERIFY: Release 11.2.0.1.0 - Production on Mon Dec 3 17:04:28 2018
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
DBVERIFY - Verification starting : FILE = /u01/app/oracle/oradata/ocmdb/users01.dbf
Page 384 is marked corrupt
Corrupt block relative dba: 0x01000180 (file 4, block 384)
Bad header found during dbv:
Data in bad block:
type: 3 format: 0 rdba: 0x01000180
last change scn: 0x0000.00093d4f seq: 0x1 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x3d4f1001
check value in block header: 0x8419
computed block checksum: 0x4a13
DBVERIFY - Verification complete
Total Pages Examined : 64000
Total Pages Processed (Data) : 11915
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing (Index): 0
Total Pages Processed (Other): 128
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 51956
Total Pages Marked Corrupt : 1
Total Pages Influx : 0
Total Pages Encrypted : 0
Highest block SCN : 605955 (0.605955)
SQL> alter system flush buffer_cache;
System altered.
SQL> select count(*) from wanbin.t2;
select count(*) from wanbin.t2
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 4, block # 384)
ORA-01110: data file 4: '/u01/app/oracle/oradata/ocmdb/users01.dbf'
ALTER SYSTEM: Flushing buffer cache
Hex dump of (file 4, block 384) in trace file /u01/app/oracle/diag/rdbms/ocmdb/ocmdb/trace/ocmdb_ora_17882.trc
Corrupt block relative dba: 0x01000180 (file 4, block 384)
Bad header found during buffer read
Data in bad block:
type: 3 format: 0 rdba: 0x01000180
last change scn: 0x0000.00093d4f seq: 0x1 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x3d4f1001
check value in block header: 0x8419
computed block checksum: 0x4a13
Reading datafile '/u01/app/oracle/oradata/ocmdb/users01.dbf' for corruption at rdba: 0x01000180 (file 4, block 384)
Reread (file 4, block 384) found same corrupt data
Mon Dec 03 17:06:20 2018
Corrupt Block Found
TSN = 4, TSNAME = USERS
RFN = 4, BLK = 384, RDBA = 16777600
OBJN = 17020, OBJD = 17020, OBJECT = T2, SUBOBJECT =
SEGMENT OWNER = WANBIN, SEGMENT TYPE = Table Segment
Errors in file /u01/app/oracle/diag/rdbms/ocmdb/ocmdb/trace/ocmdb_ora_17882.trc (incident=9865):
ORA-01578: ORACLE data block corrupted (file # 4, block # 384)
ORA-01110: data file 4: '/u01/app/oracle/oradata/ocmdb/users01.dbf'
Incident details in: /u01/app/oracle/diag/rdbms/ocmdb/ocmdb/incident/incdir_9865/ocmdb_ora_17882_i9865.trc
Mon Dec 03 17:06:23 2018
Errors in file /u01/app/oracle/diag/rdbms/ocmdb/ocmdb/trace/ocmdb_ora_17882.trc (incident=9866):
ORA-01578: ORACLE data block corrupted (file # 4, block # 384)
ORA-01110: data file 4: '/u01/app/oracle/oradata/ocmdb/users01.dbf'
Incident details in: /u01/app/oracle/diag/rdbms/ocmdb/ocmdb/incident/incdir_9866/ocmdb_ora_17882_i9866.trc
Mon Dec 03 17:06:23 2018
Sweep [inc][9865]: completed
Hex dump of (file 4, block 384) in trace file /u01/app/oracle/diag/rdbms/ocmdb/ocmdb/incident/incdir_9865/ocmdb_m000_17896_i9865_a.trc
Corrupt block relative dba: 0x01000180 (file 4, block 384)
Bad header found during validation
Data in bad block:
type: 3 format: 0 rdba: 0x01000180
last change scn: 0x0000.00093d4f seq: 0x1 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x3d4f1001
check value in block header: 0x8419
computed block checksum: 0x4a13
Reread of blocknum=384, file=/u01/app/oracle/oradata/ocmdb/users01.dbf. found same corrupt data
Reread of blocknum=384, file=/u01/app/oracle/oradata/ocmdb/users01.dbf. found same corrupt data
Reread of blocknum=384, file=/u01/app/oracle/oradata/ocmdb/users01.dbf. found same corrupt data
Reread of blocknum=384, file=/u01/app/oracle/oradata/ocmdb/users01.dbf. found same corrupt data
Reread of blocknum=384, file=/u01/app/oracle/oradata/ocmdb/users01.dbf. found same corrupt data
Hex dump of (file 4, block 384) in trace file /u01/app/oracle/diag/rdbms/ocmdb/ocmdb/incident/incdir_9865/ocmdb_m000_17896_i9865_a.trc
Corrupt block relative dba: 0x01000180 (file 4, block 384)
Bad header found during buffer read
Data in bad block:
type: 3 format: 0 rdba: 0x01000180
last change scn: 0x0000.00093d4f seq: 0x1 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x3d4f1001
check value in block header: 0x8419
computed block checksum: 0x4a13
Reading datafile '/u01/app/oracle/oradata/ocmdb/users01.dbf' for corruption at rdba: 0x01000180 (file 4, block 384)
Reread (file 4, block 384) found same corrupt data
Corrupt Block Found
TSN = 4, TSNAME = USERS
RFN = 4, BLK = 384, RDBA = 16777600
OBJN = -1, OBJD = 17020, OBJECT = USERS, SUBOBJECT =
SEGMENT OWNER = , SEGMENT TYPE = Temporary Segment
Errors in file /u01/app/oracle/diag/rdbms/ocmdb/ocmdb/trace/ocmdb_m000_17896.trc (incident=9809):
ORA-01578: ORACLE data block corrupted (file # 4, block # 384)
ORA-01110: data file 4: '/u01/app/oracle/oradata/ocmdb/users01.dbf'
Incident details in: /u01/app/oracle/diag/rdbms/ocmdb/ocmdb/incident/incdir_9809/ocmdb_m000_17896_i9809.trc
Mon Dec 03 17:06:24 2018
Trace dumping is performing id=[cdmp_20181203170624]
Mon Dec 03 17:06:25 2018
Sweep [inc][9866]: completed
Sweep [inc][9809]: completed
Sweep [inc2][9866]: completed
Sweep [inc2][9865]: completed
Checker run found 1 new persistent data failures
Trace dumping is performing id=[cdmp_20181203170626]
Mon Dec 03 17:07:24 2018
Sweep [inc2][9809]: completed
RMAN> BACKUP CHECK LOGICAL VALIDATE DATAFILE 4;
Starting backup at 03-DEC-18
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=20 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00004 name=/u01/app/oracle/oradata/ocmdb/users01.dbf
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
4 FAILED 0 51956 64000 605955
File Name: /u01/app/oracle/oradata/ocmdb/users01.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 11915
Index 0 0
Other 1 129
validate found one or more corrupt blocks
See trace file /u01/app/oracle/diag/rdbms/ocmdb/ocmdb/trace/ocmdb_ora_18045.trc for details
Finished backup at 03-DEC-18
SQL> select * from v$database_block_corruption where file#=4;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
4 384 1 0 CORRUPT
SQL> alter system dump datafile 4 block 384;
[oracle@dbserver1 trace]$ more ocmdb_ora_18184.trc
Trace file /u01/app/oracle/diag/rdbms/ocmdb/ocmdb/trace/ocmdb_ora_18184.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1
System name: Linux
Node name: dbserver1
Release: 2.6.32-200.13.1.el5uek
Version: #1 SMP Wed Jul 27 21:02:33 EDT 2011
Machine: x86_64
Instance name: ocmdb
Redo thread mounted by this instance: 1
Oracle process number: 26
Unix process pid: 18184, image: oracle@dbserver1 (TNS V1-V3)
*** 2018-12-03 17:23:12.661
*** SESSION ID:(20.98) 2018-12-03 17:23:12.661
*** CLIENT ID:() 2018-12-03 17:23:12.661
*** SERVICE NAME:(SYS$USERS) 2018-12-03 17:23:12.661
*** MODULE NAME:(sqlplus@dbserver1 (TNS V1-V3)) 2018-12-03 17:23:12.661
*** ACTION NAME:() 2018-12-03 17:23:12.661
Start dump data blocks tsn: 4 file#:4 minblk 384 maxblk 384
Block dump from cache:
Dump of buffer cache at level 4 for tsn=4, rdba=16777600
BH (0x9bf85538) file#: 4 rdba: 0x01000180 (4/384) class: 4 ba: 0x9b34e000
set: 6 pool 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 77,28
dbwrid: 0 obj: 17020 objn: -1 tsn: 4 afn: 4 hint: f
hash: [0x9bfcafc8,0xbff4e700] lru: [0x9bf85750,0xbd260578]
ckptq: [NULL] fileq: [NULL] objq: [NULL]
st: CR md: NULL tch: 0
cr: [scn: 0x0.94ddd],[xid: 0x0.0.0],[uba: 0x0.0.0],[cls: 0x0.94ddd],[sfl: 0x0],[lc: 0x0.0]
flags:
cr pin refcnt: 0 sh pin refcnt: 0
...
根据dump文件,可以知道损坏的块所属的对象编号为17020,根据对象号,我们来查找对象类型
SQL> select owner,object_name,object_type from dba_objects o where o.object_id='17020';
OWNER OBJECT_NAME OBJECT_TYPE
------------------------------ ------------------------------ -------------------
WANBIN T2 TABLE
RMAN> blockrecover datafile 4 block 384 from backupset;
或者使用
RMAN> recover corruption list;
Starting recover at 03-DEC-18
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=87 device type=DISK
channel ORA_DISK_1: restoring block(s)
channel ORA_DISK_1: specifying block(s) to restore from backup set
restoring blocks of datafile 00004
channel ORA_DISK_1: reading from backup piece /tmp/db_04tjrtom_1_1.dbf
channel ORA_DISK_1: piece handle=/tmp/db_04tjrtom_1_1.dbf tag=TAG20181203T155814
channel ORA_DISK_1: restored block(s) from backup piece 1
channel ORA_DISK_1: block restore complete, elapsed time: 00:00:03
starting media recovery
media recovery complete, elapsed time: 00:00:03
Finished recover at 03-DEC-18
RMAN> validate datafile 4 block 384;
Starting validate at 03-DEC-18
using channel ORA_DISK_1
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: specifying datafile(s) for validation
input datafile file number=00004 name=/u01/app/oracle/oradata/ocmdb/users01.dbf
channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
4 OK 0 0 1 605519
File Name: /u01/app/oracle/oradata/ocmdb/users01.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 0
Index 0 0
Other 0 1
Finished validate at 03-DEC-18
SQL> select count(*) from wanbin.t2;
COUNT(*)
----------
865664
SQL> exec dbms_repair.skip_corrupt_blocks('WANBIN','T2');
或者设置事件( alter system set events '10231 trace name context forever,level 10'
exp,imp导出导入表数据)
SQL> select skip_corrupt from user_tables where table_name='T2';
SKIP_COR
--------
ENABLED