2012年8月2日 星期四

Oracle DBA - Use DBMS_PROFILER performance tuning

DBMS_PROFILER該工具包主要用來追蹤PL/SQL執行過程中所使用的時間及SQL語句,以供DBA人員分析該PL/SQL裡TOP 10的SQL為何,DBA就可進一步針對該SQL進行SQL Tuning。

<前置作業>
Step 1. 請先檢查該Package是否已存在:

SELECT *
  FROM DBA_OBJECTS A
 WHERE A.OBJECT_NAME = 'DBMS_PROFILER';
若沒有資料,則表示該Package未建立,故請透過以下步驟來建立所需的Package及Table。
(該Package好像是Oracle 8i開始提供的)
Step 1.1. 請使用DBA權限登入 (例 : sqlplus / as sysdba)
Step 1.2. SQL>@?/rdbms/admin/profload.sql  (profload.sql將會建立該Package並Grant權限)
Step 1.3. SQL>@?/rdbms/admin/proftab.sql
      (proftab.sql將會建立PLSQL_PROFILER_DATA / PLSQL_PROFILER_UNITS / PLSQL_PROFILER_RUNS)

Step 2. 由Metalink下戴243755.1下戴Script ==> profiler.sql
Script to produce HTML report with top consumers out of PL/SQL Profiler DBMS_PROFILER data [ID 243755.1]

<PL/SQL 執行數據的收集>
Step 1. 執行DBMS_PROFILER.START_PROFILER來啟動收集程序 。
Step 2. 執行所需監控的PL/SQL。
Step 3. 執行DBMS_PROFILER.STOP_PROFILER來停止收集程序。
Step 4. 執行profiler.sql 進行HTML文件的產生

例 :

begin
  DBMS_PROFILER.START_PROFILER('你自己的說明'); --啟動收集程序
  --
  MY_PKG.P_TEST();  --所需監控的PL/SQL
  --
  DBMS_PROFILER.STOP_PROFILER(); --停止收集程序
end;


SQL>@profiler.sql

其產出的HTML文件就會列出其TOP 10的SQL




沒有留言:

張貼留言