ITPub博客

首页 > 数据库 > Oracle > database block address (DBA)

database block address (DBA)

Oracle 作者:stockDB 时间:2015-06-23 14:31:29 0 删除 编辑
Each block in the database is uniquely identified with the database block address (dba).A Data Block Address (DBA) is the address of an Oracle data block for access purposes.
在数据库中的每个block都有一个唯一的定义,这就是database block address。DBA是作为一个数据块的地址为oracle访问的。

Example:
SQL> SELECT
  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    empno, ename
  6  FROM emp WHERE empno = 7369;
   REL_FNO    BLOCKNO      ROWNO      EMPNO ENAME
---------- ---------- ---------- ---------- ----------
         4        147          0       7369 SMITH
SQL> alter system dump datafile 4 block 147;
System altered.

SQL> select value from v$diag_info where name like 'De%';
VALUE
--------------------------------------------------------------------------------
/oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_32241.trc
根据dump出来的文件显示:
block_row_dump:
tab 0, row 0, @0x1f72
tl: 38 fb: --H-FL-- lb: 0x1  cc: 8
col  0: [ 3]  c2 4a 46
col  1: [ 5]  53 4d 49 54 48
col  2: [ 5]  43 4c 45 52 4b
col  3: [ 3]  c2 50 03
col  4: [ 7]  77 b4 0c 11 01 01 01
col  5: [ 2]  c2 09
第一行,第一列:
Col 0 (EMPNO)
SQL> SELECT utl_raw.cast_to_number(replace('c2 4a 46',' ')) value FROM dual;
VALUE
----------
      7369
第一行,第二列:
SQL> SELECT utl_raw.cast_to_varchar2(replace('53 4d 49 54 48',' ')) value FROM dual;
VALUE
---------
SMITH

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30291162/viewspace-1709100/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: rowid详细介绍
请登录后发表评论 登录
全部评论

注册时间:2015-06-15

  • 博文量
    35
  • 访问量
    24297