.手工創(chuàng)建一個快照
SQL> select * from dba_hist_snapshot order by 1 desc;
SQL> exec dbms_workload_repository.create_snapshot;
2.手工刪除指定范圍的快照
SQL> select * from sys.wrh$_active_session_history order by snap_id desc;
SQL> select * from dba_hist_snapshot order by 1 desc;
SQL> execute dbms_workload_repository.drop_snapshot_range(low_snap_id=> 26, high_snap_id=> 44, dbid=> 1236598332);
SQL> select * from sys.wrh$_active_session_history order by snap_id desc;
3.修改采集時(shí)間和統(tǒng)計(jì)信息保留時(shí)間(默認(rèn)的的收集間隔為1小時(shí),保存時(shí)間為1周)
SQL> select * from dba_hist_wr_control;
SQL> execute dbms_workload_repository.modify_snapshot_settings(interval=>10,retention=> 60*24*7);
--修改快照的收集間隔為10分鐘,保存時(shí)間為1周。
SQL> select * from dba_hist_wr_control;
4.設(shè)置基線
基線(baseline)是一種機(jī)制,這樣你可以在重要時(shí)間的快照信息集做標(biāo)記。一個基線定義在一對快照之間,快照通過他們的快照序列號識別.每個基線有且只有一對快照。
SQL> select * From dba_hist_baseline;
SQL> select * from sys.wrm$_baseline;
SQL> exec dbms_workload_repository.create_baseline(45, 46, 'base_line_test_1');
這一操作將快照從 45 到 46 編號,作為上面指定的基準(zhǔn)線的一部分。查看現(xiàn)有的基準(zhǔn)線:
SQL> select * From dba_hist_baseline;
SQL> select * from sys.wrm$_baseline;
在一些調(diào)整步驟之后,我們可以創(chuàng)建另一個基準(zhǔn)線 — 假設(shè)名稱為 apply_interest_2,然后只為那些與這兩條基準(zhǔn)線相關(guān)的快照比較量度。
SQL> exec dbms_workload_repository.create_baseline(46, 47, 'base_line_test_2');
5.刪除基線
SQL> exec dbms_workload_repository.drop_baseline(baseline_name=>'base_line_test_1', cascade=>false);
SQL> exec dbms_workload_repository.drop_baseline(baseline_name=>'base_line_test_2', cascade=>true);
說明:cascade=>false,只刪除基線,不刪除快照;cascade=>true基線、快照都刪除。
6.生成報(bào)表
可以使用腳本awrrpt.sql或awrrpti.sql來查看AWR報(bào)告,這兩個腳本都在目錄$ORACLE_HOME/rdbms/admin中。Awrrpt.sql腳本可以顯示指定快照id范圍的診斷信息,報(bào)告可以保存為文本文件或HTML文件;awrrpti.sql腳本與awrrpt.sql類似,唯一的不同就是在awrrpti.sql腳本中,你可以指定數(shù)據(jù)庫ID和實(shí)例ID(作為參數(shù))。
SQL> @D:\oracle\product.1.0\db_1\RDBMS\ADMIN\awrrpt.sql;
注意看提示,一步步操作。
7.將AWR數(shù)據(jù)導(dǎo)出并遷移到其它數(shù)據(jù)庫以便于以后分析(Oracle10g Release2提供兩個新工具來完成導(dǎo)出和遷移,需要在sys用戶下)
SQL> execute DBMS_SWRF_INTERNAL.AWR_EXTRACT(dmpfile=> 'awr_data', dmpdir=> 'UTL_DIR', bid=> 32, eid=> 35 ,dbid=> 1233305016 );
8.遷移AWR數(shù)據(jù)文件到其他數(shù)據(jù)庫(Oracle10g Release2提供兩個新工具來完成導(dǎo)出和遷移,需要在sys用戶下)
SQL> exec DBMS_SWRF_INTERNAL.AWR_LOAD(SCHNAME=> 'EDW', dmpfile=> 'awr_data', dmpdir=> 'UTL_DIR');
把AWR數(shù)據(jù)轉(zhuǎn)移到SYS模式中:
SQL> exec DBMS_SWRF_INTERNAL.MOVE_TO_AWR (SCHNAME=> 'TEST');
通過awr特性我們可以隨時(shí)從數(shù)據(jù)庫提取awr報(bào)告。通過報(bào)告可以了解一個系統(tǒng)的整個運(yùn)行情況,生成的報(bào)告包括多個部分。下面用shell腳本來收集每天開始時(shí)間6點(diǎn),結(jié)束時(shí)間20點(diǎn)的awr報(bào)告并存儲在/home/oracle/awr/report/目錄下
目錄:mkdir -p /home/oracle/awr/report
腳本:/home/oracle/awr/awr.sh
執(zhí)行用戶:oracle
vi /home/oracle/awr/awr.sh
#!/bin/bash # ******************************** # * awr.sh # ******************************** export ORACLE_SID=nwppdb export ORACLE_BASE=/home/oracle/app/oracle export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1 #the big snap_id m=(`sqlplus -S "/ as sysdba" << EOF set pagesize 0 feedback off verify off heading off echo off select max(snap_id) from dba_hist_snapshot where begin_interval_time>to_date(to_char(sysdate,'YYYY-MM-DD')||' 06 ','YYYY-MM-DD HH24') and end_interval_time<=to_date(to_char(sysdate,'YYYY-MM-DD')||' 20','YYYY-MM-DD HH24'); EOF`) #the small snap_id n=(`sqlplus -S "/ as sysdba" << EOF set pagesize 0 feedback off verify off heading off echo off select min(snap_id) from dba_hist_snapshot where begin_interval_time>to_date(to_char(sysdate,'YYYY-MM-DD')||' 06 ','YYYY-MM-DD HH24') and end_interval_time<=to_date(to_char(sysdate,'YYYY-MM-DD')||' 20','YYYY-MM-DD HH24'); EOF`) name=(`sqlplus -S "/ as sysdba" << EOF set pagesize 0 feedback off verify off heading off echo off select instance_name from v\\\$instance; EOF`) date=(`sqlplus -S "/ as sysdba" << EOF set pagesize 0 feedback off verify off heading off echo off select to_char(sysdate,'yyyymmddhh24') from dual; EOF`) sqlplus -S "/ as sysdba" <<EOF @$ORACLE_HOME/rdbms/admin/awrrpt.sql; html 1 $n $m /home/oracle/awr/report/awrrpt_1_${name}_${date}.html EOF
這里大家注意根據(jù)需要修改ORACLE_SID、ORACLE_BASE、ORACLE_HOME參數(shù)
chmod u+x awr.sh
./awr.sh
執(zhí)行過程如下:
拷貝html到本地后查看awr報(bào)告:
crontab -e 設(shè)置每天晚上23:30自動執(zhí)行腳本收集awr報(bào)告
30 23 * * * sh /home/oracle/awr/awr.sh
關(guān)于用shell腳本自動生成awr報(bào)告的內(nèi)容就介紹到這了,大家也可以自己根據(jù)需要對腳本做調(diào)整。后面會分享更多關(guān)于devops和DBA方面內(nèi)容,感興趣的朋友可以關(guān)注下!!
*請認(rèn)真填寫需求信息,我們會在24小時(shí)內(nèi)與您取得聯(lián)系。