Oracle下批量產生ADDM報告

來源:互聯網
上載者:User

標籤:des   style   io   ar   使用   sp   for   strong   on   

使用方法: 在E盤下面建立addm的目錄,將三個檔案放入到其中addm.cmd、addm.sql、myaddm.sql. 

  前提連上的使用者需要被賦予兩個許可權。

        grant select any dictionary to user;-----user為生產資料庫帳號

        grant advisor to user;-------user為生產資料庫帳號

1. 檔案名稱:addm.cmd       

 內容:  cmd.exe /c sqlplus username/[email protected] @addm.sql

2. 檔案名稱: addm.sql

 內容:

@@E:\addm\myaddm.sql 0 8
@@E:\addm\myaddm.sql 8 12
@@E:\addm\myaddm.sql 12 14
@@E:\addm\myaddm.sql 14 18
@@E:\addm\myaddm.sql 18 24
exit

3. 檔案名稱: myaddm.sql

內容:

set echo off;
set veri off;
set feedback off;
set termout on;
set heading off;
set linesize 300;
var dbid number;
var inst_num number;
var bid number;
var eid number;
var bhour varchar2(10);
var ehour varchar2(10);
var task_name  varchar2(40);
begin
  :bhour       :=  &1;
  :ehour       :=  &2;
  if(length(:bhour)=1) 
     then :bhour := ‘0‘||:bhour;
  end if;
  if(length(:ehour)=1) 
     then :ehour := ‘0‘||:ehour;
  end if;  
end;
/
begin
select min(snap_id) into :bid from dba_hist_snapshot s
 where (to_char(sysdate-1 , ‘yyyy-mm-dd‘) || ‘ ‘ ||:bhour) <=
       to_char(s.end_interval_time, ‘yyyy-mm-dd HH24‘)
       and (to_char(sysdate-1 , ‘yyyy-mm-dd‘) || ‘ ‘ ||:ehour) >=
       to_char(s.end_interval_time, ‘yyyy-mm-dd HH24‘);
select max(snap_id) into :eid from dba_hist_snapshot s
 where (to_char(sysdate-1 , ‘yyyy-mm-dd‘) || ‘ ‘ ||:bhour) <=
       to_char(s.end_interval_time, ‘yyyy-mm-dd HH24‘)
       and (to_char(sysdate-1 , ‘yyyy-mm-dd‘) || ‘ ‘ ||:ehour) >=
       to_char(s.end_interval_time, ‘yyyy-mm-dd HH24‘);
if(:ehour=24) 
    then select max(snap_id) into :eid from dba_hist_snapshot s where (to_char(sysdate,‘yyyy-mm-dd‘)||‘ 00‘) =to_char(s.end_interval_time,‘yyyy-mm-dd HH24‘);
end if;  
select dbid into :dbid from v$database;
select instance_number into :inst_num from v$instance;
end;
/


column report_name new_value report_name noprint;
select ‘PMS_‘||:inst_num||‘_‘||to_char(sysdate-1 ,‘yyyymmdd‘)||‘_‘||:bhour||‘-‘||:ehour||‘.txt‘ report_name from dual;
begin
  declare
    id number;
    name varchar2(100);
    descr varchar2(500);
  BEGIN
     name := ‘‘;
     descr := ‘ADDM run: snapshots [‘ || :bid || ‘, ‘
              || :eid || ‘], instance ‘ || :inst_num 
              || ‘, database id ‘ || :dbid;
     dbms_advisor.create_task(‘ADDM‘,id,name,descr,null);
     :task_name := name;
     dbms_advisor.set_task_parameter(name, ‘START_SNAPSHOT‘, :bid);
     dbms_advisor.set_task_parameter(name, ‘END_SNAPSHOT‘, :eid);
     dbms_advisor.set_task_parameter(name, ‘INSTANCE‘, :inst_num);
     dbms_advisor.set_task_parameter(name, ‘DB_ID‘, :dbid);
     dbms_advisor.execute_task(name);
  end;
end;
/


spool &report_name;
set long 1000000 pagesize 0 longchunksize 1000
column get_clob format a80
select dbms_advisor.get_task_report(:task_name, ‘TEXT‘, ‘TYPICAL‘)
from   dual;
spool off;
prompt
prompt End of Report
prompt Report written to &report_name.


set termout on;
clear columns sql;
ttitle off;
btitle off;
repfooter off;
undefine report_name

Oracle下批量產生ADDM報告

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.