本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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
-
在 SQL 用戶端中,使用管理帳戶登入 Oracle 資料庫。
-
根據是否已安裝 Statspack,執行下列其中一個動作:
-
如果已安裝 Statspack,且
PERFSTAT帳戶與 Statspack 相關聯,請跳至步驟 4。 -
如果沒有安裝 Statspack,且
PERFSTAT帳戶存在,請按以下方式捨棄帳戶:DROP USER PERFSTAT CASCADE;否則,嘗試新增 Statspack 選項會產生錯誤和
RDS-Event-0058。
-
-
將 Statspack 選項新增至選項群組。請參閱將選項新增至選項群組。
Amazon RDS 會自動在資料庫執行個體上安裝 Statspack 指令碼,然後設定
PERFSTAT帳戶。 -
使用以下 SQL 陳述式重設密碼,用新密碼替換 pwd:
ALTER USER PERFSTAT IDENTIFIED BY pwd ACCOUNT UNLOCK;您可以使用
PERFSTAT使用者帳戶登入並執行 Statspack 指令碼。 -
請使用下列陳述式將
CREATE JOB權限授予PERFSTAT帳戶:GRANT CREATE JOB TO PERFSTAT; -
確定已填入
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 報告
-
在 SQL 用戶端中,使用
PERFSTAT帳戶登入 Oracle 資料庫。 -
使用下列其中一種技巧建立快照:
-
手動建立 Statspack 快照。
-
建立在指定時間間隔之後建立 Statspack 快照的任務。例如,下列工作每小時會建立一個 Statspack 快照:
VARIABLE jn NUMBER; exec dbms_job.submit(:jn, 'statspack.snap;',SYSDATE,'TRUNC(SYSDATE+1/24,''HH24'')'); COMMIT;
-
-
使用下列查詢檢視快照:
SELECT SNAP_ID, SNAP_TIME FROM STATS$SNAPSHOT ORDER BY 1; -
執行 Amazon RDS 程序
rdsadmin.rds_run_spreport,以快照 ID 取代 begin_snap 和 end_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。 -
監控輸出是否有錯誤。
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 -
(選用)
若要擷取報表,請呼叫追蹤檔程序,如 使用 Oracle 追蹤檔案 中所述。
或者,從 RDS 主控台下載 Statspack 報告。移至資料庫執行個體詳細資訊的日誌區段,然後選擇下載。下列範例會顯示
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);