python實現自動產生oracle awr報告

來源:互聯網
上載者:User

標籤:python   oracle   awr   

目前在規劃、開發效能自動化執行架構,其中有個環節很有意思,就是如何通過架構自動獲得情境執行期間的oracle awr報告。雖然Oracle用戶端提供的awrrpt.sql指令碼可以提供互動方式產生awr報告,但並不能直接使用在自動化架構中,至少需要做一些改造,將互動的模式變成可以靜默執行。

一 問題分析

經過對問題的分析,有兩種基本的解決思路:

A.  在oracle伺服器上部署shell指令碼,使用shell命令啟動oracle的sqlplus執行autoawr.sql,其中autoawr.sql主要用於擷取必須入參值,然後調用oracle包的DBMS_WORKLOAD_REPOSITORY.awr_report_html實現awr報告的自動產生;

B.  直接在效能架構裡通過本地的sqlplus調用oracle包的DBMS_WORKLOAD_REPOSITORY.awr_report_html實現awr報告的產生;

二 方案比較

兩種思路的比較:

對於A,需要提前將改造的shell指令碼和sql指令碼部署到oracle伺服器,該步驟是脫離架構的,且產生的報告是在oracle伺服器上,需要架構提供方法將遠程oracle上的awr擷取到本地,用於後續分析和報告輸出;

對於B,在架構實現了該功能,使用架構前無需額外部署,使架構更獨立,使用更方便,且可以直接將報告產生在本地指定的位置;

本質上,兩種思路是相同的,只是對於效能架構而言,該功能應該在哪端實現,是效能架構還是oracle伺服器。

三 實現思路

通過對實現端的比較,決定將該功能在效能架構實現,簡要描述一下實現思路。

實現分為三步:

第一:擷取awr_report_html函數的4參數,即dbid,inst_num,l_bid,l_eid;

第二:拼接調用awr_report_html且使用spool將結果寫入html的sql語句;

第三:調用sqlplus執行sql檔案,產生awr;

四  awr_report_html函數

Awr_report_html函數如下:

函數使用方法一般為:

SELECT output FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(dbid, inst_num,l_bid,l_eid,0));

需要注意的是:

1.  雖然通過調用AWR_REPORT_HTML可以select到html格式的text,在python實現時我並沒有將返回結果放到迭代器裡,通過readlines的方法寫入html檔案,因output裡包含了一些額外資訊,產生的html並不能順利開啟,原因與sqlplus的參數配置有關,因為採用spool直接寫入檔案的方法;

2.  使用spool時,在sql指令碼裡設定以下sqlplus配置,避免輸出中包含無關資訊或格式問題,設定如下:

set heading off

set trimout on

set trimspool on

set linesize 2500

五 python 源碼

根據上述思路,實現源碼如下:

其他資源:

python入門課程:http://i.youku.com/weiworld521


python實現自動產生oracle awr報告

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.