Oracle Statspack - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Oracle Statspack

Oracle Statspack 選項會安裝和啟用 Oracle Statspack 效能統計資料功能。Oracle Statspack 是 SQL、PL/SQL 和 SQL*Plus 指令碼的集合,這些指令碼會收集、存放並顯示效能資料。如需有關使用 Oracle Statspack 的資訊,請參閱 Oracle 文件中的 Oracle Statspack

注意

Oracle Statspack 不再由 Oracle 所支援,已替換為更進階的「自動工作負載資料儲存器 (AWR)」。只有已購買診斷套件的 Oracle Enterprise Edition 客戶才能使用 AWR。您可以將 Oracle Statspack 與 Amazon RDS 上的任何 Oracle 資料庫引擎搭配使用。您無法在 Amazon RDS 讀取複本上執行 Oracle Statspack。

設定 Oracle Statspack

若要執行 Statspack 指令碼,您必須新增 Statspack 選項。

設定 Oracle Statspack
  1. 在 SQL 用戶端中,使用管理帳戶登入 Oracle 資料庫。

  2. 根據是否已安裝 Statspack,執行下列其中一個動作:

    • 如果已安裝 Statspack,且 PERFSTAT 帳戶與 Statspack 相關聯,請跳至步驟 4。

    • 如果沒有安裝 Statspack,且 PERFSTAT 帳戶存在,請按以下方式捨棄帳戶:

      DROP USER PERFSTAT CASCADE;

      否則,嘗試新增 Statspack 選項會產生錯誤和 RDS-Event-0058

  3. 將 Statspack 選項新增至選項群組。請參閱將選項新增至選項群組

    Amazon RDS 會自動在資料庫執行個體上安裝 Statspack 指令碼,然後設定 PERFSTAT 帳戶。

  4. 使用以下 SQL 陳述式重設密碼,用新密碼替換 pwd

    ALTER USER PERFSTAT IDENTIFIED BY pwd ACCOUNT UNLOCK;

    您可以使用 PERFSTAT 使用者帳戶登入並執行 Statspack 指令碼。

  5. 請使用下列陳述式將 CREATE JOB 權限授予 PERFSTAT 帳戶:

    GRANT CREATE JOB TO PERFSTAT;
  6. 確定已填入 PERFSTAT.STATS$IDLE_EVENT 表格中的閒置等待事件。

    由於 Oracle 錯誤 28523746,PERFSTAT.STATS$IDLE_EVENT 中的閒置等待事件可能不會填入。若要確保所有閒置事件都可用,請執行下列陳述式:

    INSERT INTO PERFSTAT.STATS$IDLE_EVENT (EVENT) SELECT NAME FROM V$EVENT_NAME WHERE WAIT_CLASS='Idle' MINUS SELECT EVENT FROM PERFSTAT.STATS$IDLE_EVENT; COMMIT;

產生 Statspack 報告

Statspack 報告會比較兩個快照。

產生 Statspack 報告
  1. 在 SQL 用戶端中,使用 PERFSTAT 帳戶登入 Oracle 資料庫。

  2. 使用下列其中一種技巧建立快照:

    • 手動建立 Statspack 快照。

    • 建立在指定時間間隔之後建立 Statspack 快照的任務。例如,下列工作每小時會建立一個 Statspack 快照:

      VARIABLE jn NUMBER; exec dbms_job.submit(:jn, 'statspack.snap;',SYSDATE,'TRUNC(SYSDATE+1/24,''HH24'')'); COMMIT;
  3. 使用下列查詢檢視快照:

    SELECT SNAP_ID, SNAP_TIME FROM STATS$SNAPSHOT ORDER BY 1;
  4. 執行 Amazon RDS 程序 rdsadmin.rds_run_spreport,以快照 ID 取代 begin_snapend_snap 快照:

    exec rdsadmin.rds_run_spreport(begin_snap,end_snap);

    例如,下列命令會根據 Statspack 快照 1 和 2 之間的間隔建立報告:

    exec rdsadmin.rds_run_spreport(1,2);

    Statspack 報告的檔案名稱包含兩個快照的數目。例如,使用 Statspack 快照 1 和 2 所建立的報告檔案會命名為 ORCL_spreport_1_2.lst

  5. 監控輸出是否有錯誤。

    Oracle Statspack 會在執行報表之前執行檢查。因此,您也可能會在命令輸出中看到錯誤訊息。例如,您可能會嘗試根據無效範圍產生報告,其中 Statspack 快照集的開始值大於結束值。在這種情況下,輸出會顯示錯誤訊息,但資料庫引擎不會產生錯誤檔案。

    exec rdsadmin.rds_run_spreport(2,1); * ERROR at line 1: ORA-20000: Invalid snapshot IDs. Find valid ones in perfstat.stats$snapshot.

    如果您使用 Statspack 快照的無效數字,則輸出會顯示錯誤。例如,如果您嘗試產生快照 1 和 50 的報告,但快照 50 不存在,則輸出會顯示錯誤。

    exec rdsadmin.rds_run_spreport(1,50); * ERROR at line 1: ORA-20000: Could not find both snapshot IDs
  6. (選用)

    若要擷取報表,請呼叫追蹤檔程序,如 使用 Oracle 追蹤檔案 中所述。

    或者,從 RDS 主控台下載 Statspack 報告。移至資料庫執行個體詳細資訊的日誌區段,然後選擇下載。下列範例會顯示 trace/ORCL_spreport_1_2.lst

    在 RDS 主控台中顯示 Oracle 日誌檔案的清單。系統會圈出下列追蹤檔案:trace/ORCL_spreport_1_2.lst。

    如果在產生報告時發生錯誤,則資料庫引擎使用相同的命名慣例做為報告,但擁有 .err 的副檔名。例如,若使用 Statspack 快照 1 和 7 建立報告時發生錯誤,則報告檔案會命名為 ORCL_spreport_1_7.err。您可以使用與標準快照報告相同的技巧來下載錯誤報告。

移除 Statspack 快照

若要移除 Oracle Statspack 快照的範圍,請使用下列命令:

exec statspack.purge(begin snap, end snap);