This SQL query retrieves system metrics from Oracle database views including:
- System parameters like number of sessions and processes
- Session metrics like long blocked sessions and lock rates
- PGA, SGA, buffer cache, and redo log usage
- Recovery File Destination (FRA) space usage and files
- User password expiration date
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 ratings0% found this document useful (0 votes)
32 views2 pages
Get System Metrics
This SQL query retrieves system metrics from Oracle database views including:
- System parameters like number of sessions and processes
- Session metrics like long blocked sessions and lock rates
- PGA, SGA, buffer cache, and redo log usage
- Recovery File Destination (FRA) space usage and files
- User password expiration date
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/ 2
Oracle: Get system metrics
SELECT 'SYS::' || METRIC_NAME AS METRIC, ROUND(VALUE,3) as VALUE
FROM V$SYSMETRIC WHERE GROUP_ID = 2 UNION SELECT 'SYSPARAM::' || INITCAP(NAME) AS METRIC, to_number(VALUE) FROM V$SYSTEM_PARAMETER WHERE NAME IN ('sessions', 'processes', 'db_files') UNION SELECT 'SESSION::Long time locked' ,count(*) FROM V$SESSION s WHERE s.BLOCKING_SESSION IS NOT NULL AND s.BLOCKING_SESSION_STATUS='VALID' AND s.SECONDS_IN_WAIT > {$ORACLE.SESSION.LOCK.MAX.TIME} UNION SELECT 'SESSION::Lock rate' ,(cnt_block / cnt_all)* 100 pct FROM ( SELECT COUNT(*) cnt_block FROM v$session WHERE blocking_session IS NOT NULL), ( SELECT COUNT(*) cnt_all FROM v$session) UNION SELECT 'SESSION::Long time locked' ,count(*) FROM V$SESSION s WHERE s.BLOCKING_SESSION IS NOT NULL AND s.BLOCKING_SESSION_STATUS='VALID' AND s.SECONDS_IN_WAIT > {$ORACLE.SESSION.LOCK.MAX.TIME} UNION SELECT 'SESSION::Total', COUNT(*) AS VALUE FROM V$SESSION UNION SELECT 'SESSION::Concurrency rate', NVL(ROUND(SUM(duty_act.cnt*100 / num_cores.val)), 0) FROM ( SELECT DECODE(session_state, 'ON CPU', 'CPU', wait_class) wait_class, ROUND(COUNT(*)/(60 * 15), 1) cnt FROM v$active_session_history sh WHERE sh.sample_time >= SYSDATE - 15 / 1440 AND DECODE(session_state, 'ON CPU', 'CPU', wait_class) IN('Concurrency') GROUP BY DECODE(session_state, 'ON CPU', 'CPU', wait_class)) duty_act, ( SELECT SUM(value) val FROM v$osstat WHERE stat_name = 'NUM_CPU_CORES') num_cores UNION SELECT 'PGA::' || INITCAP(NAME), VALUE FROM V$PGASTAT UNION SELECT 'FRA::Space Limit' AS METRIC, space_limit AS VALUE FROM V$RECOVERY_FILE_DEST UNION SELECT 'FRA::Space Used', space_used AS VALUE FROM V$RECOVERY_FILE_DEST UNION SELECT 'FRA::Space Reclaimable', space_reclaimable AS VALUE FROM V$RECOVERY_FILE_DEST UNION SELECT 'FRA::Number Of Files', number_of_files AS VALUE FROM V$RECOVERY_FILE_DEST UNION SELECT 'FRA::Usable Pct', DECODE(space_limit, 0, 0,(100-(100 *(space_used- space_reclaimable)/ space_limit))) AS VALUE FROM V$RECOVERY_FILE_DEST UNION SELECT 'FRA::Restore Point', COUNT(*) AS VALUE FROM V$RESTORE_POINT UNION SELECT 'PROC::Procnum', COUNT(*) FROM v$process UNION SELECT 'DATAFILE::Count', COUNT(*) FROM v$datafile UNION SELECT 'SGA::' || INITCAP(pool), SUM(bytes) FROM V$SGASTAT WHERE pool IN ( 'java pool', 'large pool' ) GROUP BY pool UNION SELECT 'SGA::Shared Pool', SUM(bytes) FROM V$SGASTAT WHERE pool = 'shared pool' AND name NOT IN ('library cache', 'dictionary cache', 'free memory', 'sql area') UNION SELECT 'SGA::' || INITCAP(name), bytes FROM V$SGASTAT WHERE pool IS NULL AND name IN ('log_buffer', 'fixed_sga') UNION SELECT 'SGA::Buffer_Cache', SUM(bytes) FROM V$SGASTAT WHERE pool IS NULL AND name IN ('buffer_cache', 'db_block_buffers') UNION SELECT 'REDO::Available', count(*) from v$log t where t.status in ('INACTIVE', 'UNUSED') UNION SELECT 'USER::Expire password', ROUND(DECODE(SIGN(NVL(u.expiry_date, SYSDATE + 999) - SYSDATE),-1, 0, NVL(u.expiry_date, SYSDATE + 999) - SYSDATE)) exp_passwd_days_before FROM dba_users u WHERE username = UPPER('{$ORACLE.USER}');