Dba snapshot database 10g
| 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 vuesDBA_*/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_JOBetDBMS_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