Heim  >  Artikel  >  Datenbank  >  Detaillierte Erläuterung der Verwaltung und Wartung von Oracle AWR

Detaillierte Erläuterung der Verwaltung und Wartung von Oracle AWR

小云云
小云云Original
2017-12-11 15:10:461716Durchsuche

AWR ist die Abkürzung für Automatic Workload Repository, was auf Chinesisch Automatic Workload Data Archive heißt. Die Verwaltung von AWR dient hauptsächlich der Snapshot- und Baseline-Verwaltung. Legen Sie beispielsweise das Snapshot-Intervall fest, löschen Sie Snapshots und legen Sie die Snapshot-Aufbewahrungszeit fest. Bei Baselines handelt es sich um das Erstellen, Löschen, automatische Erstellen usw. von Baselines. Dieser Artikel beschreibt hauptsächlich den Inhalt dieser beiden Teile. In diesem Artikel werden Ihnen hauptsächlich die relevanten Informationen zur Verwaltung und Wartung von Oracle AWR (Automatic Workload Data Archive) anhand von Beispielcodes vorgestellt Lass es uns mit dem Editor unten lernen.

1. Snapshot-Verwaltung

Standardmäßig generiert die Oracle-Datenbank jede Stunde einen Snapshot und speichert 8 Tage lang statistische Informationen in der Workload-Bibliothek. Bei Bedarf können Sie das Programm dbms_workload_repository verwenden, um Snapshots usw. manuell zu erstellen, zu löschen oder zu ändern. Snapshots können sowohl mit OEM als auch mit dem dbms_workload_repository-Paket verwaltet werden.

1. Erstellen Sie manuell einen Snapshot

Verwenden Sie den folgenden Prozess, um einen Snapshot manuell zu erstellen. Nachdem die Erstellung abgeschlossen ist, können Sie alle Snapshot-bezogenen Informationen im Datenwörterbuch DBA_HIST_SNAPSHOT anzeigen.

BEGIN
 DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
END;
/

SELECT snap_id,
   dbid,
   begin_interval_time,
   end_interval_time
FROM  dba_hist_snapshot
ORDER BY end_interval_time DESC;

 SNAP_ID  DBID BEGIN_INTERVAL_TIME   END_INTERVAL_TIME
---------- ---------- ---------------------------- --------------------------
  164 41924548 14-APR-17 09.38.19.467 AM 14-APR-17 10.51.21.886 AM
  163 41924548 14-APR-17 09.00.10.470 AM 14-APR-17 09.38.19.467 AM
  162 41924548 14-APR-17 08.00.07.242 AM 14-APR-17 09.00.10.470 AM
  161 41924548 14-APR-17 07.00.04.120 AM 14-APR-17 08.00.07.242 AM

2. Snapshots löschen

  Der folgende Vorgang löscht Snapshots mit snap_id von 162 bis 164. Wenn 41924548 nicht angegeben ist, wird die aktuelle Standarddatenbank verwendet

BEGIN
 DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE (low_snap_id => 162,
       high_snap_id => 164, dbid => 41924548);
END;
/

3 Ändern Sie das Snapshot-Aufbewahrungsintervall

--查看当前的保留策略,如下,为缺省值,采集间隔为1小时,保留8天
SQL> select * from dba_hist_wr_control;

  DBID SNAP_INTERVAL  RETENTION   TOPNSQL
---------- -------------------- ------------------ ----------
 41924548 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT

--下面将其修改为保留5天,采集间隔为30分钟,topnsql为50条
BEGIN
 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS( retention => 10*24*60,
     interval => 30, topnsql => 50, dbid => 41924548);
END;
/

--查看修改后的结果
SQL> select * from dba_hist_wr_control;

  DBID SNAP_INTERVAL  RETENTION   TOPNSQL
---------- -------------------- ------------------ ----------
 41924548 +00000 00:30:00.0 +00010 00:00:00.0 50

2. Baseline-Management

  AWR-Baselines können manuell oder automatisch erstellt und gelöscht werden. Für die automatische Baseline-Erstellung müssen zunächst Baseline-Beispiele erstellt werden, um eine automatische Baseline-Erstellung zu erreichen. Die Hauptbeschreibung lautet wie folgt.

1. Erstellen Sie eine Baseline

  Die Erstellung der Baseline basiert auf Snapshots, daher sollte vor der Erstellung die Snap_ID des erforderlichen Zeitbereichs abgerufen werden, die durch Abfragen des Datenwörterbuchs DBA_HIST_SNAPSHOT abgerufen werden kann , und nachdem die Baseline-Erstellung abgeschlossen ist, können Baseline-bezogene Informationen aus dem Datenwörterbuch DBA_HIST_BASELINE abgefragt werden.

BEGIN
 DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE (start_snap_id => 160,
     end_snap_id => 161, baseline_name => 'peak_baseline',
     dbid => 41924548, expiration => 10);
END;
/

SQL> SELECT baseline_id,
 2   baseline_name,
 3   baseline_type,
 4   expiration,
 5   creation_time
 6 FROM dba_hist_baseline;

BASELINE_ID BASELINE_NAME   BASELINE_TYPE EXPIRATION CREATION_
----------- ----------------------- ------------- ---------- ---------
   1 peak_baseline   STATIC    10 14-APR-17
   0 SYSTEM_MOVING_WINDOW MOVING_WINDOW   07-APR-17

--基于特定时间创建基线,如下示例
BEGIN
 DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE (
  start_time  => TO_DATE ('2017-04-14 6:00:00', 'yyyy-mm-dd hh24:mi:ss'),
  end_time  => TO_DATE ('2017-04-14 8:00:00', 'yyyy-mm-dd hh24:mi:ss'),
  baseline_name => 'peak_baseline2',
  expiration  => 10);
END;
/

Im obigen Beispiel wird eine Baseline namens „peak_baseline“ mit einem Bereich von 160–161 und einer Aufbewahrungszeit von 10 Tagen erstellt. Nach mehr als 10 Tagen wird die Baseline gelöscht und die entsprechenden Snapshots werden ebenfalls gelöscht. Wenn ein Ablaufzeitraum angegeben ist, werden die Baseline und die entsprechenden Snapshots dauerhaft aufbewahrt.

2. Basislinie löschen

BEGIN
 DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE (baseline_name => 'peak_baseline',
     cascade => FALSE, dbid => 41924548);
END;
/

  Im obigen Beispiel wird die Basislinie mit dem Namen „peak_baseline“ gelöscht und cascade als „false“ angegeben . Das heißt, beim Löschen der Baseline wird der entsprechende Snapshot nicht gelöscht.

3. Benennen Sie die Basislinie um

BEGIN
 DBMS_WORKLOAD_REPOSITORY.RENAME_BASELINE (
     old_baseline_name => 'peak_baseline',
     new_baseline_name => 'peak_mondays',
     dbid => 41924548);
END;
/

--验证结果
SQL> SELECT baseline_id,
 2   baseline_name,
 3   baseline_type,
 4   expiration,
 5   creation_time
 6 FROM dba_hist_baseline;

BASELINE_ID BASELINE_NAME   BASELINE_TYPE EXPIRATION CREATION_
----------- ----------------------- ------------- ---------- ---------
   1 peak_mondays   STATIC    10 14-APR-17
   0 SYSTEM_MOVING_WINDOW MOVING_WINDOW   07-APR-17

  Ändern Sie im obigen Beispiel den Namen der Basislinie von „peak_baseline“ in „peak_mondays“.

4. Ändern Sie den Standardwert für die Basislinienaufbewahrung des gleitenden Fensters

--查看缺省的window_size
SELECT baseline_name, baseline_type, moving_window_size
FROM dba_hist_baseline
WHERE baseline_name = 'SYSTEM_MOVING_WINDOW';

BASELINE_NAME   BASELINE_TYPE MOVING_WINDOW_SIZE
------------------------ ------------- ------------------
SYSTEM_MOVING_WINDOW  MOVING_WINDOW     8

BEGIN
 DBMS_WORKLOAD_REPOSITORY.MODIFY_BASELINE_WINDOW_SIZE (
     window_size => 7,
     dbid => 41924548);
END;
/

--window_size为天,只能够小于等于当前快照保留时间,否则报错,如下:

ERROR at line 1:
ORA-13541: system moving window baseline size (864000)
greater than retention (691200)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 686
ORA-06512: at line 2

5. Erstellen Sie eine einzelne Baseline-Vorlage


BEGIN
 DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
  start_time  => TO_DATE ('2017-04-14 17:00:00', 'yyyy-mm-dd hh24:mi:ss'),
  end_time  => TO_DATE ('2017-04-14 19:00:00', 'yyyy-mm-dd hh24:mi:ss'),
  baseline_name => 'baseline_140414',
  template_name => 'template_140414',
  expiration  => 10,
  dbid   => 41924548);
END;
/

--如果创建基线样本时间小于当前时间,则收到如下错误
ERROR at line 1:
ORA-13537: invalid input for create baseline template (end_time, end_time is less than SYSDATE)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 768
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 818
ORA-06512: at line 2

  Im obigen Beispiel haben wir eine einzelne Baseline-Stichprobe erstellt und den entsprechenden Zeitraum, den Baseline-Namen und den Aufbewahrungszeitraum angegeben , usw. Dann werden die entsprechenden Snapshots innerhalb dieses Zeitraums beibehalten und diese Baseline kann für spätere Vergleiche verwendet werden, wenn Leistungsprobleme entdeckt werden.

Erstellen Sie wiederholte Basisproben


Wiederholte Basisproben beziehen sich auf einen bestimmten Zeitraum in der Zukunft. Oracle erstellt automatisch eine Basislinie für uns auf der Grundlage dieser festgelegten Stichprobe. Sie können beispielsweise eine wiederholte Basisstichprobe erstellen, sodass im Jahr 2017 jeden Montag von 9:00 bis 11:00 Uhr automatisch eine Basislinie erstellt wird.

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

BEGIN
 DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
  day_of_week   => 'monday',
  hour_in_day   => 9,
  duration    => 2,
  expiration    => 30,
  start_time    => '2017-04-14 09:00:00',
  end_time    => '2017-12-31 11:00:00',
  baseline_name_prefix => 'baseline_2017_mondays_',
  template_name   => 'template_2017_mondays',
  dbid     => 41924548);
END;
/

-- Author  : Leshami
-- Blog  : http://blog.csdn.net/leshami
-- QQ(Weixin) : 645746311

--查看已经创建的基线样本
SQL> select t.template_name,
 2  t.template_type,
 3  t.start_time,
 4  t.end_time,
 5  t.day_of_week,
 6  t.hour_in_day,
 7  t.duration
 8 from dba_hist_baseline_template t;

TEMPLATE_NAME   TEMPLATE_ START_TIME   END_TIME   DAY_OF_WE HOUR_IN_DAY DURATION
--------------------- --------- ------------------- ------------------- --------- ----------- --------
template_140414  SINGLE 2017-04-14 17:00:00 2017-04-14 19:00:00
template_2017_mondays REPEATING 2017-04-14 09:00:00 2017-12-31 11:00:00 MONDAY    17  3

Im obigen Beispiel erstellen wir ab dem 14. April 2017 jeden Montag (day_of_week) eine Wiederholung, die automatisch eine Basislinie, ihren Start, generiert Die Uhrzeit beträgt 9 Uhr (Stunde am Tag), die Dauer beträgt 2 Stunden (Dauer) und die Gültigkeitsdauer beträgt 30 Tage (Ablauf). Der Start- und Endzeitbereich der gesamten Basislinie ist: 14.04.2017, 09:00 Uhr :00 bis 2017-12-31 11:00:00 und gibt außerdem den Namen des Baseline-Beispiels und den Baseline-Präfixnamen an.

Löschen von Basislinienproben


BEGIN
 DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE_TEMPLATE (
     template_name => 'template_140414',
     dbid => 41924548);
END;
/

Im obigen Beispiel löschen wir die zuvor erstellte Basislinienprobe, indem wir die Probe Just angeben Nennen Sie es.

3. AWR-Speicherplatzbelegung

  Alle AWR-Snapshot-Daten werden in den SYSAUX-Tabellenbereich gefüllt. Wenn Sie den Snapshot also über einen längeren Zeitraum aufbewahren möchten, bedeutet dies, dass Sie mehr SYSAUX-Speicherplatz belegen müssen. Gleichzeitig können Sie über awrinfo.sql die detaillierten Informationen zu jedem Objekt anzeigen, das SYSAUX belegt.

SQL> @?/rdbms/admin/awrinfo.sql

This script will report general AWR information
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Specify the Report File Name
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrinfo.txt. To use this name,
press <return> to continue, otherwise enter an alternative.

Enter value for report_name:

Using the report name awrinfo.txt
No errors.     -- Author : Leshami
No errors.     -- Blog : http://blog.csdn.net/leshami
~~~~~~~~~~~~~~~   -- QQ  : 645746311 
AWR INFO Report
~~~~~~~~~~~~~~~

Report generated at
19:48:53 on Apr 14, 2017 ( Friday ) in Timezone +08:00


Warning: Non Default AWR Setting!
--------------------------------------------------------------------------------
Snapshot interval is 60 minutes and Retention is 8 days


  DB_ID DB Name HOST_PLATFORM   INST STARTUP_TIME  LAST_ASH_SID PAR
------------ ------- ----------------------- ---- ----------------- ------------ ---
* 41924548 ORA11G ydq - Linux x86 64-bit  1 15:18:26 (04/07)  617410 NO

########################################################
(I) AWR Snapshots Information
########################################################

*****************************************************
(1a) SYSAUX usage - Schema breakdown (dba_segments)
*****************************************************
|
| Total SYSAUX size      617.4 MB ( 2% of 32,768.0 MB MAX with AUTOEXTEND ON )
|
| Schema SYS   occupies   206.6 MB ( 33.5% )
| Schema XDB   occupies   157.7 MB ( 25.5% )
| Schema APEX_030200 occupies    85.4 MB ( 13.8% )
| Schema MDSYS  occupies    73.9 MB ( 12.0% )

## 4. AWR-Bericht erstellen

--AWR-Bericht unter Einzelinstanz erstellen


SQL> @?/rdbms/admin/awrrpt.sql

--AWR-Bericht in RAC-Umgebung erstellen


SQL> @$ORACLE_HOME/rdbms/admin/awrgrpt.sql

-- Geben Sie die Datenbankinstanz an, um den AWR-Bericht zu generieren


SQL> @$ORACLE_HOME/rdbms/admin/awrrpti.sql

– SQL-Anweisungs-AWR-Bericht generieren


SQL> @$ORACLE_HOME/rdbms/admin/awrsqrpt.sql

--Geben Sie die Instanz an, um den SQL-Anweisungs-AWR-Bericht zu generieren


SQL> @$ORACLE_HOME/rdbms/admin/awrsqrpi.sql

-- Generieren Sie den verglichenen AWR-Bericht


SQL> @$ORACLE_HOME/rdbms/admin/awrddrpt.sql

--AWR-Bericht wird zum Vergleich in der RAC-Umgebung erstellt


@$ORACLE_HOME/rdbms/admin/awrgdrpt.sql

5. Wichtige Ansichten und Datenwörterbücher im Zusammenhang mit AWR

v$active_session_history: Zeigt die Aktivitäten aktiver Datenbanksitzungen an, die einmal pro Sekunde erfasst werden

v$metric und v$metric_history:

  stellen metrische Daten zur Verfolgung der Systemleistung bereit. Ansichten sind in mehreren Gruppen organisiert, die in der v$metricgroup-Ansicht

DBA_HIST_ACTIVE_SESS_HISTORY

definiert sind

  Zeigt die Informationen zum aktiven Sitzungsverlauf im Speicher an

DBA_HIST_BASELINE
  Zeigt die Informationen der erfassten Baselines an

DBA_HIST_BASELINE_DETAILS

  Zeigt die detaillierten Informationen einer bestimmten Baseline an

DBA_HIST_BASELINE_TEMPLATE

  Baseline-Vorlagenbezogene Informationen

DBA_HIST_DATABASE_INSTANCE

  Datenbankumgebung

DBA_HIST_DB_CACHE_ADVICE

 Vorhersagen in verschiedenen c basierend auf historische Daten unter Schmerzgröße Physisches Lesen

DBA_HIST_DISPATCHER

  Informationen zum Planungsprozess unter jedem Snapshot

DBA_HIST_DYN_REMASTER_STATS

  Statistik des dynamischen Remastering-Prozesses

DBA_HIST_IOSTAT_DETA IL
Historische E/A-Informationen nach unsichtbaren Typen und Funktionen

DBA_HIST_SHARED_SERVER_SUMMARY

Statistische Informationen von gemeinsam genutzten Servern

DBA_HIST_SNAPSHOT

Snapshot Informationen

DBA_HIST_SQL_PLAN

Ausführungsplan

DBA_HIST_WR_CONTROL

AWR-Kontrollinformationen

Verwandte Empfehlungen:

MySQL-Batchdatei zum Stoppen und Starten der Oracle-Datenbank

Detaillierte Erklärung, wie PHP PDO verwendet, um auf die Oracle-Datenbank zuzugreifen

Oracle-String enthält Zahlen, Lösung zum Sortierproblem von Sonderzeichen

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwaltung und Wartung von Oracle AWR. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn