–先定位到表所在的dba(database block address)地址
select rowid,dbms_rowid.rowid_relative_fno(rowid) fno,
dbms_rowid.rowid_block_number(rowid) block_num,
dbms_rowid.rowid_row_number(rowid) row_num,
dbms_rowid.rowid_object(rowid) objno
from emp;
SQL> SQL> 2 3 4 5
ROWID FNO BLOCK_NUM ROW_NUM OBJNO
------------------ ---------- ---------- ---------- ----------
AAAVREAAEAAAACXAAA 4 151 0 87108
AAAVREAAEAAAACXAAB 4 151 1 87108
AAAVREAAEAAAACXAAC 4 151 2 87108
AAAVREAAEAAAACXAAD 4 151 3 87108
AAAVREAAEAAAACXAAE 4 151 4 87108
AAAVREAAEAAAACXAAF 4 151 5 87108
AAAVREAAEAAAACXAAG 4 151 6 87108
AAAVREAAEAAAACXAAH 4 151 7 87108
AAAVREAAEAAAACXAAI 4 151 8 87108
AAAVREAAEAAAACXAAJ 4 151 9 87108
AAAVREAAEAAAACXAAK 4 151 10 87108
ROWID FNO BLOCK_NUM ROW_NUM OBJNO
------------------ ---------- ---------- ---------- ----------
AAAVREAAEAAAACXAAL 4 151 11 87108
AAAVREAAEAAAACXAAM 4 151 12 87108
AAAVREAAEAAAACXAAN 4 151 13 87108
登录到bbed
[oracle@oracle ~]$ bbed parfile=bbed.par
BBED: Release 2.0.0.0.0 - Limited Production on Sat Feb 10 13:00:56 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED> set file
FILE# 1
BBED> set dba 4,151
DBA 0x01000097 (16777367 4,151)
BBED> show
FILE# 4
BLOCK# 151
OFFSET 0
DBA 0x01000097 (16777367 4,151)
FILENAME /u01/app/oracle/oradata/orcl/users01.dbf
BIFILE bifile.bbd
LISTFILE /home/oracle/file.txt
BLOCKSIZE 8192
MODE Edit
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH 80
COUNT 512
LOGFILE log.bbd
SPOOL No
BBED> find /c king
BBED-00212: search string not found
– king大写
–寻找king所在offset
BBED> find /c KING
File: /u01/app/oracle/oradata/orcl/users01.dbf (4)
Block: 151 Offsets: 7826 to 8191 Dba:0x01000097
------------------------------------------------------------------------
4b494e47 09505245 53494445 4e54ff07 77b50b11 01010102 c233ff02 c10b3c02
0803c24e 59055343 4f545464 704e414c 59535403 c24c4307 77bb0413 01010102
c21fff02 c1152c00 0803c24e 5305434c 41524b07 4d414e41 47455203 c24f2807
77b50609 01010103 c21933ff 02c10b2c 000803c2 4d630542 4c414b45 074d414e
41474552 03c24f28 0777b505 01010101 03c21d33 ff02c11f 2c010803 c24d3706
4d415254 494e0853 414c4553 4d414e03 c24d6307 77b5091c 01010103 c20d3302
c20f02c1 1f2c0108 03c24c43 054a4f4e 4553074d 414e4147 455203c2 4f280777
b5040201 010103c2 1e4cff02 c1152c00 0803c24c 16045741 52440853 414c4553
4d414e03 c24d6307 77b50216 01010103 c20d3302 c20602c1 1f2c0008 03c24b64
05414c4c 454e0853 414c4553 4d414e03 c24d6307 77b50214 01010102 c21102c2
0402c11f 2c000803 c24a4605 534d4954 4805434c 45524b03 c2500307 77b40c11
01010102 c209ff02 c1150206 9da3
<32 bytes per line>
– 从这个偏移量直接修改
BBED> modify /c hdpp offset 7826;
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /u01/app/oracle/oradata/orcl/users01.dbf (4)
Block: 151 Offsets: 7826 to 8191 Dba:0x01000097
------------------------------------------------------------------------
68647070 09505245 53494445 4e54ff07 77b50b11 01010102 c233ff02 c10b3c02
0803c24e 59055343 4f545464 704e414c 59535403 c24c4307 77bb0413 01010102
c21fff02 c1152c00 0803c24e 5305434c 41524b07 4d414e41 47455203 c24f2807
77b50609 01010103 c21933ff 02c10b2c 000803c2 4d630542 4c414b45 074d414e
41474552 03c24f28 0777b505 01010101 03c21d33 ff02c11f 2c010803 c24d3706
4d415254 494e0853 414c4553 4d414e03 c24d6307 77b5091c 01010103 c20d3302
c20f02c1 1f2c0108 03c24c43 054a4f4e 4553074d 414e4147 455203c2 4f280777
b5040201 010103c2 1e4cff02 c1152c00 0803c24c 16045741 52440853 414c4553
4d414e03 c24d6307 77b50216 01010103 c20d3302 c20602c1 1f2c0008 03c24b64
05414c4c 454e0853 414c4553 4d414e03 c24d6307 77b50214 01010102 c21102c2
0402c11f 2c000803 c24a4605 534d4954 4805434c 45524b03 c2500307 77b40c11
01010102 c209ff02 c1150206 9da3
<32 bytes per line>
– 寻找刚才的内容
BBED> find /c hdpp
File: /u01/app/oracle/oradata/orcl/users01.dbf (4)
Block: 151 Offsets: 7826 to 8191 Dba:0x01000097
------------------------------------------------------------------------
68647070 09505245 53494445 4e54ff07 77b50b11 01010102 c233ff02 c10b3c02
0803c24e 59055343 4f545464 704e414c 59535403 c24c4307 77bb0413 01010102
c21fff02 c1152c00 0803c24e 5305434c 41524b07 4d414e41 47455203 c24f2807
77b50609 01010103 c21933ff 02c10b2c 000803c2 4d630542 4c414b45 074d414e
41474552 03c24f28 0777b505 01010101 03c21d33 ff02c11f 2c010803 c24d3706
4d415254 494e0853 414c4553 4d414e03 c24d6307 77b5091c 01010103 c20d3302
c20f02c1 1f2c0108 03c24c43 054a4f4e 4553074d 414e4147 455203c2 4f280777
b5040201 010103c2 1e4cff02 c1152c00 0803c24c 16045741 52440853 414c4553
4d414e03 c24d6307 77b50216 01010103 c20d3302 c20602c1 1f2c0008 03c24b64
05414c4c 454e0853 414c4553 4d414e03 c24d6307 77b50214 01010102 c21102c2
0402c11f 2c000803 c24a4605 534d4954 4805434c 45524b03 c2500307 77b40c11
01010102 c209ff02 c1150206 9da3
<32 bytes per line>
– 保存修改
BBED> sum apply;
Check value for File 4, Block 151:
current = 0xe992, required = 0xe992
BBED> exit
–重启数据库生效
[oracle@oracle ~]$ sqlplus scott/123123
SQL*Plus: Release 11.2.0.4.0 Production on Sat Feb 10 13:06:15 2018
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> set linesize 255
–确认内容
SQL> select * from emp
2 ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ------------------ ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7839 hdpp PRESIDENT 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7900 JAMES CLERK 7698 03-DEC-81 950 30
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10
11 rows selected.
SQL>
– 修改成功,这个实验主要是oracle底层知识,掌握之后,对oracle的理解会更深入。