Maison > Article > base de données > Explication détaillée de la gestion et de la maintenance d'Oracle AWR
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 502. 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-17Dans 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 2Gérer les échantillons de baseCré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 2Dans 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
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 3Dans 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.sql5. 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!