Как зная Dba получить file# и block#?

dbstalker, 13 ноября

Предположим, что Вы знаете DBA для битого (сorrupted) блока. Именно адрес DBA нам выдает утилита DBVerify. Так как нам нужно найти объект, которому принадлежит этот блок, то нам нужно знать file# и block#, чтобы выпонив следующий запрос, найти объект:

select owner,segment_name,segment_type, EXTENT_ID, BLOCK_ID from dba_extents where file_id=file# and block# between  block_id and block_id+blocks-1;

Так как Data Block Address (DBA) идентифицирует блок базы данных, для работы с ним можно использовать функции dbms_utility.make_data_block_address, data_block_address_file, data_block_address_block. То с помощью запроса мы получим необходимые нам данные:

select dbms_utility.data_block_address_file([dba]) file#, dbms_utility.data_block_address_block([dba]) block# from dual;

Для RDBA:

select DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE( TO_NUMBER('&&rdba', 'XXXXXXXX') ) FILE#,
DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK( TO_NUMBER('&&rdba', 'XXXXXXXX') ) BLOCK#
from dual;

 

Новый комментарий

Я не спамер: введите суму 0+5



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум

Последние темы:

Нужен поставщик Дропшиппинг
10 декабря, 1 ответа
КИНО КАФЕ!!!!!!!!!!!!!!!!
10 декабря, 1 ответа