產生AWR及單個sql的執行計劃

mengzhaoliang發表於2009-06-17

1、              進入資料庫

CSXXDBS01:/> su - oraoms

$

$

$ sqlplus "/as sysdba"

2、              執行awr指令碼

SQL> @?/rdbms/admin/awrrpt.sql        (可以去兩個快照之間的awr報告)

 

注:AWR預設保留資料庫7天的快照,每個小時產生一個快照

調整AWR產生snapshot的頻率和保留策略,如將收集間隔時間改為30 分鐘一次。並且保留5天時間(單位都是分鐘):
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);

 

測試系統:

1、              手工先在資料庫中建立一個快照

SQL> execute dbms_workload_repository.create_snapshot();

 

PL/SQL procedure successfully completed.

 

2、              開啟生產系統,點選“單井彙總資訊”20多秒才出來頁面

3、再生產一個快照

SQL> execute dbms_workload_repository.create_snapshot();

 

PL/SQL procedure successfully completed.

3、              去兩個快照之間的AWR報告

SQL> @?/rdbms/admin/awrrpt.sql 

4、可以根據上面的awr報告中,找出花費時間比較長的單條sql語句的執行計劃

如:sql id c0yffdyps8uk9  花費了26秒時間

SQL> @?/rdbms/admin/awrsqrpt.sql

 

Specify the Begin and End Snapshot Ids

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Enter value for begin_snap: 1679

Begin Snapshot Id specified: 1679

 

Enter value for end_snap: 1680

End   Snapshot Id specified: 1680

 

 

 

 

Specify the SQL Id

~~~~~~~~~~~~~~~~~~

Enter value for sql_id:     (輸入c0yffdyps8uk9

 

這樣生產的sql可以很容易的看出該sql的執行計劃。

 

 

 

 

 

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

相關文章