Maison  >  Article  >  base de données  >  Explication détaillée de la gestion et de la maintenance d'Oracle AWR

Explication détaillée de la gestion et de la maintenance d'Oracle AWR

小云云
小云云original
2017-12-11 15:10:461715parcourir

AWR est l'abréviation de Automatic Workload Repository, appelé archive automatique de données de charge de travail en chinois. La gestion d'AWR concerne principalement la gestion des instantanés et des lignes de base. Par exemple, définissez l'intervalle des instantanés, supprimez les instantanés et définissez la durée de conservation des instantanés. Pour les lignes de base, il s'agit de la création, de la suppression, de la création automatique, etc. de lignes de base. Cet article décrit principalement le contenu de ces deux parties. Cet article vous présente principalement les informations pertinentes sur la gestion et la maintenance d'Oracle AWR (Automatic Workload Data Archive). L'article le présente en détail à travers un exemple de code. Il a une certaine valeur d'apprentissage de référence pour les études ou le travail de tous les amis qui en ont besoin. Apprenons-le avec l'éditeur ci-dessous.

1. Gestion des instantanés

Par défaut, la base de données Oracle génère un instantané toutes les heures et conserve 8 jours d'informations statistiques dans la bibliothèque de charge de travail. Si nécessaire, vous pouvez utiliser le programme dbms_workload_repository pour créer, supprimer ou modifier manuellement des instantanés, etc. Les instantanés peuvent être gérés à l'aide d'OEM ainsi que du package dbms_workload_repository.

1. Créer manuellement un instantané

Utilisez le processus suivant pour créer un instantané manuellement. Une fois la création terminée, vous pouvez afficher toutes les informations relatives à l'instantané dans le dictionnaire de données DBA_HIST_SNAPSHOT.

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. Supprimer les instantanés

  Le processus suivant supprimera les instantanés avec snap_id de 162 à 164. Lorsque 41924548 n'est pas spécifié, la base de données par défaut actuelle est utilisée

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

3 Modifier l'intervalle de conservation des instantanés

<.>
--查看当前的保留策略,如下,为缺省值,采集间隔为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. Gestion des lignes de base

  Les lignes de base AWR peuvent être créées et supprimées manuellement ou automatiquement. Pour la création automatique d’une ligne de base, les échantillons de base doivent d’abord être créés pour obtenir une création automatique de la ligne de base. La description principale est la suivante.

1. Créer une ligne de base

  La création de la ligne de base repose sur des instantanés, donc le snap_id de la plage de temps requise doit être obtenu avant la création, qui peut être obtenu en interrogeant le dictionnaire de données DBA_HIST_SNAPSHOT. , et une fois la création de la ligne de base terminée, les informations relatives à la ligne de base peuvent être interrogées à partir du dictionnaire de données DBA_HIST_BASELINE.

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;
/

Dans l'exemple ci-dessus, une ligne de base nommée Peak_baseline est créée avec une plage de 160-161 et un temps de rétention de 10 jours. Après plus de 10 jours, la ligne de base sera supprimée et les instantanés correspondants seront également supprimés. Si la période d'expiration est spécifiée, la ligne de base et les instantanés correspondants sont conservés de manière permanente.

2. Supprimer la ligne de base

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

  Dans l'exemple ci-dessus, la ligne de base nommée Peak_baseline sera supprimée et la cascade est spécifiée comme fausse. , c'est-à-dire que lors de la suppression de la ligne de base, l'instantané correspondant ne sera pas supprimé.

3. Renommez la ligne de base

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

  Dans l'exemple ci-dessus, changez le nom de la ligne de base de Peak_baseline en Peak_mondays.

4. Modifier la valeur de rétention de base de la fenêtre mobile par défaut

--查看缺省的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

Gérer les échantillons de base

Créer un. Modèle de référence unique


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

  Dans l'exemple ci-dessus, nous avons créé un échantillon de référence unique et spécifié la plage de temps correspondante, le nom de la référence et la période de conservation. , etc. Ensuite, les instantanés correspondants au cours de cette plage de temps seront conservés et cette référence pourra être utilisée pour une comparaison ultérieure lorsque des problèmes de performances sont découverts.

Créer des échantillons de référence répétés


Les échantillons de référence répétés font référence à une plage de temps spécifique dans le futur. Oracle créera automatiquement une référence pour nous en fonction de cet échantillon défini. Par exemple, vous pouvez créer un échantillon de référence répété afin qu'une référence soit automatiquement générée tous les lundis de 9h00 à 11h00 en 2017.

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

  Dans l'exemple ci-dessus, nous créons une répétition tous les lundis (day_of_week) à partir du 14 avril 2017, qui générera automatiquement une référence, son début l'heure est 9 heures (hour_in_day), sa durée est de 2 heures (durée) et sa période de validité est de 30 jours (expiration). La plage horaire de début et de fin de l'ensemble de la référence est : 2017-04-14 09:00. :00 au 2017-12-31 11:00:00, et spécifie également le nom de l'échantillon de base et le nom du préfixe de base.

Suppression des échantillons de base


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

Dans l'exemple ci-dessus, nous supprimons l'échantillon de base précédemment créé en spécifiant l'échantillon Just nommez-le.

3. Occupation de l'espace AWR

  Les données d'instantané AWR sont toutes renseignées dans l'espace table SYSAUX. Par conséquent, si vous souhaitez conserver l'instantané pendant une période plus longue, cela signifie que plus vous devez occuper d'espace SYSAUX. Dans le même temps, vous pouvez afficher les informations détaillées de chaque objet occupant SYSAUX via awrinfo.sql.

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. Générer un rapport AWR

--Générer un rapport AWR sous une seule instance


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

--Générer un rapport AWR dans l'environnement RAC


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

-- Spécifiez l'instance de base de données pour générer le rapport AWR


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

--Générer le rapport AWR de l'instruction SQL


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

--Spécifiez l'instance pour générer le rapport AWR de l'instruction SQL


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

-- Générer le rapport AWR comparé


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

--Rapport AWR généré pour comparaison dans l'environnement RAC


@$ORACLE_HOME/rdbms/admin/awrgdrpt.sql

5. Vues importantes et dictionnaires de données liés à AWR

v$active_session_history : affiche les activités des sessions de base de données actives, échantillonnées une fois par seconde

v$metric et v$metric_history :

  fournissent des données métriques pour suivre les performances du système. Les vues sont organisées en plusieurs groupes, qui sont définis dans la vue v$metricgroup

DBA_HIST_ACTIVE_SESS_HISTORY

Affiche les informations de l'historique de session active en mémoire

DBA_HIST_BASELINE
Affiche les informations des lignes de base capturées

DBA_HIST_BASELINE_DETAILS

Affiche les informations détaillées d'une ligne de base spécifique

DBA_HIST_BASELINE_TEMPLATE

  Informations relatives au modèle de base

DBA_HIST_DATABASE_INSTANCE

  Environnement de base de données

DBA_HIST_DB_CACHE_ADVICE

  Prédiction s dans différents c basés sur données historiques sous la taille de la douleur Lecture physique

DBA_HIST_DISPATCHER

  Informations sur le processus de planification sous chaque instantané

DBA_HIST_DYN_REMASTER_STATS

  Statistiques du processus de remasterisation dynamique

DBA_HIST_IOSTAT_DETA IL
Informations historiques sur les E/S par types et fonctions invisibles

DBA_HIST_SHARED_SERVER_SUMMARY

Informations statistiques sur les serveurs partagés

DBA_HIST_SNAPSHOT

Instantané informations

DBA_HIST_SQL_PLAN

Plan d'exécution

DBA_HIST_WR_CONTROL

Informations de contrôle AWR

Recommandations associées :

mysql Fichier batch pour arrêter et démarrer la base de données Oracle

Explication détaillée de la façon dont php utilise PDO pour accéder à la base de données Oracle

La chaîne Oracle contient des nombres, Solution au problème de tri des symboles spéciaux

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn