Dba snapshot database 10g

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic (rapport HTML)
Domaine Administration (bilan de santé complet)
Version cible Oracle Database 10g Release 2 (fonctionne partiellement en Release 1)
Voir aussi Dba snapshot database 9i · Dba snapshot database 8i · Dba registry

Dba snapshot database 10g est un script de bilan de santé exhaustif : exécuté une seule fois, il produit un rapport HTML complet couvrant l'instance, le stockage, les sauvegardes, les technologies Flashback, la performance, l'AWR, les sessions, la sécurité, les objets, l'OLAP, Data Pump, le réseau et la réplication. L'idée est de pouvoir « prendre un instantané » complet d'une base 10g en une seule commande, sans avoir à enchaîner des dizaines de scripts séparés.

Le script est volumineux (plusieurs milliers de lignes, environ 150 sections de rapport) : cette page en documente la structure, le mécanisme technique et les sections couvertes plutôt que de reproduire l'intégralité du code, difficilement exploitable telle quelle sur une page wiki.

Fait partie d'une famille de trois scripts par version d'Oracle : voir Dba snapshot database 9i et Dba snapshot database 8i pour les variantes antérieures, avec les différences détaillées plus bas.

Utilisation

sqlplus -s <dba>/<mot_de_passe>@<alias_tns> @dba_snapshot_database_10g.sql
  • Doit être exécuté par un utilisateur disposant du privilège SYSDBA (ou a minima d'un accès complet aux vues DBA_*/V$* utilisées par chaque section).
  • Le traitement peut prendre plusieurs minutes selon la taille de la base — chaque section correspond à une ou plusieurs requêtes sur le dictionnaire de données.
  • Le résultat est un unique fichier HTML nommé dba_snapshot_database_10g_<nom_base>_<AAAAMMJJ>.html, avec sommaire cliquable et retour en haut de page après chaque section.

Mécanisme technique (extrait)

Le script utilise le mode SET MARKUP HTML de SQL*Plus : chaque SELECT est automatiquement transformé en table HTML, avec une feuille de style et des couleurs conditionnelles injectées directement dans le SQL (rouge pour les valeurs anormales, vert pour les valeurs normales).

-- En-tête : bascule SQL*Plus en génération HTML, avec habillage CSS,
-- puis ouverture du spool vers le fichier de rapport.

SET TERMOUT      OFF
SET ECHO         OFF
SET FEEDBACK     OFF
SET HEADING      OFF
SET VERIFY       OFF
SET PAGESIZE     50000
SET LINESIZE     175
SET LONG         2000000000

DEFINE fileName=dba_snapshot_database_10g

-- ... collecte de variables de substitution (nom de base, date, host...)
-- via des SELECT ... NEW_VALUE, puis :

SET MARKUP HTML ON SPOOL ON PREFORMAT OFF ENTMAP ON -
HEAD ' -
  <title>Database Report</title> -
  <style type="text/css"> -
    body  {font:9pt Arial,Helvetica,sans-serif; color:black; background:White;} -
    th    {font:bold 9pt Arial,Helvetica,sans-serif; color:#336699; background:#cccc99;} -
  </style>' -
BODY  'BGCOLOR="#C0C0C0"' -
TABLE 'WIDTH="90%" BORDER="1"'

SPOOL &fileName._&_dbname._&_spool_time..html

SET MARKUP HTML ON ENTMAP OFF

-- Exemple de section (« Tablespaces ») : une requête classique, mais dont
-- les colonnes calculées injectent directement du HTML pour mettre en
-- évidence un tablespace proche de la saturation (couleur rouge au-delà
-- d'un seuil de 90 % d'occupation).

SELECT
    d.tablespace_name                                            name
  , NVL(a.bytes, 0)                                               ts_size
  , NVL(f.bytes, 0)                                               free
  , NVL(a.bytes - NVL(f.bytes, 0), 0)                             used
  , '<div align="right"><b>' ||
      DECODE(
          SIGN(TRUNC(NVL((a.bytes - NVL(f.bytes,0)) / a.bytes * 100, 0)) - 90)
        , 1, '<font color="#990000">'
        ,    '<font color="darkgreen">'
      ) || TRUNC(NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0)) || '</font></b> %</div>' pct_used
FROM
    dba_tablespaces d
  , (SELECT tablespace_name, SUM(bytes) bytes FROM dba_data_files  GROUP BY tablespace_name) a
  , (SELECT tablespace_name, SUM(bytes) bytes FROM dba_free_space  GROUP BY tablespace_name) f
WHERE
    d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = f.tablespace_name(+)
ORDER BY 1;

Chaque section suit ce même schéma : un PROMPT pour le titre HTML, un jeu de COLUMN ... HEADING, une requête sur le dictionnaire (ou sur les vues DBA_HIST_* pour la partie AWR), puis un lien de retour en haut de page.

Sections du rapport

Instance & base
Options installées, registre des composants (Dba registry), high water marks, vue d'ensemble instance/base, paramètres d'initialisation, fichiers de contrôle et leurs enregistrements, redo logs en ligne et historique des changements, alertes en cours, niveau de statistiques (STATISTICS_LEVEL)
Planificateur / Jobs
Jobs DBMS_JOB et DBMS_SCHEDULER
Stockage
Tablespaces, fichiers de données, croissance de la base, extents par tablespace, tablespace↔propriétaire et propriétaire↔tablespace
Segments UNDO
Paramètres de rétention, segments UNDO, contention sur les segments UNDO
Sauvegardes
Jobs et configuration RMAN, backup sets/pieces/fichiers de contrôle/spfile, mode d'archivage, destinations et historique d'archivage, paramètres et statut de la Flash Recovery Area
Technologies Flashback
Paramètres et statut de Flashback Database, matrice temps de rétention des journaux redo
Performance
Informations SGA, SGA Target Advice, composants dynamiques ASMM, PGA Target Advice, statistiques et temps d'I/O fichiers, I/O moyen par seconde, contention sur les redo logs, full table scans, tris, outlines (+ hints), TOP SQL par buffer gets et par lectures disque
AWR (Automatic Workload Repository)
Informations sur le repository, réglages des snapshots, liste des snapshots, estimation de la taille du repository, baselines
Sessions
Sessions courantes, matrice sessions/utilisateurs, traces et agrégations actives
Sécurité
Comptes utilisateurs, comptes disposant du rôle DBA, rôles, mots de passe par défaut restés actifs, liens de base de données
Objets
Résumé des objets et des segments, top 100 segments par taille et par nombre d'extents, répertoires et leurs privilèges, librairies externes, types (+ attributs, méthodes), collections, segments LOB, objets ne pouvant plus s'étendre ou proches de MAXEXTENTS, objets invalides, erreurs d'objets procéduraux, objets sans statistiques, tables en row chaining/migration, utilisateurs avec tablespace par défaut = SYSTEM, objets présents dans le tablespace SYSTEM, corbeille (recycle bin)
OLAP
Dimensions, niveaux, attributs, hiérarchies, cubes, vues matérialisées, logs et groupes de rafraîchissement associés
Data Pump
Jobs, sessions et progression des jobs Data Pump
Réseau
Statistiques des dispatchers MTS/Shared Server, files d'attente, statistiques d'attente
Réplication
Résumé de réplication, transactions différées, jobs administratifs, paramètres, jobs de purge/push/refresh planifiés, groupes multi-maîtres, sites et vues matérialisées (résumé, logs, modèles, groupes de rafraîchissement)

Différences entre versions

Catégorie du rapport 8i 9i 10g Release 2
Instance & base Oui Oui (+ Database Registry) Oui (+ Statistics Level)
Jobs sous-section de « Instance & base » catégorie dédiée (DBMS_JOB) catégorie « Scheduler / Jobs » (DBMS_JOB + DBMS_SCHEDULER)
Rollback / UNDO Rollback Segments (sous « Storage ») catégorie « UNDO Segments » dédiée catégorie « UNDO Segments » dédiée
Archivage & RMAN deux catégories séparées deux catégories séparées (+ config RMAN, + spfile) fusionnées dans « Backups », avec ajout de la Flash Recovery Area
Flashback Database absent absent catégorie dédiée
Performance ratios classiques (hit ratio buffer/dictionnaire/library cache, contention de latch) identique à 8i bascule vers SGA/PGA Target Advice et temps d'I/O — logique orientée attentes plutôt que ratios
Statspack / AWR absent catégorie « Statspack » catégorie « AWR » (remplace Statspack, introduit en 10g)
Sessions basique (sessions courantes, statistiques, SQL courant, locks) + matrice sessions/utilisateurs + traces et agrégations actives
Objets pas de types/collections/LOB dédiés + Types, Collections, segments LOB + Corbeille (recycle bin, fonctionnalité 10g)
OLAP absent catégorie dédiée catégorie dédiée
Data Pump absent (exp/imp classiques hors périmètre du script) absent catégorie dédiée (Data Pump introduit en 10g)
Réseau, Sécurité, Réplication présents présents, structure quasi identique présents, structure quasi identique

Voir aussi

  • Dba snapshot database 9i — variante pour Oracle 9i (segments UNDO, Statspack, pas de Flashback ni AWR ni Data Pump)
  • Dba snapshot database 8i — variante pour Oracle 8i (rollback segments classiques, pas de jobs/UNDO/Statspack/OLAP en catégories dédiées)
  • Dba registry — le détail du registre des composants, repris dans la section « Instance & base » de ce rapport