gdufo

           

          Oracle AWR 手動(dòng)配置

          http://www.cnblogs.com/sopost/archive/2011/10/22/2221498.html
          exec dbms_workload_repository.modify_snapshot_settings(interval=>0) ;//60分中為一小時(shí),0是自動(dòng)關(guān)閉

          1.查看當(dāng)前的AWR保存策略
          select * from dba_hist_wr_control;

          DBID,SNAP_INTERVAL,RETENTION,TOPNSQL
          860524039,+00 01:00:00.000000,+07 00:00:00.000000,DEFAULT
          以上結(jié)果表示,每小時(shí)產(chǎn)生一個(gè)SNAPSHOT,保留7天
          2.調(diào)整AWR配置
          AWR配置都是通過(guò)dbms_workload_repository包進(jìn)行配置
          2.1調(diào)整AWR產(chǎn)生snapshot的頻率和保留策略,如:如將收集間隔時(shí)間改為30 分鐘一次。并且保留5天時(shí)間(注:?jiǎn)挝欢际菫榉昼姡?br />exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);
          2.2關(guān)閉AWR,把interval設(shè)為0則關(guān)閉自動(dòng)捕捉快照
          2.3手工創(chuàng)建一個(gè)快照
          exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
          2.4 查看快照
          select * from sys.wrh$_active_session_history
          2.5手工刪除指定范圍的快照
          exec WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 22, high_snap_id => 32, dbid => 3310949047);
          2.6創(chuàng)建baseline
          exec dbms_workload_repository.create_baseline (56,59,'apply_interest_1')
          2.7刪除baseline
          exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => ' apply_interest_1', cascade => FALSE);

          3.生產(chǎn)AWR報(bào)告
          $ORACLE_HOME/rdbms/admin/awrrpt.sql
           

          4.1 Snapshots( 快照)

            前面操作報(bào)表生成時(shí),snap這個(gè)關(guān)鍵字已經(jīng)出現(xiàn)過(guò)多次了,想必你對(duì)它充滿了疑惑,這個(gè)東西是哪來(lái)的咋來(lái)的誰(shuí)讓它來(lái)的呢?事實(shí)上,Snap是Snapshot的簡(jiǎn)寫(xiě),這正是AWR在自動(dòng)性方面的體現(xiàn),雖然你沒(méi)有創(chuàng)建,但是AWR自動(dòng)幫你創(chuàng)建了(當(dāng)然也可以手動(dòng)創(chuàng)建snapshot),并且是定時(shí)(每小時(shí))創(chuàng)建,定期清除(保留最近7天)。

            Snapshots 是一組某個(gè)時(shí)間點(diǎn)時(shí)歷史數(shù)據(jù)的集合,這些數(shù)據(jù)就可被ADDM(Automatic Database Diagnostic Monitor)用來(lái)做性能對(duì)比。默認(rèn)情況下,AWR能夠自動(dòng)以每小時(shí)一次的頻率生成Snapshots性能數(shù)據(jù),并保留7天,,如果需要的話,DBA可以通過(guò)DBMS_WORKLOAD_REPOSITORY過(guò)程手動(dòng)創(chuàng)建、刪除或修改snapshots。

            提示:調(diào)用DBMS_WORKLOAD_REPOSITORY包需要擁有DBA權(quán)限。

          4.1.1  手動(dòng)創(chuàng)建Snapshots

            手動(dòng)創(chuàng)建Snapshots,通過(guò)DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT過(guò)程,例如:

          SQL> exec dbms_workload_repository.create_snapshot();

            PL/SQL procedure successfully completed.

            然后可以通過(guò)DBA_HIST_SNAPSHOT 視圖查看剛剛創(chuàng)建的Snapshots信息。

          4.1.2  手動(dòng)刪除Snapshots

            刪除Snapshots是使用DBMS_WORKLOAD_REPOSITORY包的另一個(gè)過(guò)程:DROP_SNAPSHOT_RANGE,該過(guò)程在執(zhí)行時(shí)可以通過(guò)指定snap_id的范圍的方式一次刪除多個(gè)Snapshots,例如:

          SQL> select count(0) from dba_hist_snapshot where snap_id between 7509 and 7518;

            COUNT(0)

          ----------

                  10

          SQL> begin

            2   dbms_workload_repository.drop_snapshot_range(

            3     low_snap_id => 7509,

            4     high_snap_id => 7518,

            5     dbid => 3812548755);

            6  end;

            7  /

          PL/SQL procedure successfully completed.

          SQL> select count(0) from dba_hist_snapshot where snap_id between 7509 and 7518;

            COUNT(0)

          ----------

                     0

            注意當(dāng)snapshots被刪除的話,與其關(guān)聯(lián)的ASH記錄也會(huì)級(jí)聯(lián)刪除。

          4.1.3  修改Snapshots設(shè)置

            通過(guò)MODIFY_SNAPSHOT_SETTINGS過(guò)程,DBA可以調(diào)整包括快照收集頻率、快照保存時(shí)間、以及捕獲的SQL數(shù)量三個(gè)方面的設(shè)置。分別對(duì)應(yīng)MODIFY_SNAPSHOT_SETTINGS的三個(gè)參數(shù):

          • Retention :設(shè)置快照保存的時(shí)間,單位是分鐘。可設(shè)置的值最小為1天,最大為100年。設(shè)置該參數(shù)值為0的話,就表示永久保留收集的快照信息。
          • Interval :設(shè)置快照收集的頻率,以分鐘為單位。可設(shè)置的值最小為10分鐘,最大為1年。如果設(shè)置該參數(shù)值為0,就表示禁用AWR特性。
          • Topnsql :指定收集的比較占用資源的SQL數(shù)量,可設(shè)置的值最小為30,最大不超過(guò)100000000。

            查看當(dāng)前快照收集的相關(guān)設(shè)置,可以通過(guò)DBA_HIST_WR_CONTROL視圖查看,例如:

          SQL> select * from dba_hist_wr_control;

           

                DBID SNAP_INTERVAL            RETENTION            TOPNSQL

          ---------- ------------------------ -------------------- ----------

            3812548755 +00000 01:00:00.0        +00007 00:00:00.0    DEFAULT

            又比如通過(guò)MODIFY_SNAPSHOT_SETTTINGS過(guò)程修改snap_intrval的設(shè)置:

          SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>120);

          PL/SQL procedure successfully completed.

          SQL> select * from dba_hist_wr_control;

           

                DBID SNAP_INTERVAL            RETENTION            TOPNSQL

          ---------- ------------------------ -------------------- ----------

            3812548755 +00000 02:00:00.0        +00007 00:00:00.0    DEFAULT

          4.2 Baselines( 基線)

            Baseline ,直譯的話叫做基線,顧名思義的方式理解,就是用于比較的基本線。因?yàn)锽aseline中包含指定時(shí)間點(diǎn)時(shí)的性能數(shù)據(jù),因此就可以用來(lái)與其它時(shí)間點(diǎn)時(shí)的狀態(tài)數(shù)據(jù)做對(duì)比,以分析性能問(wèn)題。

            創(chuàng)建Baseline時(shí),Snapshots是做為其中的一個(gè)組成部分存在,因此一般來(lái)說(shuō)當(dāng)AWR自動(dòng)維護(hù)快照時(shí),如果定義過(guò)baseline,與baseline相關(guān)的快照不會(huì)被刪除,即使是過(guò)期的快照,這樣就相當(dāng)于手動(dòng)保留了一份統(tǒng)計(jì)數(shù)據(jù)的歷史信息,DBA可以在適當(dāng)?shù)臅r(shí)間將其與現(xiàn)有的快照進(jìn)行對(duì)比,以生成相關(guān)的統(tǒng)計(jì)報(bào)表。

            用戶可以通過(guò)DBMS_WORKLOAD_REPOSITORY包中的相關(guān)過(guò)程,手動(dòng)的創(chuàng)建或刪除Baseline。

          4.2.1  創(chuàng)建Baseline

            創(chuàng)建Baseline使用CREATE_BASELINE過(guò)程,執(zhí)行該過(guò)程時(shí)分別指定開(kāi)始和結(jié)果的snap_id,然后為該baseline定義一個(gè)名稱即可,例如:

          SQL> BEGIN

            2    DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id => 7550,

            3                                             end_snap_id   => 7660,

            4                                             baseline_name => ¨am_baseline¨);

            5  END;

            6  /

          PL/SQL procedure successfully completed.

          SQL> select dbid,baseline_name,start_snap_id,end_snap_id from dba_hist_baseline;

                DBID BASELINE_NAME        START_SNAP_ID END_SNAP_ID

          ---------- -------------------- ------------- -----------

            3812548755 am_baseline                   7550        7660

          4.2.2  刪除Baseline

            刪除Baseline使用DROP_BASELINE過(guò)程,刪除時(shí)可以通過(guò)cascade參數(shù)選擇是否將其關(guān)聯(lián)的Snapshots級(jí)別進(jìn)行刪除,例如:

          SQL> BEGIN

            2    DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => ¨am_baseline¨,

            3                                           cascade       => true);

            4  END;

            5  /

          PL/SQL procedure successfully completed.

          SQL> select * from dba_hist_baseline;

          no rows selected

          SQL> select * from dba_hist_snapshot where snap_id between 7550 and 7660;

            no rows selected

            如上例中所示,刪除時(shí)指定了cascade參數(shù)值為true,對(duì)應(yīng)的snap也被級(jí)聯(lián)刪除了。

           

          不管是EM也好,或是前面演示中使用的awr*.sql腳本也好,實(shí)質(zhì)都是訪問(wèn)ORACLE中的部分相關(guān)視圖來(lái)生成統(tǒng)計(jì)數(shù)據(jù),因此如果DBA對(duì)自己的理解能力有足夠的自信,也可以直接查詢動(dòng)態(tài)性能視圖(或相關(guān)數(shù)據(jù)字典)的方式來(lái)獲取自己想要的那部分性能數(shù)據(jù)。ORACLE將這部分性能統(tǒng)計(jì)數(shù)據(jù)保存在DBA_HIST開(kāi)頭的數(shù)據(jù)字典中,要查詢當(dāng)前實(shí)例所有能夠訪問(wèn)的DBA_HIST字典,可以通過(guò)下列語(yǔ)句:

          SQL> select * from dict where table_name like ¨DBA_HIST%¨;

          TABLE_NAME COMMENTS

          ------------------------------ --------------------------------------------------------------------------------

          DBA_HIST_DATABASE_INSTANCE Database Instance Information

          DBA_HIST_SNAPSHOT Snapshot Information

          DBA_HIST_SNAP_ERROR Snapshot Error Information

          DBA_HIST_BASELINE Baseline Metadata Information

          DBA_HIST_WR_CONTROL Workload Repository Control Information

          DBA_HIST_DATAFILE Names of Datafiles

          DBA_HIST_FILESTATXS Datafile Historical Statistics Information

          DBA_HIST_TEMPFILE Names of Temporary Datafiles

          DBA_HIST_TEMPSTATXS Temporary Datafile Historical Statistics Information

          DBA_HIST_COMP_IOSTAT I/O stats aggregated on component level

          DBA_HIST_SQLSTAT SQL Historical Statistics Information

          DBA_HIST_SQLTEXT SQL Text

          ......................

            ........................

            ORACLE 數(shù)據(jù)庫(kù)中以DBA_HIST命名的視圖非常多,下面簡(jiǎn)單介紹幾個(gè),比如說(shuō):

          • V$ACTIVE_SESSION_HISTORY

            該視圖由ASH自動(dòng)維護(hù),以每秒一次的頻率收集當(dāng)前系統(tǒng)中活動(dòng)session的信息。雖然說(shuō)是記錄SESSION的歷史記錄,不過(guò)該視圖與V$SESSION還是有差異的。

          SQL> desc v$active_session_history;

          Name Type Nullable Default Comments

          ------------------------- ------------ -------- ------- --------

          SAMPLE_ID NUMBER Y

          SAMPLE_TIME TIMESTAMP(3) Y

          SESSION_ID NUMBER Y

          SESSION_SERIAL# NUMBER Y

          USER_ID NUMBER Y

          SQL_ID VARCHAR2(13) Y

          SQL_CHILD_NUMBER NUMBER Y

          SQL_PLAN_HASH_VALUE NUMBER Y

          FORCE_MATCHING_SIGNATURE NUMBER Y

          SQL_OPCODE NUMBER Y

          PLSQL_ENTRY_OBJECT_ID NUMBER Y

          PLSQL_ENTRY_SUBPROGRAM_ID NUMBER Y

          PLSQL_OBJECT_ID NUMBER Y

          PLSQL_SUBPROGRAM_ID NUMBER Y

          SERVICE_HASH NUMBER Y

          SESSION_TYPE VARCHAR2(10) Y

          SESSION_STATE VARCHAR2(7) Y

          QC_SESSION_ID NUMBER Y

          QC_INSTANCE_ID NUMBER Y

          BLOCKING_SESSION NUMBER Y

          BLOCKING_SESSION_STATUS VARCHAR2(11) Y

          BLOCKING_SESSION_SERIAL# NUMBER Y

          EVENT VARCHAR2(64) Y

          EVENT_ID NUMBER Y

          EVENT# NUMBER Y

          SEQ# NUMBER Y

          P1TEXT VARCHAR2(64) Y

          P1 NUMBER Y

          P2TEXT VARCHAR2(64) Y

          P2 NUMBER Y

          P3TEXT VARCHAR2(64) Y

          P3 NUMBER Y

          WAIT_CLASS VARCHAR2(64) Y

          WAIT_CLASS_ID NUMBER Y

          WAIT_TIME NUMBER Y

          TIME_WAITED NUMBER Y

          XID RAW(8) Y

          CURRENT_OBJ# NUMBER Y

          CURRENT_FILE# NUMBER Y

          CURRENT_BLOCK# NUMBER Y

          PROGRAM VARCHAR2(48) Y

          MODULE VARCHAR2(48) Y

          ACTION VARCHAR2(32) Y

            CLIENT_ID VARCHAR2(64) Y

            v$session 中與操作相關(guān)的列均被收集,除此之外還冗余了部分列,這是為了方便DBA查詢V$ACTIVE_SESSION_HISTORY時(shí)能夠快速獲取到自己需要的數(shù)據(jù)。

          • DBA_HIST_ACTIVE_SESS_HISTORY

            該視圖與V$ACTIVE_SESSION_HISTORY的結(jié)構(gòu)灰常灰常灰常的想像,功能也灰常灰常灰常的類似,都是記錄活動(dòng)session的操作記錄,所不同點(diǎn)在于,V$ACTIVE_SESSION_HISTORY是ORACLE自動(dòng)在內(nèi)存中維護(hù)的,受制于其可用內(nèi)存區(qū)限制,并非所有記錄都能保存,而DBA_HIST_ACTIVE_SESS_HISTORY視圖則是維護(hù)到磁盤中的。簡(jiǎn)單理解的話,就是說(shuō)通常情況下,DBA_HIST_ACTIVE_SESS_HISTORY視圖的數(shù)據(jù)量要比V$ACTIVE_SESSION_HISTORY的多。

            提示:上述結(jié)構(gòu)并不絕對(duì),因?yàn)槟J(rèn)情況下DBA_HIST_ACTIVE_SESS_HISTORY字典的數(shù)據(jù)每10秒收集一次,而V$ACTIVE_SESSION_HISTORY中則是每秒一次,因此也有可能V$ACTIVE_SESSION_HISTORY中記錄量更大。不過(guò)相對(duì)來(lái)說(shuō),DBA_HIST字典中保存的數(shù)據(jù)更長(zhǎng)久。
          • DBA_HIST_DATABASE_INSTANCE

            該視圖用來(lái)顯示數(shù)據(jù)庫(kù)和實(shí)例的信息,比如DBID,實(shí)例名,數(shù)據(jù)庫(kù)版本等等信息,生成報(bào)表中第一行表格,就是由該視圖生成的。如圖:

            

            如果你去分析awrrpt.sql腳本的話,會(huì)發(fā)現(xiàn)其中有如下腳本,上述表格中顯示的內(nèi)容信息,正是來(lái)自于下列腳本:

          select distinct

          (case when cd.dbid = wr.dbid and

          cd.name = wr.db_name and

          ci.instance_number = wr.instance_number and

          ci.instance_name = wr.instance_name

          then ¨* ¨

          else ¨ ¨

          end) || wr.dbid dbbid

          , wr.instance_number instt_num

          , wr.db_name dbb_name

          , wr.instance_name instt_name

          , wr.host_name host

            from dba_hist_database_instance wr, v$database cd, v$instance ci;
          • DBA_HIST_SNAPSHOT

            該視圖用來(lái)記錄當(dāng)前數(shù)據(jù)庫(kù)收集到的快照信息。相信朋友應(yīng)該還記得之前使用腳本生成報(bào)表時(shí),輸入完快照區(qū)間后顯示的一堆列表,沒(méi)錯(cuò),那正是DBA_HIST_SNAPSHOT記錄的內(nèi)容,該段功能對(duì)應(yīng)的代碼如下:

          select to_char(s.startup_time,¨dd Mon "at" HH24:mi:ss¨) instart_fmt

          , di.instance_name inst_name

          , di.db_name db_name

          , s.snap_id snap_id

          , to_char(s.end_interval_time,¨dd Mon YYYY HH24:mi¨) snapdat

          , s.snap_level lvl

          from dba_hist_snapshot s

          , dba_hist_database_instance di

          where s.dbid = :dbid

          and di.dbid = :dbid

          and s.instance_number = :inst_num

          and di.instance_number = :inst_num

          and di.dbid = s.dbid

          and di.instance_number = s.instance_number

          and di.startup_time = s.startup_time

          and s.end_interval_time >= decode( &num_days

          , 0 , to_date(¨31-JAN-9999¨,¨DD-MON-YYYY¨)

          , 3.14, s.end_interval_time

          , to_date(:max_snap_time,¨dd/mm/yyyy¨) - (&num_days-1))

            order by db_name, instance_name, snap_id;

          posted on 2013-03-15 22:02 gdufo 閱讀(2341) 評(píng)論(0)  編輯  收藏 所屬分類: Database (oracle, sqlser,MYSQL)

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Hibernate

          友情鏈接

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 定襄县| 崇义县| 密山市| 亚东县| 德安县| 三台县| 高淳县| 阿鲁科尔沁旗| 滨海县| 冷水江市| 抚州市| 九龙县| 新乐市| 金华市| 凤冈县| 清流县| 松滋市| 卫辉市| 穆棱市| 黄冈市| 河池市| 磐安县| 南投县| 当雄县| 香河县| 澄城县| 剑河县| 册亨县| 宝丰县| 磴口县| 鄯善县| 长乐市| 天气| 民丰县| 凌海市| 会宁县| 阳春市| 若羌县| 阳曲县| 衡南县| 福贡县|