oracle实验:用bbed恢复误删记录的全过程 1 准备测试环境: SQL> create table c as select * from dept; Table created. SQL> select * from c; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON SQL> select rowid,c.* from c; ROWID DEPTNO DNAME LOC ------------------ ---------- -------------- ------------- AAAM5/AAEAAAEmEAAA 10 ACCOUNTING NEW YORK AAAM5/AAEAAAEmEAAB 20 RESEARCH DALLAS AAAM5/AAEAAAEmEAAC 30 SALES CHICAGO AAAM5/AAEAAAEmEAAD 40 OPERATIONS BOSTON SQL> select get_rowid('AAAM5/AAEAAAEmEAAA') row_id from dual; ROW_ID -------------------------------------------------------------------------------- Object# is :52863 Relative_fno is :4 Block number is :18820 Row number is :0 ps: get_rowid 这个函数是用来获得row_id的详信息,实现如下: create or replace function get_rowid (l_rowid in varchar2) return varchar2 is ls_my_rowid varchar2(200); rowid_type number; object_number number; relative_fno number; block_number number; row_number number; begin dbms_rowid.rowid_info(l_rowid,rowid_type,object_number,relative_fno,block_number,row_number); ls_my_rowid := 'Object# is :'||to_char(object_number)||chr(10)|| 'Relative_fno is :'||to_char(relative_fno)||chr(10)|| 'Block number is :'||to_char(block_number)||chr(10)|| 'Row number is :'||to_char(row_number); return ls_my_rowid; end; 2 登入bbed [oracle@localhost ~]$ bbed parfile=bbed.par Password: BBED: Release 2.0.0.0.0 - Limited Production on Thu Jun 14 13:09:44 2012 Copyright (c) 1982, 2005, Oracle. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> set dba 4,18820 DBA 0x01004984 (16796036 4,18820) BBED> find /c ACCOUNTING TOP File: /u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_7wvsw7hg_.dbf (4) Block: 18820 Offsets: 8169 to 8191 Dba:0x01004984 ------------------------------------------------------------------------ 4143434f 554e5449 4e47084e 45572059 4f524b02 06483a <32 bytes per line> BBED> dump /v dba 4,18820 offset 8169 count 23 File: /u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_7wvsw7hg_.dbf (4) Block: 18820 Offsets: 8169 to 8191 Dba:0x01004984 ------------------------------------------------------- 4143434f 554e5449 4e47084e 45572059 l ACCOUNTING.NEW Y 4f524b02 06483a l ORKH: <16 bytes per line> BBED> p *kdbr[0] --*kdbr[n],其中n是row number rowdata[66] ----------- ub1 rowdata[66] @8162 0x2c BBED> dump /v dba 4,18820 offset 8162 count 23 File: /u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_7wvsw7hg_.dbf (4) Block: 18820 Offsets: 8162 to 8184 Dba:0x01004984 ------------------------------------------------------- 2c000302 c10b0a41 43434f55 4e54494e l ,…?ACCOUNTIN 47084e45 572059 l G.NEW Y <16 bytes per line> 以上是完好的行,accounting所在行显示为2c,那么,到sqlplus,将其删除。 |