Verwendung von STATSPACK anstelle von AWR in Oracle Standard Edition

Hallo Habr! Ich präsentiere Ihnen die Übersetzung des Artikels "Wie man statspack anstelle von awr in der Oracle Standard Edition verwendet" .

Verwendung von STATSPACK anstelle von AWR in Oracle Standard Edition.

Problem melden


Ich habe Leistungsdaten in einer unbekannten Datenbank gesammelt. Nachdem ich den AWR-Bericht ausgeführt habe, indem ich den Befehl ausgeführt habe

@?/Rdbms/admin/awrrpt.sql 


Ich habe einen Fehler erhalten:
 WARNING (-20023) ORA-20023: Missing start and end values for time model stat: parse time elapsed WARNING (-20023) ORA-20023: Missing start and end values for time model stat: DB CPU WARNING (-20016) ORA-20016: Missing value for SGASTAT: free memory ... 

Besteht die Möglichkeit, dass das Diagnosepaket deaktiviert ist?

Sehen wir uns den Parameter CONTROL_MANAGEMENT_PACK_ACCESS an.

 SQL> show parameter control_management_pack_access NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ control_management_pack_access string NONE 

Ich war etwas vorsichtig mit dem Wert von NONE. Da Oracle Enterprise Edition eine Diagnosepaketlizenz enthält und Standart Edition nicht, hatte ich kein Recht, diese zu verwenden. Sehen wir uns die Versionsinformationen an.

 .SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Release 11.1.0.6.0 - 64bit Production PL/SQL Release 11.1.0.6.0 - Production CORE 11.1.0.6.0 Production TNS for 64-bit Windows: Version 11.1.0.6.0 - Production NLSRTL Version 11.1.0.6.0 - Production 

Wie wir sehen können, wurde "Enterprise Edition" nicht in der Konsole angezeigt. Dies ist definitiv die Standart Edition. Zumindest weiß ich, dass ich kein Recht habe, es zu benutzen.

Als ich mir das Verzeichnis <ORACLE_HOME> / rdbms / admin noch einmal ansah, stellte ich fest, dass STATSPACK immer noch vorhanden ist. Dies ist das ursprüngliche Tool zur Erfassung von Leistungsdaten für ältere Datenbanken und in Funktionen sehr ähnlich zu AWR. Das Beste ist, dass wir STATSPACK ohne Einschränkung als Ersatz für AWR in der Standart Edition verwenden können.

Installieren Sie STATSPACK


Es müssen mindestens zwei Schritte ausgeführt werden, um ein STATSPACK mit einer geplanten Aufgabe zu erstellen.

1) Führen Sie das Skript spcreate.sql aus
Ich schlage vor, dass Sie als aktuelles Arbeitsverzeichnis in das Verzeichnis <ORACLE_HOME> / rdbms / admin wechseln, da alle Protokolle zur Laufzeit in diesem Verzeichnis verbleiben.

Führen Sie das Skript aus:

 SQL> @spcreate.sql; 

Mal sehen, was wir in diesem Skript haben:

 @@spcusr connect perfstat/&&perfstat_password @@spctab @@spcpkg 

Zum Ausführen sind 3 grundlegende SQL-Skripte erforderlich.
spcusr.sql

  • Es wird ein Benutzer namens PERFSTAT erstellt, der Standardtabellenbereich ist SYSAUX und der temporäre Tabellenbereich ist TEMP.
  • Beide Tabellenbereiche können konfiguriert werden. Bevor Sie dieses Skript ausführen, müssen Sie sicherstellen, dass Tabellenbereiche in Ihrer Datenbank vorhanden sind.
  • Sie müssen sich das Kennwort merken, wenn Sie einige Routinen später ausführen möchten. Spctab.sql

In der Tabelle spctab.sql werden 71 STATSPACK-Tabellen erstellt.

 STATS$DATABASE_INSTANCE STATS$LEVEL_DESCRIPTION STATS$SNAPSHOT STATS$DB_CACHE_ADVICE STATS$FILESTATXS STATS$TEMPSTATXS STATS$LATCH STATS$LATCH_CHILDREN STATS$LATCH_PARENT STATS$LATCH_MISSES_SUMMARY STATS$LIBRARYCACHE STATS$BUFFER_POOL_STATISTICS STATS$ROLLSTAT STATS$ROWCACHE_SUMMARY STATS$SGA STATS$SGASTAT STATS$SYSSTAT STATS$SESSTAT STATS$SYSTEM_EVENT STATS$SESSION_EVENT STATS$WAITSTAT STATS$ENQUEUE_STATISTICS STATS$SQL_SUMMARY STATS$SQLTEXT STATS$SQL_STATISTICS STATS$RESOURCE_LIMIT STATS$DLM_MISC STATS$CR_BLOCK_SERVER STATS$CURRENT_BLOCK_SERVER STATS$INSTANCE_CACHE_TRANSFER STATS$UNDOSTAT STATS$SQL_PLAN_USAGE STATS$SQL_PLAN STATS$SEG_STAT STATS$SEG_STAT_OBJ STATS$PGASTAT STATS$PARAMETER STATS$INSTANCE_RECOVERY STATS$STATSPACK_PARAMETER STATS$SHARED_POOL_ADVICE STATS$SQL_WORKAREA_HISTOGRAM STATS$PGA_TARGET_ADVICE STATS$JAVA_POOL_ADVICE STATS$THREAD STATS$FILE_HISTOGRAM STATS$EVENT_HISTOGRAM STATS$TIME_MODEL_STATNAME STATS$SYS_TIME_MODEL STATS$SESS_TIME_MODEL STATS$STREAMS_CAPTURE STATS$STREAMS_APPLY_SUM STATS$PROPAGATION_SENDER STATS$PROPAGATION_RECEIVER STATS$BUFFERED_QUEUES STATS$BUFFERED_SUBSCRIBERS STATS$RULE_SET STATS$OSSTATNAME STATS$OSSTAT STATS$PROCESS_ROLLUP STATS$PROCESS_MEMORY_ROLLUP STATS$SGA_TARGET_ADVICE STATS$STREAMS_POOL_ADVICE STATS$MUTEX_SLEEP STATS$DYNAMIC_REMASTER_STATS STATS$IOSTAT_FUNCTION_NAME STATS$IOSTAT_FUNCTION STATS$MEMORY_TARGET_ADVICE STATS$MEMORY_DYNAMIC_COMPS STATS$MEMORY_RESIZE_OPS STATS$INTERCONNECT_PINGS STATS$IDLE_EVENT 

spcpkg.sql

Es werden die erforderlichen gespeicherten STATSPACK-Prozeduren für PERFSTAT erstellt.

2. Führen Sie das Skript spauto.sql aus
Dieses Skript sendet die Aufgabe im angegebenen Intervall (1 Stunde).

 SQL> @spauto.sql; 

In dem er diese Arbeit vorstellt:

 SQL> begin 2 select instance_number into :instno from v$instance; 3 dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno); 4 commit; 5 end; 6 / 

Und dann die nächste Laufzeit anzeigen.

 SQL> select job, next_date, next_sec 2 from user_jobs 3 where job = :jobno; 

Weitere Überlegungen


Für tiefere Statistiken müssen Sie die Snapshot-Stufe auf 7 anstatt auf die Standardstufe von 5 ändern.

 SQL> exec statspack.snap(i_snap_level => 7, i_modify_parameter => 'true'); 

Dieser Befehl ändert die Fangstufe auf 7 und nimmt gleichzeitig ein Bild auf.

Source: https://habr.com/ru/post/de424235/


All Articles