Bonjour tout le monde,
J'ai besoin de connaître précisément l'espace disque utilisé par une requête dans le TBS UNDO.
Je peux avoir l'espace du TBS UNDO avec la requête suivante mais ce n'est pas suffisant, il me manque la requête dans DBA_SEGMENTS.
Si je regarde les vues V$UNDOSTAT et V$SQL j'ai des choses sympa MAIS je n'arrive pas à trouver précisément ma requête car dans V$UNDOSTAT c'est la plus grosse requête sur une période de 10 minutes qui est enregistrée et pas TOUTES les requêtes SQL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT SUM(BYTES)/(1024*1024) AS "TAILLE EN MO USED" FROM DBA_SEGMENTS WHERE TABLESPACE_NAME = 'UNDOTBS'; TAILLE EN MO USED ----------------- 15529.0625 1 row selected.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select begin_time, end_time, undoblks, TXNCOUNT, sql_text from v$undostat u JOIN v$sql s ON (u.MAXQUERYID = s.SQL_ID) where rownum < 5 order by u.begin_time desc ; BEGIN_TIME END_TIME UNDOBLKS TXNCOUNT SQL_TEXT 03/29/2016 10:17:14 03/29/2016 10:22:05 574 10 641 select 1 from obj$ where name='DBA_QUEUE_SCHEDULES' 03/29/2016 10:07:14 03/29/2016 10:17:14 2 283 33 746 select 1 from obj$ where name='DBA_QUEUE_SCHEDULES'
Avec l'ordre SQL suivant j'arrive à avoir la taille du TBS UNDO occupée par une session mais à nouveau je n'arrive pas à isoler une requête précise.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 SELECT S.USERNAME AS "SESSION USERNAME", S.OSUSER AS "OS USERNAME", S.SCHEMANAME AS "SCHEMA", S.MACHINE AS "MACHINE", S.PROGRAM AS "PROGRAMME", (T.USED_UBLK * (select BLOCK_SIZE from dba_tablespaces where tablespace_name = 'UNDOTBS'))/(1024*1024) AS "Taille UNDOTBS used Mo" FROM V$SESSION S, V$TRANSACTION T WHERE S.SADDR = T.SES_ADDR ORDER BY "Taille UNDOTBS used Mo" DESC; SESSION USERNAME OS USERNAME SCHEMA MACHINE PROGRAMME Taille UNDOTBS used Mo ACCBATCH stisyse ACCBATCH condate db_bivc_acc_2s.exe@condate (TNS V1-V3) 0,1719 IR stisyse IR condate sqlplus@condate (TNS V1-V3) 0,0156 SYS oracle SYS ngcuatdb03 sqlplus@ngcuatdb03 (TNS V1-V3) 0,0078 UVM_BDR oraexplo UVM_BDR ngcuatdb03 oracle@ngcuatdb03 (J000) 0,0078 ACCBATCH stisyse ACCBATCH condate de_confirmation_acc_2s.exe@condate (TNS V1-V3) 0,0078 ACCBATCH stisyse ACCBATCH condate sqlplus@condate (TNS V1-V3) 0,0078
Donc si vous savez comment faire le lien entre une requête SQL et l'espace disque pris dans le TBS UNDO je vous en serai très reconnaissant.
Partager