30 lines
1.2 KiB
SQL
30 lines
1.2 KiB
SQL
----------------------------------------------------------------------------------------
|
|
--
|
|
-- File name: cs_osstat_cpu_util_perc_now.sql
|
|
--
|
|
-- Purpose: CPU Utilization Percent - Now
|
|
--
|
|
-- Author: Carlos Sierra
|
|
--
|
|
-- Version: 2022/08/31
|
|
--
|
|
-- Usage: Execute connected to CDB or PDB.
|
|
--
|
|
-- Example: $ sqlplus / as sysdba
|
|
-- SQL> @cs_osstat_cpu_util_perc_now.sql
|
|
--
|
|
-- Notes: Developed and tested on 19c
|
|
--
|
|
---------------------------------------------------------------------------------------
|
|
--
|
|
SELECT ROUND(100 * os.busy_time / (os.busy_time + os.idle_time), 2) AS cpu_util_perc
|
|
FROM (
|
|
SELECT NULLIF(GREATEST(busy_t2.value - busy_t1.value, 0), 0) AS busy_time, NULLIF(GREATEST(idle_t2.value - idle_t1.value, 0), 0) AS idle_time
|
|
FROM
|
|
(SELECT value FROM dba_hist_osstat WHERE stat_name = 'BUSY_TIME' ORDER BY snap_id DESC NULLS LAST FETCH FIRST 1 ROW ONLY) busy_t1,
|
|
(SELECT value FROM dba_hist_osstat WHERE stat_name = 'IDLE_TIME' ORDER BY snap_id DESC NULLS LAST FETCH FIRST 1 ROW ONLY) idle_t1,
|
|
(SELECT value FROM v$osstat WHERE stat_name = 'BUSY_TIME') busy_t2,
|
|
(SELECT value FROM v$osstat WHERE stat_name = 'IDLE_TIME') idle_t2
|
|
) os
|
|
/
|