oracle惯用的V$OSSTAT性能视图可以随时监控系统中的资源消耗,这其中包括系统cpu的使用率。 通常我们使用sar来完成这个工作,如果通过sqlplus来实现,可以编制一套package完成一体化监控分析目的。当然,对于监控还有很多中手段,区别在于复杂度和准确,即时性。每个人都可以选择不同方式实现,我个人认为使用自己最熟悉的方式最为妥当,这样可以避免无需的学习成本。 以下是监控脚本内容: CREATE OR REPLACE TYPE osstat_record IS OBJECT ( date_time TIMESTAMP, idle_time NUMBER, user_time NUMBER, sys_time NUMBER, iowait_time NUMBER, nice_time NUMBER ); / CREATE OR REPLACE TYPE osstat_table AS TABLE OF osstat_record; / CREATE OR REPLACE FUNCTION osstat(p_interval IN NUMBER, p_count IN NUMBER) RETURN osstat_table PIPELINED IS l_t1 osstat_record; l_t2 osstat_record; l_out osstat_record; l_num_cpus NUMBER; l_total NUMBER; BEGIN l_t1 := osstat_record(NULL, NULL, NULL, NULL, NULL, NULL); l_t2 := osstat_record(NULL, NULL, NULL, NULL, NULL, NULL); SELECT value INTO l_num_cpus FROM v$osstat WHERE stat_name = 'NUM_CPUS'; FOR i IN 1..p_count LOOP SELECT sum(decode(stat_name,'IDLE_TIME', value, NULL)) as idle_time, ...
Comments