oracle10G新特性之撤消顧問和自動工作負載倉庫

antcorps發表於2008-08-24
oracle10G新特性之撤消顧問和自動工作負載倉庫[@more@]

撤消顧問提供了撤消表空間的調整資訊,撤消顧問依賴於oracle10g的另一個新特性:自動工作負載倉庫(automatic workload repository,AWR)。
它包含資料庫中所有關鍵統計和工作量每隔30分鐘的快照,預設保留7天的統計,當然也可以根據環境調整快照間隔和保留週期。為了建立撤消顧問來分析撤消空間的利用率,也需要使用匿名的PL/SQL塊,然而在可以使用撤消顧問之前,還需要確定分析的時間框架,具體步驟為:
確定分析的時間,即確定末一時間段的快照範圍:
select snap_id,begin_interval_time,end_interval_time from dba_hist_snapshot where
begin_interval_time > '24-jan-08 08.00.00 PM' and end_interval_time < '24-jan-08 09.31.00 PM' order by end_interval_time desc;
假如snap_id的結果是6,7,8

建立撤消顧問分析撤消表空間,可以使用如下匿名的PL/SQL塊
variable task_id number
declare
task_id number;
name varchar2(100);
descr varchar2(500);
obj_id number;
begin
name :='';
descr :='check undo tablespace';
dbms_advisor.create_task ('undo advisor', :task_id,name,descr);
dbms_advisor.create_object ('name','UNDO_TBS',null,null,null,'null',obj_id);
dbms_advisor.set_task_parameter(name,'TARGET_OBJECTS',obj_id);
dbms_advisor.set_task_parameter(name,'START_SNAPSHOT',6);
dbms_advisor.set_task_parameter(name,'END_SNAPSHOT',8);
dbms_advisor.set_task_parameter(name,'INSTANCE',1);
dbms_advisor.execute_task(name);
end;

print task_id 假設task_id為16

執行完後可以透過dba_advisor_findings檢視來檢視撤消顧問所發現的內容,如:
select owner,task_id,task_name,type,message,more_info from dba_advisor_findings where task_id=16;
為了從AWR中生成文字或HTML報表,可以執行$ORACLE_HOME/rdbms/admin/swrfrpth.sql

自動工作負載倉庫(automatic workload repository,AWR):

類似於statspack,AWR收集和維護用於效能檢測和自動調整目的的效能統計,可以生成關於AWR資料的報表,並可透過檢視訪問它。AWR以小時為基礎捕獲系統統計,並將資料儲存在它的儲存庫表中。預設情況下只保留7天的資料量,可以透過dba_hist_snapshot檢視來檢視儲存在AWR儲存庫中的快照。為了啟用AWR,可以設定statistics_level初始引數為:typical或all。如果為basic,則可以獲得AWR的手工快照,但這種快照不會具有自動執行的快照相同的全面性。
如果使用手工快照,可以使用dbms_workload_repository程式包的create_snapshot過程:
execute dbms_workload_repository.create_snapshot();
可以改變快照設定,使用modify_snapshot_settings過程,可以修改快照的保留時間和間隔時間(都是以分鐘為單位),如:
execute dbms_workload_repository.modify_snapshot_settings(interval=>30);
刪除一定範圍的快照,可以使用drop_snapshot_range過程,同時指定刪除的開始快照ID和結束快照ID,如:
execute dbms_workload_repository.drop_snapshot_range(low_snap_id=>1,high_snap_id=>10);
同時也可以指定一組快照做為系統效能的基線,以便用於在後面與快照的效能進行比較,建立基線可以透過create_baseline過程,如:
execute dbms_workload_repository.create_baseline(start_snap_id=>1,end_snap_id=>10,baseline_name=>'monday baseline');
可以透過檢視dba_hist_baseline來檢視過去的基線,如果要刪除基線,可以使用drop_baseline過程,如:
execute dbms_workload_repository.drop_baseline(baseline_name=>'monday baseline',cascade=>false);這表示刪除基線不刪除對應快照。
接下來我們可以透過OEM或awrrpt.sql,awrrpti.sql指令碼來從AWR中生成報表,awrrpt.sql指令碼根據開始快照和結束快照之間統計方面的差別來生成報表,awrrpti.sql根據指定資料庫和例項的開始快照和結束快照來顯示報表。
除了手工報告,還可以透過使用automatic database diagnostic monitor(ADDM),這就是要設定statistics_level初始引數為:typical或all,為了執行針對一組快照的ADDM,可以使用addmrpt.sql指令碼。
為了檢視ADDM,可以透過OEM或顧問資料字典檢視檢視,顧問字典檢視主要包括:
dba_advisor_tasks(已有的任務),dba_advisor_log(任務的狀態和進展),dba_advisor_recommendations(完成的診斷任務和推薦),
dba_advisor_findings,可以透過推薦的方法來解決透過ADDM發現的問題。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20444553/viewspace-1009420/,如需轉載,請註明出處,否則將追究法律責任。

相關文章