联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
bbed的功能很强大,可以通过bbed_wrap来获得数据块记录,相当用途:抢救坏块中的数据
环境准备
[oracle@xifenfei ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Thu Jan 12 18:29:50 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> conn chf/xifenfei Connected. SQL> create table t_xifenfei 2 as 3 select object_id,object_name from dba_objects where rownum<20; Table created. SQL> select file_id,block_id,block_id+blocks-1 2 from dba_extents 3 where segment_name ='T_XIFENFEI' AND owner='CHF'; FILE_ID BLOCK_ID BLOCK_ID+BLOCKS-1 ---------- ---------- ----------------- 4 680 687 SQL> alter system checkpoint; System altered. --查询记录 SQL> col object_name for a20 SQL> select object_id,object_name, 2 dbms_rowid.rowid_relative_fno(rowid)rel_fno, 3 dbms_rowid.rowid_block_number(rowid)blockno, 4 dbms_rowid.rowid_row_number(rowid) rowno 5 from chf.t_xifenfei; OBJECT_ID OBJECT_NAME REL_FNO BLOCKNO ROWNO ---------- -------------------- ---------- ---------- ---------- 20 ICOL$ 4 683 0 46 I_USER1 4 683 1 28 CON$ 4 683 2 15 UNDO$ 4 683 3 29 C_COBJ# 4 683 4 3 I_OBJ# 4 683 5 25 PROXY_ROLE_DATA$ 4 683 6 41 I_IND1 4 683 7 54 I_CDEF2 4 683 8 40 I_OBJ5 4 683 9 26 I_PROXY_ROLE_DATA$_1 4 683 10 17 FILE$ 4 683 11 13 UET$ 4 683 12 9 I_FILE#_BLOCK# 4 683 13 43 I_FILE1 4 683 14 51 I_CON1 4 683 15 38 I_OBJ3 4 683 16 7 I_TS# 4 683 17 56 I_CDEF4 4 683 18 19 rows selected.
bbed参数配置
[oracle@xifenfei ~]$ more bbed_file 1 /u01/oracle/oradata/ora11g/system01.dbf 2 /u01/oracle/oradata/ora11g/sysaux01.dbf 3 /u01/oracle/oradata/ora11g/undotbs01.dbf 4 /u01/oracle/oradata/ora11g/users01.dbf 5 /u01/oracle/oradata/ora11g/dbfs01.dbf [oracle@xifenfei ~]$ more bbed.par blocksize=8192 listfile=/home/oracle/bbed_file mode=browse SILENT=yes PASSWORD=blockedit
bbed_wrap脚本执行
[oracle@xifenfei ~]$ ./bbed_wrap.sh 4 683 "/rn2cntn" There are 19 rows in block 683 on file 4 " 20 "," ICOL$" " 46 "," I_USER1" " 28 "," CON$" " 15 "," UNDO$" " 29 "," C_COBJ#" " 3 "," I_OBJ#" " 25 "," PROXY_ROLE_DATA$" " 41 "," I_IND1" " 54 "," I_CDEF2" " 40 "," I_OBJ5" " 26 "," I_PROXY_ROLE_DATA$_1" " 17 "," FILE$" " 13 "," UET$" " 9 "," I_FILE#_BLOCK#" " 43 "," I_FILE1" " 51 "," I_CON1" " 38 "," I_OBJ3" " 7 "," I_TS#" " 56 "," I_CDEF4" --和我们查询的结果完全一致
bbed_wrap是oracle internal的脚本,不太直接方便对外提供
飞总,bbed_wrap.sh脚本能贴给我吗?
我自己写的如下部分,不知道bbed 怎么与shell结合交互,麻烦请教一下,谢谢。
#!/bin/bash
#/rn2cntn
bbed parfile=/home/oracle/bbed.par<<EOF
set file $1 block $2
a=p kdbr|wc -l
#p *kdbr[0]
x$3
EOF
echo "There are" a "rows in block" $2 "on file" $1