hdrmon.sql
上传用户:rjj0351
上传日期:2007-01-07
资源大小:9k
文件大小:3k
源码类别:

Oracle数据库

开发平台:

SQL

  1. set feedback off
  2. set verify off
  3. set serveroutput on
  4. declare
  5. t_number1 number :=0;
  6. t_number2 number :=0;
  7. t_number3 number :=0;
  8. t_number4 number :=0;
  9. t_number5 number :=0;
  10. t_number6 number :=0;
  11. t_number7 number :=0;
  12. t_number8 number :=0;
  13. t_number9 number :=0;
  14. t_varchar1 varchar2(200);
  15. t_varchar2 varchar2(200);
  16. cursor c_sga is
  17. select   replace(replace(name,'Size'),'Database','DB') name
  18.         ,round(value/1024/1024,2) value
  19. from     sys.v_$sga;
  20. begin
  21.  dbms_output.enable(100000);
  22.  -- total sessions
  23.  select name     into t_varchar1 from v$database;
  24.  select count(*) into t_number2 from v$session;
  25.  select count(*) into t_number3 from v$session where type = 'BACKGROUND';
  26.  select count(*) into t_number4 from v$session where type = 'USER';
  27.  select count(*) into t_number5 from v$session where type = 'USER' and status = 'ACTIVE';
  28.  select count(*) into t_number6 from v$session where type = 'USER' and status = 'INACTIVE';
  29.  dbms_output.put_line(lower(user)||'@'||t_varchar1|| '=>'||
  30.                       t_number2||' processes: '||
  31.                       t_number3||' background,'||
  32.                       t_number4||' user('||
  33.                       t_number5||' active,'||
  34.                       t_number6||' inactive)');
  35.  -- SGA details
  36.  select round(sum(value)/1024/1024,2) into t_number1 from v$sga;
  37.  t_varchar1 := 'SGA:'||t_number1||'Mb (';
  38.  for r_sga in c_sga
  39.  loop
  40.    t_varchar1 := t_varchar1||','||rtrim(lower(replace(r_sga.name,' ')))||':'||
  41.                              ltrim(to_char(r_sga.value,'9990.00'));
  42.  end loop;
  43.  t_varchar1 := replace(t_varchar1,'(,','(')||')';
  44.  dbms_output.put_line(t_varchar1);
  45.  -- Disk space
  46.  select round(sum(bytes/1024/1024),2) into t_number1 from dba_data_files;
  47.  select round(sum(bytes/1024/1024),2) into t_number2 from dba_free_space;
  48.  t_number3:=t_number1 - t_number2;
  49.  t_number4:=round(t_number3/t_number1 ,4) * 100;
  50.  dbms_output.put_line('Disk Total:'      ||t_number1||'Mb'||
  51.                       ' (free:'        ||t_number2||'Mb'||
  52.                       ' used:'         ||t_number3||'Mb'||
  53.                       ' percent used:' ||t_number4||'%)');
  54.  -- Hitratios
  55.  select round((sum(decode(name, 'consistent gets',value, 0)) + 
  56.             sum(decode(name, 'db block gets',value, 0)) - 
  57.             sum(decode(name, 'physical reads',value, 0))) / 
  58.          (sum(decode(name, 'consistent gets',value, 0)) + 
  59.          sum(decode(name, 'db block gets',value, 0))) * 100,2) getal
  60.    into t_number1
  61.    from v$sysstat;
  62.  select round((sum(PINHITS) / sum(PINS)) * 100,2)
  63.    into t_number2
  64.    from v$librarycache;
  65.  select round((sum(PINS) / (sum(PINS) + sum(RELOADS))) * 100,2)      
  66.    into t_number3
  67.    from v$librarycache;
  68.  select round((1 - (sum(GETMISSES) / sum(GETS))) * 100,2)
  69.    into t_number4
  70.    from v$rowcache;
  71.  dbms_output.put_line('Hits Buffer:'           ||t_number1||'%'||
  72.                       ' Library:'         ||t_number2||'%'||
  73.                       ' Library misses:'  ||t_number3||'%'||
  74.                       ' Data dictionary:' ||t_number4||'%');
  75.  dbms_output.put_line(chr(27)); 
  76. end;
  77. /