Oracle Transaction History to check growth
How To Query Transaction Count in Oracle
SELECT BEGIN_TIME,
END_TIME,
TXNCOUNT,
( (END_TIME - BEGIN_TIME) * 24 * 60 * 60) DIFFSECOND,
TO_CHAR ( (TXNCOUNT / ( (END_TIME - BEGIN_TIME) * 24 * 60 * 60)),
'999999.99')
TRANXPERSECOND
FROM V$UNDOSTAT
WHERE BEGIN_TIME >= TO_DATE('20.09.2014 00:00','DD.MM.YYYY HH24:MI')
AND BEGIN_TIME <= TO_DATE('25.09.2014 00:00','DD.MM.YYYY HH24:MI')
AND (TXNCOUNT / ( (END_TIME - BEGIN_TIME) * 24 * 60 * 60)) > 50
ORDER BY 1;
-- Transaction per hour
alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
set pages 9999;
column c1 heading "Start|Time" format a30;
column c2 heading "End|Time" format a15;
column c3 heading "Total|Undo|Blocks|Used" format 9,999,999;
column c4 heading "Total|Number of|Transactions|Executed" format 999,999;
column c5 heading "Longest|Query|(sec)" format 999,999;
column c6 heading "Highest|Concurrent|Transaction|Count" format 9,999;
select
TO_CHAR( TO_DATE(TO_CHAR(Begin_Time,'DD-MON-YY HH24'),'DD-MON-YY HH24') , 'DD-MON-YY HH24') c1,
-- TO_CHAR(End_Time,'DD-MON-YY HH24') c2,
SUM(Undoblks) c3, SUM(Txncount) c4, MAX(Maxquerylen) c5,
MAX(Maxconcurrency) c6
from v$undostat
group by TO_CHAR( TO_DATE(TO_CHAR(Begin_Time,'DD-MON-YY HH24'),
'DD-MON-YY HH24') , 'DD-MON-YY HH24')
order by 1 asc
;
alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
select BEGIN_TIME,END_TIME,TXNCOUNT ,(( END_TIME - BEGIN_TIME ) * 24 * 60 * 60 ) diffsecond ,
to_char(( TXNCOUNT / (( END_TIME - BEGIN_TIME ) * 24 * 60 * 60 )),'999999.99') tranxpersecond from v$undostat
where BEGIN_TIME >='24-APR-2010 05:35:40' and BEGIN_TIME <='29-APR-2010 16:35:40'
and ( TXNCOUNT / (( END_TIME - BEGIN_TIME ) * 24 * 60 * 60 )) > 50 order by 1;
Average transaction count
SELECT V1 "Total Commits",
V2 "Total Rollbacks",
V3 "Total User Calls",
T1 "Uptime in days",
S1 / T1 "Avg Daily DML Transactions",
V3 / T1 "Avg Daily User Calls"
FROM (SELECT VALUE V1
FROM V$SYSSTAT
WHERE NAME = 'user commits'),
(SELECT VALUE V2
FROM V$SYSSTAT
WHERE NAME = 'user rollbacks'),
(SELECT SUM (VALUE) S1
FROM V$SYSSTAT
WHERE NAME IN ('user commits', 'user rollbacks')),
(SELECT VALUE V3
FROM V$SYSSTAT
WHERE NAME = 'user calls'),
(SELECT SYSDATE - STARTUP_TIME T1 FROM V$INSTANCE);
Daily average commit count
SELECT (V1 + V2) / T1 "Avg Daily DML Transactions",
V1 "User Commit",
V2 "User Rollback"
FROM (SELECT VALUE V1
FROM V$SYSSTAT
WHERE NAME = 'user commits'),
(SELECT VALUE V2
FROM V$SYSSTAT
WHERE NAME = 'user rollbacks'),
(SELECT SYSDATE - STARTUP_TIME T1 FROM V$INSTANCE);
Transaction Count in the last 24 hours
SELECT 'DATABASE',
'TOPLAM TRANSACTION - 24 SAAT',
TO_CHAR (MAX (NEXT_CHANGE#) - MIN (FIRST_CHANGE#), '9,999,999,999') VALUE
FROM V$LOG_HISTORY
WHERE TO_DATE (FIRST_TIME, 'DD/MM/RR HH24:MI:SS') > TRUNC (SYSDATE, 'HH24') - 1;
Using Metric :
DBA_HIST_SYSMETRIC_HISTORY
DBA_HIST_SYSMETRIC_SUMMARY
select * from v$SYSMETRIC;
select * from V$SYSMETRIC_HISTORY; -- interval, 1hr history
select * from V$SYSMETRIC_SUMMARY; --1hr interval, 1hr history
select min( to_char(begin_time,'DD-MON-YYYY HH24:MI:SS') ) from DBA_HIST_SYSMETRIC_HISTORY;
col value format 9999999999999999999999999999999999999999
col metric_name format a50
col metric_unit format a40
select metric_name , sum(value) , metric_unit from v$sysmetric_history group by metric_name ,metric_unit ;
select metric_name , sum(value) , metric_unit from v$sysmetric_history where metric_name like '%Block Changes Per Sec%' group by metric_name ,metric_unit ;
select to_char(begin_time,'DD-MON-YYYY HH24') ,metric_name , sum(value) , metric_unit from DBA_HIST_SYSMETRIC_HISTORY where metric_name like '%Transaction%'
group by to_char(begin_time,'DD-MON-YYYY HH24') , metric_name ,metric_unit
order by to_char(begin_time,'DD-MON-YYYY HH24') ;
select to_char(begin_time,'DD-MON-YYYY HH24') ,metric_name , sum(value) , metric_unit from DBA_HIST_SYSMETRIC_HISTORY where metric_name like '%Executions%'
group by to_char(begin_time,'DD-MON-YYYY HH24') , metric_name ,metric_unit
order by to_char(begin_time,'DD-MON-YYYY HH24') ;
Comments
Post a Comment