利用sqlplus手工建立巡檢報表

snowdba發表於2014-08-09
Oracle巡檢結束後通常要給使用者提供一份巡檢報告,並附上採集資料庫的資訊檔案。如果是oracle10g,oracle11g都可以採用html格式的AWR報告作為“統計資訊明細”。當報告中指出某些問題,可以再明細中找到相對應的資料。
可是oracle9i的資料庫怎麼辦?
我們還有statspack,可是使用者不允許我們建立statspack呢?這裡有一個小技巧可以DIY一個html格式的報告,把我們想要的統計資訊生成出來,想要什麼就輸出什麼,完全DIY。

首先在oracle使用者下執行該語句登入sqlplus
[oracle@snow ~]$ sqlplus -s -M "html on" "/ as sysdba"   <==回車執行
 <==下列html語句自動生成



SQL*Plus Report


此時游標會停在這個位置閃爍不再輸出內容了,我們可以把寫好的語句貼上過來,回車,生成報表。

set echo off
set feedback off
set termout off
set trimout on
set trimspool on
set pagesize 2000
set heading on

spool /home/oracle/db_check.html    <==要確保文字輸出的目錄已經存在
select 'DATABASE BASIS CONDITION' " " from dual;    
select 'INSTANCE NAME' " ",value " " from v$parameter where name='instance_name';

select 'DATABASE VERSION' " ",BANNER " " from v$version;

select 'DATAFILE  TOTAL SIZE(G)' " ",sum(bytes)/1024/1024/1024 " " from v$datafile;

select 'SGA AREA' " ",name " ",value " " from v$sga;

select 'TABLESPACE NUMBER' " ",count(*) " " from v$tablespace;

select 'DATAFILE NUMBER' " ",count(*) " " from v$datafile;

..........
..........根據需要編寫想要統計的資訊

select 'DISK PYSICAL READ TOP 10' " " from dual;
select address,cpu_time/1000000,disk_reads,loads,sql_text from v$sql where rownum<11 order by disk_reads desc;

spool off
quit

貼上完上面的程式碼段,回車開始生成報表。
在/home/oracle目錄下可以看到db_check.html

報表如下所示


DATABASE BASIS CONDITION
INSTANCE NAME ora921
DATAFILE TOTAL SIZE(G) 41.5039063
DATABASE VERSION Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
DATABASE VERSION PL/SQL Release 9.2.0.4.0 - Production
DATABASE VERSION CORE 9.2.0.3.0 Production
DATABASE VERSION TNS for IBM/AIX RISC System/6000: Version 9.2.0.4.0 - Production
DATABASE VERSION NLSRTL Version 9.2.0.4.0 - Production
SGA AREA Fixed Size 745824
SGA AREA Variable Size 1392508928
SGA AREA Database Buffers 1040187392
SGA AREA Redo Buffers 798720

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29047826/viewspace-1248187/,如需轉載,請註明出處,否則將追究法律責任。

相關文章