Как найти строку таблицы, которую ждут сессии?

dbstalker, 14 сентября

Администратору иногда приходится наблюдать картину, когда несколько сессий висят в ожидании на одной таблице к одной строчке. Попробуем найти эту строчку.

SELECT row_wait_obj#, row_wait_file#, row_wait_block#, row_wait_row#
FROM v$session
WHERE row_wait_obj# IN (SELECT data_object_id FROM user_objects WHERE object_name = 'MY_TABLE');   

Результаты этой выборки используем в следующем запросе:

                        
SELECT *  FROM MY_TABLE
WHERE ROWID = DBMS_ROWID.rowid_create (1, row_wait_obj#, row_wait_file#11, row_wait_block#, row_wait_row#);

Вот так и получим нашу злополучную запись, которая держит в ожидании наши сессии.

А это к сведению:

function rowid_create(rowid_type IN number,
                        object_number IN number,
                        relative_fno IN number,
                        block_number IN number,
                        row_number IN number)
                        return rowid;


  -- rowid_in - ROWID to be interpreted
  -- rowid_type - type (restricted/extended)
  -- object_number - data object number (rowid_object_undefined for restricted)
  -- relative_fno - relative file number
  -- block_number - block number in this file
  -- file_number - file number in this block
  -- ts_type_in - type of tablespace which this row belongs to
  --              'BIGFILE' indicates Bigfile Tablespace
  --              'SMALLFILE' indicates Smallfile (traditional pre-10i) TS.
  --              NOTE: These two are the only allowed values for this param
  --

 

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

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



 

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

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

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

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


 
 

Бизнес форум

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

Расписание автобусов
18 июля, 3 ответа
Отдых в августе
17 июля, 4 ответа