Search This Blog

Total Pageviews

Tuesday, 30 May 2023

awr ******

select to_char(s.startup_time,'dd Mon "at" HH24:mi:ss') instart_fmt
, di.dbid dbid
, di.instance_name inst_name
, di.db_name db_name
, s.snap_id snap_id
, to_char(s.end_interval_time,'dd Mon YYYY HH24:mi') snapdat
, s.snap_level lvl
from dba_hist_snapshot s
, dba_hist_database_instance di
where
di.dbid = s.dbid
and di.instance_number = s.instance_number
and di.startup_time = s.startup_time
order by db_name, instance_name, snap_id;


133 10 1月 at 11:52:29 697726329 mycim MYCIM 109716 10 8月 2022 10:00 1
132 10 1月 at 11:52:29 697726329 mycim MYCIM 109715 10 8月 2022 09:00 1


---- DB Name DB Id Instance Inst num Release RAC Host
SELECT DB_NAME,
&dbid,
INSTANCE_NAME,
&inst_num,
VERSION,
PARALLEL,
HOST_NAME
FROM DBA_HIST_DATABASE_INSTANCE DI, DBA_HIST_SNAPSHOT S
WHERE S.SNAP_ID = &beg_snap
AND S.DBID = &DBID
AND S.INSTANCE_NUMBER = &INST_NUM
AND DI.DBID = S.DBID
AND DI.INSTANCE_NUMBER = S.INSTANCE_NUMBER
AND DI.STARTUP_TIME = S.STARTUP_TIME;


---- Begin Snap: Snap Time
SELECT END_INTERVAL_TIME
FROM DBA_HIST_SNAPSHOT B
WHERE B.SNAP_ID = &beg_snap
AND B.DBID = &DBID
AND B.INSTANCE_NUMBER = &INST_NUM;


---- Begin Snap: Sessions
SELECT VALUE
FROM DBA_HIST_SYSSTAT
WHERE SNAP_ID = &beg_snap
AND DBID = &DBID
AND INSTANCE_NUMBER = &INST_NUM
AND STAT_NAME = 'logons current';


---- Begin Snap: Cursors/Session

select a.value cursors , b.value sessions,a.value/ b.value
from (SELECT VALUE
FROM DBA_HIST_SYSSTAT
WHERE SNAP_ID = &beg_snap
AND DBID = &DBID
AND INSTANCE_NUMBER = &INST_NUM
AND STAT_NAME = 'opened cursors current') a,
(SELECT VALUE
FROM DBA_HIST_SYSSTAT
WHERE SNAP_ID = &beg_snap
AND DBID = &DBID
AND INSTANCE_NUMBER = &INST_NUM
AND STAT_NAME = 'logons current') b;

---- end Snap: Snap Time

SELECT END_INTERVAL_TIME
FROM DBA_HIST_SNAPSHOT B
WHERE B.SNAP_ID = &end_snap
AND B.DBID = &DBID
AND B.INSTANCE_NUMBER = &INST_NUM;

---- end Snap: Sessions

SELECT VALUE
FROM DBA_HIST_SYSSTAT
WHERE SNAP_ID = &end_snap
AND DBID = &DBID
AND INSTANCE_NUMBER = &INST_NUM
AND STAT_NAME = 'logons current';

---- end Snap: Cursors/Session

select a.value / b.value
from (SELECT VALUE
FROM DBA_HIST_SYSSTAT
WHERE SNAP_ID = &beg_snap
AND DBID = &DBID
AND INSTANCE_NUMBER = &INST_NUM
AND STAT_NAME = 'opened cursors current') a,
(SELECT VALUE
FROM DBA_HIST_SYSSTAT
WHERE SNAP_ID = &end_snap
AND DBID = &DBID
AND INSTANCE_NUMBER = &INST_NUM
AND STAT_NAME = 'logons current') b;

---- Elapsed:

SELECT EXTRACT(DAY FROM E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 1440 +
EXTRACT(HOUR FROM E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +
EXTRACT(MINUTE FROM E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) +
EXTRACT(SECOND FROM E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)/60 ,
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME
FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E
WHERE B.SNAP_ID = &beg_snap
AND E.SNAP_ID = &end_snap
AND B.DBID = &DBID
AND E.DBID = &DBID
AND B.INSTANCE_NUMBER = &INST_NUM
AND E.INSTANCE_NUMBER = &INST_NUM
AND B.STARTUP_TIME = E.STARTUP_TIME
AND B.END_INTERVAL_TIME < E.END_INTERVAL_TIME;


---- DB Time:

SELECT (sum(e.value) - sum(b.value)) / 1000000/60
FROM DBA_HIST_SYS_TIME_MODEL e, DBA_HIST_SYS_TIME_MODEL b
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &DBID
AND e.INSTANCE_NUMBER = &INST_NUM
AND e.STAT_NAME = 'DB time'
and b.SNAP_ID = &beg_snap
AND b.DBID = &DBID
AND b.INSTANCE_NUMBER = &INST_NUM
AND b.STAT_NAME = 'DB time';


---- buffer cache: begin end

SELECT e.value/1024/1024, b.value/1024/1024
FROM DBA_HIST_PARAMETER e, DBA_HIST_PARAMETER b
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &DBID
AND e.INSTANCE_NUMBER = &INST_NUM
AND e.PARAMETER_NAME = '__db_cache_size'
and b.SNAP_ID = &beg_snap
AND b.DBID = &DBID
AND b.INSTANCE_NUMBER = &INST_NUM
AND b.PARAMETER_NAME = '__db_cache_size';

---- shared pool size: begin end

SELECT e.value / 1024 / 1024 ||'M', b.value / 1024 / 1024 ||'M'
FROM DBA_HIST_PARAMETER e, DBA_HIST_PARAMETER b
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &DBID
AND e.INSTANCE_NUMBER = &INST_NUM
AND e.PARAMETER_NAME = '__shared_pool_size'
and b.SNAP_ID = &beg_snap
AND b.DBID = &DBID
AND b.INSTANCE_NUMBER = &INST_NUM
AND b.PARAMETER_NAME = '__shared_pool_size';

---- std block size:

SELECT b.value /1024 ||'k'
FROM DBA_HIST_PARAMETER b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &DBID
AND b.INSTANCE_NUMBER = &INST_NUM
AND b.PARAMETER_NAME = 'db_block_size';

---- log buffer:

SELECT b.value /1024 ||'k'
FROM DBA_HIST_PARAMETER b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &DBID
AND b.INSTANCE_NUMBER = &INST_NUM
AND b.PARAMETER_NAME = 'log_buffer';

----redo size per second :

select round((SELECT sum(e.value) - sum(b.value)
FROM DBA_HIST_SYSSTAT e, DBA_HIST_SYSSTAT b
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &DBID
AND e.INSTANCE_NUMBER = &INST_NUM
AND e.STAT_NAME = 'redo size'
and b.SNAP_ID = &beg_snap
AND b.DBID = &DBID
AND b.INSTANCE_NUMBER = &INST_NUM
AND b.STAT_NAME = 'redo size')
/(SELECT EXTRACT(DAY FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *
86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -
B.END_INTERVAL_TIME) * 3600 +
EXTRACT(MINUTE FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +
EXTRACT(SECOND FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)
FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E
where e.snap_id = &end_snap
and b.snap_id = &beg_snap
AND b.DBID = &DBID
AND b.INSTANCE_NUMBER = &INST_NUM
AND e.DBID = &DBID
AND e.INSTANCE_NUMBER = &INST_NUM),
2)
from dual;

----redo size per transaction

select round(((SELECT sum(value)
FROM DBA_HIST_SYSSTAT e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &DBID
AND e.INSTANCE_NUMBER = &INST_NUM
AND e.STAT_NAME in ('redo size')) -
(SELECT sum(value)
FROM DBA_HIST_SYSSTAT b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &DBID
AND b.INSTANCE_NUMBER = &INST_NUM
AND b.STAT_NAME in ('redo size'))) /
((SELECT sum(value)
FROM DBA_HIST_SYSSTAT e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &DBID
AND e.INSTANCE_NUMBER = &INST_NUM
AND e.STAT_NAME in ('user rollbacks', 'user commits')) -
(SELECT sum(value)
FROM DBA_HIST_SYSSTAT b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &DBID
AND b.INSTANCE_NUMBER = &INST_NUM
AND b.STAT_NAME in ('user rollbacks', 'user commits'))),
2)
from dual;

---- Logical reads: per second


select round(((SELECT sum(value)
FROM DBA_HIST_SYSSTAT e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM
AND e.STAT_NAME in ('session logical reads')) -
(SELECT sum(value)
FROM DBA_HIST_SYSSTAT b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND b.STAT_NAME in ('session logical reads')))
/(SELECT EXTRACT(DAY FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *
86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -
B.END_INTERVAL_TIME) * 3600 +
EXTRACT(MINUTE FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +
EXTRACT(SECOND FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)
FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E
where e.snap_id = &end_snap
and b.snap_id = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM),
2)
from dual;

---- Logical reads: per transaction

select round(((SELECT sum(value)
FROM DBA_HIST_SYSSTAT e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM
AND e.STAT_NAME in ('redo size')) -
(SELECT sum(value)
FROM DBA_HIST_SYSSTAT b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND b.STAT_NAME in ('redo size')))
/((SELECT sum(value)
FROM DBA_HIST_SYSSTAT e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM
AND e.STAT_NAME in ('user rollbacks', 'user commits')) -
(SELECT sum(value)
FROM DBA_HIST_SYSSTAT b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND b.STAT_NAME in ('user rollbacks', 'user commits'))),
2)
from dual;

---- Block changes: per second

select round(((SELECT sum(value)
FROM DBA_HIST_SYSSTAT e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM
AND e.STAT_NAME in ('db block changes')) -
(SELECT sum(value)
FROM DBA_HIST_SYSSTAT b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND b.STAT_NAME in ('db block changes'))) /
(SELECT EXTRACT(DAY FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *
86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -
B.END_INTERVAL_TIME) * 3600 +
EXTRACT(MINUTE FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +
EXTRACT(SECOND FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)
FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E
where e.snap_id = &end_snap
and b.snap_id = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM),
2)

from dual;

---- Block changes: per transaction

select round(((SELECT sum(value)
FROM DBA_HIST_SYSSTAT e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM
AND e.STAT_NAME in ('db block changes')) -
(SELECT sum(value)
FROM DBA_HIST_SYSSTAT b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND b.STAT_NAME in ('db block changes'))) /
((SELECT sum(value)
FROM DBA_HIST_SYSSTAT e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM
AND e.STAT_NAME in ('user rollbacks', 'user commits')) -
(SELECT sum(value)
FROM DBA_HIST_SYSSTAT b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND b.STAT_NAME in ('user rollbacks', 'user commits'))),
2)
from dual;


---- Physical reads: per second
select round(((SELECT sum(value)
FROM DBA_HIST_SYSSTAT e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM
AND e.STAT_NAME in ('physical reads')) -
(SELECT sum(value)
FROM DBA_HIST_SYSSTAT b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND b.STAT_NAME in ('physical reads'))) /
(SELECT EXTRACT(DAY FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *
86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -
B.END_INTERVAL_TIME) * 3600 +
EXTRACT(MINUTE FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +
EXTRACT(SECOND FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)
FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E
where e.snap_id = &end_snap
and b.snap_id = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM),
2)
from dual;

---- Physical reads: per transaction

select round(((SELECT sum(value)
FROM DBA_HIST_SYSSTAT e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM
AND e.STAT_NAME in ('physical reads')) -
(SELECT sum(value)
FROM DBA_HIST_SYSSTAT b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND b.STAT_NAME in ('physical reads'))) /
((SELECT sum(value)
FROM DBA_HIST_SYSSTAT e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM
AND e.STAT_NAME in ('user rollbacks', 'user commits')) -
(SELECT sum(value)
FROM DBA_HIST_SYSSTAT b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND b.STAT_NAME in ('user rollbacks', 'user commits'))),
2)
from dual;

---- Physical writes: per second

select round(((SELECT sum(value)
FROM DBA_HIST_SYSSTAT e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM
AND e.STAT_NAME in ('physical writes')) -
(SELECT sum(value)
FROM DBA_HIST_SYSSTAT b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND b.STAT_NAME in ('physical writes'))) /
(SELECT EXTRACT(DAY FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *
86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -
B.END_INTERVAL_TIME) * 3600 +
EXTRACT(MINUTE FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +
EXTRACT(SECOND FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)
FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E
where e.snap_id = &end_snap
and b.snap_id = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM),
2)
from dual;

---- Physical writes: per transaction

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('physical writes')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('physical writes'))) /

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('user rollbacks', 'user commits')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('user rollbacks', 'user commits'))),

2)

from dual;

---- User calls: per second

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('user calls')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('user calls'))) /

(SELECT EXTRACT(DAY FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *

86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -

B.END_INTERVAL_TIME) * 3600 +

EXTRACT(MINUTE FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +

EXTRACT(SECOND FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)

FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E

where e.snap_id = &end_snap

and b.snap_id = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM),

2)

from dual;

---- User calls: per transaction

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('user calls')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('user calls'))) /

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('user rollbacks', 'user commits')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('user rollbacks', 'user commits'))),

2)

from dual;

---- Parses: per second

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('parse count (total)')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('parse count (total)'))) /

(SELECT EXTRACT(DAY FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *

86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -

B.END_INTERVAL_TIME) * 3600 +

EXTRACT(MINUTE FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +

EXTRACT(SECOND FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)

FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E

where e.snap_id = &end_snap

and b.snap_id = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM),

2)

from dual;

---- Parses: per transaction

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('parse count (total)')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('parse count (total)'))) /

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('user rollbacks', 'user commits')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('user rollbacks', 'user commits'))),

2)

from dual;

---- Hard parses: per second

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('parse count (hard)')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('parse count (hard)'))) /

(SELECT EXTRACT(DAY FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *

86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -

B.END_INTERVAL_TIME) * 3600 +

EXTRACT(MINUTE FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +

EXTRACT(SECOND FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)

FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E

where e.snap_id = &end_snap

and b.snap_id = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM),

2)

from dual;

---- Hard Parses: per transaction

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('parse count (hard)')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('parse count (hard)'))) /

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('user rollbacks', 'user commits')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('user rollbacks', 'user commits'))),

2)

from dual;

---- Sorts: per second

select round(((SELECT sum(value)
FROM DBA_HIST_SYSSTAT e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM
AND e.STAT_NAME in ('sorts (memory)')) - ---sorts (disk)
(SELECT sum(value)
FROM DBA_HIST_SYSSTAT b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND b.STAT_NAME in ('sorts (memory)'))) /
(SELECT EXTRACT(DAY FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *
86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -
B.END_INTERVAL_TIME) * 3600 +
EXTRACT(MINUTE FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +
EXTRACT(SECOND FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)
FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E
where e.snap_id = &end_snap
and b.snap_id = &beg_snap
AND b.DBID = &L_DBID
AND b.INSTANCE_NUMBER = &L_INST_NUM
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &L_INST_NUM),
2)
from dual;

---- Sorts: per transaction

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('sorts (memory)')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('sorts (memory)'))) /

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('user rollbacks', 'user commits')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('user rollbacks', 'user commits'))),

2)

from dual;

---- Logons: per second

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('logons cumulative')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('logons cumulative'))) /

(SELECT EXTRACT(DAY FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *

86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -

B.END_INTERVAL_TIME) * 3600 +

EXTRACT(MINUTE FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +

EXTRACT(SECOND FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)

FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E

where e.snap_id = &end_snap

and b.snap_id = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM),

2)

from dual;

---- Logons: per transaction

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('logons cumulative')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('logons cumulative'))) /

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('user rollbacks', 'user commits')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('user rollbacks', 'user commits'))),

2)

from dual;

---- Executes: per second

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('execute count')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('execute count'))) /

(SELECT EXTRACT(DAY FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *

86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -

B.END_INTERVAL_TIME) * 3600 +

EXTRACT(MINUTE FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +

EXTRACT(SECOND FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)

FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E

where e.snap_id = &end_snap

and b.snap_id = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM),

2)

from dual;

---- Executes: per transaction

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('execute count')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('execute count'))) /

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('user rollbacks', 'user commits')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('user rollbacks', 'user commits'))),

2)

from dual;

----Transactions: per second

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('user rollbacks', 'user commits')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('user rollbacks', 'user commits'))) /

(SELECT EXTRACT(DAY FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *

86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -

B.END_INTERVAL_TIME) * 3600 +

EXTRACT(MINUTE FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +

EXTRACT(SECOND FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)

FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E

where e.snap_id = &end_snap

and b.snap_id = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM),

2)

from dual;

























----% Blocks changed per Read:

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('db block changes')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('db block changes')))

/((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('session logical reads')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('session logical reads'))),

2)

from dual;


----% Blocks changed per Read:

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('recursive calls')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('recursive calls')))

/ ((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('recursive calls')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('recursive calls')) +

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('user calls')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('user calls'))),

2)

from dual;


---- Rollback per transaction %:

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('user rollbacks')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('user rollbacks')))

/ ((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('user rollbacks', 'user commits')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('user rollbacks', 'user commits'))),

2)

from dual;


----Rows per Sort:

select round(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('sorts (rows)')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('sorts (rows)'))) /

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('sorts (memory)')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('sorts (memory)')) +

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('sorts (disk)')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('sorts (disk)'))),

2)

from dual;


---- Buffer Nowait %:

select round(100 *

(1 - ((SELECT SUM(WAIT_COUNT)

FROM DBA_HIST_WAITSTAT

WHERE SNAP_ID = &end_snap

AND DBID = &L_DBID

AND INSTANCE_NUMBER = &L_INST_NUM) -

(SELECT SUM(WAIT_COUNT)

FROM DBA_HIST_WAITSTAT

WHERE SNAP_ID = &beg_snap

AND DBID = &L_DBID

AND INSTANCE_NUMBER = &L_INST_NUM)) /

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('session logical reads')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('session logical reads')))),

2)

from dual;


---- Redo NoWait %:

select round(100 *

(1 - ((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('redo log space requests')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('redo log space requests'))) /

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('redo entries')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('redo entries')))),

2)

from dual;


---- Buffer Hit %:

select round(100 *

(1 -

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('physical reads')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('physical reads')) -

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('physical reads direct')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('physical reads direct'))) -

nvl(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('physical reads direct (lob)')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('physical reads direct (lob)'))),

0)) /

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('session logical reads')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('session logical reads')))),

2)

from dual;


---- In-memory Sort %:

select round(100 * ((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('sorts (memory)')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('sorts (memory)'))) /

(((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('sorts (memory)')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('sorts (memory)'))) +

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME in ('sorts (disk)')) -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME in ('sorts (disk)')))),

2)

from dual;

---- Library Hit %

SELECT round(100 * (SUM(e.PINHITS) - sum(b.pinhits)) /

(SUM(e.PINS) - sum(b.pins)),

2)

FROM DBA_HIST_LIBRARYCACHE b, DBA_HIST_LIBRARYCACHE e

WHERE e.SNAP_ID = &end_SNAP

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

and b.SNAP_ID = &beg_SNAP

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

---- Soft Parse %:

select round(100 * (1 -

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME = 'parse count (hard)') -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME = 'parse count (hard)')) /

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME = 'parse count (total)') -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME = 'parse count (total)'))),

2)

from dual;

----Execute to Parse %:

select round(100 * (1 - ((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME = 'parse count (total)') -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME = 'parse count (total)')) /

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME = 'execute count') -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME = 'execute count'))),

2)

from dual;

----Latch Hit %:

SELECT round(100 * (1 - (SUM(e.MISSES) - sum(b.MISSES)) /

(SUM(e.GETS) - sum(b.GETS))),

2)

FROM DBA_HIST_LATCH b, DBA_HIST_LATCH e

WHERE e.SNAP_ID = &end_SNAP

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

and b.SNAP_ID = &beg_SNAP

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM;

----Parse CPU to Parse Elapsd %:

select round(100 * ((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME = 'parse time cpu') -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME = 'parse time cpu')) /

((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME = 'parse time elapsed') -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME = 'parse time elapsed')),

2)

from dual;

----% Non-Parse CPU:

select round(100 *

(1 - ((SELECT sum(value)

FROM DBA_HIST_SYSSTAT e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME = 'parse time cpu') -

(SELECT sum(value)

FROM DBA_HIST_SYSSTAT b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME = 'parse time cpu')) /

(((SELECT sum(value)

FROM DBA_HIST_SYS_TIME_MODEL e

WHERE e.SNAP_ID = &end_snap

AND e.DBID = &L_DBID

AND e.INSTANCE_NUMBER = &L_INST_NUM

AND e.STAT_NAME = 'DB CPU') -

(SELECT sum(value)

FROM DBA_HIST_SYS_TIME_MODEL b

WHERE b.SNAP_ID = &beg_snap

AND b.DBID = &L_DBID

AND b.INSTANCE_NUMBER = &L_INST_NUM

AND b.STAT_NAME = 'DB CPU')) 10000)),

2)

from dual;

---- Memory Usage %:begin

select round(100 *

(1 - (SELECT bytes

FROM DBA_HIST_SGASTAT

WHERE SNAP_ID = &beg_snap

AND DBID = &L_DBID

AND INSTANCE_NUMBER = &L_INST_NUM

AND NAME = 'free memory'

and pool IN ('shared pool', 'all pools')) /

(SELECT sum(value)

FROM DBA_HIST_PARAMETER

WHERE SNAP_ID = &beg_snap

AND DBID = &L_DBID

AND INSTANCE_NUMBER = &L_INST_NUM

AND PARAMETER_NAME = '__shared_pool_size')),

2)

from dual;


---shared pool
---- Memory Usage %:end

select round(100 *

(1 - (SELECT bytes

FROM DBA_HIST_SGASTAT

WHERE SNAP_ID = &end_snap

AND DBID = &L_DBID

AND INSTANCE_NUMBER = &L_INST_NUM

AND NAME = 'free memory'

and pool IN ('shared pool', 'all pools')) /

(SELECT sum(value)

FROM DBA_HIST_PARAMETER

WHERE SNAP_ID = &end_snap

AND DBID = &L_DBID

AND INSTANCE_NUMBER = &L_INST_NUM

AND PARAMETER_NAME = '__shared_pool_size')),

2)

from dual;

---- % SQL with executions>1:begin

SELECT DECODE(B.TOTAL_SQL, 0, 0, 100 * (1 - B.SINGLE_USE_SQL/ B.TOTAL_SQL))

FROM DBA_HIST_SQL_SUMMARY B

Where SNAP_ID = &begin_snap

AND DBID = &L_DBID

AND INSTANCE_NUMBER = &L_INST_NUM;

---- % SQL with executions>1:end

SELECT DECODE(e.TOTAL_SQL, 0, 0, 100 * (1 - e.SINGLE_USE_SQL / e.TOTAL_SQL))

FROM DBA_HIST_SQL_SUMMARY e

Where SNAP_ID = &end_snap

AND DBID = &L_DBID

AND INSTANCE_NUMBER = &L_INST_NUM;

---- % Memory for SQL w/exec>1:begin

SELECT DECODE(B.TOTAL_SQL_MEM,

0,

0,

100 * (1 - B.SINGLE_USE_SQL_MEM /B.TOTAL_SQL_MEM))

FROM DBA_HIST_SQL_SUMMARY B

Where SNAP_ID = &begin_snap

AND DBID = &L_DBID

AND INSTANCE_NUMBER = &L_INST_NUM;

---- % Memory for SQL w/exec>1:end

SELECT DECODE(e.TOTAL_SQL_MEM,

0,

0,

100 * (1 - e.SINGLE_USE_SQL_MEM / e.TOTAL_SQL_MEM))

FROM DBA_HIST_SQL_SUMMARY e

Where SNAP_ID = &end_snap

AND DBID = &L_DBID

AND INSTANCE_NUMBER = &L_INST_NUM;

---- Top 5 Timed Events:

SELECT EVENT,
WAITS,
TIME,
DECODE(WAITS,
NULL,
TO_NUMBER(NULL),
0,
TO_NUMBER(NULL),
TIME / WAITS * 1000) AVGWT,
PCTWTT,
WAIT_CLASS
FROM (SELECT EVENT, WAITS, TIME, PCTWTT, WAIT_CLASS
FROM (SELECT E.EVENT_NAME EVENT,
E.TOTAL_WAITS - NVL(B.TOTAL_WAITS, 0) WAITS,
(E.TIME_WAITED_MICRO - NVL(B.TIME_WAITED_MICRO, 0))
/1000000 TIME,
100 *
(E.TIME_WAITED_MICRO - NVL(B.TIME_WAITED_MICRO, 0)) /
((SELECT sum(value)
FROM DBA_HIST_SYS_TIME_MODEL e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &DBID
AND e.INSTANCE_NUMBER = &INST_NUM
AND e.STAT_NAME = 'DB time') -
(SELECT sum(value)
FROM DBA_HIST_SYS_TIME_MODEL b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &DBID
AND b.INSTANCE_NUMBER = &INST_NUM
AND b.STAT_NAME = 'DB time')) PCTWTT,
E.WAIT_CLASS WAIT_CLASS
FROM DBA_HIST_SYSTEM_EVENT B, DBA_HIST_SYSTEM_EVENT E
WHERE B.SNAP_ID(+) = &beg_snap
AND E.SNAP_ID = &end_snap
AND B.DBID(+) = &DBID
AND E.DBID = &DBID
AND B.INSTANCE_NUMBER(+) = &INST_NUM
AND E.INSTANCE_NUMBER = &INST_NUM
AND B.EVENT_ID(+) = E.EVENT_ID
AND E.TOTAL_WAITS > NVL(B.TOTAL_WAITS, 0)
AND E.WAIT_CLASS != 'Idle'
UNION ALL
SELECT 'CPU time' EVENT,
TO_NUMBER(NULL) WAITS,
((SELECT sum(value)
FROM DBA_HIST_SYS_TIME_MODEL e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &DBID
AND e.INSTANCE_NUMBER = &INST_NUM
AND e.STAT_NAME = 'DB CPU') -
(SELECT sum(value)
FROM DBA_HIST_SYS_TIME_MODEL b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &DBID
AND b.INSTANCE_NUMBER = &INST_NUM
AND b.STAT_NAME = 'DB CPU')) /1000000 TIME,
100 * ((SELECT sum(value)
FROM DBA_HIST_SYS_TIME_MODEL e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &DBID
AND e.INSTANCE_NUMBER = &INST_NUM
AND e.STAT_NAME = 'DB CPU') -
(SELECT sum(value)
FROM DBA_HIST_SYS_TIME_MODEL b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &DBID
AND b.INSTANCE_NUMBER = &INST_NUM
AND b.STAT_NAME = 'DB CPU'))
/((SELECT sum(value)
FROM DBA_HIST_SYS_TIME_MODEL e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &L_DBID
AND e.INSTANCE_NUMBER = &INST_NUM
AND e.STAT_NAME = 'DB time') -
(SELECT sum(value)
FROM DBA_HIST_SYS_TIME_MODEL b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &DBID
AND b.INSTANCE_NUMBER = &INST_NUM
AND b.STAT_NAME = 'DB time')) PCTWTT,
NULL WAIT_CLASS
from dual
WHERE ((SELECT sum(value)
FROM DBA_HIST_SYS_TIME_MODEL e
WHERE e.SNAP_ID = &end_snap
AND e.DBID = &DBID
AND e.INSTANCE_NUMBER = &INST_NUM
AND e.STAT_NAME = 'DB CPU') -
(SELECT sum(value)
FROM DBA_HIST_SYS_TIME_MODEL b
WHERE b.SNAP_ID = &beg_snap
AND b.DBID = &DBID
AND b.INSTANCE_NUMBER = &INST_NUM
AND b.STAT_NAME = 'DB CPU')) > 0)
ORDER BY TIME DESC, WAITS DESC)
WHERE ROWNUM <= 5;

---- Global Cache blocks received:per second

select round(((SELECT e.VALUE - b.value
FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e
WHERE B.SNAP_ID = &beg_snap
AND E.SNAP_ID = &end_snap
AND B.DBID = &DBID
AND E.DBID = &DBID
AND B.INSTANCE_NUMBER = &INST_NUM
AND E.INSTANCE_NUMBER = &INST_NUM
and e.STAT_NAME = 'gc cr blocks received'
and b.stat_name = 'gc cr blocks received') +
(SELECT e.VALUE - b.value
FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e
WHERE B.SNAP_ID = &beg_snap
AND E.SNAP_ID = &end_snap
AND B.DBID = &DBID
AND E.DBID = &DBID
AND B.INSTANCE_NUMBER = &INST_NUM
AND E.INSTANCE_NUMBER = &INST_NUM
and e.STAT_NAME = 'gc current blocks received'
and b.STAT_NAME = 'gc current blocks received'))
(SELECT EXTRACT(DAY FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *
86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -
B.END_INTERVAL_TIME) * 3600 +
EXTRACT(MINUTE FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +
EXTRACT(SECOND FROM
E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)
FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E
WHERE B.SNAP_ID = &beg_snap
AND E.SNAP_ID = &end_snap
AND B.DBID = &DBID
AND E.DBID = &DBID
AND B.INSTANCE_NUMBER = &INST_NUM
AND E.INSTANCE_NUMBER = &INST_NUM
AND B.STARTUP_TIME = E.STARTUP_TIME
AND B.END_INTERVAL_TIME < E.END_INTERVAL_TIME),
2)
from dual;

---- Global Cache blocks received:per transaction

select round(((SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc cr blocks received'

and b.stat_name = 'gc cr blocks received') +

(SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc current blocks received'

and b.STAT_NAME = 'gc current blocks received'))

(SELECT sum(e.value) - sum(b.value)

FROM DBA_HIST_SYSSTAT B, DBA_HIST_SYSSTAT E

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME in ('user rollbacks', 'user commits')

and b.STAT_NAME in ('user rollbacks', 'user commits')),

2)

from dual;


---- Global Cache blocks served:per second

select round(((SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc cr blocks served'

and b.stat_name = 'gc cr blocks served') +

(SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc current blocks served'

and b.STAT_NAME = 'gc current blocks served'))

(SELECT EXTRACT(DAY FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *

86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -

B.END_INTERVAL_TIME) * 3600 +

EXTRACT(MINUTE FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +

EXTRACT(SECOND FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)

FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

AND B.STARTUP_TIME = E.STARTUP_TIME

AND B.END_INTERVAL_TIME < E.END_INTERVAL_TIME),

2)

from dual;

---- Global Cache blocks served:per transaction

select round(((SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc cr blocks served'

and b.stat_name = 'gc cr blocks served') +

(SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc current blocks served'

and b.STAT_NAME = 'gc current blocks served')) /

(SELECT sum(e.value) - sum(b.value)

FROM DBA_HIST_SYSSTAT B, DBA_HIST_SYSSTAT E

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME in ('user rollbacks', 'user commits')

and b.STAT_NAME in ('user rollbacks', 'user commits')),

2)

from dual;

----GCS/GES messages received::per second

select round(((SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gcs msgs received'

and b.stat_name = 'gcs msgs received') +

(SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'ges msgs received'

and b.STAT_NAME = 'ges msgs received')) /

(SELECT EXTRACT(DAY FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *

86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -

B.END_INTERVAL_TIME) * 3600 +

EXTRACT(MINUTE FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +

EXTRACT(SECOND FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)

FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

AND B.STARTUP_TIME = E.STARTUP_TIME

AND B.END_INTERVAL_TIME < E.END_INTERVAL_TIME),

2)

from dual;

----GCS/GES messages received::per transaction

select round(((SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gcs msgs received'

and b.stat_name = 'gcs msgs received') +

(SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'ges msgs received'

and b.STAT_NAME = 'ges msgs received')) /

(SELECT sum(e.value) - sum(b.value)

FROM DBA_HIST_SYSSTAT B, DBA_HIST_SYSSTAT E

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME in ('user rollbacks', 'user commits')

and b.STAT_NAME in ('user rollbacks', 'user commits')),

2)

from dual;

----GCS/GES messages sent:per second

select round(((SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gcs messages sent'

and b.stat_name = 'gcs messages sent') +

(SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'ges messages sent'

and b.stat_name = 'ges messages sent ')) /

(SELECT EXTRACT(DAY FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *

86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -

B.END_INTERVAL_TIME) * 3600 +

EXTRACT(MINUTE FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +

EXTRACT(SECOND FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)

FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

AND B.STARTUP_TIME = E.STARTUP_TIME

AND B.END_INTERVAL_TIME < E.END_INTERVAL_TIME),

2)

from dual;

----GCS/GES messages sent:per transaction

select round(((SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gcs messages sent'

and b.stat_name = 'gcs messages sent') +

(SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'ges messages sent'

and b.stat_name = 'ges messages sent ')) /

(SELECT sum(e.value) - sum(b.value)

FROM DBA_HIST_SYSSTAT B, DBA_HIST_SYSSTAT E

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME in ('user rollbacks', 'user commits')

and b.STAT_NAME in ('user rollbacks', 'user commits')),

2)

from dual;

----DBWR Fusion writes:per second

select round((SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'DBWR fusion writes'

and b.stat_name = 'DBWR fusion writes') /

(SELECT EXTRACT(DAY FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *

86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -

B.END_INTERVAL_TIME) * 3600 +

EXTRACT(MINUTE FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +

EXTRACT(SECOND FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)

FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

AND B.STARTUP_TIME = E.STARTUP_TIME

AND B.END_INTERVAL_TIME < E.END_INTERVAL_TIME),

2)

from dual;

----DBWR Fusion writes:per transaction

select round((SELECT e.VALUE - b.value

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'DBWR fusion writes'

and b.stat_name = 'DBWR fusion writes') /

(SELECT sum(e.value) - sum(b.value)

FROM DBA_HIST_SYSSTAT B, DBA_HIST_SYSSTAT E

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME in ('user rollbacks', 'user commits')

and b.STAT_NAME in ('user rollbacks', 'user commits')),

2)

from dual;

---- Estd Interconnect traffic (KB)

select round(((SELECT VALUE

FROM DBA_HIST_PARAMETER

WHERE SNAP_ID = &beg_snap

AND DBID = &DBID

AND INSTANCE_NUMBER = &INST_NUM

AND PARAMETER_NAME = 'db_block_size') *

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME in

('gc cr blocks received', 'gc current blocks received',

'gc current blocks received',

'gc current blocks served')

and b.stat_name in

('gc cr blocks received', 'gc current blocks received',

'gc current blocks received',

'gc current blocks served')) +

200 *

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME in

('gcs msgs received', 'ges msgs received',

'gcs messages sent', 'ges messages sent')

and b.stat_name in

('gcs msgs received', 'ges msgs received',

'gcs messages sent', 'ges messages sent'))) / 1024 /

(SELECT EXTRACT(DAY FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *

86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME -

B.END_INTERVAL_TIME) * 3600 +

EXTRACT(MINUTE FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +

EXTRACT(SECOND FROM

E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)

FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

AND B.STARTUP_TIME = E.STARTUP_TIME

AND B.END_INTERVAL_TIME < E.END_INTERVAL_TIME),

2)

from dual;

---- Buffer access - local cache %:

select round(100 *

(1 - ((SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME in

('physical reads', 'gc cr blocks received',

'gc current blocks received')

and b.STAT_NAME in

('physical reads', 'gc cr blocks received',

'gc current blocks received')) -

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME in ('physical reads direct',

'physical reads direct (lob)')

and b.stat_name in ('physical reads direct',

'physical reads direct (lob)'))) /

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'session logical reads'

and b.stat_name = 'session logical reads')),

2)

from dual;

---- Buffer access - remote cache %:

select round(100 * ((SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME in ('gc cr blocks received',

'gc current blocks received')

and b.stat_name in ('gc cr blocks received',

'gc current blocks received')) /

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'session logical reads'

and b.stat_name = 'session logical reads')),

2)

from dual;

----Buffer access - disk %:

select round(100 * (((SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'physical reads'

and b.STAT_NAME = 'physical reads') -

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME in ('physical reads direct',

'physical reads direct (lob)')

and b.stat_name in ('physical reads direct',

'physical reads direct (lob)'))) /

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'session logical reads'

and b.stat_name = 'session logical reads')),

2)

from dual;

---- Avg global enqueue get time (ms):

select decode(v_2, 0, '', v_1 / v_2)

from (select 10 * (SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'global enqueue get time'

and e.STAT_NAME = 'global enqueue get time') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME in ('global enqueue gets async',

'global enqueue gets sync')

and b.stat_name in ('global enqueue gets async',

'global enqueue gets sync')) v_2

from dual);

---- Avg global cache cr block receive time (ms):

select decode(v_2, 0, '', v_1 / v_2)

from (select 10 * (SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc cr block receive time'

and e.STAT_NAME = 'gc cr block receive time') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc cr blocks received'

and b.stat_name = 'gc cr blocks received') v_2

from dual);

---- Avg global cache current block receive time (ms):

select decode(v_2, 0, '', v_1 / v_2)

from (select 10 *

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc current block receive time'

and e.STAT_NAME = 'gc current block receive time') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc current blocks received'

and b.stat_name = 'gc current blocks received') v_2

from dual);

---- Avg global cache cr block build time (ms):

select decode(v_2, 0, '', v_1 / v_2)

from (select 10 * (SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc cr block build time'

and e.STAT_NAME = 'gc cr block build time') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc cr blocks served'

and b.stat_name = 'gc cr blocks served') v_2

from dual);

---- Avg global cache cr block send time (ms):

select decode(v_2, 0, '', v_1 / v_2)

from (select 10 * (SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc cr block send time'

and e.STAT_NAME = 'gc cr block send time') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc cr blocks served'

and b.stat_name = 'gc cr blocks served') v_2

from dual);

---- Global cache log flushes for cr blocks served %:

select decode(v_2, 0, '', v_1 / v_2)

from (select 10 * (SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'cr_flushes'

and e.STAT_NAME = 'cr_flushes') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc cr blocks served'

and b.stat_name = 'gc cr blocks served') v_2

from dual);

---- Avg global cache cr block flush time (ms):

select decode(v_2, 0, '', v_1 / v_2)

from (select 10 * (SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc cr block flush time'

and e.STAT_NAME = 'gc cr block flush time') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'cr_flushes'

and b.stat_name = 'cr_flushes') v_2

from dual);

---- Avg global cache current block pin time (ms):

select decode(v_2, 0, '', v_1 / v_2)

from (select 10 * (SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc current block pin time'

and e.STAT_NAME = 'gc current block pin time') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc current blocks served'

and b.stat_name = 'gc current blocks served') v_2

from dual);

---- Avg global cache current block send time (ms):

select decode(v_2, 0, '', v_1 / v_2)

from (select 10 * (SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc current block send time'

and e.STAT_NAME = 'gc current block send time') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc current blocks served'

and b.stat_name = 'gc current blocks served') v_2

from dual);

---- Global cache log flushes for current blocks served %:

select decode(v_2, 0, '', v_1 / v_2)

from (select 10 *

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc current block flush time'

and e.STAT_NAME = 'gc current block flush time') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'current_flushes'

and b.stat_name = 'current_flushes') v_2

from dual);

---- Avg global cache current block flush time (ms):

select decode(v_2, 0, '', v_1 / v_2)

from (select 10 * (SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'current_flushes'

and e.STAT_NAME = 'current_flushes') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc current blocks served'

and b.stat_name = 'gc current blocks served') v_2

from dual);

---- Avg message sent queue time (ms):

select decode(v_2, 0, '', v_1 / v_2)

from (select (SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'msgs sent queue time (ms)'

and e.STAT_NAME = 'msgs sent queue time (ms)') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'msgs sent queued'

and b.stat_name = 'msgs sent queued') v_2

from dual);

---- Avg message sent queue time on ksxp (ms):

select decode(v_2, 0, '', v_1 / v_2)

from (select (SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'msgs sent queue time on ksxp (ms)'

and e.STAT_NAME = 'msgs sent queue time on ksxp (ms)') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'msgs sent queued on ksxp'

and b.stat_name = 'msgs sent queued on ksxp') v_2

from dual);

---- Avg message received queue time (ms):

select decode(v_2, 0, '', v_1 / v_2)

from (select (SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'msgs received queue time (ms)'

and e.STAT_NAME = 'msgs received queue time (ms)') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'msgs received queued'

and b.stat_name = 'msgs received queued') v_2

from dual);

---- Avg GCS message process time (ms):

select decode(v_2, 0, '', v_1 / v_2)

from (select (SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gcs msgs process time(ms)'

and e.STAT_NAME = 'gcs msgs process time(ms)') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gcs msgs received'

and b.stat_name = 'gcs msgs received') v_2

from dual);

---- Avg GES message process time (ms):

select decode(v_2, 0, '', v_1 / v_2)

from (select (SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'ges msgs process time(ms)'

and e.STAT_NAME = 'ges msgs process time(ms)') v_1,

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'ges msgs received'

and b.stat_name = 'ges msgs received') v_2

from dual);




----Enqueue Activity
select /*+ ordered */

substr(e.eq_type || ' - ' || to_char(nvl(l.name, ' ')) ||

decode(upper(e.req_reason),

' CONTENTION ',

null,

' - ',

null,

'(' || e.req_reason || ') '),

1,

78) ety,

e.total_req# - nvl(b.total_req#, 0) reqs,

e.succ_req# - nvl(b.succ_req#, 0) sreq,

e.failed_req# - nvl(b.failed_req#, 0) freq,

e.total_wait# - nvl(b.total_wait#, 0) waits,

(e.cum_wait_time - nvl(b.cum_wait_time, 0)) 1000 wttm,

decode((e.total_wait# - nvl(b.total_wait#, 0)),

0,

to_number(NULL),

((e.cum_wait_time - nvl(b.cum_wait_time, 0))

(e.total_wait# - nvl(b.total_wait#, 0)))) awttm

from dba_hist_enqueue_stat b, dba_hist_enqueue_stat e, v$lock_type l

where b.snap_id(+) = &beg_snap

and e.snap_id = &end_snap

and b.dbid(+) = &dbid

and e.dbid = &dbid

and b.dbid(+) = e.dbid

and b.instance_number(+) = &inst_num

and e.instance_number = &inst_num

and b.instance_number(+) = e.instance_number

and b.eq_type(+) = e.eq_type

and b.req_reason(+) = e.req_reason

and e.total_wait# - nvl(b.total_wait#, 0) > 0

and l.type(+) = e.eq_type

order by wttm desc, waits desc, e.eq_type;


----Undo Segment Summary
select undotsn,

sum(undoblks) 1000 undob,

sum(txncount) txcnt,

max(maxquerylen) maxq,

max(maxconcurrency) maxc,

min(tuned_undoretention) 60 || '/' ||

max(tuned_undoretention) 60 mintun,

sum(ssolderrcnt) || '/' || sum(nospaceerrcnt) snolno,

sum(unxpstealcnt) || '/' || sum(unxpblkrelcnt) || '/' ||

sum(unxpblkreucnt) || '/' || sum(expstealcnt) || '/' ||

sum(expblkrelcnt) || '/' || sum(expblkreucnt) blkst

from dba_hist_undostat

where dbid = &dbid

and instance_number = &inst_num

and end_time > (SELECT END_INTERVAL_TIME

FROM DBA_HIST_SNAPSHOT

WHERE SNAP_ID = &beg_snap

AND DBID = &DBID

AND INSTANCE_NUMBER = &INST_NUM)

and begin_time < (SELECT END_INTERVAL_TIME

FROM DBA_HIST_SNAPSHOT

WHERE SNAP_ID = &end_snap

AND DBID = &DBID

AND INSTANCE_NUMBER = &INST_NUM)

group by undotsn;


----Undo Segment Stats
select endt, undob, txcnt, maxq, maxc, mintun, snolno, blkst, undotsn

from (select undotsn,

to_char(end_time, 'DD-Mon HH24:MI') endt,

undoblks undob,

txncount txcnt,

maxquerylen maxq,

maxconcurrency maxc,

tuned_undoretention 60 mintun,

ssolderrcnt || '' '' || nospaceerrcnt snolno,

unxpstealcnt || '/' || unxpblkrelcnt || '/' || unxpblkreucnt || '/' ||

expstealcnt || '/' || expblkrelcnt || '/' || expblkreucnt blkst

from dba_hist_undostat

where dbid = &dbid

and instance_number = &inst_num

and end_time > (SELECT END_INTERVAL_TIME

FROM DBA_HIST_SNAPSHOT

WHERE SNAP_ID = &beg_snap

AND DBID = &DBID

AND INSTANCE_NUMBER = &INST_NUM)

and begin_time <

(SELECT END_INTERVAL_TIME

FROM DBA_HIST_SNAPSHOT

WHERE SNAP_ID = &end_snap

AND DBID = &DBID

AND INSTANCE_NUMBER = &INST_NUM)

order by begin_time desc)

where rownum < 35;


----Latch Activity
select b.latch_name name,

e.gets - b.gets gets,

to_number(decode(e.gets,

b.gets,

null,

(e.misses - b.misses) * 100 (e.gets - b.gets))) missed,

to_number(decode(e.misses,

b.misses,

null,

(e.sleeps - b.sleeps) (e.misses - b.misses))) sleeps,

(e.wait_time - b.wait_time) 1000000 wt,

e.immediate_gets - b.immediate_gets nowai,

to_number(decode(e.immediate_gets,

b.immediate_gets,

null,

(e.immediate_misses - b.immediate_misses) * 100

(e.immediate_gets - b.immediate_gets))) imiss

from dba_hist_latch b, dba_hist_latch e

where b.snap_id = &beg_snap

and e.snap_id = &end_snap

and b.dbid = &dbid

and e.dbid = &dbid

and b.instance_number = &inst_num

and e.instance_number = &inst_num

and b.latch_hash = e.latch_hash

and (e.gets - b.gets + e.immediate_gets - b.immediate_gets) > 0

order by b.latch_name;


----Latch Sleep Breakdown
select b.latch_name name,

e.gets - b.gets gets,

e.misses - b.misses misses,

e.sleeps - b.sleeps sleeps,

e.spin_gets - b.spin_gets spin_gets,

e.sleep1 - b.sleep1 sleep1,

e.sleep2 - b.sleep2 sleep2,

e.sleep3 - b.sleep3 sleep3

from dba_hist_latch b, dba_hist_latch e

where b.snap_id = &beg_snap

and e.snap_id = &end_snap

and b.dbid = &dbid

and e.dbid = &dbid

and b.instance_number = &inst_num

and e.instance_number = &inst_num

and b.latch_hash = e.latch_hash

and e.sleeps - b.sleeps > 0

order by misses desc, name;


----Latch Miss Sources
select e.parent_name parent,

e.where_in_code where_from,

e.nwfail_count - nvl(b.nwfail_count, 0) nwmisses,

e.sleep_count - nvl(b.sleep_count, 0) sleeps,

e.wtr_slp_count - nvl(b.wtr_slp_count, 0) waiter_sleeps

from dba_hist_latch_misses_summary b, dba_hist_latch_misses_summary e

where b.snap_id(+) = &beg_snap

and e.snap_id = &end_snap

and b.dbid(+) = &dbid

and e.dbid = &dbid

and b.dbid(+) = e.dbid

and b.instance_number(+) = &inst_num

and e.instance_number = &inst_num

and b.instance_number(+) = e.instance_number

and b.parent_name(+) = e.parent_name

and b.where_in_code(+) = e.where_in_code

and e.sleep_count > nvl(b.sleep_count, 0)

order by e.parent_name, sleeps desc, e.where_in_code;


----Parent Latch Statistics
select e.latch_name parent,

e.gets - b.gets gets,

e.misses - b.misses misses,

e.sleeps - b.sleeps sleeps,

to_char(e.spin_gets - b.spin_gets) || ' ' ||

to_char(e.sleep1 - b.sleep1) || ' ' ||

to_char(e.sleep2 - b.sleep2) || ' ' ||

to_char(e.sleep3 - b.sleep3) sleephist

from dba_hist_latch_parent b, dba_hist_latch_parent e

where b.snap_id = &beg_snap

and e.snap_id = &end_snap

and b.dbid = &dbid

and e.dbid = &dbid

and b.instance_number = &inst_num

and e.instance_number = &inst_num

and b.latch_hash = e.latch_hash

and e.sleeps - b.sleeps > 0

order by parent;


----Child Latch Statistics
select /*+ ordered use_hash(b) */

e.latch_name name,

e.child# child,

e.gets - b.gets gets,

e.misses - b.misses misses,

e.sleeps - b.sleeps sleeps,

to_char(e.spin_gets - b.spin_gets) || ' ' ||

to_char(e.sleep1 - b.sleep1) || ' ' || to_char(e.sleep2 - b.sleep2) ||

' ' || to_char(e.sleep3 - b.sleep3) sleephist

from dba_hist_latch_children e, dba_hist_latch_children b

where b.snap_id = &beg_snap

and e.snap_id = &eid

and b.dbid = &dbid

and e.dbid = &dbid

and b.instance_number = &inst_num

and e.instance_number = &inst_num

and b.latch_hash = e.latch_hash

and b.child# = e.child#

and e.sleeps - b.sleeps > 0

and (e.sleeps - b.sleeps)

decode(e.gets - b.gets, 0, 1, e.gets - b.gets) > .00001

order by name, gets desc;


----Segments by Logical Reads
select owner,

tablespace_name,

object_name,

subobject_name,

object_type,

logical_reads,

ratio

from (select n.owner,

n.tablespace_name,

n.object_name,

case

when length(n.subobject_name) < 11 then

n.subobject_name

else

substr(n.subobject_name, length(n.subobject_name) - 9)

end subobject_name,

n.object_type,

r.logical_reads,

decode((SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'session logical reads'

and b.stat_name = 'session logical reads'),

0,

to_number(null),

100 * logical_reads

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'session logical reads'

and b.stat_name = 'session logical reads')) ratio

from dba_hist_seg_stat_obj n,

(select dataobj#,

obj#,

dbid,

sum(logical_reads_delta) logical_reads

from dba_hist_seg_stat

where &beg_snap < snap_id

and snap_id <= &end_snap

and dbid = &dbid

and instance_number = &inst_num

group by dataobj#, obj#, dbid) r

where n.dataobj# = r.dataobj#

and n.obj# = r.obj#

and n.dbid = r.dbid

and r.logical_reads > 0

order by r.logical_reads desc, object_name, owner, subobject_name)

where rownum <= 5;


----Segments by Physical Reads
select owner, tablespace_name, object_name, subobject_name, object_type, physical_reads, ratio from (select n.owner, n.tablespace_name, n.object_name, case when length(n.subobject_name) < 11 then n.subobject_name else substr(n.subobject_name, length(n.subobject_name) - 9) end subobject_name, n.object_type, r.physical_reads, decode((SELECT sum(e.VALUE) - sum(b.value) FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e WHERE B.SNAP_ID = &beg_snap AND E.SNAP_ID = &end_snap AND B.DBID = &DBID AND E.DBID = &DBID AND B.INSTANCE_NUMBER = &INST_NUM AND E.INSTANCE_NUMBER = &INST_NUM and e.STAT_NAME = 'physical reads' and b.STAT_NAME = 'physical reads'), 0, to_number(null), 100 * r.physical_reads (SELECT sum(e.VALUE) - sum(b.value) FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e WHERE B.SNAP_ID = &beg_snap AND E.SNAP_ID = &end_snap AND B.DBID = &DBID AND E.DBID = &DBID AND B.INSTANCE_NUMBER = &INST_NUM AND E.INSTANCE_NUMBER = &INST_NUM and e.STAT_NAME = 'physical reads' and b.STAT_NAME = 'physical reads')) ratio from dba_hist_seg_stat_obj n, (select dataobj#, obj#, dbid, sum(physical_reads_delta) physical_reads from dba_hist_seg_stat where &beg_snap < snap_id and snap_id <= &end_snap and dbid = &dbid and instance_number = &inst_num group by dataobj#, obj#, dbid) r where n.dataobj# = r.dataobj# and n.obj# = r.obj# and n.dbid = r.dbid and r.physical_reads > 0 order by r.physical_reads desc, object_name, owner, subobject_name) where rownum <= 5;


----Segments by Row Lock Waits
select owner,

tablespace_name,

object_name,

subobject_name,

object_type,

row_lock_waits,

ratio

from (select n.owner,

n.tablespace_name,

n.object_name,

case

when length(n.subobject_name) < 11 then

n.subobject_name

else

substr(n.subobject_name, length(n.subobject_name) - 9)

end subobject_name,

n.object_type,

r.row_lock_waits,

round(r.ratio * 100, 2) ratio

from dba_hist_seg_stat_obj n,

(select dataobj#,

obj#,

dbid,

sum(row_lock_waits_delta) row_lock_waits,

ratio_to_report(sum(row_lock_waits_delta)) over() ratio

from dba_hist_seg_stat

where &beg_snap < snap_id

and snap_id <= &end_snap

and dbid = &dbid

and instance_number = &inst_num

group by dataobj#, obj#, dbid) r

where n.dataobj# = r.dataobj#

and n.obj# = r.obj#

and n.dbid = r.dbid

and r.row_lock_waits > 0

order by r.row_lock_waits desc, object_name, owner, subobject_name)

where rownum <= 5;


----Segments by ITL Waits
select owner,

tablespace_name,

object_name,

subobject_name,

object_type,

itl_waits,

ratio

from (select n.owner,

n.tablespace_name,

n.object_name,

case

when length(n.subobject_name) < 11 then

n.subobject_name

else

substr(n.subobject_name, length(n.subobject_name) - 9)

end subobject_name,

n.object_type,

r.itl_waits,

round(r.ratio * 100, 2) ratio

from dba_hist_seg_stat_obj n,

(select dataobj#,

obj#,

dbid,

sum(itl_waits_delta) itl_waits,

ratio_to_report(sum(itl_waits_delta)) over() ratio

from dba_hist_seg_stat

where &beg_snap < snap_id

and snap_id <= &end_snap

and dbid = &dbid

and instance_number = &inst_num

group by dataobj#, obj#, dbid) r

where n.dataobj# = r.dataobj#

and n.obj# = r.obj#

and n.dbid = r.dbid

and r.itl_waits > 0

order by r.itl_waits desc, object_name, owner, subobject_name)

where rownum <= 5;


----Segments by Buffer Busy Waits
select owner,

tablespace_name,

object_name,

subobject_name,

object_type,

buffer_busy_waits,

ratio

from (select n.owner,

n.tablespace_name,

n.object_name,

case

when length(n.subobject_name) < 11 then

n.subobject_name

else

substr(n.subobject_name, length(n.subobject_name) - 9)

end subobject_name,

n.object_type,

r.buffer_busy_waits,

round(r.ratio * 100, 2) ratio

from dba_hist_seg_stat_obj n,

(select dataobj#,

obj#,

dbid,

sum(buffer_busy_waits_delta) buffer_busy_waits,

ratio_to_report(sum(buffer_busy_waits_delta)) over() ratio

from dba_hist_seg_stat

where &beg_snap < snap_id

and snap_id <= &end_snap

and dbid = &dbid

and instance_number = &inst_num

group by dataobj#, obj#, dbid) r

where n.dataobj# = r.dataobj#

and n.obj# = r.obj#

and n.dbid = r.dbid

and r.buffer_busy_waits > 0

order by r.buffer_busy_waits desc,

object_name,

owner,

subobject_name)

where rownum <= 5;


----Segments by Global Cache Buffer Busy
select owner,

tablespace_name,

object_name,

subobject_name,

object_type,

gc_buffer_busy,

ratio

from (select n.owner,

n.tablespace_name,

n.object_name,

case

when length(n.subobject_name) < 11 then

n.subobject_name

else

substr(n.subobject_name, length(n.subobject_name) - 9)

end subobject_name,

n.object_type,

r.gc_buffer_busy,

round(r.ratio * 100, 2) ratio

from dba_hist_seg_stat_obj n,

(select dataobj#,

obj#,

dbid,

sum(gc_buffer_busy_delta) gc_buffer_busy,

ratio_to_report(sum(gc_buffer_busy_delta)) over() ratio

from dba_hist_seg_stat

where &beg_snap < snap_id

and snap_id <= &end_snap

and dbid = &dbid

and instance_number = &inst_num

group by dataobj#, obj#, dbid) r

where n.dataobj# = r.dataobj#

and n.obj# = r.obj#

and n.dbid = r.dbid

and r.gc_buffer_busy > 0

order by r.gc_buffer_busy desc, object_name, owner, subobject_name)

where rownum <= 5;


----Segments by CR Blocks Received
select owner,

tablespace_name,

object_name,

subobject_name,

object_type,

cr_blocks_received,

ratio

from (select n.owner,

n.tablespace_name,

n.object_name,

case

when length(n.subobject_name) < 11 then

n.subobject_name

else

substr(n.subobject_name, length(n.subobject_name) - 9)

end subobject_name,

n.object_type,

r.cr_blocks_received,

decode((SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc cr blocks received'

and b.stat_name = 'gc cr blocks received'),

0,

to_number(null),

100 * cr_blocks_received /

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc cr blocks received'

and b.stat_name = 'gc cr blocks received')) ratio

from dba_hist_seg_stat_obj n,

(select dataobj#,

obj#,

dbid,

sum(gc_cr_blocks_received_delta) cr_blocks_received

from dba_hist_seg_stat

where &beg_snap < snap_id

and snap_id <= &end_snap

and dbid = &dbid

and instance_number = &inst_num

group by dataobj#, obj#, dbid) r

where n.dataobj# = r.dataobj#

and n.obj# = r.obj#

and n.dbid = r.dbid

and r.cr_blocks_received > 0

order by r.cr_blocks_received desc,

object_name,

owner,

subobject_name)

where rownum <= 5;


----Segments by Current Blocks Received
select owner,

tablespace_name,

object_name,

subobject_name,

object_type,

cu_blocks_received,

ratio

from (select n.owner,

n.tablespace_name,

n.object_name,

case

when length(n.subobject_name) < 11 then

n.subobject_name

else

substr(n.subobject_name, length(n.subobject_name) - 9)

end subobject_name,

n.object_type,

r.cu_blocks_received,

decode((SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc current blocks received'

and b.stat_name = 'gc current blocks received'),

0,

to_number(null),

100 * cu_blocks_received /

(SELECT sum(e.VALUE) - sum(b.value)

FROM DBA_HIST_SYSSTAT b, DBA_HIST_SYSSTAT e

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME = 'gc current blocks received'

and b.stat_name = 'gc current blocks received')) ratio

from dba_hist_seg_stat_obj n,

(select dataobj#,

obj#,

dbid,

sum(gc_cu_blocks_received_delta) cu_blocks_received

from dba_hist_seg_stat

where &beg_snap < snap_id

and snap_id <= &end_snap

and dbid = &dbid

and instance_number = &inst_num

group by dataobj#, obj#, dbid) r

where n.dataobj# = r.dataobj#

and n.obj# = r.obj#

and n.dbid = r.dbid

and r.cu_blocks_received > 0

order by r.cu_blocks_received desc,

object_name,

owner,

subobject_name)

where rownum <= 5;


----Dictionary Cache Stats
select lower(b.parameter) param,

e.gets - b.gets gets,

to_number(decode(e.gets,

b.gets,

null,

(e.getmisses - b.getmisses) * 100 /

(e.gets - b.gets))) getm,

e.scans - b.scans scans,

to_number(decode(e.scans,

b.scans,

null,

(e.scanmisses - b.scanmisses) * 100 /

(e.scans - b.scans))) scanm,

e.modifications - b.modifications mods,

e.usage usage

from dba_hist_rowcache_summary b, dba_hist_rowcache_summary e

where b.snap_id = &beg_snap

and e.snap_id = &end_snap

and b.dbid = &dbid

and e.dbid = &dbid

and b.instance_number = &inst_num

and e.instance_number = &inst_num

and b.parameter = e.parameter

and e.gets - b.gets > 0

order by param;


----Dictionary Cache Stats (RAC)
select lower(b.parameter) param,

e.dlm_requests - b.dlm_requests dreq,

e.dlm_conflicts - b.dlm_conflicts dcon,

e.dlm_releases - b.dlm_releases drel

from dba_hist_rowcache_summary b, dba_hist_rowcache_summary e

where b.snap_id = &beg_snap

and e.snap_id = &end_snap

and b.dbid = &dbid

and e.dbid = &dbid

and b.instance_number = &inst_num

and e.instance_number = &inst_num

and b.parameter = e.parameter

and e.dlm_requests - b.dlm_requests > 0

order by param;


----Library Cache Activity
select b.namespace,

e.gets - b.gets gets,

to_number(decode(e.gets,

b.gets,

null,

100 -

(e.gethits - b.gethits) * 100 / (e.gets - b.gets))) getm,

e.pins - b.pins pins,

to_number(decode(e.pins,

b.pins,

null,

100 -

(e.pinhits - b.pinhits) * 100 / (e.pins - b.pins))) pinm,

e.reloads - b.reloads reloads,

e.invalidations - b.invalidations inv

from dba_hist_librarycache b, dba_hist_librarycache e

where b.snap_id = &beg_snap

and e.snap_id = &end_snap

and b.dbid = &dbid

and e.dbid = &dbid

and b.instance_number = &inst_num

and e.instance_number = &inst_num

and b.namespace = e.namespace

and e.gets - b.gets > 0;


----Library Cache Activity (RAC)
select b.namespace,

e.dlm_lock_requests - b.dlm_lock_requests dlreq,

e.dlm_pin_requests - b.dlm_pin_requests dpreq,

e.dlm_pin_releases - b.dlm_pin_releases dprel,

e.dlm_invalidation_requests - b.dlm_invalidation_requests direq,

e.dlm_invalidations - b.dlm_invalidations dinv

from dba_hist_librarycache b, dba_hist_librarycache e

where b.snap_id = &beg_snap

and e.snap_id = &end_snap

and b.dbid = &dbid

and e.dbid = &dbid

and b.instance_number = &inst_num

and e.instance_number = &inst_num

and b.namespace = e.namespace

and e.dlm_lock_requests - b.dlm_lock_requests > 0;


----Process Memory Summary
select decode(snap_id, &beg_snap, 'B', &end_snap, 'E') b_or_e,

category,

allocated_total / 1024 / 1024,

used_total / 1024 / 1024,

allocated_avg / 1024 / 1024,

allocated_stddev / 1024 / 1024,

allocated_max / 1024 / 1024,

max_allocated_max / 1024 / 1024,

num_processes,

non_zero_allocs

from dba_hist_process_mem_summary

where dbid = &dbid

and instance_number = &inst_num

and snap_id in (&beg_snap, &end_snap)

order by snap_id, allocated_total desc;


----SGA Memory Summary
select s1.name,

s1.value,

decode(s2.value,

s1.value,

NULL,

to_char(s2.value, '99,999,999,999,990'))

from dba_hist_sga s1, dba_hist_sga s2

where s1.snap_id = &beg_snap

and s2.snap_id = &end_snap

and s1.dbid = &dbid

and s2.dbid = &dbid

and s1.instance_number = &inst_num

and s2.instance_number = &inst_num

and s1.name = s2.name

order by name;


----SGA breakdown difference
select replace(pool, 'pool', '') pool, name, snap1, snap2, diff

from (select nvl(e.pool, b.pool) pool,

nvl(e.name, b.name) name,

b.bytes / 1024 / 1024 snap1,

e.bytes / 1024 / 1024 snap2,

decode(b.bytes,

NULL,

to_number(NULL),

100 * (nvl(e.bytes, 0) - b.bytes) / b.bytes) diff

from (select *

from dba_hist_sgastat

where snap_id = &beg_snap

and dbid = &dbid

and instance_number = &inst_num) b

full outer join (select *

from dba_hist_sgastat

where snap_id = &end_snap

and dbid = &dbid

and instance_number = &inst_num) e on b.name =

e.name

and nvl(b.pool,

'a') =

nvl(e.pool,

'a')

order by nvl(e.bytes, b.bytes))

order by pool, name;


----Rule Set
select e.owner || '.' || e.name rulesetname,

e.evaluations - nvl(b.evaluations, 0) evaluations,

e.sql_free_evaluations - nvl(b.sql_free_evaluations, 0),

e.sql_executions - nvl(b.sql_executions, 0),

e.cpu_time - nvl(b.cpu_time, 0),

e.elapsed_time - nvl(b.elapsed_time, 0)

from dba_hist_rule_set b, dba_hist_rule_set e

where b.snap_id(+) = &beg_snap

and e.snap_id = &end_snap

and e.dbid = &dbid

and b.dbid(+) = e.dbid

and e.instance_number = &inst_num

and b.instance_number(+) = e.instance_number

and b.owner(+) = e.owner

and b.name(+) = e.name

and b.startup_time(+) = e.startup_time

order by evaluations desc;


----Resource Limit Stats
select resource_name rname,

current_utilization curu,

max_utilization maxu,

initial_allocation inita,

limit_value lim

from dba_hist_resource_limit

where snap_id = &end_snap

and dbid = &dbid

and instance_number = &inst_num

and (nvl(current_utilization, 0) / limit_value > .8 or

nvl(max_utilization, 0) / limit_value > .8)

order by rname;


----init.ora Parameters
select e.parameter_name name,

b.value bval,

decode(b.value, e.value, NULL, e.value) eval

from dba_hist_parameter b, dba_hist_parameter e

where b.snap_id(+) = &beg_snap

and e.snap_id = &end_snap

and b.dbid(+) = &dbid

and e.dbid = &dbid

and b.instance_number(+) = &inst_num

and e.instance_number = &inst_num

and b.parameter_hash(+) = e.parameter_hash

and (nvl(b.isdefault, 'X') = 'FALSE' or

nvl(b.ismodified, 'X') != 'FALSE' or e.ismodified != 'FALSE' or

nvl(e.value, 0) != nvl(b.value, 0))

and e.parameter_name not like '\_\_%' escape '\'

order by e.parameter_name;


----Global Enqueue Statistics
select b.name st,

e.value - b.value dif,

round(e.value - b.value) /

(SELECT EXTRACT(DAY FROM E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) *

86400 +

EXTRACT(HOUR FROM E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 3600 +

EXTRACT(MINUTE FROM E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 60 +

EXTRACT(SECOND FROM E.END_INTERVAL_TIME - B.END_INTERVAL_TIME)

FROM DBA_HIST_SNAPSHOT B, DBA_HIST_SNAPSHOT E

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

AND B.STARTUP_TIME = E.STARTUP_TIME

AND B.END_INTERVAL_TIME < E.END_INTERVAL_TIME) ps,

round(e.value - b.value) /

(SELECT sum(e.value) - sum(b.value)

FROM DBA_HIST_SYSSTAT B, DBA_HIST_SYSSTAT E

WHERE B.SNAP_ID = &beg_snap

AND E.SNAP_ID = &end_snap

AND B.DBID = &DBID

AND E.DBID = &DBID

AND B.INSTANCE_NUMBER = &INST_NUM

AND E.INSTANCE_NUMBER = &INST_NUM

and e.STAT_NAME in ('user rollbacks', 'user commits')

and b.STAT_NAME in ('user rollbacks', 'user commits')) pt

from dba_hist_dlm_misc b, dba_hist_dlm_misc e

where b.snap_id = &beg_snap

and e.snap_id = &end_snap

and b.instance_number = &inst_num

and e.instance_number = &inst_num

and b.dbid = &dbid

and e.dbid = &dbid

and e.statistic# = b.statistic#

order by b.name;


----Global Cache Transfer Stats
select inst,

class,

crtotal,

100 * decode(crtotal, 0, to_number(null), crblk / crtotal),

100 * decode(crtotal, 0, to_number(null), crbusy / crtotal),

100 * decode(crtotal, 0, to_number(null), crcong / crtotal),

cutotal,

100 * decode(cutotal, 0, to_number(null), cublk / cutotal),

100 * decode(cutotal, 0, to_number(null), cubusy / cutotal),

100 * decode(cutotal, 0, to_number(null), cucong / cutotal)

from (select e.instance inst,

e.class class,

e.cr_block - nvl(b.cr_block, 0) crblk,

e.cr_busy - nvl(b.cr_busy, 0) crbusy,

e.cr_congested - nvl(b.cr_congested, 0) crcong,

(e.cr_block - nvl(b.cr_block, 0) + e.cr_busy -

nvl(b.cr_busy, 0) + e.cr_congested - nvl(b.cr_congested, 0)) crtotal,

e.current_block - nvl(b.current_block, 0) cublk,

e.current_busy - nvl(b.current_busy, 0) cubusy,

e.current_congested - nvl(b.current_congested, 0) cucong,

(e.current_block - nvl(b.current_block, 0) + e.current_busy -

nvl(b.current_busy, 0) + e.current_congested -

nvl(b.current_congested, 0)) cutotal

from dba_hist_inst_cache_transfer b,

dba_hist_inst_cache_transfer e

where b.snap_id(+) = &beg_snap

and e.snap_id = &end_snap

and b.instance_number(+) = &inst_num

and e.instance_number = &inst_num

and b.dbid(+) = &dbid

and e.dbid = &dbid

and b.class(+) = e.class

and b.instance(+) = e.instance

and (e.cr_block + e.current_block + e.cr_busy + e.current_busy +

e.cr_congested + e.current_congested) -

(nvl(b.cr_block, 0) + nvl(b.current_block, 0) +

nvl(b.cr_busy, 0) + nvl(b.cr_congested, 0) +

nvl(b.current_busy, 0) + nvl(b.current_congested, 0)) > 0)

order by crtotal + cutotal desc, class;

Thursday, 11 May 2023

Awr Trends!!!!!!

Oracle Awr Trends 





define hours=12
column f_hours new_value v_hours
select &hours f_hours from dual;
column f_secs new_value v_secs
column f_samples new_value samples
select 3600 f_secs from dual;
select &v_secs f_samples from dual;
--select &seconds f_secs from dual;
column f_bars new_value v_bars
select 5 f_bars from dual;
column aas format 999.99
column f_graph new_value v_graph
select 30 f_graph from dual;
column graph format a30
column total format 99999
column npts format 99999
col waits for 999999999
col cpu for 999999999


set pagesize 400 linesize 500
/*
      dba_hist_active_sess_history
*/
select
        to_char(to_date(tday||' '||tmod*&v_secs,'YYMMDD SSSSS'),'DD-MON  HH24:MI:SS') tm,
        samples npts,
        total/&samples aas,
        substr(
        substr(substr(rpad('+',round((cpu*&v_bars)/&samples),'+') ||
        rpad('-',round((waits*&v_bars)/&samples),'-')  ||
        rpad(' ',p.value * &v_bars,' '),0,(p.value * &v_bars)) ||
        p.value  ||
        substr(rpad('+',round((cpu*&v_bars)/&samples),'+') ||
        rpad('-',round((waits*&v_bars)/&samples),'-')  ||
        rpad(' ',p.value * &v_bars,' '),(p.value * &v_bars),10) ,0,30)
        ,0,&v_graph)
        graph,
        -- total,
        cpu,
        waits
from (
   select
       to_char(sample_time,'YYMMDD')                   tday
     , trunc(to_char(sample_time,'SSSSS')/&v_secs) tmod
     , sum(decode(session_state,'ON CPU',1,decode(session_type,'BACKGROUND',0,1)))  total
     , (max(sample_id) - min(sample_id) + 1 )      samples
     , sum(decode(session_state,'ON CPU' ,1,0))    cpu
     , sum(decode(session_type,'BACKGROUND',0,decode(session_state,'WAITING',1,0))) waits
       /* for waits I want to subtract out the BACKGROUND
          but for CPU I want to count everyon */
   from
      gv$active_session_history
   where sample_time > sysdate - &v_hours/24
   group by  trunc(to_char(sample_time,'SSSSS')/&v_secs),
             to_char(sample_time,'YYMMDD')
union all
   select
       to_char(sample_time,'YYMMDD')                   tday
     , trunc(to_char(sample_time,'SSSSS')/&v_secs) tmod
     , sum(decode(session_state,'ON CPU',10,decode(session_type,'BACKGROUND',0,10)))  total
     , (max(sample_id) - min(sample_id) + 1 )      samples
     , sum(decode(session_state,'ON CPU' ,10,0))    cpu
     , sum(decode(session_type,'BACKGROUND',0,decode(session_state,'WAITING',10,0))) waits
       /* for waits I want to subtract out the BACKGROUND
          but for CPU I want to count everyon */
   from
      dba_hist_active_sess_history
   where sample_time > sysdate - &v_hours/24
   and sample_time < (select min(sample_time) from v$active_session_history)
   group by  trunc(to_char(sample_time,'SSSSS')/&v_secs),
             to_char(sample_time,'YYMMDD')
) ash,
  v$parameter p
where p.name='cpu_count'
order by to_date(tday||' '||tmod*&v_secs,'YYMMDD SSSSS')
;




TM                          NPTS     AAS GRAPH                                 CPU      WAITS
------------------------- ------ ------- ------------------------------ ---------- ----------
10-MAY  23:00:00             531    2.84 ++++----------                       2980       7240
11-MAY  00:00:00            3581   11.46 +++++++++++++++++++++++++-----      18320      22940
11-MAY  01:00:00            3581    3.77 ++++++++-----------                  5540       8030
11-MAY  02:00:00            3581    2.87 +++++++++------                      6140       4180
11-MAY  03:00:00            3591    3.51 +++++++++---------                   6290       6360
11-MAY  04:00:00            3581   20.04 ++++++++++++++++++++++++++++++      35660      36480
11-MAY  05:00:00            3581  303.96 ++++++++++++++++++++++++++++++      21310    1072960
11-MAY  06:00:00            3571  479.73 ++++++++++++++++++++++++++++--      20480    1706550
11-MAY  07:00:00             671   66.68 +++++-------------------------       3290     236750
11-MAY  07:00:00            2913  284.21 ++++++++++++++++--------------      11813    1011355
11-MAY  08:00:00            3593    4.17 +++++++++++++--------                9032       5981
11-MAY  09:00:00            3594    4.24 +++++++++++++--------                9178       6077
11-MAY  10:00:00            3593    3.59 ++++++++++++------                   8531       4396
11-MAY  11:00:00            3056    3.44 ++++++++++-------                    7152       5242

14 rows selected.


awr_event_trends.sql

from 
https://github.com/abdulirfan3/Oracle_SQL_Scripts/blob/master/awr_event_trends.sql

-- ttitle off
clear breaks computes


break on wait_class on report
prompt
prompt Some useful database wait-events upon which to search:
col wait_class format a20 heading "Wait Class"
col name format a60 heading "Name"
select  chr(9)||wait_class, name name
from    v$event_name
order by wait_class, name;



define V_NBR_DAYS=1
define V_EVENTNAME='direct path write'

set echo off feedback off timing off pagesize 500 linesize 160
set trimout on trimspool on verify off
col sort0 noprint
col day format a6 heading "Day"
col hr format a6 heading "Hour"
col event_name format a30 heading "Event Name"
col total_waits format 999,990 heading "Total|Waits (m)"
col time_waited format 999,990.00 heading "Secs|Waited"
col tot_wts format 990.00 heading "% Total|Waits"
col tot_pct format 990.00 heading "% Secs|Waited"
col avg_wait format 990.00 heading "Avg|hSecs|Per|Wait"
col avg_pct format 990.00 heading "% Avg|hSecs|Per|Wait"
col wt_graph format a18 heading "Graphical view|of % total|waits overall"
col tot_graph format a18 heading "Graphical view|of % total|secs waited overall"
col avg_graph format a18 heading "Graphical view|of % avg hSecs|per wait overall"


set linesize 500 pagesize 400
col EVENT_NAME for a27 
col WT_GRAPH for a20
col TOT_GRAPH for a20
col AVG_GRAPH for a20


col spoolname new_value V_SPOOLNAME noprint
col instance_name new_value V_INST_NAME noprint
col instance_number new_value V_INST_NBR noprint
col dbid new_value V_DBID noprint
select  replace(replace(replace(lower('&&V_EVENTNAME'),' ','_'),'(',''),')','') spoolname,
        i.instance_name,
	i.instance_number,
	d.dbid
from    v$instance i,
	v$database d;

--spool awr_evtrends_&&V_INST_NAME._&&V_SPOOLNAME

clear breaks computes
ttitle center 'Trends for waits on "&&V_EVENTNAME" over the past &&V_NBR_DAYS days' skip line
col total_waits format 999,990.00 heading "Waits (m)"
prompt
select  event_name,
	total_waits/1000000 total_waits,
        (ratio_to_report(total_waits) over ()*100) tot_wts,
        rpad('*', round((ratio_to_report(total_waits) over ()*100)/6, 0), '*') wt_graph,
        time_waited,
        (ratio_to_report(time_waited) over ()*100) tot_pct,
        rpad('*', round((ratio_to_report(time_waited) over ()*100)/6, 0), '*') tot_graph,
        avg_wait*100 avg_wait,
        (ratio_to_report(avg_wait) over ()*100) avg_pct,
        rpad('*', round((ratio_to_report(avg_wait) over ()*100)/6, 0), '*') avg_graph
from    (select event_name,
		sum(total_waits) total_waits,
                sum(time_waited)/1000000 time_waited,
                decode(sum(total_waits),0,0,(sum(time_waited)/sum(total_waits))/1000000) avg_wait
         from   (select s.event_name,
			s.snap_id,
                        nvl(decode(greatest(s.time_waited_micro,
                                            lag(s.time_waited_micro,1,0)
                                                    over (partition by  s.dbid,
                                                                        s.instance_number
                                                          order by s.snap_id)),
                                   s.time_waited_micro,
                                   s.time_waited_micro - lag(s.time_waited_micro)
                                                             over (partition by s.dbid,
                                                                                s.instance_number
                                                                   order by s.snap_id),
                                          s.time_waited_micro), 0) time_waited,
                        nvl(decode(greatest(s.total_waits,
                                            lag(s.total_waits,1,0)
                                                    over (partition by  s.dbid,
                                                                        s.instance_number
                                                          order by s.snap_id)),
                                   s.total_waits,
                                   s.total_waits - lag(s.total_waits)
                                                             over (partition by s.dbid,
                                                                                s.instance_number
                                                                   order by s.snap_id),
                                          s.total_waits), 0) total_waits
                 from   dba_hist_system_event                   s,
                        dba_hist_snapshot                       ss
                 where  s.event_name like '%'||'&&V_EVENTNAME'||'%'
		 and	s.instance_number = &&V_INST_NBR
		-- and	s.dbid = &&V_DBID
                 and    ss.snap_id = s.snap_id
                 and    ss.dbid = s.dbid
                 and    ss.instance_number = s.instance_number
		 and	ss.begin_interval_time >= trunc(sysdate) - &&V_NBR_DAYS)
         group by event_name)
order by time_waited desc;

   



clear breaks computes
break on report
compute avg of total_waits on report
compute avg of time_waited on report
compute avg of avg_wait on report
ttitle center 'Daily trends for waits on "&&V_EVENTNAME" over the past &&V_NBR_DAYS days' skip line
col total_waits format 999,990.00 heading "Waits (m)"
prompt
select  sort_day || trim(to_char(999999999999999-time_waited,'000000000000000')) sort0,
        day,
	event_name,
        total_waits/1000000 total_waits,
        (ratio_to_report(total_waits) over ()*100) tot_wts,
        rpad('*', round((ratio_to_report(total_waits) over ()*100)/6, 0), '*') wt_graph,
        time_waited,
        (ratio_to_report(time_waited) over ()*100) tot_pct,
        rpad('*', round((ratio_to_report(time_waited) over ()*100)/6, 0), '*') tot_graph,
        avg_wait*100 avg_wait,
        (ratio_to_report(avg_wait) over ()*100) avg_pct,
        rpad('*', round((ratio_to_report(avg_wait) over ()*100)/6, 0), '*') avg_graph
from    (select sort_day,
                day,
		event_name,
                sum(total_waits) total_waits,
                sum(time_waited)/1000000 time_waited,
                decode(sum(total_waits),0,0,(sum(time_waited)/sum(total_waits))/1000000) avg_wait
         from   (select to_char(ss.begin_interval_time, 'YYYYMMDD') sort_day,
                        to_char(ss.begin_interval_time, 'DD-MON') day,
			s.event_name,
                        s.snap_id,
                        nvl(decode(greatest(s.time_waited_micro,
                                            lag(s.time_waited_micro,1,0)
                                                    over (partition by  s.dbid,
                                                                        s.instance_number
                                                          order by s.snap_id)),
                                   s.time_waited_micro,
                                   s.time_waited_micro - lag(s.time_waited_micro)
                                                             over (partition by s.dbid,
                                                                                s.instance_number
                                                                   order by s.snap_id),
                                          s.time_waited_micro), 0) time_waited,
                        nvl(decode(greatest(s.total_waits,
                                            lag(s.total_waits,1,0)
                                                    over (partition by  s.dbid,
                                                                        s.instance_number
                                                          order by s.snap_id)),
                                   s.total_waits,
                                   s.total_waits - lag(s.total_waits)
                                                             over (partition by s.dbid,
                                                                                s.instance_number
                                                                   order by s.snap_id),
                                          s.total_waits), 0) total_waits
                 from   dba_hist_system_event                   s,
                        dba_hist_snapshot                       ss
                 where  s.event_name like '%'||'&&V_EVENTNAME'||'%'
		 and	s.instance_number = &&V_INST_NBR
		-- and	s.dbid = &&V_DBID
                 and    ss.snap_id = s.snap_id
                 and    ss.dbid = s.dbid
                 and    ss.instance_number = s.instance_number
		 and	ss.begin_interval_time >= trunc(sysdate) - &&V_NBR_DAYS)
         group by sort_day,
                  day,
		  event_name)
order by sort0;






clear breaks computes
ttitle center 'Hourly trends for waits on "&&V_EVENTNAME" over the past &&V_NBR_DAYS days' skip line
col total_waits format 9,990.00 heading "Waits (m)"
break on day skip 1 on hr on report
compute avg of total_waits on report
compute avg of time_waited on report
compute avg of avg_wait on report
prompt
select  sort_hr || trim(to_char(999999999999999-time_waited,'000000000000000')) sort0,
        day,
        hr,
	event_name,
        total_waits/1000000 total_waits,
        (ratio_to_report(total_waits) over (partition by day)*100) tot_wts,
        rpad('*', round((ratio_to_report(total_waits) over (partition by day)*100)/4, 0), '*') wt_graph,
        time_waited,
        (ratio_to_report(time_waited) over (partition by day)*100) tot_pct,
        rpad('*', round((ratio_to_report(time_waited) over (partition by day)*100)/4, 0), '*') tot_graph,
        avg_wait*100 avg_wait,
        (ratio_to_report(avg_wait) over (partition by day)*100) avg_pct,
        rpad('*', round((ratio_to_report(avg_wait) over (partition by day)*100)/4, 0), '*') avg_graph
from    (select sort_hr,
                day,
                hr,
		event_name,
                sum(total_waits) total_waits,
                sum(time_waited)/1000000 time_waited,
                decode(sum(total_waits),0,0,(sum(time_waited)/sum(total_waits))/1000000) avg_wait
         from   (select to_char(ss.begin_interval_time, 'YYYYMMDDHH24') sort_hr,
                        to_char(ss.begin_interval_time, 'DD-MON') day,
                        to_char(ss.begin_interval_time, 'HH24')||':00' hr,
			s.event_name,
                        s.snap_id,
                        nvl(decode(greatest(s.time_waited_micro,
                                   lag(s.time_waited_micro,1,0)
                                           over (partition by   s.dbid,
                                                                s.instance_number
                                                 order by s.snap_id)),
                                   s.time_waited_micro,
                                   s.time_waited_micro - lag(s.time_waited_micro)
                                                             over (partition by s.dbid,
                                                                                s.instance_number
                                                                   order by s.snap_id),
                                          s.time_waited_micro), 0) time_waited,
                        nvl(decode(greatest(s.total_waits,
                                   lag(s.total_waits,1,0)
                                           over (partition by   s.dbid,
                                                                s.instance_number
                                                 order by s.snap_id)),
                                   s.total_waits,
                                   s.total_waits - lag(s.total_waits)
                                                             over (partition by s.dbid,
                                                                                s.instance_number
                                                                   order by s.snap_id),
                                          s.total_waits), 0) total_waits
                 from   dba_hist_system_event                   s,
                        dba_hist_snapshot                       ss
                 where  s.event_name like '%'||'&&V_EVENTNAME'||'%'
		 and	s.instance_number = &&V_INST_NBR
		-- and	s.dbid = &&V_DBID
                 and    ss.snap_id = s.snap_id
                 and    ss.dbid = s.dbid
                 and    ss.instance_number = s.instance_number
		 and	ss.begin_interval_time >= trunc(sysdate) - &&V_NBR_DAYS)
         group by sort_hr,
                  day,
                  hr,
		  event_name)
order by sort0;




ttitle off
col avg_snap_frequency new_value V_AVG_SNAP_FREQUENCY noprint
select	decode(greatest(count(*), &&V_NBR_DAYS * 4), &&V_NBR_DAYS * 4, 'HOURLY', 'MULTIPLE TIMES/HOUR') avg_snap_frequency
from	(select count(*) cnt
	 from   dba_hist_snapshot
	 where  begin_interval_time >= trunc(sysdate) - &&V_NBR_DAYS
	 and    dbid = &&V_DBID
	 and    instance_number = &&V_INST_NBR
	 group by trunc(begin_interval_time, 'HH24')
	 having count(*) > 1);





clear breaks computes
ttitle center 'Snapshot-by-snapshot trends for waits on "&&V_EVENTNAME" over the past &&V_NBR_DAYS days' skip line
col total_waits format 9,990.00 heading "Waits (m)"
REM break on day skip 1 on hr on report
REM compute avg of total_waits on report
REM compute avg of time_waited on report
REM compute avg of avg_wait on report
select  sort_snap || trim(to_char(999999999999999-time_waited,'000000000000000')) sort0,
        day,
        tm,
	event_name,
        total_waits/1000000 total_waits,
        (ratio_to_report(total_waits) over (partition by day)*100) tot_wts,
        rpad('*', round((ratio_to_report(total_waits) over (partition by day)*100)/4, 0), '*') wt_graph,
        time_waited,
        (ratio_to_report(time_waited) over (partition by day)*100) tot_pct,
        rpad('*', round((ratio_to_report(time_waited) over (partition by day)*100)/4, 0), '*') tot_graph,
        avg_wait*100 avg_wait,
        (ratio_to_report(avg_wait) over (partition by day)*100) avg_pct,
        rpad('*', round((ratio_to_report(avg_wait) over (partition by day)*100)/4, 0), '*') avg_graph
from    (select sort_snap,
                day,
                tm,
		event_name,
                total_waits total_waits,
                time_waited/1000000 time_waited,
                decode(total_waits,0,0,((time_waited/total_waits)/1000000)) avg_wait
         from   (select to_char(ss.begin_interval_time, 'YYYYMMDDHH24MI') sort_snap,
                        to_char(ss.begin_interval_time, 'DD-MON') day,
                        to_char(ss.begin_interval_time, 'HH24:MI') tm,
			s.event_name,
                        s.snap_id,
                        nvl(decode(greatest(s.time_waited_micro,
                                   lag(s.time_waited_micro,1,0)
                                           over (partition by   s.dbid,
                                                                s.instance_number
                                                 order by s.snap_id)),
                                   s.time_waited_micro,
                                   s.time_waited_micro - lag(s.time_waited_micro)
                                                             over (partition by s.dbid,
                                                                                s.instance_number
                                                                   order by s.snap_id),
                                          s.time_waited_micro), 0) time_waited,
                        nvl(decode(greatest(s.total_waits,
                                   lag(s.total_waits,1,0)
                                           over (partition by   s.dbid,
                                                                s.instance_number
                                                 order by s.snap_id)),
                                   s.total_waits,
                                   s.total_waits - lag(s.total_waits)
                                                             over (partition by s.dbid,
                                                                                s.instance_number
                                                                   order by s.snap_id),
                                          s.total_waits), 0) total_waits
                 from   dba_hist_system_event                   s,
                        dba_hist_snapshot                       ss
                 where  '&&V_AVG_SNAP_FREQUENCY' <> 'HOURLY'
		 and	s.event_name like '%'||'&&V_EVENTNAME'||'%'
		 and	s.instance_number = &&V_INST_NBR
		 and	s.dbid = &&V_DBID
                 and    ss.snap_id = s.snap_id
                 and    ss.dbid = s.dbid
                 and    ss.instance_number = s.instance_number
		 and	ss.begin_interval_time >= trunc(sysdate) - &&V_NBR_DAYS))
order by sort0;

clear breaks computes

set lines 120
set verify off
undefine SQL_ID
accept SQL_ID char prompt 'Enter SQL ID: '
column "Cost" format 999,999,999
column "Module" format a15
column "Schema" format a15
column "Buffer Gets" format 999,999,999
column "Elapsed Time" format 999,999,999
column "Snapshot Time" format a30

SELECT   optimizer_cost "Cost",
         module "Module",
         parsing_schema_name "Schema",
         buffer_gets_total "Buffer Gets",
         elapsed_time_delta "Elapsed Time",
         end_interval_time "Snapshot Time"
FROM     dba_hist_sqlstat st, dba_hist_snapshot ss
WHERE    st.SQL_ID = '&SQL_ID' AND ss.snap_id = st.snap_id
ORDER BY "Snapshot Time" DESC
/


Thursday, 4 May 2023

dbms_xplan.display_awr


dbms_xplan.display_awr..


from !!

SQL> desc dbms_xplan

FUNCTION DISPLAY_AWR RETURNS DBMS_XPLAN_TYPE_TABLE
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 SQL_ID                         VARCHAR2                IN
 PLAN_HASH_VALUE                NUMBER(38)              IN     DEFAULT
 DB_ID                          NUMBER(38)              IN     DEFAULT
 FORMAT                         VARCHAR2                IN     DEFAULT
 CON_ID                         NUMBER(38)              IN     DEFAULT
 AWR_LOCATION                   VARCHAR2                IN     DEFAULT




 
select distinct sql_id,plan_hash_value from dba_hist_sql_plan 
-- where 1=1
;


SQL_ID        PLAN_HASH_VALUE
------------- ---------------
afcswub17n34t      1774461949
62yyzw3309d6a      2667441017
6y55dxn24t86q      2904063496
4m5tr50dg6xmc      2772656747



set linesize 120
 col PLAN_TABLE_OUTPUT for a120
select * from table(dbms_xplan.display_awr(SQL_ID=>'afcswub17n34t',format=>'ALLSTATS LAST +cost +bytes'));
 
 

set linesize 120
col PLAN_TABLE_OUTPUT for a120
select * from table(dbms_xplan.display_awr(SQL_ID=>'afcswub17n34t',PLAN_HASH_VALUE=>1774461949,format=>'ALLSTATS LAST +cost +bytes'));
 
 

set linesize 120
col PLAN_TABLE_OUTPUT for a120
select * from table(dbms_xplan.display_awr(SQL_ID=>'afcswub17n34t',PLAN_HASH_VALUE=>1774461949,format=>'ALLSTATS LAST +outline'));
 

 set linesize 120
 col PLAN_TABLE_OUTPUT for a120
select * from table(dbms_xplan.display_awr(SQL_ID=>'afcswub17n34t',PLAN_HASH_VALUE=>1774461949,format=>'ALLSTATS LAST +cost +bytes +PARALLEL +PARTITION +IOSTATS +outline +PEEKED_BINDS'));
 
 
 
 
 

Wednesday, 26 April 2023

Load Profile in AWR reports

Load Profile in AWR reports
=====

col short_name  format a20              heading 'Load Profile'
col per_sec     format 999,999,999.9    heading 'Per Second'
col per_tx      format 999,999,999.9    heading 'Per Transaction'
set colsep '   '
 
select lpad(short_name, 20, ' ') short_name
     , per_sec
     , per_tx from
    (select short_name
          , max(decode(typ, 1, value)) per_sec
          , max(decode(typ, 2, value)) per_tx
          , max(m_rank) m_rank 
       from
        (select /*+ use_hash(s) */
                m.short_name
              , s.value * coeff value
              , typ
              , m_rank
           from v$sysmetric s,
               (select 'Database Time Per Sec'                      metric_name, 'DB Time' short_name, .01 coeff, 1 typ, 1 m_rank from dual union all
                select 'CPU Usage Per Sec'                          metric_name, 'DB CPU' short_name, .01 coeff, 1 typ, 2 m_rank from dual union all
                select 'Redo Generated Per Sec'                     metric_name, 'Redo size' short_name, 1 coeff, 1 typ, 3 m_rank from dual union all
                select 'Logical Reads Per Sec'                      metric_name, 'Logical reads' short_name, 1 coeff, 1 typ, 4 m_rank from dual union all
                select 'DB Block Changes Per Sec'                   metric_name, 'Block changes' short_name, 1 coeff, 1 typ, 5 m_rank from dual union all
                select 'Physical Reads Per Sec'                     metric_name, 'Physical reads' short_name, 1 coeff, 1 typ, 6 m_rank from dual union all
                select 'Physical Writes Per Sec'                    metric_name, 'Physical writes' short_name, 1 coeff, 1 typ, 7 m_rank from dual union all
                select 'User Calls Per Sec'                         metric_name, 'User calls' short_name, 1 coeff, 1 typ, 8 m_rank from dual union all
                select 'Total Parse Count Per Sec'                  metric_name, 'Parses' short_name, 1 coeff, 1 typ, 9 m_rank from dual union all
                select 'Hard Parse Count Per Sec'                   metric_name, 'Hard Parses' short_name, 1 coeff, 1 typ, 10 m_rank from dual union all
                select 'Logons Per Sec'                             metric_name, 'Logons' short_name, 1 coeff, 1 typ, 11 m_rank from dual union all
                select 'Executions Per Sec'                         metric_name, 'Executes' short_name, 1 coeff, 1 typ, 12 m_rank from dual union all
                select 'User Rollbacks Per Sec'                     metric_name, 'Rollbacks' short_name, 1 coeff, 1 typ, 13 m_rank from dual union all
                select 'User Transaction Per Sec'                   metric_name, 'Transactions' short_name, 1 coeff, 1 typ, 14 m_rank from dual union all
                select 'User Rollback UndoRec Applied Per Sec'      metric_name, 'Applied urec' short_name, 1 coeff, 1 typ, 15 m_rank from dual union all
                select 'Redo Generated Per Txn'                     metric_name, 'Redo size' short_name, 1 coeff, 2 typ, 3 m_rank from dual union all
                select 'Logical Reads Per Txn'                      metric_name, 'Logical reads' short_name, 1 coeff, 2 typ, 4 m_rank from dual union all
                select 'DB Block Changes Per Txn'                   metric_name, 'Block changes' short_name, 1 coeff, 2 typ, 5 m_rank from dual union all
                select 'Physical Reads Per Txn'                     metric_name, 'Physical reads' short_name, 1 coeff, 2 typ, 6 m_rank from dual union all
                select 'Physical Writes Per Txn'                    metric_name, 'Physical writes' short_name, 1 coeff, 2 typ, 7 m_rank from dual union all
                select 'User Calls Per Txn'                         metric_name, 'User calls' short_name, 1 coeff, 2 typ, 8 m_rank from dual union all
                select 'Total Parse Count Per Txn'                  metric_name, 'Parses' short_name, 1 coeff, 2 typ, 9 m_rank from dual union all
                select 'Hard Parse Count Per Txn'                   metric_name, 'Hard Parses' short_name, 1 coeff, 2 typ, 10 m_rank from dual union all
                select 'Logons Per Txn'                             metric_name, 'Logons' short_name, 1 coeff, 2 typ, 11 m_rank from dual union all
                select 'Executions Per Txn'                         metric_name, 'Executes' short_name, 1 coeff, 2 typ, 12 m_rank from dual union all
                select 'User Rollbacks Per Txn'                     metric_name, 'Rollbacks' short_name, 1 coeff, 2 typ, 13 m_rank from dual union all
                select 'User Transaction Per Txn'                   metric_name, 'Transactions' short_name, 1 coeff, 2 typ, 14 m_rank from dual union all
                select 'User Rollback Undo Records Applied Per Txn' metric_name, 'Applied urec' short_name, 1 coeff, 2 typ, 15 m_rank from dual) m
          where m.metric_name = s.metric_name
            and s.intsize_csec > 5000
            and s.intsize_csec < 7000
			--sysdate - interval '5' minute
			and END_TIME > sysdate - interval '5' minute
			)
      group by short_name)
 order by m_rank;


   DB Time              4.6
              DB CPU              2.0
           Redo size        255,839.5           7,734.4
       Logical reads        596,220.2          18,024.6
       Block changes          1,221.1              36.9
      Physical reads          2,155.1              65.2
     Physical writes             23.4                .7
          User calls            754.5              22.8
              Parses            874.5              26.4
         Hard Parses              6.7                .2
              Logons             20.8                .6
            Executes          1,003.1              30.3
           Rollbacks               .0
        Transactions             33.1
        Applied urec               .0                .0

  
  
  ---  ===== 
	   
	   
	   
	   
 
set head off  pages 0  lines 300 echo off  feedback off
VARIABLE BgnSnap NUMBER
VARIABLE EndSnap NUMBER
VARIABLE DID NUMBER
VARIABLE INST_NUMBER number
VARIABLE x VARCHAR2(30)
exec select max(snap_id) -1 into :BgnSnap from dba_hist_snapshot ;
exec select max(snap_id) into :EndSnap from dba_hist_snapshot ;
exec select DBID into :DID from v$database;
exec select INSTANCE_NUMBER into :INST_NUMBER from v$instance ;




WITH snaps
     AS (SELECT :DID db_id,
                :INST_NUMBER instance_number,
                :EndSnap e_snap_id,
                :BgnSnap b_snap_id
           FROM DUAL),      e_u_val
     AS (SELECT SUM (VALUE) end_val
           FROM dba_hist_sysstat e, snaps sn
          WHERE     1 = 1
                AND e.snap_id = sn.e_snap_id
                AND e.dbid = sn.db_id
                AND e.instance_number = sn.instance_number
                AND e.stat_name IN ('user rollbacks', 'user commits')),
     b_u_val
     AS (SELECT SUM (VALUE) bgn_val
           FROM dba_hist_sysstat b, snaps sn
          WHERE     1 = 1
                AND b.snap_id = sn.b_snap_id
                AND b.dbid = sn.db_id
                AND b.instance_number = sn.instance_number
                AND b.stat_name IN ('user rollbacks', 'user commits')),
     d_u_val
     AS (SELECT end_val - bgn_val usr_val
           FROM e_u_val, b_u_val
          WHERE 1 = 1),
     db_tme
     AS (SELECT     EXTRACT (
                       DAY FROM e.end_interval_time - b.end_interval_time)
                  * 86400
                +   EXTRACT (
                       HOUR FROM e.end_interval_time - b.end_interval_time)
                  * 3600
                +   EXTRACT (
                       MINUTE FROM e.end_interval_time - b.end_interval_time)
                  * 60
                + EXTRACT (
                     SECOND FROM e.end_interval_time - b.end_interval_time)
                   d_db_tme
           FROM dba_hist_snapshot b, dba_hist_snapshot e, snaps sn
          WHERE     e.snap_id = sn.e_snap_id
                AND b.snap_id = sn.b_snap_id
                AND b.dbid = sn.db_id
                AND b.instance_number = sn.instance_number
                AND e.dbid = sn.db_id
                AND e.instance_number = sn.instance_number),
     trn_val
     AS (SELECT 'Transactions:' st_name,
                ROUND (usr_val / d_db_tme, 2) per_sec,
                NULL per_txn,
                12 m_rank
           FROM db_tme, d_u_val
          WHERE 1 = 1),
     bgn_val
     AS (SELECT /*+ use_hash(s) */
               m.st_name, b.VALUE VALUE, m_rank
           FROM dba_hist_sysstat b,
                (SELECT 'redo size' stat_name, 'Redo size:' st_name, 1 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'session logical reads' stat_name,
                        'Logical reads:' st_name,
                        2 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'db block changes' metric_name,
                        'Block changes:' st_name,
                        3 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'physical reads' metric_name,
                        'Physical reads' st_name,
                        4 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'physical writes' metric_name,
                        'Physical writes:' st_name,
                        5 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'user calls' metric_name,
                        'User calls:' st_name,
                        6 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'parse count (total)' metric_name,
                        'Parses:' st_name,
                        7 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'parse count (hard)' metric_name,
                        'Hard Parses:' st_name,
                        8 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'logons cumulative' metric_name,
                        'Logons:' st_name,
                        9 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'execute count' metric_name,
                        'Executes:' st_name,
                        10 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'user rollbacks' metric_name,
                        'Rollbacks:' st_name,
                        11 m_rank
                   FROM DUAL) m,
                snaps sn
          WHERE     1 = 1
                AND m.stat_name = b.stat_name
                AND b.snap_id = sn.b_snap_id
                AND b.dbid = sn.db_id
                AND b.instance_number = sn.instance_number),
     end_val
     AS (SELECT /*+ use_hash(s) */
               m.st_name, b.VALUE VALUE, m_rank
           FROM dba_hist_sysstat b,
                (SELECT 'redo size' stat_name, 'Redo size:' st_name, 1 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'session logical reads' stat_name,
                        'Logical reads:' st_name,
                        2 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'db block changes' metric_name,
                        'Block changes:' st_name,
                        3 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'physical reads' metric_name,
                        'Physical reads' st_name,
                        4 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'physical writes' metric_name,
                        'Physical writes:' st_name,
                        5 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'user calls' metric_name,
                        'User calls:' st_name,
                        6 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'parse count (total)' metric_name,
                        'Parses:' st_name,
                        7 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'parse count (hard)' metric_name,
                        'Hard Parses:' st_name,
                        8 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'logons cumulative' metric_name,
                        'Logons:' st_name,
                        9 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'execute count' metric_name,
                        'Executes:' st_name,
                        10 m_rank
                   FROM DUAL
                 UNION ALL
                 SELECT 'user rollbacks' metric_name,
                        'Rollbacks:' st_name,
                        11 m_rank
                   FROM DUAL) m,
                snaps sn
          WHERE     1 = 1
                AND m.stat_name = b.stat_name
                AND b.snap_id = sn.e_snap_id
                AND b.dbid = sn.db_id
                AND b.instance_number = sn.instance_number)
  SELECT st_name, per_sec, per_txn
    FROM (SELECT e.st_name,
                 ROUND ( (e.VALUE - b.VALUE) / (SELECT d_db_tme FROM db_tme),
                        1)
                    per_sec,
                 ROUND ( (e.VALUE - b.VALUE) / (SELECT usr_val FROM d_u_val), 1)
                    per_txn,
                 e.m_rank
            FROM end_val e, bgn_val b
           WHERE e.st_name = b.st_name AND e.m_rank = b.m_rank
          UNION ALL
          SELECT st_name, round(per_sec,1), per_txn, m_rank FROM trn_val)
ORDER BY m_rank
/


Redo size:            5,382,951.2      79709.2
Logical reads:          640,660.8       9486.7
Block changes:           23,180.7        343.3
Physical reads           10,727.6        158.9
Physical writes:            586.8          8.7
User calls:                 796.8         11.8
Parses:                     884.7         13.1
Hard Parses:                  6.4           .1
Logons:                      21.0           .3
Executes:                 1,150.6           17
Rollbacks:                     .0            0
Transactions:                67.5



Saturday, 22 April 2023

RMAN Restoring the Spfile



 Rman Restoring the spfile form backup.. 


export NLS_DATE_FORMAT='dd/mm/yyyy hh24:mi:ss'; rman TARGET / RMAN> STARTUP FORCE NOMOUNT; Restore the server parameter file. If restoring to the default location, then run: RMAN> RESTORE SPFILE FROM AUTOBACKUP; If restoring to a nondefault location, RMAN> RESTORE SPFILE TO '/tmp/spfileTEMP.ora' FROM AUTOBACKUP; ===== RMAN> list backup ; BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ ------------------- 2409 Full 15.34M DISK 00:00:01 22/04/2023 02:00:37 BP Key: 2409 Status: AVAILABLE Compressed: NO Tag: TAG20230422T020036 Piece Name: /u01/app/oracle/VIHAAN8/cf_c-3962735431-20230422-01 rman > restore spfile to '/tmp/spvihaan8.ora' from '/u01/app/oracle/VIHAAN8/cf_c-3962735431-20230422-01'; Starting restore at 22/04/2023 10:12:05 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=1348 device type=DISK channel ORA_DISK_1: restoring spfile from AUTOBACKUP /u01/app/oracle/VIHAAN8/cf_c-3962735431-20230422-01 channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete Finished restore at 22/04/2023 10:12:07 RMAN> ls -ltr /tmp/*.ora -rw-r----- 1 oracle oinstall 4608 Apr 22 10:12 /tmp/spvihaan8.ora CREATE PFILE='/tmp/spvihaan8.txt' FROM SPFILE = '/tmp/spvihaan8.ora'; CREATE PFILE='/tmp/spvihaan8.txt' FROM SPFILE = '/tmp/spvihaan8.ora';primary:sys@IBRAC-ibrac2 sqlplus> File created. sqlplus> !ls -ltr /tmp/*.txt -rw-r--r-- 1 oracle oinstall 1503 Apr 22 10:15 /tmp/spvihaan8.txt

===

restore spfile from autobackup db_recovery_file_dest='XXXXXXXX' db_name='vihaan08';

=========

RMAN> list backup of spfile;

using target database control file instead of recovery catalog

List of Backup Sets
===================


BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
2405    Full    15.34M     DISK        00:00:00     21-04-2023 02:00:37
        BP Key: 2405   Status: AVAILABLE  Compressed: NO  Tag: TAG20230421T020037
        Piece Name: /u01/app/oracle/VIHAAN8/cf_c-3962735431-20230421-01
  SPFILE Included: Modification time: 20-04-2023 14:11:36
  SPFILE db_unique_name: VIHCDBD8

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
2407    Full    15.34M     DISK        00:00:01     22-04-2023 02:00:30
        BP Key: 2407   Status: AVAILABLE  Compressed: NO  Tag: TAG20230422T020029
        Piece Name: /u01/app/oracle/VIHAAN8/cf_c-3962735431-20230422-00
  SPFILE Included: Modification time: 20-04-2023 14:11:36
  SPFILE db_unique_name: VIHCDBD8

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
2409    Full    15.34M     DISK        00:00:01     22-04-2023 02:00:37
        BP Key: 2409   Status: AVAILABLE  Compressed: NO  Tag: TAG20230422T020036
        Piece Name: /u01/app/oracle/VIHAAN8/cf_c-3962735431-20230422-01
  SPFILE Included: Modification time: 20-04-2023 14:11:36
  SPFILE db_unique_name: VIHCDBD8


Monday, 10 April 2023

Oracle flashback Hourly info

Oracle flashback Hourly info http://anuj-singh.blogspot.com/2011/08/oracle-flashback-info.html






set term off term on
SET head on FEED off ECHO OFF LINES 1000 TRIMSPOOL ON TRIM on PAGES 1000
COLUMN separator HEADING "!|!|!"                 FORMAT A1
COLUMN "Date"  HEADING "Date"      FORMAT A9
COLUMN "Total" HEADING "Total|(#)" FORMAT 9999
COLUMN "Day"   HEADING "Day"       FORMAT A3
COLUMN h0      HEADING "h0|(#)"    FORMAT 999
COLUMN h1      HEADING "h1|(#)"    FORMAT 999
COLUMN h2      HEADING "h2|(#)"    FORMAT 999
COLUMN h3      HEADING "h3|(#)"    FORMAT 999
COLUMN h4      HEADING "h4|(#)"    FORMAT 999
COLUMN h5      HEADING "h5|(#)"    FORMAT 999
COLUMN h6      HEADING "h6|(#)"    FORMAT 999
COLUMN h7      HEADING "h7|(#)"    FORMAT 999
COLUMN h8      HEADING "h8|(#)"    FORMAT 999
COLUMN h9      HEADING "h9|(#)"    FORMAT 999
COLUMN h10     HEADING "h10|(#)"   FORMAT 999
COLUMN h11     HEADING "h11|(#)"   FORMAT 999
COLUMN h12     HEADING "h12|(#)"   FORMAT 999
COLUMN h13     HEADING "h13|(#)"   FORMAT 999
COLUMN h14     HEADING "h14|(#)"   FORMAT 999
COLUMN h15     HEADING "h15|(#)"   FORMAT 999
COLUMN h16     HEADING "h16|(#)"   FORMAT 999
COLUMN h17     HEADING "h17|(#)"   FORMAT 999
COLUMN h18     HEADING "h18|(#)"   FORMAT 999
COLUMN h19     HEADING "h19|(#)"   FORMAT 999
COLUMN h20     HEADING "h20|(#)"   FORMAT 999
COLUMN h21     HEADING "h21|(#)"   FORMAT 999
COLUMN h22     HEADING "h22|(#)"   FORMAT 999
COLUMN h23     HEADING "h23|(#)"   FORMAT 999
PROMPT
PROMPT *******************************************************************************************************************************************
PROMPT *   flashback   S U M M A R Y (By Frequency)
PROMPT *   (Hourly and Daily figures in number of flashback)
PROMPT *******************************************************************************************************************************************
PROMPT
PROMPT 
SELECT  to_char(trunc(first_time),'DD-Mon-YY') "Date",
        to_char(first_time, 'Dy') "Day",
         '|'                                               separator,
        count(1) Total,
         '|'                                               separator,
        SUM(decode(to_char(first_time, 'hh24'),'00',1,0)) "h0",
        SUM(decode(to_char(first_time, 'hh24'),'01',1,0)) "h1",
        SUM(decode(to_char(first_time, 'hh24'),'02',1,0)) "h2",
        SUM(decode(to_char(first_time, 'hh24'),'03',1,0)) "h3",
        SUM(decode(to_char(first_time, 'hh24'),'04',1,0)) "h4",
        SUM(decode(to_char(first_time, 'hh24'),'05',1,0)) "h5",
        SUM(decode(to_char(first_time, 'hh24'),'06',1,0)) "h6",
        SUM(decode(to_char(first_time, 'hh24'),'07',1,0)) "h7",
        SUM(decode(to_char(first_time, 'hh24'),'08',1,0)) "h8",
        SUM(decode(to_char(first_time, 'hh24'),'09',1,0)) "h9",
        SUM(decode(to_char(first_time, 'hh24'),'10',1,0)) "h10",
        SUM(decode(to_char(first_time, 'hh24'),'11',1,0)) "h11",
        SUM(decode(to_char(first_time, 'hh24'),'12',1,0)) "h12",
        SUM(decode(to_char(first_time, 'hh24'),'13',1,0)) "h13",
        SUM(decode(to_char(first_time, 'hh24'),'14',1,0)) "h14",
        SUM(decode(to_char(first_time, 'hh24'),'15',1,0)) "h15",
        SUM(decode(to_char(first_time, 'hh24'),'16',1,0)) "h16",
        SUM(decode(to_char(first_time, 'hh24'),'17',1,0)) "h17",
        SUM(decode(to_char(first_time, 'hh24'),'18',1,0)) "h18",
        SUM(decode(to_char(first_time, 'hh24'),'19',1,0)) "h19",
        SUM(decode(to_char(first_time, 'hh24'),'20',1,0)) "h20",
        SUM(decode(to_char(first_time, 'hh24'),'21',1,0)) "h21",
        SUM(decode(to_char(first_time, 'hh24'),'22',1,0)) "h22",
        SUM(decode(to_char(first_time, 'hh24'),'23',1,0)) "h23"
 from v$flashback_database_logfile 
where 1=1
group by trunc(first_time), to_char(first_time, 'Dy')
order by trunc(first_time)
/


              !       !
              ! Total !   h0   h1   h2   h3   h4   h5   h6   h7   h8   h9  h10  h11  h12  h13  h14  h15  h16  h17  h18  h19  h20  h21  h22  h23
Date      Day !   (#) !  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)  (#)
--------- --- - ----- - ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
09-Apr-23 Sun |    67 |    0    0    0    0    0    0    0    2    3    3    4    5    4    5    4    5    4    4    4    5    5    3    4    3
10-Apr-23 Mon |    23 |    4    2    3    3    2    2    4    3    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0


Tuesday, 4 April 2023

Oracle Please ensure that this directory is writable and has atleast 60 MB of disk space. Installation cannot continue.


Oracle  Please ensure that this directory is writable and has atleast 60 MB of disk space. Installation cannot continue. ..



Oracle – Remove / Detach Home from Oracle Inventory
====


[oracle@rac01:/u01/app/oracle/product/18.3.0/oui/bin] $

./runInstaller -silent -detachHome -invPtrLoc /etc/oraInst.loc ORACLE_HOME="/u01/app/oracle/product/11.2.0/dbhome_1"

Error in writing to directory /tmp/OraInstall2023-04-04_07-04-16AM. Please ensure that this directory is writable and has atleast 60 MB of disk space. Installation cannot continue.

Starting Oracle Universal Installer...


if not enough space in /tmp 

Do following !!

mkdir $ORACLE_BASE/tmp
export TMP=$ORACLE_BASE/tmp
export TMPDIR=$ORACLE_BASE/tmp
export TEMP=$ORACLE_BASE/tmp


then run again 


./runInstaller -silent -detachHome -invPtrLoc /etc/oraInst.loc ORACLE_HOME="/u01/app/oracle/product/11.2.0/dbhome_1"
Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB.   Actual 16256 MB    Passed
The inventory pointer is located at /etc/oraInst.loc
find: ‘/u01/app/oraInventory/logs/logs/VIS_delete’: Permission denied
find: ‘/u01/app/oraInventory/logs/logs/VIS_delete’: Permission denied
find: ‘/u01/app/oraInventory/logs/logs/VIS_delete’: Permission denied
'DetachHome' was successful.

=============


grep "HOME NAME" /u01/app/oraInventory/ContentsXML/inventory.xml|grep db


grep "HOME NAME" /u01/app/oraInventory/ContentsXML/inventory.xml|grep db
<HOME NAME="OraDB12Home1" LOC="/u01/app/oracle/product/12.1.0/dbhome_1" TYPE="O" IDX="2">
<HOME NAME="OraDB12Home2" LOC="/u01/app/oracle/product/12.2.0/dbhome_1" TYPE="O" IDX="4"/>
<HOME NAME="OraDb11g_home2" LOC="/u01/app/oracle/product/11.2.0/dbhome_2" TYPE="O" IDX="18"/>
<HOME NAME="OraDb11g_home1" LOC="/u01/app/oracle/product/11.2.0/dbhome_1" TYPE="O" IDX="5" REMOVED="T"/>




$ORACLE_HOME/oui/bin/runInstaller -silent -detachHome ORACLE_HOME="/u01/app/oracle/product/11.2.0/dbhome_1" ORACLE_HOME_NAME="OraDb11g_home1"

Oracle DBA

anuj blog Archive