select dbms_utility.data_block_address_file(12591208) "file",
dbms_utility.data_block_address_block(12591208) "block" from dual;
例如:
rdba: 0x01000080 转换为二进制
0000 0001 0000 0000 0000 0000 1000 0000
总共22位
前面10位代表了rfile# 后面的22为代表了block#
0000 0001 00 转换成10进制 4
00 0000 0000 0000 1000 0000 转换成10进制 128
则代表这个是4号数据文件的第128个数据块
当然,oracle也提供了工具让我们自己来进行查看
03:55:06 scott@prod> select dbms_utility.data_block_address_file(16777344) "file",
04:08:44 2 dbms_utility.data_block_address_block(16777344) "block" from dual;
file block
------------- -------------
4 128
然后从dba_extents视图中就能得到属于哪个object的
04:14:18 scott@prod> select segment_name,partition_name,segment_type,tablespace_name from dba_extents where file_id=4 and block_id=128;
SEGMENT_NA PARTITION_ SEGMENT_TY TABLESPACE
---------- ---------- ---------- ----------
DEPT TABLE USERS