日期:2014-05-16 浏览次数:20800 次
sys@FAKE> select file#||' '||name||' '||bytes as flist from v$datafile ; FLIST ---------------------------------- 1 /u01/apps/oracle/oradata/fake/system01.dbf 744488960 2 /u01/apps/oracle/oradata/fake/sysaux01.dbf 703922176 3 /u01/apps/oracle/oradata/fake/undotbs01.dbf 325058560 4 /u01/apps/oracle/oradata/fake/users01.dbf 16777216 5 /u01/apps/oracle/oradata/fake/example01.dbf 104857600
sys@FAKE> show parameter db_block_size NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_block_size integer 8192
4. 下面我们来修改数据
首先补充一下基本知识,假设块大小为
8kb=8192byte
1byte=8bit
dump文件使用16进制编码
所以可以使用2个16进制编码代表1byte
因此一个块中总共有8192*2=16384个0到F的代码构成,每2位代表一个字节。
sys@FAKE> select t.*,
  2         dbms_rowid.rowid_relative_fno(t.rowid) as "FNO#",
  3         dbms_rowid.rowid_block_number(t.rowid) as "BLK#",
  4         dbms_rowid.rowid_row_number(t.rowid) as "ROW#"
  5    from scott.emp t
  6   where t.empno = 7839;
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO       FNO#       BLK#       ROW#
---------- ---------- --------- ---------- --------- ---------- ---------- ---------- ---------- ---------- ----------
      7839 KING       PRESIDENT            17-NOV-81       5000                    10          4         29          8sys@FAKE> select dump(5000,1016) from dual; DUMP(5000,1016) ------------------ Typ=2 Len=2: c2,33