Еще немного запросов в копилку администратору. UNDO и иже с ним

dbstalker, 08 сентября

Три запроса для слежения за транзакциями, undo, сессиями.

Находим сессии с активными транзакциями

SELECT A.SID, A.USERNAME, B.XIDUSN, B.USED_UREC, B.USED_UBLK  
 FROM V$SESSION A, V$TRANSACTION B WHERE A.SADDR=B.SES_ADDR;

Какие sql-запросы выполняются в данный момент

select * from v$sqltext where sql_id in
(SELECT sql_id FROM V$SESSION A, V$TRANSACTION B WHERE A.SADDR=B.SES_ADDR) order by sql_id,piece;

Какие sql-запросы используют undo-пространство в заданное время:

Select * from v$sqltext where sql_id in  
(select maxqueryid from
(select maxqueryid from v$undostat where BEGIN_TIME >=to_date('08.09.2009','dd.mm.yyyy') and  END_TIME <=to_date('09.09.2009','dd.mm.yyyy'))
) order by sql_id,piece;

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

Какой undo - сегмент затронут транзакцией:

select t.status, start_time, segment_name, tablespace_name
from v$transaction t, dba_rollback_segs
where XIDUSN = segment_id

какие пользователи блокируют сегменты отката

select S.Username,S.Sid,S.Serial#,T.Start_time,T.Xidusn
  from V$Session S, V$TRANSACTION T, V$ROLLSTAT R
 where S.Saddr = T.Ses_addr 
   and T.Xidusn = R.Usn
   and ((R.Curext = T.Start_uext-1)
       or  
       ((R.Curext = R.Extents - 1) and (T.Start_uext = 0))
    ); 
или
SELECT
   a.usn,   a.name,   b.status,   c.tablespace_name,
   d.addr,   e.sid,   e.serial#,   e.username,   e.program,
   e.machine,   e.osuser
   FROM   v$rollname a,   v$rollstat b,   dba_rollback_segs c,   v$transaction d,
   v$session e   WHERE   a.usn=b.usn AND
   a.name=c.segment_name AND
   a.usn=d.xidusn AND
   d.addr=e.taddr AND
   b.status='PENDING OFFLINE';

На что уходят драгоценные МБ пространства отмены?

SELECT STATUS,TABLESPACE_NAME, SUM(BYTES)/1024/1024, COUNT(*) 
FROM DBA_UNDO_EXTENTS 
GROUP BY STATUS, TABLESPACE_NAME
  • ACTIVE – мегабайты занятые активными сессиями
  • EXPIRED – мегабайты, были использованы уже завершенными сессиями, и время хранения, установленное UNDO_RETENTION, уже истекло.
  • UNEXPIRED - мегабайты, были использованы уже завершенными сессиями, но время хранения, установленное UNDO_RETENTION, еще не истекло. Эти мегабайты будут использоваться, если не стоит RETENTION GUARANTEE, или не возможно расширить undo, не нельзя использовать offline undo-сегментs.

Замечание не по делу. Параметр undo_retention обычно устанавливают равным или больше , чем время выполнения самого длинного запроса

Успехов!

1 комментарий

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

Anonymous
8 сентября 2009 г. в 22:06

спасибо !

 

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

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



 

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

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

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

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


 
 

Бизнес форум

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

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