Oracle 9i配置Statspack工具(上)

dbhelper發表於2014-11-29

 

Oracle自診斷工具對日常效能診斷作用很大。從Oracle 8開始,Oracle就在不斷地推進綜合性的自診斷工具包發展。從最早的Statspack到現在的AWRADDMOracle正向著自診斷、智慧化的方向發展。

Statspack作為Oracle早期推出的工具包,最早出現在Oracle 8,在9i版本中獲得廣泛的應用。從發展歷程上,Statspack奠定了現有AWR的基本工作原理和指標方式。AWR是在Statspack的基礎上進行的完善發展。

在一些老系統中,9i依然是資料庫主要環境系統,Statspack的診斷功能是需要的。本篇介紹9i環境下Statspack工具安裝使用,以及執行計劃抽取等常用方法。

 

1Statspack安裝解除安裝

 

預設情況下,Statspack是不會作為預設選項安裝的。由於10g版本下AWR的存在,一般情況下我們也不需要額外安裝過時的Statspack包。我們著重介紹一下如何實現9i環境的安裝。

 

SQL> select * from v$version;

BANNER

----------------------------------------------

Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

PL/SQL Release 9.2.0.1.0 - Production

CORE 9.2.0.1.0 Production

TNS for 32-bit Windows: Version 9.2.0.1.0 - Production

NLSRTL Version 9.2.0.1.0 – Production

 

簡單的說,statspack工具包就是PL/SQL儲存過程包和一系列Snapshot基礎資訊表構成的小程式。保留的Snapshot執行資料需要額外的儲存空間進行儲存,所以建議建立額外的表空間儲存進行資料保留。

 

 

SQL> create tablespace stptbl datafile 'C:\ORACLE\ORADATA\ORA9I\STPTBL01.dbf' size 500m autoextend on

  2  extent management local uniform size 1m

  3  segment space management auto;

 

Tablespace created

 

 

注意:同AWR自動的儲存管理不同,Statspacksnapshot是沒有自動刪除的機制的。也就是說,如果我們放任不管,手工收集的映象資料會一直儲存在資料庫中。所以,如果經常使用Statspack進行效能資料收集工作,一定不能忽視空間問題。

9i中,我們需要呼叫伺服器端的指令碼來完成建立。注意:這裡面我們儘量到伺服器端執行,呼叫伺服器端指令碼,來防止由於版本不同帶來的問題。

 

SQL> show user

USER "SYS"

 

SQL> @?\rdbms\admin\spcreate

... Installing Required Packages

 

同義詞已建立。

 

... Creating PERFSTAT user ...

Choose the PERFSTAT user's password.

Not specifying a password will result in the installation FAILING

 

Specify PERFSTAT password

輸入 perfstat_password 的值:  perfstat

perfstat

 

PL/SQL 過程已成功完成。

使用者已建立

授權成功。

 

Below are the list of online tablespaces in this database.

Decide which tablespace you wish to create the STATSPACK tables and indexes.  This will also be the PERFSTAT user's default tablespace.

 

Specifying the SYSTEM tablespace will result in the installation

FAILING, as using SYSTEM for performance data is not supported.

 

TABLESPACE_NAME                                              CONTENTS

------------------------------------------------------------ -----------------

CWMLITE                                                     

                                              PERMANENT

 

已選擇12行。

 

Specify PERFSTAT user's default   tablespace

輸入 default_tablespace 的值:  STPTBL

Using STPTBL for the default tablespace

 

PL/SQL 過程已成功完成。

 

Choose the PERFSTAT user's temporary tablespace.

 

Specifying the SYSTEM tablespace will result in the installation

FAILING, as using SYSTEM for the temporary tablespace is not recommended.

 

Specify PERFSTAT user's temporary tablespace.

輸入 temporary_tablespace 的值: TEMP

 

同義詞已建立。

 

NOTE:

SPCPKG complete. Please check spcpkg.lis for any errors.

 

指令碼spcreate的過程是一個互動式過程。執行過程中我們需要確認三個引數專案:建立使用者perfstat的密碼、資料表空間和臨時表空間。

這個過程設定中,要注意一點:單獨使用一個資料表空間作為statspack儲存,不要將其放在system裡面。

解除安裝Statspack是比較簡單的,相同目錄中的指令碼spdrop就可以了,本文不進行累述了。

 

2Statspack使用

 

本質上說,StatspackAWR相同,都是一種基於取樣Sampling的效能監控工具。在早期的版本中,Oracle已經推出了一系列的動態檢視來反映資料庫和系統“實時”效能情況。而所謂的Snapshot就是在某一個時間點,Oracle程式將這些實時資料保留下來,作為一個snapshot點記錄在資料庫表中。StatspackAWR報告都是基於多個Snapshot的做差來形成的。

 

StatspackAWR最明顯的差異在於Statspack預設是不會自動進行Snapshot動作,而AWR預設是提供每一小時進行取樣的功能的。

 

所以說,AWR便於進行故障時段分析,而Statspack需要故障中或者故障重演。預設執行statspack映象的方法很簡單。

 

 

SQL> conn perfstat/perfstat@ora9i

Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0

Connected as perfstat

 

SQL> exec statspack.SNAP;

PL/SQL procedure successfully completed

 

呼叫statspack包的snap方法,可以直接收集snapshot。此時採用預設的收集策略。基礎表stats$snapshot可以檢視到儲存的資訊。

 

 

SQL> select snap_id, dbid, to_char(snap_time, 'yyyy-mm-dd hh24:mi:ss') snap_time, snap_level from stats$snapshot;

 

SNAP_ID       DBID SNAP_TIME           SNAP_LEVEL

------- ---------- ------------------- ----------

      1 2629872507 2014-02-07 10:51:30          5

 

注意:我們此處採用了Oracle的預設配置。snapshot方法映象,我們有很多的選擇餘地。這些內容留待我們之後討論。此處目標是建立出一個snapshot

如果觀察perfstat使用者下的資料表,我們會發現很多以stats$作為字首的資料表。這些表中儲存的資料就是以snapshot為引領的效能資料。

AWR一樣,生成statspack報告最少要有兩個snapshot形成,而且snapshot中間不允許關機啟動動作。

 

 

SQL> exec statspack.SNAP;

PL/SQL procedure successfully completed

 

SQL> select snap_id, dbid, to_char(snap_time, 'yyyy-mm-dd hh24:mi:ss') snap_time, snap_level from stats$snapshot;

 

SNAP_ID       DBID SNAP_TIME           SNAP_LEVEL

------- ---------- ------------------- ----------

      1 2629872507 2014-02-07 10:51:30          5

      2 2629872507 2014-02-07 11:05:00          5

 

在建立出兩個報告的情況下,我們就可以生成報告了。注意:StatspackAWR報告在生成過程中,有細微差別。Statspack是呼叫客戶端指令碼,而AWR核心程式在伺服器端的程式包裡面。所以,強烈推薦使用伺服器端進行報告生成動作。

 

SQL> conn perfstat/perfstat@ora9i

已連線。

SQL>

SQL> @?/rdbms/admin/spreport  //生成指令碼

 

Current Instance

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

   DB Id    DB Name      Inst Num Instance

----------- ------------ -------- ------------

 2629872507 ORA9I               1 ora9i

 

Instances in this Statspack schema

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

 

   DB Id    Inst Num DB Name      Instance     Host

----------- -------- ------------ ------------ ------------

 2629872507        1 ORA9I        ora9i        ACCA-8535F03

                                               015

Using 2629872507 for database Id

Using          1 for instance number

 

Specify the number of days of snapshots to choose from

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

Entering the number of days (n) will result in the most recent

(n) days of snapshots being listed.  Pressing without

specifying a number lists all completed snapshots.

                                                       Snap

Instance     DB Name        Snap Id   Snap Started    Level Comment

------------ ------------ --------- ----------------- ----- -------------------

 

ora9i        ORA9I                1 07 2  2014 10:5     5

                                    1

                                  2 07 2  2014 11:0     5

                                    5

 

Specify the Begin and End Snapshot Ids

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

輸入 begin_snap 的值:  1

Begin Snapshot Id specified: 1

 

輸入 end_snap 的值:  2

End   Snapshot Id specified: 2

 

Specify the Report Name

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

The default report file name is sp_1_2.  To use this name,

press to continue, otherwise enter an alternative.

 

輸入 report_name 的值:

 

Using the report name sp_1_2

 

篇幅原因,指令碼部分內容省略。同AWR報告生成相同,statspack報告需要互動方式提供三個資料:起始終值snapshot編號、生成報告名稱。區別於AWRhtmltext雙格式報告,statspack支援text格式報告。

 

最後生成報告片段如下:

 

 

STATSPACK report for

 

DB Name         DB Id    Instance     Inst Num Release     Cluster Host

------------ ----------- ------------ -------- ----------- ------- ------------

ORA9I         2629872507 ora9i               1 9.2.0.1.0   NO      ACCA-8535F03

                                                                   015

 

            Snap Id     Snap Time      Sessions Curs/Sess Comment

            ------- ------------------ -------- --------- -------------------

Begin Snap:                  1 07-2 -14 10:51:30      10       4.5

  End Snap:                  2 07-2 -14 11:05:00      10       6.4

   Elapsed:                               13.50 (mins)

 

報告生成,其中包括我們比較熟悉的Top n系列診斷內容。

瞭解了statspack基本功能之後,我們還要進行探索。相對於AWRStatspack在取樣控制上靈活性是比較高的。不同的設定可以有不同的診斷層次級別。下篇中我們進行詳細的討論。


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

相關文章