JEAN-FRANCOIS DUPONT (jf fr) has a non-transferable license to use this Student Guide
|
|
|
- Robin Bédard
- il y a 10 ans
- Total affichages :
Transcription
1 Oracle Database 11g : Nouvelles fonctionnalités d'administration Manuel du stagiaire - Volume III D50081FR21 Edition 2.1 Août 2010 D67410
2 Auteurs Christian Bauwens Maria Billings Mark Fuller Peter Fusek Richard Green Christine Jeal Donna Keesling Deirdre Matishak James Spiller Jenny Tsai Jean-François Verrier James Womack Marcie Young Révisions et contributions techniques Maqsood Alam Kalyan Bitra John Boyle Harald Van Breederode Sharath Bhujani Immanuel Chan Timothy Chien Edward Choi Jacco Draaijer Al Flournoy Steve Fogel Andy Fortunak Gerlinde Frenzen Greg Gagnon GP Gongloor Joel Goodman Hansen Han Uwe Hesse Sunil Hingorani Magnus Isaksson Susan Jang Martin Jensen Dominique Jeunot Pete Jones Yash Kapani Pierre Labrousse Richard.W.Lewis Hakan Lindfors Russ Lowenthal Kurt Lysy Isabelle Marchand Silvia Marrone Heejin Park Srinivas Putrevu Jagannath Poosarla Surya Rekha Tim Shetler Eric Siglin Ranbir Singh Jeff Skochil George Spears Kesavan Srinivasan Birgitte Taagholt Glenn Tripp Branislav Valny Anthony Woodell Copyright 2009, Oracle. Tous droits réservés. Avertissement Cette documentation contient des informations qui sont la propriété d'oracle Corporation et sont protégées par les lois relatives aux droits d'auteur et à la propriété intellectuelle. Vous ne pouvez copier et imprimer ce document qu'à des fins d'utilisation personnelle lors de la participation à une formation dispensée par Oracle. Le document ne peut être modifié ou altéré en aucune manière. A l'exception des cas où l'utilisation faite du document s'inscrit dans le respect des lois relatives aux droits d'auteur, vous ne pouvez pas utiliser, partager, télécharger, copier, imprimer, afficher, exécuter, reproduire, publier, breveter, diffuser, transmettre ou distribuer ce document, en partie ou en totalité, sans l'autorisation expresse d'oracle. Les informations fournies dans ce document sont susceptibles de modification sans préavis. Par ailleurs, Oracle Corporation ne garantit pas qu'elles soient exemptes d'erreurs et vous invite, le cas échéant, à lui en faire part par écrit à l'adresse suivante : Oracle University, 500 Oracle Parkway, Redwood Shores, California USA. Restrictions applicables au gouvernement américain : Restricted Rights Notice If this documentation is delivered to the United States Government or anyone using the documentation on behalf of the United States Government, the following notice is applicable: U.S. GOVERNMENT RIGHTS The U.S. Government s rights to use, modify, reproduce, release, perform, display, or disclose these training materials are restricted by the terms of the applicable Oracle license agreement and/or the applicable U.S. Government contract. Marques Oracle est une marque déposée d'oracle Corporation et/ou de ses filiales. Tout autre nom de produit ou de société peut être une marque de son propriétaire. Rédacteurs Aju Kumar Amitha Narayan Editeurs Sujatha Nagendra Michael Sebastian Almeida Jobi Varghese
3 Table des matières I Introduction Présentation I-2 Innovations d'oracle Database I-3 Grid Computing d'entreprise I-4 Oracle Database 11g : Domaines ciblés I-5 Automatisation de la gestion I-7 Base de données autogérée : La prochaine génération I-8 Cours complémentaires recommandés I-9 Informations complémentaires I-10 Planning recommandé I-11 1 Oracle Grid Infrastructure Objectifs 1-2 Oracle Grid Infrastructure 1-3 Automatic Storage Management Pile des composants technologiques 1-4 Installation d'oracle Grid Infrastructure et d'oracle Database : Configuration système requise 1-5 Préparation du système d'exploitation 1-6 Paramétrer les variables d'environnement 1-7 Vérifier les spécifications système 1-8 Définir le propriétaire des unités du système d'exploitation pour ASM 1-9 Scénario d'installation 1-10 Partie 1 : Installer Oracle Grid Infrastructure pour un serveur autonome 1-11 Sélectionner les langues du produit 1-12 Créer un groupe de disques ASM 1-13 Définir les mots de passe ASM 1-14 Définir les groupes du système d'exploitation ayant des privilèges 1-15 Définir l'emplacement d'installation 1-16 Créer un répertoire Inventory 1-17 Effectuer les vérifications de prérequis 1-18 Vérifier les données récapitulatives de l'installation 1-19 Surveiller la progression de l'installation 1-20 Exécuter les scripts de configuration root 1-21 Exécuter les assistants de configuration 1-22 Terminer l'installation 1-23 Configurer le groupe de disques FRA 1-24 Registre Oracle Local Registry 1-25 Quiz 1-27 Exercice 1-1 : Présentation 1-28 Volumes et fichiers ASM 1-29 iii
4 Présentation d'asm Dynamic Volume Manager (ADVM) 1-30 Striping des volumes dynamiques ASM 1-31 Contraintes liées à ADVM 1-32 Créer un volume dynamique ASM 1-33 Gérer les volumes dynamiques ASM 1-35 Utiliser des commandes SQL pour gérer les volumes dynamiques ASM 1-36 Extension d'asmcmd pour les volumes dynamiques ASM 1-38 ASM Cluster File System (ACFS) 1-39 Architecture ACFS 1-40 Utiliser Enterprise Manager pour gérer ACFS 1-41 API des systèmes de fichiers Linux/UNIX 1-42 Extensions Linux/UNIX 1-43 API des systèmes de fichiers Windows 1-44 Extensions Windows 1-45 Commandes indépendantes de la plate-forme ACFS 1-46 Restrictions relatives au système ASM Cluster File System 1-47 Créer un système ASM Cluster File System 1-48 Clichés ACFS 1-49 Administration des clichés Oracle ACFS 1-50 Quiz 1-51 Synthèse 1-52 Exercice 1-2 : Présentation Améliorations apportées à l'installation Objectifs 2-2 Installation d'oracle Database 11g : Modifications 2-3 Partie 2 : Installer le logiciel Oracle Database 2-6 Choisir le type d'installation 2-7 Choisir les options d'installation de Grid Infrastructure 2-8 Choisir les paramètres de langue 2-9 Choisir l'édition de la base de données 2-10 Définir l'emplacement d'installation 2-11 Choisir des groupes du système d'exploitation 2-12 Effectuer les vérifications de prérequis 2-13 Page récapitulative de l'installation 2-14 Page Install Product 2-15 Page Finish 2-16 Quiz 2-17 Exercice 2-1 : Présentation 2-18 Fonctionnalités en phase d'abandon dans Oracle Database 11g Release 1 et Release Informations sur les paramètres d'initialisation 2-21 Exercice 2-2 : Présentation 2-23 Exercice 2-3 : Présentation 2-24 iv
5 Client Direct NFS : Présentation 2-25 Configuration de Direct NFS 2-27 Surveiller Direct NFS 2-29 Application à chaud de patches : Présentation 2-30 Installer un patch en ligne 2-31 Avantages de l'application des patches en ligne 2-32 Différences entre les patches conventionnels et les patches en ligne 2-33 Considérations relatives à l'application de patches en ligne 2-34 Quiz 2-36 Synthèse 2-37 Exercice 2-4 : Présentation Oracle Restart Objectifs 3-2 Oracle Restart 3-3 Démarrage des processus Oracle Restart 3-5 Contrôler Oracle Restart 3-6 Choisir l'utilitaire SRVCTL approprié 3-8 Configuration Oracle Restart 3-9 Utiliser SRVCTL 3-10 Obtenir de l'aide sur l'utilitaire SRVCTL 3-11 Démarrer des composants à l'aide de SRVCTL 3-12 Arrêter des composants à l'aide de SRVCTL 3-13 Afficher le statut des composants 3-14 Afficher la configuration Oracle Restart d'un composant 3-15 Ajouter manuellement des composants à la configuration Oracle Restart 3-16 Quiz 3-17 Synthèse 3-18 Exercice 3-1 : Présentation Améliorations apportées à ASM Objectifs 4-2 Comportement sans ASM Fast Mirror Resync 4-3 Fonctionnalité ASM Fast Mirror Resync : Présentation 4-4 Utiliser Enterprise Manager pour effectuer une resynchronisation rapide de disque miroir 4-5 Configurer la fonctionnalité ASM Fast Mirror Resync 4-7 Fonctionnalité ASM Preferred Mirror Read : Présentation 4-9 Fonctionnalité ASM Preferred Mirror Read : Configuration 4-10 Page Enterprise Manager ASM Configuration 4-11 Fonctionnalité ASM Preferred Mirror Read : Recommandation 4-12 Quiz 4-13 Améliorations apportées à l'évolutivité et aux performances d'asm 4-14 Evolutivité d'asm dans Oracle Database 11g 4-16 v
6 Rôle SYSASM 4-17 Utiliser Enterprise Manager pour gérer des utilisateurs ASM 4-18 Niveau de compatibilité des groupes de disques ASM 4-19 Attributs d'un groupe de disques ASM 4-21 Utiliser Enterprise Manager pour modifier les attributs d'un groupe de disques 4-22 Améliorations apportées à la vérification des groupes de disques 4-23 Montage restrictif d'un groupe de disques pour un rééquilibrage rapide 4-24 Montage forcé d'un groupe de disques 4-25 Forcer la suppression d'un groupe de disques 4-27 Extensions ASMCMD dans Oracle Database 11g Release Extensions de commande ASMCMD 4-30 Extensions ASMCMD : Exemples 4-31 Quiz 4-32 Listes de contrôle d'accès ASM 4-33 Prérequis pour l'utilisation des listes de contrôle d'accès ASM 4-34 Gérer les listes de contrôle d'accès ASM à l'aide de commandes SQL 4-36 Gérer les listes de contrôle d'accès ASM à l'aide de commandes ASMCMD 4-37 Gérer les listes de contrôle d'accès ASM à l'aide d'enterprise Manager 4-38 Positionnement intelligent des données ASM 4-40 Gérer le positionnement intelligent des données ASM : Exemples 4-42 Gérer le positionnement intelligent des données ASM 4-43 Positionnement intelligent des données ASM : Meilleures pratiques 4-45 Afficher les informations sur le positionnement intelligent des données ASM 4-46 Quiz 4-48 Synthèse 4-49 Exercice 4 : Présentation Améliorations apportées au stockage Objectifs 5-2 Prise en charge des disques présentant des secteurs de 4 Ko 5-3 Utiliser des disques présentant des secteurs de 4 Ko 5-4 Définir la taille de secteur d'un disque 5-5 Utiliser la clause SECTOR_SIZE 5-6 Créer une base de données avec des disques présentant des secteurs de 4 Ko 5-7 Définir BLOCKSIZE 5-8 Définir la taille de bloc des fichiers de journalisation 5-9 Effectuer une migration hors ligne vers des disques avec secteurs de 4 Ko 5-10 Quiz 5-12 Compression de table : Présentation 5-13 Concepts relatifs à la compression de table 5-15 Compression des données d'une table 5-16 Utiliser la compression OLTP 5-18 Utiliser la fonction de conseil sur la compression 5-19 Afficher les informations sur la compression de table 5-20 vi
7 SQL Access Advisor : Présentation 5-21 Fonction de conseil SAA : Modèle d'utilisation 5-22 Recommandations possibles 5-23 Utiliser SQL Access Advisor 5-24 SQL Access Advisor : Flux PL/SQL des procédures 5-25 SQL Access Advisor : Exemple de code PL/SQL 5-26 Récupération d'espace dans les tablespaces temporaires 5-27 Vue DBA_TEMP_FREE_SPACE 5-29 Option TABLESPACE pour la création d'une table temporaire 5-30 Création de segments à la demande 5-31 Créer des tables sans segments 5-32 Contrôler la création différée de segments 5-33 Restrictions et exceptions 5-34 Fonctionnalités automatiques supplémentaires 5-35 Quiz 5-36 Synthèse 5-37 Exercice 5 : Présentation Améliorations apportées au data warehouse et au partitionnement Objectifs 6-2 Prétraitement des données pour le pilote d'accès ORACLE_LOADER dans les tables externes 6-3 Exemple Windows 6-4 Exemple de prétraitement 6-5 Privilège EXECUTE sur les objets répertoire 6-7 Conséquences sur la sécurité 6-8 Sécuriser le pilote d'accès ORACLE_LOADER 6-10 Considérations et remarques 6-12 Quiz 6-13 Rappel : Degré de parallélisme 6-14 Rappel : Clause PARALLEL 6-16 But général : Simplifier l'exécution en parallèle 6-17 Définition automatique du degré de parallélisme 6-18 Récapitulatif des modifications apportées aux paramètres 6-19 Utiliser le paramètre PARALLEL_MIN_TIME_THRESHOLD 6-20 Utiliser le paramètre PARALLEL_DEGREE_POLICY 6-21 Utiliser le paramètre PARALLEL_DEGREE_LIMIT 6-23 Utiliser le paramètre PARALLEL_FORCE_LOCAL 6-25 Modifications apportées aux paramètres existants 6-26 Possibilité de définir des conseils PARALLEL au niveau instruction 6-27 Conséquences des conseils PARALLEL au niveau instruction 6-28 Améliorations apportées à EXPLAIN PLAN 6-29 Exemple d'état Explain Plan amélioré 6-30 vii
8 Interrogation parallèle en mémoire 6-31 Quiz 6-32 Partitionnement Oracle 6-33 Améliorations relatives au partitionnement 6-34 Partitionnement par intervalle 6-35 Partitionnement par intervalle : Exemple 6-36 Déplacer le point de transition : Exemple 6-37 Partitionnement par système 6-39 Partitionnement par système : Exemple 6-40 Partitionnement par système : Indications 6-41 Index gérés par le système pour le partitionnement par liste 6-42 Partitionnement par colonne virtuelle 6-43 Partitionnement par colonne virtuelle : Exemple 6-44 Partitionnement par référence 6-45 Partitionnement par référence : Avantages 6-46 Partitionnement par référence : Exemple 6-47 Améliorations relatives au partitionnement composite 6-48 Partitionnement de type plage-plage : Exemple 6-50 Synthèse 6-51 Exercice 6 : Présentation Oracle SecureFiles Objectifs 7-2 Gestion des informations d'entreprise 7-3 Difficultés associées à l'implémentation actuelle des objets LOB 7-4 Oracle SecureFiles 7-6 Activer le stockage d'objets SecureFiles 7-7 SecureFiles : Options de stockage 7-9 SecureFiles : Fonctionnalités avancées 7-10 Créer des objets SecureFiles 7-11 Créer des objets SecureFiles via Enterprise Manager 7-12 Zone de mémoire d'e/s partagée 7-13 Modifier des objets SecureFiles 7-14 Quiz 7-15 Présentation de l'option SecureFile Compression 7-16 Modes de compression 7-17 Créer un objet LOB SecureFile avec le mode de compression LOW 7-18 Paramètres de configuration 7-19 Quiz 7-20 Accéder aux métadonnées SecureFiles 7-21 Migrer vers des objets SecureFiles 7-22 viii
9 Migration vers des objets SecureFiles : Exemple 7-23 Surveiller les objets SecureFiles 7-24 Synthèse 7-25 Exercice 7 : Présentation Améliorations apportées à la sécurité et à la mise en réseau Objectifs 8-2 Prise en charge des mots de passe sécurisés 8-3 Configuration automatique de la sécurité 8-4 Configuration des mots de passe 8-5 Activer la fonction intégrée de vérification de la complexité des mots de passe 8-6 Gérer les audits par défaut 8-7 Privilèges audités 8-9 Définir les paramètres de sécurité 8-10 Définir l'authentification de l'administrateur de base de données 8-12 Quiz 8-13 Transparent Data Encryption 8-14 Module de sécurité HSM 8-15 Utiliser le cryptage de tablespace 8-16 Nouvelles fonctionnalités de cryptage de tablespace 8-18 Régénération de la clé maître du tablespace 8-19 Quiz 8-20 Gestion de la sécurité dans Enterprise Manager 8-21 Améliorations de RMAN relatives à la sécurité 8-22 Gérer l'accès de niveau fin aux services réseau externes 8-23 Prise en charge de la notification d'adresse IPv Se connecter à la base de données Oracle 8-27 Prise en charge du protocole IPv6 dans les interfaces Java 8-28 Synthèse 8-29 Exercice 8 : Présentation SQL Performance Analyzer Objectifs 9-2 Défis posés aux DBA lors de l'implémentation de modifications 9-3 Seules les modifications sont constantes 9-4 Gestion des modifications dans Oracle Database 11g 9-5 Cycle de vie de la gestion des modifications 9-6 SQL Performance Analyzer : Présentation 9-10 SQL Performance Analyzer : Cas d'utilisation 9-11 Utiliser SQL Performance Analyzer 9-12 Etape 1 : Capture de la charge SQL globale 9-14 Etape 2 : Transport vers un système de test 9-15 Etape 3 : Générer les données de performances "avant modification" 9-16 ix
10 Etape 4 : Implémenter les modifications planifiées et Etape 5 : Générer les données de performances "après modification" 9-17 Etape 6 : Comparer et analyser les performances et Etape 7 : Régler les instructions SQL dont les performances ont régressé 9-18 Quiz 9-19 Accéder à SQL Performance Analyzer 9-20 Utiliser Enterprise Manager pour accéder à SQL Performance Analyzer 9-21 SQL Performance Analyzer : Exemple PL/SQL 9-22 Régler les instructions SQL moins performantes 9-25 Tester les mises à niveau de base de données : Oracle9i Database et Oracle Database 10g Release Tester les mises à niveau de base de données : Oracle Database 10g Release 2 et versions ultérieures 9-30 SQL Performance Analyzer : Vues du dictionnaire de données 9-33 Synthèse 9-34 Exercice 9 : Présentation SQL Plan Management Objectifs 10-2 SQL Plan Management : Présentation 10-3 SQL Plan Baseline : Architecture 10-4 Charger des SQL Plan Baselines 10-6 Evolution des SQL Plan Baselines 10-7 Afficher les attributs importants des SQL Plan Baselines 10-8 Attributs importants des SQL Plan Baselines 10-9 Sélection des plans SQL Quiz Exemples de scénario SQL Plan Management SQL Performance Analyzer et scénario utilisant SQL Plan Baseline Charger automatiquement un SQL Plan Baseline Stratégie de purge de SQL Management Base Enterprise Manager et SQL Plan Baselines Utiliser les fonctions MIGRATE_STORED_OUTLINE Synthèse Exercice 10 : Présentation Database Replay Objectifs 11-2 Pourquoi utiliser Database Replay? 11-3 Utiliser Database Replay 11-4 Vue d'ensemble 11-5 Architecture du système : Capture 11-6 Architecture du système : Traitement de la charge globale 11-7 Architecture du système : Réexécution 11-8 x
11 Système de production avant modification 11-9 Charges globales prises en charge Considérations relatives à la capture Considérations relatives à la réexécution Options de réexécution Filtres utilisés pour réexécuter la charge globale Analyse de la réexécution Quiz Workflow de Database Replay dans Enterprise Manager Accéder à Database Replay Packages et procédures Database Replay : Exemple PL/SQL Vues du dictionnaire de données : Database Replay Calibrer les clients de réexécution Synthèse Exercice 11 : Présentation Automatic SQL Tuning Objectifs 12-2 Réglage SQL dans Oracle Database 10g 12-3 Automatic SQL Tuning dans Oracle Database 11g 12-4 Synthèse de l'automatisation dans Oracle Database 11g 12-5 Sélectionner les instructions SQL à régler 12-6 Chronologie dans la fenêtre de maintenance 12-7 Processus de réglage automatique 12-8 Contrôler la tâche Automatic SQL Tuning Exemple : Contrôler la tâche Automatic SQL Tuning Tâche Automatic SQL Tuning Configurer Automatic SQL Tuning Synthèse des résultats de la tâche Automatic SQL Tuning Quiz Automatic SQL Tuning : Réglage fin Utiliser l'interface PL/SQL pour générer des états Considérations relatives à Automatic SQL Tuning Synthèse Practice 12: Overview Améliorations apportées à l'infrastructure intelligente Objectifs 13-2 Utiliser les vues nouvelles et améliorées du référentiel Automatic Workload Repository 13-3 Analyse comparative des performances avec des lignes de base AWR 13-4 Lignes de base AWR 13-5 Ligne de base glissante 13-6 xi
12 Options d'affichage des lignes de base 13-7 Modèles de ligne de base 13-8 Créer des lignes de base AWR 13-9 Package DBMS_WORKLOAD_REPOSITORY Générer un modèle de ligne de base unique Créer un modèle de ligne de base répétitive Vues relatives aux lignes de base Quiz Surveillance des performances et lignes de base Définir des seuils d'alerte avec une ligne de base statique Utiliser Enterprise Manager pour configurer rapidement des seuils adaptatifs Exercice 13-1 : Présentation Fenêtres de maintenance Plan de maintenance par défaut Priorité des tâches de maintenance automatisées Contrôler les tâches de maintenance automatisées Quiz Principales mesures relatives aux E/S pour les bases de données Oracle Calibrage des E/S et Enterprise Manager Calibrage des E/S et interface PL/SQL Statistiques relatives aux E/S : Présentation Statistiques relatives aux E/S et Enterprise Manager Exercices 13-2 et 13-3 : Présentation Améliorations apportées au gestionnaire de ressources (Resource Manager) Améliorations apportées au gestionnaire de ressources : Consolidation au niveau base de données Stratégie fixe pour la gestion des ressources de CPU Limiter l'utilisation de la CPU Améliorations apportées au gestionnaire de ressources : Consolidation au niveau serveur Mise en cage d'instance Exemples de mise en cage d'instance Activer la mise en cage d'instance Surveiller la mise en cage d'instance Quiz Gestionnaire de ressources : Modifications apportées à l'interface DBMS_RESOURCE_MANAGER Gestionnaire de ressources : Nouvelle interface Enterprise Manager Plans de ressources créés par défaut Plan par défaut Seuils relatifs aux ressources d'e/s Statistiques du gestionnaire de ressources Synthèse xii
13 14 Améliorations relatives aux diagnostics Objectifs 14-2 Gestion des pannes dans Oracle Database 11g 14-3 Faciliter les diagnostics : Workflow de diagnostic automatique 14-4 Référentiel Automatic Diagnostic Repository 14-5 ADRCI : Outil de ligne de commande du référentiel ADR 14-7 Vue V$DIAG_INFO 14-8 Emplacement des traces de diagnostic 14-9 Analyser le fichier d'alertes à l'aide d'enterprise Manager Analyser le fichier d'alertes à l'aide de ADRCI Quiz Problèmes et incidents Service Incident Packaging Service (IPS) Packages d'incidents Assistant Support Workbench d'enterprise Manager : Présentation Principales étapes de l'assistant Support Workbench d'enterprise Manager Afficher les alertes d'erreurs critiques dans Enterprise Manager Packager les données de diagnostic et les transmettre au support technique Oracle Assurer le suivi de la Service Request (SR) et implémenter des réparations Créer des problèmes rapportés par l'utilisateur Assistant Support Workbench d'enterprise Manager pour ASM Appeler le service IPS avec ADRCI Quiz Health Monitor : Présentation Exécuter des vérifications de l'état du système manuellement : Exemple avec Enterprise Manager Exécuter manuellement des vérifications de l'état général : Exemple PL/SQL Afficher des rapports HM à l'aide de l'utilitaire ADRCI SQL Repair Advisor : Présentation Accéder à SQL Repair Advisor via Enterprise Manager Vérifier, désactiver ou supprimer un patch SQL Utiliser SQL Repair Advisor à partir de PL/SQL : Exemple Utiliser SQL Test Case Builder Quiz Synthèse Exercice 14 : Présentation Fonction de surveillance SQL en temps réel Objectifs 15-2 Fonction de surveillance SQL 15-3 Fonction de surveillance SQL dans Oracle Database 11g Release Fonction de surveillance SQL avec Enterprise Manager Database Control 15-6 Page Monitored SQL Executions 15-7 xiii
14 Exemples d'instructions SQL surveillées 15-8 Page Monitored SQL Execution Details 15-9 Détails de l'exécution SQL pour les interrogations parallèles Détails de l'exécution parallèle Détails d'activité de l'exécution parallèle Page Session Details Page SQL Details Afficher l'état SQL Monitoring Report Quiz Synthèse Exercice 15-1 : Présentation Améliorations apportées aux performances Objectifs 16-2 Utiliser le package DBMS_ADDM 16-3 Résultats nommés et directives des fonctions de conseil 16-6 Vues modifiées des fonctions de conseil 16-7 Nouvelles vues ADDM 16-8 Quiz 16-9 Rappel : Paramètres de la SGA dans Oracle Database 10g Rappel : Paramètres de la PGA dans Oracle Database 10g Fonctions de conseil relatives à la mémoire dans Oracle Database Fonctions de conseil relatives à la mémoire dans Oracle Database Fonctionnalité Automatic Memory Management : Présentation Paramètres d'initialisation de la mémoire dans Oracle Database 11g Relations de dépendance entre les paramètres définis automatiquement pour la mémoire Activer Automatic Memory Management Surveiller Automatic Memory Management DBCA et Automatic Memory Management Quiz DB Smart Flash Cache : Présentation Utiliser DB Smart Flash Cache Architecture de DB Smart Flash Cache Configurer DB Smart Flash Cache Dimensionner le cache Flash Définir DB Smart Flash Cache pour une table Préférences relatives aux statistiques : Présentation Utiliser les nouvelles options de préférences relatives aux statistiques Configurer les préférences globales avec Enterprise Manager Tables partitionnées et statistiques incrémentielles : Présentation Echantillonnage par hachage pour les statistiques sur les colonnes Statistiques multicolonnes : Présentation Statistiques sur les expressions : Présentation xiv
15 Publication différée des statistiques : Présentation Publication différée des statistiques : Exemple Quiz Améliorations apportées au verrouillage Identifier les événements des processus en avant-plan et en arrière-plan Synthèse Exercice 16 : Présentation Améliorations apportées aux performances des applications Objectifs 17-2 Améliorations apportées à la redéfinition en ligne 17-3 Gestion des dépendances détaillées 17-4 Réduire les recompilations d'objets dépendants 17-5 Métadonnées de dépendance plus précises 17-6 Gérer les dépendances 17-7 Conseils pour réduire l'invalidation 17-9 Index invisible : Présentation Index invisibles : Exemples Adaptive Cursor Sharing : Présentation Adaptive Cursor Sharing : Architecture Adaptive Cursor Sharing : Vues Interagir avec Adaptive Cursor Sharing Cache des résultats d'interrogation SQL : Présentation Configurer le cache des résultats d'interrogation SQL Gérer le cache des résultats d'interrogation SQL Utiliser le conseil RESULT_CACHE Vue en ligne : Exemple Utiliser l'annotation de table pour contrôler la mise en mémoire cache des résultats Utiliser le package DBMS_RESULT_CACHE Afficher les informations du dictionnaire relatives au cache des résultats d'interrogation SQL Considérations relatives au cache des résultats d'interrogation SQL Considérations relatives au cache des résultats d'interrogation SQL Quiz Cache d'interrogations sur le client OCI Utiliser le cache d'interrogations côté client Cache des résultats de fonction PL/SQL Utiliser le cache des résultats de fonction PL/SQL Cache des résultats de fonction PL/SQL : Considérations Améliorations apportées aux compilations natives PL/SQL et Java xv
16 Configurer et tester la compilation native PL/SQL Recompiler l'intégralité de la base de données pour une compilation native PL/SQL Synthèse Exercice 17 : Présentation Améliorations apportées à la sauvegarde et à la récupération Objectifs 18-2 Utiliser les nouvelles clauses SET NEWNAME 18-3 Variables de substitution pour SET NEWNAME 18-4 Utiliser SET NEWNAME FOR DATABASE 18-5 Utiliser SET NEWNAME FOR TABLESPACE 18-6 Améliorations apportées aux performances 18-7 Amélioration de la détection des corruptions de bloc 18-8 Utiliser les nouveaux paramètres pour la compression binaire 18-9 Utiliser les nouveaux paramètres des algorithmes de compression Optimisation des sauvegardes Opérations de restauration et de sauvegarde parallèles pour les fichiers très volumineux Utiliser la sauvegarde multisection RMAN Quiz Dupliquer une base de données Dupliquer la base de données active Commande DUPLICATE de RMAN Créer une base de secours à l'aide de la commande DUPLICATE Améliorations apportées à la duplication de base de données Commande DUPLICATE "sans cible" Utiliser la commande DUPLICATE "sans cible" Utiliser les nouvelles options de la commande DUPLICATE Améliorations apportées à DUPLICATE [SKIP] TABLESPACE Utiliser RMAN pour créer des sauvegardes d'archivage Gérer les sauvegardes d'archivage Créer des sauvegardes d'archivage Récupération simplifiée suite à la perte du fichier de paramètres serveur Modifications et améliorations apportées à la récupération de tablespace jusqu'à un point dans le temps (TSPITR) Identifier les relations avec des objets situés hors du jeu de récupération Utiliser des copies d'images pour améliorer les performances de la récupération de tablespace jusqu'à un point dans le temps (TSPITR) Quiz Gérer les catalogues de restauration Commande IMPORT CATALOG Créer et utiliser des catalogues privés virtuels xvi
17 Utiliser les catalogues privés virtuels RMAN Quiz Synthèse Exercice 18 : Présentation Utiliser les améliorations de RMAN Améliorations apportées aux technologies Flashback et LogMiner et à l'utilitaire Data Pump Objectifs 19-2 Flashback Data Archive : Présentation 19-3 Flashback Data Archive: Architecture 19-5 Préparer la base de données 19-6 Flashback Data Archive : Workflow Utiliser Flashback Data Archive Configurer une Flashback Data Archive par défaut Remplir l'espace d'une Flashback Data Archive Gérer les Flashback Data Archives Flashback Data Archive : Exemples Flashback Data Archive : Restrictions en matière d'instructions LDD Flashback Data Archive : Prise en charge de l'évolution transparente de schéma Flashback Data Archive : Prise en charge de l'évolution complète de schéma Consulter des Flashback Data Archives Lignes directrices et conseils d'utilisation Quiz Flashback Transaction Backout Prérequis Procéder au flashback d'une transaction Utiliser l'assistant Flashback Transaction Wizard Utiliser la procédure DBMS_FLASHBACK.TRANSACTION_BACKOUT Afficher un état des dépendances Afficher les métadonnées de Flashback Transaction Quiz Améliorations apportées à Flashback Database Utiliser LogMiner Rappel : Data Pump Export et Import Migrer vers le mode propriétaire Data Pump Mode propriétaire Data Pump Gérer les emplacements de fichiers Quiz Synthèse Exercice 19 : Présentation Utiliser les fonctionnalités Flashback xvii
18 20 Data Recovery Advisor Objectifs 20-2 Réparer des défaillances de données 20-3 Data Recovery Advisor 20-4 Evaluer les défaillances de données 20-7 Défaillances de données 20-8 Défaillances de données : Exemples 20-9 Data Recovery Advisor Interface de ligne de commande RMAN Afficher les défaillances de données Obtenir un conseil de réparation Exécuter les réparations Classifier (et fermer) les défaillances Quiz Vues de la fonction de conseil Data Recovery Advisor Méthode recommandée : Vérifications proactives Définir les paramètres pour la détection des corruptions Synthèse Exercice 20: Présentation Réparer des défaillances Annexe A : Exercices et solutions Annexe B : Améliorations apportées au planificateur Objectifs B-2 Travaux légers B-3 Choisir le travail approprié B-4 Notification par du planificateur : Présentation B-5 Utiliser la notification par du planificateur B-6 Définir l'attribut _server B-7 Définir l'attribut _sender B-8 Utiliser ADD_JOB_ _NOTIFICATION B-9 Utiliser REMOVE_JOB_ _NOTIFICATION B-11 Notification par Nouvelles vues du dictionnaire B-12 Contrôleur de fichier du planificateur : Présentation B-13 Créer un contrôleur de fichier et un travail fondé sur les événements B-14 Etape 1 : Créer un objet d'identification et de connexion dans le planificateur B-15 Etape 2 : Créer un contrôleur de fichier B-16 Utiliser DBMS_SCHEDULER.CREATE_FILE_WATCHER B-17 Etape 3 : Créer un objet d'identification et de connexion dans le planificateur B-18 Utiliser le type d'objet SCHEDULER_FILEWATCHER_RESULT B-20 Utiliser le type d'objet SCHEDULER_FILEWATCHER_REQUEST B-21 Etape 4 : Créer un travail fondé sur les événements faisant référence au contrôleur de fichier B-22 xviii
19 Etape 5 : Activer les objets B-23 Activer les événements relatifs à l'arrivée du fichier à partir de systèmes distants B-24 Utiliser DBMS_SCHEDULER.DROP_FILE_WATCHER B-25 Contrôleur de fichier : Modifications apportées aux procédures DBMS_SCHEDULER existantes B-26 Contrôleur de fichier : Modifications apportées aux attributs existants B-27 Contrôleur de fichier : Nouvelles vues du dictionnaire B-28 Contrôleur de fichier : Nouvelles colonnes utilisées dans les vues existantes B-29 Travaux du planificateur effectués sur une base de données distante : Présentation B-30 Utiliser CREATE_DATABASE_DESTINATION B-31 Utiliser DROP_DATABASE_DESTINATION B-32 Créer des travaux sur une base de données distante : Configuration B-33 Paramétrer la base de données pour des travaux distants B-34 Créer des travaux sur une base de données distante B-35 Travaux à destinations multiples du planificateur : Présentation B-36 Travaux à destinations multiples du planificateur : Terminologie B-37 Statuts des travaux à destinations multiples du planificateur B-38 Créer des travaux à destinations multiples B-39 Utiliser des groupes de destinations pour des travaux à destinations multiples B-40 Utiliser CREATE_GROUP B-41 Utiliser ADD_GROUP_MEMBER B-42 Utiliser DROP_GROUP B-43 Utiliser REMOVE_GROUP_MEMBER B-44 Modifications apportées aux procédures DBMS_SCHEDULER existantes B-45 Travaux à destinations multiples : Nouvelles vues du dictionnaire B-46 Travaux à destinations multiples : Nouvelles colonnes utilisées dans les vues du dictionnaire existantes B-47 Synthèse B-48 Annexe C : Module Oracle Secure Backup Cloud Objectifs C-2 Sauvegarder une base de données Oracle dans le nuage C-3 Présentation du module Oracle Secure Backup Cloud C-4 Avantages de la sauvegarde dans le nuage C-5 Présentation du service Amazon Simple Storage Service (S3) C-6 Installer le module Oracle Secure Backup Cloud C-7 Synthèse C-8 xix
20
21 Annexe A Exercices et solutions
22 Table des matières Exercices - Chapitre Exercice 1-1 : Installer Oracle Grid Infrastructure pour un serveur autonome... 5 Exercice 1-2 : Configurer un système ASM Cluster File System Exercices - Chapitre Exercice 2-1 : Installer le logiciel Oracle Database 11g Exercice 2-2 : Créer une base de données Exercice 2-3 : Utiliser des clichés ASM Cluster File System Exercice 2-4 : Utiliser l'application de patches en ligne Exercices - Chapitre Exercice 3-1 : Utiliser Oracle Restart pour gérer des composants Exercices - Chapitre Exercice 4-1 : Utiliser ASM Fast Mirror Resync Exercices - Chapitre Exercice 5-1 : Utiliser la compression de table Exercices - Chapitre Exercice 6-1 : Utiliser le partitionnement par référence Exercice 6-2 : Utiliser le partitionnement par intervalle Exercice 6-3 : Utiliser le partitionnement composite étendu Exercice 6-4 : Utiliser le partitionnement par colonne virtuelle Exercice 6-5 : Utiliser SQL Access Advisor pour obtenir des conseils sur le partitionnement Exercices - Chapitre Exercice 7-1 : Utiliser des objets SecureFiles Exercices - Chapitre Exercice 8-1: Using Password Security Features Exercice 8-2 : Utiliser un tablespace crypté Exercices - Chapitre Exercice 9-1 : Utiliser SQL Performance Analyzer Exercices - Chapitre Exercice 10-1 : Utiliser SQL Plan Management Exercices - Chapitre Exercice 11-1 : Utiliser Database Replay Exercice 11-2 : Utiliser Database Replay Mode non synchronisé Exercices - Chapitre Exercice 12-1: Utiliser Automatic SQL Tuning Exercices - Chapitre Exercice 13-1 : Créer des lignes de base Exercice 13-2 : Contrôler les travaux AutoTask Exercice 13-3 : Calibrer les ressources des E/S Exercices - Chapitre Exercice 14-1 : Utiliser l'assistant Support Workbench pour analyser les dommages Exercice 14-2 : Utiliser SQL Repair Advisor Exercices - Chapitre Exercice 15-1 : Utiliser Enterprise Manager pour surveiller des commandes SQL Exercices - Chapitre Exercice 16-1 : Utiliser la fonctionnalité Automatic Memory Management Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 2
23 Exercices - Chapitre Exercice 17-1 : Utiliser le cache des résultats Exercices - Chapitre Exercice 18-1 : Dupliquer une base de données active Exercice 18-2 : Gérer des catalogues Exercices - Chapitre Exercice 19-1: Utiliser Flashback Data Archive Exercice 19-2 : Réaliser une opération Flashback Transaction Blackout Exercices - Chapitre Exercice 20-1 : Réparer une base de données avec Enterprise Manager Exercice 20-2 : Réparer une corruption de bloc avec Enterprise Manager Exercice 20-3 : Réparer une base de données à partir de la ligne de commande RMAN Remarque : Dans les exercices de ce cours, les mots de passe utilisés sont simples et faciles à retenir afin de vous permettre de vous concentrer sur les objectifs à atteindre. Dans les environnements de production et de développement réels, utilisez une méthode d'authentification forte conforme aux indications du manuel Oracle Database Security Guide. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 3
24 Exercices - Chapitre 1 Dans cet exercice, vous allez installer Oracle Grid Infrastructure pour un serveur autonome et configurer le système ASM Cluster File System. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 4
25 Exercice 1-1 : Installer Oracle Grid Infrastructure pour un serveur autonome Dans cet exercice, vous allez créer des disques ASM et les utiliser pour installer et configurer Oracle Grid Infrastructure sur votre machine. 1) Ouvrez une fenêtre de terminal en tant qu'utilisateur root et configurez le composant oracleasm pour qu'il soit détenu par oracle et le groupe dba. En outre, assurez-vous que le composant oracleasm démarre à l'amorçage. # lsmod grep oracleasm # oracleasm configure -i Configuring the Oracle ASM library driver. This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hitting <ENTER> without typing an answer will keep that current value. Ctrl-C will abort. Default user to own the driver interface []: oracle Default group to own the driver interface []: dba Start Oracle ASM library driver on boot (y/n) [n]: y Scan for Oracle ASM disks on boot (y/n) [y]: y Writing Oracle ASM library driver configuration: done # 2) Assurez-vous que votre configuration oracleasm est bien prise en compte en démarrant ce composant. # oracleasm exit # oracleasm init Creating /dev/oracleasm mount point: /dev/oracleasm Loading module "oracleasm": oracleasm Mounting ASMlib driver filesystem: /dev/oracleasm # oracleasm status Checking if ASM is loaded: yes Checking if /dev/oracleasm is mounted: yes # lsmod grep oracleasm oracleasm # 3) Utilisez oracleasm pour créer vos disques ASM. Vous disposez de 13 unités de blocs utilisables sur votre machine : /dev/xvdb, /dev/xvdc,, /dev/xvdn. Nommez chaque disque ASM comme suit : ASMDISK01, ASMDISK02,, ASMDISK13. # oracleasm createdisk ASMDISK01 /dev/xvdb Writing disk header: done Instantiating disk: done # oracleasm createdisk ASMDISK02 /dev/xvdc Writing disk header: done Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 5
26 Exercice 1-1 : Installer Oracle Grid Infrastructure pour un serveur autonome (suite) Instantiating disk: done # oracleasm createdisk ASMDISK03 /dev/xvdd Writing disk header: done Instantiating disk: done # oracleasm createdisk ASMDISK04 /dev/xvde Writing disk header: done Instantiating disk: done # oracleasm createdisk ASMDISK05 /dev/xvdf Writing disk header: done Instantiating disk: done # oracleasm createdisk ASMDISK06 /dev/xvdg Writing disk header: done Instantiating disk: done # oracleasm createdisk ASMDISK07 /dev/xvdh Writing disk header: done Instantiating disk: done # oracleasm createdisk ASMDISK08 /dev/xvdi Writing disk header: done Instantiating disk: done # oracleasm createdisk ASMDISK09 /dev/xvdj Writing disk header: done Instantiating disk: done # oracleasm createdisk ASMDISK10 /dev/xvdk Writing disk header: done Instantiating disk: done # oracleasm createdisk ASMDISK11 /dev/xvdl Writing disk header: done Instantiating disk: done # oracleasm createdisk ASMDISK12 /dev/xvdm Writing disk header: done Instantiating disk: done # oracleasm createdisk ASMDISK13 /dev/xvdn Writing disk header: done Instantiating disk: done # 4) Vérifiez que vous disposez à présent de 13 disques ASM, à l'aide de la commande listdisks. # oracleasm scandisks Reloading disk partitions: done Cleaning any stale ASM disks... Scanning system for ASM disks... # oracleasm listdisks ASMDISK01 ASMDISK02 ASMDISK03 ASMDISK04 ASMDISK05 ASMDISK06 ASMDISK07 ASMDISK08 ASMDISK09 ASMDISK10 ASMDISK11 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 6
27 Exercice 1-1 : Installer Oracle Grid Infrastructure pour un serveur autonome (suite) ASMDISK12 ASMDISK13 # 5) Après vous être connecté en tant qu'utilisateur oracle dans une session de terminal graphique, installez Oracle Grid Infrastructure sur votre machine dans le répertoire /u01/app/oracle/product/11.2.0/grid. Assurez-vous d'utiliser les quatre premiers disques ASM (ASMDISK01,, ASMDISK04) précédemment définis pour créer le groupe de disques DATA avec une redondance normale. a) Paramétrez vos variables d'environnent pour qu'elles pointent vers le répertoire d'origine (home) /u01/app/oracle/product/11.2.0/grid de votre installation de Grid Infrastructure. $. oraenv ORACLE_SID = [db10g]? +ASM ORACLE_HOME = [/home/oracle]? /u01/app/oracle/product/11.2.0/grid $ echo $ORACLE_BASE /u01/app/oracle $ b) Exécutez l'outil Oracle Universal Installer à partir du répertoire intermédiaire d'oracle Grid Infrastructure. $ cd /stage/11*/g* $./runinstaller Starting Oracle Universal Installer... Checking Temp space: must be greater than 80 MB. Actual 9119 MB Passed Checking swap space: must be greater than 150 MB. Actual 4000 MB Passed Checking monitor: must be configured to display at least 256 colors. Actual Passed Preparing to launch Oracle Universal Installer from /tmp/orainstall _ am. Please wait... c) Dans la page Select Installation Option, sélectionnez "Install and Configure Grid Infrastructure for a Standalone Server". Cliquez sur Next. d) Dans la page Select Product Languages, sélectionnez toutes les langues en cliquant sur le bouton en forme de double flèche. Ensuite, cliquez sur Next. e) Dans la page Create ASM DiskGroup, entrez DATA dans le champ Disk Group Name, sélectionnez l'option Normal pour le champ Redundancy, puis choisissez les disques disponibles suivants : ORCL:ASMDISK01, ORCL:ASMDISK02, ORCL:ASMDISK03, ORCL:ASMDISK04. Ensuite, cliquez sur Next. f) Dans la page Specify ASM Password, sélectionnez "Use same passwords for these accounts", puis entrez oracle_4u dans les champs Specify Password et Confirm Password. Cliquez sur Next. g) Dans la page Privileged Operating System Groups, sélectionnez dba pour chaque groupe. Cliquez sur Next. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 7
28 Exercice 1-1 : Installer Oracle Grid Infrastructure pour un serveur autonome (suite) h) Si une fenêtre d'avertissement apparaît, cliquez sur Yes pour continuer. i) Dans la page Installation Location, assurez-vous que les champs Oracle Base et Software Location possèdent respectivement les valeurs /u01/app/oracle et /u01/app/oracle/product/11.2.0/grid. Ensuite, cliquez sur Next. j) La page Perform Prerequisite Checks est affichée. Patientez jusqu'à la fin des vérifications. k) Dans la page Summary, cliquez sur Finish. l) La page Setup apparaît. m) Attendez d'être invité à exécuter un script. n) Connecté en tant qu'utilisateur root dans une fenêtre de terminal, exécutez le script requis suivant lorsque la fenêtre Execute Configuration Scripts apparaît : # /u01/app/oracle/product/11.2.0/grid/root.sh Running Oracle 11g root.sh script... The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /u01/app/oracle/product/11.2.0/grid Enter the full pathname of the local bin directory: [/usr/local/bin]: Copying dbhome to /usr/local/bin... Copying oraenv to /usr/local/bin... Copying coraenv to /usr/local/bin... Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root.sh script. Now product-specific root actions will be performed :19:44: Checking for super user privileges :19:44: User has super user privileges :19:44: Parsing the host name Using configuration parameter file: /u01/app/oracle/product/11.2.0/grid/crs/install/crsconfig_params Creating trace directory LOCAL ADD MODE Creating OCR keys for user 'oracle', privgrp 'oinstall'.. Operation successful. CRS-4664: Node edrsr22p1 successfully pinned. ohasd is starting Adding daemon to inittab CRS-4123: Oracle High Availability Services has been started. ohasd is starting Successfully configured Oracle Grid Infrastructure for a Standalone Server Updating inventory properties for clusterware Starting Oracle Universal Installer Checking swap space: must be greater than 500 MB. Actual 4000 MB Passed The inventory pointer is located at /etc/orainst.loc The inventory is located at /u01/app/oracle/orainventory UpdateNodeList was successful. # Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 8
29 Exercice 1-1 : Installer Oracle Grid Infrastructure pour un serveur autonome (suite) o) De retour dans la fenêtre Execute Configuration Scripts, cliquez sur OK. p) Attendez l'exécution de tous les assistants de configuration. q) Dans la page Finish, cliquez sur Close. 6) Utilisez ASMCA pour créer le groupe de disques externe FRA à l'aide des quatre disques ASM suivants (ASMDISK05,, ASMDISK08). a) Ouvrez une fenêtre de terminal en tant qu'utilisateur oracle, vérifiez que vos variables d'environnement sont correctement définies, puis appelez ASMCA. $. oraenv ORACLE_SID = [+ASM]? +ASM The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is /u01/app/oracle $ asmca b) Dans l'onglet Disk Groups, cliquez sur Create. c) Dans la page Create Disk Group, entrez FRA dans le champ Disk Group Name. Sélectionnez External (None) pour le groupe de disques Redundancy. Sélectionnez les disques ASM suivants : ORCL:ASMDISK05, ORCL:ASMDISK06, ORCL:ASMDISK07 et ORCL:ASMDISK08. d) Cliquez sur le bouton Show Advanced Options et assurez-vous que les deux champs ASM et Database Compatibility sont bien définis avec la valeur Cliquez sur OK. e) La fenêtre DiskGroup: Creation apparaît. Une fois le groupe de disques créé, cliquez sur OK dans la fenêtre DiskGroup: Creation. f) Dans l'onglet Disk Group, vérifiez que vous pouvez bien voir le groupe de disques FRA monté. Cliquez sur Exit. g) Dans la fenêtre ASM Configuration Assistant, cliquez sur Yes. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 9
30 Exercice 1-2 : Configurer un système ASM Cluster File System Dans cet exercice, vous allez configurer des pilotes ACFS (ASM Cluster File System) à charger automatiquement à l'amorçage. Vous allez ensuite créer un groupe de disques ASM que vous utiliserez ultérieurement pour stocker les fichiers binaires d'oracle Database dans un système ACFS. 1) Ouvrez une fenêtre de terminal en tant qu'utilisateur root et déterminez la liste des pilotes ASM actuellement chargés sur votre système. # lsmod grep oracle oracleacfs oracleadvm oracleoks oracleacfs,oracleadvm oracleasm # 2) Réamorcez votre système. # reboot Broadcast message from root (pts/2) (Mon Sep 28 12:21: ): The system is going down for reboot NOW! # 3) Après le réamorçage, reconnectez-vous à votre système en tant qu'utilisateur root et déterminez à nouveau la liste des pilotes ASM actuellement chargés. Qu'en concluezvous? a) Il est clair qu'aucun des pilotes ACFS n'est chargé. # lsmod grep oracle oracleasm # 4) Redémarrez les pilotes ACFS manuellement. # /u01/app/oracle/product/11.2.0/grid/bin/acfsload start -s # lsmod grep oracle oracleacfs oracleadvm oracleoks oracleacfs,oracleadvm oracleasm # 5) Comment pouvez-vous vous assurer que ces pilotes sont automatiquement chargés à l'amorçage? a) Créez un script dans le répertoire /etc/init.d pour démarrer les pilotes ACFS. Le script peut contenir les commandes suivantes : #!/bin/sh # chkconfig: # description: Load Oracle ACFS drivers at system boot /u01/app/oracle/product/11.2.0/grid/bin/acfsload start -s Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 10
31 Exercice 1-2 : Configurer un système ASM Cluster File System (suite) # vi /etc/init.d/acfsload Insérez dans le fichier les commandes indiquées précédemment. Votre fichier doit se présenter comme suit : # cat /etc/init.d/acfsload #!/bin/sh # chkconfig: # description: Load Oracle ACFS drivers at system boot /u01/app/oracle/product/11.2.0/grid/bin/acfsload start -s # b) Ajoutez le script en tant que service à l'aide de la commande chkconfig. # chmod u+x /etc/init.d/acfsload # chkconfig --add acfsload # chkconfig --list acfsload acfsload 0:off 1:off 2:on 3:on 4:on 5:on 6:off # 6) Validez votre solution et assurez-vous que tous les pilotes ACFS sont chargés à l'amorçage. # reboot Broadcast message from root (pts/2) (Mon Sep 28 12:55: ): The system is going down for reboot NOW! # login as: root root@...'s password: Last login: Mon Sep 28 12:20: from # lsmod grep oracle oracleacfs oracleadvm oracleoks oracleacfs,oracleadvm oracleasm # 7) Utilisez ASMCA pour créer le groupe de disques ACFS avec les caractéristiques suivantes : utilisation de la redondance externe et des disques ASMDISK09 à ASMDISK11. Assurez-vous également que ces groupes de disques peuvent héberger un volume ASM et un répertoire d'origine (home) Oracle Database. a) Prenez soin d'attendre le démarrage automatique de votre instance ASM par le système après votre réamorçage précédent. # ps -ef grep lgwr oracle :08:00? 00:00:00 asm_lgwr_+asm root :12 pts/2 00:00:00 grep lgwr # b) Ouvrez une fenêtre de terminal graphique en tant qu'utilisateur oracle, paramétrez vos variables d'environnement pour qu'elles pointent vers votre instance ASM, puis exécutez la commande asmca. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 11
32 Exercice 1-2 : Configurer un système ASM Cluster File System (suite) $. oraenv ORACLE_SID = [db10g]? +ASM $ asmca c) Dans l'onglet Disk Groups, cliquez sur Create. d) Dans la page Create Disk Group, entrez ACFS dans le champ Disk Group Name. Sélectionnez External (None) pour le groupe de disques Redundancy. Sélectionnez les disques ASM suivants : ORCL:ASMDISK09, ORCL:ASMDISK10 et ORCL:ASMDISK11. Cliquez sur Show Advanced Options et vérifiez que les trois attributs Diskgroup Compatibility sont définis avec la valeur Cliquez sur OK. e) La création du groupe de disques peut prendre un certain temps. f) Une fois le groupe créé, la fenêtre Diskgroup: Creation apparaît. Cliquez sur OK. g) Dans l'onglet Disk Group, vous devez voir à présent votre groupe de disques ACFS monté. 8) Après avoir créé le groupe de disques ACFS, créez un système de fichiers hébergé par votre groupe de disques ACFS. Ensuite, vérifiez que le système de fichiers est bien monté dans /u01/app/oracle/acfsmounts. a) Cliquez avec le bouton droit de la souris sur ACFS Disk Group Name. b) Dans le menu qui s'affiche, sélectionnez Create ACFS for Database Home. c) La fenêtre Create ACFS Hosted Database Home apparaît. Conservez les valeurs par défaut acfs_db1, 6, oracle, oinstall et entrez /u01/app/oracle/acfsmounts/acfs_db1 dans le champ Database Home Mountpoint. Cliquez sur OK. d) Le système de fichiers et le volume ASM sont automatiquement créés. e) Une fois l'opération terminée, la fenêtre Database Home: Run ACFS script apparaît. f) Ouvrez une fenêtre de terminal en tant qu'utilisateur root et exécutez le script /u01/app/oracle/cfgtoollogs/asmca/scripts/acfs_script.sh. # /u01/app/oracle/cfgtoollogs/asmca/scripts acfs_script.sh # g) Cliquez sur Close dans la fenêtre Database Home: Run ACFS script. h) Dans l'onglet Disk Groups, vous remarquez à présent que le groupe de disques ACFS est presque plein. i) Cliquez sur l'onglet Volumes pour voir le volume ASM créé automatiquement. j) Cliquez sur l'onglet ASM Cluster File Systems pour voir le système de fichiers créé automatiquement. k) Cliquez sur Exit pour quitter ASMCA. l) Dans la fenêtre ASM Configuration Assistant qui s'affiche, cliquez sur Yes. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 12
33 Exercice 1-2 : Configurer un système ASM Cluster File System (suite) 9) Ouvrez une fenêtre de terminal en tant qu'utilisateur root et analysez votre nouveau système de fichiers. # ls -l /u01/app/oracle total 36 drwxr-x--- 3 oracle oinstall 4096 Sep 28 13:06 acfsmounts drwxr-x--- 4 oracle oinstall 4096 Sep 28 10:21 admin drwxr-xr-x 4 oracle oinstall 4096 Sep 28 10:21 cfgtoollogs drwxr-xr-x 2 oracle oinstall 4096 Sep 28 10:22 checkpoints drwxrwxr-x 4 oracle oinstall 4096 Sep 28 10:21 diag drwxr-x--- 3 oracle oinstall 4096 May 8 18:01:00 flash_recovery_area drwxr-x--- 3 oracle oinstall 4096 May 8 18:00:00 oradata drwxrwx--- 7 oracle oinstall 4096 Sep 28 10:20 orainventory drwxrwx--- 4 oracle oinstall 4096 Sep 28 10:12 product # ls -l /u01/app/oracle/acfsmounts total 4 drwxrwxr-x 4 oracle oinstall 4096 Sep 28 13:08 acfs_db1 # ls -la /u01/app/oracle/acfsmounts/* total 76 drwxrwxr-x 4 oracle oinstall 4096 Sep 28 13:08. drwxr-x--- 3 oracle oinstall 4096 Sep 28 13:06.. drwxr-xr-x 5 root root 4096 Sep 28 13:08.ACFS drwx root root Sep 28 13:08 lost+found [root@edrsr22p1 ~]# # ls -l /dev/asm total 0 brwxrwx--- 1 root dba 252, Sep 28 13:06 acfs_db1-481 # mount /dev/sda5 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sda2 on /boot type ext3 (rw) tmpfs on /dev/shm type tmpfs (rw,size=1152m) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) oracleasmfs on /dev/oracleasm type oracleasmfs (rw) /dev/sda1 on /mnt/cdrive type vfat (rw) /dev/asm/acfs_db1-481 on /u01/app/oracle/acfsmounts/acfs_db1 type acfs (rw) # acfsutil info fs /u01/app/oracle/acfsmounts/acfs_db1 ACFS Version: flags: MountPoint,Available mount time: Mon Sep 28 13:08: volumes: 1 total size: total free: primary volume: /dev/asm/acfs_db1-481 label: flags: Primary,Available,ADVM on-disk version: 39.0 allocation unit: 4096 major, minor: 252, Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 13
34 Exercice 1-2 : Configurer un système ASM Cluster File System (suite) # size: free: ADVM diskgroup ACFS ADVM resize increment: ADVM redundancy: unprotected ADVM stripe columns: 4 ADVM stripe width: number of snapshots: 0 snapshot space usage: 0 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 14
35 Exercices - Chapitre 2 Dans les exercices de ce chapitre, vous allez installer Oracle Database 11g et créer une base de données. Vous utiliserez les clichés ASM Cluster File System. Enfin, vous emploierez l'application de patches en ligne pour modifier votre base de données. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 15
36 Exercice 2-1 : Installer le logiciel Oracle Database 11g Dans cet exercice, vous allez installer le logiciel Oracle Database dans le système ACFS (ASM Cluster File System) monté dans /u01/app/oracle/acfsmounts/acfs_db1. 1) Dans une fenêtre de terminal graphique, paramétrez vos variables d'environnement pour qu'elles pointent vers le point de montage ACFS du répertoire ORACLE_HOME, et assurez-vous que le répertoire ORACLE_BASE a la valeur /u01/app/oracle. $. oraenv ORACLE_SID = [+ASM]? orcl ORACLE_HOME = [/home/oracle]? /u01/app/oracle/acfsmounts/acfs_db1 The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ 2) Remplacez le répertoire actuel par le répertoire intermédiaire du logiciel, puis invoquez l'outil Oracle Universal Installer. $ cd /stage/11*/d* $./runinstaller Starting Oracle Universal Installer... Checking Temp space: must be greater than 80 MB. Actual 6589 MB Passed Checking swap space: must be greater than 150 MB. Actual 3868 MB Passed Checking monitor: must be configured to display at least 256 colors. Actual Passed Preparing to launch Oracle Universal Installer from /tmp/orainstall _02 Please wait 3) Dans la page Configure Security Updates, assurez-vous qu'aucun élément n'est sélectionné, puis cliquez sur Next. 4) Dans la fenêtre d'alerte Address Not Specified, cliquez sur Yes. 5) Dans la page Installation Option, sélectionnez Install Database Software Only, puis cliquez sur Next. 6) Dans la page Grid Options, sélectionnez Single Instance Database Installation, puis cliquez sur Next. 7) Dans la page Product Languages, sélectionnez toutes les langues en cliquant sur le bouton en forme de double flèche. Ensuite, cliquez sur Next. 8) Dans la page Database Edition, sélectionnez Enterprise Edition, puis cliquez sur Next. 9) Dans la page Installation Location, assurez-vous que les champs Oracle Base et Software Location possèdent respectivement les valeurs /u01/app/oracle et /u01/app/oracle/acfsmounts/acfs_db1. Ensuite, cliquez sur Next. 10) Si une fenêtre d'avertissement s'affiche et vous informe que le répertoire d'origine (home) d'oracle sélectionné n'est pas vide, cliquez sur Yes. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 16
37 Exercice 2-1 : Installer le logiciel Oracle Database 11g (suite) 11) Dans la page Operating System Groups, assurez-vous que l'élément dba est bien sélectionné pour OSDBA et OSOPER. Ensuite, cliquez sur Next. 12) Une fois les vérifications préliminaires effectuées, la page Summary s'affiche. Cliquez sur Finish. 13) Le processus d'installation démarre. 14) Attendez que le système vous invite à exécuter un script en tant qu'utilisateur root. 15) A l'invite d'exécution du script /u01/app/oracle/acfsmounts/acfs_db1/root.sh, ouvrez une fenêtre de terminal en tant qu'utilisateur root, puis exécutez le script : $ su - Password: # /u01/app/oracle/acfsmounts/acfs_db1/root.sh Running Oracle 11g root.sh script... The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /u01/app/oracle/acfsmounts/acfs_db1 Enter the full pathname of the local bin directory: [/usr/local/bin]: The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]: Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root.sh script. Now product-specific root actions will be performed. Finished product-specific root actions. # 16) Une fois l'opération terminée, retournez dans la fenêtre de l'outil OUI et cliquez sur OK dans la page Execute Configuration Scripts. 17) Dans la page Finish, cliquez sur Close. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 17
38 Exercice 2-2 : Créer une base de données Dans cet exercice, vous allez créer une base de données dans des groupes de disques ASM. 1) Utilisez DBCA (Database Configuration Assistant) pour créer la base de données. a) Connectez-vous à une session de terminal graphique en tant qu'utilisateur oracle et vérifiez que votre environnement est correctement configuré pour Oracle Database 11g. $. oraenv ORACLE_SID = [orcl]? orcl ORACLE_HOME = [/home/oracle]? /u01/app/oracle/acfsmounts/acfs_db1 The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ b) Exécutez la commande dbca à partir de cette même fenêtre de terminal : $ dbca c) Dans la page Welcome, cliquez sur Next. d) Dans la page Operations, sélectionnez Create a Database et cliquez sur Next. e) Dans la page Database Templates, sélectionnez le modèle General Purpose ou Transaction Processing, puis cliquez sur Next. f) Dans la page Database Identification, saisissez orcl (n'utilisez pas de domaine) dans le champ Global Database Name, puis cliquez sur Next. g) Dans la page Management Options, vérifiez les sélections suivantes et cliquez sur Next : Configure Enterprise Manager Configure Database Control for local management h) Dans la page Database Credentials, sélectionnez "Use the Same Administrative Password for All Accounts", saisissez oracle_4u dans les champs Password et Confirm Password, puis cliquez sur Next. i) Dans la page Database File Locations, sélectionnez Automatic Storage Management (ASM) dans la liste déroulante Storage Type, puis vérifiez que l'option Use Oracle- Managed Files est bien sélectionnée. j) Dans cette même page, cliquez sur le bouton Browse en regard du champ Database Area. k) Dans la page Select Disk Group, sélectionnez DATA et cliquez sur OK. l) Cliquez sur Next. m) Dans la page ASM Credentials, entrez oracle_4u en tant que mot de passe de l'utilisateur ASMSNMP. Cliquez sur OK. n) Dans la page Recovery Configuration, sélectionnez Specify Flash Recovery Area. o) Cliquez sur Browse, en regard du champ Flash Recovery Area. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 18
39 Exercice 2-2 : Créer une base de données (suite) p) Dans la page Select Disk Group, sélectionnez FRA et cliquez sur OK. q) Cliquez sur Next. r) Dans la page Database Content, sélectionnez Sample Schemas et cliquez sur Next. s) Dans la page Initialization Parameters : Memory, sélectionnez Custom, puis affectez la valeur 404 M Bytes à l'option SGA Size et la valeur 150 M Bytes à l'option PGA Size. Ensuite, cliquez sur l'onglet Character Sets. t) Dans la page Character Sets, sélectionnez Use Unicode (AL32UTF8). Cliquez sur Next. u) Dans la page Database Storage, cliquez sur Next. v) Dans la page Creation Options, sélectionnez Create Database et cliquez sur Finish. w) Dans la page Confirmation, cliquez sur OK. x) Patientez jusqu'à ce que la base de données soit créée. y) Lorsque DBCA a terminé, notez les informations suivantes en vue d'une utilisation ultérieure : emplacement d'installation des fichiers journaux, nom global de la base de données, identificateur du système (SID), nom et emplacement du fichier de paramètres serveur (SPFILE) et URL associée à Enterprise Manager Database Control. Notez que ce dernier est par défaut activé pour SSL. Dans la boîte de dialogue Database Configuration Assistant, cliquez sur Exit. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 19
40 Exercice 2-3 : Utiliser des clichés ASM Cluster File System Dans cet exercice, vous allez utiliser des clichés ACFS pour récupérer des fichiers depuis votre système de fichiers. 1) Dans une fenêtre de terminal, identifiez la structure de répertoire de votre système de fichiers /u01/app/oracle/acfsmounts/acfs_db1. Que voyez-vous? (Remarque : Ne fermez pas votre fenêtre de terminal après avoir terminé l'étape 1, car vous l'utiliserez à l'étape 3.) a) Vous devez voir un répertoire nommé.acfs contenant des clichés ACFS. $ cd /u01/app/oracle/acfsmounts/acfs_db1 $ $ ls -la total 520 drwxrwxr-x 76 oracle oinstall 8192 Sep 28 14:37. drwxr-x--- 3 oracle oinstall 4096 Sep 28 13:06.. drwxr-xr-x 5 root root 4096 Sep 28 13:08.ACFS drwxr-xr-x 8 oracle oinstall 8192 Sep 28 13:51 apex drwxr-xr-x 8 oracle oinstall 4096 Sep 28 13:48 assistants drwxr-xr-x 2 oracle oinstall Sep 28 14:34 bin... drwxr-xr-x 2 oracle oinstall 4096 Sep 28 13:49 utl drwxr-xr-x 3 oracle oinstall 4096 Sep 28 13:48 wwg drwxr-xr-x 7 oracle oinstall 4096 Sep 28 13:49 xdk $ $ ls -la.acfs total 32 drwxr-xr-x 5 root root 4096 Sep 28 13:08. drwxrwxr-x 76 oracle oinstall 8192 Sep 28 14:37.. drwx root root 4096 Sep 28 13:08.fileid drwx root root 4096 Sep 28 13:08 repl drwxr-xr-x 2 root root 4096 Sep 28 13:08 snaps $ $ ls -la.acfs/snaps total 8 drwxr-xr-x 2 root root 4096 Sep 28 13:08. drwxr-xr-x 5 root root 4096 Sep 28 13:08.. $ 2) Vous allez créer un cliché de votre système ASM Cluster File System à l'aide d'enterprise Manager Database Control. a) Lancez Enterprise Manager Database Control en saisissant l'url suivante dans votre navigateur : Connectez-vous en tant qu'utilisateur SYS à l'aide du mot de passe oracle_4u. Sélectionnez SYSDBA dans le menu Connect As. (Dans la salle de formation Oracle University, vous pouvez recevoir un message d'alerte concernant le certificat de sécurité. Dans ce cas, cliquez sur OK pour fermer la fenêtre d'alerte affichée. Cliquez sur "Or you can add an exception link". Cliquez sur Add Exception. Cliquez sur Get Certificate. Cliquez sur Confirm Security Exception. Connectez-vous à Enterprise Manager (comme décrit précédemment). b) Dans la page Database Home, cliquez sur le lien +ASM de la section General. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 20
41 Exercice 2-3 : Utiliser des clichés ASM Cluster File System (suite) c) Dans la page Automatic Storage Management: +ASM, cliquez sur l'onglet ASM Cluster File System. d) Dans la page Automatic Storage Management Login, entrez les informations d'identification et de connexion de l'utilisateur SYS (sys/oracle_4u), sélectionnez "Save as Preferred Credential", puis cliquez sur Login. e) Dans l'onglet ASM Cluster File System de la page Automatic Storage Management: +ASM, sélectionnez le point de montage du système de fichiers /u01/app/oracle/acfsmounts/acfs_db1, puis cliquez sur Create Snapshot. f) Dans la page Create Snapshot on ASM Cluster File System: /u01/app/oracle/acfsmounts/acfs_db1, entrez snapshot_1 dans le champ Snapshot Name. g) Cliquez sur Show Command pour afficher la commande acfsutil qui permettra de créer ce cliché. La commande doit se présenter comme suit : /sbin/acfsutil snap create "snapshot_1" /u01/app/oracle/acfsmounts/acfs_db1 h) Dans la page Show Command, cliquez sur Return. i) Retournez dans la page Create Snapshot on ASM Cluster File System: /u01/app/oracle/acfsmounts/acfs_db1, puis cliquez sur OK. j) Dans la page ASM Cluster File System Host Credentials, entrez oracle/oracle comme informations d'identification et de connexion (credentials) à l'hôte, sélectionnez "Save as Preferred Credential", puis cliquez sur Continue. k) De retour dans la page Automatic Storage Management: +ASM, vous devez voir un statut de confirmation vous informant que le cliché "snapshot_1" a été créé avec succès. l) Dans l'onglet ASM Cluster File System, vous devez constater que le nombre de clichés définis pour votre système de fichiers est à présent de 1. 3) Dans la fenêtre de terminal (toujours dans le répertoire /u01/app/oracle/acfsmounts/acfs_db1), vérifiez que le cliché a bien été créé. a) Bien que vous puissiez voir tous les fichiers dans le cliché, sa création a été très rapide! $ ls -la.acfs/snaps total 24 drwxr-xr-x 3 root root 4096 Sep 29 11:24. drwxr-xr-x 5 root root 4096 Sep 28 13:08.. drwxrwxr-x 76 oracle oinstall 8192 Sep 29 11:24 snapshot_1 $ $ ls -la.acfs/snaps/* total 456 drwxrwxr-x 76 oracle oinstall 8192 Sep 29 11:24. drwxr-xr-x 3 root root 4096 Sep 29 11:24.. drwxr-xr-x 5 root root 4096 Sep 28 13:08.ACFS drwxr-xr-x 8 oracle oinstall 8192 Sep 28 13:51 apex drwxr-xr-x 8 oracle oinstall 4096 Sep 28 13:48 assistants drwxr-xr-x 2 oracle oinstall Sep 28 14:34 bin... drwxr-xr-x 2 oracle oinstall 4096 Sep 28 13:49 utl Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 21
42 Exercice 2-3 : Utiliser des clichés ASM Cluster File System (suite) drwxr-xr-x 3 oracle oinstall 4096 Sep 28 13:48 wwg drwxr-xr-x 7 oracle oinstall 4096 Sep 28 13:49 xdk $ 4) Dans Enterprise Manager Database Control, vous allez à présent vérifier que le cliché a bien été créé et qu'il contient les fichiers requis. a) De retour dans l'onglet ASM Cluster File System, cliquez sur 1 dans la colonne Snapshots. b) Dans l'onglet Snapshots de la page ASM Cluster File System: /u01/app/oracle/acfsmounts/acfs_db1, cliquez sur le lien snapshot_1 dans la colonne Name de la table Snapshots. c) Si elles sont requises, entrez oracle/oracle comme informations d'identification et de connexion (credentials) à l'hôte, puis cliquez sur Continue. Vous pouvez sélectionner "Save as Preferred Credential". d) Cette opération fait apparaître la page Search and List: Directory à partir de laquelle vous pouvez rechercher les fichiers associés à votre cliché. 5) A partir d'une fenêtre de terminal, supprimez le répertoire demo de votre répertoire d'origine (home) d'oracle Database, le but étant de simuler une erreur humaine. $ rm -r /u01/app/oracle/acfsmounts/acfs_db1/demo $ ls apex emcli md precomp assistants EMStagePatches_orcl mesg racg bin has mgw rdbms ccr hs network relnotes cdata ide nls root.sh cfgtoollogs install oc4j scheduler clone install.platform odbc slax config instantclient olap sqldeveloper crs inventory ons sqlj csmig j2ee OPatch sqlplus css javavm opmn srvm ctx jdbc oracore sysman cv jdev orainst.loc timingframework dbs jdk ord ucp dc_ocm jlib oui uix deinstall ldap owb utl diagnostics lib owm wwg dv log perl xdk edrsr lost+found plsql $ 6) Dans Enterprise Manager Database Control, vous allez vérifier qu'il est possible de récupérer ce répertoire perdu. a) De retour dans la page Search and List: Directory, cliquez sur le lien demo de la table Search. b) Vous pouvez voir qu'il contient le répertoire du schéma. c) Cliquez sur le bouton Close. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 22
43 Exercice 2-3 : Utiliser des clichés ASM Cluster File System (suite) 7) Restaurez le répertoire demo à l'aide de commandes du système d'exploitation. $ cp -r /u01/app/oracle/acfsmounts/acfs_db1/.acfs/snaps/snapshot_1/demo /u01/app/oracle/acfsmounts/acfs_db1 $ $ ls -ls /u01/app/oracle/acfsmounts/acfs_db1 total drwxr-xr-x 8 oracle oinstall 8192 Sep 28 13:51 apex 4 drwxr-xr-x 8 oracle oinstall 4096 Sep 28 13:48 assistants 52 drwxr-xr-x 2 oracle oinstall Sep 28 14:34 bin 4 drwxr-xr-x 7 oracle oinstall 4096 Sep 28 13:52 ccr 4 drwxr-xr-x 3 oracle oinstall 4096 Sep 28 13:53 cdata 4 drwxr-xr-x 4 oracle oinstall 4096 Sep 28 14:09 cfgtoollogs 4 drwxr-xr-x 4 oracle oinstall 4096 Sep 28 13:50 clone 4 drwxr-xr-x 2 oracle oinstall 4096 Sep 28 13:53 config 4 drwxr-xr-x 6 oracle oinstall 4096 Sep 28 13:48 crs 4 drwxr-xr-x 3 oracle oinstall 4096 Sep 28 13:48 csmig 4 drwxr-xr-x 6 oracle oinstall 4096 Sep 28 13:53 css 4 drwxr-xr-x 10 oracle oinstall 4096 Sep 28 13:54 ctx 4 drwxr-xr-x 6 oracle oinstall 4096 Sep 28 13:48 cv 4 drwxr-xr-x 4 oracle oinstall 4096 Sep 28 14:34 dbs 4 drwxr-xr-x 2 oracle oinstall 4096 Sep 28 13:51 dc_ocm 4 drwxr-xr-x 4 oracle oinstall 4096 Sep 28 13:56 deinstall 4 drwxr-xr-x 3 oracle oinstall 4096 Sep 29 11:41 demo 4 drwxr-xr-x 3 oracle oinstall 4096 Sep 28 13:48 diagnostics 4 drwxr-xr-x 2 oracle oinstall 4096 Sep 28 13:49 utl 4 drwxr-xr-x 3 oracle oinstall 4096 Sep 28 13:48 wwg 4 drwxr-xr-x 7 oracle oinstall 4096 Sep 28 13:49 xdk $ 8) Connecté en tant qu'utilisateur root dans une fenêtre de terminal, récupérez les données d'informations relatives à votre système ASM Cluster File System. # acfsutil info fs /u01/app/oracle/acfsmounts/acfs_db1 /u01/app/oracle/acfsmounts/acfs_db1 ACFS Version: flags: MountPoint,Available mount time: Mon Sep 28 13:08: volumes: 1 total size: total free: primary volume: /dev/asm/acfs_db1-481 label: flags: Primary,Available,ADVM on-disk version: 39.0 allocation unit: 4096 major, minor: 252, size: free: ADVM diskgroup ACFS ADVM resize increment: ADVM redundancy: unprotected ADVM stripe columns: 4 ADVM stripe width: Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 23
44 Exercice 2-3 : Utiliser des clichés ASM Cluster File System (suite) number of snapshots: 1 snapshot space usage: You have new mail in /var/spool/mail/root # 9) Dans Enterprise Manager Database Control, vous allez ensuite supprimer votre cliché ACFS. a) Retournez dans l'onglet Snapshots de la page ASM Cluster File System: /u01/app/oracle/acfsmounts/acfs_db1. b) Dans l'onglet Snapshots, sélectionnez snapshot_1 et cliquez sur Delete. c) Dans la page Confirmation, développez le lien Show Command. La commande doit se présenter comme suit : /sbin/acfsutil snap delete "snapshot_1" /u01/app/oracle/acfsmounts/acfs_db1 d) Dans la page Confirmation, cliquez sur Yes. e) Entrez les informations d'identification et de connexion oracle/oracle pour l'hôte et sélectionnez Save as Preferred Credential. Cliquez sur Continue. f) De retour dans l'onglet Snapshots de la page ASM Cluster File System: /u01/app/oracle/acfsmounts/acfs_db1, vous devez recevoir un message de confirmation indiquant que les clichés sélectionnés ont été supprimés avec succès. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 24
45 Exercice 2-4 : Utiliser l'application de patches en ligne Dans cet exercice, vous allez appliquer un patch en ligne à votre instance de base de données en cours d'exécution sans arrêter celle-ci. 1) Dans une fenêtre de terminal où vous êtes connecté en tant qu'utilisateur oracle, exécutez le script OP_setup.sh. Ce script génère un bug dans le logiciel Oracle Database. $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ cd /home/oracle/solutions/op $./OP_setup.sh Oracle Enterprise Manager 11g Database Control Release Copyright (c) 1996, 2009 Oracle Corporation. Tous droits réservés. Stopping Oracle Enterprise Manager 11g Database Control Stopped. SQL*Plus: Release Production on Tue Sep 29 13:08: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Database closed. Database dismounted. ORACLE instance shut down. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options chmod 755 /u01/app/oracle/acfsmounts/acfs_db1/bin - Linking Oracle rm -f /u01/app/oracle/acfsmounts/acfs_db1/rdbms/lib/oracle gcc -o /u01/app/oracle/acfsmounts/acfs_db1/rdbms/lib/oracle -m32 -L/u01/app/oracle/acfsmounts/acfs_db1/rdbms/lib/ - L/u01/app/oracle/acfsmounts/acfs_db1/lib/ - L/u01/app/oracle/acfsmounts/acfs_db1/lib/stubs/ - L/u01/app/oracle/acfsmounts/acfs_db1/lib/ -lirc -lipgo -Wl,-E /u01/app/oracle/acfsmounts/acfs_db1/rdbms/lib/opimai.o /u01/app/oracle/acfsmounts/acfs_db1/rdbms/lib/ssoraed.o /u01/app/oracle/acfsmounts/acfs_db1/rdbms/lib/ttcsoi.o -Wl,-- whole-archive -lperfsrv11 -Wl,--no-whole-archive /u01/app/oracle/acfsmounts/acfs_db1/lib/nautab.o /u01/app/oracle/acfsmounts/acfs_db1/lib/naeet.o /u01/app/oracle/acfsmounts/acfs_db1/lib/naect.o /u01/app/oracle/acfsmounts/acfs_db1/lib/naedhs.o /u01/app/oracle/acfsmounts/acfs_db1/rdbms/lib/config.o - lserver11 -lodm11 -lcell11 -lnnet11 -lskgxp11 -lsnls11 -lnls11 - Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 25
46 Exercice 2-4 : Utiliser l'application de patches en ligne (suite) lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 - lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lclient11 - lvsn11 -lcommon11 -lgeneric11 -lknlopt `if /usr/bin/ar tv /u01/app/oracle/acfsmounts/acfs_db1/rdbms/lib/libknlopt.a grep xsyeolap.o > /dev/null 2>&1 ; then echo "-loraolap11" ; fi` - lslax11 -lpls11 -lrt -lplp11 -lserver11 -lclient11 -lvsn11 - lcommon11 -lgeneric11 `if [ -f /u01/app/oracle/acfsmounts/acfs_db1/lib/libavserver11.a ] ; then echo "-lavserver11" ; else echo "-lavstub11"; fi` `if [ -f /u01/app/oracle/acfsmounts/acfs_db1/lib/libavclient11.a ] ; then echo "-lavclient11" ; fi` -lknlopt -lslax11 -lpls11 -lrt -lplp11 -ljavavm11 -lserver11 -lwwg `cat /u01/app/oracle/acfsmounts/acfs_db1/lib/ldflags` -lncrypt11 - lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/app/oracle/acfsmounts/acfs_db1/lib/ldflags` -lncrypt11 - lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lmm -lsnls11 - lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 - lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 - lztkg11 `cat /u01/app/oracle/acfsmounts/acfs_db1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/app/oracle/acfsmounts/acfs_db1/lib/ldflags` -lncrypt11 - lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 - lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `if /usr/bin/ar tv /u01/app/oracle/acfsmounts/acfs_db1/rdbms/lib/libknlopt.a grep "kxmnsd.o" > /dev/null 2>&1 ; then echo " " ; else echo "- lordsdo11"; fi` -L/u01/app/oracle/acfsmounts/acfs_db1/ctx/lib/ - lctxc11 -lctx11 -lzx11 -lgx11 -lctx11 -lzx11 -lgx11 -lordimt11 - lclsra11 -ldbcfg11 -lhasgen11 -lskgxn2 -lnnz11 -lzt11 -lxml11 - locr11 -locrb11 -locrutl11 -lhasgen11 -lskgxn2 -lnnz11 -lzt11 - lxml11 -lasmclnt11 -lcommon11 -lcell11 -lskgxp11 -lgeneric11 - lcommon11 -lgeneric11 -loraz -llzopro -lorabz2 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 - lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lsnls11 - lunls11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 - lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 - lcore11 -lnls11 -lasmclnt11 -laio `cat /u01/app/oracle/acfsmounts/acfs_db1/lib/sysliblist` -Wl,- rpath,/u01/app/oracle/acfsmounts/acfs_db1/lib -lm `cat /u01/app/oracle/acfsmounts/acfs_db1/lib/sysliblist` -ldl -lm - L/u01/app/oracle/acfsmounts/acfs_db1/lib test! -f /u01/app/oracle/acfsmounts/acfs_db1/bin/oracle \ mv -f /u01/app/oracle/acfsmounts/acfs_db1/bin/oracle /u01/app/oracle/acfsmounts/acfs_db1/bin/oracleo mv /u01/app/oracle/acfsmounts/acfs_db1/rdbms/lib/oracle /u01/app/oracle/acfsmounts/acfs_db1/bin/oracle chmod 6751 /u01/app/oracle/acfsmounts/acfs_db1/bin/oracle SQL*Plus: Release Production on Tue Sep 29 13:09: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to an idle instance. ORACLE instance started. Total System Global Area bytes Fixed Size bytes Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 26
47 Exercice 2-4 : Utiliser l'application de patches en ligne (suite) Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database opened. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 2) Appelez SQL*Plus et connectez-vous en tant qu'utilisateur SYS. Exécutez la commande suivante : select * from mysql_is_great; Qu'observez-vous? a) Vous obtenez une erreur ORA-600. Le bug introduit exprès pour cet exercice est à l'origine de cette erreur. Quittez SQL*Plus. $ sqlplus / as sysdba SQL*Plus: Release Production on Tue Sep 29 13:14: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options select * from mysql_is_great; select * from mysql_is_great * ERROR at line 1: ORA-00600: internal error code, arguments: [HAH!], [ORACLE], [IS], [BETTER!], [], [], [], [], [], [], [], [] exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 3) Décompressez le fichier hotpatch.zip dans votre répertoire $HOME/solutions/OP. Il s'agit du patch à appliquer pour corriger le bug. $ rm -r $ unzip zip Archive: zip creating: / creating: /files/ creating: /files/hpatch/ inflating: /files/hpatch/bug pch creating: /etc/ creating: /etc/config/ inflating: /etc/config/inventory.xml Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 27
48 Exercice 2-4 : Utiliser l'application de patches en ligne (suite) inflating: /etc/config/actions.xml creating: /etc/xml/ inflating: /etc/xml/GenericActions.xml inflating: /etc/xml/ShiphomeDirectoryStructure.xml extracting: /README.txt $ 4) Vérifiez que le patch fourni est un patch en ligne, puis appliquez-le pendant que votre base de données est en cours d'exécution. Son installation ne devrait prendre que quelques secondes. Remarque : Prenez soin d'utiliser le signe `, et non un tiret droit. $ cd /home/oracle/solutions/op/ $ $ORACLE_HOME/OPatch/opatch query -is_online_patch `pwd` Invoking OPatch Oracle Interim Patch Installer version Copyright (c) 2009, Oracle Corporation. Tous droits réservés. Oracle Home : /u01/app/oracle/acfsmounts/acfs_db1 Central Inventory : /u01/app/oracle/orainventory from : /etc/orainst.loc OPatch version : OUI version : OUI location : /u01/app/oracle/acfsmounts/acfs_db1/oui Log file location : /u01/app/oracle/acfsmounts/acfs_db1/cfgtoollogs/opatch/opatch _ pm.log Patch history file: /u01/app/oracle/acfsmounts/acfs_db1/cfgtoollogs/opatch/opatch_his tory.txt Patch is an online patch: true OPatch succeeded. $ $ORACLE_HOME/OPatch/opatch lsinventory Invoking OPatch Oracle Interim Patch Installer version Copyright (c) 2009, Oracle Corporation. Tous droits réservés. Oracle Home : /u01/app/oracle/acfsmounts/acfs_db1 Central Inventory : /u01/app/oracle/orainventory from : /etc/orainst.loc OPatch version : OUI version : OUI location : /u01/app/oracle/acfsmounts/acfs_db1/oui Log file location : /u01/app/oracle/acfsmounts/acfs_db1/cfgtoollogs/opatch/opatch _ pm. log Patch history file: /u01/app/oracle/acfsmounts/acfs_db1/cfgtoollogs/opatch/opatch_his tory.txt Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 28
49 Exercice 2-4 : Utiliser l'application de patches en ligne (suite) Lsinventory Output file location : /u01/app/oracle/acfsmounts/acfs_db1/cfgtoollogs/opatch/lsinv/lsin ventory _ pm.txt Installed Top-level Products (1): Oracle Database 11g There are 1 products installed in this Oracle Home. There are no Interim patches installed in this Oracle Home OPatch succeeded. $ $ORACLE_HOME/OPatch/opatch apply /home/oracle/solutions/op/ connectstring orcl::: Invoking OPatch Oracle Interim Patch Installer version Copyright (c) 2009, Oracle Corporation. Tous droits réservés. Oracle Home : /u01/app/oracle/acfsmounts/acfs_db1 Central Inventory : /u01/app/oracle/orainventory from : /etc/orainst.loc OPatch version : OUI version : OUI location : /u01/app/oracle/acfsmounts/acfs_db1/oui Log file location : /u01/app/oracle/acfsmounts/acfs_db1/cfgtoollogs/opatch/opatch _ pm.log Patch history file: /u01/app/oracle/acfsmounts/acfs_db1/cfgtoollogs/opatch/opatch_his tory.txt ApplySession applying interim patch ' ' to OH '/u01/app/oracle/acfsmounts/acfs_db1' Running prerequisite checks... OPatch detected non-cluster Oracle Home from the inventory and will patch the local system only. Backing up files and inventory (not for auto-rollback) for the Oracle Home Backing up files affected by the patch ' ' for restore. This might take a while... Backing up files affected by the patch ' ' for rollback. This might take a while... Patching component oracle.rdbms, The patch will be installed on active database instances. Running mkpatch on 'bug pch' to make it compatible with the Oracle binary... Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 29
50 Exercice 2-4 : Utiliser l'application de patches en ligne (suite) Installing and enabling the online patch 'bug pch', on database 'orcl'. ApplySession adding interim patch ' ' to inventory Verifying the update... Inventory check OK: Patch ID is registered in Oracle Home inventory with proper meta-data. Files check OK: Files from Patch ID are present in Oracle Home. OPatch succeeded. $ $ORACLE_HOME/OPatch/opatch lsinventory Invoking OPatch Oracle Interim Patch Installer version Copyright (c) 2009, Oracle Corporation. Tous droits réservés. Oracle Home : /u01/app/oracle/acfsmounts/acfs_db1 Central Inventory : /u01/app/oracle/orainventory from : /etc/orainst.loc OPatch version : OUI version : OUI location : /u01/app/oracle/acfsmounts/acfs_db1/oui Log file location : /u01/app/oracle/acfsmounts/acfs_db1/cfgtoollogs/opatch/opatch _ pm.log Patch history file: /u01/app/oracle/acfsmounts/acfs_db1/cfgtoollogs/opatch/opatch_his tory.txt Lsinventory Output file location : /u01/app/oracle/acfsmounts/acfs_db1/cfgtoollogs/opatch/lsinv/lsin ventory _ pm.txt Installed Top-level Products (1): Oracle Database 11g There are 1 products installed in this Oracle Home. Interim patches (1) : Patch (online) : applied on Tue Jul 07 16:07:31 GMT+07: Unique Patch ID: 1 Created on 6 Jul 2009, 16:53:30 hrs PST8PDT Bugs fixed: OPatch succeeded. $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 30
51 Exercice 2-4 : Utiliser l'application de patches en ligne (suite) 5) Appelez SQL*Plus et connectez-vous en tant qu'utilisateur SYS. Exécutez de nouveau la commande suivante : select * from mysql_is_great; Qu'observez-vous? a) Cette fois, vous obtenez l'erreur standard ORA Quittez SQL*Plus. $ sqlplus / as sysdba SQL*Plus: Release Production on Tue Sep 29 13:30: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options select * from mysql_is_great; select * from mysql_is_great * ERROR at line 1: ORA-00942: table or view does not exist exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 6) Alors que votre instance de base de données est toujours en cours d'exécution, annulez votre patch (rollback). Qu'observez-vous? a) Le patch est supprimé très rapidement. $ $ORACLE_HOME/OPatch/opatch rollback -id connectstring orcl::: Invoking OPatch Oracle Interim Patch Installer version Copyright (c) 2009, Oracle Corporation. Tous droits réservés. Oracle Home : /u01/app/oracle/acfsmounts/acfs_db1 Central Inventory : /u01/app/oracle/orainventory from : /etc/orainst.loc OPatch version : OUI version : OUI location : /u01/app/oracle/acfsmounts/acfs_db1/oui Log file location : /u01/app/oracle/acfsmounts/acfs_db1/cfgtoollogs/opatch/opatch _ pm.log Patch history file: /u01/app/oracle/acfsmounts/acfs_db1/cfgtoollogs/opatch/opatch_his tory.txt Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 31
52 Exercice 2-4 : Utiliser l'application de patches en ligne (suite) RollbackSession rolling back interim patch ' ' from OH '/u01/app/oracle/acfsmounts/acfs_db1' Running prerequisite checks... OPatch detected non-cluster Oracle Home from the inventory and will patch the local system only. Backing up files affected by the patch ' ' for restore. This might take a while... Patching component oracle.rdbms, The patch will be removed from active database instances. Disabling and removing online patch 'bug pch', on database 'orcl' RollbackSession removing interim patch ' ' from inventory OPatch succeeded. $ $ORACLE_HOME/OPatch/opatch lsinventory Invoking OPatch Oracle Interim Patch Installer version Copyright (c) 2009, Oracle Corporation. Tous droits réservés. Oracle Home : /u01/app/oracle/acfsmounts/acfs_db1 Central Inventory : /u01/app/oracle/orainventory from : /etc/orainst.loc OPatch version : OUI version : OUI location : /u01/app/oracle/acfsmounts/acfs_db1/oui Log file location : /u01/app/oracle/acfsmounts/acfs_db1/cfgtoollogs/opatch/opatch _ pm.log Patch history file: /u01/app/oracle/acfsmounts/acfs_db1/cfgtoollogs/opatch/opatch_his tory.txt Lsinventory Output file location : /u01/app/oracle/acfsmounts/acfs_db1/cfgtoollogs/opatch/lsinv/lsin ventory _ pm.txt Installed Top-level Products (1): Oracle Database 11g There are 1 products installed in this Oracle Home. There are no Interim patches installed in this Oracle Home OPatch succeeded. $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 32
53 Exercice 2-4 : Utiliser l'application de patches en ligne (suite) 7) Appelez SQL*Plus et connectez-vous en tant qu'utilisateur SYS. Exécutez la commande suivante : select * from mysql_is_great; Qu'observez-vous? a) Vous devez à nouveau obtenir une erreur interne. Quittez SQL*Plus. $ sqlplus / as sysdba SQL*Plus: Release Production on Sep 29 13:34: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options select * from mysql_is_great; select * from mysql_is_great * ERROR at line 1: ORA-00600: internal error code, arguments: [HAH!], [ORACLE], [IS], [BETTER!], [], [], [], [], [], [], [], [] exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 8) Dans une fenêtre de terminal où vous êtes connecté en tant qu'utilisateur oracle, exécutez le script OP_cleanup.sh pour restaurer votre environnement. $ cd /home/oracle/solutions/op $./OP_cleanup.sh SQL*Plus: Release Production on Tue Sep 29 13:37: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Database closed. Database dismounted. ORACLE instance shut down. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options chmod 755 /u01/app/oracle/acfsmounts/acfs_db1/bin Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 33
54 Exercice 2-4 : Utiliser l'application de patches en ligne (suite) - Linking Oracle rm -f /u01/app/oracle/acfsmounts/acfs_db1/rdbms/lib/oracle gcc -o /u01/app/oracle/acfsmounts/acfs_db1/rdbms/lib/oracle -m32 -L/u01/app/oracle/acfsmounts/acfs_db1/rdbms/lib/ - L/u01/app/oracle/acfsmounts/acfs_db1/lib/ - /u01/app/oracle/acfsmounts/acfs_db1/bin/oracle /u01/app/oracle/acfsmounts/acfs_db1/bin/oracleo mv /u01/app/oracle/acfsmounts/acfs_db1/rdbms/lib/oracle /u01/app/oracle/acfsmounts/acfs_db1/bin/oracle chmod 6751 /u01/app/oracle/acfsmounts/acfs_db1/bin/oracle SQL*Plus: Release Production on Tue Sep 29 13:38: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to an idle instance. ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database opened. select * from mysql_is_great * ERROR at line 1: ORA-00942: table or view does not exist Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 9) Dans une fenêtre de terminal où vous êtes connecté en tant qu'utilisateur oracle, redémarrez Enterprise Manager Database Control à l'aide de la commande suivante : emctl start dbconsole $ emctl start dbconsole Oracle Enterprise Manager 11g Database Control Release Copyright (c) 1996, 2009 Oracle Corporation. Tous droits réservés. Starting Oracle Enterprise Manager 11g Database Control... started Logs are generated in directory /u01/app/oracle/acfsmounts/acfs_db1/edrsr40p1.us.oracle.com_orcl/ sysman/log $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 34
55 Exercices - Chapitre 3 Dans cet exercice, vous allez utiliser Oracle Restart pour gérer des composants. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 35
56 Exercice 3-1 : Utiliser Oracle Restart pour gérer des composants Dans cet exercice, vous allez utiliser Oracle Restart pour gérer des composants de base de données pour le redémarrage automatique. 1) Utilisez Enterprise Manager pour déterminer si votre instance de base de données orcl est actuellement gérée par Oracle Restart. a) Accédez à la page Home en cliquant sur l'onglet Database. b) Dans la page Home, analysez la section High Availability. Vous constatez qu'oracle Restart possède le statut Enabled pour votre instance de base de données. 2) Pour déterminer l'incidence de l'activation d'oracle Restart, stoppez le processus LGWR de votre instance de base de données orcl. Qu'observez-vous? a) Définissez les variables d'environnement pour votre instance de base de données orcl. Une fois le processus LGWR interrompu, l'instance est arrêtée. Après quelques instants, l'instance est automatiquement redémarrée par Oracle Restart. $. oraenv ORACLE_SID = [orcl]? orcl $ srvctl config database -d orcl Database unique name: orcl Database name: orcl Oracle home: /u01/app/oracle/acfsmounts/acfs_db1 Oracle user: oracle Spfile: +DATA/orcl/spfileorcl.ora Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: automatic Disk Groups: DATA,FRA Services: $ $ ps -ef grep ora_lgwr_orcl oracle Sep29? 00:00:03 ora_lgwr_orcl oracle :01:00 pts/2 00:00:00 grep ora_lgwr_orcl $ kill $ ps -ef grep ora_lgwr_orcl oracle :03:00 pts/2 00:00:00 grep ora_lgwr_orcl $ ps -ef grep ora_lgwr_orcl oracle :03:00? 00:00:00 ora_lgwr_orcl oracle :04:00 pts/2 00:00:00 grep ora_lgwr_orcl $ 3) Supprimez votre instance de base de données orcl de la configuration Oracle Restart. $ srvctl remove database -d orcl PRKO-3141 : Database orcl could not be removed because it was running $ srvctl stop database -d orcl $ srvctl remove database -d orcl Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 36
57 Exercice 3-1 : Utiliser Oracle Restart pour gérer des composants (suite) Remove the database orcl? (y/[n]) y $ srvctl remove database -d orcl PRCD-1120 : The resource for database orcl could not be found. PRCR-1001 : Resource ora.orcl.db does not exist $ 4) Redémarrez votre instance de base de données orcl. $ srvctl start database -d orcl PRCD-1120 : The resource for database orcl could not be found. PRCR-1001 : Resource ora.orcl.db does not exist $ $ sqlplus / as sysdba SQL*Plus: Release Production on Wed Sep 30 07:14: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to an idle instance. startup ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database opened. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 5) Stoppez à nouveau le processus LGWR de votre instance de base de données orcl. Qu'observez-vous? a) L'instance de base de données est arrêtée, mais n'est plus redémarrée automatiquement. $ ps -ef grep ora_lgwr_orcl oracle :14:00? 00:00:00 ora_lgwr_orcl oracle :17:00 pts/2 00:00:00 grep ora_lgwr_orcl $ kill $ $ ps -ef grep ora_lgwr_orcl oracle :18:00 pts/2 00:00:00 grep ora_lgwr_orcl $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 37
58 Exercice 3-1 : Utiliser Oracle Restart pour gérer des composants (suite) 6) Redémarrez votre instance de base de données orcl. $ sqlplus / as sysdba SQL*Plus: Release Production on Wed Sep 30 07:19: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to an idle instance. startup ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database opened. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 7) Dans Enterprise Manager, ajoutez de nouveau votre instance de base de données orcl dans la configuration Oracle Restart. Qu'observez-vous? a) Connectez-vous à la console Database Console en tant qu'utilisateur SYS et accédez à la page Home. b) Actualisez l'affichage plusieurs fois jusqu'à ce que la base de données n'ait plus le statut "hors ligne" (offline). Vous pouvez également essayer de stopper et de redémarrer la console Database pour vous assurer qu'elle obtient le statut le plus récent. Dans une fenêtre de terminal, utilisez les commandes suivantes : $ emctl stop dbconsole Oracle Enterprise Manager 11g Database Control Release Copyright (c) 1996, 2009 Oracle Corporation. Tous droits réservés. Stopping Oracle Enterprise Manager 11g Database Control Stopped. $ emctl start dbconsole Oracle Enterprise Manager 11g Database Control Release Copyright (c) 1996, 2009 Oracle Corporation. Tous droits réservés. Starting Oracle Enterprise Manager 11g Database Control... started Logs are generated in directory /u01/app/oracle/acfsmounts/acfs_db1/ _orcl/sysman/log $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 38
59 Exercice 3-1 : Utiliser Oracle Restart pour gérer des composants (suite) c) Dans la page d'accueil de la base de données, accédez à la section High Availability et cliquez sur le lien Disabled en regard du champ Oracle Restart. (Remarque : Si Oracle Restart n'est pas désactivé dans la page Enterprise Manager et qu'aucun lien n'est actif, vous devrez peut-être réexécuter manuellement la commande SRVCTL à l'étape f et passer à l'étape i.) d) Dans la page Specify Host Credentials, entrez oracle dans les champs Username et Password, puis sélectionnez "Save as Preferred Credential". e) Cliquez sur Login. f) Dans la page Confirmation: Register Database, vous pouvez voir la commande utilisée pour enregistrer orcl avec Oracle Restart: srvctl add database -d orcl -o /u01/app/oracle/acfsmounts/acfs_db1 g) Cliquez sur Continue. h) De retour dans la page Home, vous devez voir qu'oracle Restart est désactivé pour votre instance de base de données orcl. i) Cependant, seules les ressources de base de données sont à nouveau ajoutées à la configuration Oracle Restart. Vous pouvez vérifier cela à l'aide de l'utilitaire SRVCTL : $ srvctl config database -d orcl Database unique name: orcl Database name: Oracle home: /u01/app/oracle/acfsmounts/acfs_db1 Oracle user: oracle Spfile: Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: automatic Disk Groups: Services: 8) Ajoutez de nouveau votre instance de base de données orcl et ses dépendances à la configuration Oracle Restart. $ srvctl status database -d orcl Database is not running. $ srvctl start database -d orcl $ srvctl status database -d orcl Database is running. $ $ srvctl config database -d orcl Database unique name: orcl Database name: Oracle home: /u01/app/oracle/acfsmounts/acfs_db1 Oracle user: oracle Spfile: Domain: Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 39
60 Exercice 3-1 : Utiliser Oracle Restart pour gérer des composants (suite) Start options: open Stop options: immediate Database role: PRIMARY Management policy: automatic Disk Groups: Services: $ $ srvctl modify database -d orcl -n orcl -p +DATA/orcl/spfileorcl.ora -a DATA,FRA $ srvctl config database -d orcl Database unique name: orcl Database name: orcl Oracle home: /u01/app/oracle/acfsmounts/acfs_db1 Oracle user: oracle Spfile: +DATA/orcl/spfileorcl.ora Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: automatic Disk Groups: DATA,FRA Services: $ 9) Assurez-vous qu'oracle Restart fonctionne correctement avec votre instance de base de données orcl. Arrêtez à nouveau le processus LGWR et vérifiez qu'il est automatiquement redémarré. $ ps -ef grep lgwr oracle Sep28? 00:00:00 asm_lgwr_+asm oracle :20:00? 00:00:00 ora_lgwr_orcl oracle :31:00 pts/2 00:00:00 grep lgwr $ kill $ ps -ef grep lgwr oracle Sep28? 00:00:00 asm_lgwr_+asm oracle :33:00 pts/2 00:00:00 grep lgwr $ ps -ef grep lgwr oracle Sep28? 00:00:00 asm_lgwr_+asm oracle :33:00? 00:00:00 ora_lgwr_orcl oracle :34:00 pts/2 00:00:00 grep lgwr $ 10) Désactivez Oracle Restart sur votre instance de base de données orcl. $ srvctl disable database -d orcl $ srvctl status database -d orcl -f Database is disabled Database is running. $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 40
61 Exercice 3-1 : Utiliser Oracle Restart pour gérer des composants (suite) 11) Vérifiez qu'oracle Restart ne démarre plus automatiquement votre instance de base de données orcl. Arrêtez à nouveau le processus LGWR et vérifiez que l'instance ne redémarre pas automatiquement. $ ps -ef grep lgwr oracle Sep28? 00:00:00 asm_lgwr_+asm oracle :33:00? 00:00:00 ora_lgwr_orcl oracle :36:00 pts/2 00:00:00 grep lgwr $ kill $ ps -ef grep lgwr oracle Sep28? 00:00:00 asm_lgwr_+asm oracle :38:00 pts/2 00:00:00 grep lgwr $ ps -ef grep lgwr oracle Sep28? 00:00:00 asm_lgwr_+asm oracle :38:00 pts/2 00:00:00 grep lgwr $ ps -ef grep lgwr oracle Sep28? 00:00:00 asm_lgwr_+asm oracle :38:00 pts/2 00:00:00 grep lgwr $ 12) Activez à nouveau Oracle Restart sur votre instance de base de données orcl. $ srvctl enable database -d orcl $ srvctl status database -d orcl -f Database is not running. $ srvctl status database -d orcl -f Database is running. $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 41
62 Exercices - Chapitre 4 Dans cet exercice, vous allez apprendre à utiliser la fonctionnalité ASM Fast Mirror Resync. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 42
63 Exercice 4-1 : Utiliser ASM Fast Mirror Resync Dans cet exercice, vous allez étudier le temps nécessaire pour ajouter un disque qui a été mis hors ligne suite à un problème non lié aux données du disque. Vous allez effectuer cet ajout avec et sans la fonctionnalité ASM Fast Mirror Resync. 1) Déterminez les niveaux de compatibilité de vos groupes de disques ASM existants. Qu'observez-vous? a) Les niveaux de comptabilité de la base de données et d'asm sont définis avec leurs valeurs par défaut. $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ sqlplus / as sysdba SQL*Plus: Release Production on Wed Sep 30 07:59: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options col name format a10 col compatibility format a20 col database_compatibility format a25 select name,compatibility,database_compatibility from v$asm_diskgroup; NAME COMPATIBILITY DATABASE_COMPATIBILITY DATA FRA ACFS ) A l'aide d'enterprise Manager Database Control, accédez à la page du groupe de disques DATA et vérifiez que ses valeurs de compatibilité sont les mêmes que celles vues précédemment. a) Connectez-vous à Enterprise Manager Database Control avec l'utilisateur SYS. b) Dans la page Home, cliquez sur le lien +ASM en regard du champ ASM de la section General. c) Dans la page d'accueil ASM, cliquez sur l'onglet Disk Groups. d) Si la page Automatic Storage Management Login apparaît, saisissez sys dans le champ Username et oracle_4u dans le champ Password, et sélectionnez SYSASM dans le champ Connect As. Cochez la case "Save as Preferred Credentials". Ensuite, cliquez sur Login. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 43
64 Exercice 4-1 : Utiliser ASM Fast Mirror Resync (suite) e) Dans la page Disk Groups, cliquez sur le lien DATA visible dans la table. f) Vous devez constater que le niveau de compatibilité de la base de données est et que celui d'asm est Notez également que l'attribut Disk Repair Time est défini avec la valeur 3,6 heures. 3) Utilisez Enterprise Manager Database Control pour modifier le niveau de comptabilité de la base de données du groupe de disques DATA. Affectez-lui la valeur a) Dans la sous-page Disk Group: DATA General, cliquez sur Edit dans la section Advanced Attributes. b) Dans la page "Edit Advanced Attributes for Disk Group: DATA", saisissez dans les champs Database Compatibility et ASM Compatibility. Cliquez sur OK. 4) Utilisez SQL*Plus pour vérifier que la mise à jour précédente a été effectuée avec succès. Quittez SQL*Plus. select name,compatibility,database_compatibility from v$asm_diskgroup; NAME COMPATIBILITY DATABASE_COMPATIBILITY DATA FRA ACFS exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 5) Exécutez le script asm_setup.sh (placé dans votre répertoire /home/oracle/solutions/asm) pour configurer l'environnement de cet exercice. Le script crée le nouveau tablespace TBSJFV dans le groupe de disques DATA en utilisant un fichier de 50 Mo. Il crée ensuite la nouvelle table SYSTEM.JFV qui réside dans le nouveau tablespace. Puis, il insère des lignes dans la nouvelle table. $ cd /home/oracle/solutions/asm $./asm_setup.sh SQL*Plus: Release Production on Wed Sep 30 08:23: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Tablespace created. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 44
65 Exercice 4-1 : Utiliser ASM Fast Mirror Resync (suite) drop table jfv purge * ERROR at line 1: ORA-00942: table or view does not exist Table created. 1 row created. Commit complete PL/SQL procedure successfully completed. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 6) Déconnectez le deuxième disque du groupe DATA et assurez-vous que l'attribut Disk Repair Time est défini avec la valeur 0 : a) De retour dans la page Disk Group: DATA General, sélectionnez le deuxième disque (ASMDISK02) et cliquez sur Offline. b) Dans la page Confirmation, remplacez la valeur par défaut (3.6 Hours) de l'attribut Disk Repair Time par 0 et cliquez sur Show SQL. La commande doit être la suivante : ALTER DISKGROUP DATA OFFLINE DISK ASMDISK02 DROP AFTER 0 h c) Cliquez ensuite sur Return. d) De retour dans la page Confirmation, cliquez sur Yes. 7) Qu'observez-vous? a) De retour dans la page Disk Group: DATA General, vous pouvez voir qu'asm déconnecte le disque ASMDISK02. En raison de l'opération de rééquilibrage effectuée, ce processus peut durer quelques instants. Actualisez la page du navigateur jusqu'à ce que le disque ASM ASMDISK02 n'apparaisse plus. b) De retour dans la page Disk Group: DATA General, vous devez constater que les trois disques restants sont utilisés à environ 53 %. Un rééquilibrage des extents miroir perdus a dû être effectué sur les disques restants. 8) Modifiez certaines lignes de la table SYSTEM.JFV (supprimez 499 lignes). Pouvez-vous encore mettre à jour la table? a) Vous pouvez toujours modifier la table JFV : $. oraenv ORACLE_SID = [orcl]? orcl Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 45
66 Exercice 4-1 : Utiliser ASM Fast Mirror Resync (suite) The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle [oracle@edrsr40p1-orcl ASM]$ sqlplus system SQL*Plus: Release Production on Wed Sep 30 11:33: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Enter password: Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options delete from jfv where rownum<500; 499 rows deleted. commit; Commit complete. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 9) Réintégrez le disque ASM supprimé dans le groupe DATA. a) De retour dans la page Disk Group: DATA General, cliquez sur Add. b) Dans la page Add Disks, sélectionnez All Disks dans la liste déroulante Select Member Disks. c) Dans la table Member Disks, sélectionnez ORCL:ASMDISK02 et cliquez sur Show SQL. La commande doit être : ALTER DISKGROUP DATA ADD DISK 'ORCL:ASMDISK02' SIZE 2304 M d) Cliquez sur Return. e) Dans la page Add Disks, cliquez sur OK. f) De retour dans la page Add Disks, vous recevez le message d'erreur suivant : Failed to commit: ORA-15032: not all alterations performed ORA-15033: disk 'ORCL:ASMDISK02' belongs to diskgroup "DATA". Cela est dû au fait que le disque ASMDISK02 est toujours considéré comme élément du groupe de disques DATA et qu'asm ne souhaite pas le supprimer par défaut. g) Assurez-vous à présent que le disque ORCL:ASMDISK02 est sélectionné et que la case à cocher Force Reuse correspondante est activée. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 46
67 Exercice 4-1 : Utiliser ASM Fast Mirror Resync (suite) h) Cliquez sur Show SQL. La commande doit être : ALTER DISKGROUP DATA ADD DISK 'ORCL:ASMDISK2' SIZE 2304 M FORCE i) Cliquez sur Return. j) De retour dans la page Add Disks, cliquez sur OK. Remarque : Si vous recevez une erreur de serveur interne, actualisez la fenêtre du navigateur ou cliquez sur le bouton de retour en arrière et passez à l'étape ) Qu'observez-vous? a) De retour dans la page Disk Group: DATA, actualisez-la plusieurs fois jusqu'à ce que l'opération de rééquilibrage se termine. b) A la fin de cette opération, vous devez voir que chaque disque ASM est à présent plein à 40 %. 11) Mettez le deuxième disque du groupe DATA hors ligne et assurez-vous que l'attribut Disk Repair Time est défini avec sa valeur par défaut. Ensuite, modifiez à nouveau la table SYSTEM.JFV (supprimez un autre lot de 499 lignes). Qu'observez-vous? a) De retour dans la page Disk Group: DATA General, sélectionnez le deuxième disque (ASMDISK02) et cliquez sur Offline. b) Dans la page Confirmation, conservez la valeur par défaut 3.6 Hours dans le champ Disk Repair Time, puis cliquez sur Yes. c) De retour dans la page Disk Group: DATA General, vous pouvez voir que le disque ASMDISK02 conserve la même taille que celle définie avant l'opération de déconnexion (Offline). Même si vous actualisez la page du navigateur, vous voyez qu'aucun rééquilibrage n'est effectué. Vous pouvez vérifier cela en regardant simplement le champ Pending Operations dans la section General de la page. Sa valeur doit rester à 0. d) Vous pouvez toujours modifier la table SYSTEM.JFV : $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle [oracle@edrsr40p1-orcl ASM]$ sqlplus system SQL*Plus: Release Production on Wed Sep 30 11:44: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Enter password: ********* Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options delete from system.jfv where rownum<500; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 47
68 Exercice 4-1 : Utiliser ASM Fast Mirror Resync (suite) 499 rows deleted. commit; Commit complete. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 12) Maintenant, comment procéder pour réintégrer le disque mis hors ligne dans le groupe de disques DATA? a) Il n'est pas nécessaire de nettoyer le disque supprimé, ni de forcer sa recréation. b) De retour dans la page Disk Group: DATA General, sélectionnez le disque hors ligne (ASMDISK02) et cliquez sur Online. c) Dans la page Confirmation, cliquez sur Yes. d) De retour dans la page Disk Group: DATA General, vous devez constater que le disque a repris son niveau initial (utilisé à environ 39 %) sans qu'il y ait eu besoin d'un rééquilibrage. Il est possible que le disque prenne le statut SYNC (placez le curseur de la souris sur la croix rouge correspondante). Il est presque immédiatement réintégré. Actualisez la fenêtre du navigateur pour voir les modifications apportées au mode. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 48
69 Exercices - Chapitre 5 Dans cet exercice, vous allez utiliser la compression de table. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 49
70 Exercice 5-1 : Utiliser la compression de table Le coût des systèmes de disques peut représenter une partie très importante dans la conception et la maintenance des data warehouses de grande envergure. Oracle Database 11g vous aide à réduire ce coût en permettant de comprimer les données sans que cela ait un impact sur les temps d'accès aux données pour les opérations d'interrogation classiques. La surcharge inhérente à la compression est généralement liée à la compression initiale des données et aux opérations qui modifient les données (opérations LMD). 1) Accédez au répertoire /home/oracle/solutions/tc. Lancez SQL*Plus et connectez-vous en tant qu'utilisateur SYS. Exécutez le script setup.sql. $ cd /home/oracle/solutions/tc $ sqlplus / as sysdba SQL*Plus: Release Production on Wed Sep 30 11:59: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing Connected. alter user sh identified by sh account unlock 2 quota unlimited on users; User altered. grant create tablespace to sh; Grant succeeded. grant drop tablespace to sh; Grant succeeded. 2) Vous pouvez comparer les exigences en termes de stockage entre une table compressée et une table non compressée. Vous commencez par créer deux copies de la table SALES. La première est compressée alors que la seconde ne l'est pas. A partir de la session SQL*Plus, exécutez le script set echo on set pagesize 2000 set long set linesize 200 REM Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 50
71 Exercice 5-1 : Utiliser la compression de table (suite) REM connect sh/sh Connected. drop table sales_nocompress purge 2 / drop table sales_nocompress purge * ERROR at line 1: ORA-00942: table or view does not exist drop table sales_compress purge 2 / drop table sales_compress purge * ERROR at line 1: ORA-00942: table or view does not exist set echo on set timing on create table sales_nocompress 2 as select * from sales 3 / Table created. Elapsed: 00:00:16.09 create table sales_compress compress for all operations 2 as select * from sales where 1=0 3 / Table created. Elapsed: 00:00:00.14 select count(*) 2 from sales_compress 3 / COUNT(*) Elapsed: set timing on declare 2 3 commit_after integer := 0 ; 4 loop_variable integer ; 5 6 cursor c_sales is 7 select prod_id 8, cust_id Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 51
72 Exercice 5-1 : Utiliser la compression de table (suite) 9, time_id 10, channel_id 11, promo_id 12, quantity_sold 13, amount_sold 14 from sales ; begin for r_sales in c_sales 19 loop if commit_after = 0 22 then loop_variable := 0 ; commit_after := round(dbms_random.value(1,1)) ; end if ; insert into sales_compress 31 (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) 32 values 33 ( r_sales.prod_id 34, r_sales.cust_id 35, r_sales.time_id 36, r_sales.channel_id 37, r_sales.promo_id 38, r_sales.quantity_sold 39, r_sales.amount_sold 40 ) ; if loop_variable = commit_after 43 then 44 commit; 45 commit_after := 0 ; 46 end if ; loop_variable := loop_variable + 1 ; end loop; end ; 53 / PL/SQL procedure successfully completed. Elapsed: 00:03:38.49 set timing off set timing off select count(*) from sales_compress 2 / Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 52
73 Exercice 5-1 : Utiliser la compression de table (suite) COUNT(*) select count(*) from sales_nocompress 2 / COUNT(*) ) Vous pouvez à présent comparer les exigences en termes de stockage entre les deux tables que vous venez de créer. A partir de la session SQL*Plus, exécutez le script set echo off select segment_name, sum(bytes)/1024/1024 mb 2 from dba_segments 3 where owner = user 4 and segment_name in ('SALES_COMPRESS','SALES_NOCOMPRESS') 5 group by segment_name 6 order by segment_name 7 / SEGMENT_NAME MB SALES_COMPRESS 15 SALES_NOCOMPRESS 36 2 rows selected. select table_name,compression,compress_for from user_tables where table_name like '%COMPRESS%'; TABLE_NAME COMPRESS COMPRESS_FOR SALES_NOCOMPRESS DISABLED SALES_COMPRESS ENABLED OLTP 2 rows selected. 4) Alors que l'on pourrait s'attendre à ce que la modification des données d'une table compressée soit beaucoup plus lente que pour une table non compressée, on constate une différence minimale. A partir de la session SQL*Plus, exécutez le script dml_perf.sql. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 53
74 Exercice 5-1 : Utiliser la compression de table set echo off Connected. set timing on delete from sales_nocompress 2 / rows deleted. Elapsed: 00:01:18.07 commit; Commit complete. Elapsed: 00:00:04.72 delete from sales_compress 2 / rows deleted. Elapsed: 00:01:12.94 commit; Commit complete. Elapsed: 00:00:00.10 set timing off select count(*) from sales_nocompress 2 / COUNT(*) row selected. select count(*) from sales_compress 2 / COUNT(*) row selected. 1 row selected. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 54
75 Exercice 5-1 : Utiliser la compression de table (suite) 5) Pour nettoyer votre environnement, exécutez le script connect sh/sh Connected. drop table sales_nocompress purge 2 / Table dropped. drop table sales_compress purge 2 / Table dropped. drop table q_sales purge; drop table q_sales purge * ERROR at line 1: ORA-00942: table or view does not exist drop table q_sales2 purge; drop table q_sales2 purge * ERROR at line 1: ORA-00942: table or view does not exist exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 55
76 Exercices - Chapitre 6 Dans cet exercice, vous allez utiliser vos nouveaux schémas de partitionnement, ainsi que la fonction de conseil SQL Access Advisor pour obtenir des conseils sur le partitionnement. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 56
77 Exercice 6-1 : Utiliser le partitionnement par référence Le partitionnement par référence permet à des tables ayant une relation parent/enfant de faire l'objet d'un équi-partionnement logique en héritant de la clé de partitionnement de la table parent sans dupliquer les colonnes de clé. Dans cet exercice, vous allez créer une table partitionnée par plage nommée ORDERS, puis créer une table nommée ORDER_ITEMS partitionnée par référence sur une clé étrangère contenue dans la table ORDERS. 1) Ouvrez une fenêtre de terminal en tant qu'utilisateur oracle, accédez au répertoire $HOME/solutions/part, puis démarrez une session SQL*Plus en étant connecté en tant qu'utilisateur SYS. A partir de la session SQL*Plus, exécutez le script setup.sql. $ $. oraenv ORACLE_SID = [db10g]? orcl $ $ cd /home/oracle/solutions/part $ sqlplus / as sysdba SQL*Plus: Release Production on Wed Sep 30 12:15: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing alter user sh identified by sh account unlock; User altered. grant create tablespace to sh; Grant succeeded. grant drop tablespace to sh; Grant succeeded. alter user hr identified by hr account unlock; User altered. alter user oe identified by oe account unlock; User altered. grant select on oe.orders to sh; Grant succeeded. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 57
78 Exercice 6-1 : Utiliser le partitionnement par référence (suite) grant select on oe.order_items to sh; Grant succeeded. grant select on hr.employees to sh; Grant succeeded. 2) Toujours à partir de la session SQL*Plus, connectez-vous en tant qu'utilisateur SH. Exécutez le script create_orders.sql pour créer la table ORDERS partitionnée par plage. connect sh/sh set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 -- cleanup drop table order_items 2 / drop table order_items * ERROR at line 1: ORA-00942: table or view does not exist drop table orders 2 / drop table orders * ERROR at line 1: ORA-00942: table or view does not exist -- create initial tablespaces drop tablespace x; drop tablespace x * ERROR at line 1: ORA-00959: tablespace 'X' does not exist create tablespace x datafile '/tmp/x.f' size 10m reuse; Tablespace created. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 58
79 Exercice 6-1 : Utiliser le partitionnement par référence (suite) drop tablespace y; drop tablespace y * ERROR at line 1: ORA-00959: tablespace 'Y' does not exist create tablespace y datafile '/tmp/y.f' size 10m reuse; Tablespace created. -- create a range-partitioned table orders create table orders 2 ( order_id number(12) not null 3, order_date date not null 4, order_mode varchar2(8) 5, order_status varchar2(1) 6 ) 7 partition by range (order_date) 8 ( partition p_before_jan_2006 values less than (to_date('01- JAN-2006','dd-MON-yyyy')) 9, partition p_2006_jan values less than (to_date('01-feb- 2006','dd-MON-yyyy')) 10, partition p_2006_feb values less than (to_date('01-mar- 2006','dd-MON-yyyy')) 11, partition p_2006_mar values less than (to_date('01-apr- 2006','dd-MON-yyyy')) 12, partition p_2006_apr values less than (to_date('01-may- 2006','dd-MON-yyyy')) 13, partition p_2006_may values less than (to_date('01-jun- 2006','dd-MON-yyyy')) 14, partition p_2006_jun values less than (to_date('01-jul- 2006','dd-MON-yyyy')) 15, partition p_2006_jul values less than (to_date('01-aug- 2006','dd-MON-yyyy')) 16, partition p_2006_aug values less than (to_date('01-sep- 2006','dd-MON-yyyy')) 17, partition p_2006_sep values less than (to_date('01-oct- 2006','dd-MON-yyyy')) 18, partition p_2006_oct values less than (to_date('01-nov- 2006','dd-MON-yyyy')) 19, partition p_2006_nov values less than (to_date('01-dec- 2006','dd-MON-yyyy')) 20, partition p_2006_dec values less than (to_date('01-jan- 2007','dd-MON-yyyy')) 21 ) parallel 22 / Table created. alter table orders add constraint orders_pk 2 primary key (order_id) 3 / Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 59
80 Exercice 6-1 : Utiliser le partitionnement par référence (suite) Table altered. 3) Exécutez le script create_order_items.sql pour créer une table nommée ORDER_ITEMS partitionnée par REM REM REF Partitioning REM 3.Create a REF partitioned table that depends on the first created one (e.g. Lineitems, pk-fk order_id) set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 -- Create a table order_items with a reference to the orders table partition scheme Rem see ORA for restrictions around REF Partitionining FKs create table order_items 2 ( order_id number(12) not null 3, product_id number not null 4, quantity number not null 5, sales_amount number not null 6, constraint order_items_orders_fk foreign key (order_id) references orders(order_id) 7 ) 8 partition by reference (order_items_orders_fk) 9 parallel 10 / Table created. 4) Exécutez le script query_dict_1.sql pour afficher les informations relatives à la table ORDER_ITEMS partitionnée par REM REM REF Partitioning REM 4.show the partition setup for the REF partitioned table in the dictionary REM Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 60
81 Exercice 6-1 : Utiliser le partitionnement par référence (suite) set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 set echo on -- show how the partitions were created select table_name, partitioning_type, ref_ptn_constraint_name 2 from user_part_tables 3 where table_name in ('ORDERS','ORDER_ITEMS'); TABLE_NAME PARTITION REF_PTN_CONSTRAINT_NAME ORDERS RANGE ORDER_ITEMS REFERENCE ORDER_ITEMS_ORDERS_FK 2 rows selected. select table_name, partition_name, high_value 2 from user_tab_partitions 3 where table_name in ('ORDERS','ORDER_ITEMS') 4 order by partition_position, table_name; TABLE_NAME PARTITION_NAME HIGH_VALUE ORDERS P_BEFORE_JAN_2006 TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_BEFORE_JAN_2006 ORDERS P_2006_JAN TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_JAN ORDERS P_2006_FEB TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_FEB ORDERS P_2006_MAR TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_MAR Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 61
82 Exercice 6-1 : Utiliser le partitionnement par référence (suite) ORDERS P_2006_APR TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_APR ORDERS P_2006_MAY TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_MAY ORDERS P_2006_JUN TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_JUN ORDERS P_2006_JUL TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_JUL ORDERS P_2006_AUG TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_AUG ORDERS P_2006_SEP TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_SEP ORDERS P_2006_OCT TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_OCT ORDERS P_2006_NOV TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_NOV ORDERS P_2006_DEC TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_DEC 26 rows selected. select up.table_name, up.partitioning_type, uc.table_name ref_table 2 from user_part_tables up, 3 (select r.table_name, r.constraint_name from user_constraints uc, user_constraints r 4 where uc.constraint_name=r.constraint_name and uc.owner=r.owner) uc 5 where up.ref_ptn_constraint_name = uc.constraint_name(+) 6 and up.table_name in ('ORDERS','ORDER_ITEMS'); TABLE_NAME PARTITION REF_TABLE ORDERS RANGE ORDER_ITEMS REFERENCE ORDER_ITEMS Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 62
83 Exercice 6-1 : Utiliser le partitionnement par référence (suite) 2 rows selected. 5) Exécutez le script insert_orders.sql pour insérer des données dans les tables ORDERS et REM REM REF Partitioning REM 5.insert data into orders. Show data placement in an explicit partition REM set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 -- insert some data into the orders and order_items tables insert into orders values (1, to_date('23-oct-2006','dd-monyyyy'), 'manual', 'U') ; 1 row created. insert into orders values (2, to_date('24-oct-2006','dd-monyyyy'), 'auto', 'I') ; 1 row created. insert into orders values (3, to_date('25-oct-2006','dd-monyyyy'), 'manual', 'P') ; 1 row created. insert into orders values (4, to_date('26-oct-2006','dd-monyyyy'), 'manual', 'U') ; 1 row created. insert into orders values (5, to_date('26-nov-2006','dd-monyyyy'), 'manual', 'U') ; 1 row created. insert into order_items values (1, 12, 40, 12000) ; 1 row created. insert into order_items values (1, 2, 1, 2000) ; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 63
84 Exercice 6-1 : Utiliser le partitionnement par référence (suite) 1 row created. insert into order_items values (1, 8, 20, 8400) ; 1 row created. insert into order_items values (2, 1, 4, 900) ; 1 row created. insert into order_items values (2, 87, 4, 6200) ; 1 row created. insert into order_items values (2, 2, 4, 3400) ; 1 row created. insert into order_items values (2, 6, 2, 70) ; 1 row created. insert into order_items values (3, 1, 90, 1200) ; 1 row created. insert into order_items values (4, 90, 10, 9000) ; 1 row created. insert into order_items values (4, 74, 12, 8000) ; 1 row created. insert into order_items values (4, 21, 1, 900) ; 1 row created. insert into order_items values (4, 90, 4, 39000) ; 1 row created. insert into order_items values (4, 32, 6, 700) ; 1 row created. insert into order_items values (4, 45, 2, 80) ; 1 row created. insert into order_items values (4, 72, 6, 72000) ; 1 row created. insert into order_items values (5, 1, 40, 42000) ; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 64
85 Exercice 6-1 : Utiliser le partitionnement par référence (suite) 1 row created. insert into order_items values (5, 2, 40, 800) ; 1 row created. insert into order_items values (5, 52, 80, 100) ; 1 row created. insert into order_items values (5, 90, 4, 1200) ; 1 row created. commit 2 / Commit complete. 6) Exécutez le script show_data_placement.sql pour voir comment les données partagent le même emplacement dans les REM REM REF Partitioning REM 5.insert data into orders. Show data placement in an explicit partition REM set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 set echo on set feedback on -- see how the data was co-located in the same partitions alter session set nls_date_format='dd-mon-yyyy' ; Session altered. select order_id, order_date 2 from orders partition (p_2006_oct) 3 / ORDER_ID ORDER_DATE Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 65
86 Exercice 6-1 : Utiliser le partitionnement par référence (suite) 1 23-oct oct oct oct rows selected. select oi.order_id, o.order_date, sum(oi.sales_amount) sum_sales 2 from orders o 3, order_items partition (p_2006_oct) oi 4 where o.order_id = oi.order_id 5 group by oi.order_id, o.order_date 6 order by oi.order_id 7 / ORDER_ID ORDER_DATE SUM_SALES oct oct oct oct rows selected. select order_id, order_date 2 from orders partition (p_2006_nov) 3 / ORDER_ID ORDER_DATE nov row selected. select oi.order_id, o.order_date, sum(oi.sales_amount) sum_sales 2 from orders o 3, order_items partition (p_2006_nov) oi 4 where o.order_id = oi.order_id 5 group by oi.order_id, o.order_date 6 order by oi.order_id 7 / ORDER_ID ORDER_DATE SUM_SALES nov row selected. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 66
87 Exercice 6-1 : Utiliser le partitionnement par référence (suite) 7) Exécutez le script drop_partition.sql pour supprimer la partition p_before_jan_2006 de la table REM REM REF Partitioning REM 6.insert data into the REF partitioned table and show that co-location of the dependent data is taken place REM set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 set feedback on -- show the manageability aspects of inheriting the partitioning scheme (drop a partition for the ORDERS table) set echo on alter table orders drop partition p_before_jan_2006 update global indexes 2 / Table altered. 8) Exécutez le script query_dict_2.sql pour afficher les informations relatives aux REM REM REF Partitioning REM 6.insert data into the REF partitioned table and show that co-location of the dependent data is taken place REM set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 set feedback on -- again, show the partitions set echo on Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 67
88 Exercice 6-1 : Utiliser le partitionnement par référence (suite) select table_name, partition_name, high_value 2 from user_tab_partitions 3 where table_name in ('ORDERS','ORDER_ITEMS') 4 order by partition_position, table_name 5 / TABLE_NAME PARTITION_NAME HIGH_VALUE ORDERS P_2006_JAN TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_JAN ORDERS P_2006_FEB TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_FEB ORDERS P_2006_MAR TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_MAR ORDERS P_2006_APR TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_APR ORDERS P_2006_MAY TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_MAY ORDERS P_2006_JUN TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_JUN ORDERS P_2006_JUL TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_JUL ORDERS P_2006_AUG TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_AUG ORDERS P_2006_SEP TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_SEP ORDERS P_2006_OCT TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_OCT ORDERS P_2006_NOV TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_NOV Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 68
89 Exercice 6-1 : Utiliser le partitionnement par référence (suite) ORDERS P_2006_DEC TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_DEC 24 rows selected. 9) Exécutez le script add_partition.sql pour ajouter des partitions REM REM REF Partitioning REM 6.insert data into the REF partitioned table and show that co-location of the dependent data is taken place REM set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 set echo on set feedback on -- manageability aspects and flexibility to combine PMOPs but still have the flexibility to place various partitions alter table orders 2 add partition p2007_01 values less than (to_date('01-feb- 2007','dd-mon-yyyy')) 3 tablespace x; Table altered. -- show co-location of partitions for parent and child select table_name, partition_name, tablespace_name, high_value 2 from user_tab_partitions where table_name in ('ORDERS','ORDER_ITEMS') 3 order by partition_position, table_name; TABLE_NAME PARTITION_NAME TABLESPACE_NAME HIGH_VALUE ORDERS P_2006_JAN USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 69
90 Exercice 6-1 : Utiliser le partitionnement par référence (suite) ORDER_ITEMS P_2006_JAN USERS ORDERS P_2006_FEB USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_FEB USERS ORDERS P_2006_MAR USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_MAR USERS ORDERS P_2006_APR USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_APR USERS ORDERS P_2006_MAY USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_MAY USERS ORDERS P_2006_JUN USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_JUN USERS ORDERS P_2006_JUL USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_JUL USERS ORDERS P_2006_AUG USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_AUG USERS ORDERS P_2006_SEP USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_SEP USERS ORDERS P_2006_OCT USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_OCT USERS ORDERS P_2006_NOV USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_NOV USERS ORDERS P_2006_DEC USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_DEC USERS ORDERS P2007_01 X TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P2007_01 X 26 rows selected. -- second PMOP Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 70
91 Exercice 6-1 : Utiliser le partitionnement par référence (suite) alter table orders 2 add partition p2007_02 values less than (to_date('01-mar- 2007','dd-mon-yyyy')) 3 tablespace x 4 dependent tables ( order_items (partition foo tablespace y)); Table altered. select table_name, partition_name, tablespace_name, high_value 2 from user_tab_partitions 3 where table_name in ('ORDERS','ORDER_ITEMS') order by partition_position, table_name; TABLE_NAME PARTITION_NAME TABLESPACE_NAME HIGH_VALUE ORDERS P_2006_JAN USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_JAN USERS ORDERS P_2006_FEB USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_FEB USERS ORDERS P_2006_MAR USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_MAR USERS ORDERS P_2006_APR USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_APR USERS ORDERS P_2006_MAY USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_MAY USERS ORDERS P_2006_JUN USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_JUN USERS ORDERS P_2006_JUL USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_JUL USERS ORDERS P_2006_AUG USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_AUG USERS Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 71
92 Exercice 6-1 : Utiliser le partitionnement par référence (suite) ORDERS P_2006_SEP USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_SEP USERS ORDERS P_2006_OCT USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_OCT USERS ORDERS P_2006_NOV USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_NOV USERS ORDERS P_2006_DEC USERS TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P_2006_DEC USERS ORDERS P2007_01 X TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS P2007_01 X ORDERS P2007_02 X TO_DATE(' :00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') ORDER_ITEMS FOO Y 28 rows selected. 10) Exécutez le script cleanup_1.sql pour supprimer les partitions et les tablespaces créés dans ce scénario. Quittez REM REM REF Partitioning REM set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 set echo on set feedback on -- cleanup alter table orders drop partition p2007_01; Table altered. alter table orders drop partition p2007_02; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 72
93 Exercice 6-1 : Utiliser le partitionnement par référence (suite) Table altered. drop tablespace x; Tablespace dropped. drop tablespace y; Tablespace dropped. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 73
94 Exercice 6-2 : Utiliser le partitionnement par intervalle Le partitionnement par intervalle automatise entièrement la création des partitions par plage. La gestion de la création de partitions peut représenter une tâche lourde et très répétitive. Cela est notamment vrai pour les ajouts prévus de partitions correspondant à des petites plages, comme l'ajout de nouvelles partitions quotidiennes. Le partitionnement par intervalle automatise cette opération en créant des partitions à la demande. Il est supposé que votre répertoire en cours est /home/oracle/solutions/part. 1) Exécutez le script create_newsales.sql pour créer la table partitionnée par intervalle nommée NEWSALES. $. oraenv ORACLE_SID = [db10g]? orcl $ cd /home/oracle/solutions/part $ $ sqlplus sh/sh SQL*Plus: Release Production on Wed Sep 30 12:33: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM Interval Partitioning REM 1.Introduce the concept of Interval Partitioning REM 2.Create an interval partitioned table REM -- cleanup set echo on drop table historical_newsales 2 / drop table historical_newsales * ERROR at line 1: ORA-00942: table or view does not exist Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 74
95 Exercice 6-2 : Utiliser le partitionnement par intervalle (suite) drop table newsales 2 / drop table newsales * ERROR at line 1: ORA-00942: table or view does not exist -- create interval partitioned table create table newsales 2 ( prod_id number(6) not null 3, cust_id number not null 4, time_id date not null 5, channel_id char(1) not null 6, promo_id number(6) not null 7, quantity_sold number(3) not null 8, amount_sold number(10,2) not null 9 ) 10 partition by range (time_id) 11 interval (numtodsinterval(1,'day')) 12 ( partition p_before_1_jan_2005 values 13 less than (to_date(' ','dd-mm-yyyy'))) 14 / Table created. 2) Exécutez le script query_dict_3.sql pour interroger la vue du dictionnaire USER_TAB_PARTITIONS afin d'obtenir des informations sur la table set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM Interval Partitioning REM 3.Show the segment allocation of it REM set echo on -- show partitions and partition boundaries for the interval partitioned table select partition_name, high_value 2 from user_tab_partitions 3 where table_name = 'NEWSALES' 4 order by partition_position 5 / Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 75
96 Exercice 6-2 : Utiliser le partitionnement par intervalle (suite) PARTITION_NAME HIGH_VALUE P_BEFORE_1_JAN_2005 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') 1 row selected. 3) Exécutez le script insert_newsales.sql pour insérer des nouvelles données dans la table NEWSALES qui force la création d'une partition set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM Interval Partitioning REM 4.Insert new data that forces the creation of a new partition (segment) set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 -- insert some data after January insert into newsales values (11160,17450,to_date('01-jan- 2005','dd-mon-yyyy'),'I',9999,19,798) ; 1 row created. insert into newsales values (1340,33710,to_date('02-jan- 2005','dd-mon-yyyy'),'S',9999,16,1264) ; 1 row created. insert into newsales values (25270,65880,to_date('05-jan- 2005','dd-mon-yyyy'),'I',9999,5,210) ; 1 row created. insert into newsales values (1615,73480,to_date('05-jan- 2005','dd-mon-yyyy'),'I',99990,80,96) ; 1 row created. insert into newsales values (1900,84910,to_date('06-jan- 2005','dd-mon-yyyy'),'I',9999,42,378) ; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 76
97 Exercice 6-2 : Utiliser le partitionnement par intervalle (suite) 1 row created. insert into newsales values (8085,37900,to_date('09-jan- 2005','dd-mon-yyyy'),'S',9999,1,68) ; 1 row created. insert into newsales values (755,26590,to_date('09-jan- 2005','dd-mon-yyyy'),'I',9999,11,132) ; 1 row created. insert into newsales values (10,68060,to_date('09-jan- 2005','dd-mon-yyyy'),'P',9999,28,4900) ; 1 row created. insert into newsales values (13425,109310,to_date('10-jan- 2005','dd-mon-yyyy'),'I',9999,1,68) ; 1 row created. insert into newsales values (1955,65190,to_date('10-jan- 2005','dd-mon-yyyy'),'S',9999,28,1512) ; 1 row created. set feedback on commit 2 / Commit complete. 4) Exécutez le script query_dict_4.sql pour afficher les informations relatives à la nouvelle set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM Interval Partitioning REM 5.Show the segment allocation again-you will see a new segment REM set echo on Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 77
98 Exercice 6-2 : Utiliser le partitionnement par intervalle (suite) -- see how new partitions were created select partition_name, high_value 2 from user_tab_partitions 3 where table_name = 'NEWSALES' 4 order by partition_position 5 / PARTITION_NAME HIGH_VALUE P_BEFORE_1_JAN_2005 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') SYS_P21 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') SYS_P22 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') SYS_P23 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') SYS_P24 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') SYS_P25 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') SYS_P26 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') 7 rows selected. 5) Exécutez le script merge_partition.sql pour fusionner deux set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM Interval Partitioning REM 6.Do a partition maintenance operation on older Partitions (e.g. MERGE). This will demonstrate the fact that an interval partitioned table can have manually managed older rnage partition components REM -- merge 2 partitions: traditional functionality of course works set echo on alter table newsales 2 merge partitions for(to_date('01-jan-2005','dd-mon-yyyy')) 3, for(to_date('02-jan-2005','dd-mon-yyyy')) 4 into partition p_before_3_jan_ / Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 78
99 Exercice 6-2 : Utiliser le partitionnement par intervalle (suite) Table altered. 6) Exécutez le script query_dict_5.sql pour afficher les informations relatives aux partitions set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM Interval Partitioning REM 7.take a standard range partitioned table and extend it to an interval partitioned table. This demonstrates the migration path to this new functionality. REM set echo on -- show the list of partitions again select partition_name, high_value 2 from user_tab_partitions 3 where table_name = 'NEWSALES' 4 order by partition_position 5 / PARTITION_NAME HIGH_VALUE P_BEFORE_1_JAN_2005 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_BEFORE_3_JAN_2005 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') SYS_P23 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') SYS_P24 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') SYS_P25 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') SYS_P26 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') 6 rows selected. 7) Exécutez le script create_hist_newsales.sql pour créer une table partitionnée par Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 79
100 Exercice 6-2 : Utiliser le partitionnement par intervalle (suite) set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM Interval Partitioning REM 7.take a standard range partitioned table and extend it to an interval partitioned table. This demonstrates the migration path to this new functionality. REM set echo on -- create a range partitioned table, that will be migrated to interval partitioning create table historical_newsales 2 ( prod_id number(6) not null 3, cust_id number not null 4, time_id date not null 5, channel_id char(1) not null 6, promo_id number(6) not null 7, quantity_sold number(3) not null 8, amount_sold number(10,2) not null 9 ) 10 partition by range (time_id) 11 (partition p_previous_century values 12 less than (to_date('01-jan-2000','dd-mon-yyyy')) 13, partition p_2000 values less than (to_date('01-jan- 2001','dd-MON-yyyy')) 14, partition p_2001 values less than (to_date('01-jan- 2002','dd-MON-yyyy')) 15, partition p_2002 values less than (to_date('01-jan- 2003','dd-MON-yyyy')) 16, partition p_2003 values less than (to_date('01-jan- 2004','dd-MON-yyyy')) 17, partition p_2004 values less than (to_date('01-jan- 2005','dd-MON-yyyy')) 18, partition p_2005 values less than (to_date('01-jan- 2006','dd-MON-yyyy')) 19 ) 20 / Table created. 8) Exécutez le script query_dict_6.sql pour afficher les informations relatives aux partitions par set echo on set pagesize 2000 set long set linesize 200 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 80
101 Exercice 6-2 : Utiliser le partitionnement par intervalle (suite) set feedback on column partition_name format a25 column high_value format a85 REM REM Interval Partitioning REM 7.take a standard range partitioned table and extend it to an interval partitioned table. This demonstrates the migration path to this new functionality. REM set echo on -- show the list of partitions select partition_name, high_value 2 from user_tab_partitions 3 where table_name = 'HISTORICAL_NEWSALES' 4 order by partition_position 5 / PARTITION_NAME HIGH_VALUE P_PREVIOUS_CENTURY TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_2000 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_2001 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_2002 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_2003 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_2004 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_2005 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') 7 rows selected. 9) Exécutez le script insert_histnewsales_row_1.sql pour insérer une ligne dans la table HISTORICAL_NEWSALES. L'insertion échoue car, actuellement, la table partitionnée n'est pas une table partitionnée par set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM Interval Partitioning REM 7.take a standard range partitioned table and extend it to an interval partitioned table. This demonstrates the migration path to this new functionality. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 81
102 Exercice 6-2 : Utiliser le partitionnement par intervalle (suite) REM set echo on -- try to insert a new row in 2006 (THIS WILL FAIL) insert into historical_newsales 2 values (11160,17450,to_date('02-jan-2006','dd-monyyyy'),'I',9999,19,798) 3 / insert into historical_newsales * ERROR at line 1: ORA-14400: inserted partition key does not map to any partition 10) Exécutez le script alter_hist_newsales.sql pour remplacer la table partitionnée par une table partitionnée par set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM 7.take a standard range partitioned table and extend it to an interval partitioned table. This demonstrates the migration path to this new functionality. REM set echo on -- change the partitioned table to become interval partitioned alter table historical_newsales 2 set interval (NUMTOYMINTERVAL(1, 'YEAR')) 3 / Table altered. 11) Exécutez le script insert_histnewsales_row_2.sql pour essayer d'insérer à nouveau une ligne dans la set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM Interval Partitioning REM Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 82
103 Exercice 6-2 : Utiliser le partitionnement par intervalle (suite) set echo on -- try to insert a new row in 2006 again (NOW IT WILL SUCCEED) insert into historical_newsales 2 values (11160,17450,to_date('02-jan-2006','dd-monyyyy'),'I',9999,19,798) 3 / 1 row created. commit 2 / Commit complete. 12) Exécutez le script query_dict_7.sql pour afficher les informations relatives aux partitions. Quittez set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM Interval Partitioning REM set echo on -- show the list of partitions again select partition_name, high_value 2 from user_tab_partitions 3 where table_name = 'HISTORICAL_NEWSALES' 4 order by partition_position 5 / PARTITION_NAME HIGH_VALUE P_PREVIOUS_CENTURY TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_2000 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_2001 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_2002 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_2003 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_2004 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_2005 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') SYS_P27 TO_DATE(' :00:00', 'SYYYY- MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 83
104 Exercice 6-2 : Utiliser le partitionnement par intervalle (suite) 8 rows selected. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 84
105 Exercice 6-3 : Utiliser le partitionnement composite étendu Le partitionnement composite de type plage-plage permet un partitionnement logique par plage selon deux dimensions, par exemple un partitionnement par plage selon ORDER_DATE et un sous-partitionnement par plage selon SHIPPING_DATE. Il fournit une stratégie de modélisation supplémentaire pour le mapping entre un besoin fonctionnel et le partitionnement d'un objet. Dans l'exemple considéré, le contrat de niveau de service établi avec le client stipule qu'une commande doit être livrée dans un délai d'un mois à compter de son enregistrement. Les types de commande suivants sont identifiés : EARLY : Commandes livrées avant la moitié du délai d'un mois. Ces commandes dépassent les attentes des clients. AGREED : Commandes livrées au cours du délai d'un mois (mais ne font pas partie des commandes de type EARLY). LATE : Commandes livrées après le délai d'un mois. Il est supposé que votre répertoire en cours est /home/oracle/solutions/part. Effectuez les opérations ci-après pour créer une table partitionnée composite de type plageplage pour répondre aux besoins : 1) Connectez-vous en tant qu'utilisateur SH et exécutez le script create_shipments.sql pour créer la table SHIPMENTS en tant que table partitionnée composite de type plageplage selon ORDER_DATE et SHIPDATE. $. oraenv ORACLE_SID = [db10g]? orcl $ cd /home/oracle/solutions/part $ $ sqlplus sh/sh SQL*Plus: Release Production on Wed Sep 30 12:56: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM New extended composite partitions REM 1.Recap the concept of composite partitioned tables REM 2.Introduce the new extension based on business cases (e.g. RANGE-RANGE on oder_date/ship_date REM 3.Demonstrate the data placement for a business scenario REM REM EXTENDED COMPOSITE PARTITIONING Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 85
106 Exercice 6-3 : Utiliser le partitionnement composite étendu (suite) REM drop table shipments 2 / drop table shipments * ERROR at line 1: ORA-00942: table or view does not exist set echo on -- create table shipments, composite partition by order_date, shipdate create table shipments 2 ( order_id number not null 3, order_date date not null 4, ship_date date not null 5, customer_id number not null 6, sales_amount number not null 7 ) 8 partition by range (order_date) 9 subpartition by range (ship_date) 10 ( partition p_2006_jul values 11 less than (to_date('01-aug-2006','dd-mon-yyyy')) 12 ( subpartition p_2006_jul_early values 13 less than (to_date('15-aug-2006','dd-mon-yyyy')) 14, subpartition p_2006_jul_agreed values 15 less than (to_date('01-sep-2006','dd-mon-yyyy')) 16, subpartition p_2006_jul_late values less than (maxvalue) 17 ) 18, partition p_2006_aug values 19 less than (to_date('01-sep-2006','dd-mon-yyyy')) 20 ( subpartition p_2006_aug_early values 21 less than (to_date('15-sep-2006','dd-mon-yyyy')) 22, subpartition p_2006_aug_agreed values 23 less than (to_date('01-oct-2006','dd-mon-yyyy')) 24, subpartition p_2006_aug_late values less than (maxvalue) 25 ) 26, partition p_2006_sep values 27 less than (to_date('01-oct-2006','dd-mon-yyyy')) 28 ( subpartition p_2006_sep_early values 29 less than (to_date('15-oct-2006','dd-mon-yyyy')) 30, subpartition p_2006_sep_agreed values 31 less than (to_date('01-nov-2006','dd-mon-yyyy')) 32, subpartition p_2006_sep_late values less than (maxvalue) 33 ) 34, partition p_2006_oct values 35 less than (to_date('01-nov-2006','dd-mon-yyyy')) 36 ( subpartition p_2006_oct_early values 37 less than (to_date('15-nov-2006','dd-mon-yyyy')) 38, subpartition p_2006_oct_agreed values 39 less than (to_date('01-dec-2006','dd-mon-yyyy')) 40, subpartition p_2006_oct_late values less than (maxvalue) Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 86
107 Exercice 6-3 : Utiliser le partitionnement composite étendu (suite) 41 ) 42, partition p_2006_nov values 43 less than (to_date('01-dec-2006','dd-mon-yyyy')) 44 ( subpartition p_2006_nov_early values 45 less than (to_date('15-dec-2006','dd-mon-yyyy')) 46, subpartition p_2006_nov_agreed values 47 less than (to_date('01-jan-2007','dd-mon-yyyy')) 48, subpartition p_2006_nov_late values less than (maxvalue) 49 ) 50, partition p_2006_dec values 51 less than (to_date('01-jan-2007','dd-mon-yyyy')) 52 ( subpartition p_2006_dec_early values 53 less than (to_date('15-jan-2007','dd-mon-yyyy')) 54, subpartition p_2006_dec_agreed values 55 less than (to_date('01-feb-2007','dd-mon-yyyy')) 56, subpartition p_2006_dec_late values less than (maxvalue) 57 ) 58 ) 59 / Table created. 2) Utilisez le script insert_shipments.sql pour insérer des lignes dans la table set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM New extended composite partitions REM 1.Recap the concept of composite partitioned tables REM 2.Introduce the new extension based on business cases (e.g. RANGE-RANGE on oder_date/ship_date REM 3.Demonstrate the data placement for a business scenario REM REM REM EXTENDED COMPOSITE PARTITIONING REM set echo on -- insert some data into the shipments table insert into shipments select o.order_id 2, to_date('12-oct-2006','dd-mon-yyyy') 3, to_date('12-oct-2006','dd-mon-yyyy') + trunc(70 * abs(dbms_random.value)) -- generate some early, agreed, late orders 4, nvl(o.sales_rep_id,trunc(105 * dbms_random.value)) Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 87
108 Exercice 6-3 : Utiliser le partitionnement composite étendu (suite) 5, sum(oi.unit_price * oi.quantity) 6 from oe.orders o 7, oe.order_items oi 8 where o.order_id = oi.order_id 9 group by o.order_id 10, o.sales_rep_id 11 / 105 rows created. commit 2 / Commit complete. 3) Exécutez le script count_shipments.sql pour voir comment les données ont été distribuées dans la table SHIPMENTS. Remarque : Il est possible que vos résultats varient en raison de la génération aléatoire des valeurs lors de l'instruction INSERT de l'étape set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM New extended composite partitions REM 1.Recap the concept of composite partitioned tables REM 2.Introduce the new extension based on business cases (e.g. RANGE-RANGE on oder_date/ship_date REM 3.Demonstrate the data placement for a business scenario REM REM REM EXTENDED COMPOSITE PARTITIONING REM set echo on -- show how data was distributed for this business case select count(1) from shipments subpartition (P_2006_OCT_EARLY) ; COUNT(1) row selected. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 88
109 Exercice 6-3 : Utiliser le partitionnement composite étendu (suite) select count(1) from shipments subpartition (P_2006_OCT_AGREED) ; COUNT(1) row selected. select count(1) from shipments subpartition (P_2006_OCT_LATE) ; COUNT(1) row selected. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 89
110 Exercice 6-4 : Utiliser le partitionnement par colonne virtuelle Il est supposé que votre répertoire en cours est /home/oracle/solutions/part. Vous pouvez utiliser le partitionnement par colonne virtuelle pour partitionner des colonnes de clé définies sur les colonnes virtuelles d'une table. Les colonnes virtuelles sont définies par l'évaluation d'une expression. Elles peuvent être définies lors de la création d'une table ou pendant la phase de modification. Les exigences fonctionnelles relatives au partitionnement logique des objets ne correspondent généralement pas aux colonnes existantes de manière univoque. Le partitionnement Oracle a été amélioré pour permettre une stratégie de partitionnement définie sur des colonnes virtuelles. Cela permet de mieux répondre aux exigences métier. Dans l'exemple considéré, les catégories d'employés sont les suivantes : Poor : Le salaire total (salaire + commission) est inférieur à Not doing too bad : Le salaire est compris entre 1000 et On target : Le salaire est égal à Filthy rich : Le salaire est supérieur à Effectuez les opérations ci-après pour comprendre l'utilisation du partitionnement par colonne virtuelle : 1) Exécutez le script create_employees.sql pour créer la table EMPLOYEES avec une colonne virtuelle. $. oraenv ORACLE_SID = [db10g]? orcl $ cd /home/oracle/solutions/part $ $ sqlplus sh/sh SQL*Plus: Release Production on Wed Sep 30 13:03: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM Virtual column-based partitioning Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 90
111 Exercice 6-4 : Utiliser le partitionnement par colonne virtuelle (suite) REM 1.Introduce the concept of a virtual column (e.g. Extract the month out of a date) REM 2.Create a simple virtual column and select from it (you can also highlight that you can collect stats on such a column) REM 3.Create a virtual column-based partitioned table (for demonstration purposes this can be something goofy like adding two column values or so) REM 4.insert some data and show the data placement based on the virtual column definitions REM set echo on drop table employees 2 / drop table employees * ERROR at line 1: ORA-00942: table or view does not exist drop table product_returns 2 / drop table product_returns * ERROR at line 1: ORA-00942: table or view does not exist -- create a table with a virtual column create table employees 2 ( employee_id number(6) not null 3, first_name varchar2(20) 4, last_name varchar2(25) 5, varchar2(25) 6, phone_number varchar2(20) 7, hiredate date 8, job_id varchar2(10) 9, salary number(8,2) 10, commission_pct number(2,2) 11, manager_id number(6) 12, department_id number(4) 13, well_off as (case sign( (salary + nvl(commission_pct,0))) 14 when 1 then 'poor' 15 else case sign( (salary + nvl(commission_pct,0))) 16 when 1 then 'not doing too bad' 17 when 0 then 'on target' 18 else 'filthy rich' 19 end 20 end Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 91
112 Exercice 6-4 : Utiliser le partitionnement par colonne virtuelle (suite) 21 ) virtual 22 ) 23 / Table created. 2) Exécutez le script insert_employees.sql pour insérer des lignes dans la table set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM Virtual column-based partitioning REM 1.Introduce the concept of a virtual column (e.g. Extract the month out of a date) REM 2.Create a simple virtual column and select from it (you can also highlight that you can collect stats on such a column) REM 3.Create a virtual column-based partitioned table (for demonstration purposes this can be something goofy like adding two column values or so) REM 4.insert some data and show the data placement based on the virtual column definitions REM set echo on -- insert data into the table insert into employees 2 (employee_id, first_name, last_name, , phone_number, hiredate, job_id, salary, commission_pct, manager_id, department_id) 3 select employee_id, first_name, last_name, , phone_number, hire_date, job_id, salary, commission_pct, manager_id, department_id from hr.employees 4 / 107 rows created. commit 2 / Commit complete. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 92
113 Exercice 6-4 : Utiliser le partitionnement par colonne virtuelle (suite) 3) Exécutez le script select_employees.sql pour interroger la table set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 column name format a45 REM REM Virtual column-based partitioning REM 1.Introduce the concept of a virtual column (e.g. Extract the month out of a date) REM 2.Create a simple virtual column and select from it (you can also highlight that you can collect stats on such a column) REM 3.Create a virtual column-based partitioned table (for demonstration purposes this can be something goofy like adding two column values or so) REM 4.insert some data and show the data placement based on the virtual column definitions REM set echo on -- select from the virtual column select first_name ' ' last_name name, well_off, salary + nvl(commission_pct,0) total_salary 2 from employees 3 / NAME WELL_OFF TOTAL_SALARY Donald OConnell not doing too bad 2600 Douglas Grant not doing too bad 2600 Jennifer Whalen filthy rich 4400 Michael Hartstein filthy rich Vance Jones not doing too bad 2800 Alana Walsh filthy rich 3100 Kevin Feeney on target rows selected. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 93
114 Exercice 6-4 : Utiliser le partitionnement par colonne virtuelle (suite) 4) Exécutez le script create_prod_ret.sql pour créer la table PRODUCT_RETURNS avec une colonne virtuelle servant à partitionner la set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM Virtual column-based partitioning REM 1.Introduce the concept of a virtual column (e.g. Extract the month out of a date) REM 2.Create a simple virtual column and select from it (you can also highlight that you can collect stats on such a column) REM 3.Create a virtual column-based partitioned table (for demonstration purposes this can be something goofy like adding two column values or so) REM 4.insert some data and show the data placement based on the virtual column definitions REM set echo on -- now, create a table product returns with a virtual column, and partition by this column create table product_returns 2 ( order_id number not null 3, product_id number not null 4, customer_id number not null 5, quantity number not null 6, unit_price number not null 7, total_value as (quantity * unit_price) virtual 8 ) 9 partition by range(total_value) 10 ( partition dont_even_bother values less than (100) 11, partition perhaps_the_accountant_cares values less than (1000) 12, partition now_it_becomes_worrying values less than (10000) 13, partition oops_somebody_be_fired values less than (100000) 14, partition this_means_bankruptcy values less than (maxvalue) 15 ) 16 / Table created. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 94
115 Exercice 6-4 : Utiliser le partitionnement par colonne virtuelle (suite) 5) Exécutez le script insert_prod_ret.sql pour insérer des lignes dans la table set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM Virtual column-based partitioning REM 1.Introduce the concept of a virtual column (e.g. Extract the month out of a date) REM 2.Create a simple virtual column and select from it (you can also highlight that you can collect stats on such a column) REM 3.Create a virtual column-based partitioned table (for demonstration purposes this can be something goofy like adding two column values or so) REM 4.insert some data and show the data placement based on the virtual column definitions REM set echo on -- insert some data into the table set feedback off insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (1, 36, 109, 10, 120) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (2, 46, 129, 20, 10) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (3, 73, 159, 15, 1) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (4,136,1109, 16, 2) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (5, 27, 309, 20, 420) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (6, 96, 129, 10, 1020) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (7, 39, 104, 1, 12000) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (8,436,6109, 8, 200) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (9,789, 709, 2, 2400) ; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 95
116 Exercice 6-4 : Utiliser le partitionnement par colonne virtuelle (suite) insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (11,276, 809,9, 10000) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (12, 34, 199, 10, 20000) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (15, 24, 100,5, 10) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (17, 76,1109, 1, 20) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (19, 55, 209, 1, ) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (21, 76, 139, 1, 10) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (31, 90, 104, 2, 4020) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (51,284,5109, 9, 60) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (1,912, 169, 1, 10980) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (31,536, 179, 2, 60) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (13,752, 108, 1, 400) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (12,986,1109, 3, 700) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (1, 39, 129, 4, 6) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (1, 32, 103, 1, 30) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (12, 34, 104, 1, 98710) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (1,173,6109, 1, 9650) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (17,853,7109, 1, 60) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (19,981, 809, 5, 80) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (1, 84, 103, 16, 1000) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (1, 21,2109, 1000, 90) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (13,782,2359, 102, 1850) ; insert into product_returns (order_id, product_id, customer_id, quantity, unit_price) values (1,941,5309, 10, 40) ; commit ; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 96
117 Exercice 6-4 : Utiliser le partitionnement par colonne virtuelle (suite) 6) Exécutez le script select_prod_return.sql pour interroger la table set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM Virtual column-based partitioning REM 1.Introduce the concept of a virtual column (e.g. Extract the month out of a date) REM 2.Create a simple virtual column and select from it (you can also highlight that you can collect stats on such a column) REM 3.Create a virtual column-based partitioned table (for demonstration purposes this can be something goofy like adding two column values or so) REM 4.insert some data and show the data placement based on the virtual column definitions REM set feedback on set echo on -- select from the different partitions select order_id, quantity, unit_price, total_value 2 from product_returns partition (dont_even_bother) 3 order by total_value 4 / ORDER_ID QUANTITY UNIT_PRICE TOTAL_VALUE rows selected. select order_id, quantity, unit_price, total_value 2 from product_returns partition (perhaps_the_accountant_cares) 3 order by total_value 4 / Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 97
118 Exercice 6-4 : Utiliser le partitionnement par colonne virtuelle (suite) ORDER_ID QUANTITY UNIT_PRICE TOTAL_VALUE rows selected. select order_id, quantity, unit_price, total_value 2 from product_returns partition (now_it_becomes_worrying) 3 order by total_value 4 / ORDER_ID QUANTITY UNIT_PRICE TOTAL_VALUE rows selected. select order_id, quantity, unit_price, total_value 2 from product_returns partition (oops_somebody_be_fired) 3 order by total_value 4 / ORDER_ID QUANTITY UNIT_PRICE TOTAL_VALUE rows selected. select order_id, quantity, unit_price, total_value 2 from product_returns partition (this_means_bankruptcy) 3 order by total_value 4 / ORDER_ID QUANTITY UNIT_PRICE TOTAL_VALUE Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 98
119 Exercice 6-4 : Utiliser le partitionnement par colonne virtuelle (suite) rows selected. 7) Exécutez le script xplan_prod_ret.sql pour afficher la sélection de partition pour les interrogations utilisant l'expression qui définit la colonne virtuelle. Quittez set echo on set pagesize 2000 set long set linesize 200 set feedback on column partition_name format a25 column high_value format a85 REM REM Virtual column-based partitioning REM 1.Introduce the concept of a virtual column (e.g. Extract the month out of a date) REM 2.Create a simple virtual column and select from it (you can also highlight that you can collect stats on such a column) REM 3.Create a virtual column-based partitioned table (for demonstration purposes this can be something goofy like adding two column values or so) REM 4.insert some data and show the data placement based on the virtual column definitions REM -- show partition pruning for queries that use the expression that defines the virtual column (remember you can also gather statistics on the virtual column) set echo on explain plan for select * from product_returns where quantity * unit_price = / Explained. select * from table(dbms_xplan.display) ; PLAN_TABLE_OUTPUT Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 99
120 Exercice 6-4 : Utiliser le partitionnement par colonne virtuelle (suite) Plan hash value: Id Operation Name Rows Bytes Cost (%CPU) Time Pstart Pstop SELECT STATEMENT (0) 00:00:01 1 PARTITION RANGE SINGLE (0) 00:00: * 2 TABLE ACCESS FULL PRODUCT_RETURNS (0) 00:00: Predicate Information (identified by operation id): filter("product_returns"."total_value"=60000) Remarque dynamic sampling used for this statement 18 rows selected. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 100
121 Exercice 6-5 : Utiliser SQL Access Advisor pour obtenir des conseils sur le partitionnement Dans cet exercice, vous allez utiliser la fonction de conseil SQL Access Advisor (SAA) pour obtenir des recommandations relatives au partitionnement. 1) Ouvrez une fenêtre de terminal en tant qu'utilisateur oracle, accédez au répertoire /home/oracle/solutions/partadv, puis exécutez le script partadv_setup.sh. Ce script construit un SQL Tuning Set (STS - Ensemble de réglages SQL) nommé SQLSET_TEST_500 et appartenant à l'utilisateur SH. Il élabore un modèle qui donne pour instruction à la fonction de conseil de partitionner de très petites tables telles que celles présentes dans le schéma SH. $ cd /home/oracle/solutions/partadv $./partadv_setup.sh SQL*Plus: Release Production on Wed Sep 30 13:34: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Connected Function created. No errors. Synonym created. Grant succeeded. Grant succeeded. Connected PL/SQL procedure successfully completed. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 101
122 Exercice 6-5 : Utiliser SQL Access Advisor pour obtenir des conseils sur le partitionnement (suite) DROP TABLE temp_table purge * ERROR at line 1: ORA-00942: table or view does not exist Table created. System altered. BEGIN dbms_sqltune.drop_sqlset('sqlset_test_500'); END; * ERROR at line 1: ORA-13754: "SQL Tuning Set" "SQLSET_TEST_500" does not exist for user "SH". ORA-06512: at "SYS.DBMS_SQLTUNE_INTERNAL", line ORA-06512: at "SYS.DBMS_SQLTUNE", line 3118 ORA-06512: at line PL/SQL procedure successfully completed. COUNT(*) row selected. PL/SQL procedure successfully completed. PL/SQL procedure successfully completed PL/SQL procedure successfully completed begin * ERROR at line 1: ORA-13605: The specified task or object SQLACCESS_PARTITION_SMALL does not exist for the current user. ORA-06512: at "SYS.PRVT_ADVISOR", line 4635 ORA-06512: at "SYS.DBMS_ADVISOR", line 848 ORA-06512: at line PL/SQL procedure successfully completed. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 102
123 Exercice 6-5 : Utiliser SQL Access Advisor pour obtenir des conseils sur le partitionnement (suite) Connected. Synonym dropped. Function dropped. Revoke succeeded. Grant succeeded. Grant succeeded. Grant succeeded. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 2) Utilisez Enterprise Manager Database Control pour générer des recommandations pour l'ensemble SQLSET_TEST_500 à l'aide du modèle SQLACCESS_PARTITION_SMALL. a) Connectez-vous à Enterprise Manager en tant qu'utilisateur SH à l'aide du mot de passe SH. Connectez-vous avec le paramètre Normal. Si vous étiez déjà connecté lors de l'étape 1, déconnectez-vous puis reconnectez-vous car Enterprise Manager met en cache les privilèges de l'utilisateur. b) Cliquez sur le lien Advisor Central situé en bas de la page. c) Dans la page Advisor Central, cliquez sur le lien SQL Advisors. d) Dans la page SQL Advisors, cliquez sur SQL Access Advisor. e) Dans la page SQL Access Advisor: Initial Options, sélectionnez "Inherit Options from a previously saved Task or Template". Attendez la fin de l'actualisation de la page. Dans la table Tasks and Templates, assurez-vous que l'option Templates Only est sélectionnée dans la liste déroulante View. Sélectionnez le modèle SQLACCESS_PARTITION_SMALL, puis cliquez sur Continue. f) Dans la page SQL Access Advisor: Workload Source, sélectionnez "Use an existing SQL Tuning Set", puis entrez SH.SQLSET_TEST_500 dans le champ SQL Tuning Set. Cliquez sur Next. g) Dans la page SQL Access Advisor: Recommendation Options, vérifiez que les options Indexes, Materialized Views et Partitioning sont sélectionnées et que la fonction de conseil est en mode Comprehensive. Cliquez sur Next. h) Dans la page SQL Access Advisor: Schedule, assurez-vous que l'option Schedule a la valeur Immediately, puis cliquez sur Next. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 103
124 Exercice 6-5 : Utiliser SQL Access Advisor pour obtenir des conseils sur le partitionnement (suite) i) Dans la page Review, cliquez sur Submit. j) De retour dans la page Advisor Central, attendez la fin de la tâche. k) Une fois celle-ci terminée, sélectionnez le nom de tâche pour la fonction de conseil SQL Access Advisor dans la section Results de la page Advisor Central, puis cliquez sur le bouton View Result. l) Lorsque vous vous trouvez dans la page associée à la tâche, cliquez sur l'onglet Recommendations. Cliquez sur Recommendation Details pour consulter les recommandations relatives au partitionnement. m) Cliquez sur OK pour revenir à la page des résultats de la tâche. n) Cliquez sur Database pour revenir à la page Database Home. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 104
125 Exercices - Chapitre 7 Dans cet exercice, vous allez comparer les objets BasicFiles aux objets SecureFiles. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 105
126 Exercice 7-1 : Utiliser des objets SecureFiles Dans cet exercice, vous allez étudier les avantages des objets SecureFiles pour la compression, le cryptage des données et les performances. 1) Pour paramétrer votre base de données et l'environnement approprié pour les objets SecureFiles, effectuez l'opération suivante : a) Créez un répertoire pour stocker le "wallet" Transparent Data Encryption (TDE). Cette opération est obligatoire pour le cryptage des objets LOB SecureFiles. $ mkdir /u01/app/oracle/admin/orcl/wallet $ b) Editez le fichier /u01/app/oracle/product/11.2.0/grid/network/admin/sqlnet. ora pour indiquer l'emplacement du "wallet" TDE, en précisant le répertoire que vous avez créé à l'étape précédente. Ajoutez le paramètre suivant au fichier : ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/u01/app/oracle/admin/orcl/wallet))) $ cd /u01/app/oracle/product/11.2.0/grid/network/admin $ vi sqlnet.ora $ cat sqlnet.ora # sqlnet.ora Network Configuration File: /u01/app/oracle/product/11.2.0/grid/network/admin/sqlnet.ora # Generated by Oracle configuration tools. NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) ADR_BASE = /u01/app/oracle ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/u01/app/oracle/admin/orcl/wallet))) $ 2) Accédez au répertoire /home/oracle/solutions/secf. A l'aide de SQL*Plus, connectez-vous à la base de données en tant qu'utilisateur SYS. $ cd /home/oracle/solutions/secf $ $ sqlplus / as sysdba SQL*Plus: Release Production on Thu Oct 1 07:32: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 106
127 Exercice 7-1 : Utiliser des objets SecureFiles (suite) 3) Dans votre session SQL*Plus, exécutez le script secf_setup.sql. La première étape consiste à créer une clé de cryptage et à la stocker dans le "wallet" TDE. Vous utiliserez ensuite cette clé pour crypter les données Connected. set serveroutput on -- set verify on; set term on; set lines 200 set pause on /*== Store the encryption key in the TDE wallet ==*/ alter system set wallet open identified by "welcome1"; alter system set wallet open identified by "welcome1" * ERROR at line 1: ORA-28367: wallet does not exist ALTER SYSTEM SET ENCRYPTION KEY AUTHENTICATED BY "welcome1" 2 / System altered. pause Press [Enter] to continue... Press [Enter] to continue... 4) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Cette étape consiste à créer un schéma de base de données pour l'exercice. Ce schéma se nomme SF_DEMO. Il doit disposer des rôles CONNECT et RESOURCE. Il nécessite aussi les privilèges système EXECUTE ANY PROCEDURE et CREATE ANY DIRECTORY. /*== Create a database account for this OBE ==*/ DROP USER sf_demo CASCADE 2 / DROP USER sf_demo CASCADE * ERROR at line 1: ORA-01918: user 'SF_DEMO' does not exist CREATE USER sf_demo IDENTIFIED BY oracle_4u 2 DEFAULT TABLESPACE users 3 TEMPORARY TABLESPACE temp 4 QUOTA UNLIMITED ON users 5 / User created. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 107
128 Exercice 7-1 : Utiliser des objets SecureFiles (suite) GRANT connect, resource TO sf_demo 2 / Grant succeeded. GRANT EXECUTE ANY PROCEDURE, CREATE ANY DIRECTORY TO sf_demo 2 / Grant succeeded. pause Press [Enter] to continue... Press [Enter] to continue... 5) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Cette étape crée deux tablespaces de 150 Mo : SECF_TBS1, qui servira à stocker les objets LOB au format BasicFiles, et SECF_TBS2, qui servira à stocker les objets LOB au nouveau format SecureFiles. La gestion automatique de l'espace dans les segments (ASSM) doit être activée pour que SecureFiles soit pris en charge par le tablespace. /*== Create tablespaces to store the LOB tables ==*/ /*== ==*/ /*== Note that SecureFile LOB storage requires ASSM.==*/ /*== The segment allocation unit is 64MB. ==*/ DROP TABLESPACE secf_tbs1 INCLUDING CONTENTS 2 / DROP TABLESPACE secf_tbs1 INCLUDING CONTENTS * ERROR at line 1: ORA-00959: tablespace 'SECF_TBS1' does not exist CREATE TABLESPACE secf_tbs1 2 DATAFILE '+DATA' SIZE 150M REUSE 3 EXTENT MANAGEMENT LOCAL 4 UNIFORM SIZE 64M 5 SEGMENT SPACE MANAGEMENT AUTO 6 / Tablespace created. DROP TABLESPACE secf_tbs2 INCLUDING CONTENTS 2 / DROP TABLESPACE secf_tbs2 INCLUDING CONTENTS * ERROR at line 1: ORA-00959: tablespace 'SECF_TBS2' does not exist CREATE TABLESPACE secf_tbs2 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 108
129 Exercice 7-1 : Utiliser des objets SecureFiles (suite) 2 DATAFILE '+DATA' SIZE 150M REUSE 3 EXTENT MANAGEMENT LOCAL 4 UNIFORM SIZE 64M 5 SEGMENT SPACE MANAGEMENT AUTO 6 / Tablespace created. pause Press [Enter] to continue... Press [Enter] to continue... 6) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Cette étape consiste à créer des objets dans le schéma SF_DEMO. Tout d'abord, une table nommée RESUMES est créée. Cette table contient une colonne BLOB nommée RESUME stockée au format BasicFiles. /*== As SF_DEMO, create a table with a LOB that uses BasicFile LOB storage ==*/ connect sf_demo/oracle_4us Connected. CREATE TABLE resumes 2 (id NUMBER, first_name VARCHAR2(15), 3 last_name VARCHAR2 (40), resume BLOB) 4 LOB(resume) STORE AS BASICFILE 5 (TABLESPACE secf_tbs1) 6 / Table created. pause Press [Enter] to continue... Press [Enter] to continue... 7) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Un objet DIRECTORY est nécessaire pour enregistrer le chemin d'accès aux fichiers MS Word qui seront extraits et stockés dans la colonne LOB. Lorsque vous êtes invité à entrer le nom de répertoire, saisissez le chemin complet des scripts SQL de cet exercice. Par exemple, le chemin d'accès peut être /home/oracle/solutions/secf. /*== Create a DIRECTORY object. It is required for accessing the MS Word files ==*/ /*== to be loaded into the LOB column. Enter the full path to the files, omit ==*/ /*== the final "/" at the end. ==*/ CREATE OR REPLACE DIRECTORY cwd AS '&directory_name'; Enter value for directory_name: /home/oracle/solutions/secf old 1: CREATE OR REPLACE DIRECTORY cwd AS '&directory_name' new 1: CREATE OR REPLACE DIRECTORY cwd AS '/home/oracle/solutions/secf' Directory created. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 109
130 Exercice 7-1 : Utiliser des objets SecureFiles (suite) pause Press [Enter] to continue... Press [Enter] to continue... 8) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Celle-ci crée une procédure nommée LOADLOBFROMBFILE_PROC permettant de lire les fichiers MS Word dans le système de fichiers et de les stocker dans la colonne LOB. Cette procédure appelle le package DBMS_LOB. Notez que cette procédure sera utilisée pour les objets LOB BasicFiles et SecureFiles. /*== Create the procedure to read the MS Word files and load them into the LOB column ==*/ CREATE OR REPLACE PROCEDURE loadlobfrombfile_proc (dest_loc IN OUT BLOB, file_name IN VARCHAR2) 2 IS 3 src_loc BFILE := BFILENAME('CWD', file_name); 4 amount INTEGER := 4000; 5 BEGIN 6 7 DBMS_LOB.OPEN(src_loc, DBMS_LOB.LOB_READONLY); 8 amount := DBMS_LOB.GETLENGTH(src_loc); 9 DBMS_LOB.LOADFROMFILE(dest_loc, src_loc, amount); 10 DBMS_LOB.CLOSE(src_loc); END; 13 / Procedure created. show errors No errors. pause Press [Enter] to continue... Press [Enter] to continue... 9) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Pour insérer des enregistrements dans la table RESUMES, y compris des valeurs LOB, la procédure WRITE_LOB est créée. Cette dernière appelle la procédure LOADLOBFROMBFILE_PROC créée au cours de l'étape précédente. /*== Create the procedure to insert LOBs into the table ==*/ CREATE OR REPLACE PROCEDURE write_lob (p_file IN VARCHAR2) 2 IS 3 i NUMBER; 4 fn VARCHAR2(15); 5 ln VARCHAR2(40); 6 b BLOB; 7 8 BEGIN 9 DBMS_OUTPUT.ENABLE; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 110
131 Exercice 7-1 : Utiliser des objets SecureFiles (suite) 10 DBMS_OUTPUT.PUT_LINE('Begin inserting rows...'); 11 FOR i IN LOOP 12 fn:=substr(p_file,1,instr(p_file,'.')-1); 13 ln:=substr(p_file,instr(p_file,'.')+1,length(p_file)- INSTR(p_file,'.')-4); 14 INSERT INTO resumes VALUES (i, fn, ln, EMPTY_BLOB()) 15 RETURNING resume INTO b; 16 loadlobfrombfile_proc(b,p_file); 17 DBMS_OUTPUT.PUT_LINE('Row ' i ' inserted.'); 18 END LOOP; 19 COMMIT; 20 END; 21 / Procedure created. show errors No errors. pause Press [Enter] to continue... Press [Enter] to continue... 10) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Celle-ci crée une procédure nommée READ_LOB qui extrait des enregistrements de la table RESUMES, y compris des valeurs LOB. /*== Create the procedure to read LOBs from the table ==*/ CREATE OR REPLACE PROCEDURE read_lob 2 IS 3 lob_loc BLOB; 4 CURSOR resumes_cur IS 5 SELECT id, first_name, last_name, resume 6 FROM resumes; 7 resumes_rec resumes%rowtype; 8 BEGIN 9 OPEN resumes_cur; 10 LOOP 11 FETCH resumes_cur INTO resumes_rec; 12 lob_loc := resumes_rec.resume; 13 DBMS_OUTPUT.PUT_LINE('The length is: ' DBMS_LOB.GETLENGTH(lob_loc)); 14 DBMS_OUTPUT.PUT_LINE('The ID is: ' resumes_rec.id); just print out the first 200 bytes of the LOB because DBMS_OUTPUT.PUT_LINE cannot display more than 255 bytes 17 DBMS_OUTPUT.PUT_LINE('The blob is read: ' 18 UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(lob_loc,200,1))); 19 EXIT WHEN resumes_cur%notfound; 20 END LOOP; 21 CLOSE resumes_cur; 22 END; 23 / Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 111
132 Exercice 7-1 : Utiliser des objets SecureFiles (suite) Procedure created. show errors No errors. pause Press [Enter] to continue... Press [Enter] to continue... 11) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Celle-ci crée la procédure CHECK_SPACE_BF pour afficher l'espace utilisé dans les blocs du disque pour le segment LOB BasicFiles de la table RESUMES. Cette procédure appelle le package DBMS_SPACE. Remarque : La procédure DBMS_SPACE.SPACE_USAGE est surchargée dans Oracle Database 11g. Il existe désormais deux procédures DBMS_SPACE.SPACE_USAGE, qui ne peuvent pas être utilisées de façon interchangeable. L'appel de la procédure DBMS_SPACE.SPACE_USAGE dans CHECK_SPACE_BF est valide uniquement pour des objets LOB BasicFiles. /*== Create a procedure for checking BasicFile LOB space usage. ==*/ /*== ==*/ /*== Note that the DBMS_SPACE.SPACE_USAGE procedure has been ==*/ /*== overloaded. There are 2 DBMS_SPACE.SPACE_USAGE procedures. ==*/ /*== The two cannot be used interchangeably. The invocation of ==*/ /*== the DBMS_SPACE.SPACE_USAGE procedure here is ONLY valid ==*/ /*== for use against BasicFile LOBs. ==*/ CREATE OR REPLACE PROCEDURE check_space_bf 2 IS 3 4 l_fs1_bytes NUMBER; 5 l_fs2_bytes NUMBER; 6 l_fs3_bytes NUMBER; 7 l_fs4_bytes NUMBER; 8 l_fs1_blocks NUMBER; 9 l_fs2_blocks NUMBER; 10 l_fs3_blocks NUMBER; 11 l_fs4_blocks NUMBER; 12 l_full_bytes NUMBER; 13 l_full_blocks NUMBER; 14 l_unformatted_bytes NUMBER; 15 l_unformatted_blocks NUMBER; 16 v_segname VARCHAR2(500); 17 BEGIN 18 SELECT segment_name 19 INTO v_segname 20 FROM user_lobs 21 WHERE table_name = 'RESUMES' Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 112
133 Exercice 7-1 : Utiliser des objets SecureFiles (suite) 22 AND column_name = 'RESUME'; DBMS_SPACE.SPACE_USAGE( 25 segment_owner => 'SF_DEMO', 26 segment_name => v_segname, 27 segment_type => 'LOB', 28 fs1_bytes => l_fs1_bytes, 29 fs1_blocks => l_fs1_blocks, 30 fs2_bytes => l_fs2_bytes, 31 fs2_blocks => l_fs2_blocks, 32 fs3_bytes => l_fs3_bytes, 33 fs3_blocks => l_fs3_blocks, 34 fs4_bytes => l_fs4_bytes, 35 fs4_blocks => l_fs4_blocks, 36 full_bytes => l_full_bytes, 37 full_blocks => l_full_blocks, 38 unformatted_blocks => l_unformatted_blocks, 39 unformatted_bytes => l_unformatted_bytes 40 ); 41 DBMS_OUTPUT.ENABLE; 42 DBMS_OUTPUT.PUT_LINE(' FS1 Blocks = ' l_fs1_blocks ' Bytes = ' l_fs1_bytes); 43 DBMS_OUTPUT.PUT_LINE(' FS2 Blocks = ' l_fs2_blocks ' Bytes = ' l_fs2_bytes); 44 DBMS_OUTPUT.PUT_LINE(' FS3 Blocks = ' l_fs3_blocks ' Bytes = ' l_fs3_bytes); 45 DBMS_OUTPUT.PUT_LINE(' FS4 Blocks = ' l_fs4_blocks ' Bytes = ' l_fs4_bytes); 46 DBMS_OUTPUT.PUT_LINE('Full Blocks = ' l_full_blocks ' Bytes = ' l_full_bytes); 47 DBMS_OUTPUT.PUT_LINE('Unformatted Blocks = ' l_unformatted_blocks ' Bytes = ' l_unformatted_bytes); 48 DBMS_OUTPUT.PUT_LINE('=========================================== =='); 49 DBMS_OUTPUT.PUT_LINE('Total Blocks = ' to_char(l_fs1_blocks + l_fs2_blocks + 50 l_fs3_blocks + l_fs4_blocks + l_full_blocks) ' Total Bytes = ' 51 to_char(l_fs1_bytes + l_fs2_bytes + 52 l_fs3_bytes + l_fs4_bytes + l_full_bytes)); 53 END; 54 / Procedure created. show errors No errors. pause Press [Enter] to continue... Press [Enter] to continue... Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 113
134 Exercice 7-1 : Utiliser des objets SecureFiles (suite) 12) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Celle-ci crée la procédure CHECK_SPACE_SF pour afficher l'espace utilisé dans les blocs du disque pour le segment LOB SecureFiles de la table RESUMES. Cette procédure appelle le package DBMS_SPACE. L'appel de la procédure DBMS_SPACE.SPACE_USAGE dans CHECK_SPACE_SF est valide uniquement pour des objets LOB SecureFiles. /*== Create a procedure for checking SecureFiles LOB space usage. ==*/ /*== ==*/ /*== Note that the DBMS_SPACE.SPACE_USAGE procedure has been ==*/ /*== overloaded. There are 2 DBMS_SPACE.SPACE_USAGE procedures. ==*/ /*== The two cannot be used interchangeably. The invocation of ==*/ /*== the DBMS_SPACE.SPACE_USAGE procedure here is ONLY valid ==*/ /*== for use against SecureFiles LOBs. ==*/ CREATE OR REPLACE PROCEDURE check_space_sf 2 IS 3 l_segment_size_blocks NUMBER; 4 l_segment_size_bytes NUMBER; 5 l_used_blocks NUMBER; 6 l_used_bytes NUMBER; 7 l_expired_blocks NUMBER; 8 l_expired_bytes NUMBER; 9 l_unexpired_blocks NUMBER; 10 l_unexpired_bytes NUMBER; 11 v_segname varchar2(30); 12 BEGIN 13 SELECT segment_name 14 INTO v_segname 15 FROM user_lobs 16 WHERE table_name = 'RESUMES' 17 AND column_name = 'RESUME'; 18 DBMS_SPACE.SPACE_USAGE( 19 segment_owner => 'SF_DEMO', 20 segment_name => v_segname, 21 segment_type => 'LOB', 22 segment_size_blocks => l_segment_size_blocks, 23 segment_size_bytes => l_segment_size_bytes, 24 used_blocks => l_used_blocks, 25 used_bytes => l_used_bytes, 26 expired_blocks => l_expired_blocks, 27 expired_bytes => l_expired_bytes, 28 unexpired_blocks => l_unexpired_blocks, 29 unexpired_bytes => l_unexpired_bytes 30 ); 31 DBMS_OUTPUT.ENABLE; 32 DBMS_OUTPUT.PUT_LINE(' Segment Blocks = ' l_segment_size_blocks ' Bytes = ' l_segment_size_bytes); Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 114
135 Exercice 7-1 : Utiliser des objets SecureFiles (suite) 33 DBMS_OUTPUT.PUT_LINE(' Used Blocks = ' l_used_blocks ' Bytes = ' l_used_bytes); 34 DBMS_OUTPUT.PUT_LINE(' Expired Blocks = ' l_expired_blocks ' Bytes = ' l_expired_bytes); 35 DBMS_OUTPUT.PUT_LINE(' Unexpired Blocks = ' l_unexpired_blocks ' Bytes = ' l_unexpired_bytes); 36 DBMS_OUTPUT.PUT_LINE('=========================================== =='); 37 END; 38 / Procedure created. show errors No errors. 13) Echantillonnage des performances de stockage pour les objets BasicFiles. Pour capturer les statistiques relatives aux performances de stockage des objets LOB BasicFiles en lecture et en écriture, procédez comme suit : a) Dans votre session SQL*Plus, exécutez le script write_data.sql. Ce dernier insère 90 enregistrements dans la table RESUMES. Chaque enregistrement contient un objet LOB d'une taille de 35 à 65 ko. Une horloge SQL*Plus démarre afin d'enregistrer la durée totale de l'insertion. b) A l'issue de l'exécution du script, notez la durée du chargement des objets BasicFiles. Remarque : La durée observée peut varier en fonction de votre configuration matérielle (par exemple, vitesse de la CPU ou quantité de connect sf_demo/oracle_4u Connected. set serveroutput on set verify on set term on set lines 200 timing start load_data exec write_lob('karl.brimmer.doc'); Begin inserting rows... Row 1 inserted. Row 2 inserted. Row 3 inserted. Row 30 inserted. PL/SQL procedure successfully completed. exec write_lob('monica.petera.doc'); Begin inserting rows... Row 1 inserted. Row 2 inserted. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 115
136 Exercice 7-1 : Utiliser des objets SecureFiles (suite) Row 3 inserted. Row 30 inserted. PL/SQL procedure successfully completed. exec write_lob('david.sloan.doc'); Begin inserting rows... Row 1 inserted. Row 2 inserted. Row 3 inserted. Row 30 inserted. PL/SQL procedure successfully completed. timing stop timing for: load_data Elapsed: 00:00: ) A présent, effectuez l'extraction des enregistrements qui ont été insérés au cours de l'étape précédente. a) Exécutez le script read_data.sql. Ce dernier lit 90 enregistrements de la table RESUMES. Pour chaque enregistrement, il affiche la taille de la valeur LOB ainsi que ses 200 premiers caractères. Une horloge SQL*Plus démarre afin d'enregistrer la durée totale de l'extraction. b) A l'issue de l'exécution du script, notez la durée de la lecture des objets LOB BasicFiles. Remarque : La durée observée peut varier en fonction de votre configuration matérielle (par exemple, vitesse de la CPU ou quantité de connect sf_demo/oracle_4us Connected. set serveroutput on set verify on set term on set lines 200 timing start read_data exec read_lob; The length is: The ID is: 1 The blob is read:??? >?? x z???? w?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? The length is: The ID is: 2 The blob is read:??? >?? x z???? w Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 116
137 Exercice 7-1 : Utiliser des objets SecureFiles (suite)?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? The length is: The ID is: 3 The blob is read:??? >?? x z???? w?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? The length is: The ID is: 4 The blob is read:??? >?? x z???? w?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? The length is: The ID is: 5 The blob is read:??? >?? x z???? w?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? The length is: The ID is: 6 The blob is read:??? >?? x z???? w?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? The length is: The ID is: 7 The blob is read:??? >?? x z???? w?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? The length is: The ID is: 8 The blob is read:??? >?? x z???? w The length is: The ID is: 30 The blob is read:??? >?? D F???? C?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? The length is: The ID is: 30 The blob is read:??? >?? D F???? C?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? PL/SQL procedure successfully completed. timing stop timing for: read_data Elapsed: 00:00:00.56 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 117
138 Exercice 7-1 : Utiliser des objets SecureFiles (suite) 15) Vérifiez l'espace utilisé par les objets LOB BasicFiles en procédant comme suit : a) Depuis SQL*Plus, exécutez le script space_usage.sql. b) Lorsque vous êtes invité à entrer le type d'objet LOB, saisissez BF. A l'issue de l'exécution du script, notez le nombre total de blocs et le nombre connect sf_demo/oracle_4us Connected. set serveroutput on set pause off set echo on exec check_space_&enter_bf_or_sf_for_lob_type Enter value for enter_bf_or_sf_for_lob_type: BF FS1 Blocks = 0 Bytes = 0 FS2 Blocks = 0 Bytes = 0 FS3 Blocks = 0 Bytes = 0 FS4 Blocks = 0 Bytes = 0 Full Blocks = 540 Bytes = Unformatted Blocks = 7618 Bytes = ============================================= Total Blocks = 540 Total Bytes = PL/SQL procedure successfully completed. 16) Pour migrer du stockage BasicFiles vers le stockage SecureFiles, procédez comme suit : a) Dans votre session SQL*Plus, exécutez le script mig_bf_to_sf.sql. Le script interroge tout d'abord la vue DBA_SEGMENTS pour afficher le nom du sous-type du segment LOB au format BasicFiles. b) Notez que le résultat est "ASSM" (gestion automatique de l'espace dans les -- run this script as SYS connect / as sysdba Connected. set echo on; set serveroutput on set term on; set lines 200 set pause off /*== Check the current segment type of the LOB ==*/ /*== ==*/ /*== Note that the segment subtype for ==*/ /*== BasicFile LOB storage is ASSM ==*/ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 118
139 Exercice 7-1 : Utiliser des objets SecureFiles (suite) SELECT segment_name, segment_type, segment_subtype 2 FROM dba_segments 3 WHERE tablespace_name = 'SECF_TBS1' 4 AND segment_type = 'LOBSEGMENT' 5 / SEGMENT_NAME SEGMENT_TYPE SEGMENT_SU SYS_LOB C00004$$ LOBSEGMENT ASSM pause Press [Enter] to continue... Press [Enter] to continue... 17) Appuyez sur [Entrée] pour passer à l'étape suivante du script. La migration du format de stockage BasicFiles vers le format SecureFiles s'effectue en ligne. En d'autres termes, la table RESUMES reste accessible pendant la migration. On appelle ce type d'opération une "redéfinition en ligne". Elle nécessite une table temporaire pour le stockage des données. A ce stade du script, la table temporaire est définie avec le format de stockage SecureFiles et les objets LOB sont stockés dans le tablespace SECF_TBS2. A l'issue de la migration, les objets LOB de la colonne RESUME sont stockés dans le tablespace SECF_TBS2. Remarque : Il est recommandé d'activer la compression et la suppression de doublon lors de la phase de création de la table. Par ailleurs, l'opération ALTER TABLE SHRINK n'est pas encore prise en charge pour le format SecureFiles dans cette version d'oracle Database. set pause on /*== Create the interim table for online redefinition ==*/ /*== /*== Note that the recommended practice is to enable ==*/ /*== COMPRESSION and DEDUPLICATION at table creation ==*/ /*== time. Also, the ALTER TABLE SHRINK operation is ==*/ /*== not yet supported for SecureFiles LOBs in ==*/ /*== release 1 of Oracle Database 11g. ==*/ CREATE TABLE sf_demo.resumes_interim 2 (id NUMBER, first_name VARCHAR2(15), 3 last_name VARCHAR2 (40), resume BLOB) 4 LOB (resume) STORE AS SECUREFILE 5 (TABLESPACE secf_tbs2 6 COMPRESS HIGH 7 DEDUPLICATE) 8 / Table created. pause Press [Enter] to continue... Press [Enter] to continue... Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 119
140 Exercice 7-1 : Utiliser des objets SecureFiles (suite) 18) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Celle-ci appelle le package DBMS_REDEFINITION pour effectuer l'opération de redéfinition en ligne. /*== Perform the online redefinition ==*/ DECLARE 2 error_count PLS_INTEGER := 0; 3 BEGIN 4 5 DBMS_REDEFINITION.START_REDEF_TABLE 6 ('sf_demo', 'resumes', 'resumes_interim', 7 'id id, first_name first_name, last_name last_name, resume resume', 8 OPTIONS_FLAG => DBMS_REDEFINITION.CONS_USE_ROWID); 9 10 DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS 11 ('sf_demo', 'resumes', 'resumes_interim', 12 1, true,true,true,false, error_count); DBMS_OUTPUT.PUT_LINE('Errors := ' TO_CHAR(error_count)); DBMS_REDEFINITION.FINISH_REDEF_TABLE 17 ('sf_demo', 'resumes', 'resumes_interim'); END; 20 / Errors := 0 PL/SQL procedure successfully completed. pause Press [Enter] to continue... Press [Enter] to continue... 19) Appuyez sur [Entrée] pour passer à l'étape suivante du script. A l'issue de la redéfinition en ligne, la table temporaire peut être supprimée. /*== Drop the interim table ==*/ DROP TABLE sf_demo.resumes_interim 2 / Table dropped. pause Press [Enter] to continue... Press [Enter] to continue... 20) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Les données LOB migrées figurent désormais dans le tablespace SECF_TBS2. A ce stade, le script interroge la vue DBA_SEGMENTS pour afficher le nom du sous-type du segment LOB au format SecureFiles. Notez que le résultat est "SECUREFILE". Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 120
141 Exercice 7-1 : Utiliser des objets SecureFiles (suite) set pause off /*== Check the segment type of the migrated LOB ==*/ /*== ==*/ /*== Note that the segment subtype for ==*/ /*== SecureFiles LOB storage is SECUREFILE ==*/ SELECT segment_name, segment_type, segment_subtype 2 FROM dba_segments 3 WHERE tablespace_name = 'SECF_TBS2' 4 AND segment_type = 'LOBSEGMENT' 5 / SEGMENT_NAME SEGMENT_TYPE SEGMENT_SU SYS_LOB C00004$$ LOBSEGMENT SECUREFILE pause Press [Enter] to continue... Press [Enter] to continue... 21) Enfin, le script interroge la vue DBA_LOBS pour afficher les paramètres relatifs à la compression et à la suppression de doublon pour le segment SecureFiles. set pause off /*== Check the DBA_LOBS data dictionary view for ==*/ /*== information on the SecureFiles COMPRESSION ==*/ /*== and DEDUPLICATION settings ==*/ SELECT column_name, segment_name, 2 compression, deduplication, securefile 3 FROM dba_lobs 4 WHERE owner = 'SF_DEMO' and table_name = 'RESUMES' 5 / COLUMN_NAME SEGMENT_NAME COMPRE DEDUPLICATION SEC RESUME SYS_LOB C00004$$ HIGH LOB YES Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 121
142 Exercice 7-1 : Utiliser des objets SecureFiles (suite) 22) Vérifiez l'espace utilisé par les objets SecureFiles. Pour cela, procédez comme suit : a) Depuis SQL*Plus, exécutez le script space_usage.sql. b) Lorsque vous êtes invité à entrer le type d'objet LOB, saisissez SF. A l'issue de l'exécution du script, notez le nombre de blocs utilisés et le nombre d'octets. c) Comparez ces valeurs au nombre total de blocs BasicFiles et au nombre d'octets relevés au cours de l'étape 15b. Notez la baisse considérable de l'espace utilisé pour les objets SecureFiles lorsque la compression et la suppression de doublon sont connect sf_demo/oracle_4us Connected. set serveroutput on set pause off set echo on exec check_space_&enter_bf_or_sf_for_lob_type Enter value for enter_bf_or_sf_for_lob_type: SF Segment Blocks = 8192 Bytes = Used Blocks = 6 Bytes = Expired Blocks = 8162 Bytes = Unexpired Blocks = 0 Bytes = 0 ============================================= PL/SQL procedure successfully completed. 23) Echantillonnage des performances du stockage au format SecureFiles. Pour capturer les statistiques relatives aux performances du stockage des objets LOB au format SecureFiles en lecture et en écriture, procédez comme indiqué ci-après. Contrairement à ce que vous avez fait pour l'échantillonnage des performances du stockage au format BasicFiles, vous commencez par tester les performances de la lecture. Il s'agit d'effectuer une comparaison valide des performances de lecture entre les formats BasicFiles et SecureFiles. Vous devez effectuer ce test sur le même ensemble d'enregistrements, immédiatement après la migration du format BasicFiles vers le format SecureFiles. a) Exécutez le script read_data.sql. Remarque : La durée observée peut varier en fonction de votre configuration matérielle (par exemple, vitesse de la CPU ou quantité de connect sf_demo/oracle_4us Connected. set serveroutput on set verify on set term on set lines 200 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 122
143 Exercice 7-1 : Utiliser des objets SecureFiles (suite) timing start read_data exec read_lob; The length is: The ID is: 1 The blob is read:??? >?? x z???? w?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? The length is: The ID is: 2 The blob is read:??? >?? x z???? w?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? The length is: The ID is: 3 The blob is read:??? >?? x z???? w?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? The length is: The ID is: 4 The blob is read:??? >?? x z???? w?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? The length is: The ID is: 5 The blob is read:??? >?? x z???? w?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? The length is: The ID is: 6 The blob is read:??? >?? x z???? w The length is: The ID is: 29 The blob is read:??? >?? D F???? C?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? The length is: The ID is: 30 The blob is read:??? >?? D F???? C?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? The length is: The ID is: 30 The blob is read:??? >?? D F???? C Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 123
144 Exercice 7-1 : Utiliser des objets SecureFiles (suite)?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? PL/SQL procedure successfully completed. timing stop timing for: read_data Elapsed: 00:00: ) A présent, insérez des enregistrements supplémentaires. a) Exécutez le script write_data.sql. Ce dernier insère 90 enregistrements dans la table RESUMES. Chaque enregistrement contient un objet LOB d'une taille de 35 à 65 ko. Une horloge SQL*Plus démarre afin d'enregistrer la durée totale de l'insertion. b) A l'issue de l'exécution du script, notez la durée du chargement des objets SecureFiles. Remarque : La durée observée peut varier en fonction de votre configuration matérielle (par exemple, vitesse de la CPU ou quantité de connect sf_demo/oracle_4us Connected. set serveroutput on set verify on set term on set lines 200 timing start load_data exec write_lob('karl.brimmer.doc'); Begin inserting rows... Row 1 inserted. Row 2 inserted. Row 3 inserted. Row 30 inserted. PL/SQL procedure successfully completed. exec write_lob('monica.petera.doc'); Begin inserting rows... Row 1 inserted. Row 2 inserted. Row 3 inserted. Row 30 inserted. PL/SQL procedure successfully completed. exec write_lob('david.sloan.doc'); Begin inserting rows... Row 1 inserted. Row 2 inserted. Row 3 inserted. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 124
145 Exercice 7-1 : Utiliser des objets SecureFiles (suite) Row 30 inserted. PL/SQL procedure successfully completed. timing stop timing for: load_data Elapsed: 00:00: ) Activez le cryptage. Pour crypter les objets LOB stockés au format SecureFiles, procédez comme suit : a) A l'aide de SQL*Plus, connectez-vous à la base de données avec les valeurs sf_demo/oracle_4u. Exécutez le script set serveroutput on set verify on set term on set lines 200 set pause off set echo on connect / as sysdba Connected. ALTER TABLE sf_demo.resumes 2 MODIFY (resume ENCRYPT USING 'AES192') 3 / Table altered. 26) Vérifiez que les objets LOB sont à présent cryptés. Exécutez le script check_encrypt.sql. Remarque : L'opération de cryptage des colonnes met essentiellement à jour toutes les valeurs LOB existantes. Néanmoins, si de l'espace libre est disponible dans le bloc de données, la forme non cryptée d'origine de la valeur LOB peut encore exister. Pour garantir qu'aucune valeur non cryptée ne figure sur le disque, il est conseillé d'activer le cryptage lors de la phase de création de la table (c'est-à-dire avant l'insertion des connect sf_demo/oracle_4u Connected. set pause off set echo on col TABLE_NAME format a18; col COLUMN_NAME format a19; col ENCRYPTION_ALG format a17; SELECT * Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 125
146 Exercice 7-1 : Utiliser des objets SecureFiles (suite) 2 FROM USER_ENCRYPTED_COLUMNS 3 / TABLE_NAME COLUMN_NAME ENCRYPTION_ALG SAL INTEGRITY_AL RESUMES RESUME AES 192 bits key YES SHA- 1 27) Pour effacer les comptes de base de données et les objets créés au cours de l'exercice, connectez-vous en tant qu'utilisateur SYSDBA et exécutez le script cleanup.sql. Quittez SQL*Plus. connect / as sysdba drop user sf_demo cascade 2 / User dropped. drop tablespace secf_tbs1 including contents and datafiles 2 / Tablespace dropped. drop tablespace secf_tbs2 including contents and datafiles 2 / Tablespace dropped. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 126
147 Exercices - Chapitre 8 Dans cet exercice, vous allez appliquer les diverses fonctionnalités de sécurité. Hypothèses : Le processus d'écoute (listener) est démarré, le nom de l'instance est orcl, le mot de passe de l'utilisateur SYS est oracle_4u et l'instance de base de données est démarrée. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 127
148 Exercice 8-1: Using Password Security Features Vous avez installé la base de données Oracle 11g dans un environnement mixte comprenant des bases 10.2 et Utilisez la page Evaluation Results: Secure Configuration for Oracle databases d'enterprise Manager pour vérifier le niveau de conformité de votre installation. Suite au résultat obtenu, vous décidez d'intensifier la sécurité de vos mots de passe en activant la sensibilité à la casse pour les mots de passe des utilisateurs ayant des privilèges. La complexité des mots de passe n'étant pas vérifiée, vous implémentez la fonction de vérification de la complexité des mots de passe verify_function_11g. Avant de commencer cet exercice, pour lequel vous serez connecté en tant qu'utilisateur SYS dans une session SQL*Plus, exécutez le script suivant figurant dans le répertoire /home/oracle/solutions/sec : setup_sec.sql. $ cd /home/oracle/solutions/sec $ $. oraenv ORACLE_SID = [db10g]? orcl $ $ sqlplus / as sysdba SQL*Plus: Release Production on Thu Oct 1 11:30: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing connect / as sysdba Connected. ALTER USER HR identified by hr account unlock; User altered. exit; Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 1) Si ce n'est déjà fait, démarrez Enterprise Manager Database Control à l'aide de la commande emctl start dbconsole. Conseil : Vérifiez le statut des processus en utilisant emctl status dbconsole. $ emctl status dbconsole Oracle Enterprise Manager 11g Database Control Release Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 128
149 Exercice 8-1: Using Password Security Features (suite) Copyright (c) 1996, 2009 Oracle Corporation. Tous droits réservés. Oracle Enterprise Manager 11g is running Logs are generated in directory /u01/app/oracle/acfsmounts/acfs_db1/ed.us.oracle.com_orcl/sysman/ log $ 2) Lancez Enterprise Manager Database Control et connectez-vous en tant qu'utilisateur SYS. Affichez les pages Security Violations et Policy Trend Overview et notez le niveau de conformité indiqué pour votre configuration. a) Dans la section Policy Violations de la page d'accueil de la base de données, vous voyez : Policy Violations All 7 Critical Rules Violated 7 Critical Security Patches 0 Compliance Score (%) 95 b) Cliquez sur le nombre affiché à la suite de Compliance Score (%). Vous accédez alors à la page Policy Trend Overview, dans laquelle vous pouvez consulter une représentation globale de la conformité de la stratégie. 3) Recherchez les règles faisant l'objet d'une violation. a) Dans la ligne Critical Severity, cliquez sur le nombre figurant dans la colonne Distinct Rules Violated. b) Vous devez voir s'afficher plusieurs règles concernant le mode PUBLIC ayant le privilège EXECUTE sur les packages PL/SQL, puis une autre relative à des profils présentant un nombre excessif d'échecs de connexion. 4) Recherchez la règle relative au nombre excessif d'échecs de connexion. a) Cliquez sur "Profiles With Excessive Allowed Failed Login Attempts" dans la colonne Policy Rule. b) Dans la page View Policy Rule Settings, la valeur par défaut de cette règle est 10. 5) Vous décidez que dans la stratégie de votre site, cinq échecs de connexion successifs doivent entraîner un verrouillage du compte pendant cinq minutes. Consultez les paramètres de la page Password Profile Settings et modifiez les paramètres du profil DEFAULT de telle sorte qu'ils correspondent à la stratégie du site. a) Revenez à la page d'accueil de la base de données. Dans la page Database Home, cliquez sur l'onglet Server, puis sur Profiles dans la section Security. b) Dans la page Profiles, sélectionnez le profil DEFAULT, puis cliquez sur Edit. c) Dans la page Edit Profile, cliquez sur l'onglet Password. d) Dans la section Failed Login, remplacez la valeur "Number of failed login attempts to lock after" par 5 et la valeur "Number of days to lock for" par Les valeurs sont exprimées en jours (un jour comprend 1440 minutes) et les fractions représentent les minutes (5/1440). e) Cliquez sur Apply. Vous recevez un message de confirmation de la mise à jour. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 129
150 Exercice 8-1: Using Password Security Features (suite) 6) Vérifiez le paramètre Password Case Sensitivity de l'instance pour les utilisateurs de la base de données. Consultez la valeur du paramètre SEC_CASE_SENSITIVE_LOGIN. Connectez-vous à l'instance orcl en tant qu'utilisateur HR avec le mot de passe HR. Tentez de vous connecter à l'aide des combinaisons nom utilisateur/mot de passe suivantes : HR/hr, hr/hr et hr/hr. a) Connectez-vous à SQL*Plus en tant qu'utilisateur sysdba et vérifiez le paramètre SEC_CASE_SENSITIVE_LOGON. $ sqlplus / as sysdba SQL*Plus: Release Production on Thu Oct 1 11:43: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options show parameter sec_case_sensitive_logon NAME TYPE VALUE sec_case_sensitive_logon boolean TRUE exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ b) Démarrez SQL*Plus avec l'option /nolog. Tentez de vous connecter à l'aide des différentes combinaisons nom utilisateur/mot de passe qui précèdent. Notez les combinaisons qui vous permettent de vous connecter. Remarque : Veillez à utiliser une chaîne de connexion valide afin de ne pas provoquer cinq échecs de connexion. Sinon, le compte sera verrouillé pendant cinq minutes. $ sqlplus /nolog SQL*Plus: Release Production on Thu Oct 1 11:45: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. connect HR/HR ERROR: ORA-01017: invalid username/password; logon denied connect HR/hr Connected. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 130
151 Exercice 8-1: Using Password Security Features (suite) connect hr/hr Connected. connect hr/hr ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE. exit $ 7) Paramétrez le fichier de mots de passe de telle sorte que les mots de passe ne soient pas sensibles à la casse, comme dans une base de données mise à niveau. Utilisez la commande : orapwd file=$oracle_home/dbs/orapworcl entries=5 password=oracle_4u ignorecase=y force=y $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ orapwd file=$oracle_home/dbs/orapworcl entries=5 password=oracle_4u ignorecase=y force=y $ 8) Vérifiez le paramètre Password Case Sensitivity de l'instance pour les utilisateurs ayant des privilèges. Essayez de vous connecter à l'instance orcl en tant qu'utilisateur SYSDBA en utilisant un nom de service réseau. Essayez successivement les types de mot de passe suivants : Mot de passe en minuscules. Mot de passe en majuscules. Mot de passe comprenant des majuscules et des minuscules. Le nom de service réseau impose l'utilisation du fichier de mots de passe. Quelles sont les connexions qui ont réussi? Démarrez SQL*Plus et tentez de vous connecter en utilisant les différentes combinaisons de mots de passe. $ sqlplus /nolog SQL*Plus: Release Production on Thu Oct 1 11:48: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. connect sys/oracle_4u@orcl AS SYSDBA Connected. connect sys/oracle_4u@orcl AS SYSDBA Connected. connect sys/oracle_4u@orcl AS SYSDBA Connected. exit Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 131
152 Exercice 8-1: Using Password Security Features (suite) Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 9) Paramétrez le fichier de mots de passe de telle sorte que les mots de passe soient sensibles à la casse, conformément à l'usage en vigueur dans la base de données. Utilisez la commande : orapwd file=$oracle_home/dbs/orapworcl entries=5 password=oracle_4u ignorecase=n force=y $ orapwd file=$oracle_home/dbs/orapworcl entries=5 password=oracle_4u ignorecase=n force=y $ 10) Essayez de vous connecter à l'instance orcl en tant qu'utilisateur SYSDBA en utilisant un nom de service réseau. Essayez successivement les types de mot de passe suivants : Mot de passe en minuscules. Mot de passe en majuscules. Mot de passe comprenant des majuscules et des minuscules. Le nom de service réseau impose l'utilisation du fichier de mots de passe. Quelles sont les connexions qui ont réussi? Démarrez SQL*Plus et tentez de vous connecter en utilisant les différentes combinaisons de mots de passe. $ sqlplus /nolog SQL*Plus: Release Production on Thu Oct 1 11:51: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. connect sys/oracle_4u@orcl AS SYSDBA Connected. connect sys/oracle_4u@orcl AS SYSDBA ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE. connect sys/oracle_4u@orcl AS SYSDBA ERROR: ORA-01017: invalid username/password; logon denied exit $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 132
153 Exercice 8-1: Using Password Security Features (suite) 11) Installez les fonctions de vérification de la complexité des mots de passe fournies avec le logiciel Oracle Database 11g. N'apportez aucune modification au profil DEFAULT. Le script utlpwdmg.sql installe les fonctions de vérification de la complexité des mots de passe et modifie le profil DEFAULT. Utilisez le script cr_verification_funct.sql. Les modifications apportées au profil DEFAULT sont mises en commentaire dans ce script. Ce dernier crée les fonctions verify_function et verify_function_11g. Exécutez cr_verification_funct.sql depuis le répertoire $HOME/solutions/SEC. $ pwd /home/oracle/solutions/sec $ sqlplus / as sysdba SQL*Plus: Release Production on Thu Oct 1 11:53: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing Function created. Function created. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 12) Créez le profil DBUSER. Utilisez les mêmes paramètres que ceux du profil DEFAULT, à l'exception de la vérification de la complexité des mots de passe. Dans le profil DBUSER, utilisez la fonction de vérification fournie intitulée VERIFY_FUNCTION_11G. Consultez les limites relatives aux mots de passe définies dans le profil DBUSER. Rappel : Lorsque vous créez un profil, toutes les valeurs qui ne sont pas explicitement définies héritent des valeurs du profil DEFAULT. Utilisez le script cr_dbuser_profile.sql du répertoire $HOME/solutions/SEC. $ pwd /home/oracle/solutions/sec $ sqlplus / as sysdba SQL*Plus: Release Production on Thu Oct 1 11:56: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 133
154 Exercice 8-1: Using Password Security Features (suite) Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing connect / as sysdba Connected. -- create a DBUSER profile CREATE PROFILE DBUSER 2 LIMIT 3 PASSWORD_VERIFY_FUNCTION verify_function_11g; Profile created. -- View the settings of the DBUSER profile SELECT RESOURCE_NAME, LIMIT 2 FROM DBA_PROFILES 3 WHERE PROFILE = 'DBUSER' 4 AND RESOURCE_TYPE = 'PASSWORD'; RESOURCE_NAME LIMIT FAILED_LOGIN_ATTEMPTS DEFAULT PASSWORD_LIFE_TIME DEFAULT PASSWORD_REUSE_TIME DEFAULT PASSWORD_REUSE_MAX DEFAULT PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION_11G PASSWORD_LOCK_TIME DEFAULT PASSWORD_GRACE_TIME DEFAULT 7 rows selected. 13) Créez le nom utilisateur FRED et associez-lui le mot de passe oracle. Accordez le privilège CREATE SESSION à l'utilisateur FRED. Connectez-vous en tant qu'utilisateur SYS et créez l'utilisateur FRED avec le mot de passe oracle. CREATE USER fred IDENTIFIED BY oracle; User created. GRANT CREATE SESSION TO FRED IDENTIFIED BY oracle; Grant succeeded. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 134
155 Exercice 8-1: Using Password Security Features (suite) 14) Le mot de passe est-il sensible à la casse? Effectuez des tests en vous connectant en tant qu'utilisateur FRED. connect fred/oracle ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE. connect FRED/ORACLE ERROR: ORA-01017: invalid username/password; logon denied connect fred/oracle Connected. 15) Affectez à l'utilisateur FRED le profil DBUSER. En tant qu'utilisateur SYS, affectez le profil DBUSER à l'utilisateur FRED. CONNECT / as sysdba Connected. ALTER USER fred PROFILE dbuser; User altered. 16) Connectez-vous en tant qu'utilisateur FRED et tentez de remplacer le mot de passe par welcome4 puis welcome1. Que se passe t-il? Connectez-vous en tant qu'utilisateur FRED. Utilisez la commande ALTER USER pour modifier le mot de passe. connect fred/oracle Connected. ALTER USER fred IDENTIFIED BY welcome4 REPLACE oracle; User altered. ALTER USER fred IDENTIFIED BY welcome1 REPLACE welcome4; ALTER USER fred IDENTIFIED BY welcome1 REPLACE welcome4 * ERROR at line 1: ORA-28003: password verification for the specified password failed ORA-20006: Password too simple Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 135
156 Exercice 8-1: Using Password Security Features (suite) 17) Choisissez un mot de passe comportant au minimum quatre caractères, dont au moins une lettre et un chiffre. Connecté en tant qu'utilisateur FRED, remplacez le mot de passe par celui que vous avez choisi. Que se passe t-il? Utilisez de nouveau la commande ALTER USER pour remplacer le mot de passe par une valeur plus complexe. Le mot de passe suggéré est Ft54red#. ALTER USER fred IDENTIFIED BY Ft54red# REPLACE welcome4; User altered. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 18) Modifiez les règles du profil de sécurité de manière à réduire le nombre de violations critiques. Les packages PL/SQL réseau nécessitent une liste de contrôle d'accès (ACL) pour pouvoir accéder à une machine du réseau. Une telle liste indique les utilisateurs et les machines accessibles. Par conséquent, le fait d'accorder aux packages le privilège d'exécution en mode PUBLIC ne constitue aucune violation de la sécurité. a) Dans Enterprise Manager, accédez à la page Metrics and Policy Settings en cliquant sur le lien Related Links de la page d'accueil de la base de données. b) Dans la page Metrics and Policies, cliquez sur l'onglet Policies et recherchez les stratégies commençant par "Restricted Privilege to Execute". Elles se situent entre les lignes 76 à 100. c) Sélectionnez "Restricted Privilege to Execute UTL_HTTP" et cliquez sur l'icône Edit située sur la droite. d) Dans la page "Edit Policy Rule Settings: Restricted Privilege to Execute UTL_HTTP", remplacez la valeur de Policy Evaluation par Disabled. Cliquez ensuite sur Continue. e) Répétez l'opération pour UTL_SMTP et UTL_TCP. Dans la page Metrics and Policies, cliquez sur OK. f) Dans la page Confirmation, cliquez sur OK. 19) Cliquez sur Database pour revenir à la page Database Home. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 136
157 Exercice 8-2 : Utiliser un tablespace crypté Si vous n'avez pas terminé l'exercice 7-1, effectuez les étapes de configuration suivantes avant de démarrer cet exercice. Modifiez le fichier sqlnet.ora pour ajouter l'entrée ENCRYPTION_WALLET_LOCATION : $ mkdir /u01/app/oracle/admin/orcl/wallet $ cd /u01/app/oracle/product/11.2.0/grid/network/admin $ vi sqlnet.ora $ cat /u01/app/oracle/product/11.2.0/grid/network/admin/sqlnet.ora # sqlnet.ora Network Configuration File: /u01/app/oracle/product/11.2.0/grid/network/admin/sqlnet.ora # Generated by Oracle configuration tools. NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) ADR_BASE = /u01/app/oracle ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/u01/app/oracle/admin/orcl/wallet))) $ $ sqlplus / as sysdba SQL*Plus: Release Production on Thu Oct 1 12:09: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options alter system set wallet open identified by "welcome1"; alter system set wallet open identified by "welcome1" * ERROR at line 1: ORA-28367: wallet does not exist exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ La colonne CUSTOMER_ID des tables ORDERS et CUSTOMERS contient des données sensibles. Pour que l'application fonctionne correctement, cette colonne doit être indexée et column_id doit être une colonne de clé étrangère. Procédez à un test afin de rechercher un chemin d'accès modifié. Implémentez le cryptage de tablespace en plaçant les deux tables et l'index de la colonne CUSTOMER_ID dans le tablespace crypté. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 137
158 Exercice 8-2 : Utiliser un tablespace crypté (suite) 1) Créez une clé de cryptage maître pour la base de données. Utilisez la commande ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "welcome1"; Connectez-vous à l'instance de base de données orcl avec l'utilisateur SYSDBA et exécutez la commande SET ENCRYPTION KEY : $ cd /home/oracle/solutions/sec $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ sqlplus / as sysdba SQL*Plus: Release Production on Thu Oct 1 12:15: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "welcome1"; System altered. 2) Créez un tablespace crypté nommé ENCTS d'une taille de 10 Mo et utilisant l'algorithme de cryptage par défaut. Utilisez la commande suivante : CREATE TABLESPACE encts DATAFILE '+DATA' SIZE 10M ENCRYPTION DEFAULT STORAGE (ENCRYPT); CREATE TABLESPACE encts 2 DATAFILE '+DATA' SIZE 10M 3 ENCRYPTION 4 DEFAULT STORAGE (ENCRYPT); Tablespace created. 3) L'utilisation des index est-elle possible dans le tablespace crypté? Procédez à un test en tant qu'utilisateur OE. L'interrogation contenue dans le fichier query_orders_index.sql utilise un index de clé étrangère nommé ORD_CUSTOMER_IX. Lancez l'interrogation dans un tablespace non crypté pour vérifier que l'index de clé étrangère est utilisé. Déplacez vers le tablespace crypté les objets auxquels vous avez accédé. Vérifiez que le plan d'exécution n'a pas changé. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 138
159 Exercice 8-2 : Utiliser un tablespace crypté (suite) a) Connectez-vous à SQL*Plus en tant qu'utilisateur SYSDBA. Créez le rôle PLUSTRACE en exécutant le script plustrce.sql figurant dans le répertoire $ORACLE_HOME/sqlplus/admin. Affectez le rôle PLUSTRACE à l'utilisateur OE. Déverrouillez le compte OE et remplacez le mot de passe par oe. connect / as sysdba drop role plustrace; drop role plustrace * ERROR at line 1: ORA-01919: role 'PLUSTRACE' does not exist create role plustrace; Role created. grant select on v_$sesstat to plustrace; Grant succeeded. grant select on v_$statname to plustrace; Grant succeeded. grant select on v_$mystat to plustrace; Grant succeeded. grant plustrace to dba with admin option; Grant succeeded. set echo off GRANT PLUSTRACE to OE; Grant succeeded. ALTER USER oe IDENTIFIED BY oe ACCOUNT UNLOCK; User altered. b) Connectez-vous en tant qu'utilisateur OE en activant autotrace, exécutez l'interrogation du script query_orders_index.sql figurant dans le répertoire /home/oracle/solutions/sec, puis examinez le plan d'exécution. Notez que l'index ORD_CUSTOMER_IX fait l'objet d'accès. Le mot de passe de l'utilisateur OE est oe. connect oe/oe Connected. set autotrace traceonly explain Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 139
160 Exercice 8-2 : Utiliser un tablespace crypté (suite) set echo select cust_last_name, order_id, order_total 2 from customers, orders 3 where customers.customer_id = orders.customer_id 4 and account_mgr_id = 145; Execution Plan Plan hash value: Id Operation Name Rows Bytes Cost (% CPU) Time SELECT STATEMENT (13) 00:00:01 * 1 HASH JOIN (13) 00:00:01 2 TABLE ACCESS BY INDEX ROWID ORDERS (0) 00:00:01 * 3 INDEX RANGE SCAN ORD_CUSTOMER_IX (0) 00:00:01 * 4 TABLE ACCESS FULL CUSTOMERS (0) 00:00: Predicate Information (identified by operation id): access("customers"."customer_id"="orders"."customer_id") 3 - access("orders"."customer_id">0) 4 - filter("account_mgr_id"=145) Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 140
161 Exercice 8-2 : Utiliser un tablespace crypté (suite) c) Déplacez les objets auxquels vous avez accédé vers le tablespace crypté : table ORDERS, table CUSTOMERS et index ORD_CUSTOMER_IX. Utilisez la commande ALTER TABLE MOVE TABLESPACE ENCTS pour déplacer les tables ORDERS et CUSTOMERS vers le tablespace crypté. L'index ORD_CUSTOMER_IX peut être déplacé à l'aide de la commande ALTER INDEX REBUILD TABLESPACE ENCTS. connect oe/oe Connected. ALTER TABLE CUSTOMERS MOVE TABLESPACE ENCTS; Table altered. ALTER TABLE ORDERS MOVE TABLESPACE ENCTS; Table altered. ALTER INDEX ORD_CUSTOMER_IX REBUILD TABLESPACE ENCTS; Index altered. d) Après avoir activé la fonction autotrace, exécutez l'interrogation et examinez le plan d'exécution. Vérifiez que l'index ORD_CUSTOMER_IX est utilisé. Connectez-vous en tant qu'utilisateur OE avec le mot de passe oe, activez AUTOTRACE et exécutez le script query_orders_index.sql. Examinez le plan d'exécution. Notez que l'index ORD_CUSTOMER_IX fait l'objet d'accès. connect oe/oe Connected. set autotrace traceonly explain set echo select cust_last_name, order_id, order_total 2 from customers, orders 3 where customers.customer_id = orders.customer_id 4 and account_mgr_id = 145; Execution Plan Plan hash value: Id Operation Name Rows Bytes Cost (% CPU) Time Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 141
162 Exercice 8-2 : Utiliser un tablespace crypté (suite) 0 SELECT STATEMENT (13) 00:00:01 * 1 HASH JOIN (13) 00:00:01 2 TABLE ACCESS BY INDEX ROWID ORDERS (0) 00:00:01 * 3 INDEX RANGE SCAN ORD_CUSTOMER_IX (0) 00:00:01 * 4 TABLE ACCESS FULL CUSTOMERS (0) 00:00: Predicate Information (identified by operation id): access("customers"."customer_id"="orders"."customer_id") 3 - access("orders"."customer_id">0) 4 - filter("account_mgr_id"=145) e) Connectez-vous en tant qu'utilisateur OE avec le mot de passe oe. Replacez les objets dans le tablespace EXAMPLE (depuis le tablespace ENCTS) en exécutant le script cleanup.sql. connect oe/oe Connected. -- Move the OE.ORDERS table to EXAMPLE tablespace ALTER TABLE orders MOVE TABLESPACE EXAMPLE; Table altered. -- Move the OE.CUSTOMERS table to EXAMPLE tablespace ALTER TABLE customers MOVE TABLESPACE EXAMPLE; Table altered. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 142
163 Exercice 8-2 : Utiliser un tablespace crypté (suite) -- Move the OE.ORD_CUSTOMER_IX index to the EXAMPLE tablespace ALTER INDEX ORD_CUSTOMER_IX REBUILD TABLESPACE EXAMPLE; Index altered. Connected. DROP TABLESPACE encts including contents and datafiles; Tablespace dropped. EXIT Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 143
164 Exercices - Chapitre 9 Dans cet exercice, vous allez utiliser SQL Performance Analyzer (SPA) pour tester certaines instructions SQL avant de mettre à niveau votre base de données 10g. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 144
165 Exercice 9-1 : Utiliser SQL Performance Analyzer Dans cet exercice, vous allez exporter un SQL Tuning Set (STS) de votre base de données 10g et l'importer dans votre environnement de test 11g. Ensuite, vous allez évaluer les performances des instructions SQL importées avant de mettre à niveau votre base de données 10g. 1) Dans une fenêtre de terminal, aussi appelée "première session", exécutez le script setup_spabig10g.sh pour configurer votre environnement 10g. $ cd /home/oracle/solutions/spabig $./setup_spabig10g.sh rm: cannot remove `/u01/app/oracle/product/10.2.0/dbhome_1/rdbms/log/apps.dmp': No such file or directory rm: cannot remove `/u01/app/oracle/product/10.2.0/dbhome_1/rdbms/log/appsandstage.d mp': No such file or directory SQL*Plus: Release Production on Fri Oct 2 08:53: Copyright (c) 1982, 2006, Oracle. All Rights Reserved. Connected to an idle instance. ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database opened. BEGIN dbms_sqltune.drop_sqlset('sts_jfv','system'); END; * ERROR at line 1: ORA-13754: "SQL Tuning Set" "STS_JFV" does not exist for user "SYSTEM". ORA-06512: at "SYS.DBMS_SQLTUNE_INTERNAL", line 4672 ORA-06512: at "SYS.DBMS_SQLTUNE", line 2795 ORA-06512: at line 1 drop user apps cascade * ERROR at line 1: ORA-01918: user 'APPS' does not exist Import: Release Production on Friday, 02 October, :53:44 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 145
166 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) Copyright (c) 2003, 2005, Oracle. Tous droits réservés. Connected to: Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded Starting "SYSTEM"."SYS_IMPORT_FULL_01": system/******** directory=data_pump_dir dumpfile=apps.dmp Processing object type SCHEMA_EXPORT/USER Processing object type SCHEMA_EXPORT/SYSTEM_GRANT Processing object type SCHEMA_EXPORT/ROLE_GRANT Processing object type SCHEMA_EXPORT/DEFAULT_ROLE Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/TABLE/TABLE Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA.. imported "APPS"."FACT_PD_OUT_ITM_293" MB rows.. imported "APPS"."ADM_PG_FEATUREVALUE" MB rows.. imported "APPS"."LU_ELEMENTGROUP_REL" MB rows.. imported "APPS"."LU_OUTLET_293" MB rows.. imported "APPS"."LU_ITEM_293" MB 5355 rows.. imported "APPS"."LU_ELEMENTRANGE_REL" KB 8155 rows.. imported "APPS"."LU_ELEMENTRANGE_REL_Q2" KB 8155 rows.. imported "APPS"."ADM_CC_FEATUREVALUE" KB 3047 rows.. imported "APPS"."LU_PG_FEATUREVALUE_15_Q2" KB 2505 rows.. imported "APPS"."LU_PERIOD_293" KB 31 rows.. imported "APPS"."PLAN_TABLE" 0 KB 0 rows Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Processing object type SCHEMA_EXPORT/VIEW/VIEW Processing object type SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_ STATISTICS Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Job "SYSTEM"."SYS_IMPORT_FULL_01" successfully completed at 17:22:24 LAST_ANAL Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 146
167 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) 04-JUL JUL JUL JUL JUL JUL JUL-07 8 rows selected. PL/SQL procedure successfully completed. Disconnected from Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options $ 2) Avant de pouvoir utiliser Performance Analyzer dans ce scénario de mise à niveau, vous devez appliquer à votre base de données 10g le patch Il se trouve actuellement dans le répertoire /stage et se nomme p _10203_generic.zip. Appliquez-le à votre base de données db10g avant de poursuivre. $ cd /home/oracle/solutions/spabig $ ls /stage _patchset p _10203_generic.zip $ rm -r $ unzip /stage/p _10203_generic.zip Archive: /stage/p _10203_generic.zip creating: / creating: /files/ creating: /files/rdbms/ creating: /files/rdbms/admin/ inflating: /files/rdbms/admin/prvtspao.plb creating: /etc/ creating: /etc/config/ inflating: /etc/config/inventory inflating: /etc/config/actions creating: /etc/xml/ inflating: /etc/xml/GenericActions.xml inflating: /etc/xml/ShiphomeDirectoryStructure.xml inflating: /README.txt $ ls bench80.sh exportapps.sh movedmp.sh setup_spabig10g.sh stop_orcl.sh wrkl10g_jfv.sh apps.dmp capsts10g.sh importapps.sh new_wrkl10g_jfv.sh stage_sts.sh unpack_sts.sh $ cd $. oraenv ORACLE_SID = [orcl]? db10g The Oracle base for ORACLE_HOME=/u01/app/oracle/product/10.2.0/dbhome_1 is /u01/app/oracle $ export PATH=$PATH:$ORACLE_HOME/OPatch Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 147
168 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) $ echo $PATH /u01/app/oracle/product/10.2.0/dbhome_1/bin:/usr/java/jdk1.5.0_11 /bin:/bin:/home/oracle/bin:/usr/bin:/usr/local/bin:/usr/x11r6/bin :/u01/app/oracle/product/10.2.0/dbhome_1/opatch:/u01/app/oracle/p roduct/10.2.0/dbhome_1/opatch $ opatch lsinventory Invoking OPatch Oracle interim Patch Installer version Copyright (c) 2005, Oracle Corporation. All rights reserved. Oracle Home : /u01/app/oracle/product/10.2.0/dbhome_1 Central Inventory : /u01/app/orainventory from : /etc/orainst.loc OPatch version : OUI version : OUI location : /u01/app/oracle/product/10.2.0/dbhome_1/oui Log file location : /u01/app/oracle/product/10.2.0/dbhome_1/cfgtoollogs/opatch/ opatch _ am.log Lsinventory Output file location : /u01/app/oracle/product/10.2.0/dbhome_1/cfgtoollogs/opatch/ lsinventory _ am.txt Installed Top-level Products (2): Oracle Database 10g Oracle Database 10g Release 2 Patch Set There are 2 products installed in this Oracle Home. Interim patches (2) : Patch : applied on Fri May 08 17:54:39 UTC 2009 Created on 9 Nov 2006, 22:20:50 hrs PST8PDT Bugs fixed: Patch : applied on Fri May 08 17:54:31 UTC 2009 Created on 9 Nov 2006, 23:23:06 hrs PST8PDT Bugs fixed: , , OPatch succeeded. $ opatch apply Invoking OPatch Oracle interim Patch Installer version Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 148
169 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) Copyright (c) 2005, Oracle Corporation. All rights reserved. Oracle Home : /u01/app/oracle/product/10.2.0/dbhome_1 Central Inventory : /u01/app/orainventory from : /etc/orainst.loc OPatch version : OUI version : OUI location : /u01/app/oracle/product/10.2.0/dbhome_1/oui Log file location : /u01/app/oracle/product/10.2.0/dbhome_1/cfgtoollogs/opatch/ opatch _ am.log ApplySession applying interim patch ' ' to OH '/u01/app/oracle/product/10.2.0/dbhome_1' OPatch detected non-cluster Oracle Home from the inventory and will patch the local system only. Please shutdown Oracle instances running out of this ORACLE_HOME on the local system. (Oracle Home = '/u01/app/oracle/product/10.2.0/dbhome_1') Is the local system ready for patching? Do you want to proceed? [y n] n User Responded with: N ApplySession exits on request ApplySession system modification phase did not start: Oracle Home is not modified. ApplySession exits on request System intact, OPatch will not attempt to restore the system OPatch stopped on request. $ sqlplus / as sysdba SQL*Plus: Release Production on Fri Oct 2 09:03: Copyright (c) 1982, 2006, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. exit Disconnected from Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 149
170 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) $ $ opatch apply Invoking OPatch Oracle interim Patch Installer version Copyright (c) 2005, Oracle Corporation. All rights reserved. Oracle Home : /u01/app/oracle/product/10.2.0/dbhome_1 Central Inventory : /u01/app/orainventory from : /etc/orainst.loc OPatch version : OUI version : OUI location : /u01/app/oracle/product/10.2.0/dbhome_1/oui Log file location : /u01/app/oracle/product/10.2.0/dbhome_1/cfgtoollogs/opatch/ opatch _ am.log ApplySession applying interim patch ' ' to OH '/u01/app/oracle/product/10.2.0/dbhome_1' OPatch detected non-cluster Oracle Home from the inventory and will patch the local system only. Please shutdown Oracle instances running out of this ORACLE_HOME on the local system. (Oracle Home = '/u01/app/oracle/product/10.2.0/dbhome_1') Is the local system ready for patching? Do you want to proceed? [y n] y User Responded with: Y Backing up files and inventory (not for auto-rollback) for the Oracle Home Backing up files affected by the patch ' ' for restore. This might take a while... Backing up files affected by the patch ' ' for rollback. This might take a while... Patching component oracle.rdbms, Copying file to "/u01/app/oracle/product/10.2.0/dbhome_1/rdbms/admin/prvtspao.plb " ApplySession adding interim patch ' ' to inventory Verifying the update... Inventory check OK: Patch ID is registered in Oracle Home inventory with proper meta-data. Files check OK: Files from Patch ID are present in Oracle Home. The local system has been patched and can be restarted. OPatch succeeded. $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 150
171 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) $ opatch lsinventory Invoking OPatch Oracle interim Patch Installer version Copyright (c) 2005, Oracle Corporation. All rights reserved. Oracle Home : /u01/app/oracle/product/10.2.0/dbhome_1 Central Inventory : /u01/app/orainventory from : /etc/orainst.loc OPatch version : OUI version : OUI location : /u01/app/oracle/product/10.2.0/dbhome_1/oui Log file location : /u01/app/oracle/product/10.2.0/dbhome_1/cfgtoollogs/opatch/ opatch _ am.log Lsinventory Output file location : /u01/app/oracle/product/10.2.0/dbhome_1/cfgtoollogs/opatch/ lsinventory _ am.txt Installed Top-level Products (2): Oracle Database 10g Oracle Database 10g Release 2 Patch Set There are 2 products installed in this Oracle Home. Interim patches (3) : Patch : applied on Fri Oct 02 09:05:29 UTC 2009 Created on 12 May 2008, 08:56:41 hrs US/Pacific Bugs fixed: Patch : applied on Fri May 08 17:54:39 UTC 2009 Created on 9 Nov 2006, 22:20:50 hrs PST8PDT Bugs fixed: Patch : applied on Fri May 08 17:54:31 UTC 2009 Created on 9 Nov 2006, 23:23:06 hrs PST8PDT Bugs fixed: , , OPatch succeeded. $ $ sqlplus / as sysdba Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 151
172 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) SQL*Plus: Release Production on Fri Oct 2 09:11: Copyright (c) 1982, 2006, Oracle. All Rights Reserved. Connected to an idle instance. startup ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database opened. drop table plan_table$; Table create type dbms_xplan_type * ERROR at line 1: ORA-00955: name is already used by an existing object create type dbms_xplan_type_table * ERROR at line 1: ORA-00955: name is already used by an existing object Grant succeeded. Grant succeeded. create type sql_plan_row_type * ERROR at line 1: ORA-00955: name is already used by an existing object Synonym created. Grant succeeded. create type sql_plan_table_type * ERROR at line 1: ORA-00955: name is already used by an existing object Synonym created. Grant succeeded. create sequence ora_plan_id_seq$ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 152
173 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) * ERROR at line 1: ORA-00955: name is already used by an existing object Table created. Grant succeeded. Synonym created. create type sql_plan_stat_row_type * ERROR at line 1: ORA-00955: name is already used by an existing object Synonym created. Grant succeeded. Library created. No errors. Library created. Package created. Synonym created. Grant succeeded. Package body created. No Library created. No errors. Library created. Package created. Synonym created. Grant Package body created. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 153
174 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) No PL/SQL procedure successfully completed. Package created. No errors. Synonym created. No errors. Package body created. No errors. grant all on dbms_sqlpa to system; Grant succeeded. exit Disconnected from Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options $ 3) Avant de créer un STS dans votre environnement 10g, arrêtez Enterprise Manager Database Control et fermez l'instance de base de données 11g orcl. Cela vous permet de libérer des ressources système. Pour exécuter cette étape, utilisez le script stop_orcl.sh. Notez que ce script permet également de nettoyer d'éventuelles exécutions précédentes de cet exercice sur votre base de données orcl. $ cd /home/oracle/solutions/spabig $./stop_orcl.sh rm: cannot remove `/u01/app/oracle/admin/orcl/dpdump/appsandstage.dmp': No such file or directory Oracle Enterprise Manager 11g Database Control Release Copyright (c) 1996, 2009 Oracle Corporation. Tous droits réservés. Stopping Oracle Enterprise Manager 11g Database Control Stopped. SQL*Plus: Release Production on Fri Oct 2 10:59: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 154
175 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options BEGIN dbms_sqlpa.drop_analysis_task('spa_jfv1'); END; * ERROR at line 1: ORA-13605: The specified task or object SPA_JFV1 does not exist for the current user. ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86 ORA-06512: at "SYS.PRVT_ADVISOR", line 5827 ORA-06512: at "SYS.DBMS_SQLPA", line 400 ORA-06512: at line 1 BEGIN dbms_sqlpa.drop_analysis_task('spa_jfv2'); END; * ERROR at line 1: ORA-13605: The specified task or object SPA_JFV2 does not exist for the current user. ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86 ORA-06512: at "SYS.PRVT_ADVISOR", line 5827 ORA-06512: at "SYS.DBMS_SQLPA", line 400 ORA-06512: at line 1 BEGIN dbms_sqltune.drop_sqlset('sts_jfv','system'); END; * ERROR at line 1: ORA-13754: "SQL Tuning Set" "STS_JFV" does not exist for user "SYSTEM". ORA-06512: at "SYS.DBMS_SQLTUNE_INTERNAL", line ORA-06512: at "SYS.DBMS_SQLTUNE", line 3118 ORA-06512: at line 1 drop user apps cascade * ERROR at line 1: ORA-01918: user 'APPS' does not exist Database closed. Database dismounted. ORACLE instance shut down. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 155
176 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) 4) (Effectuez les étapes 4 et 5 en même temps.) Générez un STS (SQL Tuning Set) nommé STS_JFV qui capture des instructions SQL à partir du cache de curseur toutes les cinq secondes pendant approximativement douze minutes. Limitez la capture aux instructions issues du module SQL_JFV dans le schéma APPS. En outre, le STS doit appartenir à l'utilisateur SYSTEM. Pour exécuter cette étape, utilisez le script capsts10g.sh. $ cd /home/oracle/solutions/spabig $./capsts10g.sh SQL*Plus: Release Production on Fri Oct 2 12:13: Copyright (c) 1982, 2006, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options PL/SQL procedure successfully completed. Elapsed: 00:09:04.90 No errors. Disconnected from Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options $ 5) (Effectuez les étapes 4 et 5 en même temps.) Dans une seconde fenêtre de terminal où vous êtes connecté en tant qu'utilisateur oracle, exécutez le script wrkl10g_jfv.sh. Ce script exécute une charge globale de 45 instructions qui sont capturées automatiquement dans STS_JFV. $ cd /home/oracle/solutions/spabig $ $./wrkl10g_jfv.sh SQL*Plus: Release Production on Fri Oct 2 12:14: Copyright (c) 1982, 2006, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options System altered. System altered. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 156
177 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) Connected. Session 2009:OCT-02:12:15:26 System 1 PL/SQL procedure successfully completed Elapsed: 00:00:00.39 Statistics recursive calls 0 db block gets 292 consistent gets 146 physical reads 188 redo size 427 bytes sent via SQL*Net to client 400 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 18 sorts (memory) 0 sorts (disk) 1 rows Results in Elapsed: 00:00:00.01 Statistics recursive calls 0 db block gets 120 consistent gets 9 physical reads 0 redo size 428 bytes sent via SQL*Net to client 400 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows Results in Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 157
178 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) Elapsed: 00:00:00.03 Statistics recursive calls 0 db block gets 120 consistent gets 16 physical reads 0 redo size 428 bytes sent via SQL*Net to client 400 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows Results in Elapsed: 00:00:00.30 Statistics recursive calls 0 db block gets 598 consistent gets 528 physical reads 72 redo size 427 bytes sent via SQL*Net to client 400 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 14 sorts (memory) 0 sorts (disk) 1 rows Results in Elapsed: 00:00:00.02 Statistics recursive calls 0 db block gets 525 consistent gets 9 physical reads 0 redo size 428 bytes sent via SQL*Net to client 400 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 1 rows processed Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 158
179 Exercice 9-1 : Utiliser SQL Performance Analyzer Results in 1188 Ticks PL/SQL procedure successfully completed. we are 2009:OCT-02:12:18:16 Disconnected from Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options $ 6) Après environ cinq minutes, les deux sessions doivent être terminées. Vérifiez le contenu de STS_JFV et stockez-le temporairement dans une table appelée APPS.STS_JFV_TAB. Pour exécuter cette étape, utilisez le script stage_sts.sh. $ cd /home/oracle/solutions/spabig $./stage_sts.sh SQL*Plus: Release Production on Fri Oct 2 12:25: Copyright (c) 1982, 2006, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options NAME STATEMENT_COUNT STS_JFV 33 drop table apps.sts_jfv_tab purge * ERROR at line 1: ORA-00942: table or view does not exist PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. Disconnected from Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options $ 7) Utilisez Data Pump Export pour exporter le schéma APPS dans le répertoire par défaut Data Pump 10g. Pour exécuter cette étape, utilisez le script exportapps.sh. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 159
180 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) $ cd /home/oracle/solutions/spabig $./exportapps.sh SQL*Plus: Release Production on Fri Oct 2 12:26: Copyright (c) 1982, 2006, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options Table dropped. Disconnected from Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options rm: cannot remove `/u01/app/oracle/product/10.2.0/dbhome_1/rdbms/log/appsandstage.d mp': No such file or directory Export: Release Production on Friday, 02 October, :26:41 Copyright (c) 2003, 2005, Oracle. Tous droits réservés. Connected to: Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system/******** directory=data_pump_dir dumpfile=appsandstage schemas=apps Estimate in progress using BLOCKS method... Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: MB Processing object type SCHEMA_EXPORT/USER Processing object type SCHEMA_EXPORT/SYSTEM_GRANT Processing object type SCHEMA_EXPORT/ROLE_GRANT Processing object type SCHEMA_EXPORT/DEFAULT_ROLE Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/TABLE/TABLE Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Processing object type SCHEMA_EXPORT/VIEW/VIEW Processing object type SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_ STATISTICS Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS.. exported "APPS"."FACT_PD_OUT_ITM_293" MB rows Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 160
181 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite).. exported "APPS"."ADM_PG_FEATUREVALUE" MB rows.. exported "APPS"."LU_ELEMENTGROUP_REL" MB rows.. exported "APPS"."LU_OUTLET_293" MB rows.. exported "APPS"."LU_ITEM_293" MB 5355 rows.. exported "APPS"."LU_ELEMENTRANGE_REL" KB 8155 rows.. exported "APPS"."LU_ELEMENTRANGE_REL_Q2" KB 8155 rows.. exported "APPS"."STS_JFV_TAB_CPLANS" KB 570 rows.. exported "APPS"."STS_JFV_TAB" KB 33 rows.. exported "APPS"."ADM_CC_FEATUREVALUE" KB 3047 rows.. exported "APPS"."LU_PG_FEATUREVALUE_15_Q2" KB 2505 rows.. exported "APPS"."STS_JFV_TAB_CBINDS" KB 0 rows.. exported "APPS"."LU_PERIOD_293" KB 31 rows Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded ***************************************************************** ************* Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is: /u01/app/oracle/product/10.2.0/dbhome_1/rdbms/log/appsandstage.dm p Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at 12:27:24 $ 8) Vérifiez que vous avez bien copié le fichier dump généré du répertoire Data Pump 10g par défaut vers le répertoire Data Pump 11g par défaut. Pour exécuter cette étape, utilisez le script movedmp.sh. $ cd /home/oracle/solutions/spabig $./movedmp.sh 9) Démarrez votre environnement 11g, notamment votre instance de base de données et Enterprise Manager Database Control : $. oraenv ORACLE_SID = [db10g]? orcl $ sqlplus / as sysdba SQL*Plus: Release Production on Fri Oct 2 12:30: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 161
182 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) Connected to an idle instance. startup ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database opened. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ emctl start dbconsole Oracle Enterprise Manager 11g Database Control Release Copyright (c) 1996, 2009 Oracle Corporation. Tous droits réservés. Starting Oracle Enterprise Manager 11g Database Control... started Logs are generated in directory /u01/app/oracle/acfsmounts/acfs_db1/ed.us.oracle.com_orcl/sysman/ log $ 10) Utilisez Data Pump Import pour importer le schéma APPS dans votre système 11g. Pour exécuter cette étape, utilisez le script importapps.sh. Vous pouvez, en toute sécurité, ignorer les erreurs suivantes. Elles sont causées par des erreurs de conversion. $ cd /home/oracle/solutions/spabig $./importapps.sh SQL*Plus: Release Production on Fri Oct 2 12:39: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options drop user apps cascade * ERROR at line 1: ORA-01918: user 'APPS' does not exist Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 162
183 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) Import: Release Production on Friday, 02 October, :40:30 Copyright (c) 2003, 2007, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded Starting "SYSTEM"."SYS_IMPORT_FULL_01": system/******** directory=data_pump_dir dumpfile=appsandstage Processing object type SCHEMA_EXPORT/USER Processing object type SCHEMA_EXPORT/SYSTEM_GRANT Processing object type SCHEMA_EXPORT/ROLE_GRANT Processing object type SCHEMA_EXPORT/DEFAULT_ROLE Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/TABLE/TABLE Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA.. imported "APPS"."FACT_PD_OUT_ITM_293" MB rows.. imported "APPS"."ADM_PG_FEATUREVALUE" MB rows.. imported "APPS"."LU_ELEMENTGROUP_REL" MB rows.. imported "APPS"."LU_OUTLET_293" MB rows.. imported "APPS"."LU_ITEM_293" MB 5355 rows ORA-02374: conversion error loading table "APPS"."LU_ELEMENTRANGE_REL" ORA-12899: value too large for column ELEMENTRANGE_SDESC (actual: 16, maximum: 15) ORA-02372: data for row: ELEMENTRANGE_SDESC : 0X'32302C D C303020BF' ORA-02374: conversion error loading table "APPS"."LU_ELEMENTRANGE_REL" ORA-12899: value too large for column ELEMENTRANGE_SDESC (actual: 16, maximum: 15) ORA-02372: data for row: ELEMENTRANGE_SDESC : 0X'33302C D C303020BF'.. imported "APPS"."LU_ELEMENTRANGE_REL_Q2" KB 7957 out of 8155 rows.. imported "APPS"."STS_JFV_TAB_CPLANS" KB 570 rows.. imported "APPS"."STS_JFV_TAB" KB 33 rows Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 163
184 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite).. imported "APPS"."ADM_CC_FEATUREVALUE" KB 3047 rows.. imported "APPS"."LU_PG_FEATUREVALUE_15_Q2" KB 2505 rows.. imported "APPS"."STS_JFV_TAB_CBINDS" KB 0 rows.. imported "APPS"."LU_PERIOD_293" KB 31 rows Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Processing object type SCHEMA_EXPORT/VIEW/VIEW Processing object type SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_ STATISTICS Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Job "SYSTEM"."SYS_IMPORT_FULL_01" successfully completed at 12:42:30 Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 11) Effectuez le "déballage" de la table intermédiaire que vous avez importée précédemment dans le schéma SYSTEM. Pour exécuter cette étape, utilisez le script unpack_sts.sh. $ cd /home/oracle/solutions/spabig $./unpack_sts.sh SQL*Plus: Release Production on Fri Oct 2 12:46: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options PL/SQL procedure successfully completed. System altered. System altered. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 164
185 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 12) Utilisez NETCA pour créer une entrée TNS pour vos instances de base de données db10g. Vous devez effectuer cette opération à partir du répertoire d'origine (home) de la base de données 11g. a) Dans une fenêtre de terminal graphique, paramétrez vos variables d'environnement pour qu'elles pointent vers votre installation 11g. Exécutez ensuite la commande netca : $. oraenv ORACLE_SID = [db10g]? orcl $ netca b) Dans la page Welcome, sélectionnez "Local Net Service Name configuration" et cliquez sur Next. c) Dans la page Net Service Name Configuration, sélectionnez Add et cliquez sur Next. d) Dans la page Service name configuration, entrez db10g dans le champ Service name. Ensuite, cliquez sur Next. e) Dans la page Select Protocol, sélectionnez TCP et cliquez sur Next. f) Dans la page TCP/IP Protocol, entrez votre nom d'hôte dans le champ Host name. Utilisez la commande hostname à partir d'une fenêtre de terminal pour obtenir le nom exact. Assurez-vous que le numéro de port utilisé est bien Cliquez ensuite sur Next. g) Dans la page Test, sélectionnez Yes, puis cliquez sur Next. h) Dans la page Connecting, cliquez sur Change Login. i) Dans la fenêtre Change Login, entrez system/oracle comme informations d'identification et de connexion (credentials) à utiliser pour le test. Cliquez sur OK. j) De retour dans la page Connecting, le test doit à présent réussir. Cliquez sur Next. k) Dans la page Net Service Name, entrez db10g dans le champ Net Service name. Cliquez sur Next. l) Dans la page Another Net Service name, sélectionnez No et cliquez sur Next. m) Dans la page Done, cliquez sur Next. n) Dans la page Welcome, cliquez sur Finish. 13) Connecté en tant qu'utilisateur SYSTEM, utilisez Enterprise Manager Database Control pour tester le comportement de STS_JFV dans votre environnement 11g et le comparer à son exécution dans votre environnement 10g. Qu'en concluez-vous? a) Dans la page Home, cliquez sur l'onglet Software and Support. b) Dans la sous-page "Software and Support", cliquez sur SQL Performance Analyzer dans la section Real Application Testing. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 165
186 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) c) Dans la page SQL Performance Analyzer, cliquez sur le lien "Upgrade from 10.2 or 11g". d) Dans la page "Upgrade from 10.2 or 11g", saisissez : SPA_JFV1 dans le champ Task Name et SYSTEM.STS_JFV dans le champ SQL Tuning Set. Dans la liste déroulante Creation Method, sélectionnez Execute SQLs. Dans la liste déroulante Per-SQL Time Limit, sélectionnez Unlimited. e) Cliquez sur le bouton Create Database Link dans la section Pre-upgrade Trial. f) Dans la page Create Database Link, entrez db10g.us.oracle.com dans le champ Name. Entrez db10g dans le champ Net Service name. Assurez-vous que l'option Public est bien sélectionnée. Sélectionnez Fixed User dans la section Connect As, entrez system dans le champ Username, puis affectez oracle aux deux mots de passe. Cliquez sur OK. g) De retour dans la page Upgrade from 10.2 or 11g, entrez DB10G.US.ORACLE.COM dans le champ Database Link de la section Pre-upgrade Trial. h) Dans la section Post-upgrade Trial, désactivez l'option "Use the same system as in the pre-upgrade trial". Cliquez ensuite sur le bouton Create Database Link de cette même section. i) Dans la page Create Database Link, entrez orcl.us.oracle.com@loopback dans le champ Name. Entrez orcl dans le champ Net Service name. Assurez-vous que l'option Public est bien sélectionnée. Sélectionnez Fixed User dans la section Connect As, entrez system dans le champ Username, puis affectez oracle_4u aux deux mots de passe. Cliquez sur OK. j) De retour dans la page Upgrade from 10.2 or 11g, entrez ORCL.US.ORACLE.COM@LOOPBACK dans le champ Database Link de la section Post-upgrade Trial. k) Vérifiez que la valeur Elapsed Time a été sélectionnée dans le champ Comparison Metric et que Schedule est défini avec la valeur Immediately. Lorsque vous avez terminé, cliquez sur Submit. l) De retour dans la page SQL Performance Analyzer, patientez jusqu'à ce que le paramètre Status soit défini avec la valeur Completed pour votre tâche soumise (SPA_JFV1). Cette exécution peut prendre environ 10 minutes. m) Cliquez sur le lien SPA_JFV1. n) Vous accédez alors à la page SQL Performance Analyzer Task: SYS.SPA_JFV1. Cliquez sur l'icône représentant des lunettes dans la table SQL Trial Comparisons, colonne Comparison Report. Cette table ne doit contenir qu'une seule entrée. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 166
187 Exercice 9-1 : Utiliser SQL Performance Analyzer (suite) o) Dans la page SQL Performance Analyzer Task Report: SYSTEM.SPA_JFV1, vous pouvez constater que la deuxième simulation a été plus rapide que la première. La deuxième simulation correspond à l'exécution qui a utilisé Oracle Database 11g. Cet avantage est fonction des instructions qui ont été capturées et réexécutées. Vous devez également constater que la plupart des instructions ont utilisé un nouveau plan avec une optimisation 11g. p) Dans la table "Top 10 SQL Statements Based on Impact on Workload", cliquez sur un des liens SQL ID. q) Vous êtes alors dirigé vers la page SQL Details correspondante où vous pouvez consulter le texte de votre instruction, ainsi que les différents plans d'exécution qui ont été utilisés lors des deux simulations. r) Vous pouvez lancer la fonction de conseil SQL Tuning Advisor pour ajuster cette instruction en cliquant sur le lien STS_JFV en regard du champ SQL Tuning Set Name. Mais vous n'allez pas effectuer cette opération dans cet exercice. 14) A partir d'une fenêtre de terminal, arrêtez votre instance de base de données db10g. $. oraenv ORACLE_SID = [orcl]? db10g The Oracle base for ORACLE_HOME=/u01/app/oracle/product/10.2.0/dbhome_1 is /u01/app/oracle $ sqlplus / as sysdba SQL*Plus: Release Production on Fri Oct 2 13:26: Copyright (c) 1982, 2006, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. exit Disconnected from Oracle Database 10g Enterprise Edition Release Production With the Partitioning, OLAP and Data Mining options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 167
188 Exercices - Chapitre 10 SQL Plan Management (SPM) est une nouvelle fonctionnalité d'oracle Database 11g qui vous permet de contrôler l'évolution des plans d'exécution. Avec SPM, l'optimiseur gère automatiquement les plans d'exécution et s'assure que seuls les plans connus ou vérifiés sont utilisés. Lorsqu'un nouveau plan est identifié pour une instruction SQL, il n'est pas utilisé tant que vous n'avez pas vérifié qu'il offre des performances similaires ou supérieures à celles du plan actuel. SPM comprend trois composants principaux : 1. Capture de plans 2. Sélection de plans 3. Vérification de plans Dans cet exercice, vous allez étudier le fonctionnement de chacun de ces composants. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 168
189 Exercice 10-1 : Utiliser SQL Plan Management Dans cet exercice, vous allez voir toutes les phases d'utilisation de SQL Plan Management. 1) Avant de commencer, vous devez configurer un nouvel utilisateur. Pour configurer l'environnement de l'exercice, exécutez le script spm_setup.sh. Ce script crée l'utilisateur SPM que vous allez utiliser tout au long de l'exercice. $ cd /home/oracle/solutions/spm $./spm_setup.sh SQL*Plus: Release Production on Fri Oct 2 14:20: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options drop user spm cascade * ERROR at line 1: ORA-01918: user 'SPM' does not exist User created. Grant succeeded. System altered. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 2) Le premier composant de SPM est la capture de plans. Pour capturer des plans, vous avez deux possibilités : automatiquement (à la volée) ou par chargement en masse. Commençons par la capture automatique. Dans cet exercice, vous allez activer la capture automatique des plans pour que le référentiel SPM puisse être alimenté automatiquement pour toute instruction SLQ reproductible. Activez la capture automatique des plans en affectant au paramètre d'initialisation OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES la valeur TRUE dans la session SQL*Plus où vous êtes connecté en tant qu'utilisateur SPM. Une fois connecté à la session, ne vous déconnectez surtout pas! $. oraenv ORACLE_SID = [orcl]? orcl Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 169
190 Exercice 10-1 : Utiliser SQL Plan Management (suite) The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ sqlplus spm/spm SQL*Plus: Release Production on Fri Oct 2 14:22: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options show parameter baseline NAME TYPE VALUE optimizer_capture_sql_plan_baselines boolean FALSE optimizer_use_sql_plan_baselines boolean TRUE alter session set optimizer_capture_sql_plan_baselines = TRUE; Session altered. 3) Exécutez l'interrogation suivante dans la session SQL*Plus (pas d'espace dans /*LOAD ) : select /*LOAD_AUTO*/ * from sh.sales where quantity_sold > 40 order by prod_id; Utilisez le script query1.sql pour exécuter select /*LOAD_AUTO*/ * from sh.sales where quantity_sold > 40 order by prod_id; no rows selected 4) Comme c'est la première fois que cette instruction SQL est utilisée, elle n'est pas encore reproductible et aucun Plan Baseline ne lui est associé. Pour en avoir la confirmation, vous pouvez vérifier que le Plan Baseline n'a pas été chargé. Vérifiez s'il existe des Plan Baselines pour votre instruction (utilisez le script set echo on select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*LOAD_AUTO*/%'; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 170
191 Exercice 10-1 : Utiliser SQL Plan Management (suite) no rows selected 5) Exécutez de nouveau l'interrogation de l'étape 3 set echo on select /*LOAD_AUTO*/ * from sh.sales where quantity_sold > 40 order by prod_id; no rows selected 6) L'instruction SQL est désormais identifiée comme reproductible et un Plan Baseline est automatiquement capturé. Vérifiez que le Plan Baseline a été chargé pour l'instruction précédente. Qu'observez-vous? a) D'après le résultat, vous pouvez constater qu'un Plan Baseline a été créé et activé pour cette instruction SQL. Vous pouvez également constater que ce plan a été capturé automatiquement en vérifiant les valeurs de la colonne d'origine (utilisez le script check_baselines.sql) set echo on select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*LOAD_AUTO*/%'; SIGNATURE SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT E+18 SYS_SQL_6fe28d438dfc352f select /*LOAD_AUTO*/ * from sh.sales where quantity_sold > 40 order by prod_id SQL_PLAN_6zsnd8f6zsd9g54bc8843 AUTO-CAPTURE YES YES NO YES 7) Maintenant, modifiez le mode de l'optimiseur de façon à utiliser l'optimisation FIRST_ROWS et exécutez de nouveau votre instruction. Décrivez ce qui s'est passé : a) Le code ci-après commande à l'instruction SQL de s'exécuter avec un plan différent : alter session set optimizer_mode = first_rows; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 171
192 Exercice 10-1 : Utiliser SQL Plan Management (suite) Session set echo on select /*LOAD_AUTO*/ * from sh.sales where quantity_sold > 40 order by prod_id; no rows selected b) Comme l'instruction SQL va être associée à un nouveau plan, un autre Plan Baseline est automatiquement capturé. Vous pouvez en avoir la confirmation en vérifiant de nouveau le Plan Baseline set echo on select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*LOAD_AUTO*/%'; SIGNATURE SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT E+18 SYS_SQL_6fe28d438dfc352f select /*LOAD_AUTO*/ * from sh.sales where quantity_sold > 40 order by prod_id SQL_PLAN_6zsnd8f6zsd9g11df68d0 AUTO-CAPTURE YES NO NO YES E+18 SYS_SQL_6fe28d438dfc352f select /*LOAD_AUTO*/ * from sh.sales where quantity_sold > 40 order by prod_id SQL_PLAN_6zsnd8f6zsd9g54bc8843 AUTO-CAPTURE YES YES NO YES SIGNATURE SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT c) Vous pouvez désormais voir deux Plan Baselines pour votre interrogation et constater que le deuxième plan n'a pas été accepté. Ce nouveau plan devra être validé avant de pouvoir être utilisé. 8) Ensuite, réaffectez au mode de l'optimiseur ses valeurs par défaut et désactivez la capture automatique des Plan Baselines. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 172
193 Exercice 10-1 : Utiliser SQL Plan Management (suite) alter session set optimizer_mode = all_rows; Session altered. alter session set optimizer_capture_sql_plan_baselines = FALSE; Session altered. 9) Maintenant, purgez les Plan Baselines et vérifiez que le SQL Plan Baseline est vide. Pour cela, utilisez purge_auto_baseline.sql set echo on variable cnt number; exec :cnt := dbms_spm.drop_sql_plan_baseline('sys_sql_6fe28d438dfc352f'); PL/SQL procedure successfully completed. exec :cnt := dbms_spm.drop_sql_plan_baseline('sys_sql_396e2e2b6cb3e334'); BEGIN :cnt := dbms_spm.drop_sql_plan_baseline('sys_sql_396e2e2b6cb3e334'); END; * ERROR at line 1: ORA-38131: specified SQL handle SYS_SQL_396e2e2b6cb3e334 does not exist ORA-06512: at "SYS.DBMS_SPM", line 2524 ORA-06512: at line 1 select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge 2 from dba_sql_plan_baselines 3 where sql_text like 'select /*LOAD_AUTO*/%'; no rows selected 10) Maintenant, vous allez voir comment charger des plans à partir de SQL Tuning Sets. Tout en restant connecté à votre session SQL*Plus, vérifiez le plan d'exécution de l'instruction SQL suivante puis exécutez-la (utilisez explain_query2.sql et query2.sql) : select /*LOAD_STS*/ * from sh.sales where quantity_sold > 40 order by set echo on Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 173
194 Exercice 10-1 : Utiliser SQL Plan Management (suite) explain plan for 2 select /*LOAD_STS*/ * from sh.sales where quantity_sold > 40 order by prod_id; Explained. select * from table(dbms_xplan.display(null,null,'basic')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name SELECT STATEMENT 1 SORT ORDER BY 2 PARTITION RANGE ALL 3 TABLE ACCESS FULL SALES rows set echo on select /*LOAD_STS*/ * from sh.sales where quantity_sold > 40 order by prod_id; no rows selected 11) Modifiez le mode de l'optimiseur de façon à utiliser l'optimisation FIRST_ROWS, vérifiez le plan d'exécution et exécutez de nouveau l'interrogation. alter session set optimizer_mode = first_rows; Session set echo on explain plan for 2 select /*LOAD_STS*/ * from sh.sales where quantity_sold > 40 order by prod_id; Explained. select * from table(dbms_xplan.display(null,null,'basic')); Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 174
195 Exercice 10-1 : Utiliser SQL Plan Management (suite) PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name SELECT STATEMENT 1 SORT ORDER BY 2 PARTITION RANGE ALL 3 TABLE ACCESS BY LOCAL INDEX ROWID SALES 4 BITMAP CONVERSION TO ROWIDS 5 BITMAP INDEX FULL SCAN SALES_PROMO_BIX PLAN_TABLE_OUTPUT rows set echo on select /*LOAD_STS*/ * from sh.sales where quantity_sold > 40 order by prod_id; no rows selected 12) Réaffectez la valeur ALL_ROWS au mode d'optimisation : alter session set optimizer_mode = all_rows; Session altered. 13) Vérifiez qu'il n'existe actuellement aucun Plan Baseline pour votre instruction (utilisez le script check_baselines2.sql) set echo on select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*LOAD_STS*/%'; no rows selected Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 175
196 Exercice 10-1 : Utiliser SQL Plan Management (suite) 14) Créez un SQL Tuning Set qui capture les instructions SELECT contenant le conseil (hint) LOAD_STS. Ces instructions se trouvent dans le cache de curseur. Le STS doit s'appeler SPM_STS et avoir l'utilisateur SPM comme propriétaire. Pour capturer ces instructions, utilisez le script set echo on exec sys.dbms_sqltune.create_sqlset(sqlset_name => 'SPM_STS', sqlset_owner => 'SPM'); PL/SQL procedure successfully completed. DECLARE 2 stscur dbms_sqltune.sqlset_cursor; 3 BEGIN 4 OPEN stscur FOR 5 SELECT VALUE(P) 6 FROM TABLE(dbms_sqltune.select_cursor_cache( 7 'sql_text like ''select /*LOAD_STS*/%''', 8 null, null, null, null, null, null, 'ALL')) P; populate the sqlset 11 dbms_sqltune.load_sqlset(sqlset_name => 'SPM_STS', 12 populate_cursor => stscur, 13 sqlset_owner => 'SPM'); 14 END; 15 / PL/SQL procedure successfully completed. 15) Vérifiez les instructions SQL capturées dans SPM_STS (utilisez le script check_sts.sql) : a) Vous pouvez ainsi constater que SPM_STS contient votre instruction SQL avec deux plans set echo on select sql_text from dba_sqlset_statements where sqlset_name='spm_sts'; SQL_TEXT select /*LOAD_STS*/ * from sh.sales where quantity_sold > 40 order by prod_id select /*LOAD_STS*/ * from sh.sales where quantity_sold > 40 order by prod_id Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 176
197 Exercice 10-1 : Utiliser SQL Plan Management (suite) 16) Alimentez le référentiel du Plan Baseline avec les plans trouvés dans SPM_STS. Pour cela, utilisez le script populate_baseline.sql set echo on variable cnt number; execute :cnt := dbms_spm.load_plans_from_sqlset( - > sqlset_name => 'SPM_STS', - > basic_filter => 'sql_text like ''select /*LOAD_STS*/%'''); PL/SQL procedure successfully completed. 17) Vérifiez que les Plan Baselines ont été chargés et relevez la valeur de la colonne d'origine. Qu'observez-vous? (Utilisez check_baselines2.sql.) a) Vous devez voir la valeur MANUAL-LOAD car vous avez chargé ces plans manuellement. Vous pouvez également constater que, cette fois, les deux plans ont été set echo on select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*LOAD_STS*/%'; SIGNATURE SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT E+19 SYS_SQL_a8632bd857a4a25e select /*LOAD_STS*/ * from sh.sales where quantity_sold > 40 order by prod_id SQL_PLAN_ahstbv1bu98ky11df68d0 MANUAL-LOAD YES YES NO YES E+19 SYS_SQL_a8632bd857a4a25e select /*LOAD_STS*/ * from sh.sales where quantity_sold > 40 order by prod_id SQL_PLAN_ahstbv1bu98ky54bc8843 MANUAL-LOAD YES YES NO YES SIGNATURE SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 177
198 Exercice 10-1 : Utiliser SQL Plan Management (suite) ) Purgez les Plan Baselines et supprimez SPM_STS. Pour cela, utilisez le script purge_sts_baseline.sql set echo on variable cnt number; exec :cnt := dbms_spm.drop_sql_plan_baseline('sys_sql_a8632bd857a4a25e'); PL/SQL procedure successfully completed. print cnt; CNT select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge 2 from dba_sql_plan_baselines 3 where sql_text like 'select /*LOAD_STS*/%'; no rows selected exec sys.dbms_sqltune.drop_sqlset(sqlset_name => 'SPM_STS', - > sqlset_owner => 'SPM'); PL/SQL procedure successfully completed. 19) Maintenant, nous allons voir comment charger des Plan Baselines directement depuis le cache de curseur. Avant de commencer, vous devez charger certaines instructions SQL. Tout en restant connecté à la session SQL*Plus, vérifiez le plan d'exécution de l'instruction SQL suivante puis exécutez-la (utilisez les scripts explain_query3.sql et query3.sql) : select /*LOAD_CC*/ * from sh.sales where quantity_sold > 40 order by set echo on explain plan for Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 178
199 Exercice 10-1 : Utiliser SQL Plan Management (suite) 2 select /*LOAD_CC*/ * from sh.sales where quantity_sold > 40 order by prod_id; Explained. select * from table(dbms_xplan.display(null,null,'basic')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name SELECT STATEMENT 1 SORT ORDER BY 2 PARTITION RANGE ALL 3 TABLE ACCESS FULL SALES rows set echo on select /*LOAD_CC*/ * from sh.sales where quantity_sold > 40 order by prod_id; no rows selected 20) Ensuite, modifiez le mode de l'optimiseur de façon à utiliser l'optimisation FIRST_ROWS et exécutez de nouveau l'étape précédente. Qu'observez-vous? a) Vous devez voir un plan d'exécution différent : alter session set optimizer_mode = first_rows; Session set echo on explain plan for 2 select /*LOAD_CC*/ * from sh.sales where quantity_sold > 40 order by prod_id; Explained. select * from table(dbms_xplan.display(null,null,'basic')); Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 179
200 Exercice 10-1 : Utiliser SQL Plan Management (suite) PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name SELECT STATEMENT 1 SORT ORDER BY 2 PARTITION RANGE ALL 3 TABLE ACCESS BY LOCAL INDEX ROWID SALES 4 BITMAP CONVERSION TO ROWIDS 5 BITMAP INDEX FULL SCAN SALES_PROMO_BIX PLAN_TABLE_OUTPUT rows set echo on select /*LOAD_CC*/ * from sh.sales where quantity_sold > 40 order by prod_id; no rows selected 21) Réaffectez la valeur ALL_ROWS au mode d'optimisation : alter session set optimizer_mode = all_rows; Session altered. 22) Maintenant que le cache de curseur est alimenté, vous devez rechercher le SQL ID de votre instruction SQL. Utilisez le SQL ID pour filtrer le contenu du cache de curseur et charger les Plan Baselines avec ces deux plans. Pour cela, utilisez le script load_cc_baseline.sql set echo on variable cnt number; variable sqlid varchar2(20); begin Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 180
201 Exercice 10-1 : Utiliser SQL Plan Management (suite) 2 select distinct sql_id into :sqlid from v$sql where sql_text like 'select /*LOAD_CC*/%'; 3 end; 4 / PL/SQL procedure successfully completed. print sqlid; SQLID qx77nb12bh6z execute :cnt := dbms_spm.load_plans_from_cursor_cache(sql_id => :sqlid); PL/SQL procedure successfully completed. 23) Vérifiez que les Plan Baselines ont été chargés (utilisez check_baselines3.sql.) set echo on select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge from dba_sql_plan_baselines where sql_text like 'select /*LOAD_CC*/%'; SIGNATURE SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT E+19 SYS_SQL_f6cb7f742ef93547 select /*LOAD_CC*/ * from sh.sales where quantity_sold > 40 order by prod_id SQL_PLAN_gdkvzfhrgkda711df68d0 MANUAL-LOAD YES YES NO YES E+19 SYS_SQL_f6cb7f742ef93547 select /*LOAD_CC*/ * from sh.sales where quantity_sold > 40 order by prod_id SQL_PLAN_gdkvzfhrgkda754bc8843 MANUAL-LOAD YES YES NO YES SIGNATURE SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 181
202 Exercice 10-1 : Utiliser SQL Plan Management (suite) 24) Purgez les Plan Baselines set echo on variable cnt number; exec :cnt := dbms_spm.drop_sql_plan_baseline('sys_sql_f6cb7f742ef93547'); PL/SQL procedure successfully completed. print cnt; CNT REM Check that plan baselines were purged: select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge 2 from dba_sql_plan_baselines 3 where sql_text like 'select /*LOAD_CC*/%'; no rows selected 25) Maintenant que vous savez comment capturer des plans, vous allez voir comment l'optimiseur sélectionne les Plan Baselines à utiliser. Commencez par créer deux Plan Baselines pour une instruction et regardez-les fonctionner. Ensuite, désactivez l'un des Plan Baselines et observez le fonctionnement de l'autre. Enfin, désactivez les deux Plan Baselines pour constater que l'optimiseur reprend le comportement par défaut d'un plan basé sur le coût. Pour commencer, exécutez la même interrogation deux fois avec des plans différents. Déterminez le plan d'exécution des instructions suivantes (utilisez les scripts explain_query4.sql et query4.sql) : select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by set echo on explain plan for 2 select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id; Explained. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 182
203 Exercice 10-1 : Utiliser SQL Plan Management (suite) select * from table(dbms_xplan.display(null,null,'basic')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name SELECT STATEMENT 1 SORT ORDER BY 2 PARTITION RANGE ALL 3 TABLE ACCESS FULL SALES rows set echo on select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id; no rows selected 26) Ensuite, modifiez le mode de l'optimiseur de façon à utiliser l'optimisation FIRST_ROWS et exécutez de nouveau l'étape précédente. Qu'observez-vous? a) Vous devez voir un plan d'exécution différent : alter session set optimizer_mode = first_rows; Session set echo on explain plan for 2 select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id; Explained. select * from table(dbms_xplan.display(null,null,'basic')); PLAN_TABLE_OUTPUT Plan hash value: Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 183
204 Exercice 10-1 : Utiliser SQL Plan Management (suite) Id Operation Name SELECT STATEMENT 1 SORT ORDER BY 2 PARTITION RANGE ALL 3 TABLE ACCESS BY LOCAL INDEX ROWID SALES 4 BITMAP CONVERSION TO ROWIDS 5 BITMAP INDEX FULL SCAN SALES_PROMO_BIX PLAN_TABLE_OUTPUT rows set echo on select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id; no rows selected 27) Réaffectez la valeur ALL_ROWS au mode d'optimisation : alter session set optimizer_mode = all_rows; Session altered. 28) Alimentez le Plan Baseline avec les deux plans de votre instruction directement depuis le cache de curseur. Pour cela, utilisez le script load_use_baseline.sql. Ensuite, vérifiez que les Plan Baselines ont été chargés. Qu'observez-vous? a) Vous devriez voir les deux Plan Baselines chargés. Vous pouvez constater que les deux plans sont marqués comme acceptables. En effet, les deux plans étaient contenus dans le cache de curseur au moment du chargement et ils ont été chargés set echo on variable cnt number; variable sqlid varchar2(20); begin 2 select distinct sql_id into :sqlid from v$sql where sql_text like 'select /*SPM_USE*/%'; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 184
205 Exercice 10-1 : Utiliser SQL Plan Management (suite) 3 end; 4 / PL/SQL procedure successfully completed. print sqlid; SQLID gudfs2kqb90sz execute :cnt := dbms_spm.load_plans_from_cursor_cache(sql_id => :sqlid); PL/SQL procedure successfully completed. print cnt; CNT select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge 2 from dba_sql_plan_baselines 3 where sql_text like 'select /*SPM_USE*/%'; SIGNATURE SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT E+17 SYS_SQL_0a9d872600ece455 select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id SQL_PLAN_0p7c74s0ftt2p11df68d0 MANUAL-LOAD YES YES NO YES E+17 SYS_SQL_0a9d872600ece455 select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id SQL_PLAN_0p7c74s0ftt2p54bc8843 MANUAL-LOAD YES YES NO YES SIGNATURE SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 185
206 Exercice 10-1 : Utiliser SQL Plan Management (suite) 29) Déterminez la ligne de base et le plan d'exécution de l'interrogation suivante : select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id. Qu'observez-vous? a) Le commentaire situé à la fin du résultat de l'exécution vous indique que le système utilise un Plan Baseline. Dans le plan d'exécution, vous pouvez voir que vous utilisez le premier Plan Baseline, en utilisant un balayage complet de table (full table scan). Utilisez le script set echo on explain plan for 2 select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id; Explained. select * from table(dbms_xplan.display(null,null,'basic +note')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name SELECT STATEMENT 1 SORT ORDER BY 2 PARTITION RANGE ALL 3 TABLE ACCESS FULL SALES PLAN_TABLE_OUTPUT Remarque SQL plan baseline "SQL_PLAN_0p7c74s0ftt2p54bc8843" used for this statement 14 rows selected. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 186
207 Exercice 10-1 : Utiliser SQL Plan Management (suite) 30) Désactivez ce Plan Baseline et assurez-vous que le système utilise le deuxième Plan Baseline pour réexécuter l'instruction. Pour cela, utilisez le script check_baseline_used.sql. Qu'observez-vous? a) Dans le plan d'exécution, vous pouvez constater que vous utilisez un balayage d'index plutôt qu'un balayage complet de table. Il s'agit donc bien du deuxième Plan set echo on variable cnt number; select sql_handle,plan_name 2 from dba_sql_plan_baselines 3 where sql_text like 'select /*SPM_USE*/%'; SQL_HANDLE PLAN_NAME SYS_SQL_0a9d872600ece455 SQL_PLAN_0p7c74s0ftt2p11df68d0 SYS_SQL_0a9d872600ece455 SQL_PLAN_0p7c74s0ftt2p54bc8843 exec :cnt := dbms_spm.alter_sql_plan_baseline( - > sql_handle => 'SYS_SQL_0a9d872600ece455', - > plan_name => 'SQL_PLAN_0p7c74s0ftt2p54bc8843', - > attribute_name => 'ENABLED', - > attribute_value => 'NO'); PL/SQL procedure successfully completed. select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge 2 from dba_sql_plan_baselines 3 where sql_text like 'select /*SPM_USE*/%'; SIGNATURE SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT E+17 SYS_SQL_0a9d872600ece455 select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id SQL_PLAN_0p7c74s0ftt2p11df68d0 MANUAL-LOAD YES YES NO YES E+17 SYS_SQL_0a9d872600ece455 select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 187
208 Exercice 10-1 : Utiliser SQL Plan Management (suite) SQL_PLAN_0p7c74s0ftt2p54bc8843 MANUAL-LOAD NO YES NO YES SIGNATURE SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT explain plan for select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id; Explained. select * from table(dbms_xplan.display(null, null, 'basic +note')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name SELECT STATEMENT 1 SORT ORDER BY 2 PARTITION RANGE ALL 3 TABLE ACCESS BY LOCAL INDEX ROWID SALES 4 BITMAP CONVERSION TO ROWIDS 5 BITMAP INDEX FULL SCAN SALES_PROMO_BIX PLAN_TABLE_OUTPUT Remarque SQL plan baseline "SQL_PLAN_0p7c74s0ftt2p11df68d0" used for this statement 16 rows selected. 31) Désactivez le deuxième Plan Baseline et vérifiez que le système revient à une méthode basée sur le coût pour réexécuter le plan d'exécution de l'instruction. Pour cela, utilisez le script check_baseline_used2.sql : Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 188
209 Exercice 10-1 : Utiliser SQL Plan Management (suite) a) Vous pouvez déduire que l'optimiseur est revenu à la méthode par défaut basée sur le coût car il n'existe aucun commentaire à la fin du plan indiquant qu'un Plan Baseline a été set echo on variable cnt number; exec :cnt := dbms_spm.alter_sql_plan_baseline( - > sql_handle => 'SYS_SQL_0a9d872600ece455', - > plan_name => 'SQL_PLAN_0p7c74s0ftt2p11df68d0', - > attribute_name => 'ENABLED', - > attribute_value => 'NO'); PL/SQL procedure successfully completed. select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge 2 from dba_sql_plan_baselines 3 where sql_text like 'select /*SPM_USE*/%'; SIGNATURE SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT E+17 SYS_SQL_0a9d872600ece455 select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id SQL_PLAN_0p7c74s0ftt2p11df68d0 MANUAL-LOAD NO YES NO YES E+17 SYS_SQL_0a9d872600ece455 select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id SQL_PLAN_0p7c74s0ftt2p54bc8843 MANUAL-LOAD NO YES NO YES SIGNATURE SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT explain plan for select /*SPM_USE*/ * from sh.sales where quantity_sold > 40 order by prod_id; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 189
210 Exercice 10-1 : Utiliser SQL Plan Management (suite) Explained. select * from table(dbms_xplan.display(null, null, 'basic +note')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name SELECT STATEMENT 1 SORT ORDER BY 2 PARTITION RANGE ALL 3 TABLE ACCESS FULL SALES rows selected. 32) Supprimez les Plan Baselines et vérifiez qu'ils ont été purgés. Pour cela, utilisez le script set echo on variable cnt number; exec :cnt := dbms_spm.drop_sql_plan_baseline('sys_sql_0a9d872600ece455'); PL/SQL procedure successfully completed. print cnt; CNT select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge 2 from dba_sql_plan_baselines 3 where sql_text like 'select /*SPM_USE*/%'; no rows selected Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 190
211 Exercice 10-1 : Utiliser SQL Plan Management (suite) 33) Pour activer l'évolution (ou la vérification) des plans, vous pouvez utiliser la tâche prédéfinie Automatic SQL Tuning qui s'exécute dans une fenêtre de maintenance. Cette tâche cible uniquement les instructions SQL à forte consommation de ressources pour lesquelles elle implémente automatiquement des actions permettant, par exemple, d'affecter le statut "accepté" à un plan vérifié avec succès. A ce stade, vous allez déclencher manuellement le réglage SQL pour rechercher un plan plus performant pour une instruction SQL donnée. Tout d'abord, déterminez le plan d'exécution de l'instruction suivante : select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) from sh.sales s, sh.customers c where s.cust_id = c.cust_id and c.cust_id < 2 group by c.cust_id Certains conseils de l'optimiseur sont ajoutés aux instructions de sorte que le premier plan obtenu ne soit pas optimal. Pour cela, utilisez le script check_evolve_plan.sql. Qu'observez-vous? a) Comme vous pouvez le constater, les conseils imposent au plan d'exécution de se composer de deux balayages complets de table (full table scans), suivis d'une jointure en boucle imbriquée (nested loop set echo on explain plan for 2 select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) 3 from sh.sales s, sh.customers c 4 where s.cust_id = c.cust_id and c.cust_id < 2 5 group by c.cust_id; Explained. select * from table(dbms_xplan.display(null, null)); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name Rows Bytes Cost (%CPU) Time Pstart Pstop Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 191
212 Exercice 10-1 : Utiliser SQL Plan Management (suite) PLAN_TABLE_OUTPUT SELECT STATEMENT (2) 00:00:1 1 1 HASH GROUP BY (2) 00:00:1 1 2 NESTED LOOPS (2) 00:00:1 1 * 3 TABLE ACCESS FULL CUSTOMERS (1) 00:00:0 5 PLAN_TABLE_OUTPUT PARTITION RANGE ALL (3) 00:00: * 5 TABLE ACCESS FULL SALES (3) 00:00: PLAN_TABLE_OUTPUT Predicate Information (identified by operation id): filter("c"."cust_id"<2) 5 - filter("s"."cust_id"<2 AND "S"."CUST_ID"="C"."CUST_ID") 18 rows selected. 34) Ensuite, exécutez l'instruction de façon à placer le plan dans le cache de curseur et chargez le Plan Baseline correspondant. Pour cela, utilisez le script load_evolve_baseline.sql. Qu'observez-vous? Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 192
213 Exercice 10-1 : Utiliser SQL Plan Management (suite) a) Vous pouvez constater que le plan actuel est à la fois activé et accepté, mais pas set echo on variable cnt number; variable sqlid varchar2(20); select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) 2 from sh.sales s, sh.customers c 3 where s.cust_id = c.cust_id and c.cust_id < 2 4 group by c.cust_id; no rows selected begin 2 select sql_id into :sqlid from v$sql where sql_text like 'select /*+ USE_NL(s c) FULL(s) FULL(c) */%'; 3 end; 4 / PL/SQL procedure successfully completed. execute :cnt := dbms_spm.load_plans_from_cursor_cache(sql_id => :sqlid); PL/SQL procedure successfully completed. select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge 2 from dba_sql_plan_baselines 3 where sql_text like 'select /*+ USE_NL(s c) FULL(s) FULL(c) */%'; SIGNATURE SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT E+18 SYS_SQL_18a1ef14c17f5b75 select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) from s SQL_PLAN_1j8gg2m0ryqvpdc5f94e5 MANUAL-LOAD YES YES NO YES Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 193
214 Exercice 10-1 : Utiliser SQL Plan Management (suite) 35) Créez et exécutez manuellement une tâche de réglage SQL pour régler votre instruction. Pour cela, utilisez le script set echo on variable sqltext varchar2(4000); BEGIN 2 :sqltext := q'# select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) 3 from sh.sales s, sh.customers c 4 where s.cust_id = c.cust_id 5 and c.cust_id < 2 6 group by c.cust_id 7 #'; 8 END; 9 / PL/SQL procedure successfully completed. variable spmtune varchar2(30); exec :spmtune := dbms_sqltune.create_tuning_task(sql_text => :sqltext); PL/SQL procedure successfully completed. exec dbms_sqltune.execute_tuning_task(:spmtune); PL/SQL procedure successfully completed. 36) Une fois la tâche de réglage terminée, générez l'état et consultez les recommandations prescrites pour votre instruction. Qu'observez-vous? a) Il y a deux recommandations : un profil SQL ou une nouvelle création d'index. Utilisez le script set echo on set long select dbms_sqltune.report_tuning_task(:spmtune,'text') from dual; DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 194
215 Exercice 10-1 : Utiliser SQL Plan Management (suite) GENERAL INFORMATION SECTION Tuning Task Name : TASK_163 Tuning Task Owner : SPM Workload Type : Single SQL Statement Scope : COMPREHENSIVE Time Limit(seconds): 1800 Completion Status : COMPLETED Started at : 06/19/ :54:47 Completed at : 06/19/ :54:53 DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') Schema Name: SPM SQL ID : dgs41cdr4t7q2 SQL Text : select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) from sh.sales s, sh.customers c where s.cust_id = c.cust_id and c.cust_id < 2 group by c.cust_id DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') FINDINGS SECTION (2 findings) SQL Profile Finding (see explain plans section below) A potentially better execution plan was found for this statement. Recommendation (estimated benefit: 98.47%) Consider accepting the recommended SQL profile. A SQL plan baseline DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') corresponding to the plan with the SQL profile will also be created. execute dbms_sqltune.accept_sql_profile(task_name => 'TASK_163', task_owner => 'SPM', replace => TRUE); Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 195
216 Exercice 10-1 : Utiliser SQL Plan Management (suite) Validation results The SQL profile was tested by executing both its plan and the original plan and measuring their respective execution statistics. A plan may have been only partially executed if the other could be run to completion in less time. Improved Original Plan With SQL Profile % DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') Completion Status: COMPLETE COMPLETE Elapsed Time(us): % CPU Time(us): % User I/O Time(us): 0 0 Buffer Gets: % Physical Read Requests: 0 0 Physical Write Requests: 0 0 Physical Read Bytes: 0 0 Physical Write Bytes: 0 0 Rows Processed: 0 0 DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') Fetches: 0 0 Executions: 1 1 Notes The original plan was first executed to warm the buffer cache. 2. Statistics for original plan were averaged over next 4 executions. 3. The SQL profile plan was first executed to warm the buffer cache. 4. Statistics for the SQL profile plan were averaged over next 9 executions. 2- Index Finding (see explain plans section below) DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') The execution plan of this statement can be improved by creating one or more indices. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 196
217 Exercice 10-1 : Utiliser SQL Plan Management (suite) Recommendation (estimated benefit: 90.98%) Consider running the Access Advisor to improve the physical schema design or creating the recommended index. create index SH.IDX$$_00A30001 on SH.SALES("CUST_ID"); Rationale DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') Creating the recommended indices significantly improves the execution plan of this statement. However, it might be preferable to run "Access Advisor" using a representative SQL workload as opposed to a single statement. This will allow to get comprehensive index recommendations which takes into account index maintenance overhead and additional space consumption EXPLAIN PLANS SECTION DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') Original With Adjusted Cost Plan hash value: Id Operation Name Rows Bytes Cost (%CPU) Time Pstart Pstop SELECT STATEMENT (2) 00:00:1 DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') HASH GROUP BY (2) 00:00:1 1 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 197
218 Exercice 10-1 : Utiliser SQL Plan Management (suite) 2 NESTED LOOPS (2) 00:00:1 1 * 3 TABLE ACCESS FULL CUSTOMERS (1) 00:00:0 5 4 PARTITION RANGE ALL (3) 00:00: * 5 TABLE ACCESS FULL SALES (3) 00:00: DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') Predicate Information (identified by operation id): filter("c"."cust_id"<2) 5 - filter("s"."cust_id"<2 AND "S"."CUST_ID"="C"."CUST_ID") 2- Using SQL Profile DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') Plan hash value: Id Operation Name Rows Bytes Cost (%CPU) Time Pstart Pstop SELECT STATEMENT (2) 00:00:01 1 HASH GROUP BY 1 13 DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') (2) 00:00:01 2 NESTED LOOPS (0) 00:00:01 3 PARTITION RANGE ALL (0) 00:00: Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 198
219 Exercice 10-1 : Utiliser SQL Plan Management (suite) 4 TABLE ACCESS BY LOCAL INDEX ROWID SALES (0) 00:00: BITMAP CONVERSION TO ROWIDS * 6 BITMAP INDEX RANGE SCAN SALES_CUST_BIX 1 28 DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') * 7 INDEX UNIQUE SCAN CUSTOMERS_PK (0) 00:00: Predicate Information (identified by operation id): access("s"."cust_id"<2) filter("s"."cust_id"<2) 7 - access("s"."cust_id"="c"."cust_id") DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') filter("c"."cust_id"<2) 3- Using New Indices Plan hash value: Id Operation Name Rows Bytes Cost (%CPU) Time Pstart Pstop DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') SELECT STATEMENT (0) 00:00:01 1 SORT GROUP BY NOSORT (0) 00:00:01 2 NESTED LOOPS Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 199
220 Exercice 10-1 : Utiliser SQL Plan Management (suite) 3 NESTED LOOPS (0) 00:00:01 * 4 INDEX RANGE SCAN CUSTOMERS_PK (0) 00:00:01 DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') * 5 INDEX RANGE SCAN IDX$$_00A (0) 00:00:01 6 TABLE ACCESS BY GLOBAL INDEX ROWID SALES (0) 00:00:01 ROWID ROWID Predicate Information (identified by operation id): access("c"."cust_id"<2) DBMS_SQLTUNE.REPORT_TUNING_TASK(:SPMTUNE,'TEXT') access("s"."cust_id"="c"."cust_id") filter("s"."cust_id"<2) ) Acceptez le profil SQL proposé par SQL Tuning Advisor. Pour cela, utilisez le script accept_evolve_baseline.sql. Que se passe t-il? a) Si vous acceptez le profil, un profil SQL et un Plan Baseline sont créés pour votre instruction. Vous pouvez constater qu'il existe désormais deux Plan Baselines pour votre instruction. Ils sont tous les deux activés et acceptés. Remarque : L'un est MANUAL-LOAD et l'autre est set echo on select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge 2 from dba_sql_plan_baselines 3 where sql_text like 'select /*+ USE_NL(s c) FULL(s) FULL(c) */%'; SIGNATURE SQL_HANDLE SQL_TEXT Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 200
221 Exercice 10-1 : Utiliser SQL Plan Management (suite) PLAN_NAME ORIGIN ENA ACC FIX AUT E+18 SYS_SQL_18a1ef14c17f5b75 select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) from sh.sales s, sh.customers c where s.cust_id = c.cust_id and c.cust_id < 2 group by c.cust_id SQL_PLAN_1j8gg2m0ryqvpdc5f94e5 MANUAL-LOAD YES YES NO YES exec dbms_sqltune.accept_sql_profile(task_name => :spmtune, name => 'SPM_SQL_PROF'); PL/SQL procedure successfully completed. select signature, category, name, sql_text from dba_sql_profiles where name like 'SPM%'; SIGNATURE CATEGORY NAME SQL_TEXT E+18 DEFAULT SPM_SQL_PROF select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) from sh.sales s, sh.customers c where s.cust_id = c.cust_id and c.cust_id < 2 group by c.cust_id select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge 2 from dba_sql_plan_baselines 3 where sql_text like 'select /*+ USE_NL(s c) FULL(s) FULL(c) */%'; SIGNATURE SQL_HANDLE SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT E+18 SYS_SQL_18a1ef14c17f5b75 select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) from sh.sales s, sh.customers c where s.cust_id = c.cust_id and c.cust_id < 2 group by c.cust_id SQL_PLAN_1j8gg2m0ryqvpa10c1dcf MANUAL-SQLTUNE YES YES NO YES SIGNATURE SQL_HANDLE Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 201
222 Exercice 10-1 : Utiliser SQL Plan Management (suite) SQL_TEXT PLAN_NAME ORIGIN ENA ACC FIX AUT E+18 SYS_SQL_18a1ef14c17f5b75 select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) from sh.sales s, sh.customers c where s.cust_id = c.cust_id and c.cust_id < 2 group by c.cust_id SQL_PLAN_1j8gg2m0ryqvpdc5f94e5 MANUAL-LOAD YES YES NO YES 38) Déterminez le plan utilisé pour exécuter votre instruction. Qu'observez-vous? a) La prochaine exécution de l'interrogation utilisera le Plan Baseline et le profil SQL. Utilisez le script set echo on explain plan for 2 select /*+ USE_NL(s c) FULL(s) FULL(c) */ c.cust_id, sum(s.quantity_sold) 3 from sh.sales s, sh.customers c 4 where s.cust_id = c.cust_id and c.cust_id < 2 5 group by c.cust_id; Explained. select * from table(dbms_xplan.display(null, null, 'basic +note')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name SELECT STATEMENT 1 HASH GROUP BY 2 NESTED LOOPS 3 PARTITION RANGE ALL 4 TABLE ACCESS BY LOCAL INDEX ROWID SALES 5 BITMAP CONVERSION TO ROWIDS PLAN_TABLE_OUTPUT BITMAP INDEX RANGE SCAN SALES_CUST_BIX 7 INDEX UNIQUE SCAN CUSTOMERS_PK Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 202
223 Exercice 10-1 : Utiliser SQL Plan Management (suite) Remarque SQL profile "SPM_SQL_PROF" used for this statement - SQL plan baseline "SQL_PLAN_1j8gg2m0ryqvpa10c1dcf" used for this statement 19 rows selected. 39) Pour purger l'environnement de cet exercice, exécutez le script set echo on exec dbms_sqltune.drop_sql_profile(name => 'SPM_SQL_PROF'); PL/SQL procedure successfully completed. exec :cnt := dbms_spm.drop_sql_plan_baseline('sys_sql_18a1ef14c17f5b75'); PL/SQL procedure successfully completed. select signature, sql_handle, sql_text, plan_name, origin, enabled, accepted, fixed, autopurge 2 from dba_sql_plan_baselines 3 where sql_text like 'select /*+ USE_NL(s c) FULL(s) FULL(c) */%'; no rows selected select signature, category, name, sql_text from dba_sql_profiles where name like 'SPM%'; no rows selected exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 203
224 Exercices - Chapitre 11 Dans cet exercice, vous allez utiliser une petite application qui va mettre à jour une table utilisée comme point de départ pour vos sessions Database Replay. Cela vous permettra de limiter la quantité de ressources nécessaires à l'exécution de l'exercice. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 204
225 Exercice 11-1 : Utiliser Database Replay Dans cet exercice, vous allez capturer la charge globale (workload) d'une petite application à l'aide de Database Replay. Ensuite, vous allez la réexécuter automatiquement pour vérifier que vous obtenez le même résultat que lors de l'exécution initiale. Enfin, vous allez réexécuter votre charge globale mais en utilisant cette fois le mode non synchronisé. 1) Avant de commencer cet exercice, vous devez configurer son environnement. Exécutez le script wcr_init_grid.sh. Il appelle le script SQL wcr_demo_init_grid.sql qui crée l'utilisateur JFV et la table wcr_grid qui correspond à une grille 10x10 où chaque cellule représente une couleur. Au départ, le script initialise toutes les cellules de la grille en noir. $ cd /home/oracle/solutions/dbreplay $./wcr_init_grid.sh SQL*Plus: Release Production on Mon Oct 5 11:24: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options drop user jfv cascade * ERROR at line 1: ORA-01918: user 'JFV' does not exist 2 3 User created. Grant succeeded. Connected. drop table wcr_grid purge * ERROR at line 1: ORA-00942: table or view does not exist Table created PL/SQL procedure successfully completed. Commit complete. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 205
226 Exercice 11-1 : Utiliser Database Replay (suite) Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 2) Pour vérifier que l'exercice est configuré correctement, utilisez le script wcr_printgrid.sh pour imprimer le contenu actuel de la grille. Qu'observez-vous? a) Vous devez voir une grille 10x10 remplie avec la valeur bs. $./wcr_printgrid.sh SQL*Plus: Release Production on Mon Oct 5 11:26: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options SET SERVEROUTPUT ON declare 2 col varchar2(10); 3 begin 4 for i in 00,9 loop 5 for j in 00,9 loop 6 select substr(color,1,1) into col from wcr_grid where xcoor=i and ycoor=j; 7 dbms_output.put(col ' '); 8 end loop; 9 dbms_output.put_line(''); 10 end loop; 11 end; 12 / b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b PL/SQL procedure successfully completed. exit; Disconnected from Oracle Database 11g Enterprise Edition Release Production Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 206
227 Exercice 11-1 : Utiliser Database Replay (suite) With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 3) Pour utiliser Database Replay, vous devez créer un répertoire nommé OS qui va contenir tous les fichiers générés par la session de réexécution. Créez le répertoire /home/oracle/solutions/dbreplay dans votre système (n'utilisez pas DBReplay!). $ rm -rf /home/oracle/solutions/dbreplay $ mkdir -p /home/oracle/solutions/dbreplay $ 4) Vous devez également créer un objet répertoire Oracle pointant vers le répertoire OS que vous venez de créer. $. oraenv ORACLE_SID = [db10g]? orcl $ sqlplus system SQL*Plus: Release Production on Mon Oct 5 11:29: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Enter password: ********** Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options drop directory dbreplay; drop directory dbreplay * ERROR at line 1: ORA-04043: object DBREPLAY does not exist create or replace directory dbreplay as '/home/oracle/solutions/dbreplay'; Directory created. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 5) Effectuez les opérations décrites ci-après pour utiliser Database Replay. a) Connectez-vous à Enterprise Manager en tant qu'utilisateur SYS. Cliquez sur l'onglet Software and Support. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 207
228 Exercice 11-1 : Utiliser Database Replay (suite) b) Dans la sous-page Software and Support, cliquez sur le lien Database Replay de la section Real Application Testing. c) Dans la page Database Replay, cliquez sur l'icône Capture Workload située en regard de la ligne Capture Workload dans la colonne "Go to Task". d) Dans la page Capture Workload: Plan Environment, validez les deux prérequis et cliquez sur Next. e) Dans la page Capture Workload: Options, n'oubliez pas de sélectionner "Do not restart the database prior to capture" dans la section Database Restart Options. Vérifiez que le champ Filter Mode est défini avec la valeur Exclusion et que la table Excluded Sessions contient à la fois Oracle Management Service et Oracle Management Agent. Cliquez sur Next. f) Dans la page Capture Workload: Parameters, saisissez un nom de capture dans le champ Capture Name (par exemple, capturegrid1) et sélectionnez le répertoire de capture que vous avez créé précédemment (DBREPLAY) dans le champ Capture Directory. Cliquez sur Next. g) Dans la page Capture Workload: Schedule, choisissez un nom de travail dans le champ Job Name (par exemple, capturegrid1_job) et sélectionnez Immediately dans la section Job Schedule. h) Dans la section Job Credentials, saisissez oracle/oracle dans la section Host Credentials et sélectionnez "Save as Preferred Credentials". Cliquez sur Next. Dans la page Capture Workload: Review, cliquez sur Submit. i) Patientez dans la page Processing: Workload Capture. j) Vous êtes dirigé vers la page View Workload Capture dans laquelle vous devez voir le statut In Progress pour votre session de capture. k) De retour dans votre session de terminal, exécutez le script wcr_demo_workload.sh. Le script génère des sessions de base de données qui mettent à jour la grille avec différentes couleurs (rouge, vert, bleu, noir, jaune, orange et saumon) de façon aléatoire. Le script ne doit pas prendre plus de deux minutes. [oracle@edrsr40p1-orcl DBReplay]$./wcr_demo_workload.sh Mon Oct 5 11:38:48 UTC 2009 Connecting to the database...connecting... Connecting to the database...connecting... Connecting to the database...connecting... Connecting to the database...connecting... Connecting to the database...connecting... Connecting to the database...connecting... Connecting to the database...connecting... connected. connected. connected. connected. connected. connected. connected. Done. Done. Done. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 208
229 Exercice 11-1 : Utiliser Database Replay (suite) Done. Done. Done. Done. Mon Oct 5 11:39:56 UTC 2009 $ l) Pendant que le script s'exécute, consultez le répertoire /home/oracle/solutions/dbreplay dans une deuxième fenêtre de terminal. Vous devez voir les fichiers générés. $ ls -l /home/oracle/solutions/dbreplay total 8 drwxr oracle dba 4096 Oct 5 11:36 cap drwxr oracle dba 4096 Oct 5 11:36 capfiles -rw-r oracle dba 0 Oct 5 11:36 wcr_cap_00001.start $ $ ls -l /home/oracle/solutions/dbreplay/capfiles total 4 drwxr oracle dba 4096 Oct 5 11:36 inst1 $ $ ls -l /home/oracle/solutions/dbreplay/capfiles/inst1 total 44 drwxr-xr-x 2 oracle dba 4096 Oct 5 11:41 aa drwxr-xr-x 2 oracle dba 4096 Oct 5 11:36 ab drwxr-xr-x 2 oracle dba 4096 Oct 5 11:36 ac drwxr-xr-x 2 oracle dba 4096 Oct 5 11:36 ad drwxr-xr-x 2 oracle dba 4096 Oct 5 11:36 ae drwxr-xr-x 2 oracle dba 4096 Oct 5 11:36 af drwxr-xr-x 2 oracle dba 4096 Oct 5 11:36 ag drwxr-xr-x 2 oracle dba 4096 Oct 5 11:36 ah drwxr-xr-x 2 oracle dba 4096 Oct 5 11:36 ai drwxr-xr-x 2 oracle dba 4096 Oct 5 11:36 aj -rw-r--r-- 1 oracle dba 1198 Oct 5 11:36 wcr_cmqkrh rec $ $ ls -l /home/oracle/solutions/dbreplay/capfiles/inst1/aa total 980 -rw-r--r-- 1 oracle dba 982 Oct 5 11:36 wcr_cmqkth rec -rw-r oracle dba 1302 Oct 5 11:36 wcr_cmqkth rec -rw-r--r-- 1 oracle dba 1200 Oct 5 11:36 wcr_cmqkth rec -rw-r--r-- 1 oracle dba 1198 Oct 5 11:36 wcr_cmqkth rec -rw-r--r-- 1 oracle dba 1198 Oct 5 11:36 wcr_cmqkuh rec -rw-r--r-- 1 oracle dba 1199 Oct 5 11:36 wcr_cmqkvh rec -rw-r--r-- 1 oracle dba 1198 Oct 5 11:37 wcr_cmqkzh rec -rw-r--r-- 1 oracle dba 988 Oct 5 11:37 wcr_cmqkzh rec -rw-r--r-- 1 oracle dba 1210 Oct 5 11:37 wcr_cmqm5h000000c.rec -rw-r--r-- 1 oracle dba 982 Oct 5 11:37 wcr_cmqm9h000000d.rec -rw-r--r-- 1 oracle dba 1774 Oct 5 11:38 wcr_cmqpjh000000h.rec -rw-r--r-- 1 oracle dba 1293 Oct 5 11:38 wcr_cmqpph000000j.rec -rw-r--r-- 1 oracle dba Oct 5 11:39 wcr_cmqqah000000n.rec -rw-r--r-- 1 oracle dba Oct 5 11:39 wcr_cmqqah000000p.rec -rw-r--r-- 1 oracle dba Oct 5 11:39 wcr_cmqqbh000000q.rec -rw-r--r-- 1 oracle dba Oct 5 11:39 wcr_cmqqch000000r.rec -rw-r--r-- 1 oracle dba Oct 5 11:39 wcr_cmqqfh000000s.rec -rw-r--r-- 1 oracle dba Oct 5 11:39 wcr_cmqqfh000000t.rec -rw-r--r-- 1 oracle dba Oct 5 11:39 wcr_cmqqfh000000u.rec Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 209
230 Exercice 11-1 : Utiliser Database Replay (suite) -rw-r--r-- 1 oracle dba 2973 Oct 5 11:41 wcr_cmqubh000000x.rec -rw-r--r-- 1 oracle dba 2790 Oct 5 11:41 wcr_cmquch000000y.rec $ $ ls -l /home/oracle/solutions/dbreplay/cap total 4 -rw-r oracle dba 206 Oct 5 11:36 wcr_scapture.wmd $ m) Patientez jusqu'à la fin de l'exécution de la charge globale de l'étape k. n) Retournez dans la page Enterprise Manager View Workload Capture et cliquez sur Stop Capture. o) Dans la page Confirmation, cliquez sur Yes. p) Patientez dans la page Processing: Stop Capture. q) Lorsque vous accédez à la page Export AWR Data, cliquez sur No. r) Dans la page View Workload Capture, vous devez voir les statistiques actualisées indiquant la durée d'exécution de la base de données (Database Time), le nombre moyen de sessions actives (Average Active Sessions), les erreurs (Application Errors), les connexions (Session Logins), les transactions (Transactions) et les appels utilisateur (User Calls). Notez ces statistiques. (Vous pouvez aussi cliquer sur View Workload Capture Report. Etant donné que Firefox bloque les fenêtres en incrustation, cliquez sur Preferences, autorisez les fenêtres en incrustation et cliquez sur Save to File pour générer un état HTML.) Cliquez ensuite sur OK. Vous revenez à la page Database Replay. s) Dans votre session de terminal, consultez les résultats de la charge globale en exécutant le script wcr_printgrid.sh. Notez les couleurs obtenues dans la grille. Vous utiliserez ces informations ultérieurement pour vérifier que la session de réexécution s'est exécutée correctement. Conservez le résultat de votre session ou exécutez CREATE TABLE modified_grid AS SELECT * FROM jfv.wcr_grid; t) De retour dans la page Database Replay, cliquez sur l'icône Preprocess Workload située en regard de la ligne Process Workload dans la colonne "Go to Task". u) Dans la page Preprocess Captured Workload, sélectionnez le répertoire de capture (DBREPLAY). Vous devez voir le statut Completed dans la section Capture Summary de la page. Cliquez sur Preprocess Workload. v) Dans la page Preprocess Captured Workload: Database Version, cliquez sur Next. w) Dans la page Preprocess Captured Workload: Schedule, saisissez un nom de travail (par exemple, process_capturegrid1), vérifiez que Immediately est sélectionné et, le cas échéant, indiquez les informations d'identification et de connexion à l'hôte (oracle/oracle) dans la section Host Credentials. Lorsque vous avez terminé, cliquez sur Next. x) Dans la page Preprocess Captured Workload: Review, cliquez sur Submit. y) Vous revenez à la page Database Replay qui vous fournit certaines informations de confirmation. z) Patientez une à deux minutes, puis cliquez sur View Job dans la section Confirmation. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 210
231 Exercice 11-1 : Utiliser Database Replay (suite) aa) Vous accédez à la page Execution correspondante où vous devriez constater que le travail s'est terminé avec succès. Cliquez sur la flèche de retour de votre navigateur pour retourner dans la page Database Replay. bb) De retour dans votre deuxième session de terminal, consultez les fichiers générés dans le répertoire /home/oracle/solutions/dbreplay/pp Vous devez voir des fichiers supplémentaires correspondant à la phase de processus que vous venez d'exécuter (fichiers additional.wmd,.extb et.pp). cc) Afin de pouvoir réexécuter la charge globale capturée précédemment, vous devez restaurer l'environnement dans l'état où il était avant l'exécution de la capture. Dans cet exercice, il s'agit de réinitialiser la grille en noir. De retour dans votre première session de terminal, exécutez le script wcr_init_grid_table.sh. dd) Ensuite, vérifiez que la grille a été correctement initialisée en noir à l'aide du script wcr_printgrid.sh. ee) De retour dans la page EM Database Replay, cliquez sur l'icône Replay Workload située en regard de la ligne Replay Workload dans la colonne "Go to Task". ff) Dans la page Replay Workload, sélectionnez votre répertoire de réexécution (DBREPLAY). La section Capture Summary doit apparaître dans la page avec le statut Completed. A ce stade, le tableau Replay History doit être vide. Cliquez sur Set Up Replay. gg) Dans la page Replay Workload: Prerequisites, vous pouvez cliquer en toute sécurité sur Continue car vous avez déjà terminé cette partie. hh) Dans la page Replay Workload: References to External Systems, vous pouvez cliquer en toute sécurité sur Continue car vous avez déjà terminé cette partie. ii) Dans la page Replay Workload: Choose Initialize Options, saisissez un nom de réexécution (par exemple, replay_capturegrid1), puis vérifiez que l'option "Use the default replay options" est sélectionnée. Cliquez sur Next. jj) Dans la page Replay Workload: Customize Options, cliquez sur l'onglet Replay Parameters. kk) Dans la sous-page Replay Parameters, vérifiez que le paramètre de synchronisation a la valeur SCN. Cliquez sur Next. ll) Dans la page Replay Workload: Prepare Replay Clients, cliquez sur Next. mm) Vous accédez à la page Replay Workload: Wait for Client Connections. Maintenant, le système attend que vous démarriez les clients de réexécution. nn) Dans votre deuxième session de terminal, saisissez la commande ci-après à l'invite du système d'exploitation : $. oraenv ORACLE_SID = [db10g]? orcl $ wrc REPLAYDIR=/home/oracle/solutions/dbreplay USERID=system PASSWORD=oracle_4U Workload Replay Client: Release Production on Mon Oct 5 12:07: Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 211
232 Exercice 11-1 : Utiliser Database Replay (suite) Copyright (c) 1982, 2009, Oracle and/or its affiliates. Tous droits réservés. Wait for the replay to start (12:07:09) oo) Dans une troisième session de terminal, saisissez la commande ci-après à l'invite du système d'exploitation : $. oraenv ORACLE_SID = [db10g]? orcl $ wrc REPLAYDIR=/home/oracle/solutions/dbreplay USERID=system PASSWORD=oracle_4U Workload Replay Client: Release Production on Mon Oct 5 12:08: Copyright (c) 1982, 2009, Oracle and/or its affiliates. Tous droits réservés. Wait for the replay to start (12:08:24) pp) Les exécutables wrc attendent désormais que vous lanciez l'opération de réexécution à partir de la base de données. qq) De retour dans la page "Replay Workload: Wait for Client Connections", vous devez voir deux lignes dans le tableau Client Connections. Elles correspondent à la session client que vous venez de lancer. Cliquez sur Next. rr) Dans la page Replay Workload: Review, cliquez sur Submit pour démarrer la session de réexécution pour capturegrid1. Vous êtes alors dirigé vers la page View Workload Replay. ss) Dans les deux dernières sessions de terminal, vous devez constater que les clients de réexécution ont lancé la réexécution. tt) De retour dans la page EM View Workload Replay, patientez jusqu'à ce que la réexécution soit terminée. uu) Ensuite, vous pouvez consulter les statistiques générées dans la page View Workload Replay. Analysez la section Detailed Comparison. (Cliquez sur l'icône "+" pour afficher ces informations.) Cliquez sur OK pour revenir à la page Database Replay. vv) Dans les deux dernières fenêtres de terminal, les sessions client doivent également être terminées. ww) Dans la première session de terminal, exécutez le script wcr_printgrid.sh pour consulter la grille après la réexécution. Vous devez voir exactement les mêmes valeurs que celles que vous avez vues après la première exécution de la charge globale. En effet, la session de réexécution a été réalisée en mode synchronisé. $./wcr_printgrid.sh SQL*Plus: Release Production on Mon Oct 5 12:23: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 212
233 Exercice 11-1 : Utiliser Database Replay (suite) Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options SET SERVEROUTPUT ON declare 2 col varchar2(10); 3 begin 4 for i in 00,9 loop 5 for j in 00,9 loop 6 select substr(color,1,1) into col from wcr_grid where xcoor=i and ycoor=j; 7 dbms_output.put(col ' '); 8 end loop; 9 dbms_output.put_line(''); 10 end loop; 11 end; 12 / y r g r s B B r b g o B b s r g B g s B b o y B g g y b o g o y y s o r g y r o b r g r g g s o s o s s o r B y y s o r o o B g g s g y b b B y y g b B B B B y s o r r B s B s B o y y r g g s g o r r PL/SQL procedure successfully completed. exit; Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 213
234 Exercice 11-2 : Utiliser Database Replay Mode non synchronisé Dans cet exercice, vous allez réexécuter votre charge globale en mode non synchronisé. Vous devez observer que la grille obtenue est configurée avec des couleurs différentes. 1) Afin de pouvoir réexécuter la charge globale capturée précédemment, vous devez restaurer l'environnement dans l'état où il était avant l'exécution de la capture. Dans cet exercice, il s'agit de réinitialiser la grille en noir. Dans votre première session de terminal, exécutez le script wcr_init_grid_table.sh. $./wcr_init_grid_table.sh SQL*Plus: Release Production on Mon Oct 5 15:41: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Connected. 100 rows deleted. Commit complete PL/SQL procedure successfully completed. Commit complete. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 2) Ensuite, vérifiez que la grille a été correctement initialisée en noir à l'aide du script wcr_printgrid.sh. $./wcr_printgrid.sh SQL*Plus: Release Production on Mon Oct 5 15:42: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 214
235 Exercice 11-2 : Utiliser Database Replay Mode non synchronisé (suite) Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options SET SERVEROUTPUT ON declare 2 col varchar2(10); 3 begin 4 for i in 00,9 loop 5 for j in 00,9 loop 6 select substr(color,1,1) into col from wcr_grid where xcoor=i and ycoor=j; 7 dbms_output.put(col ' '); 8 end loop; 9 dbms_output.put_line(''); 10 end loop; 11 end; 12 / b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b PL/SQL procedure successfully completed. exit; Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 3) Dans la page EM Database Replay, cliquez sur l'icône Replay Workload située en regard de la ligne Replay Workload dans la colonne "Go to Task". 4) Dans la page Replay Workload, sélectionnez votre répertoire de réexécution (DBREPLAY). La section Capture Summary doit apparaître dans la page avec le statut Completed. Le tableau Replay History doit contenir deux entrées. 5) Cliquez sur Set Up Replay. 6) Dans la page Replay Workload: Prerequisites, vous pouvez cliquer en toute sécurité sur Continue car vous avez déjà terminé cette partie. 7) Dans la page "Replay Workload: References to External Systems", vous pouvez cliquer en toute sécurité sur Continue car vous avez également terminé cette partie. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 215
236 Exercice 11-2 : Utiliser Database Replay Mode non synchronisé (suite) 8) Dans la page Replay Workload: Choose Initialize Options, saisissez un nom de réexécution (par exemple, replay_capturegrid3), puis vérifiez que l'option "Use the default replay options" est sélectionnée. Cliquez sur Next. 9) Dans la page Replay Workload: Customize Options, cliquez sur l'onglet Replay Parameters. 10) Dans la sous-page Replay Parameters, vérifiez que le paramètre de synchronisation a la valeur OFF. Cliquez sur Next. 11) Dans la page Replay Workload: Prepare Replay Clients, cliquez sur Next. 12) Maintenant, le système attend que vous démarriez les clients de réexécution. 13) Dans votre deuxième session de terminal, saisissez la commande ci-après à l'invite du système d'exploitation : $ wrc REPLAYDIR=/home/oracle/solutions/dbreplay USERID=system PASSWORD=oracle_4U Workload Replay Client: Release Production on Mon Oct 5 15:47: Copyright (c) 1982, 2009, Oracle and/or its affiliates. Tous droits réservés. Wait for the replay to start (15:47:33) 14) Dans votre troisième session de terminal, saisissez la commande ci-après à l'invite du système d'exploitation : $ wrc REPLAYDIR=/home/oracle/solutions/dbreplay USERID=system PASSWORD=oracle_4U Workload Replay Client: Release Production on Mon Oct 5 15:48: Copyright (c) 1982, 2009, Oracle and/or its affiliates. Tous droits réservés. Wait for the replay to start (15:48:20) 15) Maintenant, la commande attend que vous démarriez l'opération de réexécution dans la base de données. 16) De retour dans la page "Replay Workload: Wait for Client Connections", vous devez voir deux lignes dans le tableau Client Connections. Elles correspondent aux sessions client que vous venez de lancer. Cliquez sur Next. 17) Dans la page Replay Workload: Review, cliquez sur Submit pour démarrer la session de réexécution pour capturegrid1. 18) Vous êtes alors dirigé vers la page View Workload Replay. 19) Dans les deux dernières sessions de terminal, vous devez constater que les clients de réexécution ont lancé la réexécution. 20) De retour dans la page View Workload Replay, patientez jusqu'à ce que la réexécution soit terminée. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 216
237 Exercice 11-2 : Utiliser Database Replay Mode non synchronisé (suite) 21) Dans les deux dernières fenêtres de terminal, les sessions client doivent également être terminées. 22) Dans la première session de terminal, exécutez le script wcr_printgrid.sh pour consulter la grille après la réexécution. Vous devez remarquer certaines différences avec le résultat initial de la charge globale. En effet, la session de réexécution a été réalisée en mode non synchronisé. $./wcr_printgrid.sh SQL*Plus: Release Production on Mon Oct 5 15:59: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options SET SERVEROUTPUT ON declare 2 col varchar2(10); 3 begin 4 for i in 00,9 loop 5 for j in 00,9 loop 6 select substr(color,1,1) into col from wcr_grid where xcoor=i and ycoor=j; 7 dbms_output.put(col ' '); 8 end loop; 9 dbms_output.put_line(''); 10 end loop; 11 end; 12 / r g g y B o b y o o b o o o s y g B y s g s r b o y r s r o o y o s s s r y y y s B y o s s y o r o s o o y b o y s g y o o b b y s y g r r s o o s r o y s g B g y y b s b y y g o r b y g g s o B r s PL/SQL procedure successfully completed. exit; Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 217
238 Exercices - Chapitre 12 Par défaut, la fonction Automatic SQL Tuning (réglage automatique des instructions SQL) s'exécute automatiquement pendant chaque fenêtre de maintenance nocturne. Dans cet exercice, vous allez simuler l'exécution de cette fonction et étudier ses résultats. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 218
239 Exercice 12-1: Utiliser Automatic SQL Tuning Dans cet exercice, vous allez lancer Automatic SQL Tuning manuellement pour régler automatiquement une petite charge applicative. Vous allez ensuite examiner les résultats et les possibilités de configuration. 1) Accédez à la page Enterprise Manager Server. Cliquez sur Automated Maintenance Tasks dans la section Oracle Scheduler. Vérifiez que Status a la valeur Enabled. Cliquez sur Configure. Cliquez sur le bouton Configure situé en regard de Automatic SQL Tuning. Sélectionnez Yes pour "Automatic Implementation of SQL Profiles". Puis, cliquez sur Apply. 2) Dans une fenêtre de terminal où vous êtes connecté en tant qu'utilisateur oracle, exécutez le script ast_setup.sh. Ce script crée l'utilisateur AST qui sera utilisé tout au long de l'exercice, désactive les tâches automatiques de maintenance et supprime les profils existants dans les interrogations exécutées par l'utilisateur AST. $ cd /home/oracle/solutions/ast $. oraenv ORACLE_SID = [db10g]? orcl $ $./ast_setup.sh SQL*Plus: Release Production on Tue Oct 6 07:16: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options drop user ast cascade * ERROR at line 1: ORA-01918: user 'AST' does not exist User created. Grant succeeded. System altered. System altered. PL/SQL procedure successfully completed Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 219
240 Exercice 12-1: Utiliser Automatic SQL Tuning (suite) PL/SQL procedure successfully completed. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 3) En préparation de cet exercice, vous devez exécuter une charge globale. Lancez le script run_workload_stream.sh. Ce script exécute plusieurs fois une interrogation qui n'est pas optimisée correctement. L'interrogation utilise des conseils (hints) qui forcent l'optimiseur à choisir un plan d'exécution autre que le plan optimal. L'exécution du script dure environ 30 à 60 secondes. $./run_workload_stream.sh Tue Oct 6 07:18:33 UTC 2009 SQL*Plus: Release Production on Tue Oct 6 07:18: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options no rows selected no rows selected no rows selected no rows selected Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Tue Oct 6 07:19:01 UTC 2009 $ 4) La fonctionnalité Automatic SQL Tuning est implémentée sous la forme d'une tâche automatisée qui s'exécute pendant les fenêtres de maintenance. Toutefois, vous n'allez pas attendre l'ouverture de la prochaine fenêtre de maintenance. Cela pourrait être trop long. Vous allez donc forcer l'ouverture d'une telle fenêtre. Cela va automatiquement déclencher la tâche Automatic SQL Tuning. Pour cela, exécutez le script run_ast.sh. L'exécution du script prend environ deux minutes. $./run_ast.sh Tue Oct 6 07:21:08 UTC 2009 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 220
241 Exercice 12-1: Utiliser Automatic SQL Tuning (suite) SQL*Plus: Release Production on Tue Oct 6 07:21: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options PL/SQL procedure successfully completed PL/SQL procedure successfully completed. WINDOW TUESDAY_WINDOW 2 System altered. > PL/SQL procedure successfully completed. > PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. PL/SQL procedure successfully completed PL/SQL procedure successfully completed. 2 System altered. > PL/SQL procedure successfully completed. > PL/SQL procedure successfully completed. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Tue Oct 6 07:32:16 UTC 2009 $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 221
242 Exercice 12-1: Utiliser Automatic SQL Tuning (suite) 5) Exécutez à nouveau le script run_workload_stream.sh. Qu'observez-vous? a) Vous devez constater que la durée d'exécution du script run_workload_stream.sh est nettement plus courte que pour la première exécution. On peut en déduire que Automatic SQL Tuning a implémenté automatiquement un profil pour votre instruction. $./run_workload_stream.sh Tue Oct 6 07:35:15 UTC 2009 SQL*Plus: Release Production on Tue Oct 6 07:35: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options no rows selected no rows selected no rows selected Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Tue Oct 6 07:35:15 UTC 2009 $ 6) Forcez la création d'un cliché (snapshot) AWR. $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ $ sqlplus ast/ast SQL*Plus: Release Production on Tue Oct 6 07:37: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 222
243 Exercice 12-1: Utiliser Automatic SQL Tuning (suite) set echo on exec dbms_workload_repository.create_snapshot; PL/SQL procedure successfully completed. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 7) Comment pouvez-vous vérifier qu'un profil SQL a été implémenté automatiquement? a) Dans Oracle Enterprise Manager, accédez à la page de synthèse Automatic SQL Tuning en sélectionnant Server > Automated Maintenance Tasks > Automatic SQL Tuning. La tâche s'est déjà exécutée dans une fenêtre de maintenance et ses résultats sont dès à présent visibles. b) Affichez les résultats du réglage. c) Consultez les graphiques de la page Automatic SQL Tuning Result Summary. d) Analysez le graphique à secteurs et le graphique à barres situé en regard. Ces graphiques vous donnent une idée générale de la décomposition des résultats et indiquent le nombre de profils SQL implémentés par la tâche. e) Cliquez sur View Report pour afficher un état détaillé sur les instructions SQL. Recherchez et sélectionnez l'instruction SQL exécutée dans le schéma AST. La coche verte indique que le profil a été implémenté. f) Cliquez sur le bouton View Recommendations. g) Cliquez sur l'icône Compare Explain Plans, en forme de lunettes, pour l'entrée SQL Profile. h) Consultez les plans d'exécution ancien et nouveau de l'interrogation. i) Ensuite, cliquez sur le lien "Recommendations for SQL ID" pour retourner à la page précédente. j) Etudiez un profil SQL. Dans la page "Recommendations for SQL_ID", cliquez sur une instruction SQL pour accéder à la page SQL Details correspondante. k) L'onglet Tuning History apparaît. Notez le lien SYS_AUTO_SQL_TUNING_TASK qui indique que l'instruction SQL a été réglée par cette tâche. l) Consultez la sous-page Plan Control. Vous pouvez constater qu'un profil a été créé automatiquement pour cette instruction SQL. Le type AUTO signifie que le profil a été créé automatiquement. m) Cliquez sur l'onglet Statistics pour consulter l'historique des exécutions de cette instruction SQL. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 223
244 Exercice 12-1: Utiliser Automatic SQL Tuning (suite) n) La vitesse de votre ordinateur ne vous permettra peut-être pas de voir deux valeurs de hachage (hash values). Dans ce cas, ignorez cette étape et l'étape suivante. Sélectionnez Real Time: Manual Refresh dans le champ View Data, puis chacune des deux valeurs possibles dans la liste déroulante Plan Hash Values. Choisissez-les l'une après l'autre et attendez l'actualisation de la page à chaque fois. o) Suivant la vitesse de votre environnement, vous devriez voir une instruction avec une durée d'exécution relativement longue et une avec une durée d'exécution très courte. Il s'agit du plan amélioré. Si vous sélectionnez All dans la liste déroulante Plan Hash Values, vous ne pourrez peut-être pas voir l'exécution correspondant à l'instruction après réglage dans le graphique Summary. Il est possible que la charge globale ait été exécutée trop rapidement. 8) Générez un état au format texte pour des informations plus détaillées. Depuis la ligne de commande, exécutez le script get_task_report.sh. Qu'observez-vous? a) Vous pouvez remarquer les premières interrogations qui extraient le nom de l'exécution et le nombre d'objets du schéma de conseil, suivies de l'interrogation finale qui extrait l'état au format texte. Dans l'état, consultez la section relative aux résultats de profil SQL et lisez attentivement la section Validation Results. Cette section contient les statistiques observées lors des phases test-exécution, qui vous renseignent sur la qualité du profil. Vous pouvez également utiliser l'api report_auto_tuning_task pour obtenir des états qui couvrent plusieurs exécutions de la tâche. $./get_task_report.sh SQL*Plus: Release Production on Tue Oct 6 07:50: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Session altered EXECUTION_NAME STATUS EXECUTION_START EXEC_298 COMPLETED 10/06/ :21: PL/SQL procedure successfully completed. LAST_EXEC EXEC_298 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 224
245 Exercice 12-1: Utiliser Automatic SQL Tuning (suite) PL/SQL procedure successfully completed. OBJ_ID GENERAL INFORMATION SECTION Tuning Task Name : SYS_AUTO_SQL_TUNING_TASK Tuning Task Owner : SYS Workload Type : Automatic High-Load SQL Workload Scope : COMPREHENSIVE Global Time Limit(seconds) : 3600 Per-SQL Time Limit(seconds) : 1200 Completion Status : COMPLETED Started at : 10/06/ :21:18 Completed at : 10/06/ :31:36 Number of Candidate SQLs : 42 Cumulative Elapsed Time of SQL (s) : Object ID : 11 Schema Name: AST SQL ID : by9m5m597zh19 SQL Text : select /*+ USE_NL(s c) FULL(s) FULL(c) AST */ c.cust_id,sum(s.quantity_sold) from sh.sales s, sh.customers c where s.cust_id = c.cust_id and c.cust_id < 2 group by c.cust_id FINDINGS SECTION (2 findings) SQL Profile Finding (see explain plans section below) A potentially better execution plan was found for this statement. SQL profile "SYS_SQLPROF_ bb9c6e0000" was created automatically for this statement. Recommendation (estimated benefit: 98.47%) An automatically-created SQL profile is present on the system. Name: SYS_SQLPROF_ bb9c6e0000 Status: ENABLED Validation results The SQL profile was tested by executing both its plan and the original plan and measuring their respective execution Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 225
246 Exercice 12-1: Utiliser Automatic SQL Tuning (suite) statistics. A plan may have been only partially executed if the other could be run to completion in less time. Original Plan With SQL Profile % Improved Completion Status: COMPLETE COMPLETE Elapsed Time(us): % CPU Time(us): % User I/O Time(us): 0 0 Buffer Gets: % Physical Read Requests: 0 0 Physical Write Requests: 0 0 Physical Read Bytes: 0 0 Physical Write Bytes: 0 0 Rows Processed: 0 0 Fetches: 0 0 Executions: 1 1 Notes The original plan was first executed to warm the buffer cache. 2. Statistics for original plan were averaged over next 4 executions. 3. The SQL profile plan was first executed to warm the buffer cache. 4. Statistics for the SQL profile plan were averaged over next 9 executions. 2- Index Finding (see explain plans section below) The execution plan of this statement can be improved by creating one or more indices. Recommendation (estimated benefit: 90.98%) Consider running the Access Advisor to improve the physical schema design or creating the recommended index. create index SH. IDX$$_ on SH.SALES("CUST_ID"); Rationale Creating the recommended indices significantly improves the execution plan of this statement. However, it might be preferable to run "Access Advisor" using a representative SQL workload as opposed to a single statement. This will allow to get comprehensive index recommendations which takes into account index maintenance overhead and additional space consumption EXPLAIN PLANS SECTION Original With Adjusted Cost Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 226
247 Exercice 12-1: Utiliser Automatic SQL Tuning (suite) Plan hash value: Id Operation Name Rows Bytes Cost (%CPU) Time Pstart Pstop SELECT STATEMENT (2) 00:00:1 1 1 HASH GROUP BY (2) 00:00:1 1 2 NESTED LOOPS (2) 00:00:1 1 * 3 TABLE ACCESS FULL CUSTOMERS (1) 00:00:0 5 4 PARTITION RANGE ALL (3) 00:00: * 5 TABLE ACCESS FULL SALES (3) 00:00: Predicate Information (identified by operation id): filter("c"."cust_id"<2) 5 - filter("s"."cust_id"<2 AND "S"."CUST_ID"="C"."CUST_ID") 2- Using SQL Profile Plan hash value: Id Operation Name Rows Bytes Cost (%CPU) Time Pstart Pstop SELECT STATEMENT (2) 00:00:01 1 HASH GROUP BY (2) 00:00:01 2 NESTED LOOPS 1 13 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 227
248 Exercice 12-1: Utiliser Automatic SQL Tuning (suite) 54 (0) 00:00:01 3 PARTITION RANGE ALL (0) 00:00: TABLE ACCESS BY LOCAL INDEX ROWID SALES (0) 00:00: BITMAP CONVERSION TO ROWIDS * 6 BITMAP INDEX RANGE SCAN SALES_CUST_BIX 1 28 * 7 INDEX UNIQUE SCAN CUSTOMERS_PK (0) 00:00: Predicate Information (identified by operation id): access("s"."cust_id"<2) filter("s"."cust_id"<2) 7 - access("s"."cust_id"="c"."cust_id") filter("c"."cust_id"<2) 3- Using New Indices Plan hash value: Id Operation Name Rows Bytes Cost (%CPU) Time Pstart Pstop SELECT STATEMENT (0) 00:00:01 1 SORT GROUP BY NOSORT (0) 00:00:01 2 NESTED LOOPS 3 NESTED LOOPS (0) 00:00:01 * 4 INDEX RANGE SCAN CUSTOMERS_PK (0) 00:00:01 * 5 INDEX RANGE SCAN IDX$$_ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 228
249 Exercice 12-1: Utiliser Automatic SQL Tuning (suite) 2 (0) 00:00:01 6 TABLE ACCESS BY GLOBAL INDEX ROWID SALES (0) 00:00:01 ROWID ROWID Predicate Information (identified by operation id): access("c"."cust_id"<2) 5 - access("s"."cust_id"="c"."cust_id") filter("s"."cust_id"<2) Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 9) Déterminez comment configurer Automatic SQL Tuning avec Enterprise Manager. a) De retour dans Enterprise Manager, accédez à la page Automated Maintenance Tasks. b) Dans le graphique, vous pouvez voir les phases d'exécution précédentes de chaque client et celles qui sont à nouveau planifiées ultérieurement. c) Modifiez le début et la fin du graphique affiché à l'aide des flèches situées en-dessous de celui-ci. d) Cliquez sur le bouton Configure. e) La page Automated Maintenance Tasks Configuration apparaît. f) Dans cette page, vous pouvez désactiver les clients individuellement et modifier les fenêtres dans lesquelles ils s'exécutent. g) Désactivez le client Automatic SQL Tuning en sélectionnant Disabled. Cliquez sur Apply, puis sur le lien permettant de retourner à la page Automated Maintenance Tasks. h) Notez le signe interdit (cercle rouge avec une barre oblique) en regard du nom de la tâche. i) Cliquez sur Configure pour revenir à la page de configuration. Cliquez sur Enabled pour la tâche Automatic SQL Tuning, puis sur Apply. Cliquez sur le lien permettant de retourner à la page Automated Maintenance Tasks. j) Dans la page Automated Maintenance Tasks Configuration, cliquez sur le lien Automatic SQL Tuning. k) Cela vous dirige vers la page de configuration de la tâche. l) Dans la page Automatic SQL Tuning Result Summary, cliquez sur le bouton Configure en regard du champ "Automatic Implementation of SQL Profiles is currently Enabled". Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 229
250 Exercice 12-1: Utiliser Automatic SQL Tuning (suite) m) Dans la page Automatic SQL Tuning Settings, sélectionnez No en regard du champ "Automatic Implementation of SQL Profiles" et cliquez sur Apply. Cliquez sur le lien Database Instance pour retourner dans la page Server. 10) FACULTATIF : Vous pouvez déterminer comment configurer Automatic SQL Tuning à l'aide de l'interface PL/SQL via le script manual_config.sh. Remarque : Dans votre cas, la tâche s'exécute rapidement car la charge globale traitée est très petite. Toutefois, vous pouvez utiliser le script interrupt_task.sh dans une autre session pour arrêter la tâche si elle dure trop longtemps. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 230
251 Exercices - Chapitre 13 Dans cet exercice, vous allez créer des lignes de base AWR. Vous allez surveiller les performances des travaux AUTOTASK et ajuster les ressources et les fenêtres pour ces travaux. Pour finir, vous allez calibrer les ressources d'e/s. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 231
252 Exercice 13-1 : Créer des lignes de base Pour créer des lignes de base, utilisez la base de données orcl (pour cet exercice, la collecte des clichés par défaut doit s'exécuter depuis le démarrage de la base). 1) Créez une ligne de base portant sur des clichés antérieurs et calculez les statistiques de la ligne de base statique. a) Connectez-vous en tant qu'utilisateur SYS et cliquez sur l'onglet Server de la page d'accueil de Database Control. Dans la page Server, cliquez sur le lien AWR Baselines dans la section Statistics Management. b) Dans la page AWR Baselines, cliquez sur le bouton Create. c) Dans la page Create Baseline: Baseline Interval Type, sélectionnez Single et cliquez sur Continue. d) Dans la page Create Baseline: Single Baseline, indiquez Monday dans le champ Baseline Name. Développez la section Change Chart Time Period. Choisissez le dimanche comme date de début du graphique et le mardi comme date de fin, puis cliquez sur Go. Sous le graphique, cliquez sur l'icône correspondant au premier cliché, qui représente l'heure la plus matinale du lundi. (Une liste déroulante peut être proposée pour Period Start Time. Dans ce cas, choisissez l'heure la plus matinale.) Cliquez sur le bouton radio correspondant à Period End Time puis, sous le graphique, cliquez sur l'icône correspondant au cliché qui est le plus proche de mardi minuit. Cliquez sur Finish. e) Dans la page AWR Baselines, sélectionnez la ligne de base Monday, puis Schedule Statistics Computation dans la liste déroulante Actions. Cliquez sur Go. f) Dans la page Compute Threshold Statistics: Monday, vérifiez que Immediately est sélectionné et cliquez sur Submit pour lancer le travail de calcul. g) La page AWR Baselines va s'afficher. Patientez quelques instants et actualisez la page. La colonne Statistics Computed affiche Yes lorsque le travail est terminé. Il vous faudra peut-être actualiser la page plusieurs fois. 2) Personnalisez la page Performance. a) Dans la page AWR Baselines, sélectionnez Customize Performance Page dans la liste déroulante Actions, puis cliquez sur Go. b) Acceptez les paramètres par défaut. Cliquez sur OK. c) Accédez à la page Performance et constatez les différences. 3) Créez une ligne de base répétitive dans le futur. a) Accédez à la page AWR Baselines, puis cliquez sur Create. b) Choisissez le type d'intervalle Repeating et cliquez sur Continue. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 232
253 Exercice 13-1 : Créer des lignes de base (suite) c) Dans la page Create Baseline: Repeating Baseline Template, définissez les options suivantes : Baseline Name : afterwork Start Time : 6:00 PM Duration : 12 hours Frequency : Daily Start Time : Choisissez le dimanche (Sunday) précédant la formation. End Time : Choisissez le samedi (Saturday) suivant la formation. Retention Time : 28 days d) Cliquez sur Finish. e) Dans la page AWR Baselines, cliquez sur AWR Baseline Templates dans la section Related Links. f) Dans la page AWR Baseline Templates, vous pouvez constater qu'un modèle a été créé pour les futures lignes de base. 4) Affichez les vues du dictionnaires de données. a) Connectez-vous à l'instance de base de données orcl avec l'utilisateur SYS. b) Sélectionnez les colonnes BASELINE_NAME et BASELINE_TYPE à partir de DBA_HIST_BASELINE. $. oraenv ORACLE_SID = [db10g]? orcl $ sqlplus / as sysdba SQL*Plus: Release Production on Tue Oct 6 11:24: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options select baseline_name, baseline_type from dba_hist_baseline; BASELINE_NAME BASELINE_TYPE Monday STATIC SYSTEM_MOVING_WINDOW MOVING_WINDOW Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 233
254 Exercice 13-1 : Créer des lignes de base (suite) c) Lancez la commande DESCRIBE sur DBA_HIST_BASELINE_DETAILS. desc dba_hist_baseline_details Name Null? Type DBID NUMBER INSTANCE_NUMBER NUMBER BASELINE_ID NUMBER BASELINE_NAME VARCHAR2(64) BASELINE_TYPE VARCHAR2(13) START_SNAP_ID NUMBER START_SNAP_TIME TIMESTAMP(3) END_SNAP_ID NUMBER END_SNAP_TIME TIMESTAMP(3) SHUTDOWN VARCHAR2(3) ERROR_COUNT NUMBER PCT_TOTAL_TIME NUMBER LAST_TIME_COMPUTED DATE MOVING_WINDOW_SIZE NUMBER CREATION_TIME DATE EXPIRATION NUMBER TEMPLATE_NAME VARCHAR2(64) exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 234
255 Exercice 13-2 : Contrôler les travaux AutoTask Les tâches automatiques de maintenance sont conçues pour s'exécuter dans les fenêtres de maintenance. Les tâches sont affectées aux groupes de consommateurs de ressources en fonction de la classe de travail. Les travaux et les fenêtres sont conçues pour s'exécuter dans le temps imparti, sans utilisation excessive des ressources. 1) Vérifiez les paramètres de fenêtre pour les tâches automatiques de maintenance. Quand la fenêtre Tuesday s'ouvre-t-elle et pour combien de temps? a) Accédez à la page Server et cliquez sur Window Groups dans la section Oracle Scheduler. b) Dans la page Scheduler Window Groups, cliquez sur MAINTENANCE_WINDOW_GROUP. c) Dans la page View Window Group: MAINTENANCE_WINDOW_GROUP, cliquez sur TUESDAY_WINDOW. d) La fenêtre Tuesday s'ouvre tous les mardis à 22:00 pendant quatre heures. e) Cliquez sur le lien Database pour retourner dans la page Database Home. 2) En combien de temps les tâches automatiques de maintenance s'exécutent-elles? Quelle est la quantité de ressources allouée à ces travaux? Les informations statistiques relatives aux tâches automatiques de maintenance sont conservées dans la vue DBA_AUTOTASK_CLIENT. a) Dans une fenêtre de terminal, appelez SQL*Plus et connectez-vous en tant qu'utilisateur SYS. Décrivez la vue DBA_AUTOTASK_CLIENT. $ cd /home/oracle/solutions/infra $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ $ sqlplus / as sysdba SQL*Plus: Release Production on Tue Oct 6 11:33: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options desc dba_autotask_client Name Null? Type CLIENT_NAME VARCHAR2(64) Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 235
256 Exercice 13-2 : Contrôler les travaux AutoTask (suite) STATUS VARCHAR2(8) CONSUMER_GROUP CLIENT_TAG PRIORITY_OVERRIDE ATTRIBUTES VARCHAR2(4000) WINDOW_GROUP SERVICE_NAME RESOURCE_PERCENTAGE USE_RESOURCE_ESTIMATES MEAN_JOB_DURATION DAY(9) TO SECOND(9) MEAN_JOB_CPU DAY(9) TO SECOND(9) MEAN_JOB_ATTEMPTS MEAN_INCOMING_TASKS_7_DAYS MEAN_INCOMING_TASKS_30_DAYS TOTAL_CPU_LAST_7_DAYS DAY(9) TO SECOND(9) TOTAL_CPU_LAST_30_DAYS DAY(9) TO SECOND(9) MAX_DURATION_LAST_7_DAYS DAY(3) TO SECOND(0) MAX_DURATION_LAST_30_DAYS DAY(3) TO SECOND(0) WINDOW_DURATION_LAST_7_DAYS DAY(9) TO SECOND(9) WINDOW_DURATION_LAST_30_DAYS DAY(9) TO SECOND(9) VARCHAR2(30) VARCHAR2(2) VARCHAR2(7) VARCHAR2(64) VARCHAR2(64) NUMBER VARCHAR2(5) INTERVAL INTERVAL NUMBER NUMBER NUMBER INTERVAL INTERVAL INTERVAL INTERVAL INTERVAL INTERVAL b) Sélectionnez les colonnes CLIENT_NAME, MEAN_JOB_DURATION et RESOURCE_PERCENTAGE. Dans l'exemple, le travail présentant la plus longue durée moyenne est le travail SQL Tuning Advisor. Si la durée moyenne du travail (MEAN_JOB_DURATION) approche la durée de la fenêtre, la durée de la fenêtre ou le pourcentage de ressources (RESOURCE_PERCENTAGE) doit être augmenté pour que le travail AUTOTASK puisse bénéficier des ressources nécessaires pour son exécution dans le temps imparti. Cette interrogation est disponible sous forme de script dans le répertoire solutions/infra. Utilisez le script SELECT client_name, 2 mean_job_duration, 3 resource_percentage 4 FROM DBA_AUTOTASK_CLIENT 5 / CLIENT_NAME MEAN_JOB_DURATION RESOURCE_PERCENTAGE auto optimizer stats collection :02: Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 236
257 Exercice 13-2 : Contrôler les travaux AutoTask (suite) 25 auto space advisor :00: sql tuning advisor :02: exit Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 237
258 Exercice 13-3 : Calibrer les ressources des E/S Il est important de connaître les capacités du sous-système d'e/s de votre serveur. L'outil de calibrage des E/S vous permet de comparer la charge des E/S aux capacités des E/S. 1) Vérifiez la configuration actuelle des E/S. Accédez à la page I/O Calibration. a) Cliquez sur l'onglet Performance dans la page d'accueil Database Control. b) Cliquez sur l'onglet I/O au centre de la page Performance. c) Cliquez sur I/O Type dans I/O Chart Settings. 2) Utilisez Enterprise Manager pour calibrer les mesures des ressources d'e/s. Saisissez les entrées d'un nouveau calibrage. a) Dans la page Performance, cliquez sur le bouton I/O Calibration. b) Faites défiler la page I/O Calibration jusqu'à la section "Inputs for a New Calibration". Dans le champ Approximate Number of Physical Disks in the Database's Storage System, saisissez 1. Dans le champ Maximum Tolerable Latency in Milliseconds for Single-Block I/O Requests, saisissez 50. c) Cliquez sur Submit. Cette opération peut prendre jusqu'à 15 minutes. d) Vous pouvez afficher les informations relatives au travail soumis dans la page Scheduler Central. Cliquez sur le lien Database Instance pour retourner dans la page Performance. Cliquez sur l'onglet Server. Dans la page Server, cliquez sur le lien Jobs dans la section Oracle Scheduler. e) Dans la page Scheduler Jobs, vous devez voir le lien IOCalibration en cours d'exécution. f) Vous pouvez consulter l'activité des E/S dans la page Performance. Cliquez sur l'onglet Database. Cliquez ensuite sur l'onglet Performance. g) Une fois la calibration terminée, analysez la page Calibration en cliquant sur le bouton I/O Calibration. h) Dans la page I/O Calibration, consultez la section Existing Calibration Results. Vos résultats seront différents selon votre machine. i) Après consultation des résultats, cliquez sur le lien Database pour retourner dans la page Database Home. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 238
259 Exercices - Chapitre 14 Dans cet exercice, vous allez utiliser diverses fonctions de diagnostic. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 239
260 Exercice 14-1 : Utiliser l'assistant Support Workbench pour analyser les dommages Dans cet exercice, vous endommagez une table du dictionnaire de données. Vous analysez ensuite les dommages à l'aide de l'assistant Support Workbench et de l'utilitaire ADRCI. 1) Exécutez le script hm_setup.sh qui se trouve dans le répertoire /home/oracle/solutions/hm. Ce script endommage le dictionnaire de données. $ cd /home/oracle/solutions/hm $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ $./hm_setup.sh SQL*Plus: Release Production on Tue Oct 6 12:06: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Table created PL/SQL procedure successfully completed. OBJ Database closed. Database dismounted. ORACLE instance shut down. ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database opened. 1 row updated. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 240
261 Exercice 14-1 : Utiliser l'assistant Support Workbench pour analyser les dommages (suite) Commit complete. Database closed. Database dismounted. ORACLE instance shut down. ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database opened. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 2) Utilisez Enterprise Manager pour lancer un contrôle de l'état du dictionnaire de données. a) Connectez-vous à Enterprise Manager en tant qu'utilisateur SYS. Cliquez sur le lien Advisor Central situé en bas de la page d'accueil, dans la section Related Links. b) Dans la page Advisor Central, cliquez sur l'onglet Checkers. c) Dans la sous-page Checker, cliquez sur Dictionary Integrity Check. d) Dans la page Run Dictionary Integrity Check, indiquez le nom d'exécution (Run Name) DicoCheck. e) Cliquez sur OK. f) Dans la page Advisor Central Checkers, un message de confirmation vous indique que la vérification a été exécutée avec succès. g) Dans la table Results, sélectionnez l'exécution DicoCheck, puis cliquez sur Details. Cette opération vous dirige vers la sous-page Run Details Findings qui indique certaines corruptions de données. Pour être plus précis, vous devez obtenir le résultat suivant : "SQL dictionary health check: invalid column number 8 on object TAB$ failed". Cela doit correspondre à une ligne de TAB$ qui fait référence à SCOTT.TABJFV. 3) Comment pouvez-vous obtenir un rapport présentant ce résultat à l'aide de SQL*Plus? $ sqlplus / as sysdba SQL*Plus: Release Production on Tue Oct 6 12:18: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 241
262 Exercice 14-1 : Utiliser l'assistant Support Workbench pour analyser les dommages (suite) With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options set long select dbms_hm.get_run_report('dicocheck') from dual; DBMS_HM.GET_RUN_REPORT('DICOCHECK') Basic Run Information Run Name : DicoCheck Run Id : 41 Check Name : Dictionary Integrity Check Mode : MANUAL Status : COMPLETED Start Time : :11: :00 End Time : :11: :00 Error Encountered : 0 Source Incident Id : 0 Number of Incidents Created: 0 DBMS_HM.GET_RUN_REPORT('DICOCHECK') Input Paramters for the Run TABLE_NAME=ALL_CORE_TABLES CHECK_MASK=ALL Run Findings And Recommendations Finding Finding Name : Dictionary Inconsistency Finding ID : 42 Type : FAILURE Status : OPEN DBMS_HM.GET_RUN_REPORT('DICOCHECK') Priority : CRITICAL Message : SQL dictionary health check: invalid column number 8 on object TAB$ failed Message : Damaged rowid is AAAAACAABAAAWFaAAB - description: Object SCOTT.TABJFV is referenced Finding Finding Name : Dictionary Inconsistency Finding ID : 45 Type : FAILURE Status : OPEN Priority : CRITICAL DBMS_HM.GET_RUN_REPORT('DICOCHECK') Message : SQL dictionary health check: file$ pk 42 on object FILE$ failed Message : Damaged rowid is AAAAARAABAAAADpAAG - description: No further damage description Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 242
263 Exercice 14-1 : Utiliser l'assistant Support Workbench pour analyser les dommages (suite) available Finding Finding Name : Dictionary Inconsistency Finding ID : 48 Type : FAILURE Status : OPEN Priority : CRITICAL Message : SQL dictionary health check: file$ pk 42 on object FILE$ DBMS_HM.GET_RUN_REPORT('DICOCHECK') failed Message : Damaged rowid is AAAAARAABAAAADpAAH description: No further damage description available 4) Revenez à la page d'accueil d'enterprise Manager. Qu'observez-vous? a) Cliquez sur l'onglet Database pour retourner dans la page Database Home. b) Vous devez voir une nouvelle alerte critique (Data Failure) pour les corruptions détectées précédemment dans la section Alerts de la page d'accueil (Home). 5) Revenez à la fenêtre de terminal. Videz la zone de mémoire partagée (shared pool) et le cache de tampons (buffer cache), quittez la session, puis reconnectez-vous en tant qu'utilisateur SYS. Exécutez l'instruction suivante : select * from scott.tabjfv; Qu'observez-vous? alter system flush shared_pool; System altered. alter system flush buffer_cache; System altered. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ sqlplus / as sysdba SQL*Plus: Release Production on Tue Oct 6 12:39: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 243
264 Exercice 14-1 : Utiliser l'assistant Support Workbench pour analyser les dommages (suite) Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options select * from scott.tabjfv; select * from scott.tabjfv * ERROR at line 1: ORA-03113: end-of-file on communication channel Process ID: 6404 Session ID: 37 Serial number: 778 exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 6) Utilisez Enterprise Manager pour analyser le problème précédent. a) Dans la page Database Home, vous devez voir un incident actif dans la région Diagnostic Summary. Cliquez sur le lien Active Incidents (Access Violation). Si vous ne voyez pas cet incident, cliquez sur Software and Support. Dans la sous-page Software and Support, cliquez sur Support Workbench dans la section Support. b) Dans la sous-page Support Workbench Problems, vous devez voir un nouvel incident actif avec une description de la forme ORA 7445 [qcstda()+720]. c) Développez le lien Show dans la colonne Details. d) Cliquez sur le lien correspondant à l'incident. e) Vous accédez à la page Incident Details correspondante. Notez le numéro d'incident : f) La section Application Information de cette page indique clairement l'origine de l'incident. Il s'agit de "select * from scott.tabjfv". g) Dans la sous-page Dump Files, vous pouvez également voir deux fichiers dump. Le premier correspond au fichier dump de l'incident et se trouve dans le répertoire ADR. (Exemple : /u01/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_18273) Le second est le fichier trace standard se trouvant dans /u01/app/oracle/diag/rdbms/orcl/orcl/trace. h) Dans la colonne View Contents, cliquez sur l'icône en forme de lunettes associée à la trace d'incident (première ligne). i) Si vous n'avez pas précédemment enregistré vos informations d'identification et de connexion à l'hôte, la page Host Credentials s'affiche. Entrez oracle/oracle, puis cliquez sur Continue. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 244
265 Exercice 14-1 : Utiliser l'assistant Support Workbench pour analyser les dommages (suite) j) Cette opération vous dirige vers la page Contents qui présente les informations de trace sous une forme structurée. k) Par exemple, cliquez sur le lien Expand All puis sur le lien "current sql statement" situé sous le lien "incident dump" dans la section custom_assert_dump. Cette action affiche l'instruction SQL incriminée dans la fenêtre située sous la section Trace Map. l) Cliquez sur OK pour revenir à la page Incident Details. m) Dans la partie supérieure de la page Incident Details, cliquez sur le lien Problem Details. n) Dans la page Problems Details, cliquez sur Edit en regard du champ SR. o) Entrez 1234 dans la fenêtre contextuelle SR Number qui apparaît, puis cliquez sur OK. Il est supposé que vous avez déjà ouvert une Service Request (1234) via My Oracle Support. p) Vous devez à présent voir le numéro de SR dans la page Problem Details. q) Cliquez sur l'onglet Activity Log. r) Vous accédez à la sous-page Activity Log qui indique à présent la dernière action. Vous pouvez y saisir un commentaire. 7) Revenez à la fenêtre de terminal. Localisez l'incident et le rapport de contrôle d'état dans le référentiel ADR. $ cd $ORACLE_BASE/diag/rdbms/orcl/orcl $ ls alert cdump hm incident incpkg ir lck metadata stage sweep trace $ cd incident $ ls incdir_18273 $ cd incdir_18273 $ ls orcl_ora_12211_i18273.trc orcl_ora_12211_i18273.trm $ cd../.. $ cd hm $ ls HMREPORT_DicoCheck.hm $ cd.. 8) Utilisez ADRCI pour localiser l'incident et les informations relatives au problème. $ adrci ADRCI: Release Production on Tue Oct 6 12:58: Copyright (c) 1982, 2009, Oracle and/or its affiliates. Tous droits réservés. ADR base = "/u01/app/oracle" adrci> set homepath diag/rdbms/orcl/orcl adrci> show homes ADR Homes: diag/rdbms/orcl/orcl Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 245
266 Exercice 14-1 : Utiliser l'assistant Support Workbench pour analyser les dommages (suite) adrci> show incidents ADR Home = /u01/app/oracle/diag/rdbms/orcl/orcl: ************************************************************** INCIDENT_ID PROBLEM_KEY CREATE_TIME ORA 600 [HAH!] :15: : ORA 600 [HAH!] :35: : ORA 7445 [qcstda()+720] :40: :00 3 rows fetched adrci> show problem ADR Home = /u01/app/oracle/diag/rdbms/orcl/orcl: ***************************************************************** ******** PROBLEM_ID PROBLEM_KEY LAST_INCIDENT LASTINC_TIME ORA 7445 [qcstda()+720] :40: :00 1 ORA 600 [HAH!] :35: :00 2 rows fetched adrci> exit $ 9) Utilisez Enterprise Manager pour packager rapidement le problème. a) Dans la section Investigate and Resolve de la page Problems Details, cliquez sur le bouton Quick Package. b) Dans la page Quick Packaging: Create New Package, acceptez le nom de package par défaut (similaire à ORA7445qc_ ), puis sélectionnez No en regard de l'entrée "Send to Oracle Support". c) Une fois la page actualisée, cliquez sur Next. d) Dans la page Quick Packaging: View Contents, vous voyez la liste des incidents inclus dans le package. Dans votre cas, il ne devrait y avoir qu'un incident. Cliquez sur Next. e) Dans la page Quick Packaging: View Manifest, regardez le nom du fichier manifest. Cliquez sur Next. f) Dans la page Quick Packaging: Schedule, assurez-vous que l'option Immediately est sélectionnée, puis cliquez sur Submit. g) La page Processing: Generating Upload File for Package s'affiche. Attendez la fin de l'opération. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 246
267 Exercice 14-1 : Utiliser l'assistant Support Workbench pour analyser les dommages (suite) h) Dans la page Confirmation, vous devez voir un message similaire à celui-ci : "Generating an upload file for package: ORA7445qc_ has been successfully generated". The upload file is located at /u01/app/oracle/product/11.1.0/db_1/edrsr14p1.us.oracle.com_orcl/sysman/emd/state/ ORA7445qc_ _COM_1.zip. Please send it manually to Oracle." Remarque : Si vous recevez une erreur concernant la création du fichier, effectuez les étapes suivantes de l'exercice. Vous verrez que le package a été créé. i) Cliquez sur OK. j) Dans la sous-page Problem Details Activity Log, vous devez à présent voir deux nouvelles entrées dans le journal concernant la création du package pour le problème. k) Dans la section Summary, cliquez sur le lien Yes associé au champ Packaged. l) Cette action vous dirige vers la page Packages. m) Sélectionnez le package approprié, puis cliquez sur View. Cette action vous dirige vers la page Package Details qui affiche les détails du package. n) Cliquez sur l'onglet Files. o) Dans la sous-page Files, vous voyez à présent la vue Full Package Content. 10) Revenez à la fenêtre de terminal et utilisez ADRCI pour déterminer la liste des packages existants. Quittez ADRCI. $ adrci ADRCI: Release Production on Tue Oct 6 13:32: Copyright (c) 1982, 2009, Oracle and/or its affiliates. Tous droits réservés. ADR base = "/u01/app/oracle" adrci> set homepath diag/rdbms/orcl/orcl adrci> query ips_package ADR Home = /u01/app/oracle/diag/rdbms/orcl/orcl: ***************************************************************** ******** PACKAGE_ID FLAGS STATUS CREATION_TIME LAST_SEQUENCE LAST_COMPLETE_SEQUEN PROBLEM_ID NAME DESCRIPTION CORRELATION_LEVEL DRIVING_INCIDENT BEGIN_TIME END_TIME UPDATE_TIME LAST_BASE_SEQUENCE Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 247
268 Exercice 14-1 : Utiliser l'assistant Support Workbench pour analyser les dommages (suite) :23: : ORA7445qc_ :23: : rows fetched adrci> exit $ 11) Après avoir analysé le problème, vous savez que le nombre de colonnes de TABJFV est faux dans TAB$. Corrigez TAB$ et fermez le problème. Pour cela, vous pouvez utiliser le script hm_fix.sh. $ cd /home/oracle/solutions/hm $./hm_fix.sh SQL*Plus: Release Production on Tue Oct 6 13:36: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options PL/SQL procedure successfully completed. OBJ Database closed. Database dismounted. ORACLE instance shut down. ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database opened. 1 row updated. Commit complete. Database closed. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 248
269 Exercice 14-1 : Utiliser l'assistant Support Workbench pour analyser les dommages (suite) Database dismounted. ORACLE instance shut down. ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database opened. PL/SQL procedure successfully completed. DBMS_HM.GET_RUN_REPORT('DICOCHECKJFV') Basic Run Information Run Name : DicoCheckjfv Run Id : 61 Check Name : Dictionary Integrity Check Mode : MANUAL Status : COMPLETED Start Time : :36: :00 End Time : :36: :00 Error Encountered : 0 Source Incident Id : 0 Number of Incidents Created: 0 DBMS_HM.GET_RUN_REPORT('DICOCHECKJFV') Input Paramters for the Run TABLE_NAME=tab$ CHECK_MASK=ALL Run Findings And Recommendations Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Recovery Manager: Release Production on Tue Oct 6 13:37: Copyright (c) 1982, 2009, Oracle and/or its affiliates. Tous droits réservés. connected to target database: ORCL (DBID= ) using target database control file instead of recovery catalog RMAN> RMAN> Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 249
270 Exercice 14-1 : Utiliser l'assistant Support Workbench pour analyser les dommages (suite) List of Database Failures ========================= Failure ID Priority Status Time Detected Summary CRITICAL OPEN 06-OCT-09 SQL dictionary health check: file$ pk 42 on object FILE$ failed 45 CRITICAL OPEN 06-OCT-09 SQL dictionary health check: file$ pk 42 on object FILE$ failed RMAN> Recovery Manager complete. $ 12) Utilisez Enterprise Manager pour fermer l'incident. a) Dans la page Package Details, cliquez sur le lien du problème en regard du champ Problems in Package dans la section Summary. b) Dans la sous-page Problem Details Incidents, sélectionnez l'incident en question, puis cliquez sur Close. c) Dans la page Confirmation, cliquez sur Yes. d) Cliquez sur Database pour revenir à la page Database Home. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 250
271 Exercice 14-2 : Utiliser SQL Repair Advisor Dans cet exercice, vous simulez un échec SQL et l'analysez à l'aide de la fonction de conseil SQL Repair Advisor. 1) Ouvrez une fenêtre de terminal et accédez au répertoire /home/oracle/solutions/sql_repair. Dans une session SQL*Plus dans laquelle vous êtes connecté en tant qu'utilisateur SYS, exécutez le script sql_repair1.sql. $. oraenv ORACLE_SID = [db10g]? orcl $ $ cd /home/oracle/solutions/sql_repair $ $ sqlplus / as sysdba SQL*Plus: Release Production on Mon Jun 29 00:33: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing -- This example generates a workaround for a crash. This bug has already -- been fixed but we toggle the bug fix using an underscore parameter -- which uses the (internal) feature called bug fix control. -- This script will pause periodically to allow you to read the comments -- and see the output of the previous command on the screen. Just press -- return to make the demo resume. pause 2) Appuyez sur [Entrée] pour poursuivre. Le script accorde à présent des privilèges à l'utilisateur SCOTT employé pour l'exemple. -- To begin the demo we will create the user scott and grant -- advisor privileges to him. pause Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 251
272 Exercice 14-2 : Utiliser SQL Repair Advisor (suite) grant connect, resource, dba, query rewrite, unlimited tablespace to scott identified by tiger; Grant succeeded. alter user scott account unlock; User altered. -- Next we need to create and populate the table used by the demo. -- We will also create an index on the table; pause 3) Lorsque vous appuyez sur [Entrée], une table est créée et remplie. connect scott/tiger; Connected. drop table simple_table; drop table simple_table * ERROR at line 1: ORA-00942: table or view does not exist create table simple_table(a varchar(40), b number, c varchar(240), d varchar(240)); Table created. create index tc on simple_table(b, d, a); Index created. insert into simple_table values('a', 1, 'b', 'c'); 1 row created. insert into simple_table values('a', 1, 'x', 'c'); 1 row created. insert into simple_table values('e', 2, 'f', 'g'); 1 row created. -- In order to crash the system we need to switch off the code line that Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 252
273 Exercice 14-2 : Utiliser SQL Repair Advisor (suite) -- normal protects against this type of crash. We can switch off the code -- using the (internal) feature called bug fix control. pause 4) Appuyez sur [Entrée] pour poursuivre. Vous devez désactiver une partie du code dans le système afin de générer volontairement un échec lors de l'exécution d'une instruction SQL particulière. -- switch the code alter system set "_fix_control"=" :off"; System altered. -- alter session set optimizer_dynamic_sampling = 0; -- Now that the code line has been switched off lets get the execution -- plan for a simple delete statement. pause 5) Appuyez sur [Entrée] pour poursuivre. La commande DELETE est appliquée à l'instruction de suppression utilisée dans cet exercice. --- explain the plan explain plan for delete 2 /*+ 3 USE_HASH_AGGREGATION(@"SEL$80F8B8C6") 4 USE_HASH(@"SEL$80F8B8C6" "T1"@"DEL$1") 5 LEADING(@"SEL$80F8B8C6" "T2"@"SEL$1" "T1"@"DEL$1") 6 FULL(@"SEL$80F8B8C6" "T1"@"DEL$1") 7 FULL(@"SEL$80F8B8C6" "T2"@"SEL$1") 8 OUTLINE(@"DEL$1") 9 OUTLINE(@"SEL$1") 10 OUTLINE(@"SEL$AD0B6B07") 11 OUTLINE(@"SEL$7D4DB4AA") 12 UNNEST(@"SEL$1") 13 OUTLINE(@"SEL$75B5BFA2") 14 MERGE(@"SEL$7D4DB4AA") 15 OUTLINE_LEAF(@"SEL$80F8B8C6") 16 ALL_ROWS 17 OPT_PARAM('_optimizer_cost_model' 'fixed') 18 DB_VERSION(' ') 19 OPTIMIZER_FEATURES_ENABLE(' ') 20 NO_INDEX(@"SEL$1" "T2"@"SEL$1") 21 */ 22 from simple_table t1 where t1.a = 'a' and rowid <> (select max(rowid) from simple_table t2 where t1.a= t2.a and t1.b = t2.b and t1.d=t2.d); Explained. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 253
274 Exercice 14-2 : Utiliser SQL Repair Advisor (suite) --- display the plan select plan_table_output from table(dbms_xplan.display('plan_table',null)); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name Rows Bytes Cost (%CPU) Time PLAN_TABLE_OUTPUT DELETE STATEMENT (34) 00:0 0:01 1 DELETE SIMPLE_TABLE * 2 FILTER 3 HASH GROUP BY (34) 00:0 0:01 PLAN_TABLE_OUTPUT * 4 HASH JOIN (20) 00:0 0:01 * 5 TABLE ACCESS FULL SIMPLE_TABLE (0) 00:0 0:01 * 6 TABLE ACCESS FULL SIMPLE_TABLE (0) 00:0 0:01 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 254
275 Exercice 14-2 : Utiliser SQL Repair Advisor (suite) PLAN_TABLE_OUTPUT Predicate Information (identified by operation id): filter(rowid<>max(rowid)) 4 - access("t1"."a"="t2"."a" AND "T1"."B"="T2"."B" AND "T1"."D"="T2"."D") 5 - filter("t2"."a"='a') 6 - filter("t1"."a"='a') 21 rows selected. -- The plan shows that we we will do a full table scan oun r. -- If we execut this simple system it will crash the system. Pause 6) Appuyez sur [Entrée] pour poursuivre. A présent, exécutez l'instruction. Vous constatez qu'elle échoue. --- This statement caused the system to crash. delete 2 /*+ 3 USE_HASH_AGGREGATION(@"SEL$80F8B8C6") 4 USE_HASH(@"SEL$80F8B8C6" "T1"@"DEL$1") 5 LEADING(@"SEL$80F8B8C6" "T2"@"SEL$1" "T1"@"DEL$1") 6 FULL(@"SEL$80F8B8C6" "T1"@"DEL$1") 7 FULL(@"SEL$80F8B8C6" "T2"@"SEL$1") 8 OUTLINE(@"DEL$1") 9 OUTLINE(@"SEL$1") 10 OUTLINE(@"SEL$AD0B6B07") 11 OUTLINE(@"SEL$7D4DB4AA") 12 UNNEST(@"SEL$1") 13 OUTLINE(@"SEL$75B5BFA2") 14 MERGE(@"SEL$7D4DB4AA") 15 OUTLINE_LEAF(@"SEL$80F8B8C6") 16 ALL_ROWS 17 OPT_PARAM('_optimizer_cost_model' 'fixed') 18 DB_VERSION(' ') 19 OPTIMIZER_FEATURES_ENABLE(' ') 20 NO_INDEX(@"SEL$1" "T2"@"SEL$1") 21 */ 22 from simple_table t1 where t1.a = 'a' and rowid <> (select max(rowid) from simple_table t2 where t1.a= t2.a and t1.b = t2.b and t1.d=t2.d); Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 255
276 Exercice 14-2 : Utiliser SQL Repair Advisor (suite) from simple_table t1 where t1.a = 'a' and rowid <> (select max(rowid) from simple_table t2 where t1.a= t2.a and t1.b = t2.b and t1.d=t2.d) * ERROR at line 22: ORA-00600: internal error code, arguments: [13011], [74582], [ ], [0], [ ], [17], [], [], [], [], [], [] 7) Vous devez utiliser la fonction de conseil SQL Repair Advisor pour analyser la situation et trouver une meilleure alternative. Dans la session SQL*Plus toujours ouverte, exécutez le script connect scott/tiger Connected. set lines 10000; set pages 10000; set long 20000; set serveroutput on; SET TRIMSPOOL ON; SET TAB OFF; SET FEEDBACK 1; alter system flush shared_pool; System altered. set echo on; -- At this point your previous session has crashed due to a problem -- with our delete statement. We now want to use the SQL Repair Advisor -- to fit that problem. Before we begin to fix this problem lets ensure -- that the actual code that prevents this issue in real life is switched off. pause 8) Appuyez sur [Entrée] pour poursuivre. Assurez-vous que le code du problème précédent est toujours désactivé. alter system set "_fix_control"=" :off"; System altered. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 256
277 Exercice 14-2 : Utiliser SQL Repair Advisor (suite) -- Before we can run the SQL Repair Advisor we need to create a -- diagnosis task using dbms_sqldiag. We need to specify the SQL text -- for the statement that causes the crash and a task name. We also need -- to specify the problem type. There are three possible problem types -- PROBLEM_TYPE_COMPILATION_ERROR -- PROBLEM_TYPE_EXECUTION_ERROR -- WRONG_RESULTS -- In this cause since the statement failed during execution we will use -- PROBLEM_TYPE_EXECUTION_ERROR. When the SQL Repair Advisor completes we will run -- dbms_sqldiag.report_diagnosis_task to output the results report to the screen. pause 9) Appuyez sur [Entrée] pour poursuivre. Vous devez analyser la situation à l'aide de la fonction de conseil SQL Repair Advisor. Vous pouvez voir qu'un patch SQL a été trouvé lors de l'analyse. exec dbms_sqldiag.drop_diagnosis_task('sqldiag_bug_ '); BEGIN dbms_sqldiag.drop_diagnosis_task('sqldiag_bug_ '); END; * ERROR at line 1: ORA-13605: The specified task or object sqldiag_bug_ does not exist for the current user. ORA-06512: at "SYS.PRVT_ADVISOR", line 2323 ORA-06512: at "SYS.DBMS_ADVISOR", line 172 ORA-06512: at "SYS.DBMS_SQLTUNE", line 812 ORA-06512: at "SYS.DBMS_SQLDIAG", line 977 ORA-06512: at line 1 declare 2 rep_out clob; 3 t_id varchar2(50); 4 begin 5 t_id := dbms_sqldiag.create_diagnosis_task( 6 sql_text => 'delete /*+ 7 USE_HASH_AGGREGATION(@"SEL$80F8B8C6") 8 USE_HASH(@"SEL$80F8B8C6" "T1"@"DEL$1") 9 LEADING(@"SEL$80F8B8C6" "T2"@"SEL$1" "T1"@"DEL$1") 10 FULL(@"SEL$80F8B8C6" "T1"@"DEL$1") 11 FULL(@"SEL$80F8B8C6" "T2"@"SEL$1") 12 OUTLINE(@"DEL$1") 13 OUTLINE(@"SEL$1") Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 257
278 Exercice 14-2 : Utiliser SQL Repair Advisor (suite) 14 OUTLINE(@"SEL$AD0B6B07") 15 OUTLINE(@"SEL$7D4DB4AA") 16 UNNEST(@"SEL$1") 17 OUTLINE(@"SEL$75B5BFA2") 18 MERGE(@"SEL$7D4DB4AA") 19 OUTLINE_LEAF(@"SEL$80F8B8C6") 20 ALL_ROWS 21 OPT_PARAM(''_optimizer_cost_model'' ''fixed'') 22 DB_VERSION('' '') 23 OPTIMIZER_FEATURES_ENABLE('' '') 24 NO_INDEX(@"SEL$1" "T2"@"SEL$1") 25 */ 26 from simple_table t1 where t1.a = ''a'' and rowid <> (select max(rowid) from simple_table t2 where t1.a= t2.a and t1.b = t2.b and t1.d=t2.d)', 27 task_name => 'sqldiag_bug_ ', 28 problem_type =>DBMS_SQLDIAG.PROBLEM_TYPE_COMPILATION_ERROR); dbms_sqltune.set_tuning_task_parameter( 31 t_id, 32 '_SQLDIAG_FINDING_MODE', 33 dbms_sqldiag.sqldiag_findings_filter_plans); dbms_output.put_line ('t_id = ' t_id); dbms_sqldiag.execute_diagnosis_task (t_id); dbms_output.put_line ('executed t_id = ' t_id); rep_out := dbms_sqldiag.report_diagnosis_task (t_id, DBMS_SQLDIAG.TYPE_TEXT); dbms_output.put_line ('Report : ' rep_out); end; 46 / t_id = sqldiag_bug_ executed t_id = sqldiag_bug_ Report : GENERAL INFORMATION SECTION Tuning Task Name : sqldiag_bug_ Tuning Task Owner : SCOTT Workload Type : Single SQL Statement Scope : COMPREHENSIVE Time Limit(seconds): 1800 Completion Status : COMPLETED Started at : 06/29/ :37:08 Completed at : 06/29/ :37: Schema Name: SCOTT SQL ID : apnt3dq2mq1ds SQL Text : delete /*+ USE_HASH_AGGREGATION(@"SEL$80F8B8C6") Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 258
279 Exercice 14-2 : Utiliser SQL Repair Advisor (suite) USE_HASH(@"SEL$80F8B8C6" "T1"@"DEL$1") LEADING(@"SEL$80F8B8C6" "T2"@"SEL$1" "T1"@"DEL$1") FULL(@"SEL$80F8B8C6" "T1"@"DEL$1") FULL(@"SEL$80F8B8C6" "T2"@"SEL$1") OUTLINE(@"DEL$1") OUTLINE(@"SEL$1") OUTLINE(@"SEL$AD0B6B07") OUTLINE(@"SEL$7D4DB4AA") UNNEST(@"SEL$1") OUTLINE(@"SEL$75B5BFA2") MERGE(@"SEL$7D4DB4AA") OUTLINE_LEAF(@"SEL$80F8B8C6") ALL_ROWS OPT_PARAM('_optimizer_cost_model' 'fixed') DB_VERSION(' ') OPTIMIZER_FEATURES_ENABLE(' ') NO_INDEX(@"SEL$1" "T2"@"SEL$1") */ from simple_table t1 where t1.a = 'a' and rowid <> (select max(rowid) from simple_table t2 where t1.a= t2.a and t1.b = t2.b and t1.d=t2.d) FINDINGS SECTION (1 finding) SQL Patch Finding (see explain plans section below) A potentially better execution plan was found for this statement. Recommandation Consider accepting the recommended SQL patch. execute dbms_sqldiag.accept_sql_patch(task_name => 'sqldiag_bug_ ',task_owner => 'SCOTT', replace => TRUE); Rationale Recommended plan with hash value has number of rows 0, check sum 0, execution time 0 and 12 buffer gets PL/SQL procedure successfully completed. -- The above report tells us that the statement fails during execute -- and it has found a SQL patch for this statement that will prevent Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 259
280 Exercice 14-2 : Utiliser SQL Repair Advisor (suite) -- it from crashing in the future. However, unning the repair advisor -- wont fix the problem automatically. If we run our problematic SQL -- statement now the session will crash. pause 10) Appuyez deux fois sur [Entrée] pour poursuivre. Si vous exécutez à nouveau l'instruction, vous obtenez la même erreur. Cela est dû au fait que vous n'avez pas encore accepté le patch SQL proposé. connect scott/tiger Connected. -- We need to accept the SQL Patch that the SQL Repair Advisor recommended before -- our SQL statement will be able to run without crashing. To accept the SQL Patch -- we must execute dbms_sqldiag.accept_sql_patch and pass it task name pause execute dbms_sqldiag.accept_sql_patch(task_name => 'sqldiag_bug_ ', name => 'delete_patch', task_owner => 'SCOTT', replace => TRUE); PL/SQL procedure successfully completed. -- Now that we have successfully accepted the SQL patch we should be able to -- run our statement without it crashing. Lets first look at the execution -- plan to see if it has changed. pause 11) Appuyez sur [Entrée] pour poursuivre. Regardez le plan d'exécution de remplacement proposé pour l'instruction SQL incriminée. explain plan for 2 delete 3 /*+ 4 USE_HASH_AGGREGATION(@"SEL$80F8B8C6") 5 USE_HASH(@"SEL$80F8B8C6" "T1"@"DEL$1") 6 LEADING(@"SEL$80F8B8C6" "T2"@"SEL$1" "T1"@"DEL$1") 7 FULL(@"SEL$80F8B8C6" "T1"@"DEL$1") 8 FULL(@"SEL$80F8B8C6" "T2"@"SEL$1") 9 OUTLINE(@"DEL$1") 10 OUTLINE(@"SEL$1") 11 OUTLINE(@"SEL$AD0B6B07") 12 OUTLINE(@"SEL$7D4DB4AA") 13 UNNEST(@"SEL$1") Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 260
281 Exercice 14-2 : Utiliser SQL Repair Advisor (suite) 14 OUTLINE(@"SEL$75B5BFA2") 15 MERGE(@"SEL$7D4DB4AA") 16 OUTLINE_LEAF(@"SEL$80F8B8C6") 17 ALL_ROWS 18 OPT_PARAM('_optimizer_cost_model' 'fixed') 19 DB_VERSION(' ') 20 OPTIMIZER_FEATURES_ENABLE(' ') 21 NO_INDEX(@"SEL$1" "T2"@"SEL$1") 22 */ 23 from simple_table t1 where t1.a = 'a' and rowid <> (select max(rowid) from simple_table t2 where t1.a= t2.a and t1.b = t2.b and t1.d=t2.d); Explained. -- display the plan select plan_table_output from table(dbms_xplan.display('plan_table',null,'advanced')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name Rows Bytes Cost (%CPU) Time DELETE STATEMENT (0) 00:00:01 1 DELETE SIMPLE_TABLE * 2 FILTER * 3 INDEX FULL SCAN TC (0) 00:00:01 4 SORT AGGREGATE * 5 TABLE ACCESS FULL SIMPLE_TABLE (0) 00:00: Query Block Name / Object Alias (identified by operation id): DEL$1 3 - DEL$1 / T1@DEL$1 4 - SEL$1 5 - SEL$1 / T2@SEL$1 Outline Data Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 261
282 Exercice 14-2 : Utiliser SQL Repair Advisor (suite) /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "T2"@"SEL$1") INDEX(@"DEL$1" "T1"@"DEL$1" ("SIMPLE_TABLE"."B" "SIMPLE_TABLE"."D" "SIMPLE_TABLE"."A")) OUTLINE_LEAF(@"DEL$1") OUTLINE_LEAF(@"SEL$1") ALL_ROWS OPT_PARAM('_fix_control' ' :0') OPT_PARAM('_optimizer_cost_model' 'fixed') DB_VERSION(' ') OPTIMIZER_FEATURES_ENABLE(' ') IGNORE_OPTIM_EMBEDDED_HINTS END_OUTLINE_DATA */ Predicate Information (identified by operation id): filter(rowid<> (SELECT /*+ UNNEST UNNEST NO_INDEX ("T2") NO_INDEX ("T2") */ MAX(ROWID) FROM "SIMPLE_TABLE" "T2" WHERE "T2"."A"=:B1 AND "T2"."B"=:B2 AND "T2"."D"=:B3)) 3 - access("t1"."a"='a') filter("t1"."a"='a') 5 - filter("t2"."a"=:b1 AND "T2"."B"=:B2 AND "T2"."D"=:B3) Column Projection Information (identified by operation id): (cmp=2,3,4) ROWID[ROWID,10], "T1"."A"[VARCHAR2,40], "T1"."B"[NUMBER,22], "T1"."D"[VARCHAR2,240] 3 - ROWID[ROWID,10], "T1"."A"[VARCHAR2,40], "T1"."B"[NUMBER,22], "T1"."D"[VARCHAR2,240] 4 - (#keys=0) MAX(ROWID)[10] 5 - ROWID[ROWID,10], "T2"."A"[VARCHAR2,40], "T2"."B"[NUMBER,22], "T2"."D"[VARCHAR2,240] Remarque SQL patch "delete_patch" used for this statement 64 rows selected. -- Now lets execute it. pause Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 262
283 Exercice 14-2 : Utiliser SQL Repair Advisor (suite) 12) Appuyez sur [Entrée] pour poursuivre. Essayez d'exécuter à nouveau l'instruction. Vous devez constater qu'elle ne génère plus d'erreur. La fin du script rétablit le chemin du code d'origine. Vous pouvez à présent quitter la session SQL*Plus. delete 2 /*+ 3 USE_HASH_AGGREGATION(@"SEL$80F8B8C6") 4 USE_HASH(@"SEL$80F8B8C6" "T1"@"DEL$1") 5 LEADING(@"SEL$80F8B8C6" "T2"@"SEL$1" "T1"@"DEL$1") 6 FULL(@"SEL$80F8B8C6" "T1"@"DEL$1") 7 FULL(@"SEL$80F8B8C6" "T2"@"SEL$1") 8 OUTLINE(@"DEL$1") 9 OUTLINE(@"SEL$1") 10 OUTLINE(@"SEL$AD0B6B07") 11 OUTLINE(@"SEL$7D4DB4AA") 12 UNNEST(@"SEL$1") 13 OUTLINE(@"SEL$75B5BFA2") 14 MERGE(@"SEL$7D4DB4AA") 15 OUTLINE_LEAF(@"SEL$80F8B8C6") 16 ALL_ROWS 17 OPT_PARAM('_optimizer_cost_model' 'fixed') 18 DB_VERSION(' ') 19 OPTIMIZER_FEATURES_ENABLE(' ') 20 NO_INDEX(@"SEL$1" "T2"@"SEL$1") 21 */ 22 from simple_table t1 where t1.a = 'a' and rowid <> (select max(rowid) from simple_table t2 where t1.a= t2.a and t1.b = t2.b and t1.d=t2.d); 1 row deleted. -- Finally we need to restore the system back the way we found it. -- We must drop the SQL Patch we have accepted and turn back on the -- original code path that prevented this problem in the first place. execute dbms_sqldiag.drop_sql_patch('delete_patch'); PL/SQL procedure successfully completed. alter system set "_fix_control"=" :on"; System altered. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 263
284 Exercices - Chapitre 15 Dans cet exercice, vous allez utiliser Enterprise Manager pour surveiller des commandes SQL. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 264
285 Exercice 15-1 : Utiliser Enterprise Manager pour surveiller des commandes SQL Dans cet exercice, vous allez apprendre à utiliser Enterprise Manager pour surveiller des commandes SQL. 1) Accédez au répertoire /home/oracle/solutions/sqlmonitor. Connectez-vous en tant qu'utilisateur SYS et exécutez le script moni_setup.sql. Passez à l'étape suivante de cet exercice pendant que la dernière instruction SELECT est en cours d'exécution. $ cd /home/oracle/solutions/sqlmonitor $. oraenv ORACLE_SID = [db10g]? orcl $ $ sqlplus / as sysdba SQL*Plus: Release Production on Wed Oct 7 06:59: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing set long set longchunksize set linesize 200 set pagesize 1000 /*== Drop and create a test tablespace and user ==*/ DROP USER moni CASCADE; DROP USER moni CASCADE * ERROR at line 1: ORA-01918: user 'MONI' does not exist DROP TABLESPACE moni_tbs INCLUDING CONTENTS; DROP TABLESPACE moni_tbs INCLUDING CONTENTS * ERROR at line 1: ORA-00959: tablespace 'MONI_TBS' does not exist CREATE SMALLFILE TABLESPACE MONI_TBS 2 DATAFILE '+DATA' 3 SIZE 100M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE 32767M NOLOGGING Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 265
286 Exercice 15-1 : Utiliser Enterprise Manager pour surveiller des commandes SQL (suite) 4 EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; Tablespace created. CREATE USER moni IDENTIFIED BY moni 2 DEFAULT TABLESPACE moni_tbs TEMPORARY TABLESPACE temp; User created. GRANT connect, resource, dba to moni; Grant succeeded. /*== Drop and create a MONI_TEST table as MONI user ==*/ CONNECT moni/moni Connected. DROP TABLE moni_test purge; DROP TABLE moni_test purge * ERROR at line 1: ORA-00942: table or view does not exist CREATE TABLE moni_test(c number, d varchar2(500)); Table created. begin 2 for i in 1.00, loop 3 insert into moni_test values(1,'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'); 4 end loop; 5 commit; 6 end; 7 / PL/SQL procedure successfully completed. CREATE INDEX moni_test_c_indx on moni_test(c); Index created. /*== Start long running query ==*/ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 266
287 Exercice 15-1 : Utiliser Enterprise Manager pour surveiller des commandes SQL (suite) SELECT count(*) FROM moni_test t1, moni_test t2 2 WHERE t1.c=t2.c AND t1.c=1; 2) Pour afficher et surveiller une instruction SQL de longue durée avec l'interface Enterprise Manager Database Control, procédez comme suit : a) Dans une fenêtre de navigateur, ouvrez Enterprise Manager Database Control. b) Dans la page Database Login, entrez SYS dans le champ User Name et oracle_4u dans le champ Password. Dans la liste déroulante Connect As, sélectionnez SYSDBA, puis cliquez sur Login. c) Cliquez sur l'onglet Performance. La page Performance doit afficher des informations sur l'activité du système. d) Faites défiler l'affichage vers le bas de la page et cliquez sur SQL Monitoring dans la section Additional Monitoring Links. e) La page Monitored SQL Executions s'affiche. f) Dans la page Monitored SQL Execution, cliquez sur le lien SQL ID. g) La page Monitored SQL Execution Details s'affiche. h) La partie supérieure de la page présente la section Overview information. Dans la vue supérieure droite, vous voyez les sections Time and Wait Statistics et I/O Statistics. i) La section Details possède au minimum deux onglets : Plan Statistics et Activity. Si vous effectuez des exécutions d'interrogations en mode Parallel, vous disposez également d'un onglet Parallel. j) La partie droite affiche plus de détails sur la page Plan Statistics. k) Cliquez sur l'onglet Activity. l) Ce graphique montre que l'instruction SELECT utilise toutes les ressources CPU. m) Dans la partie supérieure droite de la page Monitored SQL Execution Details, cliquez sur View Report. n) L'état de la fonction de surveillance SQL présente les mêmes informations que celles affichées précédemment dans les pages du graphique. Faites défiler vers le bas, si nécessaire. o) La section SQL Plan Monitoring Details se trouve dans la partie inférieure. Cliquez sur OK. p) Dans la page Monitored SQL Execution Details, cliquez sur le lien User MONI pour afficher les informations de session relatives à cet utilisateur. q) Analysez ces informations dans la page Session Details. r) Cette page présente plusieurs onglets. Après avoir consulté les informations de session, cliquez sur l'onglet SQL Monitoring (à droite) s) Cliquez sur le lien SQL ID pour revenir dans la page Monitored SQL Execution Details. t) Pour afficher les détails SQL, cliquez sur le lien SQL ID dans la page Monitored SQL Execution Details. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 267
288 Exercice 15-1 : Utiliser Enterprise Manager pour surveiller des commandes SQL (suite) u) Analysez les détails SQL. v) Cliquez ensuite sur Logout dans la partie supérieure droite de la page. 3) Pour nettoyer votre environnement, procédez comme suit : a) Après avoir terminé la surveillance de votre interrogation, retournez à la session SQL*Plus et appuyez sur Ctrl + C pour arrêter l'exécution. Connectez-vous en tant que SYSDBA, puis exécutez le script moni_cleanup.sql. SELECT count(*) FROM moni_test t1, moni_test t2 * ERROR at line 1: ORA-01013: user requested cancel of current operation connect / as sysdba /*== Drop test tablespace and user ==*/ DROP USER moni CASCADE; User dropped. DROP TABLESPACE moni_tbs INCLUDING CONTENTS AND DATAFILES; Tablespace dropped. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 268
289 Exercices - Chapitre 16 Dans cet exercice, vous allez utiliser la fonctionnalité Automatic Memory Management (gestion automatique de la mémoire) et la publication différée des statistiques destinées à l'optimiseur. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 269
290 Exercice 16-1 : Utiliser la fonctionnalité Automatic Memory Management Dans cet exercice, vous allez utiliser la fonctionnalité Automatic Memory Management pour démontrer qu'il n'est plus nécessaire de modifier manuellement les paramètres SGA_TARGET et PGA_AGGREGATE_TARGET. Vous allez observer la répartition de la mémoire lorsque vous exécutez une interrogation en parallèle qui consomme une grande quantité de mémoire SGA et lorsque vous exécutez un bloc PL/SQL qui consomme une grande quantité de mémoire PGA. 1) Avant de commencer cet exercice, arrêtez Enterprise Manager Database Control pour la base de données orcl. $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ $ emctl stop dbconsole Oracle Enterprise Manager 11g Database Control Release Copyright (c) 1996, 2009 Oracle Corporation. Tous droits réservés. Stopping Oracle Enterprise Manager 11g Database Control Stopped. $ 2) Faites une copie de votre fichier SPFILE. $ cd /home/oracle/solutions/amm $ $ sqlplus / as sysdba SQL*Plus: Release Production on Wed Oct 7 07:42: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options CREATE PFILE='/u01/app/oracle/acfsmounts/acfs_db1/dbs/initorcl.ora.bak' FROM SPFILE; File created. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 270
291 Exercice 16-1 : Utiliser la fonctionnalité Automatic Memory Management (suite) 3) Alors que vous êtes toujours connecté en tant qu'utilisateur SYS dans SQL*Plus, définissez les paramètres comme suit dans votre fichier SPFILE uniquement. Utilisez le fichier change_parameters.sql situé dans votre répertoire /home/oracle/solutions/amm. _PX_use_large_pool = TRUE _memory_broker_stat_interval = 5 _memory_management_tracing = 31 parallel_execution_message_size = parallel_max_servers = 200 parallel_adaptive_multi_user = FALSE processes = 200 sga_target = 0 pga_aggregate_target = 0 memory_target = alter system set "_PX_use_large_pool" = TRUE SCOPE=SPFILE; System altered. alter system set "_memory_broker_stat_interval" = 5 SCOPE=SPFILE; System altered. alter system set "_memory_management_tracing" = 31 SCOPE=SPFILE; System altered. alter system set "parallel_execution_message_size" = SCOPE=SPFILE; System altered. alter system set "parallel_max_servers" = 200 SCOPE=SPFILE; System altered. alter system set "parallel_adaptive_multi_user" = FALSE SCOPE=SPFILE; System altered. alter system set "processes" = 200 SCOPE=SPFILE; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 271
292 Exercice 16-1 : Utiliser la fonctionnalité Automatic Memory Management (suite) System altered. alter system set "pga_aggregate_target" = 0 SCOPE=SPFILE; System altered. alter system set "sga_target" = 0 SCOPE=SPFILE; System altered. alter system set "memory_target" = 280M SCOPE=SPFILE; System altered. 4) Toujours connecté en tant qu'utilisateur SYS à votre session SQL*Plus, exécutez le script set echo on drop tablespace tbssga including contents and datafiles; drop tablespace tbssga including contents and datafiles * ERROR at line 1: ORA-00959: tablespace 'TBSSGA' does not exist create tablespace tbssga datafile '+DATA' size 20m; Tablespace created. drop tablespace mytemp including contents and datafiles; drop tablespace mytemp including contents and datafiles * ERROR at line 1: ORA-00959: tablespace 'MYTEMP' does not exist create temporary tablespace mytemp tempfile '+DATA' size 40m reuse; Tablespace created. drop user amm cascade; drop user amm cascade * Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 272
293 Exercice 16-1 : Utiliser la fonctionnalité Automatic Memory Management (suite) ERROR at line 1: ORA-01918: user 'AMM' does not exist create user amm identified by amm default tablespace tbssga temporary tablespace mytemp; User created. grant connect,resource,dba to amm; Grant succeeded. select substr(component, 0, 10) COMP, CURRENT_SIZE CS, USER_SPECIFIED_SIZE US from v$memory_dynamic_components where CURRENT_SIZE!=0; COMP CS US shared poo large pool java pool streams po SGA Target DEFAULT bu Shared IO PGA Target rows selected. connect amm/amm Connected. drop table tabsga purge; drop table tabsga purge * ERROR at line 1: ORA-00942: table or view does not exist create table tabsga(a number, b number) tablespace tbssga; Table created. begin 2 for i in 1.00, loop 3 insert into tabsga values (i, i); 4 end loop; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 273
294 Exercice 16-1 : Utiliser la fonctionnalité Automatic Memory Management (suite) 5 end; 6 / PL/SQL procedure successfully completed. commit; Commit complete. alter table tabsga parallel 64; Table altered. create or replace procedure testpga( psize number ) as 2 begin 3 declare 4 TYPE nallotment_tabtyp IS TABLE OF char(2048) INDEX BY BINARY_INTEGER; 5 myarray nallotment_tabtyp; 6 begin 7 for i in 1..psize loop 8 myarray(i) := to_char(i); 9 end loop; 10 end; 11 end; 12 / Procedure created. show errors No errors. select substr(component, 0, 10) COMP, CURRENT_SIZE CS, USER_SPECIFIED_SIZE US from v$memory_dynamic_components where CURRENT_SIZE!=0; COMP CS US shared poo large pool java pool streams po SGA Target DEFAULT bu Shared IO PGA Target rows selected. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 274
295 Exercice 16-1 : Utiliser la fonctionnalité Automatic Memory Management (suite) connect / as sysdba Connected. 5) Toujours connecté à votre session SQL*Plus en tant qu'utilisateur SYS, arrêtez et démarrez votre instance de base de données : shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. startup; ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database opened. 6) Connectez-vous en tant qu'utilisateur AMM dans votre session SQL*Plus, déterminez les paramètres actuels des différentes mémoires tampons, ainsi que la liste des opérations de redimensionnement effectuées depuis le démarrage de l'instance. Pour cela, utilisez le script components.sql. connect amm/amm set echo on select substr(component, 0, 10) COMP, CURRENT_SIZE CS, USER_SPECIFIED_SIZE US from v$memory_dynamic_components where CURRENT_SIZE!=0; COMP CS US shared poo large pool java pool SGA Target DEFAULT bu PGA Target rows selected. select substr(component, 0, 10), FINAL_SIZE, OPER_TYPE, OPER_MODE, status from v$memory_resize_ops order by START_TIME; SUBSTR(COMPONENT,0, FINAL_SIZE OPER_TYPE OPER_MODE STATUS Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 275
296 Exercice 16-1 : Utiliser la fonctionnalité Automatic Memory Management (suite) DEFAULT 8K 0 STATIC COMPLETE DEFAULT bu STATIC COMPLETE DEFAULT 2K 0 STATIC COMPLETE DEFAULT bu STATIC IMMEDIATE COMPLETE shared poo STATIC COMPLETE large pool STATIC COMPLETE large pool GROW IMMEDIATE COMPLETE java pool STATIC COMPLETE streams po 0 STATIC COMPLETE SGA Target STATIC COMPLETE DEFAULT 32 0 STATIC COMPLETE DEFAULT 16 0 STATIC COMPLETE PGA Target STATIC COMPLETE RECYCLE bu 0 STATIC COMPLETE KEEP buffe 0 STATIC COMPLETE ASM Buffer 0 STATIC COMPLETE DEFAULT 4K 0 STATIC COMPLETE DEFAULT bu STATIC IMMEDIATE COMPLETE DEFAULT bu INITIALIZING IMMEDIATE COMPLETE shared poo GROW IMMEDIATE COMPLETE shared poo GROW IMMEDIATE COMPLETE DEFAULT bu SHRINK IMMEDIATE COMPLETE shared poo GROW IMMEDIATE COMPLETE DEFAULT bu SHRINK IMMEDIATE COMPLETE DEFAULT bu SHRINK IMMEDIATE COMPLETE shared poo GROW IMMEDIATE COMPLETE 26 rows selected. 7) Toujours connecté en tant qu'utilisateur AMM dans votre session SQL*Plus, exécutez l'interrogation suivante et, tout de suite après, déterminez à nouveau les tailles des composants et les opérations de redimensionnement. Pour cela, utilisez le script query1.sql. Qu'observez-vous? select /*+ PARALLEL(s 24) */ count(*) from (select /*+ parallel(s 24) */ * from tabsga s group by a); a) Vous pouvez constater que la zone de mémoire LARGE POOL est beaucoup plus grande et que le cache de tampons est plus petit. Ce transfert de mémoire a été effectué automatiquement par le set echo on select /*+ PARALLEL(s 24) */ count(*) from (select /*+ parallel(s 24) */ * from tabsga s group by a); COUNT(*) select substr(component, 0, 10) COMP, CURRENT_SIZE CS, USER_SPECIFIED_SIZE US from v$memory_dynamic_components where CURRENT_SIZE!=0; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 276
297 Exercice 16-1 : Utiliser la fonctionnalité Automatic Memory Management (suite) COMP CS US shared poo large pool java pool SGA Target DEFAULT bu PGA Target rows selected. select substr(component, 0, 10), FINAL_SIZE, OPER_TYPE, OPER_MODE, status from v$memory_resize_ops order by START_TIME; SUBSTR(COMPONENT,0,10)FINAL_SIZE OPER_TYPE OPER_MODE STATUS shared poo STATIC COMPLETE large pool GROW IMMEDIATE COMPLETE large pool STATIC COMPLETE java pool STATIC COMPLETE streams po 0 STATIC COMPLETE SGA Target STATIC COMPLETE ASM Buffer 0 STATIC COMPLETE large pool GROW IMMEDIATE COMPLETE large pool GROW IMMEDIATE COMPLETE large pool GROW IMMEDIATE COMPLETE large pool GROW IMMEDIATE COMPLETE SGA Target GROW IMMEDIATE COMPLETE 68 rows selected. 8) Exécutez de nouveau l'étape précédente en utilisant cette fois le script query2.sql. Qu'observez-vous? a) La même tendance se set echo on select /*+ PARALLEL(s 25) */ count(*) from (select /*+ parallel(s 25) */ * from tabsga s group by a); COUNT(*) select substr(component, 0, 10) COMP, CURRENT_SIZE CS, USER_SPECIFIED_SIZE US from v$memory_dynamic_components where CURRENT_SIZE!=0; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 277
298 Exercice 16-1 : Utiliser la fonctionnalité Automatic Memory Management (suite) COMP CS US shared poo large pool java pool SGA Target DEFAULT bu PGA Target rows selected. select substr(component, 0, 10), FINAL_SIZE, OPER_TYPE, OPER_MODE, status from v$memory_resize_ops order by START_TIME; SUBSTR(COMPONENT,0,10) FINAL_SIZE OPER_TYPE OPER_MODE STATUS RECYCLE bu 0 STATIC COMPLETE PGA Target STATIC COMPLETE shared poo STATIC COMPLETE large pool STATIC COMPLETE large pool GROW IMMEDIATE COMPLETE java pool STATIC COMPLETE DEFAULT bu GROW DEFERRED ERROR DEFAULT bu SHRINK IMMEDIATE COMPLETE shared poo GROW IMMEDIATE COMPLETE shared poo SHRINK DEFERRED ERROR DEFAULT bu GROW DEFERRED ERROR DEFAULT bu SHRINK IMMEDIATE COMPLETE shared poo GROW IMMEDIATE COMPLETE 91 rows selected. 9) Toujours connecté en tant qu'utilisateur AMM dans votre session SQL*Plus, exécutez le script query3.sql et, tout de suite après, déterminez les tailles des composants de mémoire et la liste des opérations de redimensionnement. Comme l'exécution de ce script prend 10 à 15 minutes, vous avez le temps de faire une pause. Qu'observez-vous? a) Vous pouvez constater que la mémoire SGA a été réduite automatiquement alors que la mémoire PGA a été augmentée. En effet, l'interrogation numéro trois a besoin d'une grande quantité de mémoire PGA non réglable. Quittez set echo on exec testpga(800000); PL/SQL procedure successfully completed. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 278
299 Exercice 16-1 : Utiliser la fonctionnalité Automatic Memory Management (suite) select substr(component, 0, 10) COMP, CURRENT_SIZE CS, USER_SPECIFIED_SIZE US from v$memory_dynamic_components where CURRENT_SIZE!=0; COMP CS US shared poo large pool java pool SGA Target DEFAULT bu PGA Target rows selected. select substr(component, 0, 10), FINAL_SIZE, OPER_TYPE, OPER_MODE, status from v$memory_resize_ops order by START_TIME; SUBSTR(COMPONENT,0,10)FINAL_SIZE OPER_TYPE OPER_MODE STATUS RECYCLE bu 0 STATIC COMPLETE PGA Target STATIC COMPLETE shared poo STATIC COMPLETE shared poo GROW IMMEDIATE COMPLETE DEFAULT bu SHRINK IMMEDIATE COMPLETE SGA Target SHRINK DEFERRED COMPLETE DEFAULT bu SHRINK DEFERRED COMPLETE PGA Target GROW MANUAL COMPLETE 128 rows selected. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 10) Dans une fenêtre de terminal, redémarrez Enterprise Manager Database Control et étudiez les variations de mémoire qui se sont produites au cours de l'exercice. Qu'observez-vous? $ emctl start dbconsole Oracle Enterprise Manager 11g Database Control Release Copyright (c) 1996, 2009 Oracle Corporation. Tous droits réservés. Starting Oracle Enterprise Manager 11g Database Control... started Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 279
300 Exercice 16-1 : Utiliser la fonctionnalité Automatic Memory Management (suite) Logs are generated in directory /u01/app/oracle/acfsmounts/acfs_db1/ed.us.oracle.com_orcl/sysman/ log $ a) Accédez à la page d'accueil Enterprise Manager. b) Cliquez sur l'onglet Server. c) Dans la sous-page Server, cliquez sur le lien Memory Advisors dans la section Database Configuration. d) Dans la page Memory Advisors, consultez les deux premiers graphiques. e) Vous devez constater que la zone de mémoire LARGE POOL a été augmentée, que la mémoire totale SGA a également été augmentée et que la mémoire SGA a été réduite au profit de la mémoire PGA. f) Déconnectez-vous d'enterprise Manager Database Console. 11) Pour nettoyer votre environnement, fermez l'instance de base de données, restaurez le fichier SPFILE d'origine et redémarrez l'instance. Pour cela, exécutez le script amm_cleanup.sh qui annule vos modifications. $ cd /home/oracle/solutions/amm $./amm_cleanup.sh Oracle Enterprise Manager 11g Database Control Release Copyright (c) 1996, 2009 Oracle Corporation. Tous droits réservés. Stopping Oracle Enterprise Manager 11g Database Control Stopped. SQL*Plus: Release Production on Wed Oct 7 08:54: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options User dropped. Tablespace dropped. Tablespace dropped. Database closed. Database dismounted. ORACLE instance shut down. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 280
301 Exercice 16-1 : Utiliser la fonctionnalité Automatic Memory Management (suite) File created. ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database opened. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Oracle Enterprise Manager 11g Database Control Release Copyright (c) 1996, 2009 Oracle Corporation. Tous droits réservés. Starting Oracle Enterprise Manager 11g Database Control... started Logs are generated in directory /u01/app/oracle/acfsmounts/acfs_db1/ed.us.oracle.com_orcl/sysman/ log $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 281
302 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur Dans cet exercice, vous allez utiliser la publication différée des statistiques et les extensions de statistiques. L'objectif est de tester diverses collectes de statistiques sur une table avant de publier les meilleures dans votre environnement de production. 1) Exécutez le script stats_setup.sh. Ce script crée le nouvel utilisateur STATS, puis génère et alimente la nouvelle table STATS.TABJFV. $ cd /home/oracle/solutions/stats $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $./stats_setup.sh SQL*Plus: Release Production on Wed Oct 7 10:24: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options drop user stats cascade * ERROR at line 1: ORA-01918: user 'STATS' does not exist User created. Grant succeeded. Connected. drop table tabjfv purge * ERROR at line 1: ORA-00942: table or view does not exist 2 Table created PL/SQL procedure successfully completed. Commit complete. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 282
303 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 2) Démarrez une session SQL*Plus en tant qu'utilisateur STATS et ne vous déconnectez pas. Supprimez toutes les statistiques existantes relatives à la table STATS.TABJFV et vérifiez qu'il ne reste aucune statistique publique ou en attente. Pour cela, utilisez le script delete_stats.sql. $ sqlplus stats/stats SQL*Plus: Release Production on Wed Oct 7 10:26: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing Session altered. PL/SQL procedure successfully completed. old new 3: where table_name = '&1' 3: where table_name = 'TABJFV' TABLE_NAME ANALYZE_TIME NUM_ROWS BLOCKS AVG_ROW_LEN TABJFV old new 4: where table_name = '&1' 4: where table_name = 'TABJFV' no rows selected old new 4: where table_name = '&1' 4: where table_name = 'TABJFV' COLUMN_NAME ANALYZE_TIME NUM_DISTINCT NUM_NULLS DENSITY C1 C2 C3 C4 C5 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 283
304 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) C6 C7 C8 C9 9 rows selected. -- private statistics: show_pending_stats TABJFV set echo off old 3: where table_name = '&1' and partition_name is null new 3: where table_name = 'TABJFV' and partition_name is null no rows selected old new 4: where table_name = '&1' and partition_name is null 4: where table_name = 'TABJFV' and partition_name is null no rows selected old new 4: where table_name = '&1' and partition_name is null 4: where table_name = 'TABJFV' and partition_name is null no rows selected 3) Fixez le mode de publication des statistiques de la table STATS.TABJFV en choisissant la valeur PENDING. Pour cela, utilisez le script -- table publish mode should be TRUE, for now select dbms_stats.get_prefs('publish', 'stats', 'tabjfv') publish from dual; PUBLISH TRUE -- set table value to false, i.e, do not publish statistics exec dbms_stats.set_table_prefs('stats', 'tabjfv', 'PUBLISH', 'FALSE'); PL/SQL procedure successfully completed. -- table publish mode should be FALSE now select dbms_stats.get_prefs('publish', 'stats', 'tabjfv') publish from dual; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 284
305 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) PUBLISH FALSE 4) Collectez les statistiques sur la table STATS.TABJFV et analysez le résultat. Qu'observez-vous? Pour cela, utilisez le script collect_pending.sql. a) Les statistiques ne sont visibles que dans la zone d'attente. Par défaut, votre session utilise uniquement des statistiques -- Collect stats begin 2 dbms_stats.gather_table_stats(null, 'tabjfv', 3 method_opt => 'for all columns size 1 for columns c1 size 254 for columns c2 size 254'); 4 end; 5 / PL/SQL procedure successfully completed. -- public statistics: still show_public_stats TABJFV set echo off old 3: where table_name = '&1' new 3: where table_name = 'TABJFV' TABLE_NAME ANALYZE_TIME NUM_ROWS BLOCKS AVG_ROW_LEN TABJFV old new 4: where table_name = '&1' 4: where table_name = 'TABJFV' no rows selected old new 4: where table_name = '&1' 4: where table_name = 'TABJFV' COLUMN_NAME ANALYZE_TIME NUM_DISTINCT NUM_NULLS DENSITY C1 C2 C3 C4 C5 C6 C7 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 285
306 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) C8 C9 9 rows selected. -- private statistics: should see values (0.001 for density for both C1 and C2, 0.2 for show_pending_stats TABJFV set echo off old 3: where table_name = '&1' and partition_name is null new 3: where table_name = 'TABJFV' and partition_name is null TABLE_NAME analyze time NUM_ROWS BLOCKS AVG_ROW_LEN TABJFV 10/07 10:34: old new 4: where table_name = '&1' and partition_name is null 4: where table_name = 'TABJFV' and partition_name is null no rows selected old new 4: where table_name = '&1' and partition_name is null 4: where table_name = 'TABJFV' and partition_name is null COLUMN_NAME analyze time NUM_DISTINCT NUM_NULLS DENSITY C1 10/07 10:33: C2 10/07 10:33: C3 10/07 10:33: C4 10/07 10:33: C5 10/07 10:33: C6 10/07 10:33: C7 10/07 10:33: C8 10/07 10:33: C9 10/07 10:33: rows selected. -- Should be false: use public statistics show parameter optimizer_use_pending_statistics NAME TYPE VALUE optimizer_use_pending_statistics boolean FALSE Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 286
307 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) 5) Dans une fenêtre de terminal où vous êtes connecté à SQL*Plus en tant qu'utilisateur STATS (ne quittez pas la session après cette étape), désactivez l'échantillonnage dynamique pour la session et déterminez le nombre de lignes que l'optimiseur peut actuellement estimer pour l'interrogation suivante : select count(*) from tabjfv where c1 = 1 and c2 = 1; Quelle est votre conclusion? Pour exécuter cette étape, utilisez le script determine1.sql. a) Comme vous n'utilisez pas l'échantillonnage dynamique et qu'il n'existe aucune statistique publique pour votre table, l'optimiseur génère une estimation erronée du nombre de lignes renvoyées par l'interrogation. Il utilise la valeur 1 au lieu de set echo on alter session set optimizer_dynamic_sampling = 0; Session altered. select count(*) from tabjfv where c1 = 1 and c2 = 1; COUNT(*) explain plan for select count(*) from tabjfv where c1 = 1 and c2 = 1; Explained. select plan_table_output 2 from table(dbms_xplan.display('plan_table',null,'basic ROWS')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name Rows SELECT STATEMENT 1 1 SORT AGGREGATE 1 2 TABLE ACCESS FULL TABJFV rows selected. 6) Maintenant, modifiez votre session de façon à utiliser les statistiques en attente qui ont été collectées précédemment. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 287
308 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) alter session set optimizer_use_pending_statistics = true; Session altered. 7) A nouveau, déterminez l'estimation de l'optimiseur quant au nombre de lignes renvoyées par votre interrogation. Qu'observez-vous? Pour exécuter cette étape, utilisez le script determine2.sql. a) A nouveau, l'optimiseur indique une estimation erronée. En effet, il ne voit pas que C1 et C2 sont fortement corrélées pour la valeur set echo on explain plan for select count(*) from tabjfv where c1 = 1 and c2 = 1; Explained. select plan_table_output 2 from table(dbms_xplan.display('plan_table',null,'basic ROWS')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name Rows SELECT STATEMENT 1 1 SORT AGGREGATE 1 2 TABLE ACCESS FULL TABJFV rows selected. 8) Créez une extension de statistique regroupant C1 et C2, pour indiquer que les deux colonnes sont corrélées dans STATS.TABJFV. Ensuite, collectez de nouveau les statistiques relatives à la table avec une précision maximale pour l'extension. Pour cela, utilisez le script col table_name format a10 col extension format a12 select * from user_stat_extensions; no rows selected Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 288
309 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) -- Create extention on the 2 columns select dbms_stats.create_extended_stats(null,'tabjfv','(c1,c2)') from dual; DBMS_STATS.CREATE_EXTENDED_STATS(NULL,'TABJFV','(C1,C2)') SYS_STUF3GLKIOP5F4B0BTTCFTMX0W select * from user_stat_extensions; TABLE_NA EXTENSION_NAME EXTENSION CREATO DRO TABJFV SYS_STUF3GLKIOP5F4B0BTTCFTMX0W ("C1","C2") USER YES -- Collect stats begin 2 dbms_stats.gather_table_stats(null, 'tabjfv', 3 method_opt => 'for all columns size 1 for columns (c1,c2) size 254'); 4 end; 5 / PL/SQL procedure successfully completed. -- public statistics: still show_public_stats TABJFV set echo off old 3: where table_name = '&1' new 3: where table_name = 'TABJFV' TABLE_NAME ANALYZE_TIME NUM_ROWS BLOCKS AVG_ROW_LEN TABJFV old new 4: where table_name = '&1' 4: where table_name = 'TABJFV' no rows selected old new 4: where table_name = '&1' 4: where table_name = 'TABJFV' COLUMN_NAME ANALYZE_TIME NUM_DISTINCT NUM_NULLS DENSITY C1 C2 C3 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 289
310 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) C4 C5 C6 C7 C8 C9 9 rows selected. -- private statistics: should see values and also the new virtual column! Density=0.2 for all except virtual one: show_pending_stats TABJFV set echo off old 3: where table_name = '&1' and partition_name is null new 3: where table_name = 'TABJFV' and partition_name is null TABLE_NAME analyze time NUM_ROWS BLOCKS AVG_ROW_LEN TABJFV 10/07 10:44: old new 4: where table_name = '&1' and partition_name is null 4: where table_name = 'TABJFV' and partition_name is null no rows selected old new 4: where table_name = '&1' and partition_name is null 4: where table_name = 'TABJFV' and partition_name is null COLUMN_NAME analyze time NUM_DISTINCT NUM_NULLS DENSITY C1 10/07 10:44: C2 10/07 10:44: C3 10/07 10:44: C4 10/07 10:44: C5 10/07 10:44: C6 10/07 10:44: C7 10/07 10:44: C8 10/07 10:44: C9 10/07 10:44: Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 290
311 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) SYS_STUF3GLKIOP5F4B0BTTCFTMX0W 10/07 10:44: rows selected. 9) A nouveau, déterminez l'estimation de l'optimiseur quant au nombre de lignes renvoyées par votre interrogation. Qu'observez-vous? (Utilisez le script determine2.sql.) a) Vous devriez voir une estimation set echo on explain plan for select count(*) from tabjfv where c1 = 1 and c2 = 1; Explained. select plan_table_output 2 from table(dbms_xplan.display('plan_table',null,'basic ROWS')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name Rows SELECT STATEMENT 1 1 SORT AGGREGATE 1 2 TABLE ACCESS FULL TABJFV rows selected. 10) Exécutez le script add_rows.sql dans votre session SQL*Plus. Une fois l'exécution terminée, la table contient cinq valeurs différentes, répétées 200 fois chacune (de manière uniforme). Toutes les colonnes contiennent la même valeur. Elles contiennent également 200 lignes de valeurs -- Insert some more rows. Now the table has 5 values each repeating times (uniform). All columns have same value. begin 2 for i in 1.0,5 loop 3 for j in 1.00,100 loop 4 insert into tabjfv(c1,c2,c3,c4,c5,c6,c7,c8,c9) values (i,i,i,i,i,i,i,i,i); Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 291
312 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) 5 end loop; 6 end loop; 7 end; 8 / PL/SQL procedure successfully completed. commit; Commit complete. -- Insert 200 null rows begin 2 for j in 1.0,200 loop 3 insert into tabjfv(c1) values (null); 4 end loop; 5 end; 6 / PL/SQL procedure successfully completed. commit; Commit complete. 11) A nouveau, déterminez l'estimation de l'optimiseur quant au nombre de lignes renvoyées par votre interrogation dans les trois cas suivants : sans échantillonnage dynamique, avec échantillonnage dynamique de niveau 3 et avec échantillonnage dynamique de niveau 4. Qu'observez-vous? Pour cela, utilisez le script show_dynamic_stats.sql. a) Sans échantillonnage dynamique, l'estimation est incorrecte car les statistiques n'ont pas été actualisées. L'échantillonnage dynamique de niveau 3 n'est pas suffisant pour obtenir une meilleure estimation. Avec un échantillonnage dynamique de niveau 4, vous obtenez une estimation -- Try without dynamic sampling -- explain plan for select * from tabjfv where c1 = 1 and c2 = 1; Explained. select plan_table_output from table(dbms_xplan.display('plan_table',null,'basic ROWS')); PLAN_TABLE_OUTPUT Plan hash value: Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 292
313 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) Id Operation Name Rows SELECT STATEMENT TABLE ACCESS FULL TABJFV rows selected. -- Try the queries with dynamic sampling level 3. Dynamic sampling will not -- kick in. It will use multi column stats and produce the same estimate -- (100 rows) as before. explain plan for select /*+ dynamic_sampling(3) */ * from tabjfv where c1 = 1 and c2 = 1; Explained. select plan_table_output from table(dbms_xplan.display('plan_table',null,'basic ROWS')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name Rows SELECT STATEMENT TABLE ACCESS FULL TABJFV rows selected. -- Try with level 4. Dynamic sampling kicks in. we should see the improved -- estimate (200 rows) explain plan for select /*+ dynamic_sampling(4) */ * from tabjfv where c1 = 1 and c2 = 1; Explained. select plan_table_output from table(dbms_xplan.display('plan_table',null,'basic ROWS')); PLAN_TABLE_OUTPUT Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 293
314 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) Plan hash value: Id Operation Name Rows SELECT STATEMENT TABLE ACCESS FULL TABJFV rows selected. 12) Collectez à nouveau les statistiques en attente pour votre table. Pour cela, utilisez le script -- Collect stats begin 2 dbms_stats.gather_table_stats(null, 'tabjfv', 3 method_opt => 'for all columns size 1 for columns (c1,c2) size 254'); 4 end; 5 / PL/SQL procedure successfully completed. -- public statistics: still show_public_stats TABJFV set echo off old 3: where table_name = '&1' new 3: where table_name = 'TABJFV' TABLE_NAME ANALYZE_TIME NUM_ROWS BLOCKS AVG_ROW_LEN TABJFV old new 4: where table_name = '&1' 4: where table_name = 'TABJFV' no rows selected old new 4: where table_name = '&1' 4: where table_name = 'TABJFV' COLUMN_NAME ANALYZE_TIME NUM_DISTINCT NUM_NULLS DENSITY C1 C2 C3 C4 C5 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 294
315 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) C6 C7 C8 C9 9 rows selected. -- private statistics: should see values (0.001 for density for both C1 and C2, 0.2 for show_pending_stats TABJFV set echo off old 3: where table_name = '&1' and partition_name is null new 3: where table_name = 'TABJFV' and partition_name is null TABLE_NAME analyze time NUM_ROWS BLOCKS AVG_ROW_LEN TABJFV 10/07 10:54: old new 4: where table_name = '&1' and partition_name is null 4: where table_name = 'TABJFV' and partition_name is null no rows selected old new 4: where table_name = '&1' and partition_name is null 4: where table_name = 'TABJFV' and partition_name is null COLUMN_NAME analyze time NUM_DISTINCT NUM_NULLS DENSITY C1 10/07 10:54: C2 10/07 10:54: C3 10/07 10:54: C4 10/07 10:54: C5 10/07 10:54: C6 10/07 10:54: C7 10/07 10:54: C8 10/07 10:54: C9 10/07 10:54: SYS_STUF3GLKIOP5F4B0BTTCFTMX0W 10/07 10:54: Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 295
316 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) 10 rows selected. -- Should be false: use public statistics show parameter optimizer_use_pending_statistics NAME TYPE VALUE optimizer_use_pending_statistics boolean TRUE 13) A nouveau, déterminez l'estimation de l'optimiseur quant au nombre de lignes renvoyées par votre interrogation. Qu'observez-vous? (Utilisez le script determine2.sql.) a) Cette fois, l'estimation est set echo on explain plan for select count(*) from tabjfv where c1 = 1 and c2 = 1; Explained. select plan_table_output 2 from table(dbms_xplan.display('plan_table',null,'basic ROWS')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name Rows SELECT STATEMENT 1 1 SORT AGGREGATE 1 2 TABLE ACCESS FULL TABJFV rows selected. 14) Modifiez votre session de manière à utiliser les statistiques publiques. alter session set optimizer_use_pending_statistics = false; Session altered. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 296
317 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) 15) A nouveau, déterminez l'estimation de l'optimiseur quant au nombre de lignes renvoyées par votre interrogation. Qu'observez-vous? (Utilisez le script determine2.sql.) a) Comme il n'existe encore aucune statistique publique et que l'échantillonnage dynamique n'est pas activé, l'estimation est set echo on explain plan for select count(*) from tabjfv where c1 = 1 and c2 = 1; Explained. select plan_table_output 2 from table(dbms_xplan.display('plan_table',null,'basic ROWS')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name Rows SELECT STATEMENT 1 1 SORT AGGREGATE 1 2 TABLE ACCESS FULL TABJFV rows selected. 16) Maintenant que vous êtes satisfait des statistiques, publiez-les au niveau public. Pour exécuter cette étape, utilisez le script set echo on exec dbms_stats.publish_pending_stats('stats','tabjfv'); PL/SQL procedure successfully show_public_stats TABJFV set echo off old 3: where table_name = '&1' new 3: where table_name = 'TABJFV' TABLE_NAME ANALYZE_TIME NUM_ROWS BLOCKS AVG_ROW_LEN Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 297
318 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) TABJFV 10/07 10:54: old new 4: where table_name = '&1' 4: where table_name = 'TABJFV' no rows selected old new 4: where table_name = '&1' 4: where table_name = 'TABJFV' COLUMN_NAME ANALYZE_TIME NUM_DISTINCT NUM_NULLS DENSITY C1 10/07 10:54: C2 10/07 10:54: C3 10/07 10:54: C4 10/07 10:54: C5 10/07 10:54: C6 10/07 10:54: C7 10/07 10:54: C8 10/07 10:54: C9 10/07 10:54: rows show_pending_stats TABJFV set echo off old 3: where table_name = '&1' and partition_name is null new 3: where table_name = 'TABJFV' and partition_name is null no rows selected old new 4: where table_name = '&1' and partition_name is null 4: where table_name = 'TABJFV' and partition_name is null no rows selected old new 4: where table_name = '&1' and partition_name is null 4: where table_name = 'TABJFV' and partition_name is null no rows selected 17) A nouveau, déterminez l'estimation de l'optimiseur quant au nombre de lignes renvoyées par votre interrogation. Qu'observez-vous? (Utilisez le script determine2.sql.) a) Cette fois, l'estimation des statistiques est set echo on Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 298
319 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) explain plan for select count(*) from tabjfv where c1 = 1 and c2 = 1; Explained. select plan_table_output 2 from table(dbms_xplan.display('plan_table',null,'basic ROWS')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name Rows SELECT STATEMENT 1 1 SORT AGGREGATE 1 2 TABLE ACCESS FULL TABJFV rows selected. 18) Déterminez le mode de publication des statistiques de la table STATS.TABJFV, puis rétablissez le mode PUBLIC (utilisez le script determine_publish.sql). Quittez select dbms_stats.get_prefs('publish', 'stats', 'tabjfv') publish 2 from dual; PUBLISH FALSE exec dbms_stats.set_table_prefs('stats','tabjfv','publish','true'); PL/SQL procedure successfully completed. select dbms_stats.get_prefs('publish', 'stats', 'tabjfv') publish 2 from dual; PUBLISH TRUE Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 299
320 Exercice 16-2 : Utiliser la publication différée des statistiques de l'optimiseur (suite) exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 19) Pour nettoyer votre environnement, exécutez le script stats_cleanup.sh. $./stats_cleanup.sh SQL*Plus: Release Production on Wed Oct 7 11:07: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options User dropped. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 300
321 Exercices - Chapitre 17 Dans cet exercice, vous allez utiliser le cache des résultats. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 301
322 Exercice 17-1 : Utiliser le cache des résultats Dans cet exercice, vous allez passer en revue les différentes possibilités de mise en cache des résultats d'interrogation dans la mémoire SGA. Pour comprendre l'utilisation du cache des résultats d'interrogation (query result cache), procédez comme suit : 1) Accédez au répertoire $HOME/solutions/qrc et exécutez le script result_cache_setup.sh. $ cd /home/oracle/solutions/qrc $ $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $./result_cache_setup.sh SQL*Plus: Release Production on Wed Oct 7 11:16: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options drop user qrc cascade * ERROR at line 1: ORA-01918: user 'QRC' does not exist 2 3 User created. Grant succeeded. Connected. PL/SQL procedure successfully completed. drop table cachejfv purge * ERROR at line 1: ORA-00942: table or view does not exist Table created. 1 row created. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 302
323 Exercice 17-1 : Utiliser le cache des résultats (suite) 1 row created. 2 rows created. 4 rows created rows created. 1 row created. Commit complete. System altered. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 2) Dans une fenêtre de terminal, ouvrez une session SQL*Plus en tant qu'utilisateur QRC. A partir de maintenant, ne vous déconnectez pas de cette session. Déterminez le contenu actuel du cache des résultats d'interrogation à l'aide de l'instruction suivante : select type,status,name,object_no,row_count,row_size_avg from v$result_cache_objects order by 1; Vous pouvez utiliser le script check_result_cache.sql. Qu'observez-vous? Actuellement, le cache des résultats d'interrogation doit être vide. $ sqlplus qrc/qrc SQL*Plus: Release Production on Wed Oct 7 11:21: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing select type,status,name,object_no,row_count,row_size_avg from v$result_cache_objects order by 1; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 303
324 Exercice 17-1 : Utiliser le cache des résultats (suite) no rows selected 3) Activez l'horloge et exécutez l'interrogation suivante. Vous pouvez utiliser le script query1.sql. Relevez la durée nécessaire à l'exécution. select /*+ result_cache q_name(q1) */ count(*) from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4, cachejfv c5 where c1.c='b' and c2.c='b' and c3.c='b' and c4.c='b' and c5.c='b'; set timing select /*+ result_cache q_name(q1) */ count(*) 2 from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 3 where c1.c='b' and c2.c='b' and c3.c='b' and c4.c='b' and c5.c='b'; COUNT(*) Elapsed: 00:00: ) Déterminez le plan d'exécution de l'interrogation précédente à l'aide du script explain_query1.sql. Qu'observez-vous? Compte tenu de la présence du conseil (Hint) result_cache, le résultat de l'interrogation a été calculé à l'aide du cache des set echo on explain plan for select /*+ result_cache q_name(q1) */ count(*) from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 where c1.c='b' and c2.c='b' and c3.c='b' and c4.c='b' and c5.c='b'; Explained. Elapsed: 00:00:00.20 set linesize Rem Rem $Header: utlxpls.sql 26-feb :49:37 bdagevil.. Rem select plan_table_output from table(dbms_xplan.display('plan_table',null,'serial')); PLAN_TABLE_OUTPUT Plan hash value: Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 304
325 Exercice 17-1 : Utiliser le cache des résultats (suite) Id Operation Name Rows Bytes Cost (%CPU) Time SELECT STATEMENT G (1) 999:59:59 1 RESULT CACHE c334km80wg4dq0418y5p1frmnz 2 SORT AGGREGATE MERGE JOIN CARTESIAN 92G 105T 2295G (1) 999:59:59 4 MERGE JOIN CARTESIAN 591M 555G 14G (1) 999:59:59 5 MERGE JOIN CARTESIAN 3794K 2735M 94M (1) 314:36:35 PLAN_TABLE_OUTPUT MERGE JOIN CARTESIAN M 605K (1) 02:01:03 * 7 TABLE ACCESS FULL CACHEJFV (1) 00:00:47 8 BUFFER SORT K (1) 02:00:17 * 9 TABLE ACCESS FULL CACHEJFV (1) 00:00:47 10 BUFFER SORT M (1) 314:35:49 * 11 TABLE ACCESS FULL CACHEJFV (1) 00:00:47 12 BUFFER SORT G (1) 999:59:59 * 13 TABLE ACCESS FULL CACHEJFV (1) 00:00:47 14 BUFFER SORT G (1) 999:59:59 * 15 TABLE ACCESS FULL CACHEJFV (1) 00:00: PLAN_TABLE_OUTPUT Predicate Information (identified by operation id): filter("c1"."c"='b') 9 - filter("c2"."c"='b') 11 - filter("c3"."c"='b') 13 - filter("c4"."c"='b') 15 - filter("c5"."c"='b') Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 305
326 Exercice 17-1 : Utiliser le cache des résultats (suite) Result Cache Information (identified by operation id): PLAN_TABLE_OUTPUT column-count=1; dependencies=(qrc.cachejfv); attributes=(single-row); parameters=(nls); name="select /*+ result_cache q_name(q1) */ count(*) from cachejfv c1,cachejfv c2,cac hejfv c3,cachejfv c4,cachejfv c5 where c1.c='b' a" Remarque dynamic sampling used for this statement (level=2) 40 rows selected. Elapsed: 00:00: ) Déterminez le contenu actuel du cache des résultats d'interrogation à l'aide du script check_result_cache.sql. Qu'observez-vous? Vous pouvez voir que le résultat de votre interrogation a été mis en set echo on select type,status,name,object_no,row_count,row_size_avg from v$result_cache_objects order by 1; TYPE STATUS NAME OBJECT_NO ROW_COUNT ROW_SIZE_AVG Dependency Published QRC.CACHEJFV Result Published select /*+ result_cache q_name(q1) */ count(*) 0 1 from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 where c1.c='b' a 5 Elapsed: 00:00:00.00 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 306
327 Exercice 17-1 : Utiliser le cache des résultats (suite) 6) Videz le cache de tampons (buffer cache) de votre instance et réexécutez l'interrogation de l'étape 3. Que constatez-vous? L'exécution de l'interrogation est à présent quasiment instantanée. alter system flush buffer_cache; System altered. Elapsed: select /*+ result_cache q_name(q1) */ count(*) 2 from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 3 where c1.c='b' and c2.c='b' and c3.c='b' and c4.c='b' and c5.c='b'; COUNT(*) Elapsed: 00:00: ) Insérez une nouvelle ligne dans la table CACHEJFV à l'aide de l'instruction suivante : insert into cachejfv values('c'); Qu'observez-vous? L'entrée correspondante du cache est automatiquement invalidée. insert into cachejfv values('c'); 1 row created. Elapsed: 00:00:00.00 commit; Commit complete. Elapsed: set echo on select type,status,name,object_no,row_count,row_size_avg from v$result_cache_objects order by 1; TYPE STATUS NAME OBJECT_NO ROW_COUNT ROW_SIZE_AVG Dependency Published QRC.CACHEJFV Result Invalid select /*+ result_cache q_name(q1) */ count(*) 0 1 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 307
328 Exercice 17-1 : Utiliser le cache des résultats (suite) from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 where c1.c='b' a 5 Elapsed: 00:00: ) Réexécutez votre première interrogation et vérifiez le cache des résultats. Qu'observezvous? L'exécution de l'interrogation prend de nouveau un peu de temps. Si vous consultez le cache des résultats, vous constatez qu'une entrée correspondant au nouveau résultat a été select /*+ result_cache q_name(q1) */ count(*) 2 from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 3 where c1.c='b' and c2.c='b' and c3.c='b' and c4.c='b' and c5.c='b'; COUNT(*) Elapsed: set echo on select type,status,name,object_no,row_count,row_size_avg from v$result_cache_objects order by 1; TYPE STATUS NAME OBJECT_NO ROW_COUNT ROW_SIZE_AVG Dependency Published QRC.CACHEJFV Result Invalid select /*+ result_cache q_name(q1) */ count(*) 0 1 from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 where c1.c='b' a 5 Result Published select /*+ result_cache q_name(q1) */ count(*) 0 1 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 308
329 Exercice 17-1 : Utiliser le cache des résultats (suite) TYPE STATUS NAME OBJECT_NO ROW_COUNT ROW_SIZE_AVG from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 where c1.c='b' a 5 Elapsed: 00:00: ) Générez un état détaillé sur la mémoire cache des résultats. set serveroutput on EXEC DBMS_RESULT_CACHE.MEMORY_REPORT(detailed=>true); R e s u l t C a c h e M e m o r y R e p o r t [Parameters] Block Size = 1K bytes Maximum Cache Size = 2080K bytes (2080 blocks) Maximum Result Size = 104K bytes (104 blocks) [Memory] Total Memory = bytes [0.041% of the Shared Pool]... Fixed Memory = 9440 bytes [0.004% of the Shared Pool]... Memory Mgr = 124 bytes... Bloom Fltr = 2K bytes... Cache Mgr = 4416 bytes... State Objs = 2852 bytes... Dynamic Memory = bytes [0.038% of the Shared Pool]... Overhead = bytes... Hash Table = 32K bytes (4K buckets)... Chunk Ptrs = 12K bytes (3K slots)... Chunk Maps = 12K bytes... Miscellaneous = 8284 bytes... Cache Memory = 32K bytes (32 blocks)... Unused Memory = 29 blocks... Used Memory = 3 blocks... Dependencies = 1 blocks (1 count)... Results = 2 blocks... SQL = 1 blocks (1 count)... Invalid = 1 blocks (1 count) PL/SQL procedure successfully completed. Elapsed: 00:00: ) Réexécutez votre interrogation. Qu'observez-vous? L'interrogation utilise de nouveau le résultat précédemment mis en Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 309
330 Exercice 17-1 : Utiliser le cache des résultats (suite) select /*+ result_cache q_name(q1) */ count(*) 2 from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 3 where c1.c='b' and c2.c='b' and c3.c='b' and c4.c='b' and c5.c='b'; COUNT(*) Elapsed: 00:00: ) Assurez-vous que le cache des résultats est ignoré avant de passer à l'étape suivante. exec DBMS_RESULT_CACHE.BYPASS(bypass_mode=>true); PL/SQL procedure successfully completed. Elapsed: 00:00: ) Réexécutez votre interrogation. Qu'observez-vous? L'exécution de l'interrogation prend de nouveau plus de temps car le cache des résultats n'est plus select /*+ result_cache q_name(q1) */ count(*) 2 from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 3 where c1.c='b' and c2.c='b' and c3.c='b' and c4.c='b' and c5.c='b'; COUNT(*) Elapsed: 00:00: ) Assurez-vous que le cache des résultats n'est plus ignoré et qu'il est de nouveau utilisé par votre interrogation. exec DBMS_RESULT_CACHE.BYPASS(bypass_mode=>false); PL/SQL procedure successfully completed. Elapsed: select /*+ result_cache q_name(q1) */ count(*) 2 from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 3 where c1.c='b' and c2.c='b' and c3.c='b' and c4.c='b' and c5.c='b'; COUNT(*) Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 310
331 Exercice 17-1 : Utiliser le cache des résultats (suite) Elapsed: 00:00: ) Exécutez l'interrogation suivante à l'aide du script query2.sql : select count(*) from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 where c1.c='b' and c2.c='b' and c3.c='b' and c4.c='b' and c5.c='b'; Qu'observez-vous? Bien que l'interrogation soit identique à celle de l'étape 3, elle n'est pas reconnue comme devant utiliser le cache car elle ne contient pas le conseil. Par conséquent, son exécution prend de nouveau plus de select count(*) 2 from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 3 where c1.c='b' and c2.c='b' and c3.c='b' and c4.c='b' and c5.c='b'; COUNT(*) Elapsed: 00:00: ) Comment imposer à l'interrogation précédente d'utiliser les résultats mis en cache sans avoir recours à des conseils (Hints)? Pour cela, utilisez le script force_query2.sql, puis vérifiez que vous avez réussi à utiliser les résultats mis en cache. Enfin, annulez vos set echo on show parameter result_cache_mode NAME TYPE VALUE result_cache_mode string MANUAL select type,status,name,object_no,row_count,row_size_avg from v$result_cache_objects order by 1; TYPE STATUS NAME OBJECT_NO ROW_COUNT ROW_SIZE_AVG Dependency Published QRC.CACHEJFV Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 311
332 Exercice 17-1 : Utiliser le cache des résultats (suite) Result Invalid select /*+ result_cache q_name(q1) */ count(*) 0 1 from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 where c1.c='b' a 5 Result Published select /*+ result_cache q_name(q1) */ count(*) 0 1 TYPE STATUS NAME OBJECT_NO ROW_COUNT ROW_SIZE_AVG from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 where c1.c='b' a 5 Elapsed: 00:00:00.00 alter session set result_cache_mode=force; Session altered. Elapsed: 00:00:00.01 explain plan for select count(*) from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 where c1.c='b' and c2.c='b' and c3.c='b' and c4.c='b' and c5.c='b'; Explained. Elapsed: Rem select plan_table_output from table(dbms_xplan.display('plan_table',null,'serial')); PLAN_TABLE_OUTPUT Plan hash value: Id Operation Name Rows Bytes Cost (%CPU) Time Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 312
333 Exercice 17-1 : Utiliser le cache des résultats (suite) SELECT STATEMENT G (1) 999:59:59 1 RESULT CACHE c334km80wg4dq0418y5p1frmnz 2 SORT AGGREGATE MERGE JOIN CARTESIAN 92G 105T 2295G (1) 999:59:59 4 MERGE JOIN CARTESIAN 591M 555G 14G (1) 999:59:59 5 MERGE JOIN CARTESIAN 3794K 2735M 94M (1) 314:36:35 PLAN_TABLE_OUTPUT MERGE JOIN CARTESIAN M 605K (1) 02:01:03 * 7 TABLE ACCESS FULL CACHEJFV (1) 00:00:47 8 BUFFER SORT K (1) 02:00:17 * 9 TABLE ACCESS FULL CACHEJFV (1) 00:00:47 10 BUFFER SORT M (1) 314:35:49 * 11 TABLE ACCESS FULL CACHEJFV (1) 00:00:47 12 BUFFER SORT G (1) 999:59:59 * 13 TABLE ACCESS FULL CACHEJFV (1) 00:00:47 14 BUFFER SORT G (1) 999:59:59 * 15 TABLE ACCESS FULL CACHEJFV (1) 00:00: PLAN_TABLE_OUTPUT Predicate Information (identified by operation id): filter("c1"."c"='b') 9 - filter("c2"."c"='b') 11 - filter("c3"."c"='b') 13 - filter("c4"."c"='b') 15 - filter("c5"."c"='b') Result Cache Information (identified by operation id): PLAN_TABLE_OUTPUT Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 313
334 Exercice 17-1 : Utiliser le cache des résultats (suite) 1 - column-count=1; dependencies=(qrc.cachejfv); attributes=(single-row); parameters=(nls); name="select /*+ result_cache q_name(q1) */ count(*) from cachejfv c1,cachejfv c2,cac hejfv c3,cachejfv c4,cachejfv c5 where c1.c='b' a" Remarque dynamic sampling used for this statement (level=2) 40 rows selected. Elapsed: 00:00:00.48 select count(*) from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 where c1.c='b' and c2.c='b' and c3.c='b' and c4.c='b' and c5.c='b'; COUNT(*) Elapsed: 00:00:00.02 select type,status,name,object_no,row_count,row_size_avg from v$result_cache_objects order by 1; TYPE STATUS NAME OBJECT_NO ROW_COUNT ROW_SIZE_AVG Dependency Published QRC.CACHEJFV Result Invalid select /*+ result_cache q_name(q1) */ count(*) 0 1 from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 where c1.c='b' a 5 Result Published select /*+ result_cache q_name(q1) */ count(*) 0 1 TYPE STATUS NAME OBJECT_NO ROW_COUNT Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 314
335 Exercice 17-1 : Utiliser le cache des résultats (suite) ROW_SIZE_AVG from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 where c1.c='b' a 5 Elapsed: 00:00:00.01 alter session set result_cache_mode=manual; Session altered. Elapsed: 00:00: ) Effacez le contenu du cache de résultats. Interrogez la vue V$RESULT_CACHE_OBJECTS pour vérifier cette opération. exec dbms_result_cache.flush; PL/SQL procedure successfully completed. Elapsed: 00:00:00.00 select type,status,name,object_no,row_count,row_size_avg from v$result_cache_objects order by 1; no rows selected Elapsed: 00:00: ) Exécutez le script cre_func.sql pour créer une fonction PL/SQL qui utilise le cache des create or replace function CACHEJFV_COUNT(v varchar2) 2 return number 3 result_cache relies_on (cachejfv) 4 is 5 cnt number; 6 begin 7 select count(*) into cnt 8 from cachejfv c1,cachejfv c2,cachejfv c3,cachejfv c4,cachejfv c5 9 where c1.c=v and c2.c=v and c3.c=v and c4.c=v and c5.c=v; return cnt; 12 end; 13 / Function created. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 315
336 Exercice 17-1 : Utiliser le cache des résultats (suite) Elapsed: 00:00: ) Interrogez la vue V$RESULT_CACHE_OBJECTS pour déterminer le contenu du cache des résultats. select type,status,name,object_no,row_count,row_size_avg from v$result_cache_objects order by 1; no rows selected Elapsed: 00:00: ) Appelez la nouvelle fonction en utilisant l'argument 'b'. Qu'observez-vous? L'exécution prend de nouveau plus de temps car le résultat n'est pas encore mis en cache. Une fois que la fonction est exécutée, son résultat pour l'argument 'b' est mis en cache. select cachejfv_count('b') from dual; CACHEJFV_COUNT('B') Elapsed: 00:00:02.84 select type,status,name,object_no,row_count,row_size_avg from v$result_cache_objects order by 1; TYPE STATUS NAME OBJECT_NO ROW_COUNT ROW_SIZE_AVG Dependency Published QRC.CACHEJFV Dependency Published QRC.CACHEJFV_COUNT Result Published "QRC"."CACHEJFV_COUNT"::8."CACHEJFV_COUNT"# f0f5d3 # Elapsed: 00:00: ) Appelez de nouveau la nouvelle fonction en utilisant l'argument 'b'. Qu'observez-vous? Cette fois-ci, l'exécution de la fonction est quasiment instantanée. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 316
337 Exercice 17-1 : Utiliser le cache des résultats (suite) select cachejfv_count('b') from dual; CACHEJFV_COUNT('B') Elapsed: 00:00: ) Appelez de nouveau la nouvelle fonction en utilisant l'argument 'c'. Qu'observez-vous? L'exécution de la fonction prend de nouveau plus de temps en raison de la nouvelle valeur de l'argument. Après l'exécution, le second résultat est mis en cache. select cachejfv_count('c') from dual; CACHEJFV_COUNT('C') Elapsed: 00:00:01.11 select type,status,name,object_no,row_count,row_size_avg from v$result_cache_objects order by 1; TYPE STATUS NAME OBJECT_NO ROW_COUNT ROW_SIZE_AVG Dependency Published QRC.CACHEJFV Dependency Published QRC.CACHEJFV_COUNT Result Published "QRC"."CACHEJFV_COUNT"::8."CACHEJFV_COUNT"# f0f5d3 # TYPE STATUS NAME OBJECT_NO ROW_COUNT ROW_SIZE_AVG Result Published "QRC"."CACHEJFV_COUNT"::8."CACHEJFV_COUNT"# f0f5d3 # Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 317
338 Exercice 17-1 : Utiliser le cache des résultats (suite) Elapsed: 00:00:00.01 select cachejfv_count('c') from dual; CACHEJFV_COUNT('C') Elapsed: 00:00:00.00 exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 318
339 Exercices - Chapitre 18 Dans cet exercice, vous allez apprendre à dupliquer une base de données active et à fusionner des catalogues de restauration. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 319
340 Exercice 18-1 : Dupliquer une base de données active Vous êtes responsable d'une base de données active qui ne peut pas être arrêtée. Elle fonctionne en mode ARCHIVELOG. Il vous est à présent demandé de dupliquer cette base dans un autre répertoire, à des fins de test. Pour simuler cet environnement, supposons que la base de données active est orcl (elle est stockée dans ASM). 1) Avant de copier (ou cloner) la base de données, ajoutez les deux derniers disques ASM au groupe de disques DATA. a) Ouvrez une fenêtre de terminal graphique en tant qu'utilisateur oracle, paramétrez vos variables d'environnement pour qu'elles pointent vers votre instance +ASM, puis lancez ASMCA. $. oraenv ORACLE_SID = [orcl]? +ASM The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is /u01/app/oracle $ $ asmca b) Dans la sous-page Configure ASM: Disk Groups, cliquez avec le bouton droit de la souris sur le groupe de disques DATA. c) Dans le menu qui s'affiche, sélectionnez Add disks. d) Dans la page Add Disks, sélectionnez les deux disques ORCl:ASMDISK12 et ORCL:ASMDISK13. e) Cliquez sur OK. f) Dans la fenêtre d'informations qui s'affiche, cliquez sur OK. g) De retour dans la sous-page Configure ASM: Disk Groups, cliquez sur Exit. h) Dans la fenêtre ASM Configuration Assistant, cliquez sur Yes. 2) Attendez la fin de l'opération de rééquilibrage. a) Connectez-vous à Enterprise Manager en tant qu'utilisateur SYS. b) Dans la page Home, cliquez sur le lien +ASM de la section General. c) Dans la page d'accueil ASM, cliquez sur le sous-onglet Disk Groups. d) Vous devrez peut-être vous connecter à l'instance ASM, si cela n'est pas déjà fait. Dans la page Automatic Storage Management Login, saisissez SYS dans le champ Username et oracle_4u dans le champ Password, puis sélectionnez SYSASM dans le champ Connect As. Sélectionnez Save as Preferred Credential. Cliquez sur Login. e) Dans la page Disk Groups, cliquez sur le lien DATA. f) Dans la page Disk Group: DATA, observez le contenu du champ Pending Operations de la section General. g) Actualisez la page du navigateur jusqu'à ce qu'il n'y ait plus d'opérations en cours. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 320
341 Exercice 18-1 : Dupliquer une base de données active (suite) 3) Pour vous assurer que vous pointez vers la base de données orcl et que celle-ci est bien en mode ARCHIVELOG avec une zone de récupération rapide de 7 Go, exécutez le script rman_archivelog.sh situé dans le répertoire /home/oracle/solutions/rman. $ cd /home/oracle/solutions/rman $./rman_archivelog.sh ******************************************* For demo purposes ONLY: * Enable ARCHIVELOG mode for database The script may appear to hang at the SQL prompt when the database is shutting down and being opened. Wait a few minutes and it should progress. ******************************************* orcl SQL*Plus: Release Production on Thu Oct 8 09:27: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options System altered. Database closed. Database dismounted. ORACLE instance shut down. ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database altered. Database altered. Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 99 Next log sequence to archive 101 Current log sequence 101 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 321
342 Exercice 18-1 : Dupliquer une base de données active (suite) Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 4) Définissez dbtest en tant que nom de service réseau pour la base de données planifiée dbtest. a) Ouvrez une fenêtre de terminal graphique en tant qu'utilisateur oracle, paramétrez vos variables d'environnement pour qu'elles pointent vers votre instance orcl, puis lancez NETCA. $. oraenv ORACLE_SID = [+ASM]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ netca b) L'assistant NETCA (Oracle Net Configuration Assistant) ouvre une fenêtre. Dans la page Welcome, sélectionnez "Local Net Service Name configuration" et cliquez sur Next. c) Dans la page Net Service Name Configuration, sélectionnez Add et cliquez sur Next. d) Dans le champ Service Name, entrez dbtest et cliquez sur Next. e) Dans la page Net Service Name Configuration : Select Protocols, sélectionnez TCP et cliquez sur Next. f) Dans la page Net Service Name Configuration: TCP/IP Protocol, entrez le nom d'hôte, par exemple edt3r10p10.us.oracle.com, sélectionnez "Use the standard port number of 1521", puis cliquez sur Next. g) Dans la page Net Service Name Configuration: Test, sélectionnez "No, do not test" (car la base de données dbtest n'existe pas encore), puis cliquez sur Next. h) Dans la page Net Service Name Configuration: Net Service Name, entrez dbtest dans le champ Net Service Name, puis cliquez sur Next. i) Cliquez sur No en réponse à la question "Would you like to configure another net service name?", puis cliquez sur Next. j) Dès l'apparition du message de fin de processus, cliquez à nouveau sur Next. k) Pour terminer, cliquez sur Finish. 5) Utilisez Oracle Net Manager pour configurer le processus d'écoute LISTENER avec les services de base de données dbtest et orcl. a) Ouvrez une fenêtre de terminal graphique en tant qu'utilisateur oracle, paramétrez vos variables d'environnement pour qu'elles pointent vers votre instance +ASM, puis lancez NETMGR. $. oraenv ORACLE_SID = [orcl]? +ASM The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is /u01/app/oracle $ netmgr Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 322
343 Exercice 18-1 : Dupliquer une base de données active (suite) b) Le gestionnaire Oracle Net Manager ouvre une fenêtre. Cliquez sur l'icône "+" en regard de Local. Cliquez sur l'icône "+" en regard de Listeners pour développer les noeuds de l'arborescence de navigation jusqu'à afficher le processus d'écoute appelé "LISTENER". c) Sélectionnez d'abord LISTENER dans la partie gauche de la fenêtre. Sélectionnez ensuite Database Services dans la liste déroulante située dans la partie droite de la fenêtre. d) Cliquez sur le bouton Add Database. e) Entrez les valeurs suivantes : Global Database Name: dbtest Oracle Home Directory: /u01/app/oracle/acfsmounts/acfs_db1/ SID: dbtest f) Cliquez à nouveau sur le bouton Add Database. g) Entrez les valeurs suivantes : Global Database Name: orcl Oracle Home Directory: /u01/app/oracle/acfsmounts/acfs_db1/ SID: orcl h) Dans la barre de menus d'oracle Net Manager, sélectionnez File > Save Network Configuration, puis File > Exit. 6) Vous allez à présent copier une base de données avec RMAN. Démarrez le processus de duplication dans Enterprise Manager. a) Ouvrez une session Enterprise Manager en tant qu'utilisateur SYS à l'aide du mot de passe oracle_4u et connectez-vous en tant que SYSDBA. b) Cliquez d'abord sur l'onglet Data Movement puis sur Clone Database dans la section Move Database Files. c) Dans la page Clone Database: Source Type, sélectionnez "A running database" et "Use Recovery Manager (RMAN) to copy database files", puis cliquez sur Continue. d) Dans la page Clone Database: Source Options, entrez oracle en tant que nom utilisateur et mot de passe, cliquez sur "Save as Preferred Credential" puis sur Next. e) Dans la page Clone Database: Select Destination, entrez dbtest à la fois en tant que nom global de base de données (Global Database Name) et en tant que nom d'instance (Instance Name), puis sélectionnez Automatic Storage Management (ASM) dans la liste déroulante Database Storage. Ensuite, cliquez sur Next. f) Si la page Clone Database: ASM Instance Login apparaît, entrez oracle_4u en tant que mot de passe SYS, et cliquez sur Login. g) Dans la page Clone Database: Destination Options, entrez FRA dans le champ Flash Recovery Area. Ensuite, cliquez sur Next. h) Dans la page Clone Database: Database Configuration : Sélectionnez "Configure Enterprise Manager Database Control for this database". Assurez-vous que /u01/app/oracle/acfsmounts/acfs_db1/network/admin est bien entré dans le champ Configuration File Location. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 323
344 Exercice 18-1 : Dupliquer une base de données active (suite) Entrez /u01/app/oracle/product/11.2.0/grid dans le champ Listener Oracle Home. Entrez oracle_4u six fois dans tous les champs de mot de passe, puis affectez la valeur 5505 au port HTTP. Cliquez sur Next. i) Si vous recevez un message d'avertissement vous informant que le fichier sqlnet.ora ou listener.ora n'existe pas, acceptez-le en cliquant sur Yes. j) Dans la page Clone Database: Schedule, assurez-vous que le travail démarre immédiatement. Cliquez sur Next. k) Dans la page Clone Database: Review, analysez la section Details, y compris la section Database Storage, puis cliquez sur Submit Job. l) Patientez quelques instants dans la page "Clone Database job is being submitted". m) La page Clone Database: Confirmation devrait afficher un message de réussite. Cliquez sur View Status pour accéder à la page Job Activity. n) Cette action vous dirige vers la page Execution. Vous pouvez également cliquer sur le bouton d'actualisation de votre navigateur pour afficher l'avancement du travail jusqu'à ce que vous receviez un message de réussite. (Le temps d'exécution du travail dépend de votre matériel et des ressources système disponibles.) 7) Testez l'accès à la base de données clonée dans SQL*Plus. a) Ouvrez une fenêtre de terminal graphique et connectez-vous en tant qu'utilisateur oracle, puis assurez-vous que vous pointez vers la base de données orcl. $. oraenv ORACLE_SID = [db10g]? orcl $ b) Connectez-vous en tant qu'utilisateur SYS à la base de données orcl, puis exécutez l'interrogation suivante : select dbid, name, created, open_mode from v$database; $ sqlplus sys/oracle_4u@orcl as sysdba SQL*Plus: Release Production on Thu Oct 8 10:49: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options select dbid, name, created, open_mode from v$database; DBID NAME CREATED OPEN_MODE ORCL 28-SEP-09 READ WRITE Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 324
345 Exercice 18-1 : Dupliquer une base de données active (suite) c) A présent, connectez-vous en tant qu'utilisateur SYSTEM à l'aide du mot de passe oracle_4u à la base de données dbtest, puis réexécutez l'interrogation précédente. Quittez SQL*Plus. connect system/oracle_4u@dbtest Connected. select dbid, name, created, open_mode from v$database; DBID NAME CREATED OPEN_MODE DBTEST 08-OCT-09 READ WRITE exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 325
346 Exercice 18-2 : Gérer des catalogues Dans cet exercice, vous allez apprendre à consolider plusieurs catalogues RMAN dans une base de données. 1) Pour préparer ce scénario, créez un catalogue à la fois dans l'instance orcl et dans l'instance dbtest en exécutant le script setup_cat.sh dans votre répertoire de travail (/home/oracle/solutions/rman). $ cd /home/oracle/solutions/rman $ $./setup_cat.sh ******************************************* For training purposes ONLY, not for production use * Setup RMAN catalogs in ORCL and DBTEST instances Execute as oracle OS user orcl SQL*Plus: Release Production on Thu Oct 8 11:20: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options set serveroutput on set term on set lines 200 /*== Confirm database connection ==*/ SELECT NAME FROM V$DATABASE; NAME ORCL /*== Create RCAT tablespace of 10 MB ==*/ DROP TABLESPACE RCAT including contents and datafiles; DROP TABLESPACE RCAT including contents and datafiles * ERROR at line 1: ORA-00959: tablespace 'RCAT' does not exist CREATE TABLESPACE RCAT 2 DATAFILE '+DATA' SIZE 10M; Tablespace created. /*== Create CATOWNER user with "oracle" password ==*/ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 326
347 Exercice 18-2 : Gérer des catalogues (suite) DROP USER catowner CASCADE; DROP USER catowner CASCADE * ERROR at line 1: ORA-01918: user 'CATOWNER' does not exist create user catowner identified by oracle_4u 2 default tablespace rcat 3 quota unlimited on rcat; User created. /*== Grant privileges to CATOWNER ==*/ GRANT CREATE SESSION to catowner; Grant succeeded. GRANT RECOVERY_CATALOG_OWNER to catowner; Grant succeeded. PROMPT "Setup of CATOWNER user with "oracle_4u" password and RCAT tablespace complete." "Setup of CATOWNER user with "oracle_4u" password and RCAT tablespace complete." exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Recovery Manager: Release Production on Thu Oct 8 11:21: Copyright (c) 1982, 2009, Oracle and/or its affiliates. Tous droits réservés. connected to target database: ORCL (DBID= ) connected to recovery catalog database RMAN> RMAN> CREATE CATALOG TABLESPACE RCAT; 2> 3> REGISTER DATABASE; 4> 5> exit; recovery catalog created database registered in recovery catalog starting full resync of recovery catalog full resync complete Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 327
348 Exercice 18-2 : Gérer des catalogues (suite) Recovery Manager complete. dbtest SQL*Plus: Release Production on Thu Oct 8 11:22: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options set serveroutput on set term on set lines 200 /*== Confirm database connection ==*/ SELECT NAME FROM V$DATABASE; NAME DBTEST /*== Create RCAT tablespace of 10 MB ==*/ DROP TABLESPACE RCAT including contents and datafiles; DROP TABLESPACE RCAT including contents and datafiles * ERROR at line 1: ORA-00959: tablespace 'RCAT' does not exist CREATE TABLESPACE RCAT 2 DATAFILE '+DATA' SIZE 10M; Tablespace created. /*== Create CATOWNER user with "oracle_4u" password ==*/ DROP USER catowner CASCADE; DROP USER catowner CASCADE * ERROR at line 1: ORA-01918: user 'CATOWNER' does not exist create user catowner identified by oracle_4u 2 default tablespace rcat 3 quota unlimited on rcat; User created. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 328
349 Exercice 18-2 : Gérer des catalogues (suite) /*== Grant privileges to CATOWNER ==*/ GRANT CREATE SESSION to catowner; Grant succeeded. GRANT RECOVERY_CATALOG_OWNER to catowner; Grant succeeded. PROMPT "Setup for RMAN catalog in DBTEST complete." "Setup for RMAN catalog in DBTEST complete." exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Recovery Manager: Release Production on Thu Oct 8 11:22: Copyright (c) 1982, 2009, Oracle and/or its affiliates. Tous droits réservés. connected to target database: DBTEST (DBID= ) connected to recovery catalog database RMAN> RMAN> CREATE CATALOG TABLESPACE RCAT; 2> 3> REGISTER DATABASE; 4> 5> exit; recovery catalog created database registered in recovery catalog starting full resync of recovery catalog full resync complete Recovery Manager complete. $ 2) Sauvegardez le tablespace EXAMPLE à partir de la base de données orcl et consignez-le dans le catalogue RMAN. a) Vérifiez que vous pointez vers la base de données orcl. $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ b) Sauvegardez le tablespace EXAMPLE à partir de la base de données orcl, à l'aide de RMAN et du catalogue RMAN. Exécutez les commandes suivantes : Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 329
350 Exercice 18-2 : Gérer des catalogues (suite) rman target sys/oracle_4u catalog catowner/oracle_4u backup tablespace example; exit $ rman target sys/oracle_4u catalog catowner/oracle_4u Recovery Manager: Release Production on Thu Oct 8 11:34: Copyright (c) 1982, 2009, Oracle and/or its affiliates. Tous droits réservés. connected to target database: ORCL (DBID= ) connected to recovery catalog database RMAN> backup tablespace example; Starting backup at 08-OCT-09 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=53 device type=disk channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00005 name=+data/orcl/datafile/example channel ORA_DISK_1: starting piece 1 at 08-OCT-09 channel ORA_DISK_1: finished piece 1 at 08-OCT-09 piece handle=+fra/orcl/backupset/2009_10_08/nnndf0_tag t113504_ tag=tag t comment=none channel ORA_DISK_1: backup set complete, elapsed time: 00:00:16 Finished backup at 08-OCT-09 RMAN> exit Recovery Manager complete. $ 3) Sauvegardez le tablespace EXAMPLE à partir de la base de données dbtest. a) Assurez-vous que vous pointez vers la base de données dbtest. $. oraenv ORACLE_SID = [orcl]? dbtest The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ b) Sauvegardez le tablespace EXAMPLE à partir de la base de données dbtest, à l'aide de RMAN et du catalogue RMAN. Exécutez les commandes suivantes : rman target sys/oracle_4u@dbtest catalog catowner/oracle_4u@dbtest backup tablespace example; exit $ rman target sys/oracle_4u@dbtest catalog catowner/oracle_4u@dbtest Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 330
351 Exercice 18-2 : Gérer des catalogues (suite) Recovery Manager: Release Production on Thu Oct 8 11:37: Copyright (c) 1982, 2009, Oracle and/or its affiliates. Tous droits réservés. connected to target database: DBTEST (DBID= ) connected to recovery catalog database RMAN> backup tablespace example; Starting backup at 08-OCT-09 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=54 device type=disk channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00005 name=+data/dbtest/datafile/example channel ORA_DISK_1: starting piece 1 at 08-OCT-09 channel ORA_DISK_1: finished piece 1 at 08-OCT-09 piece handle=+fra/dbtest/backupset/2009_10_08/nnndf0_tag t _ tag=tag t comment=none channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15 Finished backup at 08-OCT-09 RMAN> exit Recovery Manager complete. $ 4) Fusionnez le catalogue dbtest avec le catalogue de base de données orcl. a) Vérifiez que vous pointez vers la base de données orcl. $. oraenv ORACLE_SID = [dbtest]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ b) Exécutez les commandes suivantes : rman catalog catowner/oracle_4u IMPORT CATALOG catowner/oracle_4u@dbtest; $ rman catalog catowner/oracle_4u Recovery Manager: Release Production on Thu Oct 8 11:39: Copyright (c) 1982, 2009, Oracle and/or its affiliates. Tous droits réservés. connected to recovery catalog database Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 331
352 Exercice 18-2 : Gérer des catalogues (suite) RMAN> IMPORT CATALOG catowner/oracle_4u@dbtest; Starting import catalog at 08-OCT-09 connected to source recovery catalog database import validation complete database unregistered from the source recovery catalog Finished import catalog at 08-OCT-09 RMAN> 5) Analysez l'état des sauvegardes dbtest à partir du catalogue orcl. Déterminez les bases de données inscrites dans le référentiel RMAN orcl. Répertoriez les sauvegardes enregistrées pour la base de données dbtest. a) A partir de l'invite RMAN, affichez les incarnations de base de données enregistrées dans le référentiel orcl. RMAN> LIST INCARNATION; List of Database Incarnations DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time DBTEST PARENT SEP DBTEST CURRENT OCT ORCL PARENT 1 13-AUG ORCL CURRENT SEP-09 RMAN> b) A partir de l'invite RMAN, affichez les sauvegardes enregistrées de la base de données dbtest. Quittez RMAN. RMAN> connect target sys/oracle_4u@dbtest connected to target database: DBTEST (DBID= ) RMAN> list backup; List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time Full 69.57M DISK 00:00:08 08-OCT-09 BP Key: 236 Status: AVAILABLE Compressed: NO Tag: TAG T Piece Name: +FRA/dbtest/backupset/2009_10_08/nnndf0_tag t113801_ List of Datafiles in backup set 234 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 332
353 Exercice 18-2 : Gérer des catalogues (suite) File LV Type Ckp SCN Ckp Time Name Full OCT-09 +DATA/dbtest/datafile/example RMAN> exit Recovery Manager complete. $ 6) Exécutez le script cleanup_rcat.sh pour arrêter l'instance dbtest, supprimez les fichiers OS, puis désactivez le mode ARCHIVELOG pour la base de données orcl. $./cleanup_rcat.sh For training purposes ONLY, not for production use Shutdown DBTEST database and delete recovery files Execute as oracle OS user dbtest Oracle Enterprise Manager 11g Database Control Release Copyright (c) 1996, 2009 Oracle Corporation. Tous droits réservés. Stopping Oracle Enterprise Manager 11g Database Control Stopped. SQL*Plus: Release Production on Thu Oct 8 11:48: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Database closed. Database dismounted. ORACLE instance shut down. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options orcl SQL*Plus: Release Production on Thu Oct 8 11:48: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 333
354 Exercice 18-2 : Gérer des catalogues (suite) User dropped. Tablespace dropped. System altered. Database closed. Database dismounted. ORACLE instance shut down. ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database altered. Database altered. Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 102 Current log sequence 104 "Cleanup finished." Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 334
355 Exercices - Chapitre 19 Dans cet exercice, vous allez utiliser les fonctionnalités Flashback Data Archive et Flashback Transaction. Vous allez effectuer des tâches impliquant des Flashback Data Archives avec trois rôles différents : En tant qu'utilisateur SYS doté des privilèges SYSDBA, vous allez gérer les tablespaces, les utilisateurs, les privilèges et les données d'annulation. En tant qu'utilisateur ARCHIVE_ADMIN, vous allez créer et gérer les Flashback Data Archives (avec les tablespaces indiqués) et vous allez affecter le privilège objet FLASHBACK ARCHIVE à l'utilisateur HR. En tant qu'utilisateur HR, vous allez activer le suivi d'historique pour la table HR.EMPLOYEES, créer des transactions et, une fois que le tablespace d'annulation aura été changé (pour prouver que vous récupérez les informations à partir des Flashback Data Archives et non à partir des données d'annulation), vous allez exécuter une interrogation dans le passé et utiliser une ligne de la Flashback Data Archive pour mettre à jour une ligne "erronée" actuelle. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 335
356 Exercice 19-1: Utiliser Flashback Data Archive Dans cet exercice, vous allez apprendre à utiliser Flashback Data Archive. 1) Vérifiez que vous pointez vers la base de données orcl. En utilisant SQL*Plus, connectez-vous à la base de données en tant qu'utilisateur SYS et exécutez le script flada_setup.sql à partir du répertoire /home/oracle/solutions/fda. Le script de configuration crée un petit tablespace nommé FLA_TBS1 et l'utilisateur ARCHIVE_ADMIN avec le mot de passe ARCHIVE_ADMIN, et il déverrouille l'utilisateur HR avec le mot de passe HR. Par défaut, le mot de passe est sensible à la casse. Le script crée également une table nommée HR.EMPLOYEES2 (utilisée dans cet exercice). $. oraenv ORACLE_SID = [db10g]? orcl $ cd /home/oracle/solutions/fda $ sqlplus / as sysdba SQL*Plus: Release Production on Fri Oct 9 07:21: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing Connected. set serveroutput on -- set verify on set term on set lines 200 set pages 44 set pause on /*== Create a tablespace for your flashback data archive ==*/ DROP TABLESPACE fla_tbs1 INCLUDING CONTENTS 2 / DROP TABLESPACE fla_tbs1 INCLUDING CONTENTS * ERROR at line 1: ORA-00959: tablespace 'FLA_TBS1' does not exist CREATE SMALLFILE TABLESPACE fla_tbs1 2 DATAFILE '+DATA' 3 SIZE 10M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE 32767M 4 NOLOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO 5 / Tablespace created. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 336
357 Exercice 19-1: Utiliser Flashback Data Archive (suite) pause Press [Enter] to continue... Press [Enter] to continue... /*== Set up the HR database account for this lesson ==*/ /*== Note: The HR user has the UNLIMITED TABLESPACE system privilege. ==*/ ALTER USER hr IDENTIFIED BY "HR" ACCOUNT UNLOCK 2 / User altered. /*== Create an ARCHIVE_ADMIN user like the HR user ==*/ /*== with FLA_TBS1 default tablespace ==*/ CREATE USER ARCHIVE_ADMIN PROFILE DEFAULT IDENTIFIED BY ARCHIVE_ADMIN 2 DEFAULT TABLESPACE FLA_TBS1 TEMPORARY TABLESPACE TEMP 3 ACCOUNT UNLOCK 4 / User created. pause Press [Enter] to continue... Press [Enter] to continue... GRANT ALTER SESSION TO ARCHIVE_ADMIN; Grant succeeded. GRANT CREATE DATABASE LINK TO ARCHIVE_ADMIN; Grant succeeded. GRANT CREATE SEQUENCE TO ARCHIVE_ADMIN; Grant succeeded. GRANT CREATE SESSION TO ARCHIVE_ADMIN; Grant succeeded. GRANT CREATE SYNONYM TO ARCHIVE_ADMIN; Grant succeeded. GRANT CREATE VIEW TO ARCHIVE_ADMIN; Grant succeeded. GRANT UNLIMITED TABLESPACE TO ARCHIVE_ADMIN; Grant succeeded. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 337
358 Exercice 19-1: Utiliser Flashback Data Archive (suite) GRANT EXECUTE ON SYS.DBMS_STATS TO ARCHIVE_ADMIN; Grant succeeded. GRANT CONNECT, RESOURCE TO ARCHIVE_ADMIN; Grant succeeded. /*== copy employees table for demo purposes ==*/ connect hr/hr Connected. drop table employees2 purge; drop table employees2 purge * ERROR at line 1: ORA-00942: table or view does not exist create table employees2 as select * from employees; Table created. CONNECT / AS SYSDBA Connected. /*== Setup for Flashback Data Archive completed ==*/ /*== The ARCHIVE_ADMIN user has the password: ARCHIVE_ADMIN ==*/ /*== The HR user has the password: HR ==*/ pause Press [Enter] to continue... Press [Enter] to continue... set pause off set feedback on 2) Pour octroyer à l'utilisateur ARCHIVE_ADMIN des privilèges d'administration permettant de créer, gérer et supprimer des flashback data archives, exécutez la commande suivante en tant qu'utilisateur SYS : GRANT FLASHBACK ARCHIVE ADMINISTER TO archive_admin; GRANT FLASHBACK ARCHIVE ADMINISTER TO archive_admin; Grant succeeded. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 338
359 Exercice 19-1: Utiliser Flashback Data Archive (suite) 3) Dans SQL*Plus, connectez-vous en tant qu'utilisateur ARCHIVE_ADMIN avec le mot de passe ARCHIVE_ADMIN. Remarque : Le mot de passe doit être en majuscules. Le nom utilisateur n'est pas sensible à la casse. connect archive_admin/archive_admin Connected. 4) Pour créer une flashback data archive, exécutez le script create_fla1.sql ou la commande suivante : CREATE FLASHBACK ARCHIVE fla1 TABLESPACE fla_tbs1 QUOTA 10M RETENTION 1 set echo on DROP FLASHBACK ARCHIVE fla1 2 / DROP FLASHBACK ARCHIVE fla1 * ERROR at line 1: ORA-55605: Incorrect Flashback Archive is specified CREATE FLASHBACK ARCHIVE fla1 2 TABLESPACE fla_tbs1 3 QUOTA 10M 4 RETENTION 1 YEAR 5 / Flashback archive created. 5) Accordez à l'utilisateur HR le privilège permettant d'utiliser l'archive FLA1, en exécutant la commande suivante : GRANT FLASHBACK ARCHIVE on FLA1 to HR; GRANT FLASHBACK ARCHIVE on FLA1 to HR; Grant succeeded. 6) A présent, basculez vers un rôle d'utilisateur de Flashback Data Archive. Connectez-vous en tant qu'utilisateur HR avec le mot de passe HR. Afin d'activer cette flashback data archive pour la table EMPLOYEES, exécutez la commande suivante : ALTER TABLE hr.employees FLASHBACK ARCHIVE fla1; connect HR/HR Connected. ALTER TABLE hr.employees2 FLASHBACK ARCHIVE fla1; Table altered. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 339
360 Exercice 19-1: Utiliser Flashback Data Archive (suite) 7) Pour afficher le salaire de M. Fox et l'augmenter trois fois de 1000, exécutez le script flada_dml.sql. Cette action génère une activité dans la Flashback Data REM "********************************************** " REM "For demo purposes ONLY: Flashback Data Archive " connect hr/hr Connected. set echo on set serveroutput on -- set verify on set term on set lines 200 set pages 44 set pause on pause "Press [Enter] to continue..." /*== Query the current salary for Mr. Fox ==*/ SELECT employee_id, last_name, salary 2 FROM hr.employees2 3 WHERE last_name = 'Fox' 4 / Press [Enter] to continue... EMPLOYEE_ID LAST_NAME SALARY Fox row selected. pause Press [Enter] to continue... Press [Enter] to continue... /*== Increase the salary three times by 1000 ==*/ UPDATE hr.employees2 2 SET salary = salary WHERE last_name = 'Fox' 4 / 1 row updated. COMMIT 2 / Commit complete. UPDATE hr.employees2 2 SET salary = salary WHERE last_name = 'Fox' Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 340
361 Exercice 19-1: Utiliser Flashback Data Archive (suite) 4 / 1 row updated. COMMIT 2 / Commit complete. UPDATE hr.employees2 2 SET salary = salary WHERE last_name = 'Fox' 4 / 1 row updated. COMMIT 2 / Commit complete. pause Press [Enter] to continue... Press [Enter] to continue... /*== Query the up-to-date value for Mr. Fox ==*/ SELECT employee_id, last_name, salary 2 FROM hr.employees2 3 WHERE last_name = 'Fox' 4 / Press [Enter] to continue... EMPLOYEE_ID LAST_NAME SALARY Fox row selected. pause Press [Enter] to continue... Press [Enter] to continue... set pause off set feedback on 8) Pour rechercher le nom interne de la table d'archive, exécutez la commande suivante : SELECT * FROM USER_FLASHBACK_ARCHIVE_TABLES; SELECT * FROM USER_FLASHBACK_ARCHIVE_TABLES; TABLE_NAME OWNER_NAME FLASHBACK_ARCHIVE_NAME Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 341
362 Exercice 19-1: Utiliser Flashback Data Archive (suite) ARCHIVE_TABLE_NAME STATUS EMPLOYEES2 HR FLA1 SYS_FBA_HIST_75036 ENABLED 1 row selected. 9) En tant qu'utilisateur HR, choisissez un moment situé après la création de la Flashback Data Archive et avant l'exécution de l'opération LMD erronée. Pour consulter l'enregistrement de M. Fox à partir de ce point, exécutez l'interrogation indiquée ci-après. (Remplacez '10' MINUTE par la date historique choisie ; exemples de format : '50' SECOND, '10' DAY, '5' MONTH) : Remarque : Vous recevez une erreur ORA-1466 si le point que vous indiquez est antérieur au démarrage de la flashback data archive. Dans ce cas, réduisez l'intervalle de temps et réessayez. Si vous voyez toujours le salaire égal à 12600, augmentez l'intervalle de temps. SELECT employee_id, last_name, salary FROM hr.employees2 AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' MINUTE) WHERE last_name = 'Fox'; connect hr/hr Connected. SELECT employee_id, last_name, salary FROM hr.employees2 AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' MINUTE) WHERE last_name = 'Fox'; 2 3 EMPLOYEE_ID LAST_NAME SALARY Fox row selected. 10) En tant qu'utilisateur HR, vous constatez que les dernières mises à jour n'étaient pas valides. Pour rétablir les valeurs d'origine correspondant à la date historique choisie (par exemple, dix minutes auparavant), exécutez la commande indiquée ci-après. (Remplacez '10' MINUTE par la date historique choisie.) UPDATE hr.employees SET salary = (SELECT salary FROM hr.employees AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' MINUTE) WHERE last_name = 'Fox') WHERE last_name = 'Fox'; UPDATE hr.employees2 SET salary = (SELECT salary FROM hr.employees AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' MINUTE) WHERE last_name = 'Fox') WHERE last_name = 'Fox'; row updated. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 342
363 Exercice 19-1: Utiliser Flashback Data Archive (suite) commit; Commit complete. 11) Avec la session SQL*Plus toujours active, exécutez l'interrogation suivante : Vous remarquerez que les adresses sont composées de l'initiale du prénom et du nom de chaque personne. SELECT , last_name, salary FROM hr.employees2 WHERE LIKE 'T%'; SELECT , last_name, salary FROM hr.employees2 WHERE LIKE 'T%'; 2 3 LAST_NAME SALARY TJOLSON Olson 2100 TRAJS Rajs 3500 TFOX Fox 9600 TGATES Gates rows selected. 12) Exécutez les commandes UPDATE et COMMIT suivantes pour à toutes les adresses UPDATE hr.employees2 SET = '@mycompany.com'; UPDATE hr.employees2 SET = '@mycompany.com'; 107 rows updated. COMMIT; Commit complete. 13) Interrogez de nouveau la table pour vérifier les modifications. SELECT , last_name, salary FROM hr.employees2 WHERE LIKE 'T%'; 2 3 LAST_NAME SALARY [email protected] Olson 2100 [email protected] Rajs 3500 [email protected] Fox 9600 [email protected] Gates rows selected. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 343
364 Exercice 19-1: Utiliser Flashback Data Archive (suite) 14) Supposons qu'une nouvelle adresse standard soit implémentée. Les adresses actuelles seront (pendant une période donnée) stockées dans la colonne OLD_ et la colonne d'origine sera mise à jour pour contenir les nouvelles adresses. Ajoutez la colonne requise à l'aide de l'instruction suivante : ALTER TABLE hr.employees2 ADD (old_ varchar2(30)); ALTER TABLE hr.employees2 ADD (old_ varchar2(30)); Table altered. 15) Remplissez la colonne récemment ajoutée en y saisissant les adresses actuelles. UPDATE hr.employees2 SET old_ = ; 107 rows updated. COMMIT; Commit complete. 16) Une autre colonne doit être implémentée pour stocker une valeur calculée pour la compensation totale de l'employé. Ajoutez la nouvelle colonne à l'aide de l'instruction suivante : ALTER TABLE hr.employees2 ADD (total_comp number(8,2)); ALTER TABLE hr.employees2 ADD (total_comp number(8,2)); Table altered. 17) Remplissez la nouvelle colonne en y saisissant la valeur calculée pour TOTAL_COMP : UPDATE hr.employees2 SET total_comp = (1+NVL(commission_pct,0))*salary; 107 rows updated. COMMIT; Commit complete. 18) Exécutez l'interrogation suivante pour afficher toutes les versions de l'enregistrement associé à M. Fox depuis le début de l'exercice. Notez l'utilisation des pseudo-colonnes VERSIONS_ENDTIME et VERSIONS_ENDSCN dans l'interrogation. VERSIONS_ENDTIME indique l'heure à laquelle la version de l'enregistrement a expiré. Vous pouvez voir que, dans le dernier enregistrement, VERSIONS_ENDTIME a la valeur Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 344
365 Exercice 19-1: Utiliser Flashback Data Archive (suite) NULL car il s'agit de la vue actuelle. VERSIONS_ENDSCN indique les transactions dans l'ordre approprié, même s'il est impossible de différencier l'heure. Vous pouvez utiliser le script query_fox_versions.sql. SELECT last_name, , old_ , salary, total_comp, versions_endtime FROM hr.employees2 VERSIONS BETWEEN TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE) AND SYSTIMESTAMP WHERE last_name = 'Fox' ORDER BY SELECT last_name, , old_ , salary, total_comp, versions_endtime 2 FROM hr.employees2 3 VERSIONS BETWEEN TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE) AND SYSTIMESTAMP 4 WHERE last_name = 'Fox' 5 ORDER BY versions_endscn 6 / LAST_NAME OLD_ SALARY TOTAL_COMP VERSIONS_ENDTIME Fox TFOX OCT AM Fox TFOX OCT AM Fox TFOX OCT AM Fox TFOX OCT AM Fox [email protected] OCT AM Fox [email protected] [email protected] rows selected. 19) La colonne OLD_ n'est plus requise. Elle peut être supprimée à l'aide de l'instruction suivante : ALTER TABLE hr.employees2 DROP COLUMN old_ ; Table altered. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 345
366 Exercice 19-1: Utiliser Flashback Data Archive (suite) 20) Sachant que les résultats de l'interrogation précédente indiquent comment l'enregistrement de M. Fox a été modifié dans le temps, il peut être utile de connaître également comment la table EMPLOYEES2 a été modifiée. Exécutez les instructions suivantes pour collecter ces informations. Notez le nom de la table SYS_FBA_DDL_COLMAP_nnnnn (il est possible que les identifiants numériques des noms de table diffèrent). SELECT * FROM tab; TNAME TABTYPE CLUSTERID COUNTRIES TABLE DEPARTMENTS TABLE EMPLOYEES TABLE EMPLOYEES2 TABLE EMP_DETAILS_VIEW VIEW JOBS TABLE JOB_HISTORY TABLE LOCATIONS TABLE REGIONS TABLE SYS_FBA_DDL_COLMAP_77042 TABLE SYS_FBA_HIST_77042 TABLE SYS_FBA_TCRV_77042 TABLE 12 rows selected. 21) Interrogez la table identifiée à l'étape précédente pour déterminer les plages de numéros SCN (System Change Number) qui définissent l'existence de chaque colonne de la table : SELECT column_name, startscn, endscn FROM SYS_FBA_DDL_COLMAP_77042; 2 COLUMN_NAME STARTSCN ENDSCN EMPLOYEE_ID FIRST_NAME LAST_NAME PHONE_NUMBER HIRE_DATE JOB_ID SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 346
367 Exercice 19-1: Utiliser Flashback Data Archive (suite) D_ _OLD_ TOTAL_COMP rows selected. 22) D'après vos résultats précédents, les valeurs NULL associées à ENDSCN indiquent que la colonne existe toujours dans la table. Vous pouvez convertir les SCN en horodatages à l'aide de la fonction SCN_TO_TIMESTAMP. Remarque : Vous disposez à présent de toutes les informations requises pour reconstruire un historique complet des données. SELECT SCN_TO_TIMESTAMP( ) FROM DUAL; SCN_TO_TIMESTAMP( ) OCT AM 1 row selected. 23) A partir de la session SQL*Plus, connectez-vous à la base de données en tant qu'utilisateur SYS et affichez les vues disponibles du dictionnaire de données en exécutant le fichier flada_list1.sql : connect / as sysdba REM "******************************************* " REM "For demo purposes ONLY:" connect / as sysdba Connected. set echo on set serveroutput on -- set verify on set term on set lines 200 set pages 44 set pause on pause "Press [Enter] to continue..." /*== To list the available data dictionary views ==*/ SELECT table_name 2 FROM dict 3 WHERE table_name LIKE '%FLASHBACK_ARCHIVE%' 4 / Press [Enter] to continue... TABLE_NAME DBA_FLASHBACK_ARCHIVE Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 347
368 Exercice 19-1: Utiliser Flashback Data Archive (suite) DBA_FLASHBACK_ARCHIVE_TABLES DBA_FLASHBACK_ARCHIVE_TS USER_FLASHBACK_ARCHIVE USER_FLASHBACK_ARCHIVE_TABLES 5 rows selected. pause Press [Enter] to continue... Press [Enter] to continue... col FLASHBACK_ARCHIVE_NAME format A25 col ARCHIVE_TABLE_NAME format A20 col TABLE_NAME format A12 col OWNER_NAME format A10 DESC dba_flashback_archive Name Null? Type OWNER_NAME VARCHAR2(30) FLASHBACK_ARCHIVE_NAME NOT NULL VARCHAR2(255) FLASHBACK_ARCHIVE# NOT NULL NUMBER RETENTION_IN_DAYS NOT NULL NUMBER CREATE_TIME TIMESTAMP(9) LAST_PURGE_TIME TIMESTAMP(9) STATUS VARCHAR2(7) pause Press [Enter] to continue... Press [Enter] to continue... /*== To query the time when the flashback data archive(s) have been created ==*/ SELECT flashback_archive_name, create_time, status 2 FROM dba_flashback_archive 3 / Press [Enter] to continue... FLASHBACK_ARCHIVE_NAME CREATE_TIME STATUS FLA1 09-OCT AM 1 row selected. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 348
369 Exercice 19-1: Utiliser Flashback Data Archive (suite) pause Press [Enter] to continue... Press [Enter] to continue... DESC dba_flashback_archive_ts Name Null? Type FLASHBACK_ARCHIVE_NAME NOT NULL VARCHAR2(255) FLASHBACK_ARCHIVE# NOT NULL NUMBER TABLESPACE_NAME NOT NULL VARCHAR2(30) QUOTA_IN_MB VARCHAR2(40) pause Press [Enter] to continue... Press [Enter] to continue... /*== To list the tablespace(s), which are used for flashback data archives ==*/ SELECT * 2 FROM dba_flashback_archive_ts 3 / Press [Enter] to continue... FLASHBACK_ARCHIVE_NAME FLASHBACK_ARCHIVE# TABLESPACE_NAME QUOTA_IN_MB FLA1 1 FLA_TBS row selected. pause Press [Enter] to continue... Press [Enter] to continue... DESC dba_flashback_archive_tables Name Null? Type TABLE_NAME NOT NULL VARCHAR2(30) OWNER_NAME NOT NULL VARCHAR2(30) FLASHBACK_ARCHIVE_NAME NOT NULL VARCHAR2(255) ARCHIVE_TABLE_NAME VARCHAR2(53) Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 349
370 Exercice 19-1: Utiliser Flashback Data Archive (suite) pause Press [Enter] to continue... Press [Enter] to continue... /*== Query the table name(s), the owner name(s), and ==*/ /*== the internal "history" table name(s) of the flashback data archive ==*/ SELECT * 2 FROM dba_flashback_archive_tables 3 / Press [Enter] to continue... TABLE_NAME OWNER_NAME FLASHBACK_ARCHIVE_NAME ARCHIVE_TABLE_NAME STATUS EMPLOYEES2 HR FLA1 SYS_FBA_HIST_77042 ENABLED 1 row selected. pause Press [Enter] to continue... Press [Enter] to continue... clear columns connect hr/hr Connected. SELECT table_name 2 FROM dict 3 WHERE table_name LIKE '%FLASHBACK_ARCHIVE%' 4 / Press [Enter] to continue... TABLE_NAME USER_FLASHBACK_ARCHIVE USER_FLASHBACK_ARCHIVE_TABLES 2 rows selected. pause Press [Enter] to continue... Press [Enter] to continue... exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 350
371 Exercice 19-1: Utiliser Flashback Data Archive (suite) 24) Pour effectuer des tâches de maintenance supplémentaires sur la Flashback Data Archive, connectez-vous à la base de données en tant qu'utilisateur ARCHIVE_ADMIN, via SQL*Plus. $ sqlplus ARCHIVE_ADMIN/ARCHIVE_ADMIN SQL*Plus: Release Production on Fri Oct 9 08:53: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options 25) Les données de la Flashback Data Archive sont automatiquement purgées au terme du délai de conservation. Cependant, vous pouvez aussi purger les données explicitement. Utilisez la commande suivante pour purger les données dont l'ancienneté est supérieure à deux minutes : ALTER FLASHBACK ARCHIVE fla1 PURGE BEFORE TIMESTAMP (SYSTIMESTAMP - INTERVAL '2' MINUTE); ALTER FLASHBACK ARCHIVE fla1 PURGE BEFORE TIMESTAMP(SYSTIMESTAMP - INTERVAL '2' MINUTE); Flashback archive altered. 26) Exécutez le script flada_tbs2.sql pour créer un tablespace supplémentaire de 10 Mo en tant qu'utilisateur Connected. set serveroutput on -- set verify on set term on set lines 200 set pages 44 set pause on /*== Create another tablespace ==*/ DROP TABLESPACE fla_tbs2 INCLUDING CONTENTS and DATAFILES 2 / DROP TABLESPACE fla_tbs2 INCLUDING CONTENTS and DATAFILES * ERROR at line 1: ORA-00959: tablespace 'FLA_TBS2' does not exist CREATE SMALLFILE TABLESPACE fla_tbs2 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 351
372 Exercice 19-1: Utiliser Flashback Data Archive (suite) 2 DATAFILE '+DATA' 3 SIZE 10M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE 32767M 4 NOLOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO 5 / Tablespace created. pause Press [Enter] to continue... Press [Enter] to continue... 27) En tant qu'utilisateur ARCHIVE_ADMIN, ajoutez 5 Mo du tablespace FLA_TBS2 à la Flashback Data Archive FLA1. connect ARCHIVE_ADMIN/ARCHIVE_ADMIN Connected. ALTER FLASHBACK ARCHIVE fla1 ADD TABLESPACE fla_tbs2 QUOTA 5M; Flashback archive altered. 28) Le délai de conservation est identique pour toutes les tables d'une Flashback Data Archive spécifique. Faites passer le délai de conservation de la Flashback Data Archive FLA1 à deux ans. ALTER FLASHBACK ARCHIVE fla1 MODIFY RETENTION 2 YEAR; Flashback archive altered. 29) En tant qu'utilisateur ARCHIVE_ADMIN, supprimez la Flashback Data Archive FLA1. Remarque : La suppression d'une Flashback Data Archive inclut la suppression de la table d'historique interne (qui est inviolable). Il est impossible de supprimer directement cette table en raison des exigences en termes d'audit et de sécurité. La suppression d'une Flashback Data Archive n'entraîne pas celle des tablespaces dans lesquels elle est stockée, car ils peuvent contenir d'autres données. DROP FLASHBACK ARCHIVE fla1; Flashback archive dropped. 30) En tant qu'utilisateur SYS, nettoyez votre environnement en exécutant le script REM Execute this script script for training purposes only REM Undo Cleanup for Flashback Data Archive REM Execute script as SYSDBA set echo on Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 352
373 Exercice 19-1: Utiliser Flashback Data Archive (suite) set serveroutput on set term on set lines 200 set pause on connect / as sysdba Connected. DROP TABLESPACE fla_tbs1 INCLUDING CONTENTS and DATAFILES 2 / Tablespace dropped. DROP TABLESPACE fla_tbs2 INCLUDING CONTENTS and DATAFILES 2 / Tablespace dropped. ALTER USER hr PASSWORD EXPIRE ACCOUNT LOCK 2 / User altered. DROP USER archive_admin CASCADE 2 / User dropped. drop table hr.employees2 purge; Table dropped. prompt Flashback Data Archive cleanup complete. Flashback Data Archive cleanup complete. pause Press [Enter] to continue... Press [Enter] to continue... exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 353
374 Exercice 19-2 : Réaliser une opération Flashback Transaction Blackout L'option Flashback Transaction Backout est une option de récupération logique permettant d'annuler (rollback) une transaction spécifique et toutes les transactions dépendantes tout en gardant la base de données en ligne. Une transaction dépendante est liée soit par une relation WAW (write-after-write) dans laquelle une transaction modifie les mêmes données que celles qui ont été modifiées par la transaction cible, soit par une contrainte de clé primaire dans laquelle une transaction réinsère la même valeur de clé primaire que celle qui a été supprimée par la transaction cible. L'option Flashback Transaction utilise les informations d'annulation et de journalisation associées aux blocs d'annulation pour créer et exécuter une transaction de compensation afin de rétablir les données affectées dans leur état d'origine. 1) Flashback Transaction Backout requiert que la base de données soit en mode ARCHIVELOG. Ouvrez une fenêtre de terminal en tant qu'utilisateur oracle et accédez au répertoire /home/oracle/solutions/ftx. Vérifiez que vous pointez vers la base de données orcl. Exécutez le script flatxn_archivelog.sh. $ cd /home/oracle/solutions/ftx $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $./flatxn_archivelog.sh ******************************************* For demo purposes ONLY: * Unlock HR account * Enable ARCHIVELOG mode for database The script may appear to hang at the SQL prompt when the database is shutting down and being opened. Wait a few minutes and it should progress. ******************************************* SQL*Plus: Release Production on Fri Oct 9 09:10: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options User altered. System altered. Database closed. Database dismounted. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 354
375 Exercice 19-2 : Réaliser une opération Flashback Transaction Blackout (suite) ORACLE instance shut down. ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database altered. Database altered. Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 108 Next log sequence to archive 110 Current log sequence 110 Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 2) En utilisant SQL*Plus, connectez-vous à la base de données en tant qu'utilisateur SYS et exécutez le script flatxn_setup1.sql. Ce script configure la base de données et l'utilisateur HR en vue de l'annulation de transactions avec Flashback Transaction. Observez les commandes ALTER DATABASE et GRANT. $ sqlplus / as sysdba SQL*Plus: Release Production on Fri Oct 9 09:12: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing set serveroutput on set term on set lines 200 set pause on /*== Set up the HR database account for this lab ==*/ ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 355
376 Exercice 19-2 : Réaliser une opération Flashback Transaction Blackout (suite) Database altered. ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS; Database altered. GRANT EXECUTE ON dbms_flashback TO hr; Grant succeeded. GRANT select any transaction TO hr; Grant succeeded. pause Press [Enter] to continue... Press [Enter] to continue... 3) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Le script établit une connexion à la base de données avec le nom utilisateur HR et crée la première transaction de test qui consiste à insérer cinq lignes. /*== Create test data for flashback transaction ==*/ connect hr/hr Connected. /*== Test transaction 1 ==*/ INSERT INTO hr.regions VALUES (10,'Pole'); 1 row created. INSERT INTO hr.regions VALUES (20,'Moon'); 1 row created. INSERT INTO hr.regions VALUES (30,'Venus'); 1 row created. INSERT INTO hr.regions VALUES (40,'Mars'); 1 row created. INSERT INTO hr.regions VALUES (50,'Saturn'); 1 row created. COMMIT; Commit complete. pause Press [Enter] to continue... Press [Enter] to continue... Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 356
377 Exercice 19-2 : Réaliser une opération Flashback Transaction Blackout (suite) 4) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Le script crée ensuite la seconde transaction de test qui consiste à mettre à jour deux des lignes que vous venez d'insérer. Cette opération crée une dépendance WAW (write-after-write). Ce type de dépendance existe lorsqu'une transaction met à jour ou supprime une ligne qui a été insérée ou mise à jour par une transaction dépendante. /*== Test transaction 2 ==*/ /*== Region 10 and 20 has a WAW dependency on transaction 1 ==*/ UPDATE hr.regions SET region_name='two Poles' WHERE region_id = 10; 1 row updated. UPDATE hr.regions SET region_name='many Moons' WHERE region_id = 20; 1 row updated. COMMIT; Commit complete. pause Press [Enter] to continue... Press [Enter] to continue... 5) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Le script se poursuit et crée la troisième transaction. Celle-ci met à jour trois lignes qui incluent une des lignes mises à jour dans la transaction précédente. Cette action crée une autre dépendance WAW. /*== Test transaction 3 ==*/ /*== Region 10 has a WAW dependency on transaction 1 and 2 ==*/ /*== Region 40 and 50 has a WAW dependency on transaction 1 ==*/ UPDATE hr.regions SET region_name='no star' WHERE region_id = 10; 1 row updated. UPDATE hr.regions SET region_name='red star' WHERE region_id = 40; 1 row updated. UPDATE hr.regions SET region_name='big star' WHERE region_id = 50; 1 row updated. COMMIT; Commit complete. pause Press [Enter] to continue... Press [Enter] to continue... Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 357
378 Exercice 19-2 : Réaliser une opération Flashback Transaction Blackout (suite) 6) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Le script se poursuit et crée une quatrième transaction. Celle-ci met à jour une ligne qui a été insérée dans la première transaction. Cette action crée une autre dépendance WAW. /*== Test transaction 4 ==*/ /*== Region 30 has a WAW dependency on transaction 1 ==*/ UPDATE hr.regions SET region_name='still called Venus' WHERE region_id = 30; 1 row updated. COMMIT; Commit complete. pause Press [Enter] to continue... Press [Enter] to continue... 7) Appuyez sur [Entrée] pour passer à l'étape suivante du script. Pour finir, le script établit une connexion à la base de données avec le nom utilisateur SYS et change les fichiers de journalisation archivés. Pour démarrer l'analyse des informations de journalisation, Flashback Transaction requiert au minimum un fichier de journalisation archivé. connect / as sysdba Connected. ALTER SYSTEM ARCHIVE LOG CURRENT; System altered. ALTER SYSTEM ARCHIVE LOG CURRENT; System altered. prompt "Setup for Flashback Transaction completed" "Setup for Flashback Transaction completed" pause Press [Enter] to continue... Press [Enter] to continue... 8) Appuyez sur [Entrée] pour quitter le script. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 358
379 Exercice 19-2 : Réaliser une opération Flashback Transaction Blackout (suite) 9) Une transaction peut avoir une dépendance WAW (write-after-write). Cela signifie qu'elle met à jour ou supprime des données de ligne qui ont été insérées ou mises à jour par une transaction précédente. Le contexte de cette section est le suivant. Vous souhaitez annuler une transaction erronée, ainsi que les dépendances WAW associées, qui ont également causé des modifications incorrectes. Effectuez les opérations suivantes : a) Connectez-vous à Enterprise Manager Database Control en tant qu'utilisateur SYS. b) Vous suspectez que la table HR.REGIONS contient des modifications issues de la transaction erronée et souhaitez consulter l'intégralité des données de cette table. Cliquez sur l'onglet Schema puis sur Tables sous Database Objects. c) Pour afficher toutes les tables appartenant à l'utilisateur du schéma HR, entrez HR dans le champ Schema, puis cliquez sur le bouton Go. d) Dans la page Tables, sélectionnez la table REGIONS, puis choisissez View Data dans la liste déroulante Actions. Cliquez sur le bouton Go pour afficher les données de la table HR.REGIONS. e) En consultant le contenu de la table, vous réalisez que celle-ci ne devrait pas contenir les lignes "Many moons" et "Still called Venus". Cliquez sur OK. f) De retour dans la liste des tables, sélectionnez la table REGIONS, choisissez Flashback Transaction dans la liste déroulante Actions, puis cliquez sur le bouton Go. g) Consultez les conditions d'interrogation. Indiquez la période pendant laquelle vous pensez que les modifications ont été apportées. Pour cet exemple, acceptez la période par défaut, puis cliquez sur Next. h) Dans la page Flashback Transaction: Select Transaction, cliquez sur le lien Transaction ID de la transaction qui a mis à jour deux régions. i) Dans la page Select Transaction: Show Details, vérifiez les commandes UPDATE erronées, puis cliquez sur OK. j) Cliquez sur Next pour identifier toutes les transactions dépendantes et annuler toutes les modifications requises. La fenêtre Processing: Flashback Transaction apparaît. Dans la page Flashback Transaction: Show Dependencies, cliquez sur le premier lien Transaction ID. k) Dans la page Show Dependencies: Details, vérifiez les transactions de compensation. Notez qu'une des transactions de compensation a été exécutée. Elle est marquée [exec=yes]. L'autre n'a pas été exécutée. Elle est marquée [exec=no]. Cliquez sur OK. l) Dans la page Flashback Transaction: Show Dependencies, cliquez sur le bouton Change Recovery Option. m) Dans la page Show Dependencies: Change Recovery Option, sélectionnez l'option Cascade afin d'annuler aussi les modifications dues aux transactions dépendantes, puis cliquez sur OK. n) Dans la page Flashback Transaction: Show Dependencies, cliquez sur Next. o) Dans la page Flashback Transaction: Review, cliquez sur le bouton Show Undo SQL Script. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 359
380 Exercice 19-2 : Réaliser une opération Flashback Transaction Blackout (suite) p) Dans la page Review: Show Undo SQL, vérifiez toutes les commandes UPDATE de compensation, puis cliquez sur OK. q) Entrez la commande suivante dans la région Execute SQL, puis cliquez sur le bouton Execute SQL pour afficher un aperçu du résultat généré par les instructions d'annulation de compensation : SELECT * FROM HR.REGIONS; r) Notez que la ligne "Many Moons" a disparu de la liste des résultats. Cliquez sur OK. s) Dans la page Flashback Transaction: Review, cliquez sur Finish. t) L'opération Flashback Transaction a été exécutée avec succès. Cliquez sur OK. u) Revenez en arrière et vérifiez le contenu de la table HR.REGIONS. Retournez à la page Tables. Indiquez HR dans le champ Schema, cliquez sur Go, sélectionnez la table REGIONS, choisissez View Data dans la liste déroulante Actions, puis cliquez sur Go. v) Le contenu de la table est le même que celui affiché quatre étapes plus haut. Les transactions 2 et 3 sont annulées, mais la transaction 4 reste inchangée (le nom de région est "Still called Venus") car il n'existe aucune dépendance WAW entre les transactions 2 et 4. w) Fermez la session Enterprise Manager. 10) Nettoyez votre environnement en effectuant les opérations suivantes. Vérifiez que vous pointez vers la base de données orcl. Tout en étant connecté en tant qu'utilisateur SYS dans une session SQL*Plus, exécutez le script flatxn_cleanup1.sql. $ sqlplus / as sysdba SQL*Plus: Release Production on Fri Oct 9 09:31: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing set serveroutput on set term on set lines 200 set pause on connect / as sysdba Connected. DELETE FROM hr.regions WHERE region_id=10; 1 row deleted. DELETE FROM hr.regions WHERE region_id=20; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 360
381 Exercice 19-2 : Réaliser une opération Flashback Transaction Blackout (suite) 1 row deleted. DELETE FROM hr.regions WHERE region_id=30; 1 row deleted. DELETE FROM hr.regions WHERE region_id=40; 1 row deleted. DELETE FROM hr.regions WHERE region_id=50; 1 row deleted. COMMIT; Commit complete. ALTER DATABASE DROP SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS; Database altered. ALTER DATABASE DROP SUPPLEMENTAL LOG DATA; Database altered. REVOKE EXECUTE ON dbms_flashback FROM hr; Revoke succeeded. REVOKE select any transaction FROM hr; Revoke succeeded. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 11) Exécutez à présent le script flatxn_cleanup.sh pour désactiver le mode ARCHIVELOG. $./flatxn_cleanup.sh ******************************************* For cleanup of demo: * Change HR password back to HR * Disable ARCHIVELOG mode SQL*Plus: Release Production on Fri Oct 9 09:32: Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 361
382 Exercice 19-2 : Réaliser une opération Flashback Transaction Blackout (suite) Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options System altered. Database closed. Database dismounted. ORACLE instance shut down. ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database altered. Database altered. Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 110 Current log sequence 112 "Cleanup finished." Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 362
383 Exercices - Chapitre 20 La fonction de conseil Data Recovery Advisor est un outil qui vous aide à diagnostiquer et à réparer les corruptions et les défaillances de données. Elle analyse les défaillances en fonction de leurs symptômes et définit intelligemment les stratégies de réparation optimales. Elle peut aussi réparer automatiquement les défaillances détectées. Dans cet exercice, vous allez utiliser la fonction de conseil Data Recovery Advisor dans trois scénarios différents : Réparer une base de données "arrêtée" avec Enterprise Manager Réparer une corruption de bloc avec Enterprise Manager Réparer une base de données "arrêtée" à partir de la ligne de commande RMAN Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 363
384 Exercice 20-1 : Réparer une base de données avec Enterprise Manager Le premier scénario suppose que votre base de données est "arrêtée". Dans un environnement de production, il s'agirait d'une situation extrêmement critique devant être résolue aussi vite que possible. Vous tentez de rouvrir la base mais cette opération échoue. Vous utilisez alors la fonction de conseil Data Recovery Advisor d'enterprise Manager Database Control pour identifier les défaillances. La fonction vous indique que deux fichiers de données sont inaccessibles. Pour le premier fichier, vous utilisez l'option de réparation manuelle (consistant à renommer le fichier de données). Le problème peut être dû à l'exécution de la commande ALTER DATABASE... RENAME FILE... par le DBA sans que l'administrateur système renomme le fichier dans le système d'exploitation. Une fois le premier problème résolu, vous demandez à nouveau un conseil de réparation à Data Recovery Advisor. Pour traiter le second problème, vous utilisez l'option de réparation automatique pour récupérer le fichier de données perdu. Pour finir, vous vérifiez que la base de données fonctionne à nouveau correctement. 1) Ouvrez une fenêtre de terminal, accédez au répertoire /home/oracle/solutions/dra, puis exécutez la commande./dra_setup.sh. $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ cd /home/oracle/solutions/dra $./dra_setup.sh Recovery Manager: Release Production on Fri Oct 9 10:34: Copyright (c) 1982, 2009, Oracle and/or its affiliates. Tous droits réservés. connected to target database: ORCL (DBID= ) using target database control file instead of recovery catalog RMAN> RMAN> no failures found that match specification RMAN> no failures found that match specification RMAN> no failures found that match specification RMAN> Recovery Manager complete. ******************************************* For demo purposes ONLY Run as the OS user who installed the Oracle software, e.g. oracle Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 364
385 Exercice 20-1 : Réparer une base de données avec Enterprise Manager (suite) SQL*Plus: Release Production on Fri Oct 9 10:35: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options drop tablespace users2 including contents and datafiles * ERROR at line 1: ORA-00959: tablespace 'USERS2' does not exist drop tablespace example2 including contents and datafiles * ERROR at line 1: ORA-00959: tablespace 'EXAMPLE2' does not exist Tablespace created. Tablespace created. Table created. Table created. Table created. Table created. Table created. Table created. Table created. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 365
386 Exercice 20-1 : Réparer une base de données avec Enterprise Manager (suite) ******************************************* For demo purposes ONLY: * Unlock HR account with the HR password * Enable ARCHIVELOG mode for database The script may appear to hang at the SQL prompt when the database is shutting down and being opened. Wait a few minutes and it should progress. ******************************************* SQL*Plus: Release Production on Fri Oct 9 10:35: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options User altered. System altered. Database closed. Database dismounted. ORACLE instance shut down. ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Database altered. Database altered. Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 110 Next log sequence to archive 112 Current log sequence 112 Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 366
387 Exercice 20-1 : Réparer une base de données avec Enterprise Manager (suite) Recovery Manager: Release Production on Fri Oct 9 10:35: Copyright (c) 1982, 2009, Oracle and/or its affiliates. Tous droits réservés. connected to target database: ORCL (DBID= ) RMAN> configure controlfile autobackup on; 2> 3> sql 'alter system archive log current'; 4> 5> sql 'alter system archive log current'; 6> sql 'alter system archive log current'; 7> backup database; 8> sql 'alter system archive log current'; 9> sql 'alter system archive log current'; 10> sql 'alter system archive log current'; 11> backup archivelog all delete input; 12> sql 'alter system archive log current'; 13> sql 'alter system archive log current'; 14> sql 'alter system archive log current'; 15> list backup summary; 16> 17> using target database control file instead of recovery catalog old RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters are successfully stored sql statement: alter system archive log current sql statement: alter system archive log current sql statement: alter system archive log current Starting backup at 09-OCT-09 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=51 device type=disk channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00002 name=+data/orcl/datafile/sysaux channel ORA_DISK_1: starting piece 1 at 09-OCT-09 channel ORA_DISK_1: finished piece 1 at 09-OCT-09 piece handle=+fra/orcl/backupset/2009_10_09/nnndf0_tag t103547_ tag=tag t comment=none channel ORA_DISK_1: backup set complete, elapsed time: 00:01:06 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 367
388 Exercice 20-1 : Réparer une base de données avec Enterprise Manager (suite) input datafile file number=00004 name=+data/orcl/datafile/users channel ORA_DISK_1: starting piece 1 at 09-OCT-09 channel ORA_DISK_1: finished piece 1 at 09-OCT-09 piece handle=+fra/orcl/backupset/2009_10_09/nnndf0_tag t103547_ tag=tag t comment=none channel ORA_DISK_1: backup set complete, elapsed time: 00:00:45 Finished backup at 09-OCT-09 Starting Control File and SPFILE Autobackup at 09-OCT-09 piece handle=+fra/orcl/autobackup/2009_10_09/s_ comment=none Finished Control File and SPFILE Autobackup at 09-OCT-09 sql statement: alter system archive log current sql statement: alter system archive log current sql statement: alter system archive log current Starting backup at 09-OCT-09 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archived log backup set channel ORA_DISK_1: specifying archived log(s) in backup set input archived log thread=1 sequence=101 RECID=1 STAMP= input archived log thread=1 sequence=102 RECID=2 STAMP= archived log file name=+fra/orcl/archivelog/2009_10_09/thread_1_seq_ RECID=12 STAMP= Finished backup at 09-OCT-09 Starting Control File and SPFILE Autobackup at 09-OCT-09 piece handle=+fra/orcl/autobackup/2009_10_09/s_ comment=none Finished Control File and SPFILE Autobackup at 09-OCT-09 sql statement: alter system archive log current sql statement: alter system archive log current sql statement: alter system archive log current List of Backups =============== Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 368
389 Exercice 20-1 : Réparer une base de données avec Enterprise Manager (suite) 1 B F A DISK 08-OCT NO TAG T B F A DISK 09-OCT NO TAG T B F A DISK 09-OCT NO TAG T B F A DISK 09-OCT NO TAG T B F A DISK 09-OCT NO TAG T B F A DISK 09-OCT NO TAG T B A A DISK 09-OCT NO TAG T B F A DISK 09-OCT NO TAG T Recovery Manager complete. Basic setup done. Now, run one of the setup scripts for a specific scenario. $ 2) Poursuivez lorsque vous voyez les lignes : "Basic setup done. Now, run one of the setup scripts for a specific scenario." Pour définir une défaillance de données et provoquer l'arrêt de la base, exécutez la commande suivante dans votre fenêtre de terminal :./dra1_corruption.sh Le fichier de données users2.dbf est supprimé et le fichier example2.dbf est renommé. Vous allez diagnostiquer et réparer ces défaillances en utilisant les options de réparation manuelle et automatique. $./dra1_corruption.sh ******************************************* For demo purposes ONLY: * Shutdown database SQL*Plus: Release Production on Fri Oct 9 10:49: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Database closed. Database dismounted. ORACLE instance shut down. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options ******************************************* Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 369
390 Exercice 20-1 : Réparer une base de données avec Enterprise Manager (suite) For demo purposes ONLY: * Corrupt datafiles to produce failures $ 3) Utilisez Enterprise Manager pour réparer la situation aussi vite que possible. a) Ouvrez une session Enterprise Manager en tant qu'utilisateur SYS à l'aide du mot de passe oracle_4u et connectez-vous en tant que SYSDBA. b) Si vous ne pouvez pas accéder à Enterprise Manager Database Control, arrêtez-le puis démarrez-le à l'aide des commandes suivantes : $ emctl stop dbconsole Oracle Enterprise Manager 11g Database Control Release Copyright (c) 1996, 2009 Oracle Corporation. Tous droits réservés. Stopping Oracle Enterprise Manager 11g Database Control... all attemps to stop oc4j failed... now trying to kill Failed to shutdown DBConsole Gracefully Stopped. $ emctl start dbconsole Oracle Enterprise Manager 11g Database Control Release Copyright (c) 1996, 2009 Oracle Corporation. Tous droits réservés. Starting Oracle Enterprise Manager 11g Database Control... started Logs are generated in directory /u01/app/oracle/acfsmounts/acfs_db1/ed.us.oracle.com_orcl/sysman/ log $ c) La base de données est "arrêtée". Cliquez sur Startup. d) Définissez toutes les informations d'identification et de connexion requises dans la page Startup/Shutdown. Utilisez oracle/oracle pour l'hôte et SYS/oracle_4U as SYSDBA pour la base de données. Cliquez sur OK. e) Dans la page Select Startup Type, assurez-vous que l'option "Start database along with dependent resources" est sélectionnée (option par défaut), puis cliquez sur OK. f) Dans la page Startup/Shutdown: Confirmation, cliquez sur Yes. g) La page Startup apparaît pendant un moment. Veuillez patienter. h) La page Startup/Shutdown: Select Operation apparaît et affiche un message d'erreur indiquant qu'un fichier est introuvable. i) Assurez-vous qu'orcl est bien sélectionné et cliquez sur Startup. j) Dans la page Confirmation, cliquez sur le bouton Advanced Options. k) Dans la page Advanced Options, sélectionnez Mount the database et cliquez sur OK. l) Dans la page Confirmation, cliquez sur Yes. m) Patientez dans la page Startup. n) Vous obtenez alors un message Startup Successful dans la page Startup/Shutdown: Select Operation. Cliquez sur Return. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 370
391 Exercice 20-1 : Réparer une base de données avec Enterprise Manager (suite) o) Après quelques instants, vous êtes dirigé vers la page Database Instance. Dans la page Database Instance, cliquez sur le bouton Perform Recovery pour diagnostiquer les défaillances et procéder à une réparation. p) Dans la page Perform Recovery: Credentials, entrez oracle comme nom utilisateur et comme mot de passe, puis cliquez sur Continue. (Si vous avez précédemment sélectionné Save Credentials, cette page n'apparaît pas.) q) Dans la page Database Login, entrez SYS/oracle_4U as SYSDBA comme informations d'identification et de connexion, puis cliquez sur Login. r) Si la page Perform Recovery: Credentials apparaît, entrez oracle/oracle pour vous connecter à l'hôte. Cliquez sur Continue. s) Dans la page Perform Recovery, cliquez sur le bouton Advise and Recover, dans la section Oracle Advised Recovery. t) Vous êtes alors dirigé vers la page View and Manage Failures. Lorsque l'ouverture de la base de données a échoué, la fonction de conseil Data Recovery Advisor a automatiquement diagnostiqué le problème. Analysez le résultat de ce diagnostic. Cliquez sur l'icône "+" sous Failure Description pour afficher plus de détails. Vous voyez deux fichiers manquants. u) Pour afficher les stratégies de réparation suggérées, laissez toutes les défaillances sélectionnées, puis cliquez sur le bouton Advise. v) La page Manual Actions apparaît. La fonction de conseil Data Recovery Advisor vous invite à envisager des réparations manuelles. A ce stade, NE cliquez sur aucun bouton. Passez à l'étape suivante. w) Cet exercice suppose que le fichier de données example01.dbf a été renommé par erreur. Ouvrez une fenêtre de terminal et entrez les commandes suivantes pour réparer la défaillance manuellement : $ $ mv /u01/app/oracle/oradata/example2.dbf.old /u01/app/oracle/oradata/example2.dbf $ x) Revenez à la page Manual Actions d'enterprise Manager. Comme vous avez terminé les étapes précédentes, cliquez sur Re-assess Failures. y) Data Recovery Advisor revalide toutes les défaillances et ferme celles que vous avez réparées manuellement. Dans la page View and Manage Failures, cliquez (si nécessaire) sur l'icône "+" sous Failure Description pour développer le noeud et voir les défaillances restantes. z) Notez que la défaillance que vous avez réparée manuellement est fermée. Cependant, il reste une autre défaillance ouverte. Laissez-la sélectionnée, puis cliquez sur Advise. aa) Dans la page Manual Actions, cliquez sur Continue with Advise pour lancer une réparation automatisée. bb) Dans la page Recovery Advise, la fonction de conseil Data Recovery Advisor génère et affiche un script de réparation RMAN. Cliquez sur Continue. cc) Dans la page Review, vous pouvez consulter la défaillance et le script de réparation associé. Cliquez sur Execute Recovery. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 371
392 Exercice 20-1 : Réparer une base de données avec Enterprise Manager (suite) dd) Attendez la fin de l'exécution de la réparation. Une fois l'opération terminée, Data Recovery Advisor affiche la page Recovery Results présentant un message Recovery Succeeded dans la partie supérieure. Analysez l'ensemble des résultats de l'opération. Naviguez dans la page à l'aide de la barre de défilement vertical. ee) Cliquez sur Open Database. ff) Une fois la réparation terminée avec succès, la base de données est ouverte. Dans la page Recovery Results, cliquez sur OK. gg) Enterprise Manager affiche la page Login. Connectez-vous à l'aide des données d'identification SYS/oracle_4U as SYSDBA. hh) Dans la page d'accueil Database Instance, vérifiez que l'instance de base de données fonctionne. Cette opération peut prendre environ deux minutes (ou quelques secondes seulement, selon les ressources système disponibles). Il peut être nécessaire d'effectuer plusieurs actualisations avant de constater que la base de données est ouverte. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 372
393 Exercice 20-2 : Réparer une corruption de bloc avec Enterprise Manager Pour diagnostiquer et réparer une corruption de bloc, effectuez les opérations suivantes : 1) Pour définir des corruptions de bloc dans le fichier de données example01.dbf, ouvrez une fenêtre de terminal, accédez au répertoire /home/oracle/solutions/dra et exécutez le script dra2_corruption.sh. Les erreurs de type corruption de bloc apparaissent généralement sous cette forme aux utilisateurs d'application. Les DBA peuvent voir la même erreur dans la page d'accueil d'enterprise Manager DB Control (voir l'étape suivante). Cependant, il y a un petit délai, en raison du traitement interne entre la découverte de l'erreur et son affichage par Enterprise Manager. $ cd /home/oracle/solutions/dra $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $./dra2_corruption.sh ******************************************* For demo purposes ONLY: Create block corruption for scenario 2 Please wait setup in process SQL*Plus: Release Production on Fri Oct 9 11:12: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected. dd of=/u01/app/oracle/oradata/example2.dbf bs=8192 conv=notrunc seek=131 << EOF CORRUPT corrupt CORRUPT corrupt CORRUPT corrupt CORRUPT corrupt CORRUPT corrupt EOF dd of=/u01/app/oracle/oradata/example2.dbf bs=8192 conv=notrunc seek=147 << EOF CORRUPT corrupt CORRUPT corrupt CORRUPT corrupt CORRUPT corrupt CORRUPT corrupt EOF dd of=/u01/app/oracle/oradata/example2.dbf bs=8192 conv=notrunc seek=139 << EOF CORRUPT corrupt CORRUPT corrupt CORRUPT corrupt CORRUPT corrupt CORRUPT corrupt EOF Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 373
394 Exercice 20-2 : Réparer une corruption de bloc avec Enterprise Manager (suite) 0+1 records in 0+1 records out 246 bytes (246 B) copied, seconds, 15.5 kb/s 0+1 records in 0+1 records out 246 bytes (246 B) copied, seconds, 92.6 kb/s 0+1 records in 0+1 records out 246 bytes (246 B) copied, seconds, 7.5 kb/s SQL*Plus: Release Production on Fri Oct 9 11:12: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected. System altered. select * from hr.regions2 * ERROR at line 1: ORA-01578: ORACLE data block corrupted (file # 8, block # 131) ORA-01110: data file 8: '/u01/app/oracle/oradata/example2.dbf' select * from hr.locations2 * ERROR at line 1: ORA-01578: ORACLE data block corrupted (file # 8, block # 139) ORA-01110: data file 8: '/u01/app/oracle/oradata/example2.dbf' select * from hr.employees2 * ERROR at line 1: ORA-01578: ORACLE data block corrupted (file # 8, block # 147) ORA-01110: data file 8: '/u01/app/oracle/oradata/example2.dbf' Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Setup 2 completed. $ 2) Utilisez Enterprise Manager pour traiter rapidement ces erreurs. a) Connectez-vous à Enterprise Manager à l'aide des données d'identification SYS/oracle_4U as SYSDBA. b) Dans la page d'accueil Database Instance, cliquez sur Advisor Central. c) Cliquez sur Data Recovery Advisor. d) Cliquez sur l'icône "+" sous Failure Description pour développer le noeud et afficher plus de détails. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 374
395 Exercice 20-2 : Réparer une corruption de bloc avec Enterprise Manager (suite) e) Dans la page View and Manage Failures, analysez les détails de la corruption de bloc. Entrez oracle pour vous connecter à l'hôte si les informations d'identification et de connexion n'ont pas été sauvegardées précédemment. Laissez toutes les défaillances sélectionnées, puis cliquez sur Advise. f) Dans la page Recovery Advice, consultez le script de réparation, puis cliquez sur Continue. g) Dans la page Review, vous pouvez afficher les défaillances et les réparations suggérées. Cliquez sur Submit Recovery Job. h) Dans la page Job Activity, vous devez recevoir un message de confirmation indiquant que le travail a été créé avec succès. i) Dans la page Job Activity, il est possible que vous voyiez le statut du travail défini avec la valeur "running" (en cours), selon la rapidité du traitement du travail. Cliquez sur le bouton Reload ou Refresh de votre navigateur à plusieurs reprises. Le travail est considéré comme terminé lorsqu'il ne présente plus l'état "running". Cliquez sur le lien correspondant au nom du travail, sous le message de confirmation. j) Dans la page Job Run, vérifiez le succès de l'exécution du travail, puis cliquez sur l'onglet Database situé dans la partie supérieure droite de la page. k) Affichez les alertes de corruption de bloc dans la page d'accueil Database Instance. Les DBA surveillent cette page régulièrement. Ils sont donc en mesure de voir ces alertes (qui apparaissent avec un léger retard). 3) Pour vérifier la réparation de la corruption de bloc, exécutez les commandes suivantes dans une fenêtre de terminal : SELECT * FROM HR.REGIONS2; $ $ sqlplus / as sysdba SQL*Plus: Release Production on Fri Oct 9 11:35: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options select * from hr.regions2; REGION_ID REGION_NAME Europe 2 Americas 3 Asia 4 Middle East and Africa exit Disconnected from Oracle Database 11g Enterprise Edition Release Production Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 375
396 Exercice 20-2 : Réparer une corruption de bloc avec Enterprise Manager (suite) With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 376
397 Exercice 20-3 : Réparer une base de données à partir de la ligne de commande RMAN Pour réparer une base de données arrêtée, effectuez les opérations suivantes : 1) Pour définir une défaillance de données et provoquer l'arrêt de la base, ouvrez une fenêtre de terminal, accédez au répertoire /home/oracle/solutions/dra, puis exécutez le script dra1_corruption.sh. Le fichier de données users01.dbf est supprimé et le fichier example01.dbf est renommé. Vous allez diagnostiquer et réparer ces défaillances en utilisant les options de réparation manuelle et automatique. $. oraenv ORACLE_SID = [orcl]? orcl The Oracle base for ORACLE_HOME=/u01/app/oracle/acfsmounts/acfs_db1 is /u01/app/oracle $ cd /home/oracle/solutions/dra $ $./dra1_corruption.sh ******************************************* For demo purposes ONLY: * Shutdown database SQL*Plus: Release Production on Fri Oct 9 11:39: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Database closed. Database dismounted. ORACLE instance shut down. Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options ******************************************* For demo purposes ONLY: * Corrupt datafiles to produce failures $ 2) Comme vous constatez que votre base de données est à l'état DOWN, essayez de la démarrer. a) Notez que la base de données est montée et contient une erreur de fichier de données. $ sqlplus /nolog SQL*Plus: Release Production on Fri Oct 9 11:40: Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 377
398 Exercice 20-3 : Réparer une base de données à partir de la ligne de commande RMAN (suite) Copyright (c) 1982, 2009, Oracle. Tous droits réservés. connect / as sysdba Connected to an idle instance. startup ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. ORA-01157: cannot identify/lock data file 7 - see DBWR trace file ORA-01110: data file 7: '/u01/app/oracle/oradata/users2.dbf' 3) Quittez SQL*Plus et démarrez RMAN. exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ rman target / nocatalog Recovery Manager: Release Production on Fri Oct 9 11:42: Copyright (c) 1982, 2009, Oracle and/or its affiliates. Tous droits réservés. connected to target database: ORCL (DBID= , not open) using target database control file instead of recovery catalog RMAN> 4) Affichez les défaillances et les détails correspondants. RMAN> LIST FAILURE; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary HIGH OPEN 09-OCT-09 One or more nonsystem datafiles are missing RMAN> LIST FAILURE DETAIL; List of Database Failures ========================= Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 378
399 Exercice 20-3 : Réparer une base de données à partir de la ligne de commande RMAN (suite) Failure ID Priority Status Time Detected Summary HIGH OPEN 09-OCT-09 One or more nonsystem datafiles are missing Impact: See impact for individual child failures List of child failures for parent failure ID 422 Failure ID Priority Status Time Detected Summary HIGH OPEN 09-OCT-09 Datafile 8: '/u01/app/oracle/oradata/example2.dbf' is missing Impact: Some objects in tablespace EXAMPLE2 might be unavailable 520 HIGH OPEN 09-OCT-09 Datafile 7: '/u01/app/oracle/oradata/users2.dbf' is missing Impact: Some objects in tablespace USERS2 might be unavailable RMAN> 5) Diagnostiquez les défaillances. a) Vous devez voir deux défaillances. Vous reviendrez à cette fenêtre après la prochaine étape. RMAN> ADVISE FAILURE; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary HIGH OPEN 09-OCT-09 One or more nonsystem datafiles are missing Impact: See impact for individual child failures List of child failures for parent failure ID 422 Failure ID Priority Status Time Detected Summary HIGH OPEN 09-OCT-09 Datafile 8: '/u01/app/oracle/oradata/example2.dbf' is missing Impact: Some objects in tablespace EXAMPLE2 might be unavailable 520 HIGH OPEN 09-OCT-09 Datafile 7: '/u01/app/oracle/oradata/users2.dbf' is missing Impact: Some objects in tablespace USERS2 might be unavailable analyzing automatic repair options; this may take some time allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=24 device type=disk analyzing automatic repair options complete Mandatory Manual Actions ======================== no manual actions available Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 379
400 Exercice 20-3 : Réparer une base de données à partir de la ligne de commande RMAN (suite) Optional Manual Actions ======================= 1. If file /u01/app/oracle/oradata/users2.dbf was unintentionally renamed or moved, restore it 2. If file /u01/app/oracle/oradata/example2.dbf was unintentionally renamed or moved, restore it Automated Repair Options ======================== Option Repair Description Restore and recover datafile 7; Restore and recover datafile 8 Strategy: The repair includes complete media recovery with no data loss Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_ hm RMAN> 6) Cet exercice suppose que le fichier de données example2.dbf a été renommé par erreur. Ouvrez une autre fenêtre de terminal et renommez ce fichier de manière appropriée pour réparer manuellement la défaillance. $ mv /u01/app/oracle/oradata/example2.dbf.old /u01/app/oracle/oradata/example2.dbf $ 7) Revenez à la fenêtre RMAN et vérifiez les résultats de votre réparation manuelle. a) Vous devez voir une défaillance. RMAN> ADVISE FAILURE; List of Database Failures ========================= Failure ID Priority Status Time Detected Summary HIGH OPEN 09-OCT-09 One or more nonsystem datafiles are missing Impact: See impact for individual child failures List of child failures for parent failure ID 422 Failure ID Priority Status Time Detected Summary HIGH OPEN 09-OCT-09 Datafile 7: '/u01/app/oracle/oradata/users2.dbf' is missing Impact: Some objects in tablespace USERS2 might be unavailable analyzing automatic repair options; this may take some time using channel ORA_DISK_1 analyzing automatic repair options complete Mandatory Manual Actions ======================== Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 380
401 Exercice 20-3 : Réparer une base de données à partir de la ligne de commande RMAN (suite) no manual actions available Optional Manual Actions ======================= 1. If file /u01/app/oracle/oradata/users2.dbf was unintentionally renamed or moved, restore it Automated Repair Options ======================== Option Repair Description Restore and recover datafile 7 Strategy: The repair includes complete media recovery with no data loss Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_ hm RMAN> 8) Analysez le script de réparation. RMAN> REPAIR FAILURE PREVIEW; Strategy: The repair includes complete media recovery with no data loss Repair script: Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_ hm contents of repair script: # restore and recover datafile restore datafile 7; recover datafile 7; RMAN> 9) Lancez une réparation automatisée, redémarrez la base de données et quittez RMAN. RMAN> REPAIR FAILURE; Strategy: The repair includes complete media recovery with no data loss Repair script: Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_ hm contents of repair script: # restore and recover datafile restore datafile 7; recover datafile 7; Do you really want to execute the above repair (enter YES or NO)? YES executing repair script Starting restore at 09-OCT-09 using channel ORA_DISK_1 Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 381
402 Exercice 20-3 : Réparer une base de données à partir de la ligne de commande RMAN (suite) channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile to /u01/app/oracle/oradata/users2.dbf channel ORA_DISK_1: reading from backup piece +FRA/orcl/backupset/2009_10_09/nnndf0_tag t103547_ channel ORA_DISK_1: piece handle=+fra/orcl/backupset/2009_10_09/nnndf0_tag t103547_ tag=tag t channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 Finished restore at 09-OCT-09 Starting recover at 09-OCT-09 using channel ORA_DISK_1 starting media recovery archived log for thread 1 with sequence 119 is already on disk as file +FRA/orcl/archivelog/2009_10_09/thread_1_seq_ archived log for thread 1 with sequence 120 is already on disk as file +FRA/orcl/archivelog/2009_10_09/thread_1_seq_ archived log for thread 1 with sequence 121 is already on disk as file +FRA/orcl/archivelog/2009_10_09/thread_1_seq_ channel ORA_DISK_1: starting archived log restore to default destination channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=115 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=116 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=117 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=118 channel ORA_DISK_1: reading from backup piece +FRA/orcl/backupset/2009_10_09/annnf0_tag t103929_ channel ORA_DISK_1: piece handle=+fra/orcl/backupset/2009_10_09/annnf0_tag t103929_ tag=tag t channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:07 archived log file name=+fra/orcl/archivelog/2009_10_09/thread_1_seq_ thread=1 sequence=115 channel default: deleting archived log(s) Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 382
403 Exercice 20-3 : Réparer une base de données à partir de la ligne de commande RMAN (suite) archived log file name=+fra/orcl/archivelog/2009_10_09/thread_1_seq_ RECID=24 STAMP= archived log file name=+fra/orcl/archivelog/2009_10_09/thread_1_seq_ thread=1 sequence=116 channel default: deleting archived log(s) archived log file name=+fra/orcl/archivelog/2009_10_09/thread_1_seq_ RECID=26 STAMP= archived log file name=+fra/orcl/archivelog/2009_10_09/thread_1_seq_ thread=1 sequence=117 channel default: deleting archived log(s) archived log file name=+fra/orcl/archivelog/2009_10_09/thread_1_seq_ RECID=25 STAMP= archived log file name=+fra/orcl/archivelog/2009_10_09/thread_1_seq_ thread=1 sequence=118 channel default: deleting archived log(s) archived log file name=+fra/orcl/archivelog/2009_10_09/thread_1_seq_ RECID=27 STAMP= archived log file name=+fra/orcl/archivelog/2009_10_09/thread_1_seq_ thread=1 sequence=119 media recovery complete, elapsed time: 00:00:04 Finished recover at 09-OCT-09 repair failure complete Do you want to open the database (enter YES or NO)? YES database opened RMAN> exit Recovery Manager complete. $ 10) A l'aide de SQL*Plus, vérifiez si votre base de données fonctionne. $ sqlplus / as sysdba SQL*Plus: Release Production on Fri Oct 9 11:56: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options select open_mode from v$database; Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 383
404 Exercice 20-3 : Réparer une base de données à partir de la ligne de commande RMAN (suite) OPEN_MODE READ WRITE exit Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options $ 11) Pour nettoyer votre environnement, exécutez le script dra_cleanup.sh. $./dra_cleanup.sh ******************************************* For cleanup of demo: * Lock HR account * Disable ARCHIVELOG mode SQL*Plus: Release Production on Fri Oct 9 11:57: Copyright (c) 1982, 2009, Oracle. Tous droits réservés. Connected to: Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Tablespace dropped. Tablespace dropped. User altered. System altered. Database closed. Database dismounted. ORACLE instance shut down. ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted. Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 384
405 Exercice 20-3 : Réparer une base de données à partir de la ligne de commande RMAN (suite) Database altered. Database altered. Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 120 Current log sequence 122 "Cleanup finished." Disconnected from Oracle Database 11g Enterprise Edition Release Production With the Partitioning, Automatic Storage Management, OLAP, Data Miningand Real Application Testing options $ Oracle Database 11g : Nouvelles fonctionnalités d'administration A - 385
406
407 Améliorations apportées au planificateur Copyright 2009, Oracle. Tous droits réservés.
408 Objectifs A la fin de ce chapitre, vous pourrez : utiliser des travaux légers utiliser la notification par du planificateur créer un contrôleur de fichier (file watcher) créer des travaux sur une base de données distante créer plusieurs travaux de destination Copyright 2009, Oracle. Tous droits réservés. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 2
409 Travaux légers Travaux légers persistants : Créés à partir d'un modèle de travail Récupérables JOB_STYLE => LIGHTWEIGHT Travaux légers Copyright 2009, Oracle. Tous droits réservés. Certains clients ont besoin de créer des centaines de travaux à la seconde. Lorsqu'un travail est standard, il crée un objet de base de données qui le décrit, modifie plusieurs tables et crée des informations de journalisation dans le processus. Dans le planificateur (Scheduler) d'oracle Database 11g, il existe maintenant des travaux légers persistants (persistent lightweight jobs). Leur objectif est de réduire la surcharge induite et le temps nécessaire à leur démarrage. La quantité de métadonnées créées pour un tel travail est minimale. Cela permet de réduire le temps nécessaire au démarrage du travail et la quantité d'informations de journalisation créées. Pour atteindre ces objectifs, le travail léger occupe un petit espace sur le disque pour ses métadonnées et pour le stockage des données d'exécution. L'espace occupé sur le disque permet également la récupération et l'équilibrage de la charge dans les environnements RAC. Un travail léger est toujours créé à partir d'un modèle, qui peut être une procédure stockée ou un programme. La procédure stockée contient toutes les informations nécessaires pour le travail. Vous pouvez définir quelques attributs (notamment des arguments). Les modèles de travail sont créés avec les procédures DBMS_SCHEDULER.CREATE_PROGRAM. Depuis l'introduction d'oracle Scheduler dans Oracle 10g, le système prend en charge les travaux fondés sur des objets de base de données existants. C'est toujours le cas dans Oracle Database 11g. Les travaux légers n'ont pas pour but de remplacer ces travaux car chaque type a ses propres avantages. Vous pouvez ainsi choisir un travail en fonction de vos besoins. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 3
410 Choisir le travail approprié Travail standard Surcharge élevée Récupération plus performante Plus de flexibilité Travail léger persistant : Surcharge moindre Quelques possibilités de récupération Modification limitée des attributs Copyright 2009, Oracle. Tous droits réservés. Choisir le travail approprié Les avantages et inconvénients relatifs aux différents types de travail sont les suivants : Un travail standard offre une flexibilité maximale mais génère une surcharge significative lors des opérations de création/suppression. Un travail peut être créé avec une seule commande. Les utilisateurs bénéficient d'un contrôle fin des privilèges sur le travail. Ils peuvent également utiliser des programmes ou des procédures stockées appartenant à d'autres utilisateurs. L'objet de base de données correspondant à un travail standard doit être créé et supprimé. Cette action met à jour plusieurs tables et les informations de journalisation associées. Les utilisateurs qui créent un assez petit nombre de travaux avec une fréquence d'exécution relativement faible doivent choisir des travaux standard. Un travail léger persistant ne nécessite pas la création d'un objet de base de données, ce qui constitue une amélioration significative en termes de temps de création/suppression. Chaque travail léger est créé à partir d'un modèle de travail qui est stocké sous forme de programme. Etant donné que les travaux légers persistants écrivent des informations d'état sur le disque lors de l'exécution, l'amélioration n'est pas spectaculaire. Il existe plusieurs restrictions relatives aux travaux légers persistants : - Les utilisateurs ne peuvent pas définir de privilèges sur ces travaux. Ils héritent des privilèges associés au modèle de travail parent. - L'utilisation d'un modèle est obligatoire. Il n'est pas possible de créer un travail léger persistant totalement autonome. - Seuls certains attributs de travail peuvent être définis, notamment JOB_ARGUMENTS. Les travaux légers sont particulièrement commodes lorsque l'utilisateur doit créer un grand nombre de travaux en très peu de temps (entre 10 et 100 travaux par seconde) et qu'il dispose d'une bibliothèque de programmes (modèles de travail). Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 4
411 Notification par du planificateur : Présentation 11.2 Vous pouvez configurer des travaux pour que des notifications par soient envoyées suite à la modification du statut d'un travail. L'envoi d' s peut être déclenché par des événements spécifiques relatifs au statut du travail répertoriés dans une liste, tels que des échecs de travaux. Plusieurs notifications par peuvent être configurées pour un travail. Un peut être envoyé à plusieurs destinataires. Copyright 2009, Oracle. Tous droits réservés. Notification par du planificateur : Présentation La fonctionnalité de notification par vous permet d'ajouter des notifications à des travaux existants pour que les événements d'intérêt associés au travail soient signalés par e- mail aux adresses indiquées. Pour chaque travail, vous pouvez ajouter des notifications pour plusieurs événements. Vous pouvez également envoyer la notification à plusieurs destinataires. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 5
412 Utiliser la notification par du planificateur 11.2 Effectuez les opérations de configuration suivantes dans chaque base de données : Affecter à l'attribut _server du planificateur l'adresse du serveur SMTP qui sera utilisée pour envoyer des s. Affecter à l'attribut _sender du planificateur l'adresse par défaut de l'expéditeur (facultatif). Pour chaque travail pour lequel vous souhaitez que le système envoie des s, effectuez l'opération suivante : Utilisez la procédure DBMS_SCHEDULER.ADD_JOB_ _NOTIFICATION pour ajouter des notifications par à un travail spécifique. Copyright 2009, Oracle. Tous droits réservés. Utiliser la notification par du planificateur Pour activer la fonctionnalité de notification par , vous devez effectuer les opérations de configuration suivantes dans chaque base de données : Définir l'attribut du planificateur _server. Utiliser l'attribut _sender du planificateur pour définir l'adresse par défaut de l'expéditeur (facultatif). Une fois le travail créé, exécutez la procédure DBMS_SCHEDULER.ADD_JOB_ _NOTIFICATION pour ajouter une ou plusieurs notifications au travail. Les pages suivantes présentent des informations supplémentaires. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 6
413 Définir l'attribut _server 11.2 Indiquez une adresse de serveur SMTP qui sera utilisée par le planificateur afin d'envoyer des notifications par pour les événements relatifs au statut du travail : DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE (' _server','host[:port]'); Copyright 2009, Oracle. Tous droits réservés. Définir l'attribut _server L'attribut _server du planificateur indique une adresse de serveur SMTP que le planificateur utilisera pour envoyer des notifications par pour les événements relatifs au statut du travail. Le format de l'attribut se présente ainsi : host[:port] où host est le nom d'hôte ou l'adresse IP du serveur SMTP et port est le port TCP d'écoute du serveur SMTP. Si l'élément port n'est pas défini, le port 25 est utilisé par défaut. Si l'attribut _server n'est pas défini, affectez-lui la valeur NULL ou une adresse de serveur SMTP non valide (ainsi, le planificateur ne pourra pas envoyer de notification). Les serveurs SMTP qui requièrent des connexions SSL (Secure Sockets Layer) ou l'authentification de l'utilisateur ne sont pas pris en charge. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 7
414 Définir l'attribut _sender 11.2 Indiquez l'adresse par défaut de l'expéditeur pour les notifications relatives au statut d'un travail : DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE (' _sender','valid address'); Copyright 2009, Oracle. Tous droits réservés. Définir l'attribut _sender Vous pouvez utiliser l'attribut _sender pour définir l'adresse par défaut de l'expéditeur. L'adresse indiquée doit être valide. Si vous ne définissez pas cet attribut ou si vous lui affectez la valeur NULL, les notifications par relatives au statut d'un travail qui n'indiquent pas l'adresse de l'expéditeur n'affichent pas l'adresse DE (FROM) dans l'en-tête du message. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 8
415 Utiliser ADD_JOB_ _NOTIFICATION 11.2 DBMS_SCHEDULER.ADD_JOB_ _NOTIFICATION ( job_name IN VARCHAR2, recipients IN VARCHAR2, sender IN VARCHAR2 DEFAULT NULL, subject IN VARCHAR2 DEFAULT dbms_scheduler.default_notification_subject, body IN VARCHAR2 DEFAULT dbms_scheduler.default_notification_body, events IN VARCHAR2 DEFAULT 'JOB_FAILED,JOB_BROKEN,JOB_SCH_LIM_REACHED, JOB_CHAIN_STALLED,JOB_OVER_MAX_DUR', filter_condition IN VARCHAR2 DEFAULT NULL); Copyright 2009, Oracle. Tous droits réservés. Utiliser ADD_JOB_ _NOTIFICATION La procédure DBMS_SCHEDULER.ADD_JOB_ _NOTIFICATION ajoute une ou plusieurs notifications par relatives au travail. Des s sont envoyés aux adresses indiquées lorsque le travail génère l'un des événements répertoriés. Le travail est automatiquement modifié pour déclencher ces événements. Si une condition de filtrage est définie, seuls les événements répondant aux spécifications de l'argument de procédure FILTER_CONDITION génèrent un . Cette procédure échoue si l'attribut du planificateur _SERVER n'est pas défini ou si le travail défini n'existe pas. Remarque : L'utilisateur qui appelle cette procédure doit être le propriétaire du travail, disposer du privilège système CREATE ANY JOB ou se voir attribuer le privilège ALTER pour ce travail. Les arguments de la procédure sont les suivants : JOB_NAME : Nom du travail pour lequel des notifications par seront envoyées. La valeur ne peut pas être NULL. RECIPIENTS : Liste des adresses de destination des notifications (valeurs séparées par une virgule). Les notifications par seront envoyées à toutes les adresses répertoriées. La valeur ne peut pas être NULL. SENDER : Adresse utilisée par l'expéditeur des notifications. Si sa valeur est NULL, la valeur utilisée est l'attribut du planificateur DEFAULT_ _SENDER (s'il s'agit d'une adresse valide). Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 9
416 Utiliser ADD_JOB_ _NOTIFICATION (suite) SUBJECT : Sujet des s de notification, qui peut contenir les variables suivantes : %job_owner%, %job_name%, %event_type%, %event_timestamp%, %log_id%, %error_code%, %error_message%, %run_count%, %failure_count%, %retry_count%, %job_subname%, %job_class_name% BODY : Corps des s de notification, qui peut contenir une des variables valides contenues dans l'argument SUBJECT. EVENTS : Liste des événements pour lesquels des notifications par seront envoyées (valeurs séparées par une virgule). La valeur ne peut pas être NULL. Reportez-vous à la liste des événements associés à l'attribut RAISE_EVENTS de la table JOBS pour connaître les événements valides. FILTER_CONDITION : Utilisé pour filtrer les événements pour lesquels des notifications par sont envoyées. Si sa valeur est NULL (par défaut), toutes les occurrences des événements définis seront transmises par à toutes les adresses de destinataires indiquées. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 10
417 Utiliser REMOVE_JOB_ _NOTIFICATION 11.2 DBMS_SCHEDULER.REMOVE_JOB_ _NOTIFICATION ( job_name IN VARCHAR2, recipients IN VARCHAR2 DEFAULT NULL, events IN VARCHAR2 DEFAULT NULL); Copyright 2009, Oracle. Tous droits réservés. Utiliser REMOVE_JOB_ _NOTIFICATION La procédure DBMS_SCHEDULER.REMOVE_JOB_ _NOTIFICATION est utilisée pour supprimer une ou plusieurs notifications par pour le travail indiqué. Remarque : L'utilisateur qui appelle cette procédure doit être le propriétaire du travail, disposer du privilège système CREATE ANY JOB ou se voir attribuer le privilège ALTER pour ce travail. Les arguments de la procédure sont les suivants : JOB_NAME : Nom du travail pour lequel la notification par sera supprimée. Sa valeur ne peut pas être NULL. RECIPIENTS : Liste des adresses pour lesquelles il convient de supprimer la notification par (valeurs séparées par une virgule). Si sa valeur est NULL, toutes les notifications associées au travail et aux événements définis seront supprimées. EVENTS : Liste des événements pour lesquels vous voulez supprimer la notification par (valeurs séparées par une virgule). Si sa valeur est NULL, toutes les notifications associées au travail et aux adresses indiqués seront supprimées. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 11
418 Notification par Nouvelles vues du dictionnaire 11.2 Interrogez les vues suivantes pour déterminer les notifications par qui ont été définies : DBA_SCHEDULER_NOTIFICATIONS ALL_SCHEDULER_FILE_NOTIFICATIONS USER_SCHEDULER_FILE_NOTIFICATIONS Copyright 2009, Oracle. Tous droits réservés. Notification par Nouvelles vues du dictionnaire Trois nouvelles vues sont associées aux informations de notification par DBA_SCHEDULER_NOTIFICATIONS, ALL_SCHEDULER_NOTIFICATIONS, et USER_SCHEDULER_NOTIFICATIONS. Les vues DBA_SCHEDULER_NOTIFICATIONS et ALL_SCHEDULER_NOTIFICATIONS possèdent les colonnes suivantes (la vue USER_ ne contient pas de colonne OWNER) : OWNER : Propriétaire du travail associé à la notification. JOB_NAME : Nom du travail associé à la notification. JOB_SUBNAME : Sous-nom du travail associé à la notification. RECIPIENT : Adresse de destination pour cette notification par . SENDER : Adresse d'expédition pour cette notification par . SUBJECT : Sujet de la notification par . BODY : Corps de la notification par . FILTER_CONDITION : Filtre qui définit les événements pour lesquels vous devez envoyer des s. EVENT : Evénement de travail pour lequel vous devez envoyer des s. EVENT_FLAG : Numéro de l'événement pour lequel vous devez envoyer des s. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 12
419 Contrôleur de fichier du planificateur : Présentation 11.2 Le planificateur possède une fonctionnalité intégrée qui lui permet de "surveiller" les fichiers sur le système local ou sur un système distant. Lorsqu'il détecte l'arrivée du fichier surveillé, il déclenche un événement pouvant être sélectionné par les travaux fondés sur les événements. Le "contrôleur de fichier" peut être référencé soit par des planifications, soit par des travaux fondés sur les événements. La fonctionnalité de vérification des fichiers sur des machines distantes est gérée par l'agent de planification. Copyright 2009, Oracle. Tous droits réservés. Contrôleur de fichier du planificateur : Présentation Un contrôleur de fichier (file watcher) est un objet de base de données utilisé pour définir l'emplacement, le nom et d'autres propriétés d'un fichier. A l'arrivée du fichier sur le système, le planificateur démarre un travail. Vous créez le contrôleur de fichier à l'aide de la procédure DBMS_SCHEDULER.CREATE_FILE_WATCHER, puis vous définissez les planifications d'événements ou les travaux fondés sur des événements s'appliquant à cet objet. Lorsque ce dernier détecte l'arrivée du fichier défini, il déclenche un événement d'arrivée de fichier. Le travail démarré par cet événement peut récupérer le message d'événement pour obtenir des informations sur le fichier nouvellement arrivé. Un contrôleur de fichier peut surveiller un fichier sur le système local (le serveur exécutant Oracle Database) ou sur un système distant exécutant l'agent de planification (Scheduler). Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 13
420 Créer un contrôleur de fichier et un travail fondé sur les événements 11.2 Pour créer un contrôleur de fichier et créer le travail fondé sur les événements qui démarre à l'arrivée du fichier désigné, effectuez les opérations suivantes : 1. Au niveau du planificateur, créez l'objet d'identification et de connexion avec lequel vous devrez vous identifier auprès du système d'exploitation hôte pour accéder au fichier. 2. Créez un contrôleur de fichier. 3. Créez un objet de type programme dans le planificateur, avec un argument de métadonnées référençant le message d'événement. 4. Créez un travail fondé sur les événements référençant le contrôleur de fichier. 5. Activez ce dernier, le programme et le travail. Copyright 2009, Oracle. Tous droits réservés. Créer un contrôleur de fichier et un travail fondé sur les événements Vous pouvez exécuter les tâches répertoriées dans la diapositive pour créer un contrôleur de fichier et le travail fondé sur les événements qui démarre à l'arrivée du fichier désigné. Cellesci sont expliquées en détails dans les pages suivantes. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 14
421 Etape 1 : Créer un objet d'identification et de connexion dans le planificateur 11.2 Créez des informations d'identification et de connexion pour l'utilisateur du système d'exploitation qui nécessite l'accès au fichier à surveiller : BEGIN DBMS_SCHEDULER.CREATE_CREDENTIAL('', '', ''); END; Affectez le privilège EXECUTE sur l'objet d'identification et de connexion au schéma qui possède le travail basé sur les événements qui sera démarré par le contrôleur de fichier : GRANT EXECUTE ON credential_name to user_name; Copyright 2009, Oracle. Tous droits réservés. Etape 1 : Créer un objet d'identification et de connexion dans le planificateur Le contrôleur de fichier requiert un objet d'identification et de connexion du planificateur (Scheduler) avec lequel vous devrez vous identifier auprès du système d'exploitation hôte pour accéder au fichier. Remarque : L'affectation du privilège EXECUTE sur l'objet d'identification et de connexion n'est pas requise lorsque le travail basé sur les événements et les informations d'identification se trouvent dans le même schéma. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 15
422 Etape 2 : Créer un contrôleur de fichier 11.2 Créez le contrôleur de fichier : BEGIN DBMS_SCHEDULER.CREATE_FILE_WATCHER( FILE_WATCHER_NAME => '', DESTINATION =>, DIRECTORY_PATH => '', FILE_NAME => '', CREDENTIAL_NAME => '', ENABLED => ); END; Affectez le privilège EXECUTE sur le contrôleur de fichier au schéma qui possède un travail basé sur les événements faisant référence au contrôleur de fichier : GRANT EXECUTE ON file_watcher_name to user_name; Copyright 2009, Oracle. Tous droits réservés. Etape 2 : Créer un contrôleur de fichier Créez le contrôleur de fichier à l'aide de la procédure DBMS_SCHEDULER.CREATE_FILE_WATCHER. La page suivante présente des informations supplémentaires. Remarque : L'affectation du privilège EXECUTE sur le contrôleur de fichier n'est pas requise si ce dernier se trouve dans le même schéma que le travail basé sur les événements. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 16
423 Utiliser DBMS_SCHEDULER.CREATE_FILE_WATCHER Argument Type de données Valeur par défaut 11.2 FILE_WATCHER_NAME DESTINATION DIRECTORY_PATH FILE_NAME CREDENTIAL_NAME VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 Aucune NULL Aucune Aucune Aucune MIN_FILE_SIZE STEADY_STATE_DURATION COMMENTS ENABLED PLS_INTEGER INTERVAL DAY TO SECOND VARCHAR2 BOOLEAN Copyright 2009, Oracle. Tous droits réservés. 0 NULL NULL TRUE Utiliser DBMS_SCHEDULER.CREATE_FILE_WATCHER Vous créez un objet de base de données appelé "contrôleur de fichier" à l'aide de la procédure DBMS_SCHEDULER.CREATE_FILE_WATCHER. Elle possède les arguments suivants : FILE_WATCHER_NAME : Nom du contrôleur de fichier. DESTINATION : Destination distante du fichier. Si sa valeur est NULL, la destination est la machine locale. DIRECTORY_PATH : Répertoire dans lequel le fichier se trouvera. Vous pouvez utiliser un caractère générique unique '?' au début du nom de chemin pour désigner la valeur ORACLE_HOME. La valeur ne peut pas être NULL. FILE_NAME : Nom du fichier "vérifié". Deux caractères génériques sont autorisés : '?' (tout caractère générique unique) et '*' (toute séquence de 0 ou n caractères). La valeur ne peut pas être NULL. CREDENTIAL_NAME : Nom de l'objet d'identification et de connexion valide. Le propriétaire du contrôleur de fichier doit disposer de privilèges d'exécution sur cet objet pour que l'appel de création réussisse. La valeur ne peut pas être NULL. MIN_FILE_SIZE : Taille minimum que doit présenter le fichier pour que sa présence soit signalée par le contrôleur de fichier. Sa valeur ne peut pas être NULL. STEADY_STATE_DURATION : Durée minimum pendant laquelle le fichier doit rester inchangé pour que le contrôleur de fichier le détecte. Si sa valeur est NULL, une valeur interne par défaut est utilisée. COMMENTS : Commentaires associés au contrôleur de fichier. ENABLED : Indique si le contrôleur de fichier est activé. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 17
424 Etape 3 : Créer un objet d'identification et de connexion dans le planificateur 11.2 Créez le programme : BEGIN DBMS_SCHEDULER.CREATE_PROGRAM( PROGRAM_NAME => '', PROGRAM_TYPE => 'STORED_PROCEDURE', PROGRAM_ACTION => '', NUMBER_OF_ARGUMENTS => 1, ENABLED => FALSE); END; Copyright 2009, Oracle. Tous droits réservés. Etape 3 : Créer un objet d'identification et de connexion dans le planificateur Créez un objet de type programme dans le planificateur, avec un argument de métadonnées référençant le message d'événement. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 18
425 Etape 3 : Créer un objet d'identification et de connexion dans le planificateur 11.2 Définissez l'argument de métadonnées à l'aide de l'attribut EVENT_MESSAGE : BEGIN DBMS_SCHEDULER.DEFINE_METADATA_ARGUMENT( PROGRAM_NAME => '', METADATA_ATTRIBUTE => 'event_message', ARGUMENT_POSITION => 1); END; Créez la procédure stockée à l'aide d'un argument de type SYS.SCHEDULER_FILEWATCHER_RESULT appelé par le programme. Copyright 2009, Oracle. Tous droits réservés. Etape 3 : Créer un objet d'identification et de connexion dans le planificateur Créez ensuite une procédure stockée qui sera appelée par le programme. Celle-ci doit être associée à un argument de type SYS.SCHEDULER_FILEWATCHER_RESULT, qui représente le type de données du message d'événement. La position de cet argument doit correspondre à celle de l'argument de métadonnées défini. La procédure peut accéder aux attributs de ce type de données abstrait pour en savoir plus sur le fichier arrivé. La page suivante présente des informations supplémentaires sur SYS.SCHEDULER_FILEWATCHER_RESULT. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 19
426 Utiliser le type d'objet SCHEDULER_FILEWATCHER_RESULT 11.2 Argument DESTINATION DIRECTORY_PATH ACTUAL_FILE_NAME Type de données VARCHAR2(4000) VARCHAR2(4000) VARCHAR2(4000) Nom du fichier Définition Destination sur laquelle le fichier a été trouvé Répertoire dans lequel le fichier a été trouvé FILE_SIZE NUMBER Taille du fichier FILE_TIMESTAMP TS_MS_FROM_EPOCH MATCHING_REQUEST S TIMESTAMP WITH TIME ZONE NUMBER SCHEDULER_FILEWATCHE R_REQ_LIST Copyright 2009, Oracle. Tous droits réservés. Horodatage du fichier Pour usage interne uniquement Défini comme une table de SCHEDULER_FILEWATCHER_REQUEST Utiliser le type d'objet SCHEDULER_FILEWATCHER_RESULT SCHEDULER_FILEWATCHER_RESULT est le type de données d'un message d'événement relatif à l'arrivée d'un fichier. Vous accédez au message d'événement en tant que paramètre d'un travail fondé sur les événements (ou d'un programme référencé par un travail fondé sur les événements). Le message contient les informations requises pour localiser et traiter un fichier arrivé sur un système local ou distant. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 20
427 Utiliser le type d'objet SCHEDULER_FILEWATCHER_REQUEST 11.2 Argument Type de données Définition OWNER NAME REQUESTED_PATH_NAME REQUESTED_FILE_NAME CREDENTIAL_OWNER VARCHAR2(4000) VARCHAR2(4000) VARCHAR2(4000) VARCHAR2(4000) VARCHAR2(4000) Propriétaire du contrôleur de fichier Nom du contrôleur de fichier Nom du chemin requis Nom du fichier requis Propriétaire des informations d'identification et de connexion utilisées CREDENTIAL_NAME MIN_FILE_SIZE STEADY_STATE_DUR VARCHAR2(4000) NUMBER NUMBER Durée régulière Copyright 2009, Oracle. Tous droits réservés. Nom de l'objet d'identification et de connexion Taille de fichier minimum Utiliser le type d'objet SCHEDULER_FILEWATCHER_REQUEST L'objet SCHEDULER_FILEWATCH_REQUEST est renvoyé dans l'attribut MATCHING_REQUESTS du type d'objet SCHEDULER_FILEWATCHER_RESULT. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 21
428 Etape 4 : Créer un travail fondé sur les événements faisant référence au contrôleur de fichier Créez le travail : BEGIN DBMS_SCHEDULER.CREATE_JOB( JOB_NAME => '', PROGRAM_NAME => '', EVENT_CONDITION => NULL, QUEUE_SPEC => '<name_of_file_watcher>', AUTO_DROP => FALSE, ENABLED => FALSE); END; Activez le travail pour exécuter chaque instance de l'événement relatif à l'arrivée du fichier (facultatif) : BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE('','PARALLEL_INSTANCES', TRUE); END; Copyright 2009, Oracle. Tous droits réservés. Etape 4 : Créer un travail fondé sur les événements faisant référence au contrôleur de fichier Vous pouvez utiliser la procédure DBMS_SCHEDULER.SET_ATTRIBUTE pour activer le travail à exécuter pour chaque instance de l'événement relatif à l'arrivée du fichier, même si le travail est déjà en cours de traitement d'un événement précédent. Définissez l'attribut PARALLEL_INSTANCES avec la valeur TRUE. Cette opération permet au travail de s'exécuter en tant que travail léger pour que plusieurs instances du travail puissent être démarrées rapidement. Si PARALLEL_INSTANCES est défini avec la valeur FALSE (valeur par défaut), les événements du contrôleur de fichier qui se produisent alors que le travail fondé sur les événements est déjà en train de traiter un autre sont supprimés Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 22
429 Etape 5 : Activer les objets 11.2 Activez le contrôleur de fichier, le programme et le travail : BEGIN DBMS_SCHEDULER.ENABLE('MY_FILE_WATCHER, DSSUSER.MY_PROGRAM, DSSUSER.MY_JOB'); END; Copyright 2009, Oracle. Tous droits réservés. Etape 5 : Activer les objets Utilisez les procédures DBMS_SCHEDULER.ENABLE pour activer le contrôleur de fichier, le programme et le travail. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 23
430 Activer les événements relatifs à l'arrivée du fichier à partir de systèmes distants 11.2 Pour activer le déclenchement des événements relatifs à l'arrivée du fichier sur des systèmes distants, effectuez les opérations suivantes : 1. Paramétrez la base de données pour exécuter des travaux externes distants. 2. Installez, configurez, enregistrez et démarrez l'agent de planification sur le premier système distant. 3. Répétez l'étape 2 pour chaque système distant supplémentaire. Copyright 2009, Oracle. Tous droits réservés. Activer les événements relatifs à l'arrivée du fichier à partir de systèmes distants Pour recevoir les événements relatifs à l'arrivée du fichier à partir d'un système distant, vous devez installer l'agent de planification sur ce système, puis enregistrer l'agent dans la base de données. Le système distant ne nécessite pas d'instance Oracle Database pour générer de tels événements. Pour plus d'informations, reportez-vous au manuel Oracle Database Administrator's Guide 11g Release 2. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 24
431 Utiliser DBMS_SCHEDULER.DROP_FILE_WATCHER 11.2 FILE_WATCHER_NAME FORCE Argument Type de données VARCHAR2 BOOLEAN Valeur par défaut Aucune FALSE Copyright 2009, Oracle. Tous droits réservés. Utiliser DBMS_SCHEDULER.DROP_FILE_WATCHER Vous pouvez supprimer l'objet de base de données correspondant à un contrôleur de fichier à l'aide de la procédure DBMS_SCHEDULER.DROP_FILE_WATCHER. Elle possède les arguments suivants : FILE_WATCHER_NAME : Nom du contrôleur de fichier. FORCE : Force la suppression. Lorsque la valeur de cet argument est FALSE, le vérificateur de fichiers n'est pas supprimé si des travaux en dépendent. Lorsque sa valeur est TRUE, les travaux associés au vérificateur sont désactivés. S'il existe des travaux en cours d'exécution faisant référence au contrôleur de fichier lors de la suppression de celui-ci, ils ne sont pas affectés par cette procédure et leur exécution se poursuit. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 25
432 Contrôleur de fichier : Modifications apportées aux procédures DBMS_SCHEDULER existantes 11.2 CREATE_JOB et CREATE_JOBS : L'argument QUEUE_SPEC peut être un nom de contrôleur de fichier. CREATE_EVENT_SCHEDULE : L'argument QUEUE_SPEC peut être un nom de contrôleur de fichier. SET_ATTRIBUTE et GET_ATTRIBUTE : Peuvent servir à définir et obtenir les attributs individuels d'un contrôleur de fichier. ENABLE et DISABLE : Peuvent accepter un nom de contrôleur de fichier comme argument. Copyright 2009, Oracle. Tous droits réservés. Contrôleur de fichier : Modifications apportées aux procédures DBMS_SCHEDULER existantes CREATE_JOB et CREATE_JOBS : L'argument QUEUE_SPEC associé à ces appels peut être un nom de contrôleur de fichier au lieu d'un nom de file d'attente. Le travail créé sera un travail fondé sur un événement dont la file d'attente source est celle dans laquelle les résultats du contrôleur de fichier seront insérés. Ne définissez pas un nom d'agent avec le contrôleur de fichier. CREATE_EVENT_SCHEDULE : L'argument QUEUE_SPEC associé à cet appel peut être un nom de contrôleur de fichier au lieu d'un nom de file d'attente. La planification créée sera une planification fondée sur un événement dont la file d'attente source est celle dans laquelle les résultats du contrôleur de fichier seront insérés. Ne définissez pas un nom d'agent avec le contrôleur de fichier. SET_ATTRIBUTE et GET_ATTRIBUTE : Ces deux appels peuvent accepter un nom de contrôleur de fichier comme argument. Pour un contrôleur de fichier, les attributs suivants sont légaux : DESTINATION, DIRECTORY_PATH, FILE_NAME, CREDENTIAL_NAME, MIN_FILE_SIZE, STEADY_STATE_DURATION et COMMENTS. ENABLE et DISABLE : Ces deux appels peuvent accepter un nom de contrôleur de fichier comme argument. Pour être activé, un contrôleur de fichier doit posséder des valeurs d'attribut valides et son propriétaire doit disposer des privilèges "execute" sur les informations d'identification et de connexion utilisées. S'il est désactivé avec l'indicateur force défini avec la valeur FALSE, cela signifie qu'aucun travail ne dépend de lui. Dans le cas contraire, l'appel échoue. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 26
433 Contrôleur de fichier : Modifications apportées aux attributs existants 11.2 L'attribut EVENT_SPEC associé aux travaux et planifications peut accepter un nom de contrôleur de fichier. Copyright 2009, Oracle. Tous droits réservés. Contrôleur de fichier : Modifications apportées aux attributs existants L'attribut EVENT_SPEC associé aux travaux et planifications peut accepter un nom de contrôleur de fichier au lieu d'un nom de file d'attente. La planification ou le travail ainsi obtenu sera fondé sur un événement et sa file d'attente source sera la file d'attente du contrôleur de fichier. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 27
434 Contrôleur de fichier : Nouvelles vues du dictionnaire 11.2 Interrogez les vues suivantes pour afficher les informations de configuration du contrôleur de fichier : DBA_SCHEDULER_FILE_WATCHERS ALL_SCHEDULER_FILE_WATCHERS USER_SCHEDULER_FILE_WATCHERS Copyright 2009, Oracle. Tous droits réservés. Contrôleur de fichier : Nouvelles vues du dictionnaire Les trois nouvelles vues contenant des informations sur le contrôleur de fichier sont : DBA_SCHEDULER_FILE_WATCHERS, ALL_SCHEDULER_FILE_WATCHERS et USER_SCHEDULER_FILE_WATCHERS. Les vues DBA_SCHEDULER_FILE_WATCHERS et ALL_SCHEDULER_FILE_WATCHERS possèdent les colonnes suivantes (la vue USER_ ne contient pas de colonne OWNER) : OWNER : Nom du propriétaire du contrôleur de fichier. FILE_WATCHER_NAME : Nom du contrôleur de fichier. ENABLED : Doit avoir la valeur TRUE ou FALSE selon l'activation ou non du contrôleur de fichier. DESTINATION : Destination distante du fichier. Sa valeur est NULL si la destination est la machine locale. DIRECTORY_PATH : Nom de chemin du répertoire dans lequel se trouve le fichier. FILE_NAME : Nom du fichier à trouver. CREDENTIAL_OWNER : Nom du propriétaire des informations d'identification et de connexion. CREDENTIAL_NAME : Nom des informations d'identification et de connexion. MIN_FILE_SIZE : Taille minimum que doit présenter le fichier pour que sa présence soit signalée par le contrôleur de fichier. STEADY_STATE_DURATION : Durée minimum pendant laquelle le fichier doit rester inchangé pour que le contrôleur de fichier le détecte. LAST_MODIFIED_TIME : Heure à laquelle le vérificateur de fichier a été modifié pour la dernière fois. COMMENTS : Commentaires. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 28
435 Contrôleur de fichier : Nouvelles colonnes utilisées dans les vues existantes 11.2 Nouvelles colonnes des vues *_SCHEDULER_JOBS et *_SCHEDULER_SCHEDULES : Nom de la colonne FILE_WATCHER_OWNER Type de données VARCHAR2(30) Description Nom du propriétaire du contrôleur de fichier. Si elle n'est pas fondée sur le contrôleur de fichier, cette colonne a la valeur NULL. FILE_WATCHER_NAME VARCHAR2(30) Copyright 2009, Oracle. Tous droits réservés. Nom du contrôleur de fichier. Si elle n'est pas fondée sur le contrôleur de fichier, cette colonne a la valeur NULL. Contrôleur de fichier : Nouvelles colonnes utilisées dans les vues existantes Plusieurs nouvelles colonnes ont été ajoutées aux vues *_SCHEDULER_JOBS et *_SCHEDULER_SCHEDULES pour fournir des informations sur le contrôleur de fichier : FILE_WATCHER_NAME : Nom du contrôleur de fichier. FORCE : Force la suppression. Lorsque la valeur de cet argument est FALSE, le vérificateur de fichiers n'est pas supprimé si des travaux en dépendent. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 29
436 Travaux du planificateur effectués sur une base de données distante : Présentation Créez un travail qui exécute des procédures stockées et des blocs PL/SQL anonymes sur une autre instance de base de données, sur le même hôte ou sur un hôte distant. La version de la base de données cible peut être n'importe quelle version d'oracle Database. DBMS_SCHEDULER.CREATE_DATABASE_DESTINATION doit servir à identifier la base de données distante. DBMS_SCHEDULER.CREATE_CREDENTIAL doit servir à identifier l'utilisateur. Les travaux de type PLSQL_BLOCK et STORED_PROCEDURE peuvent être le sujet d'appels SET_ATTRIBUTE pour les attributs DESTINATION et CREDENTIAL. Copyright 2009, Oracle. Tous droits réservés. Travaux du planificateur effectués sur une base de données distante : Présentation Vous pouvez à présent créer un travail qui exécute des procédures stockées et des blocs PL/SQL anonymes sur une autre instance de base de données, sur le même hôte ou sur un hôte distant. La version de la base de données cible peut être n'importe quelle version d'oracle Database. Il n'existe aucune nouvelle procédure pour prendre en charge les travaux effectués sur une base de données distante, mais des modifications ont été apportées aux procédures DBMS_SCHEDULER existantes pour prendre en charge cette fonctionnalité. DBMS_SCHEDULER.CREATE_DATABASE_DESTINATION doit être utilisée pour identifier les bases de données distantes sur lesquelles vous souhaitez exécuter les travaux. Vous devez d'abord inscrire chaque base de données distante sur laquelle vous souhaitez exécuter un travail en appelant DBMS_SCHEDULER.CREATE_DB_DESTINATION. DBMS_SCHEDULER.CREATE_CREDENTIAL doit être utilisée pour identifier l'utilisateur que vous souhaitez connecter comme dans la base de données distante. Les pages suivantes présentent des informations supplémentaires Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 30
437 Utiliser CREATE_DATABASE_DESTINATION 11.2 Argument DESTINATION_NAME AGENT TNS_NAME COMMENTS Type de données VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 Valeur par défaut Aucune Aucune Aucune Null Copyright 2009, Oracle. Tous droits réservés. Utiliser DBMS_SCHEDULER.CREATE_DATABASE_DESTINATION Pour créer un travail sur une base de données distante, vous devez d'abord créer une destination représentant la base distante à l'aide de la procédure DBMS_SCHEDULER.CREATE_DATABASE_DESTINATION. Elle possède les arguments suivants : DESTINATION_NAME : Nom de la destination représentant la base à laquelle vous souhaitez vous connecter. AGENT : Nom de la destination externe qui représente l'agent utilisé pour se connecter à la base distante. TNS_NAME : Tout identifiant de connexion Oracle Net valide (nom de service réseau du fichier tnsnames.ora de la base de données locale ou une chaîne de connexion Oracle Net). Si cet argument n'est pas défini, l'agent de planification doit être configuré pour qu'il puisse se connecter à une base de données par défaut. COMMENT : Commentaires. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 31
438 Utiliser DROP_DATABASE_DESTINATION 11.2 Argument DESTINATION_NAME Type de données VARCHAR2 Valeur par défaut Aucune Tous les membres des groupes de destination faisant référence à cette destination seront supprimés. Toutes les instances de travail qui pointent vers cette destination seront supprimées. Les travaux exécutés pour cette destination seront arrêtés. Copyright 2009, Oracle. Tous droits réservés. Utiliser DBMS_SCHEDULER.DROP_DATABASE_DESTINATION Utilisez la procédure DBMS_SCHEDULER.DROP_DATABASE_DESTINATION pour supprimer une destination. Elle possède l'argument suivant : DESTINATION_NAME : Nom de la destination représentant la base à laquelle vous souhaitez vous connecter. Lorsqu'une destination de base de données est supprimée, tous les membres des groupes de destination faisant référence à cette destination sont également supprimés. Lorsqu'une destination de base de données est supprimée, toutes les instances de travail qui pointent vers cette destination sont supprimées. Les travaux exécutés pour cette destination sont arrêtés. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 32
439 Créer des travaux sur une base de données distante : Configuration 11.2 Effectuez les opérations de configuration suivantes : 1. Paramétrez la base de données d'origine pour les travaux distants. 2. Nommez chaque base de données distante sur laquelle vous souhaitez exécuter des travaux à l'aide de DBMS_SCHEDULER.CREATE_DB_DESTINATION. 3. Créez des informations d'identification et de connexion pour tous les utilisateurs qui se connecteront aux bases de données distantes à l'aide de DBMS_SCHEDULER.CREATE_CREDENTIAL. Copyright 2009, Oracle. Tous droits réservés. Créer des travaux sur une base de données distante : Configuration Vous pouvez exécuter les tâches répertoriées ci-dessus pour configurer l'environnement pour les travaux effectués sur une base de données distante. Pour consulter un exemple détaillé, consultez le manuel Oracle Database Administrator's Guide 11g Release 2. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 33
440 Paramétrer la base de données pour des travaux distants 11.2 Vérifiez qu'oracle XML DB est bien installé. Activez les connexions HTTP à la base de données. BEGIN DBMS_XDB.SETHTTPPORT(port); END; Exécutez le script prvtrsch.plb. Définissez un mot de passe d'enregistrement pour les agents de planification : BEGIN DBMS_SCHEDULER.SET_AGENT_REGISTRATION_PASS('password'); END; Copyright 2009, Oracle. Tous droits réservés. Paramétrer la base de données pour des travaux distants Effectuez les étapes répertoriées ci-dessus sur la base de données d'origine. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 34
441 Créer des travaux sur une base de données distante 11.2 Créez le travail à l'aide de DBMS_SCHEDULER.CREATE_JOB. Définissez les informations d'identification et de connexion par défaut à l'aide du paramètre CREDENTIAL_NAME. Définissez la destination à l'aide du paramètre DESTINATION_NAME. Activez le travail en affectant la valeur TRUE au paramètre ENABLED. Copyright 2009, Oracle. Tous droits réservés. Créer un travail sur une base de données distante Utilisez la procédure DBMS_SCHEDULER.CREATE_JOB pour créer chaque travail distant. La procédure CREATE_JOB inclut les paramètres suivants qui s'appliquent à des travaux effectués sur une base de données distante : CREDENTIAL_NAME sert à définir les informations d'identification et de connexion par défaut qui seront associées au travail. Ces informations doivent exister. DESTINATION_NAME sert à définir la destination de base de données ou la destination externe associée au travail. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 35
442 Travaux à destinations multiples du planificateur : Présentation 11.2 Cette fonctionnalité vous permet de définir plusieurs cibles sur lesquelles les travaux doivent s'exécuter. Elle fournit la possibilité de surveiller et de contrôler les travaux à partir de la base sur laquelle ils ont été créés. Lors de son exécution, un travail à destinations multiples est affiché en tant que collection de travaux qui sont des copies presque identiques. Tous les travaux s'exécutent selon le fuseau horaire indiqué dans la date de départ du travail ou utilisent le fuseau horaire de la base de données source. Copyright 2009, Oracle. Tous droits réservés. Travaux à destinations multiples du planificateur : Présentation Cette fonctionnalité vous permet de définir plusieurs cibles sur lesquelles les travaux doivent s'exécuter. Vous avez la possibilité de surveiller et de contrôler les travaux à partir de la base sur laquelle vous les avez créés. Vous pouvez aussi effectuer les opérations suivantes : Définir plusieurs bases de données ou machines sur lesquelles un travail doit s'exécuter. Modifier un travail planifié sur plusieurs cibles en tant qu'entité unique. Arrêter ou supprimer des travaux s'exécutant sur une ou plusieurs cibles distantes. Trouver le statut des instances de travail sur toutes les cibles d'un travail. Remarque : Dans la version initiale de cette fonctionnalité, toutes les destinations s'exécutent selon le fuseau horaire indiqué dans la date de départ du travail ou utilisent par défaut le fuseau horaire de la base de données source. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 36
443 Travaux à destinations multiples du planificateur : Terminologie 11.2 Terme Travail parent Travail enfant ID de destination du travail Définition Travail créé au niveau de la BdD source Copies qui s'exécutent sur plusieurs destinations Numéro généré par le système qui peut être utilisé pour identifier de manière unique une instance de travail pour une destination donnée Copyright 2009, Oracle. Tous droits réservés. Travaux à destinations multiples du planificateur : Terminologie Un ID de destination de travail est un numéro généré par le système qui peut être utilisé pour identifier de manière unique une instance de travail pour une destination donnée. Il s'agit d'un numéro qui identifie de manière unique un ensemble (nom de travail, cible, informations d'identification et de connexion). Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 37
444 Statuts des travaux à destinations multiples du planificateur 11.2 Statut du travail parent SUCCEEDED FAILED SOME FAILED Tous les travaux enfant exécutés à l'heure de début de la dernière planification ont réussi. Tous les travaux enfant ont échoué. Certains travaux ont échoué, d'autres ont réussi. INCOMPLETE Un ou plusieurs travaux enfant s'appliquent toujours à l'exécution planifiée précédente lorsque le travail parent est prêt à démarrer l'exécution planifiée suivante. Copyright 2009, Oracle. Tous droits réservés. Statuts des travaux à destinations multiples du planificateur Le statut du travail parent est défini comme suit : SUCCEEDED si tous les travaux enfant exécutés à l'heure de début de la dernière planification ont réussi. FAILED si tous les travaux enfant ont échoué. SOME FAILED si certains travaux ont échoué alors que d'autres ont réussi. INCOMPLETE si un ou plusieurs travaux enfant s'appliquent toujours à l'exécution planifiée précédente lorsque le travail parent est prêt à démarrer l'exécution planifiée suivante. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 38
445 Créer des travaux à destinations multiples 11.2 Pour créer un travail à destinations multiples, effectuez les opérations suivantes : 1. Créez un groupe de destinations contenant toutes les destinations distantes à l'aide de la procédure DBMS_SCHEDULER.CREATE_GROUP. 2. Créez le travail à l'aide de DBMS_SCHEDULER.CREATE_JOB et affectez à la destination le nom d'un groupe de destinations précédemment créé. 3. Ajoutez des destinations supplémentaires à l'aide de DBMS_SCHEDULER.ADD_GROUP_MEMBER. Copyright 2009, Oracle. Tous droits réservés. Créer des travaux à destinations multiples Pour créer un travail à destinations multiples, procédez comme suit : 1. Créez un groupe de destinations contenant toutes les destinations distantes : CREATE_GROUP('group_name', 'group_type', 'member, member'); 2. Créez le travail et précisez sa destination : CREATE_JOB(JOB_NAME=>'job_name',, CREDENTIAL_NAME=>'credential_name', DESTINATION_NAME=> 'destination_name'); Remarque : JOB_TYPE doit avoir la valeur PLSQL_BLOCK, STORED_PROCEDURE ou EXECUTABLE. 3. Ajoutez des destinations supplémentaires : ADD_GROUP_MEMBER('group_name', 'member'); Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 39
446 Utiliser des groupes de destinations pour des travaux à destinations multiples 11.2 Un groupe de destinations est composé d'une liste de destinations. Il doit être affecté à l'attribut DESTINATION_NAME du travail. Les travaux à destinations multiples de type EXECUTABLE requièrent que l'attribut DESTINATION_NAME corresponde à un groupe de destinations de type EXTERNAL_DEST. Les travaux à destinations multiples de type PLSQL_BLOCK ou STORED_PROCEDURE requièrent que l'attribut DESTINATION_NAME corresponde à un groupe de destinations de type DB_DEST. Copyright 2009, Oracle. Tous droits réservés. Utiliser des groupes de destinations pour des travaux à destinations multiples Un groupe de destinations, composé d'une liste de destinations, peut être référencé lors de la création d'un travail. Le travail s'exécute sur toutes les destinations du groupe. Lorsque vous souhaitez qu'un travail s'exécute sur plusieurs destinations, vous devez créer un groupe de destinations de base de données ou un groupe de destinations externes et l'affecter à l'attribut DESTINATION_NAME du travail. Les travaux à destinations multiples de type EXECUTABLE requièrent que l'attribut DESTINATION_NAME désigne un groupe de destinations de type EXTERNAL_DEST. Les destinations externes sont automatiquement créées lorsque l'agent de planification est enregistré auprès de la base de données. Toutes les destinations externes enregistrées sont répertoriées dans la vue ALL_SCHEDULER_EXTERNAL_DESTS. Les destinations externes sont supprimées lorsque l'enregistrement de l'agent est annulé, ou à l'aide de DROP_AGENT_DESTINATION lorsque l'hôte sur lequel l'agent s'exécute n'est plus accessible. Les travaux à destinations multiples de type PLSQL_BLOCK ou STORED_PROCEDURE requièrent que l'attribut DESTINATION_NAME désigne un groupe de destinations de type DB_DEST. Les destinations de base de données sont créées à l'aide de la procédure CREATE_DATABASE_DESTINATION. Toutes les destinations de bases de données créées sont répertoriées dans la vue ALL_SCHEDULER_DB_DESTS. Elles sont supprimées via DROP_DATABASE_DESTINATION. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 40
447 Utiliser CREATE_GROUP 11.2 Argument GROUP_NAME GROUP_TYPE MEMBER COMMENTS Type de données VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 Valeur par défaut Aucune Aucune NULL NULL Copyright 2009, Oracle. Tous droits réservés. Utiliser DBMS_SCHEDULER.CREATE_GROUP Pour créer un travail sur une base de données distante, vous devez d'abord créer un groupe de destinations à l'aide de la procédure DBMS_SCHEDULER.CREATE_GROUP. Elle possède les arguments suivants : GROUP_NAME : Nom du groupe. GROUP_TYPE : Type de groupe WINDOW, EXTERNAL_DEST ou DB_DEST. MEMBER : Liste facultative de noms de membres du groupe, au format [[schema.]credential@][schema.]destination COMMENTS : Commentaires. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 41
448 Utiliser ADD_GROUP_MEMBER 11.2 Argument GROUP_NAME MEMBER_NAME Type de données VARCHAR2 VARCHAR2 Valeur par défaut Aucune Aucune Copyright 2009, Oracle. Tous droits réservés. Utiliser DBMS_SCHEDULER.ADD_GROUP_MEMBER Pour ajouter un membre à un groupe, utilisez la procédure DBMS_SCHEDULER.ADD_GROUP_MEMBER. Elle possède les arguments suivants : GROUP_NAME : Nom du groupe. MEMBER_NAME : Nom d'un ou de plusieurs membres à ajouter au groupe. Les membres doivent correspondre au type de groupe. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 42
449 Utiliser DROP_GROUP 11.2 GROUP_NAME FORCE Argument Type de données VARCHAR2 BOOLEAN Valeur par défaut Aucune Aucune Copyright 2009, Oracle. Tous droits réservés. Utiliser DBMS_SCHEDULER.DROP_GROUP Pour supprimer un groupe, utilisez la procédure DBMS_SCHEDULER.DROP_GROUP. Elle possède les arguments suivants : GROUP_NAME : Nom du groupe. FORCE : Utilisation future. Lorsqu'un groupe de type DESTINATION est supprimé, les travaux dont l'attribut DESTINATION est défini avec la valeur de ce groupe sont désactivés. Toutes les instances de travail du groupe sont supprimées de la vue *_SCHEDULER_JOB_DESTS lors de sa suppression. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 43
450 Utiliser REMOVE_GROUP_MEMBER 11.2 Argument GROUP_NAME MEMBER_NAME Type de données VARCHAR2 VARCHAR2 Valeur par défaut Aucune Aucune Copyright 2009, Oracle. Tous droits réservés. Utiliser DBMS_SCHEDULER.REMOVE_GROUP_MEMBER Pour supprimer un membre du groupe, utilisez la procédure DBMS_SCHEDULER.REMOVE_GROUP_MEMBER. Elle possède les arguments suivants : GROUP_NAME : Nom du groupe. MEMBER_NAME : Nom d'un ou de plusieurs membres à supprimer du groupe. Si le membre est de type DESTINATION, toute instance de travail qui représente cette destination est supprimée de la vue ALL_SCHEDULER_JOB_DESTINATIONS. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 44
451 Modifications apportées aux procédures DBMS_SCHEDULER existantes CREATE_JOB, SET_ATTRIBUTE et GET_ATTRIBUTE possèdent deux nouveaux arguments : CREDENTIAL_NAME : Nom entièrement qualifié des informations d'identification et de connexion. DESTINATION_NAME : Nom entièrement qualifié de la destination ou du groupe de destinations. STOP_JOB : Utilisé pour arrêter un travail enfant individuel exécuté sur une destination spécifique en fournissant l'élément JOB_DEST_ID de ce travail enfant. ENABLE et DISABLE : Utilisé pour activer/désactiver des destinations externes, des groupes et des destinations de base de données. Les arguments SOURCE_HOST et DESTINATION_HOST de PUT_FILE et GET_FILE doivent définir des noms de destinations externes valides. Copyright 2009, Oracle. Tous droits réservés. Modifications apportées aux procédures DBMS_SCHEDULER existantes Toutes les versions des procédures CREATE_JOB ont maintenant les deux arguments supplémentaires suivants : CREDENTIAL_NAME : Nom entièrement qualifié des informations d'identification et de connexion. DESTINATION_NAME : Nom entièrement qualifié de la destination ou du groupe de destinations. Toutes les étapes et tous les travaux ont deux nouveaux attributs pouvant être respectivement définis et récupérés à l'aide de SET_ATTRIBUTE et GET_ATTRIBUTE : DESTINATION_NAME : Utilisé pour définir les destinations d'une étape ou d'un travail donné. Indiquez soit une destination nommée unique, soit le nom d'un groupe de types. CREDENTIAL_NAME : Utilisé pour définir les informations d'identification et de connexion d'une destination unique associée à ce travail ou à cette étape, ou pour définir des informations d'identification et de connexion par défaut pour toutes les destinations lorsque l'attribut de destination est le nom d'un groupe. Lorsqu'une destination externe est désactivée, toutes les destinations de base de données associées à cet agent sont également désactivées automatiquement. Lorsqu'une destination est désactivée, toutes les instances de travail pointant vers cette destination sont également désactivées. STOP_JOB peut être utilisé pour arrêter un travail enfant individuel exécuté sur une destination spécifique en fournissant l'élément JOB_DEST_ID de ce travail enfant au lieu du nom du travail Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 45
452 Travaux à destinations multiples : Nouvelles vues du dictionnaire Pour obtenir des informations détaillées, interrogez les vues suivantes : *_SCHEDULER_DESTS : Toutes les destinations vers lesquelles des travaux distants peuvent être planifiés. *_SCHEDULER_EXTERNAL_DESTS : Tous les agents enregistrés auprès de la base de données. *_SCHEDULER_DB_DESTS : Toutes les bases de données sur lesquelles des utilisateurs peuvent planifier des travaux distants. *_SCHEDULER_GROUPS : Informations sur le groupe. *_SCHEDULER_GROUP_MEMBERS : Informations sur le membre. *_SCHEDULER_JOB_DESTS : Statut d'un travail sur une base de données distante. Copyright 2009, Oracle. Tous droits réservés. Travaux à destinations multiples : Nouvelles vues du dictionnaire Les nouvelles vues suivantes affichent des informations sur les travaux à destinations multiples : *_SCHEDULER_DESTS : Affiche toutes les destinations vers lesquelles des travaux distants peuvent être planifiés. Celles-ci incluent les destinations externes (pour les travaux externes distants) ainsi que les destinations de base de données pour les travaux distants. *_SCHEDULER_EXTERNAL_DESTS : Affiche tous les agents enregistrés auprès de la base de données qui peuvent être utilisés comme destination pour des travaux externes distants. *_SCHEDULER_DB_DESTS : Affiche toutes les bases de données sur lesquelles vous pouvez planifier des travaux de base de données distants. *_SCHEDULER_GROUPS : Affiche les groupes de votre schéma ou tous les groupes de la base de données. *_SCHEDULER_GROUP_MEMBERS : Affiche les membres du groupe de votre schéma ou tous les membres du groupe de la base de données. *_SCHEDULER_JOB_DESTS : Affiche le statut d'un travail effectué sur une base de données distante Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 46
453 Travaux à destinations multiples : Nouvelles colonnes utilisées dans les vues du dictionnaire existantes Les vues suivantes possèdent des nouvelles colonnes qui fournissent des informations supplémentaires pour les travaux à destinations multiples : *_SCHEDULER_JOBS *_SCHEDULER_RUNNING_JOBS *_SCHEDULER_JOB_RUN_DETAILS *_SCHEDULER_JOB_LOG Copyright 2009, Oracle. Tous droits réservés. Travaux à destinations multiples : Nouvelles colonnes utilisées dans les vues du dictionnaire existantes Les vues de dictionnaire suivantes contiennent des nouvelles colonnes affichant des informations sur des travaux à destinations multiples : *_SCHEDULER_JOBS : CREDENTIAL_OWNER : Nom du propriétaire des informations d'identification et de connexion. CREDENTIAL_NAME : Nom de la base de données source. DESTINATION_OWNER : Nom du propriétaire de la destination. NUMBER_OF_DESTINATIONS : Nombre de destinations associées à ce travail. *_SCHEDULER_RUNNING_JOBS, *_SCHEDULER_JOB_RUN_DETAILS et *_SCHEDULER_JOB_LOG : - CREDENTIAL_OWNER : Nom du propriétaire des informations d'identification et de connexion. - CREDENTIAL_NAME : Nom des informations d'identification et de connexion. - DESTINATION_OWNER : Nom du propriétaire de la destination. - DESTINATION : Nom de la destination Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 47
454 Synthèse Ce chapitre vous a permis d'apprendre à : utiliser des travaux légers utiliser la notification par du planificateur créer un contrôleur de fichier (file watcher) créer des travaux sur une base de données distante créer plusieurs travaux de destination Copyright 2009, Oracle. Tous droits réservés. Oracle Database 11g : Nouvelles fonctionnalités d'administration B - 48
455 Module Oracle Secure Backup Cloud Copyright 2009, Oracle. Tous droits réservés.
456 Objectifs Cette annexe décrit l'utilisation du module Oracle Secure Backup Cloud. Copyright 2009, Oracle. Tous droits réservés. Oracle Database 11g : Nouvelles fonctionnalités d'administration C - 2
457 Sauvegarder une base de données Oracle dans le nuage 11.2 Base de données RMAN Module Oracle Secure Backup Cloud RMAN Sauvegarde sur disque local Copyright 2009, Oracle. Tous droits réservés. Sauvegarder une base de données Oracle dans le nuage Le module Oracle Secure Backup Cloud vous permet de créer des sauvegardes hors site stockées dans le nuage. Il est implémenté à l'aide de l'interface SBT d'oracle Recovery Manager (RMAN). Il peut servir à acheminer directement les sauvegardes vers le nuage. Vous pouvez également l'utiliser pour envoyer des sauvegardes sur disque local vers le nuage de stockage pour effectuer un stockage hors site. Pour les bases de données stockées sur site, Oracle recommande d'effectuer d'abord une sauvegarde sur disque local et d'utiliser le nuage en tant qu'emplacement de sauvegarde hors site accessible à la demande. Oracle Database 11g : Nouvelles fonctionnalités d'administration C - 3
458 Présentation du module Oracle Secure Backup Cloud Il peut être utilisé pour sauvegarder toutes les versions de bases de données Oracle prises en charge Les interfaces existantes peuvent être utilisées pour créer les sauvegardes. Il inclut les licences spécifiques suivantes : Option ASO (Advanced Security Option) pour le cryptage des sauvegardes RMAN Option de compression avancée (Oracle Advanced Compression Option) pour Fast Backup Compression Copyright 2009, Oracle. Tous droits réservés. % Présentation du module Oracle Secure Backup Cloud Ce module peut être utilisé pour sauvegarder toutes les versions de bases de données Oracle prises en charge. Vous pouvez ensuite utiliser Enterprise Manager et des scripts pour créer des sauvegardes lors de l'utilisation du module Oracle Secure Backup Cloud. Oracle Secure Backup Cloud inclut les licences spécifiques suivantes : Option ASO (Advanced Security Option) pour le cryptage des sauvegardes RMAN Option de compression avancée (Oracle Advanced Compression Option) pour la fonctionnalité Fast Backup Compression Remarque : Le cryptage et la compression ne sont pas disponibles dans Oracle Database 9i Release 2. Oracle Database 11g : Nouvelles fonctionnalités d'administration C - 4
459 Avantages de la sauvegarde dans le nuage 11.2 La sauvegarde dans le nuage fournit les avantages suivants par rapport aux sauvegardes hors site traditionnelles effectuées sur bandes : Accès permanent : Les sauvegardes stockées dans le nuage sont toujours accessibles et selon une méthode similaire à celle des sauvegardes sur disque locales. Meilleure fiabilité : Les nuages de stockage sur disques sont intrinsèquement plus fiables que les bandes. Les fournisseurs de nuages conservent généralement plusieurs copies de données redondantes à des fins de disponibilité et d'évolutivité. Economies grâce à la réduction ou à l'élimination des coûts suivants : Dépenses d'investissement préalables Coûts du stockage hors site Copyright 2009, Oracle. Tous droits réservés. Avantages du stockage dans le nuage par rapport aux sauvegardes hors site sur bandes La sauvegarde dans le nuage via le module OSB Cloud fournit les avantages suivants par rapport aux sauvegardes hors site traditionnelles effectuées sur bande : Accès permanent : Les sauvegardes stockées dans le nuage sont toujours accessibles, et selon une méthode similaire à celle des sauvegardes sur disque locales. Il n'y a pas besoin d'appeler quelqu'un, ni d'envoyer ou de charger des bandes avant le processus de restauration. Vous pouvez lancer une opération de restauration à l'aide d'outils standard, comme si la sauvegarde hors site était stockée localement. Cela accélère la restauration des fichiers et peut réduire les temps d'arrêt. Meilleure fiabilité : Les nuages de stockage sont basés sur le disque et sont intrinsèquement plus fiables que les bandes. En outre, les fournisseurs de nuages conservent généralement plusieurs copies de données redondantes à des fins de disponibilité et d'évolutivité. Economies : Cette forme de stockage diminue ou élimine les dépenses d'investissement préalables, ainsi que les coûts de stockage hors site. Oracle Database 11g : Nouvelles fonctionnalités d'administration C - 5
460 Présentation du service Amazon Simple Storage Service (S3) 11.2 Amazon Simple Storage Service (S3) fournit un accès à l'infrastructure de stockage de données peu coûteuse, rapide, fiable et évolutive utilisée par Amazon pour gérer son propre réseau global de sites Web. Vous pouvez l'utiliser pour stocker et récupérer des données n'importe où sur le Web. Amazon S3 a pour objectif de maximiser les avantages de l'ajustement et d'en faire profiter les abonnés. Copyright 2009, Oracle. Tous droits réservés. Présentation du service Amazon Simple Storage Service (S3) Depuis 2006, Amazon Web Services (AWS) fournit à des entreprises de toute taille une plateforme de services Web dans le nuage. Amazon Simple Storage Service (S3) fournit une infrastructure de stockage de données peu coûteuse, fiable et évolutive permettant de stocker une quantité quelconque de données n'importe où sur le Web. Pour plus d'informations, consultez le site Web Amazon Web Services à l'adresse : Oracle Database 11g : Nouvelles fonctionnalités d'administration C - 6
461 Installer le module Oracle Secure Backup Cloud Pour utiliser les services Web d'amazon S3, inscrivezvous sur le site Web Amazon Web Services à l'adresse : 2. Inscrivez-vous pour obtenir un compte Oracle.com ou Oracle Technology Network (OTN) : 3. Téléchargez le programme d'installation du module Oracle Secure Backup Cloud (osbws_install.jar) à partir du site OTN : 4. Exécutez le programme d'installation pour installer le module Oracle Secure Backup Cloud et configurez les sauvegardes dans le nuage. Copyright 2009, Oracle. Tous droits réservés. Utiliser le module Oracle Secure Backup Cloud Pour utiliser le module Oracle Secure Backup Cloud, procédez comme suit : 1. Inscrivez-vous pour utiliser les services Web d'amazon S3. Vous recevrez un ID de clé d'accès (Access Key ID) et une clé d'accès secrète (Secret Access Key). 2. Vous devez disposer d'un compte Oracle.com ou Oracle Technology Network (OTN) pour installer le module. Dans le cas contraire, vous pouvez vous inscrire sur le site de Web du réseau OTN. 3. Téléchargez le programme d'installation du module Oracle Secure Backup Cloud (osbws_install.jar) à partir du site OTN. Si la base de données à sauvegarder se trouve dans le nuage Amazon Elastic Compute Cloud (EC2), vous trouverez le fichier osbws_install.jar dans le répertoire /home/oracle/scripts/osbws. 4. Exécutez le programme d'installation pour installer le module Oracle Secure Backup Cloud et configurez les sauvegardes du nuage. Pour en savoir plus sur l'installation et la configuration du module Oracle Secure Backup Cloud, reportez-vous au document Oracle Database 11g R2: Availability RMAN estudy. Oracle Database 11g : Nouvelles fonctionnalités d'administration C - 7
462 Synthèse Dans cette annexe, vous avez appris à utiliser le module Oracle Secure Backup Cloud. Copyright 2009, Oracle. Tous droits réservés. Oracle Database 11g : Nouvelles fonctionnalités d'administration C - 8
Oracle Learning Library Tutoriel Database 12c Installer le logiciel Oracle Database et créer une Database
Installer le logiciel Oracle Database et créer une Database Présentation Objectif Ce tutoriel montre comment utiliser Oracle Universal Installer (OUI) pour installer le logiciel Oracle Database 12c et
Oracle Database 11g: Administration Workshop I Release 2
Oracle University Appelez-nous: +33 (0) 1 57 60 20 81 Oracle Database 11g: Administration Workshop I Release 2 Durée: 5 Jours Description Ce cours constitue la première étape de votre formation en tant
CYCLE CERTIFIANT ADMINISTRATEUR BASES DE DONNÉES
SGBD / Aide à la décision CYCLE CERTIFIANT ADMINISTRATEUR BASES DE DONNÉES Réf: KAO Durée : 15 jours (7 heures) OBJECTIFS DE LA FORMATION Ce cycle complet vous apportera les connaissances nécessaires pour
Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques
Plan de formation : Certification OCA Oracle 11g Description Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques industriels les plus avancés. Cette formation permettra
Présentation du SC101
Présentation du SC101 True SAN (Storage Area Network) Boîtier intégrant la technologie Z-SAN 2 emplacements IDE 3,5" (jusqu'à 2 disques durs) 1 port Ethernet RJ45 10/100 Logiciel SmartSync Pro Backup Stockage
Oracle 11g Optimisez vos bases de données en production (ressources matérielles, stockage, mémoire, requêtes)
Avant-propos 1. Lectorat 11 2. Pré-requis 12 3. Objectifs 12 4. Environnement technique 13 Choisir la bonne architecture matérielle 1. Introduction 15 2. Architecture disque 16 2.1 La problématique de
et Groupe Eyrolles, 2006, ISBN : 2-212-11747-7
Tsoft et Groupe Eyrolles, 2006, ISBN : 2-212-11747-7 Il est possible, pour des objets, de visualiser ou modifier le contenu. La présentation des objets dans le navigateur peut être paramétrée ; vous trouverez
et Groupe Eyrolles, 2006, ISBN : 2-212-11747-7
Tsoft et Groupe Eyrolles, 2006, ISBN : 2-212-11747-7 OEM Console Java OEM Console HTTP OEM Database Control Oracle Net Manager 6 Module 6 : Oracle Enterprise Manager Objectifs Contenu A la fin de ce module,
http://www.oraplus.blogspot.com Installation Oracle 10g : Installation sur Solaris 10 x86
Installation Oracle 10g : Installation sur Solaris 10 x86 Avant propos Cette installation a été effectuée sur une version béta 3 de Solaris 10 x86. Une adresse statique a été attribuée sur le serveur Solaris,
Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers
Programme détaillé Objectifs de la formation Les systèmes de gestion de bases de données prennent aujourd'hui une importance considérable au regard des données qu'ils hébergent. Véritable épine dorsale
Guide de prise en main Symantec Protection Center 2.1
Guide de prise en main Symantec Protection Center 2.1 Guide de prise en main Symantec Protection Center 2.1 Le logiciel décrit dans cet ouvrage est fourni dans le cadre d'un contrat de licence et seule
Consolidation. Grid Infrastructure avec la 11gR2
Consolidation Grid Infrastructure avec la 11gR2 Priorités IT durant les périodes difficiles Examiner et Limiter les dépenses d investissement Devenir plus efficace pour réduire les frais d'exploitation
Symantec Backup Exec Remote Media Agent for Linux Servers
Annexe I Symantec Backup Exec Remote Media Agent for Linux Servers Cette annexe traite des sujets suivants : A propos de Remote Media Agent Comment fonctionne Remote Media Agent Conditions requises pour
Oracle Maximum Availability Architecture
Oracle Maximum Availability Architecture Disponibilité des systèmes d informations Technologies et recommandations 1 Qu est-ce que Oracle Maximum Availability Architecture (MAA)? 1. Objectif : Disponibilité
Objectif. Participant. Prérequis. Pédagogie. Oracle Enterprise Manager 10g Grid Control Rel 2. 5 Jours [35 Heures]
Plan de cours disponible à l adresse http://www.adhara.fr/.aspx Objectif Décrire les étapes d'installation du référentiel OMR (Oracle Management Repository) et du service OMS (Oracle Management Service)
Symantec Backup Exec 12.5 for Windows Servers. Guide d'installation rapide
Symantec Backup Exec 12.5 for Windows Servers Guide d'installation rapide 13897290 Installation de Backup Exec Ce document traite des sujets suivants: Configuration requise Conditions préalables à l'installation
Adonya Sarl Organisme de Formation Professionnelle 75 Avenue Niel 75017 PARIS, France
Powered by TCPDF (www.tcpdf.org) WINDOWS 7 Windows 7 PLANIFIER LES DÉPLOIEMENTS ET ADMINISTRER LES ENVIRONNEMENTS MICROSOFT WINDOWS 7 Réf: MS10223 Durée : 5 jours (7 heures) OBJECTIFS DE LA FORMATION -
Dell Server PRO Management Pack 4.0 pour Microsoft System Center Virtual Machine Manager Guide d'installation
Dell Server PRO Management Pack 4.0 pour Microsoft System Center Virtual Machine Manager Guide d'installation Remarques, précautions et avertissements REMARQUE : Une REMARQUE indique des informations importantes
Dispositions relatives à l'installation :
Dispositions relatives à l'installation : Consultez le Guide d'installation pour obtenir des informations détaillées sur les opérations décrites dans ce guide, notamment sur l'alimentation, le montage
Guide d'installation et de configuration de Pervasive.SQL 7 dans un environnement réseau Microsoft Windows NT
Guide d'installation et de configuration de Pervasive.SQL 7 dans un environnement réseau Microsoft Windows NT Ce guide explique les différentes étapes de l installation et de la configuration des composantes
Performances. Gestion des serveurs (2/2) Clustering. Grid Computing
Présentation d Oracle 10g Chapitre VII Présentation d ORACLE 10g 7.1 Nouvelles fonctionnalités 7.2 Architecture d Oracle 10g 7.3 Outils annexes 7.4 Conclusions 7.1 Nouvelles fonctionnalités Gestion des
Création d'une nouvelle base de données
199 Chapitre 7 Création d'une nouvelle base de données 1. Vue d'ensemble Création d'une nouvelle base de données 1.1 Étapes de création d'une nouvelle base de données pour une application Le processus
Guide de déploiement
Guide de déploiement Installation du logiciel - Table des matières Présentation du déploiement du logiciel CommNet Server Windows Cluster Windows - Serveur virtuel CommNet Agent Windows Cluster Windows
Installer Oracle Database et Créer une Database "Migrer une Database" Note: Oracle Database Installation Guide
1 Installer Oracle Database et Créer une Database Ce chapitre décrit comment installer le logiciel Oracle Database et créer une instance Oracle Database. Si vous utilisez une version précédente de Oracle
Clients et agents Symantec NetBackup 7
Protection complète pour les informations stratégiques de l'entreprise Présentation Symantec NetBackup propose un choix complet de clients et d'agents innovants pour vous permettre d optimiser les performances
Retrospect 7.7 Addendum au Guide d'utilisation
Retrospect 7.7 Addendum au Guide d'utilisation 2011 Retrospect, Inc. Certaines parties 1989-2010 EMC Corporation. Tous droits réservés. Guide d utilisation d Retrospect 7.7, première édition. L utilisation
ORACLE TUNING PACK 11G
ORACLE TUNING PACK 11G PRINCIPALES CARACTÉRISTIQUES : Conseiller d'optimisation SQL (SQL Tuning Advisor) Mode automatique du conseiller d'optimisation SQL Profils SQL Conseiller d'accès SQL (SQL Access
COMPOSANTS DE L ARCHITECTURE D UN SGBD. Chapitre 1
1 COMPOSANTS DE L ARCHITECTURE D UN SGBD Chapitre 1 Généralité 2 Les composants principaux de l architecture d un SGBD Sont: Les processus Les structures mémoires Les fichiers P1 P2 Pn SGA Fichiers Oracle
Installation FollowMe Q server
Installation FollowMe Q server FollowMe Rev 1.00 30 nov 2007 Pré requis FollowMe v5 est un service de Windows et s'installe sur tout poste fonctionnant sous XP Pro, 2000 server, 2003 server. Il utilise
Dexia Guide d installation de NetWorker Server 25 juin 2001 1.0 Legato Systems, Inc.
Guide d installation de NetWorker Server 25 juin 2001 1.0 Legato Systems, Inc. 2001 Legato Systems, Inc. all rights reserved. Copyright 2001, Legato Systems, Inc. All rights reserved. Legato NetWorker
ORACLE 10g Découvrez les nouveautés. Jeudi 17 Mars Séminaire DELL/INTEL/ORACLE
ORACLE 10g Découvrez les nouveautés Jeudi 17 Mars Séminaire DELL/INTEL/ORACLE Le Grid Computing d Entreprise Pourquoi aujourd hui? Principes et définitions appliqués au système d information Guy Ernoul,
Installation des moteurs SQL Pour Micro-SESAME
Installation des moteurs SQL Pour Micro-SESAME Date Auteur Détail 13/05/2009 DL Ajout de la commande manquante, donnant droit à l utilisateur MSESAME de créer des tables sous Oracle 17/01/2007 EG Ajout
Guide de configuration de SQL Server pour BusinessObjects Planning
Guide de configuration de SQL Server pour BusinessObjects Planning BusinessObjects Planning XI Release 2 Copyright 2007 Business Objects. Tous droits réservés. Business Objects est propriétaire des brevets
Installation de Vmware serveur Windows
Installation de Vmware serveur Windows / - 13:04 Ce document est sous licence PDL (Public Documentation License) 2008 Michel-André Robillard CLP Avertissement Bien que nous utilisions ici un vocabulaire
PERFORMANCE BASE DE DONNÉES
PERFORMANCE BASE DE DONNÉES Abel Afonso Avant Vente [email protected] The following is intended to outline our general product direction. It is intended for information purposes only, and may not
CA ARCserve D2D pour Linux
CA ARCserve D2D pour Linux Manuel de l'utilisateur r16.5 SP1 La présente documentation, qui inclut des systèmes d'aide et du matériel distribués électroniquement (ci-après nommés "Documentation"), vous
WINDOWS SERVER 2003 Maintenance d'active directory V1.0
WINDOWS SERVER 2003 Maintenance d'active directory V1.0 (Tutoriel réalisé par REYNAUD Guillaume) Quick-Tutoriel.com @ 2008 Page 1 / 9 Sommaire du Tutoriel 1 Introduction... 3 2 Défragmenter la Base Active
Vanilla : Virtual Box
Vanilla : Virtual Box Installation Guide for Virtual Box appliance Guide d'installation de l'application VirtualBox Vanilla Charles Martin et Patrick Beaucamp BPM Conseil Contact : [email protected],
Acronis Backup & Recovery for Mac. Acronis Backup & Recovery et Acronis ExtremeZ-IP ARCHITECTURE DE RÉFÉRENCE
Acronis Backup & Recovery for Mac Acronis Backup & Recovery et Acronis ExtremeZ-IP Ce document décrit les spécifications techniques et les meilleures pratiques relatives à la mise en œuvre d'une solution
HP Data Protector Express Software - Tutoriel 3. Réalisation de votre première sauvegarde et restauration de disque
HP Data Protector Express Software - Tutoriel 3 Réalisation de votre première sauvegarde et restauration de disque Que contient ce tutoriel? Après avoir lu ce tutoriel, vous pourrez : utiliser les fonctions
HOW-TO Install Oracle 11gR2 on OL5U7
HOW-TO Install Oracle 11gR2 on OL5U7 Objet : Installation d Oracle Enterprise Server 11gR2 sur Oracle Linux 5 Update 7. Historique : Version Date Modifications Rédacteur Vérificateur Approbateur 1.0 27/09/2011
Qlik Sense Desktop. Qlik Sense 2.0.2 Copyright 1993-2015 QlikTech International AB. Tous droits réservés.
Qlik Sense Desktop Qlik Sense 2.0.2 Copyright 1993-2015 QlikTech International AB. Tous droits réservés. Copyright 1993-2015 QlikTech International AB. Tous droits réservés. Qlik, QlikTech, Qlik Sense,
Serveur Acronis Backup & Recovery 10 pour Linux. Update 5. Guide d'installation
Serveur Acronis Backup & Recovery 10 pour Linux Update 5 Guide d'installation Table des matières 1 Avant l'installation...3 1.1 Composants d'acronis Backup & Recovery 10... 3 1.1.1 Agent pour Linux...
Installer VMware vsphere
Installer VMware vsphere Ce document contient des informations confidentielles et ne doit pas être communiqué à des tiers sans autorisation écrite d'acipia Référence dossier Installer VMware vsphere Auteur
SQL Server 2014 Administration d'une base de données transactionnelle avec SQL Server Management Studio
Présentation 1. Introduction 13 2. Présentation de SQL Server 14 2.1 Qu'est-ce qu'un SGBDR? 15 2.2 Mode de fonctionnement client/serveur 16 2.3 Les plates-formes possibles 18 2.4 Les composants de SQL
Du 10 Fév. au 14 Mars 2014
Interconnexion des Sites - Design et Implémentation des Réseaux informatiques - Sécurité et Audit des systèmes - IT CATALOGUE DE FORMATION SIS 2014 1 FORMATION ORACLE 10G 11G 10 FEV 2014 DOUALA CAMEROUN
Présentation de l'outil RMAN d'oracle
Présentation de l'outil RMAN d'oracle Ce document constitue une première présentation de l'outil RMAN d'oracle permettant de sauvegarder et restaurer des bases de données. L'article abordera également
Symantec Backup Exec 2010. Guide d'installation rapide
Symantec Backup Exec 2010 Guide d'installation rapide 20047221 Installation de Backup Exec Ce document traite des sujets suivants: Configuration système requise Conditions préalables à l'installation
Guide de récupération de Windows Server 2003 R2 pour serveurs Sun x64
Guide de récupération de Windows Server 2003 R2 pour serveurs Sun x64 Sommaire Introduction 1 Procédure de réinstallation 1 Documentation associée 5 Vos commentaires nous sont utiles 5 Introduction Ce
ADMINISTRATION EXADATA
ADMINISTRATION EXADATA Abel Afonso Avant Vente [email protected] The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated
Business Sharepoint Contenu
Business Sharepoint Contenu Comment ajouter un utilisateur BlackBerry? (Business Sharepoint)... 2 Comment démarrer avec Business Sharepoint?... 10 Comment se connecter à son site personnel Business SharePoint?...
Fonctionnalités d Acronis :
Sommaire Introduction... 2 Fonctionnalités d Acronis :... 2 Concepts de base d'acronis True Image Home... 3 Version d Acronis... 4 Configuration requise pour Acronis True Image Home 2015... 4 Systèmes
Guide pour l Installation des Disques Durs SATA et Configuration RAID
Guide pour l Installation des Disques Durs SATA et Configuration RAID 1. Guide pour l Installation des Disques Durs SATA.. 2 1.1 Installation de disques durs Série ATA (SATA).. 2 1.2 Créer une disquette
CA Desktop Migration Manager
CA Desktop Migration Manager Manuel de configuration du déploiement DMM Service Pack 12.8.01 La présente Documentation, qui inclut des systèmes d'aide et du matériel distribués électroniquement (ci-après
VRM Monitor. Aide en ligne
VRM Monitor fr Aide en ligne VRM Monitor Table des matières fr 3 Table des matières 1 Introduction 3 2 Vue d'ensemble du système 3 3 Getting started 4 3.1 Démarrage de VRM Monitor 4 3.2 Démarrage de Configuration
CP Upgrade Guide HOPEX V1R1 FR. Révisé le : 25 octobre 2013. Créé le : 16 juillet 2012. Auteur : Jérôme Horber
CP Upgrade Guide HOPEX V1R1 FR Révisé le : 25 octobre 2013 Créé le : 16 juillet 2012 Auteur : Jérôme Horber SOMMAIRE Sommaire... 2 Préambule... 3 Mettre à niveau les programmes HOPEX... 4 Mettre à niveau
WORKSHOP OBIEE 11g (version 11.1.1.5) PRE-REQUIS:
WORKSHOP OBIEE 11g (version 11.1.1.5) Durée du workshop: 2 jours Profil des participants du workshop: Profil fonctionnel ou technique Notions de modélisation multidimensionnelle et du décisionnel NB :
SQL Server 2012 - Administration d'une base de données transactionnelle avec SQL Server Management Studio (édition enrichie de vidéos)
Présentation 1. Introduction 13 2. Présentation de SQL Server 14 2.1 Qu'est-ce qu'un SGBDR? 14 2.2 Mode de fonctionnement Client/Serveur 16 2.3 Les plates-formes possibles 17 2.4 Les composants de SQL
Table des matières Chapitre 1 Virtualisation, enjeux et concepts Chapitre 2 Ligne de produit XEN
Table des matières 1 Chapitre 1 Virtualisation, enjeux et concepts 1. Définition et vue d'ensemble....13 1.1 Terminologie et concepts...13 1.2 Bénéfices....15 1.3 Technologies et solutions de virtualisation...16
StorageTek Tape Analytics
StorageTek Tape Analytics Guide de sécurité Version 2.1 E60949-01 Janvier 2015 StorageTek Tape Analytics Guide de sécurité E60949-01 Copyright 2012, 2015, Oracle et/ou ses affiliés. Tous droits réservés.
VERITAS NetBackup 5.0 en 5 jours : Administration Avancée
DESCRIPTIF DU COURS Mode d'administration Cours dispensé par un formateur Durée 5 jours Objectifs du cours Ce cours composé de 2 modules vous prépare à l implémenation de la solution de data protection
Oracle Database SQL Developer Guide D'Installation Release 4.0 E38928-06
Oracle Database SQL Developer Guide D'Installation Release 4.0 E38928-06 Pour accéder à la documentation détaillée de SQL Developer : voir Oracle Database SQL Developer Installation Guide Installer Oracle
Sauvegardes par Internet avec Rsync
Sauvegardes par Internet avec Rsync LIVRE BLANC BackupAssist version 5.1 www.backupassist.fr Cortex I.T. Labs 2001-2008 1/16 Sommaire Introduction... 3 Configuration du matériel... 3 QNAP TS-209... 3 Netgear
Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5
Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5 Machine virtuelle Machine virtuelle Machine virtuelle VMware ESX Network Shutdown Module
Cyberclasse L'interface web pas à pas
Cyberclasse L'interface web pas à pas Version 1.4.18 Janvier 2008 Remarque préliminaire : les fonctionnalités décrites dans ce guide sont celles testées dans les écoles pilotes du projet Cyberclasse; il
Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guide de démarrage rapide
Acronis Backup & Recovery 10 Advanced Server Virtual Edition Guide de démarrage rapide Ce document explique comment installer et utiliser Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Copyright
Guide d'installation du token
Connectivity 3SKey Guide d'installation du token Ce document explique comment installer et désinstaller le logiciel du token 3SKey. 06 mars 2015 3SKey Table des matières.préambule...3 1 Conditions préalables
Base de données MySQL
LA BASE DE DONNÉES OPEN SOURCE LA PLUS POPULAIRE AU MONDE POINTS FORTS Base de données MySQL MySQL Enterprise Backup MySQL Enterprise High Availability MySQL Enterprise Scalability MySQL Enterprise Authentication
Backup Exec 15. Guide d'installation rapide
Backup Exec 15 Guide d'installation rapide 21344987 Version de la documentation : 15 PN : 21323749 Mentions légales Copyright 2015 Symantec Corporation. Tous droits réservés. Symantec, le logo Symantec
Gestion et impression
Gestion et impression Manuel de l'utilisateur Copyright 2007 Hewlett-Packard Development Company, L.P. Windows est une marque déposée de Microsoft Corporation aux États-Unis. Intel et Centrino sont des
StreamServe Persuasion SP4
StreamServe Persuasion SP4 Manuel d installation Rév. A StreamServe Persuasion SP4 - Manuel d installation Rév. A 2001-2009 STREAMSERVE, INC. TOUS DROITS RESERVES Brevet américain n 7,127,520 Aucune partie
Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.
Déploiement d'une application Visual Studio Lightswitch dans Windows Azure. Utilisation de SQL Azure avec Lightswitch Article par Eric Vernié Microsoft France Division Plate-forme & Ecosystème SOMMAIRE
Dell PowerVault MD Storage Array Management Pack Suite version 6.0 pour Microsoft System Center Operations Manager Guide d'installation
Dell PowerVault MD Storage Array Management Pack Suite version 6.0 pour Microsoft System Center Operations Manager Guide d'installation Remarques, précautions et avertissements REMARQUE : Une REMARQUE
INSTALLATION DE WINDOWS 2000 SERVER POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé
INSTALLATION DE WINDOWS 2000 SERVER POUR BCDI3 par G.Haberer, A.Peuch, P.Saadé Table des matières 1. Installation de Windows 2000 Server.............................................. 2 2. Installation
WDpStats Procédure d installation
WDpStats Procédure d installation Table de matières WDpStats... 1 Procédure d installation... 1 Table de matières... 1 Résumé... 2 Réquisits... 2 Installation... 2 Difficultés... 6 Lancement... 7 wdpstats_install_oracle_fr.xml
Dell SupportAssist pour PC et tablettes Guide de déploiement
Dell SupportAssist pour PC et tablettes Guide de déploiement Remarques, précautions et avertissements REMARQUE : Une REMARQUE indique des informations importantes qui peuvent vous aider à mieux utiliser
Déploiement, administration et configuration
Office 365 Déploiement, administration et configuration Mickaël GILARDEAU Table des matières 1 Les éléments à télécharger sont disponibles à l'adresse suivante : http://www.editions-eni.fr Saisissez la
STATISTICA Version 12 : Instructions d'installation
STATISTICA Version 12 : Instructions d'installation STATISTICA Entreprise Server Remarques : 1. L'installation de STATISTICA Entreprise Server s'effectue en deux temps : a) l'installation du serveur et
Unité de stockage NAS
A Division of Cisco Systems, Inc. Câblé Contenu de l'emballage NSLU2 - Unité de stockage NAS pour disques durs USB 2.0 Adaptateur électrique Câble Ethernet 1,8 m CD de l'assistant de configuration contenant
Symantec Backup Exec TM 11d for Windows Servers. Guide d'installation rapide
Symantec Backup Exec TM 11d for Windows Servers Guide d'installation rapide Juillet 2006 Avis légal Symantec Copyright 2006 Symantec Corporation. Tous droits réservés. Symantec, Backup Exec et le logo
CA ARCserve Backup Patch Manager pour Windows
CA ARCserve Backup Patch Manager pour Windows Manuel de l'utilisateur r16 La présente documentation, qui inclut des systèmes d'aide et du matériel distribués électroniquement (ci-après nommés "Documentation"),
Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.
Rational ClearCase or ClearCase MultiSite Version 7.0.1 Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite. Product Overview IBM Rational
Simple Database Monitoring - SDBM Guide de l'usager
- SDBM Version 0.01 (2011/07/05) Tables des matières Simple Database Monitoring - SDBM.1.1 Tables des matières2 Architecture3 Installation..4 Installation sur Linux (image virtuelle pré-configuré)..4 Changement
WEB page builder and server for SCADA applications usable from a WEB navigator
Générateur de pages WEB et serveur pour supervision accessible à partir d un navigateur WEB WEB page builder and server for SCADA applications usable from a WEB navigator opyright 2007 IRAI Manual Manuel
Bienvenue sur Lab-Windows Il n'y a de vents favorables que pour ceux qui ont un cap
Page 1 of 7 Rechercher sur le Web Bienvenue sur Lab-Windows Il n'y a de vents favorables que pour ceux qui ont un cap Accueil Actualité Windows Vista Windows Server Active Directory TCP/IP Securité Qui
Guide pour l Installation des Disques Durs SATA et la Configuration RAID
Guide pour l Installation des Disques Durs SATA et la Configuration RAID 1. Guide pour l Installation des Disques Durs SATA... 2 1.1 Installation de disques durs Série ATA (SATA)... 2 2. Guide de Configurations
ORACLE DIAGNOSTIC PACK 11G
ORACLE DIAGNOSTIC PACK 11G PRINCIPALES CARACTÉRISTIQUES : Surveillance automatique des diagnostics (ADDM Automatic Database Diagnostic Monitor) Référentiel automatique de la charge (AWR Automatic Workload
EXALOGIC ELASTIC CLOUD MANAGEMENT
EXALOGIC ELASTIC CLOUD MANAGEMENT Jean-Marc Digne Ingénieur Avant Vente Oracle France 1 The following is intended to outline our general product direction. It is intended for information purposes only,
Installer Enterprise Miner 5.1 en SAS9.1.3 - environnement Windows
Installer Enterprise Miner 5.1 en SAS9.1.3 - environnement Windows Introduction :... 3 1. Présentation de l architecture Enterprise Miner 5.1 :... 4 2. Installation d Enterprise Miner 5.1:... 5 3. Post-installation
Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél. +41 032 718 2000, [email protected].
Terminal Server 1. Présentation Le terminal server est un service offert par les serveurs Windows 2000 ou par une version spéciale de windows NT 4.0 server, appelée Terminal Server. Un programme client
Guide d'utilisation du Serveur USB
Guide d'utilisation du Serveur USB Copyright 20-1 - Informations de copyright Copyright 2010. Tous droits réservés. Avis de non responsabilité Incorporated ne peut être tenu responsable des erreurs techniques
Mise en oeuvre TSM 6.1
Mise en oeuvre TSM 6.1 «Bonnes pratiques» pour la base de données TSM DB2 Powered by Qui sommes nous? Des spécialistes dans le domaine de la sauvegarde et de la protection des données 10 ans d expertise
Symantec Backup Exec 2010. Guide d'installation rapide
Symantec Backup Exec 2010 R3 Guide d'installation rapide 20047221 Le logiciel décrit dans cet ouvrage est fourni avec un contrat de licence et son utilisation doit se conformer aux conditions de ce contrat.
Notion de base de données
Notion de base de données Collection de données opérationnelles enregistrées sur un support adressable et utilisées par les systèmes et les applications Les données doivent être structurées indépendamment
//////////////////////////////////////////////////////////////////// Administration bases de données
////////////////////// Administration bases de données / INTRODUCTION Système d informations Un système d'information (SI) est un ensemble organisé de ressources (matériels, logiciels, personnel, données
