oracle体系结构常见基本概念总结[收集中]

来源:互联网 发布:java编程思想4 mobi 编辑:程序博客网 时间:2024/06/05 15:53

一、数据块的地址概念

 1. dba(data block address)

  表示定位特定一个块的一种方式,其前10位表示块所在的(绝对)文件号,后22位表示该文件上的第几号块,即块号。

例如,某个回滚块的地址0x00800615 , 则
  下面把dba翻译一下

  1. sys@ORCL> select to_number('00800615','xxxxxxxx'from dual;  
  2.   
  3. TO_NUMBER('00800615','XXXXXXXX')  
  4. --------------------------------  
  5.                          8390165  
  6.   
  7. sys@ORCL> select dbms_utility.data_block_address_file(8390165) from dual;  
  8.   
  9. DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(8390165)  
  10. ---------------------------------------------  
  11.                                             2  
  12.   
  13. sys@ORCL> select dbms_utility.data_block_address_block(8390165) from dual;  
  14.   
  15. DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(8390165)  
  16. ----------------------------------------------  
  17.                                           1557  


2.uba(undo block address):
   将uba(0x00800615.0105.14)分解一下:00800615,即DBA,表明第一号文件上的第1557个回滚块;14是irb信息(回滚的起点),即undo块上的一个undo记录对应的记录号;0105,表示undo记录号为14的undo记录已经被覆盖或说修改了261次



3.RBA(redo block address)

RBA: 0x000605.00017b82.01a4由三部分组成:

0x000605日志的序列号

00017b82 redo日志中块号

01a4:日志文件中块内部的偏移量


  

二、事务编号XID:

          将xid(0x0009.01a.00000162)分解一下:0009表明该事务指向9号回滚段,01a表明该事务指向9号回滚段的段头上的26号事务槽,00000162表明该事务槽第354次被覆盖(因为回滚段是循环使用的)。


三、rowid    即表的每一行oracle都会自动加上一个rowid,rowid由该数据行的所在表的逻辑对象号+该表所在的相对文件号+该文件的第几个块号+该块上的第几个数据行号组成。
select rowid, 
dbms_rowid.rowid_object(rowid) object_id,dbms_rowid.rowid_relative_fno(rowid) as fno, dbms_rowid.rowid_block_number(rowid),
dbms_rowid.rowid_row_number(rowid) num,rowidtochar(rowid) as blkno from ltb where id=1;
ROWID                     FNO      BLKNO------------------ ---------- ----------AAAGA8AAIAAAADOAAA          8        206

注意:在未超出1023前,(绝对)文件号和相对文件号的值是一样的

原创粉丝点击