Syed Saad Ali

Oracle ACE Pro

Oracle Solution Architect

Oracle E-Business Suite

Oracle Cloud Infrastructure

Oracle Fusion Middleware

Oracle Database Administration

Oracle Weblogic Administration

Syed Saad Ali

Oracle ACE Pro

Oracle Solution Architect

Oracle E-Business Suite

Oracle Cloud Infrastructure

Oracle Fusion Middleware

Oracle Database Administration

Oracle Weblogic Administration

Blog Post

Undo Related Queries Part 1

Undo Related Queries Part 1

To check Retention Guarantee for Undo Tablespace

SELECT tablespace_name,
status,
CONTENTS,
logging,
retention
FROM   dba_tablespaces
WHERE  tablespace_name LIKE ‘%UNDO%’;

 

To show ACTIVE/EXPIRED/UNEXPIRED Extents of Undo Tablespace

 

SELECT tablespace_name,
status,
Count(extent_id)                  “Extent Count”,
SUM(blocks)                       “Total Blocks”,
SUM(blocks) * 8 / ( 1024 * 1024 ) total_space
FROM   dba_undo_extents
GROUP  BY tablespace_name,
status;

 

Extent Count and Total Blocks

 

set linesize 152
col tablespace_name FOR a20
col status FOR a10
SELECT tablespace_name,
status,
Count(extent_id)                    “Extent Count”,
SUM(blocks)                         “Total Blocks”,
SUM(bytes) / ( 1024 * 1024 * 1024 ) spaceInGB
FROM   dba_undo_extents
WHERE  tablespace_name IN ( ‘&undotbsp’ )
GROUP  BY tablespace_name,
status;

 

To show UndoRetention Value

 

Show parameter undo_retention;

 

 

Undo retention in hours

col “Retention” FOR a30
col name FOR a30
col value FOR a50
SELECT name            “Retention”,
value / 60 / 60 “Hours”
FROM   v$parameter
WHERE  name LIKE ‘%undo_retention%’;

 

To check space related statistics of  UndoTablespace from stats$undostat of 90 days

SELECT undoblks,
begin_time,
maxquerylen,
unxpstealcnt,
expstealcnt,
nospaceerrcnt
FROM   stats$undostat
WHERE  begin_time BETWEEN SYSDATE  90 AND SYSDATE
AND unxpstealcnt > 0;

 

To check space related statistics of  UndoTablespace from v$undostat

select sum(ssolderrcnt) “Total ORA-1555s”, round(max(maxquerylen)/60/60) “Max Query HRS”, SUM(unxpstealcnt) “UNExpired STEALS”, SUM(expstealcnt) “Expired STEALS” FROM v$undostat ORDER BY begin_time;

 

Date wise occurrence of ORA-1555

SELECT To_char(begin_time, ‘mm/dd/yyyy hh24:mi’) “Int. Start”,
ssolderrcnt                               “ORA-1555s”,
maxquerylen                               “Max Query”,
unxpstealcnt                              “UNExp SCnt”,
unxpblkrelcnt                             “UnEXPblks”,
expstealcnt                               “Exp SCnt”,
expblkrelcnt                              “ExpBlks”,
nospaceerrcnt                             nospace
FROM   v$undostat
WHERE  ssolderrcnt > 0
ORDER  BY begin_time;

 

Total number of ORA-1555s since instance startup

SELECT ‘TOTAL # OF ORA-01555 SINCE INSTANCE STARTUP : ‘
|| To_char(startup_time, ‘DD-MON-YY HH24:MI:SS’)
FROM   v$instance;

 

To check for Active Transactions

set head ON
SELECT usn,
extents,
Round(rssize / 1048576) rssize,
hwmsize,
xacts,
waits,
optsize / 1048576       optsize,
shrinks,
wraps
FROM   v$rollstat
WHERE  xacts > 0
ORDER  BY rssize;

 

Undo Space Utilization by each Sessions

 

set lines 200
col sid FOR 99999
col username FOR a10
col name FOR a15
SELECT s.sid,
s.serial#,
username,
s.machine,
t.used_ublk,
t.used_urec,
rn.name,
( t.used_ublk * 8 ) / 1024 / 1024 SizeGB
FROM   v$transaction t,
v$session s,
v$rollstat rs,
v$rollname rn
WHERE  t.addr = s.taddr
AND rs.usn = rn.usn
AND rs.usn = t.xidusn
AND rs.xacts > 0;

 

List of long running queries since instance startup

set head OFF
SELECT ‘LIST OF LONG RUNNING – QUERY SINCE INSTANCE STARTUP’
FROM   dual;

set head ON
SELECT *
FROM   (SELECT To_char(begin_time, ‘DD-MON-YY hh24:mi:ss’) BEGIN_TIME,
Round(( maxquerylen / 3600 ), 1)            Hours
FROM   v$undostat
ORDER  BY maxquerylen DESC)
WHERE  ROWNUM < 11;

 

Undo Space used by all transactions

set lines 200
col sid FOR 99999
col username FOR a10
col name FOR a15
SELECT s.sid,
s.serial#,
username,
s.machine,
t.used_ublk,
t.used_urec,
rn.name,
( t.used_ublk * 8 ) / 1024 / 1024 SizeGB
FROM   v$transaction t,
v$session s,
v$rollstat rs,
v$rollname rn
WHERE  t.addr = s.taddr
AND rs.usn = rn.usn
AND rs.usn = t.xidusn
AND rs.xacts > 0;

 

 

 

 

Related Posts
Write a comment