Oracle DBMS UTILITY.MAKE DATA BLOCK ADDRESS

A data block address is the internal structure used to identify a block in the database. This function is useful when accessing certain fixed tables that contain data block addresses.

Can be used for investigate corruption of oracle internal structure for find actual data block address (DBA)

Check oracle segment for actual data block address
SQL> select segment_name,segment_type,header_file,header_block from dba_segments where segment_name like 'USR02' ;

SEGMENT_NAME                   SEGMEN HEADER_FILE HEADER_BLOCK
------------------------------ ------ ----------- ------------
USR02                           TABLE                 195075

SQL> select dbms_utility.make_data_block_address (5,195075) from dual;
dbms_utility.make_data_block_address (5,195075)
--------------------------------------------------------------
                                                                         21166595

## convert 21166595(DEC)=0x0142fa03(HEX)
## rdba: 0x0142fa03 (file 5, block 195075)



Check header_file and header_block for table USR02
SQL> -- check header_file for table USR02 [position of datafile equal file=6 or not]
SQL> select segment_name,segment_type,header_file,header_block from dba_segments where segment_name like 'USR02' ;



SEGMENT_NAME                   SEGMEN HEADER_FILE HEADER_BLOCK
------------------------------ ------ ----------- ------------
USR02                           TABLE            5       195075

0 comments:

Loading