0% found this document useful (0 votes)
72 views4 pages

Time Model Query's

The document contains examples of SQL queries and scripts for analyzing database time model statistics in an Oracle database. It shows how to query the V$SYS_TIME_MODEL, V$SESSION_TIME_MODEL, and other views to see overall database time statistics and time spent on different operations. It also provides examples of saving time model stats to a table over time and scripts for measuring system performance and scalability by tracking database time, CPU, and wait times.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
72 views4 pages

Time Model Query's

The document contains examples of SQL queries and scripts for analyzing database time model statistics in an Oracle database. It shows how to query the V$SYS_TIME_MODEL, V$SESSION_TIME_MODEL, and other views to see overall database time statistics and time spent on different operations. It also provides examples of saving time model stats to a table over time and scripts for measuring system performance and scalability by tracking database time, CPU, and wait times.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

--Database Time Model Query Example

SELECT STAT_NAME, TO_CHAR(VALUE/1000000,'999,999') TIME_S


FROM V$SYS_TIME_MODEL
WHERE VALUE <>0 AND STAT_NAME NOT IN ('background elapsed time',
'background cpu time')
ORDER BY VALUE DESC

COL STAT_NAME FORMAT A43


SELECT STAT_NAME, TO_CHAR(VALUE,'999,999,999,999') TIME_MICRO_S
, ROUND(VALUE/(SELECT VALUE FROM V$SYS_TIME_MODEL WHERE STAT_NAME='DB time')*100,2)
PCT
FROM V$SYS_TIME_MODEL
WHERE VALUE <>0 AND STAT_NAME NOT IN ('background elapsed time', 'background cpu
time')
ORDER BY VALUE DESC
FETCH FIRST 7 ROWS ONLY;

---Database Time Model Tree

col STAT_NAME format a60


SELECT LPAD(' ', 2*level-1)||STAT_NAME STAT_NAME,
TRUNC(VALUE/1000000,2) SECONDS
FROM (
SELECT 0 id, 9 pid, null STAT_NAME, null value FROM dual union
SELECT DECODE(STAT_NAME,'DB time',10) ID,
DECODE(STAT_NAME,'DB time',0) PID , STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'DB time' union
SELECT DECODE(STAT_NAME,'DB CPU',20) ID,
DECODE(STAT_NAME,'DB CPU',10) PID , STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'DB CPU' union
SELECT DECODE(STAT_NAME,'connection management call elapsed time',21) ID,
DECODE(STAT_NAME,'connection management call elapsed time',10) PID ,
STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'connection management call elapsed time' union
SELECT DECODE(STAT_NAME,'sequence load elapsed time',22) ID,
DECODE(STAT_NAME,'sequence load elapsed time',10) PID , STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'sequence load elapsed time' union
SELECT DECODE(STAT_NAME,'sql execute elapsed time',23) ID,
DECODE(STAT_NAME,'sql execute elapsed time',10) PID , STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'sql execute elapsed time' union
SELECT DECODE(STAT_NAME,'parse time elapsed',24) ID,
DECODE(STAT_NAME,'parse time elapsed',10) PID , STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'parse time elapsed' union
SELECT DECODE(STAT_NAME,'hard parse elapsed time',30) ID,
DECODE(STAT_NAME,'hard parse elapsed time',24) PID , STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'hard parse elapsed time' union
SELECT DECODE(STAT_NAME,'hard parse (sharing criteria) elapsed time',40) ID,
DECODE(STAT_NAME,'hard parse (sharing criteria) elapsed time',30) PID ,
STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'hard parse (sharing criteria) elapsed time' union
SELECT DECODE(STAT_NAME,'hard parse (bind mismatch) elapsed time',50) ID,
DECODE(STAT_NAME,'hard parse (bind mismatch) elapsed time',40) PID ,
STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'hard parse (bind mismatch) elapsed time' union
SELECT DECODE(STAT_NAME,'failed parse elapsed time',31) ID,
DECODE(STAT_NAME,'failed parse elapsed time',24) PID , STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'failed parse elapsed time' union
SELECT DECODE(STAT_NAME,'failed parse (out of shared memory) elapsed time',41) ID,
DECODE(STAT_NAME,'failed parse (out of shared memory) elapsed time',31)
PID , STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'failed parse (out of shared memory) elapsed time' union
SELECT DECODE(STAT_NAME,'PL/SQL execution elapsed time',25) ID,
DECODE(STAT_NAME,'PL/SQL execution elapsed time',10) PID , STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'PL/SQL execution elapsed time' union
SELECT DECODE(STAT_NAME,'inbound PL/SQL rpc elapsed time',26) ID,
DECODE(STAT_NAME,'inbound PL/SQL rpc elapsed time',10) PID , STAT_NAME,
VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'inbound PL/SQL rpc elapsed time' union
SELECT DECODE(STAT_NAME,'PL/SQL compilation elapsed time',27) ID,
DECODE(STAT_NAME,'PL/SQL compilation elapsed time',10) PID , STAT_NAME,
VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'PL/SQL compilation elapsed time' union
SELECT DECODE(STAT_NAME,'Java execution elapsed time',28) ID,
DECODE(STAT_NAME,'Java execution elapsed time',10) PID , STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'Java execution elapsed time' union
SELECT DECODE(STAT_NAME,'repeated bind elapsed time',29) ID,
DECODE(STAT_NAME,'repeated bind elapsed time',10) PID , STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'repeated bind elapsed time' union
SELECT DECODE(STAT_NAME,'background elapsed time',60) ID,
DECODE(STAT_NAME,'background elapsed time',0) PID , STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'background elapsed time' union
SELECT DECODE(STAT_NAME,'background cpu time',61) ID,
DECODE(STAT_NAME,'background cpu time',60) PID , STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'background cpu time' union
SELECT DECODE(STAT_NAME,'RMAN cpu time (backup/restore)',62) ID,
DECODE(STAT_NAME,'RMAN cpu time (backup/restore)',61) PID , STAT_NAME, VALUE
FROM v$sys_time_model
WHERE STAT_NAME = 'RMAN cpu time (backup/restore)')
CONNECT BY PRIOR id = pid START WITH id = 0;

--Sessions Time Model Query Example

SELECT S.SID, S.USERNAME, T.STAT_NAME,


ROUND(T.VALUE/1000000,2) "TIME (SEC)"
FROM V$SESS_TIME_MODEL T, V$SESSION S
WHERE T.SID = S.SID AND T.STAT_NAME IN ('DB time','DB CPU')
AND S.USERNAME IS NOT NULL ORDER BY T.VALUE DESC

--Using Time Model to Measure System Scalability

SELECT TO_CHAR(DBTIME.VALUE/1000000,'999,999') DBTIME,


TO_CHAR(DBCPU.VALUE/1000000,'999,999') DBCPU,
TO_CHAR((DBTIME.VALUE-DBCPU.VALUE)/1000000,'999,999') WAIT_TIME,
TO_CHAR((DBTIME.VALUE-DBCPU.VALUE)/DBTIME.VALUE*100,'99.99') || '%'
WAIT_PCT,
(SELECT COUNT(*) FROM V$SESSION WHERE USERNAME IS NOT NULL) USERS_CNT
FROM V$SYS_TIME_MODEL DBTIME, V$SYS_TIME_MODEL DBCPU
WHERE DBTIME.STAT_NAME = 'DB time' AND DBCPU.STAT_NAME = 'DB CPU';

-- create table to save DBTIME, DB CPU, and total waits in it

cat > $SD/create_tm_history.sql <<EOL


DROP TABLE TM_HISTORY;
DROP SEQUENCE S;
CREATE SEQUENCE S;
CREATE TABLE TM_HISTORY AS SELECT S.NEXTVAL AS SNAP_ID, DBTIME.VALUE/1000000
DBTIME, DBCPU.VALUE/1000000 DBCPU, (DBTIME.VALUE-DBCPU.VALUE)/1000000 WAIT_TIME,
(SELECT COUNT(*) FROM V\$SESSION WHERE USERNAME IS NOT NULL) USERS_CNT FROM V\
$SYS_TIME_MODEL DBTIME, V\$SYS_TIME_MODEL DBCPU WHERE DBTIME.STAT_NAME = 'DB time'
AND DBCPU.STAT_NAME = 'DB CPU';
EOL

-- retrieve data from TM_HISTORY


cat > $SD/display_tm_history.sql << EOL
set linesize 180
SELECT TO_CHAR(DBTIME,'999,999,999') DBTIME, TO_CHAR(DBCPU,'999,999,999') DBCPU,
ROUND(DBCPU - LAG(DBCPU, 1, 0) OVER (ORDER BY DBCPU)) AS DBCPU_DIFF,
TO_CHAR(WAIT_TIME,'999,999,999,999') WAIT_TIME, ROUND(WAIT_TIME - LAG(WAIT_TIME, 1,
0) OVER (ORDER BY WAIT_TIME)) AS WAIT_TIME_DIFF,
TO_CHAR((DBTIME-DBCPU)/DBTIME*100,'99.99') || '%' WAIT_PCT, USERS_CNT,
ROUND((DBTIME-DBCPU)/USERS_CNT) WAIT_USER_SHARE FROM TM_HISTORY ORDER BY SNAP_ID;
EOL

-- save the current time model basic statistics into the TM_HISTORY table

cat > $SD/take_tm_snapshot.sql <<EOL


INSERT INTO TM_HISTORY SELECT S.NEXTVAL AS SNAP_ID, DBTIME.VALUE/1000000 DBTIME,
DBCPU.VALUE/1000000 DBCPU, (DBTIME.VALUE-DBCPU.VALUE)/1000000 WAIT_TIME, (SELECT
COUNT(*) FROM V\$SESSION WHERE USERNAME IS NOT NULL) USERS_CNT FROM V\
$SYS_TIME_MODEL DBTIME, V\$SYS_TIME_MODEL DBCPU WHERE DBTIME.STAT_NAME = 'DB time'
AND DBCPU.STAT_NAME = 'DB CPU';
COMMIT;
EOL
---following query to retrieve the sessions with top total wait times.

col SID format 999999


col USERNAME format a10
col DBTIME format 9999999999999
col WAITTIME format 9999999999999
col WAITPCT format 99999.99
col ONCPUPCT format 99999.99
SELECT M.SID, S.USERNAME
,VALUE DBTIME
,WAITTIME WAITTIME
,ROUND((WAITTIME/VALUE)*100,2) WAITPCT
,ROUND(((VALUE-WAITTIME)/VALUE)*100,2) ONCPU_PCT
FROM(SELECT SID, STAT_ID, STAT_NAME ,VALUE
,VALUE - (LEAD(VALUE,1) OVER(PARTITION BY SID ORDER BY SID,STAT_NAME
DESC)) WAITTIME
FROM V$SESS_TIME_MODEL
WHERE STAT_NAME IN ('DB time','DB CPU')) M,
V$SESSION S
WHERE M.SID = S.SID
AND STAT_NAME='DB time' AND WAITTIME>0
ORDER BY WAITPCT DESC;

You might also like