Oracle STATSPACK

STATSPACK ist ein Performance- und Analysetool und seit Oracle 8i verfügbar und es kann kostenlos verwendet werden.
Nachdem Sie Statspack installiert haben können Snapshots erstellt werden.
Snapshots können in verschiedenen Zeitintervallen und Levels erstellt werden.
Wenn ein Snapshot ausgeführt wird werden die Daten aus der SGA (System Global Area) in die entsprechenden Statspack Tabellen geschrieben.
Die Werte können dann zwischen zwei Snapshots verglichen werden.

Installation und konfiguration von STATSPACK

Tablespace erstellen

Per default wird der Tablespace SYSAUX verwendet. Um diesen nicht unnötig zu füllen wird ein eigener Tablespace STATSPACK zu erstellen.

# sqlplus / as sysdba
SQL> create tablespace statspack
     datafile '/u02/oradata/ORCL/statspack01.dbf' size 1G
     autoextend on next 100M maxsize 10G;

STATSPACK installieren

# sqlplus / as sysdba
SQL> define default_tablespace = 'STATSPACK'
     define temporary_tablespace='TEMP'
     define perfstat_password='perfstat'
     @?/rdbms/admin/spcreate.sql

STATSPACK Snapshot Level

# sqlplus / as sysdba
SQL> select * from stats$level_description order by snap_level;

Level 0
This level captures general statistics, including rollback segment, row cache, SGA, system events, background events, session events, system statistics, wait statistics, lock statistics, and Latch information

Level 5
This level includes capturing high resource usage SQL Statements, along with all data captured by lower levels

Level 6
This level includes capturing SQL plan and SQL plan usage information for high resource usage SQL Statements, along with all data captured by lower levels

Level 7
This level captures segment level statistics, including logical and physical reads, row lock, itl and buffer busy waits, along with all data captured by lower levels

Level 10
This level includes capturing Child Latch statistics, along with all data captured by lower levels

Um den Snapshot Level permanent zu wechseln kannst Du als Beispiel (Level 10) dieses Statement absetzen.

# sqlplus perfstat/perfstat
SQL> exec statspack.snap(i_snap_level=>10, i_modify_parameter=>'true');

Snapshots manuell erstellen

# sqlplus perfstat/perfstat
SQL> exec statspack.snap

Snapshots automatisch jede Stunde erstellen

Per default wird mit dem Skript spauto.sql ein DBMS_JOB erstellt, der pro Stunde einen Snapshot erstellt.

# sqlplus perfstat/perfstat
SQL> @?/rdbms/admin/spauto.sql -- erstellt ein DBMS_JOBS

Mit folgenden Statements kann der Snapshot Interval angepasst werden..

# sqlplus perfstat/perfstat
SQL> variable jobno number;
begin
    select job into :jobno from dba_jobs where what like '%statspack.snap%';    
    -- 1 Stunde
    -- dbms_job.change(:jobno, null, null, 'trunc(sysdate,''HH'')+60/1440');
    -- 30 Minuten
    -- dbms_job.change(:jobno, null, null, 'trunc(sysdate,''MI'')+30/1440');
    -- 15 Minuten
    dbms_job.change(:jobno, null, null, 'trunc(sysdate,''MI'')+15/1440');
    commit;
end;
/

Statspack Report zwischen 2 Snapshots erstellen

# sqlplus perfstat/perfstat
SQL> @?/rdbms/admin/spreport.sql

Alte Snapshots löschen

# sqlplus perfstat/perfstat
SQL> @?/rdbms/admin/sppurge.sql

Statspack deinstallieren

# sqlplus / as sysdba
SQL> @?/rdbms/admin/spdrop.sql
     drop tablespace statspack including contents and datafiles;

Click to add text or drag and drop element from right hand panel