一. 準備工作
一般我們都是條用awrrpt.sql 來建立我們的awr報告。 我們先看下這個指令碼的具體內容:
[oracle@rac1 admin]$ cat awrrpt.sql | grep -v 'rem'|grep -v '^--'
set echo off heading on underline on;
column inst_num heading "inst num" new_value inst_num format 99999;
column inst_name heading "instance" new_value inst_name format a12;
column db_name heading "db name" new_value db_name format a12;
column dbid heading "db id" new_value dbid format 9999999999 just c;
prompt
prompt current instance
prompt
select d.dbid dbid
, db_name
, i.instance_number inst_num
, i.instance_name inst_name
from v$database d,
v$instance i;
@@awrrpti
undefine num_days;
undefine report_type;
undefine report_name;
undefine begin_snap;
undefine end_snap;
在以上的指令碼裡,我們發現它只是生成了一些變數,然後把這些變數傳給了另乙個指令碼:awrrpti.sql。 我們看下awrrpti.sql 指令碼的具體內容:
[oracle@rac1 admin]$ cat awrrpti.sql | grep -v 'rem'|grep -v '^--'
set echo off;
set veri off;
set feedback off;
variable rpt_options number;
define no_options = 0;
define enable_addm = 8;
begin
:rpt_options := &no_options;
end;
/prompt
prompt specify the report type
prompt
prompt would you like an html report, or a plain text report?
prompt enter 'html' for an html report, or 'text' for plain text
prompt defaults to 'html'
column report_type new_value report_type;
set heading off;
select 'type specified: ',lower(nvl('&&report_type','html')) report_type from dual;
set heading on;
set termout off;
column ext new_value ext;
select '.html' ext from dual where lower('&&report_type') <> 'text';
select '.txt' ext from dual where lower('&&report_type') = 'text';
set termout on;
@@awrinput.sql
-- 這個指令碼主要是確定snap的。
@@awrinpnm.sql 'awrrpt_' &&ext
-- 這個指令碼主要是確定awr 檔名稱的
set termout off;
column fn_name new_value fn_name noprint;
select 'awr_report_text' fn_name from dual where lower('&report_type') = 'text';
select 'awr_report_html' fn_name from dual where lower('&report_type') <> 'text';
column lnsz new_value lnsz noprint;
select '80' lnsz from dual where lower('&report_type') = 'text';
select '1500' lnsz from dual where lower('&report_type') <> 'text';
set linesize &lnsz;
set termout on;
spool &report_name;
select output from table(dbms_workload_repository.&fn_name( :dbid,
:inst_num,
:bid, :eid,
:rpt_options ));
spool off;
prompt report written to &report_name.
set termout off;
clear columns sql;
ttitle off;
btitle off;
repfooter off;
set linesize 78 termout on feedback 6 heading on;
undefine report_name
undefine report_type
undefine ext
undefine fn_name
undefine lnsz
undefine no_options
undefine enable_addm
undefine top_n_events
undefine num_days
undefine top_n_sql
undefine top_pct_sql
undefine sh_mem_threshold
undefine top_n_segstat
whenever sqlerror continue;
[oracle@rac1 admin]$
這個指令碼才是我們真正生成awr的指令碼。 在這個指令碼裡面,提示我們選擇awr報告的型別。
通過上面的2個指令碼,我們將awr報告簡化一下:
select output from
table(dbms_workload_repository.&fn_name(:dbid, :
inst_num,:bid, :eid,:
rpt_options ));
這條語句就是整個awr報告的核心:
(1)&fn_name :決定awr報告的型別,有2個值:awr_report_html和awr_report_text。
(2)dbid,inst_num,bid,eid 可以通過dba_hist_snapshot查詢. bid 指的是begin snap_id, eid 指的是end snap_id.
sql> select * from (select snap_id,dbid,instance_number from dba_hist_snapshot order by snap_id) where rownum<10;
snap_id dbid instance_number
184 809910293 2
184 809910293 1
185 809910293 2
185 809910293 1
186 809910293 2
186 809910293 1
187 809910293 2
187 809910293 1
188 809910293 2
9 rows selected.
我這裡是個rac 環境, 通過這個可以看出在每個節點上都儲存著awr的資訊。
(3)rpt_options:該引數控制是否顯示addm的。
-- no_options -
-- no options. setting this will not show the addm
-- specific portions of the report.
-- this is the default setting.
---- enable_addm -
-- show the addm specific portions of the report.
-- these sections include the buffer pool advice,
-- shared pool advice, pga target advice, and
-- wait class sections.
define no_options = 0;
define enable_addm = 8;
有了上面的資料之後,我們就可以使用如下sql直接生成awr報告了。
select output from table(dbms_workload_repository.awr_report_html(809910293, 2,220,230,0));
select output from table(dbms_workload_repository.awr_report_text(809910293, 2,220,230,0));
二. 生成awr報告 sql指令碼
以上寫了這麼多,就是為了乙個指令碼:myawrrpt.sql.
這個指令碼就是自動的去收集資訊。 因為如果我們是呼叫awrrpt.sql的話,需要輸入一些引數。
我們修改一下指令碼,讓它根據我們的需求來收集資訊,這樣就不用輸入引數了。
[oracle@rac1 admin]$ cat myawrrpt.sql
conn / as sysdba;
set echo off;
set veri off;
set feedback off;
set termout on;
set heading off;
自動化報告
1引言小時候大家都有自己的夢想,有的想成為科學家 有的想成為明星 有的想成為飛行員 我的理想就是成為一名科學家。雖然那時候還不知道科學家和工程師的具體含義及區別,但腦海中總有這樣乙個概念,科學家是搞研究工作的 工程師就是像建房屋那些幹工程的。說句實話,上面雖說想當科學家,其實我內心深處既想搞研究,又...
自動化報告
自動控制系統及應用 課程設計報告 題目 工廠 小區 學校大門公升降杆自動系統 組長 朱清 成員 王菁 班級 12級電氣1班 教師 崔慶權 日期 2014.6.10 機電工程學院 2014.6 目錄一 設計內容 3 二 設計思路 3 1.意義 3 2.內容 3 3.現狀 3 4.設計原理 4 5.分析...
自動化實習報告
實習報告 姓名班級 學號指導教師 資訊科學與技術部 一 實習地點 實習目的 1.通過實習加深我們對自動化專業在國民經濟中所處地位和作用的認識,鞏固專業思想,提高專業技能,並激發我們對本專業學習的興趣。2.通過現場操作實習和與企業員工的交流指導,理論聯絡實際,把所學的理論知識加以印證 深化 鞏固和充實...