Как узнать номер блока и файла данных для любой записи таблицы?

dbstalker, 14 сентября

Вот захотелось вам сделать dump блока, где находится ваша любимая запись. А как найти этот блок? Сделать это очень просто:

select rowid,dbms_rowid.rowid_block_number(rowid),dbms_rowid.rowid_relative_fno(rowid) from my_table where ...... ;

Используя полученные результаты, вот так сделаем дамп:

alter system dump datafile номер_файла block номер_блока;

4 комментария

Прокоментировать

Dmitry
18 сентября 2009 г. в 20:11

Интересно. А для записей IOT как определить те-же данные? там rowid не такой как в heap табице, из-за этого функции из dbms_rowid работать отказываются.

dbstalker
24 сентября 2009 г. в 09:52

Надеюсь, что ответ вы найдете в посте http://my-oracle.it-blogs.com.ua/post-408.aspx

viman
1 октября 2009 г. в 15:23

А можно ли наоборот - узнать какие записи(с какими rowid) реально существуют в блоке?

dbstalker
1 октября 2009 г. в 16:04

Вся информация, которую вам хочется знать , находится в самом rowid. Обратите внимание на его структуру. Она описана в посте http://my-oracle.it-blogs.com.ua/post-408.aspx :

6 bytes - data object number, the object number of the segment
3 bytes - data file number, the datafile in a tablespace.
6 bytes - block number
3 bytes - the row number

 

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

Я не спамер: введите суму 6+9



 

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

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

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

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


 
 

Бизнес форум

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

Телепрограмма
23 июня, 1 ответа
Турция
23 июня, 4 ответа
Выбор люстры
22 июня, 1 ответа