Oracle Statspack - Amazon Relational Database Service

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

Oracle Statspack

Oracle Statspack 選項會安裝和啟用 Oracle Statspack 效能統計資料功能。Oracle 狀態包是收集SQL、儲存及顯示效能資料的 PL/ SQL 和 SQL *Plus 命令檔集合。如需有關使用 Oracle Statspack 的資訊,請參閱 Oracle 文件中的 Oracle Statspack

注意

Oracle 不再支援 Oracle Statspack,而且已被更進階的「自動工作負載儲存區域」() AWR 所取代。AWR僅適用於已購買「診斷套件」的「Oracle 企業版」客戶。您可以使用甲骨文狀態包與 Amazon 上的任何甲骨文數據庫引擎。RDS您無法在 Amazon 僅供RDS讀取複本上運行 Oracle 狀態包。

設定 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,用快照替換開始快照結束快照:IDs

    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 追蹤檔案 中所述。

    或者,您也可以從主控台下載 Statspack 報告。RDS前往資料庫執行個體詳細資訊的記錄區段,然後選擇下載。下面的例子顯示 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);