oracle.pdf



Comments



Description

Composants de l'architecture OracleCopyright © Oracle Corporation, 2001. Tous droits réservés. Objectifs A la fin de ce chapitre, vous pourrez : • décrire l'architecture Oracle et ses principaux composants • répertorier les structures utilisées dans la connexion d'un utilisateur à une instance Oracle 1-2 Copyright © Oracle Corporation, 2001. Tous droits réservés. Objectifs Ce chapitre présente l'architecture du serveur Oracle via l'étude des structures physiques, des structures mémoire, des processus et des structures logiques qui entrent en jeu dans l'établissement d'une connexion à une base de données, la création d'une session et l'exécution de commandes SQL. Oracle9i Database Administration I 1-2 Présentation des principaux composants Processus utilisateur Zone de mémoire partagée Cache "library" Processus serveur PGA Cache du dictionnaire de données Instance Mémoire SGA Cache de tampons de la base de données Zone de mémoire Java Tampon de journalisation Zone de mémoire LARGE POOL PMON SMON DBWR LGWR CKPT Autres Fichier de paramètres Fichier de mots de passe Fichiers de données Fichiers de contrôle Fichiers de journalisation Fichiers de Journalisation archivés Base de données 1-3 Copyright © Oracle Corporation, 2001. Tous droits réservés. Présentation des principaux composants L'architecture Oracle comporte plusieurs composants principaux qui seront présentés plus loin dans ce chapitre. • Serveur Oracle : Un serveur Oracle comporte plusieurs fichiers, processus et structures mémoire, mais ces éléments ne sont pas tous utilisés dans le traitement des instructions SQL. Certains de ces éléments améliorent les performances de la base de données, permettent de récupérer la base en cas d'incident logiciel ou matériel ou exécutent d'autres tâches nécessaires à la gestion de la base. Le serveur Oracle est constitué d'une instance Oracle et d'une base Oracle. • Instance Oracle : Une instance Oracle est une combinaison des processus d'arrière-plan et des structures mémoire. Pour accéder aux données de la base, il est nécessaire de démarrer l'instance. A chaque démarrage d'instance, une mémoire SGA (System Global Area) est allouée et des processus d'arrière-plan Oracle sont lancés. Ces processus exécutent des fonctions pour le compte du processus appelant. Ils regroupent des fonctions qui, sinon, seraient gérées par plusieurs programmes Oracle exécutés par chaque utilisateur. Les processus d'arrière-plan effectuent des opérations d'entrée/sortie et surveillent d'autres processus Oracle afin de permettre un plus grand parallélisme et d'améliorer les performances et la fiabilité. • Base de données Oracle : La base Oracle est constituée de fichiers du système d'exploitation, appelés fichiers de base de données. Ces fichiers constituent l'espace de stockage physique des données de la base. Ils permettent de maintenir la cohérence des données et peuvent être récupérés en cas d'échec de l'instance. Oracle9i Database Administration I 1-3 Présentation des principaux composants (suite) • Autres fichiers importants : Les fichiers qui ne sont pas des fichiers de base de données permettent de configurer l'instance, d'authentifier les utilisateurs ayant des privilèges et de récupérer la base en cas de défaillance du disque. • Processus utilisateur et serveur : Les processus utilisateur et serveur sont les principaux processus intervenant dans l'exécution d'une instruction SQL. Néanmoins, d'autres processus peuvent être utilisés par le serveur pour le traitement des instructions SQL. • Autres processus : Les options telles que Advanced Queuing, Real Application Clusters, Shared Server, Advanced Replication, etc. utilisent d'autres processus. Ces processus sont présentés dans les cours qui traitent de ces options. Oracle9i Database Administration I 1-4 Serveur Oracle Un serveur Oracle : • est un système de gestion de base de données qui offre une méthode de gestion des informations ouverte, complète et intégrée, • est constitué d'une instance et d'une base de données Oracle. Serveur Oracle 1-5 Copyright © Oracle Corporation, 2001. Tous droits réservés. Serveur Oracle Le serveur de bases de données est primordial pour la gestion des informations. En général, il doit gérer de façon fiable dans un environnement multiutilisateur une quantité importante de données pour que de nombreux utilisateurs puissent y accéder simultanément, et ce sans affecter les performances. Ce type de serveur doit également empêcher tout accès non autorisé et proposer des solutions efficaces de récupération des données après incident. Oracle9i Database Administration I 1-5 Instance Oracle Une instance Oracle : • permet d'accéder à une base de données Oracle, • n'ouvre qu'une seule base de données, • est constituée de structures de processus d'arrièreplan et de structures mémoire. Zone de mémoire partagée Cache "library" Cache du dictionnaire de données Instance Mémoire SGA Cache de tampons de la base de données Zone de mémoire Java Tampon de journalisation Zone de mémoire LARGE POOL Structures mémoire PMON SMON DBWR LGWR CKPT Autres Structures de processus d'arrière-plan 1-6 Copyright © Oracle Corporation, 2001. Tous droits réservés. Instance Oracle Une instance Oracle est constituée de la mémoire SGA et des processus d'arrière-plan utilisés pour gérer une base de données. Une instance est identifiée à l'aide de méthodes propres à chaque système d'exploitation. Elle ne peut ouvrir et utiliser qu'une seule base à la fois. Oracle9i Database Administration I 1-6 Etablir une connexion et créer une session Se connecter à une instance Oracle : • Etablir une connexion utilisateur • Créer une session Processus serveur Session crée Serveur Oracle Connexion établie Processus utilisateur Utilisateur de la base de données 1-7 Copyright © Oracle Corporation, 2001. Tous droits réservés. Etablir une connexion et créer une session Pour soumettre des instructions SQL à une base de données Oracle, l'utilisateur doit se connecter à une instance. • L'utilisateur démarre un outil, par exemple SQL*Plus, ou exécute une application développée à l'aide d'un outil tel qu'Oracle Forms. Cette application ou cet outil est exécuté en tant que processus utilisateur. • Dans la configuration la plus simple, lorsqu'un utilisateur se connecte au serveur, un processus appelé processus serveur est créé sur l'ordinateur qui exécute le serveur Oracle. Ce processus communique avec l'instance Oracle pour le compte du processus utilisateur exécuté sur le client et il exécute des instructions SQL pour le compte de l'utilisateur. Connexion Une connexion est un chemin de communication entre un processus utilisateur et un serveur Oracle. L'utilisateur d'une base de données peut se connecter à un serveur Oracle de trois manières : • Il peut se connecter au système d'exploitation qui exécute l'instance Oracle et démarrer une application ou un outil qui accède à la base de données sur ce système. La communication est établie à l'aide des mécanismes IPC (interprocess communication) du système d'exploitation hôte. Oracle9i Database Administration I 1-7 Etablir une connexion et créer une session Connexion (suite) • Il peut démarrer une application ou un outil sur un ordinateur local et se connecter, via un réseau, à l'ordinateur qui exécute l'instance Oracle. Dans cette configuration, appelée client-serveur, un logiciel réseau permet à l'utilisateur et au serveur Oracle de communiquer. • Dans une connexion à trois niveaux (three-tier), l'ordinateur de l'utilisateur communique, sur le réseau, avec une application ou un serveur réseau. Ce dernier est lui-même connecté via un réseau à la machine qui exécute l'instance Oracle. Par exemple, l'utilisateur exécute un navigateur sur un ordinateur en réseau pour utiliser une application résidant sur un serveur NT. Ce serveur extrait les données d'une base Oracle s'exécutant sur un hôte UNIX. Sessions Une session est une connexion spécifique d'un utilisateur à un serveur Oracle. La session démarre lorsque l'utilisateur est authentifié par le serveur Oracle et se termine lorsque l'utilisateur se déconnecte ou en cas de déconnexion anormale. Un utilisateur de la base de données peut ouvrir plusieurs sessions en parallèle s'il se connecte simultanément à partir de plusieurs outils, applications ou terminaux. Le serveur Oracle doit être disponible pour que l'on puisse ouvrir une session, sauf dans les cas où certains outils spécialisés d'administration de base de données sont utilisés. Remarque : Le type de connexion décrit ici, impliquant une correspondance un à un entre l'utilisateur et le processus serveur, est appelé connexion serveur dédié. Dans le cadre d'une configuration serveur partagé, plusieurs processus utilisateur peuvent partager des processus serveur. Oracle9i Database Administration I 1-8 Base de données Oracle Une base de données Oracle : • est un ensemble de données traitées comme une seule et même entité, • est constituée de trois types de fichier. Base de données Oracle Fichier de paramètres Fichier de mots de passe Fichiers Fichiers Fichiers Fichiers de de de de données contrôle journa- Journalisation lisation archivés 1-9 Copyright © Oracle Corporation, 2001. Tous droits réservés. Base de données Oracle En règle générale, une base de données a pour fonction de stocker des informations associées et de permettre leur extraction. Une base Oracle possède une structure logique et une structure physique. La structure physique correspond à l'ensemble de fichiers du système d'exploitation constituant la base de données. Une base Oracle est composée de trois types de fichier : • les fichiers de données, qui contiennent les données de la base, • les fichiers de journalisation (fichiers redo log), qui contiennent un enregistrement des modifications apportées à la base afin de permettre la récupération des données en cas de panne, • les fichiers de contrôle, qui contiennent les informations nécessaires au maintien et à la vérification de l'intégrité de la base de données. Autres fichiers importants Le serveur Oracle utilise également d'autres fichiers qui ne font pas partie de la base de données : • Le fichier de paramètres définit les caractéristiques d'une instance Oracle. Ce fichier contient, par exemple, des paramètres qui définissent la taille de certaines structures de la mémoire SGA. • Le fichier de mots de passe authentifie les utilisateurs autorisés à démarrer et à arrêter une instance Oracle. • Les fichiers de journalisation archivés sont des copies hors ligne (offline) des fichiers de journalisation, qui peuvent être nécessaires à la récupération des données suite à une défaillance physique. Oracle9i Database Administration I 1-9 Structure physique La structure physique comprend trois types de fichier : • Fichiers de contrôle • Fichiers de données • Fichiers de journalisation En-tête Fichiers de Données (incluent le dictionnaire de données) Fichiers de contrôle Fichiers de journalisation en ligne 1-10 Copyright © Oracle Corporation, 2001. Tous droits réservés. Structure physique La structure physique d'une base de données Oracle comprend trois types de fichier : fichiers de contrôle, fichiers de données et fichiers de journalisation. Oracle9i Database Administration I 1-10 Structure mémoire La structure mémoire d'Oracle est constituée des deux zones de mémoire suivantes : • la mémoire SGA, qui est allouée au démarrage de l'instance et qui est une composante fondamentale d'une instance Oracle • la mémoire PGA, qui est allouée au démarrage du processus serveur 1-11 Copyright © Oracle Corporation, 2001. Tous droits réservés. Oracle9i Database Administration I 1-11 Mémoire SGA • La mémoire SGA est constituée de plusieurs structures mémoire : – – – – la zone de mémoire partagée, le cache de tampons de la base de données, le tampon de journalisation, d'autres structures (gestion des verrous externes (lock) et des verrous internes (latch), données statistiques, par exemple). • Deux structures mémoire supplémentaires peuvent également être configurées dans la mémoire SGA : – la zone de mémoire LARGE POOL, – la zone de mémoire Java. 1-12 Copyright © Oracle Corporation, 2001. Tous droits réservés. Mémoire SGA La mémoire SGA est également appelée Shared Global Area. Elle stocke les informations de la base qui sont partagées par les processus de base de données. Elle contient les données et les informations de contrôle utilisées par le serveur Oracle. Enfin, elle est allouée dans la mémoire virtuelle de l'ordinateur sur lequel est installé le serveur Oracle. L'instruction suivante permet d'afficher les allocations de la mémoire SGA : SQL> SHOW SGA: Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers 36437964 6543794 19521536 16777216 73728 bytes bytes bytes bytes bytes Oracle9i Database Administration I 1-12 Mémoire SGA (suite) Mémoire SGA dynamique A partir d'Oracle9i, une mémoire SGA dynamique met en oeuvre une infrastructure permettant de modifier sa configuration sans qu'il soit nécessaire d'arrêter l'instance. Il est donc possible de modifier la taille du cache de tampons (buffer cache) de la base de données et de la zone de mémoire partagée sans arrêter l'instance. En théorie, ces zones peuvent être sous-configurées à l'origine. Ensuite, elles augmentent ou diminuent en fonction de leur charge globale respective, jusqu'à un maximum de SGA_MAX_SIZE. Dimensionner la mémoire SGA La taille de la mémoire SGA est définie par plusieurs paramètres d'initialisation. Les principaux sont les suivants : DB_CACHE_SIZE : Taille du cache des blocs standard. La valeur par défaut est 48 Mo sous Unix et 52 Mo sous NT. LOG_BUFFER : Nombre d'octets alloués au tampon de journalisation (redo log buffer). SHARED_POOL_SIZE : Taille en octets des zones SQL et PL/SQL partagées. La valeur par défaut est 16 Mo. Dans une configuration 64 bits, la taille par défaut est 64 Mo. LARGE_POOL_SIZE : Taille de la zone mémoire LARGE POOL. La valeur par défaut est zéro (sauf si la valeur TRUE est affectée au paramètre PARALLEL_AUTOMATIC_TUNING d'init.ora, auquel cas la valeur par défaut est calculée automatiquement). JAVA_POOL_SIZE : Taille de la zone de mémoire Java. La valeur par défaut est 24 Mo. Par conséquent, la taille de la mémoire SGA ne peut pas dépasser SGA_MAX_SIZE DB_CACHE_SIZE - LOG_BUFFER – SHARED_POOL_SIZE - LARGE_POOL_SIZE JAVA_POOL_SIZE. Remarque : La mémoire SGA dynamique et son dimensionnement sont présentés en détail dans le cours Oracle9i Tuning. Oracle9i Database Administration I 1-13 Mémoire SGA • Dynamique • Taille définie à l'aide du paramètre SGA_MAX_SIZE • Allocation et suivi sous forme de granules par les composants de la mémoire SGA – Allocation de mémoire virtuelle contiguë – Taille des granules définie en fonction de la valeur totale estimée de SGA_MAX_SIZE 1-14 Copyright © Oracle Corporation, 2001. Tous droits réservés. Mémoire SGA (suite) Unité d'allocation Le granule est une unité d'allocation de mémoire virtuelle contiguë. La taille d'un granule dépend de la taille totale estimée de la mémoire SGA, qui est calculée en fonction de la valeur du paramètre SGA_MAX_SIZE. • 4 Mo si la taille estimée de la mémoire SGA est inférieure à 128 Mo • 16 Mo dans les autres cas Les composants (cache de tampons de la base de données et zone de mémoire partagée) peuvent augmenter ou diminuer en fonction des limites des granules. Pour chaque composant possédant des granules, la vue V$BUFFER_POOL donne des informations sur le nombre de granules alloués, les opérations en cours sur le composant (par exemple, allocation ou libération de granules via ALTER SYSTEM, et auto-réglage correspondant) et sur la taille cible en granules. Au démarrage de l'instance, le serveur Oracle alloue des entrées de granule (une pour chaque granule) pour la prise en charge du nombre d'octets d'espace d'adressage défini par SGA_MAX_SIZE. Ensuite, chaque composant acquiert le nombre de granules dont il a besoin. La configuration SGA minimale est de trois granules : un pour la mémoire SGA fixe (tampons de journalisation inclus), un pour le cache de tampons de la base de données et un pour la zone de mémoire partagée. Oracle9i Database Administration I 1-14 Zone de mémoire partagée • Elle permet de stocker : – les dernières instructions SQL exécutées, – les dernières définitions de données utilisées. • Elle est constituée de deux structures mémoire clés liées aux performances : – Cache "library" – Cache du dictionnaire de données • Sa taille est définie par le paramètre SHARED_POOL_SIZE. Zone de mémoire partagée Cache "library" Cache du dictionnaire de données ALTER SYSTEM SET SHARED_POOL_SIZE = 64M; 1-15 Copyright © Oracle Corporation, 2001. Tous droits réservés. Zone de mémoire partagée L'environnement de la zone de mémoire partagée est composé de structures fixes et de structures variables. Les structures fixes conservent la même taille, tandis que les structures variables augmentent et diminuent en fonction des besoins de l'utilisateur et du programme. La taille réelle des structures fixes et des structures variables dépend d'un paramètre d'initialisation et du travail d'un algorithme interne d'Oracle Dimensionner la zone de mémoire partagée La zone de mémoire partagée est utilisée pour les objets pouvant être partagés globalement : les plans d'exécution SQL réutilisables, les packages, procédures et fonctions PL/SQL et les informations sur les curseurs, par exemple. Elle doit être dimensionnée pour répondre aux besoins des zones fixes et des zones variables. L'allocation d'espace à la zone de mémoire partagée est déterminée par le paramètre d'initialisation SHARED_POOL_SIZE. La zone peut être redimensionnée de manière dynamique à l'aide de la commande ALTER SYSTEM SET. Après l'analyse des performances, il est possible de modifier la taille de cette zone à condition que la taille totale de la mémoire SGA ne dépasse pas la valeur définie par le paramètre SGA_MAX_SIZE. Oracle9i Database Administration I 1-15 Cache "library" • Le cache "library" conserve des informations sur les dernières instructions SQL et PL/SQL utilisées. • Il permet le partage des instructions fréquemment utilisées. • Il est géré par un algorithme LRU. • Il est composé de deux structures : – la zone SQL partagée, – la zone PL/SQL partagée. • Sa taille dépend du dimensionnement de la zone de mémoire partagée. 1-16 Copyright © Oracle Corporation, 2001. Tous droits réservés. Cache "library" La taille du cache "library" dépend du dimensionnement défini pour la zone de mémoire partagée. La mémoire est allouée lors de l'analyse d'une instruction ou de l'appel d'un programme. Si la taille de la zone de mémoire partagée est trop restreinte, les instructions sont sans cesse rechargées dans le cache "library" au détriment des performances. Le cache "library" est géré par un algorithme LRU (Least Recently Used). A mesure que le cache se remplit, les chemins d'exécution et les arborescences d'analyse (parse) les plus anciens sont supprimés du cache "library" afin de libérer de l'espace pour les nouvelles entrées. Si les instructions SQL ou PL/SQL ne sont pas réutilisées, elles sont finalement retirées de la mémoire (sur la base de la liste LRU). Le cache "library" est composé de deux structures : • Zone SQL partagée : La zone SQL partagée stocke et partage le plan d'exécution et l'arborescence de l'analyse des instructions SQL exécutées dans la base de données. Lorsqu'une instruction SQL identique est exécutée pour la deuxième fois, elle peut utiliser les informations d'analyse disponibles dans la zone SQL partagée pour accélérer son exécution. Afin que les instructions SQL utilisent une zone de mémoire SQL partagée lorsque cela s'avère possible, il est nécessaire que le texte, le schéma et les variables attachées (bind variables) soient en tous points identiques. • Zone PL/SQL partagée : La zone PL/SQL partagée stocke et partage les dernières instructions PL/SQL exécutées. Les procédures et les programmes analysés et compilés (fonctions, déclencheurs (triggers) et packages) sont stockés dans cette zone. Oracle9i Database Administration I 1-16 Cache du dictionnaire de données • Le cache du dictionnaire de données contient les dernières définitions utilisées dans la base. • Il contient des informations sur les fichiers, les tables, les index, les colonnes, les utilisateurs, les privilèges et d'autres objets de la base de données. • Au cours de l'analyse, le processus serveur recherche les informations dans le cache du dictionnaire pour résoudre les noms d'objet et valider l'accès. • La mise en mémoire cache des informations du dictionnaire de données réduit le temps de réponse aux interrogations et aux instructions LMD. • La taille du cache dépend du dimensionnement de la zone de mémoire partagée. 1-17 Copyright © Oracle Corporation, 2001. Tous droits réservés. Cache du dictionnaire de données Le cache du dictionnaire de données est également appelé cache de lignes (row cache). La mise en mémoire cache des informations du dictionnaire dans le cache de tampons de la base de données et dans la zone de mémoire partagée améliore les performances. Les informations sur la base de données (données du compte utilisateur, noms des fichiers de données, noms des segments, emplacements d'extents, descriptions des tables et privilèges utilisateur) sont stockées dans les tables du dictionnaire de données. Lorsque le serveur a besoin de ces informations, les tables du dictionnaire sont lues, puis les données renvoyées sont placées dans le cache de ce dictionnaire. Dimensionner le dictionnaire de données La taille totale du dictionnaire de données dépend de celle de la zone partagée. Elle est gérée en interne par la base de données. Si le cache du dictionnaire est trop restreint, la base de données doit interroger de façon répétée les tables de ce dictionnaire pour obtenir les informations dont le serveur a besoin. Ces interrogations sont des appels récursifs. Elles sont plus lentes que les interrogations effectuées directement dans le cache du dictionnaire de données, parce qu'elles n'utilisent pas le langage SQL. Oracle9i Database Administration I 1-17 Cache de tampons de la base de données • Ce cache conserve des copies des blocs de données extraits des fichiers de données. • Il permet des gains de performances considérables lors de l'obtention et de la mise à jour de données. • Il est géré par un algorithme LRU. • Le paramètre DB_BLOCK_SIZE détermine la taille du bloc principal. Cache de tampons de la base de données 1-18 Copyright © Oracle Corporation, 2001. Tous droits réservés. Cache de tampons de la base de données Lors du traitement d'une interrogation, le processus serveur Oracle recherche les blocs dont il a besoin dans le cache de tampons de la base. Si un bloc nécessaire ne s'y trouve pas, le processus lit le bloc dans le fichier de données, puis place une copie de ce bloc dans le cache de tampons. Etant donné que ce bloc pourra par la suite être trouvé dans la mémoire, les demandes suivantes ne nécessitent pas de lecture physique. Le serveur Oracle utilise un algorithme LRU pour retirer de la mémoire les tampons (buffers) qui n'ont pas été utilisés récemment, afin de libérer de l'espace pour de nouveaux blocs dans le cache de tampons. Oracle9i Database Administration I 1-18 Il permet de conserver en mémoire les blocs susceptibles d'être réutilisés. Oracle9i Database Administration I 1-19 . Tous droits réservés. Le cache de tampons de la base est composé de sous-caches indépendants correspondant à des pools de tampons et à différentes tailles de blocs. Il permet d'éliminer de la mémoire des blocs qui ne sont pas susceptibles d'être réutilisés. • DB_RECYCLE_CACHE_SIZE dimensionne le cache de tampons à recycler. • Le paramètre DB_CACHE_ADVICE peut être défini pour collecter des statistiques permettant de prévoir le comportement du serveur en fonction de différentes tailles de cache.Cache de tampons de la base de données • Ce cache est composé de sous-caches indépendants : – DB_CACHE_SIZE – DB_KEEP_CACHE_SIZE – DB_RECYCLE_CACHE_SIZE • Il peut être redimensionné dynamiquement : ALTER SYSTEM SET DB_CACHE_SIZE = 96M. Cache de tampons de la base de données Dimensionner le cache de tampons de la base de données La taille de chaque mémoire tampon du cache de tampons de la base de données est égale à la taille d'un bloc Oracle. Il ne peut ni être omis ni se voir affecter la valeur zéro. • La vue V$DB_CACHE_ADVICE affiche les statistiques collectées. Trois paramètres permettent de définir la taille des caches de tampons de la base de données : • DB_CACHE_SIZE dimensionne uniquement la taille par défaut du cache de tampons. Elle est indiquée par le paramètre DB_BLOCK_SIZE. • DB_KEEP_CACHE_SIZE dimensionne le cache de tampons à conserver. Le paramètre DB_BLOCK_SIZE détermine la taille du bloc principal utilisée pour le tablespace SYSTEM. 1-19 Copyright © Oracle Corporation. 2001. Valeurs du paramètre DB_CACHE_ADVICE OFF : La fonction de conseil est désactivée et la mémoire correspondante n'est pas allouée. Allouez la mémoire avant que cette fonction ne soit activée pour éviter tout risque d'erreur de type ORA-4031. ON : La fonction de conseil est activée et il existe un risque de surcharge de l'UC et de la mémoire. Les informations de conseil sur le cache de tampons sont collectées et affichées dans la vue V$DB_CACHE_ADVICE. Le paramètre d'initialisation DB_CACHE_ADVICE active la fonction de conseil sur le cache de tampons. l'erreur suivante peut être générée : ORA-4031 Inability to allocate from the Shared Pool when the parameter is switched to ON. car la mémoire est déjà allouée. Si le paramètre a la valeur READY. Si le paramètre passe de READY à OFF. Trois valeurs sont disponibles : OFF. ON. mais la mémoire correspondante reste allouée.Cache de tampons de la base de données (suite) Fonction de conseil sur le cache de tampons Cette fonction active et désactive la collecte de statistiques permettant de prévoir le comportement du serveur en fonction de la taille du cache. la valeur ON peut lui être affectée sans risque d'erreur. une erreur ORA-4031 peut survenir. Les informations fournies par ces statistiques peuvent vous aider à dimensionner le cache de tampons de la base de données de manière optimale pour une charge globale donnée. C'est un paramètre dynamique modifiable à l'aide de la commande ALTER SYSTEM. Si vous tentez d'affecter la valeur ON au paramètre alors qu'il a la valeur OFF. READY : La fonction de conseil est désactivée. READY. Oracle9i Database Administration I 1-20 . • Les modifications enregistrées constituent des entrées de journalisation. ALTER ou DROP. Tous droits réservés. reportez-vous au chapitre Gérer les fichiers de journalisation. DELETE. CREATE. Oracle9i Database Administration I 1-21 . Pour plus d'informations sur les fichiers de journalisation. • Les entrées de journalisation contiennent des informations permettant de reconstruire des modifications. 2001. • Sa principale fonction est la récupération de données. Tampon de journalisation Le tampon de journalisation est un tampon circulaire qui contient les modifications apportées aux blocs de fichiers de données. Ces informations sont stockées dans des entrées de journalisation. UPDATE. • La taille du tampon est Tampon de définie par le paramètre journalisation LOG_BUFFER. Remarque : Le dimensionnement du cache du tampon de journalisation est présenté en détail dans le cours Oracle9i Tuning. 1-21 Copyright © Oracle Corporation. Dimensionner le tampon de journalisation La taille du tampon de journalisation est définie par le paramètre d'initialisation LOG_BUFFER. Ces entrées contiennent les informations nécessaires à la recréation des données avant toute modification via les opérations INSERT.Tampon de journalisation • Il enregistre toutes les modifications apportées aux blocs de données de la base. Oracle peut principalement utiliser la zone de mémoire partagée pour la mise en mémoire cache des instructions SQL partagées. Cette dernière n'a pas besoin de céder de l'espace nécessaire à la mise en mémoire cache des arborescences d'analyse du code SQL au profit des informations de session du serveur partagé. 2001. La charge des zones de la mémoire partagée est ainsi réduite. Zone de mémoire LARGE POOL En allouant au serveur partagé.Zone de mémoire LARGE POOL • Zone facultative de la mémoire SGA • Elle réduit la charge de la zone de mémoire partagée. • Sa taille est définie par le paramètre LARGE_POOL_SIZE. Si cette zone est configurée. Exécution en parallèle La zone de mémoire LARGE POOL est utilisée si le paramètre PARALLEL_AUTOMATIC_TUNING possède la valeur TRUE. 1-22 Copyright © Oracle Corporation. Sauvegarde et restauration Recovery Manager (RMAN) utilise la zone de mémoire LARGE POOL lorsque les paramètres BACKUP_DISK_IO= n et BACKUP_TAPE_IO_SLAVE = TRUE sont définis. l'allocation de mémoire depuis cette zone échoue. – la mémoire allouée par session (UGA) au serveur partagé – les processus serveur d'E/S – les opérations de sauvegarde et de restauration ou RMAN – les mémoires tampon des messages d'exécution en parallèle – PARALLEL_AUTOMATIC_TUNING = TRUE • Elle n'utilise pas de liste LRU. sinon ces mémoires tampon sont allouées à la zone de mémoire partagée. Oracle9i Database Administration I 1-22 . Tous droits réservés. des E/S et des processus de sauvegarde et de restauration. à Oracle XA et aux mémoires tampon "Parallel Query" de la mémoire par session à partir de la zone LARGE POOL. RMAN écrit un message d'erreur dans le fichier d'alertes et n'utilise pas de processus esclave d'E/S pour la sauvegarde ou la restauration. Le gain de performances provient de la réduction de la surcharge due à l'augmentation et à la réduction du cache SQL partagé. mais que sa taille est insuffisante. Elle ne correspond pas à un espace réservé de la zone de mémoire partagée utilisant une liste LRU. Zone de mémoire LARGE POOL et listes LRU La zone de mémoire LARGE POOL ne possède pas de liste LRU.Zone de mémoire LARGE POOL (suite) Dimensionner la zone de mémoire LARGE POOL La taille de la zone de mémoire LARGE POOL est définie en octets par le paramètre LARGE_POOL_SIZE qui n'est pas dynamique. Oracle9i Database Administration I 1-23 . 1-24 Copyright © Oracle Corporation. la taille par défaut de cette zone est de 24 Mo. Oracle9i Database Administration I 1-24 . • Sa taille est définie par le paramètre JAVA_POOL_SIZE. Dans Oracle9i.Zone de mémoire Java • La zone de mémoire Java répond aux besoins d'analyse des commandes Java. Zone de mémoire Java La configuration de la zone de mémoire Java est facultative. La taille de la zone est définie en octets par le paramètre JAVA_POOL_SIZE. • Elle est nécessaire si Java est installé et utilisé. Tous droits réservés. 2001. mais nécessaire si vous installez et utilisez Java. 2001. La zone de chaque utilisateur qui soumet la même instruction SQL utilise une seule zone SQL partagée. UPDATE et DELETE. Tous droits réservés. – La zone d'exécution. En ce qui concerne les commandes INSERT. Mémoire PGA La mémoire PGA (Program Global Area ou Process Global Area) est une région de la mémoire qui contient les données et les informations de contrôle d'un seul processus serveur ou d'un seul processus d'arrière-plan. En ce qui concerne les interrogations. Chaque session qui émet une instruction SQL possède une zone privée de partage des ordres SQL. elle n'est libérée que lorsque toutes les lignes sont extraites ou lorsque l'interrogation est annulée. qui est créée au tout début d'une demande d'exécution. La zone privée de partage des ordres SQL d'un curseur est divisée en deux sous-zones : – La zone persistante. qui est partagée par plusieurs processus. PGA Processus serveur Processus utilisateur 1-25 Copyright © Oracle Corporation. qui contient des informations attachées. Elle n'est libérée que lorsque le curseur est fermé. Contrairement à la mémoire SGA.Mémoire PGA • Mémoire réservée à chaque processus utilisateur qui se connecte à une base de données Oracle. • Elle n'est utilisée que par un processus. cette zone n'est libérée que lorsque l'instruction a été exécutée. la mémoire PGA n'est utilisée que par un seul processus. Elle est allouée lors de la création d'un processus et libérée à la fin de celui-ci. Elle inclut généralement les composants suivants : • Zone privée de partage des ordres SQL : Contient des données telles que des informations attachées et des structures mémoire d'exécution. Oracle9i Database Administration I 1-25 . • Elle est allouée lorsqu'un processus est créé. Contenu de la mémoire PGA Le contenu de la mémoire PGA varie selon que l'instance est exécutée dans une configuration serveur dédié ou serveur partagé. • Elle est libérée à la fin du processus. • Mémoire allouée par session : constitue une mémoire allouée réservée aux variables et aux informations relatives à la session. Ces deux facteurs varient énormément d'une zone à l'autre et d'un moment à l'autre. Il est donc difficile d'optimiser le réglage de ces paramètres. BITMAP_MERGE_AREA_SIZE et CREATE_BITMAP_AREA_SIZE. les jointures de hachage (hash join) ainsi que la création et la fusion de bitmaps. La taille de ces zones peut être contrôlée et réglée. Ce dernier permet au DBA d'indiquer la quantité agrégée cible de mémoire PGA disponible pour l'instance. Dans un environnement serveur partagé. Le nombre de zones qu'il peut allouer est toujours limité par le paramètre d'initialisation OPEN_CURSORS. mégaoctets et gigaoctets. le dimensionnement des zones de travail est automatique et tous les paramètres *_AREA_SIZE sont ignorés pour ces sessions. Lorsque ces paramètres sont définis. • Zones de travail SQL : ces zones sont utilisées pour les opérations qui nécessitent une grande quantité de mémoire telles que les tris. La gestion des zones privées de partage des ordres SQL incombe au processus utilisateur. Dans un environnement serveur partagé. Ce paramètre peut être modifié dynamiquement par le DBA au niveau instance. cette mémoire est partagée et non privée. les zones privées de partage des ordres SQL se trouvent dans la mémoire PGA de leur processus serveur. kilooctets. A partir d'Oracle9i. vous pouvez gérer de façon automatique et globale la taille de la zone de travail en affectant la valeur AUTO (valeur par défaut) au paramètre WORKAREA_SIZE_POLICY et en définissant le paramètre d'initialisation PGA_AGGREGATE_TARGET.Mémoire PGA (suite) • Zone privée de partage des ordres SQL (suite) : l'emplacement de la cette zone dépend du type de connexion établi pour la session. Dans un environnement serveur dédié. Dans les versions antérieures à Oracle9i. elles sont situées dans la mémoire SGA. Oracle9i Database Administration I 1-26 . HASH_AREA_SIZE. le DBA définissait la taille maximale des zones de travail SQL à l'aide des paramètres SORT_AREA_SIZE. Il accepte des valeurs en octets. Ce paramètre prend par défaut la valeur 50. Il peut s'avérer difficile de configurer ces paramètres parce que la taille maximale idéale de ces zones dépend du volume de données entrées et du nombre total de zones de travail actives sur le système. Elle inclut généralement les composants suivants : Zone de mémoire Type de mémoire allouée par session Emplacement de la zone persistante Emplacement de la zone d'exécution (SELECT) Emplacement de la zone d'exécution (LMD/LDD) Serveur dédié Privée Mémoire PGA Mémoire PGA Mémoire PGA Serveur partagé Partagée Mémoire SGA Mémoire SGA Mémoire SGA Oracle9i Database Administration I 1-27 .Mémoire PGA (suite) Différences d'allocation de mémoire entre le serveur dédié et le serveur partagé : Le contenu de la mémoire PGA varie selon que l'instance est exécutée dans une configuration serveur dédié ou serveur partagé. • le processus serveur. Oracle9i Database Administration I 1-28 .Structure de processus Oracle utilise différents types de processus : • le processus utilisateur. Tous droits réservés. qui est démarré au moment où un utilisateur de la base de données tente de se connecter au serveur Oracle. • les processus d'arrière-plan. qui établit la connexion à l'instance Oracle et démarre lorsqu'un utilisateur ouvre une session. lancés au démarrage d'une instance Oracle. 1-28 Copyright © Oracle Corporation. 2001. Processus utilisateur Un utilisateur de base de données qui doit demander des informations contenues dans la base doit d'abord établir une connexion avec le serveur Oracle. Il génère des appels via l'interface UPI (User Program Interface) qui crée une session et démarre un processus serveur Oracle9i Database Administration I 1-29 . Processus serveur Processus utilisateur Connexion établie Utilisateur de la base de données 1-29 Copyright © Oracle Corporation. La demande de connexion s'effectue via un outil d'interface de base de données (SQL*Plus. • Ce processus doit d'abord établir une connexion. 2001. Tous droits réservés. • Il n'entre pas directement en interaction avec le serveur Oracle. Ce dernier n'entre pas directement en interaction avec le serveur Oracle.Processus utilisateur • Programme qui demande une interaction avec le serveur Oracle. par exemple) et le lancement du processus utilisateur. Dans un environnement serveur dédié. Un processus serveur peut être dédié ou partagé. • Il peut s'agir d'un serveur dédié ou d'un serveur partagé. Le processus serveur communique avec le serveur Oracle à l'aide de l'interface OPI (Oracle Program Interface). le processus serveur traite la demande d'un seul processus utilisateur. Remarque : L'allocation du processus serveur dans un environnement serveur dédié par rapport à un environnement serveur partagé est présentée en détail dans le cours Oracle9i Tuning. Processus serveur Lorsque l'utilisateur a établi une connexion. le processus serveur traite les demandes de plusieurs processus utilisateur. Connexion établie Processus utilisateur Processus serveur Session crée Serveur Oracle Utilisateur de la base de données 1-30 Copyright © Oracle Corporation. Oracle9i Database Administration I 1-30 . 2001. un processus serveur démarre pour traiter les demandes du processus utilisateur.Processus serveur • Programme qui entre directement en interaction avec le serveur Oracle. • Il répond aux appels générés et renvoie les résultats. Le processus serveur prend fin lorsque le processus utilisateur se déconnecte. Tous droits réservés. Dans un environnement serveur partagé. Processus d'arrière-plan L'architecture Oracle possède cinq processus d'arrière-plan obligatoires qui seront présentés plus loin dans ce chapitre. un certain nombre de processus d'arrièreplan facultatifs qui sont démarrés via l'exécution de l'option correspondante. • Processus d'arrière-plan obligatoires – DBWn – LGWR – – – – ARCn CJQ0 Dnnn LCKn PMON SMON LMDn LMON Pnnn QMNn CKPT • Processus d'arrière-plan facultatifs RECO Snnn 1-31 Copyright © Oracle Corporation. Ces processus ne sont pas décrits dans ce chapitre. à l'exception du processus d'arrière-plan ARCn.Processus d'arrière-plan Gèrent et appliquent les relations entre les structures physiques et les structures mémoire. en outre. La liste suivante contient une partie des processus d'arrière-plan facultatifs : • RECO : Processus de récupération • QMNn : Advanced Queuing • ARCn : Processus d'archivage • LCKn : RAC Lock Manager–Verrous d'instance • LMON : RAC DLM Monitor–Verrous globaux • LMDn : RAC DLM Monitor–Verrous à distance • CJQ0 : Processus d'arrière-plan Coordinator Job Queue • Dnnn : Répartiteur (Dispatcher) • Snnn : Serveur partagé • Pnnn : Processus esclave "Parallel Query" Oracle9i Database Administration I 1-31 . Oracle possède. Tous droits réservés. 2001. 2001. • Un tablespace est mis en lecture seule.Processus database writer (DBWn) DBWn écrit dans les cas suivants : • point de reprise Cache de tampons • seuil des tampons "dirty" de la base de données atteint • aucune mémoire tampon disponible DBWn • temps imparti dépassé • demande de ping RAC • tablespace hors ligne Fichiers Fichiers Fichiers • tablespace en lecture seule de de de données contrôle journa. Le processus DBWn écrit les tampons "dirty" du cache de tampons de la base de données dans les fichiers de données. Tous droits réservés. Processus database writer (DBWn) Le processus serveur enregistre les modifications des blocs d'annulation et des blocs de données dans le cache de tampons de la base de données. • Une table est supprimée ou vidée. • Le nombre de tampons "dirty" a atteint une valeur seuil. • ALTER TABLESPACE nom du tablespace BEGIN BACKUP Oracle9i Database Administration I 1-32 . • Le temps imparti est dépassé. • Un processus balaie un certain nombre de blocs à la recherche de mémoires tampon libres et n'en trouve pas.• DROP ou TRUNCATE sur une lisation table Base de données • BEGIN BACKUP sur un tablespace Instance Mémoire SGA 1-32 Copyright © Oracle Corporation. • Une demande de ping est émise dans l'environnement Real Application Clusters (RAC). • Un tablespace normal ou temporaire est mis hors ligne. Les performances de la base sont améliorées puisque les processus serveur n'effectuent les modifications que dans le cache de tampons de la base de données. Le processus DBWn diffère l'écriture dans les fichiers de données jusqu'à ce que l'un des événements suivants se produise : • Point de reprise (checkpoint) normal ou incrémentiel. Il garantit qu'un nombre suffisant de mémoires tampon libres (tampons qui peuvent être écrasés lorsque les processus serveur doivent lire des blocs dans les fichiers de données) est disponible dans le cache de tampons de la base de données. Processus LGWR (Log Writer) Le processus LGWR effectue des opérations d'écriture séquentielles à partir du tampon de journalisation vers le fichier de journalisation dans les cas suivants : • Lorsqu'une transaction est validée (commit). Etant donné que la journalisation est nécessaire à la récupération des données. Le processus LGWR peut également appeler le processus DBWn pour écrire dans les fichiers de données. 2001. Tous droits réservés. • Avant que le processus DBWn n'écrive les blocs modifiés du cache de tampons de la base de données vers les fichiers de données. le processus LGWR ne confirme la validation qu'une fois les données journalisées enregistrées sur le disque. • Lorsqu'un tiers du tampon de journalisation est occupé. • Lorsque le tampon de journalisation contient plus d'un mégaoctet de modifications enregistrées.Processus LGWR (Log Writer) Instance Mémoire SGA Tampon de journalisation DBWn LGWR Fichiers de données Fichiers Fichiers de de contrôle journalisation Base de données LGWR écrit dans les cas suivants : • validation • un tiers du cache est occupé • la journalisation atteint 1 Mo • toutes les trois secondes • avant que le processus DBWn ne procède à une opération d'écriture 1-33 Copyright © Oracle Corporation. • Toutes les trois secondes. Oracle9i Database Administration I 1-33 . • Fusion de l'espace libre • Libération des segments temporaires segments 1-34 Copyright © Oracle Corporation. La récupération d'une instance implique les étapes suivantes : 1. Annuler les transactions non validées. – annule les transactions non validées. Lors de cette opération de réimplémentation. Les données qui ne sont pas verrouillées par des transactions non récupérées sont immédiatement disponibles. 2001. Oracle9i Database Administration I 1-34 . La défaillance du système d'exploitation. Ouvrir la base de données pour permettre aux utilisateurs de s'y connecter. – ouvre la base de données pour permettre l'accès aux utilisateurs. mais enregistrées dans le fichier de journalisation en ligne (online). provoque l'échec de l'instance. Le processus SMON exécute également des fonctions de gestion de l'espace : • Il combine ou fusionne les espaces libres adjacents dans les fichiers de données. Ces données n'ont pas été enregistrées sur disque du fait de l'effacement de la mémoire SGA suite à l'échec de l'instance. par exemple. les informations présentes dans la mémoire SGA qui n'ont pas été écrites sur disque sont perdues.Processus SMON (System Monitor) Instance Mémoire SGA SMON Fichiers de données Fichiers Fichiers de de contrôle journalisation Base de données Responsabilités : • Récupération de l'instance : – réimplémente des modifications dans les fichiers de journalisation. le processus SMON lit les fichiers de journalisation et applique aux blocs de données les modifications qui y sont enregistrées. Lorsqu'une instance a échoué. Etant donné que toutes les transactions validées ont été enregistrées dans les fichiers de journalisation. 2. 3. Ces transactions sont annulées (rollback) par le processus SMON ou par les processus serveur lorsqu'ils accèdent aux données verrouillées. Réimplémenter les modifications pour récupérer les données non enregistrées dans les fichiers de données. le processus d'arrière-plan SMON la récupère automatiquement lors de la réouverture de la base de données. ce processus permet de récupérer ces transactions dans leur intégralité. • Il libère les segments temporaires et augmente ainsi l'espace disponible dans les fichiers de données. Tous droits réservés. Processus SMON (System Monitor) En cas d'échec de l'instance Oracle. 2001. Processus PMON (Process Monitor) Suite à l'échec de processus. PMON exécute des opérations de nettoyage : • annule la transaction • libère des verrous • libère d'autres ressources • redémarre les répartiteurs interrompus 1-35 Copyright © Oracle Corporation. le processus d'arrière-plan PMON exécute des opérations de nettoyage : • Il annule la transaction en cours de l'utilisateur • Il libère tous les verrous posés sur des tables ou des lignes • Il libère d'autres ressources réservées par l'utilisateur • Il redémarre les répartiteurs interrompus Les répartiteurs sont présentés en détail dans le cours Oracle9i DBA II. Oracle9i Database Administration I 1-35 .Processus PMON (Process Monitor) Instance Mémoire SGA PMON Mémoire PGA Suite à l'échec de processus. Tous droits réservés. cette opération s'effectuait en fin de journalisation. 2001. • de mettre à jour les Fichiers Fichiers Fichiers fichiers de contrôle de de de données contrôle journaavec les informations lisation sur le point de reprise. Les points de reprise sont mis en oeuvre pour les raisons suivantes : • Pour garantir que les blocs de données modifiés qui se trouvent en mémoire sont régulièrement écrits sur disque afin d'éviter une perte des données en cas de panne du système ou de la base de données. Elle vise à garantir que toutes les mémoires tampon du cache de tampons de la base de données qui ont été modifiées avant un point dans le temps ont été écrites dans les fichiers de données. Dans ce cas. le processus DBWn a déjà écrit tout le contenu des mémoires tampon du cache de la base modifiées avant ce point dans le temps. le processus CKPT écrit également ces informations de point de reprise dans les en-têtes des fichiers de données. Oracle9i Database Administration I 1-36 . Instance Mémoire SGA Base de données 1-36 Copyright © Oracle Corporation.Processus CKPT (Checkpoint) Ce processus est chargé : • de signaler DBWn aux points de reprise. Dans les versions antérieures à Oracle9i. Tous droits réservés. • Pour réduire le temps de récupération d'une instance. Processus CKPT (Checkpoint) Le processus de point de reprise CKPT enregistre des données dans le fichier de contrôle toutes les trois secondes pour identifier l'emplacement de départ de la récupération dans le fichier de journalisation. En cas de changement de fichier de journalisation. • Pour garantir que toutes les données validées ont été écrites dans les fichiers de données lors de l'arrêt. Cette opération est appelée point de reprise. Seules les entrées de journalisation postérieures au dernier point de reprise doivent être traitées pour que la récupération ait lieu. • de mettre à jour les en-têtes de fichiers de données avec les DBWn LGWR CKPT informations sur le point de reprise. Ce point dans le temps (position du point de reprise) détermine le début de la récupération de la base de données en cas d'échec d'une instance. etc. Remarque : Le processus CKPT n'écrit pas de blocs de données sur le disque ou de blocs de journalisation dans les fichiers de journalisation en ligne. l'emplacement de départ de la récupération dans le fichier de journalisation. des informations sur les fichiers de journalisation.Le processus CKPT écrit les informations de point de reprise suivantes : la position du point de reprise. Oracle9i Database Administration I 1-37 . le numéro SCN (System Change Number). Ceci garantit la récupération des données validées en cas d'échec d'une instance. toutes les modifications apportées à la base sont conservées. les fichiers de journalisation en ligne sont écrasés à chaque changement de fichier de journalisation. l'un d'entre eux. Ainsi. seules les données de la mémoire SGA sont perdues (aucune donnée des disques n'est perdue). provoque la défaillance de l'instance. Ceci permet au DBA de récupérer la base de données jusqu'au point de panne. Le passage d'un fichier de journalisation à un autre est un changement de fichier de journalisation. Une défaillance du système d'exploitation. ARCn.Processus ARCn (processus d'archivage) • Processus d'arrière-plan facultatif • En mode ARCHIVELOG. Dans ce cas. Le serveur Oracle passe d'un fichier de journalisation en ligne au suivant à mesure que ceux-ci se remplissent. Toutefois. Archiver les fichiers de journalisation L'une des principales décisions de l'administrateur consiste à déterminer s'il doit configurer la base de données pour un fonctionnement en mode ARCHIVELOG ou en mode NOARCHIVELOG. Oracle9i Database Administration I 1-38 . Processus d'archivage Tous les autres processus d'arrière-plan sont facultatifs. il archive automatiquement les fichiers de journalisation en ligne • Il enregistre toutes les modifications apportées à la base de données Fichiers de données Fichiers Fichiers de de contrôle journalisation ARCn Fichiers de journalisation archivés 1-38 Copyright © Oracle Corporation. Il archive automatiquement le fichier de journalisation en ligne pour qu'il puisse être réutilisé. Tous droits réservés. par exemple. Le processus ARCn lance la sauvegarde ou l'archivage du groupe de fichiers de journalisation remplis à chaque changement de fichier de journalisation. 2001. même si un disque est endommagé. Mode NOARCHIVELOG : Dans ce mode. selon la configuration de la base de données. joue un rôle essentiel dans la récupération d'une base suite à une défaillance du disque. Le processus LGWR n'écrase pas un groupe de fichiers de journalisation tant que le point de reprise du groupe n'est pas terminé. les groupes inactifs de fichiers de journalisation en ligne remplis doivent être archivés pour pouvoir être réutilisés. Oracle9i Database Administration I 1-39 . notamment de perte d'un disque.Archiver les fichiers de journalisation (suite) Mode ARCHIVELOG : Si la base de données fonctionne en mode ARCHIVELOG. l'administrateur peut utiliser la sauvegarde physique des fichiers de données et les fichiers de journalisation en ligne archivés pour récupérer la base sans perdre les données validées en cas de panne en un point unique. Les modes d'archivage des fichiers sont présentés en détail dans le cours Oracle9i DBA II. Etant donné que les modifications de la base sont enregistrées dans les fichiers de journalisation en ligne. une base de données de production est configurée pour fonctionner en mode ARCHIVELOG. En règle générale. • Cette structure possède une hiérarchie composée de tablespaces. • Un extent est composé de blocs logiques. • Un bloc représente la plus petite unité sur laquelle portent les opérations de lecture et d'écriture. Oracle9i Database Administration I 1-40 . les fichiers de journalisation en ligne (online redo log) et les fichiers de données qui constituent la base de données. d'extents et de blocs de données. Tablespace Fichier de données Segment Segment Extent Blocs 1-40 Copyright © Oracle Corporation. • Un tablespace comporte un ou plusieurs segments. de segments. • La structure physique comprend les fichiers de contrôle. de segments. Le serveur Oracle permet un contrôle précis de l'utilisation de l'espace disque à l'aide de tablespaces et de structures de stockage logiques constituées de segments. 2001. d'extents et de blocs. d'extents (ensemble de blocs contigus) et de blocs de données.Structure logique • La structure logique définit le mode d'utilisation de l'espace physique d'une base de données. • Un segment est composé d'extents. Structure logique La hiérarchie de la structure logique se présente comme suit : • Une base de données Oracle contient au moins un tablespace. L'architecture d'une base de données Oracle contient les structures logiques et physiques qui constituent la base de données. • La structure logique est composée de tablespaces. Tous droits réservés. • Un serveur Oracle crée un fichier de données dans un tablespace en allouant l'espace disque défini et un petit espace supplémentaire. Extents Les extents permettent d'allouer de l'espace à un segment. • Un segment ne peut pas être réparti sur plusieurs tablespaces. • Chaque segment est constitué d'un ou de plusieurs extents. – L'administrateur de base de données peut ajouter manuellement des extents à un segment. Il doit donc appartenir à un seul fichier de ce type. • Les tablespaces peuvent être accessibles en lecture et écriture ou en lecture seule. • Chaque tablespace est constitué d'un ou de plusieurs fichiers du système d'exploitation. • Un tablespace peut contenir un ou plusieurs segments. mais peut s'étendre à plusieurs fichiers de données d'un même tablespace. • Un fichier de données ne peut appartenir qu'à un seul tablespace. • Un tablespace ne peut appartenir qu'à une seule base de données à la fois. celui-ci contient au moins un extent. appelés fichiers de données. • Un extent est constitué de blocs Oracle contigus. Oracle9i Database Administration I 1-41 . – A mesure que la taille du segment augmente. Segments • Un segment est un espace alloué à une structure de stockage logique spécifique d'un tablespace. – Lorsque vous créez un segment. Fichiers de données (structure non logique) • Chaque tablespace d'une base de données Oracle contient un ou plusieurs fichiers appelés fichiers de données. Ces fichiers sont des structures physiques conformes au système d'exploitation sur lequel s'exécute le serveur Oracle. • L'administrateur de base de données peut modifier la taille des fichiers de données après leur création ou indiquer que leur taille peut augmenter de façon dynamique à mesure que celle des objets du tablespace s'accroît. • Une base de données Oracle peut être divisée en plus petites zones logiques d'espace appelées tablespaces. • Un extent ne peut pas s'étendre sur plusieurs fichiers de données. • A l'exception du tablespace SYSTEM ou des tablespaces contenant un segment d'annulation actif. • Un segment peut être constitué d'un ou de plusieurs extents. • Les tablespaces peuvent être mis en ligne lorsque la base de données est active. • Un tablespace peut contenir un ou plusieurs segments. des extents lui sont ajoutés.Structure logique (suite) Tablespaces Les données d'une base de données Oracle sont stockées dans des tablespaces. les tablespaces peuvent être mis hors ligne sans interruption de la base de données. • Les blocs de données Oracle représentent la plus petite unité de stockage que le serveur Oracle peut allouer. • Un bloc de données correspond à un ou plusieurs blocs du système d'exploitation alloués à partir d'un fichier de données existant. écrire ou lire. Oracle9i Database Administration I 1-42 .Structure logique (suite) Blocs de données Le serveur Oracle gère l'espace de stockage des fichiers de données à l'aide d'unités appelées blocs de données ou blocs Oracle. • Lorsque le degré de détail maximum est atteint. les donnés d'une base Oracle sont stockées dans des blocs de données. • Le paramètre d'initialisation DB_BLOCK_SIZE permet de définir la taille de bloc standard lors de la création d'une base de données Oracle. • La taille maximale d'un bloc de données dépend du système d'exploitation utilisé. • La taille des blocs de données doit correspondre à un multiple de la taille des blocs du système d'exploitation afin d'éviter les opérations d'entrée/sortie inutiles. Traiter les instructions SQL Traiter une interrogation • Parse (analyse) : – – – – • • • Recherche d'instructions identiques Vérification de la syntaxe.Traiter les instructions SQL • Connexion à une instance via : – le processus utilisateur. • Certains composants du serveur Oracle n'interviennent pas dans le traitement des instructions SQL. – le processus serveur. – Les instructions LMD consignent les modifications. des noms d'objet et des privilèges Verrouillage des objets utilisés lors de l'analyse Création et stockage d'un plan d'exécution Bind (affectation de valeurs) : obtention des valeurs des variables Execute (exécution) : traitement de l'instruction Fetch (extraction) : renvoi de lignes au processus utilisateur Oracle9i Database Administration I 1-43 . Tous droits réservés. • Les composants du serveur Oracle utilisés dépendent du type d'instruction SQL : – Les interrogations renvoient des lignes. 2001. 1-43 Copyright © Oracle Corporation. – La validation garantit la récupération de la transaction. L'image avant d'une commande DELETE contient les valeurs de colonne de la ligne supprimée et celle d'une commande INSERT contient les informations sur l'emplacement de la ligne. procédez tout simplement à une autre exécution. des sessions et du système sont traitées lors des étapes d'analyse et d'exécution. • Execute (exécution) : – Si les blocs de données et les blocs d'annulation ne se trouvent pas déjà dans le cache de tampons de la base de données. Le processus serveur enregistre l'image avant dans le bloc d'annulation et met à jour le bloc de données. pour aboutir.Traiter les instructions SQL (suite) Processing a DML statement: • Parse (analyse) : cette étape est identique à l'analyse effectuée lors du traitement d'une interrogation. Les instructions SQL de gestion des transactions. Le bloc d'annulation stocke l'image avant des données. Les blocs modifiés dans le cache de tampons sont identifiés comme tampons "dirty" (mémoires tampon qui ne sont pas identiques aux blocs correspondants sur le disque). une instruction LDD requiert un accès en écriture au dictionnaire de données. Ces deux modifications sont effectuées dans le cache de tampons de la base de données. L'analyse de ces instructions comprend en fait l'analyse. si nécessaire. ce qui permet d'annuler. – – – – Traiter une instruction LMD L'exécution d'instructions LDD (Langage de définition de données) diffère de celle d'instructions LMD (Langage de manipulation de données) et d'interrogations dans la mesure où. la consultation du dictionnaire de données et l'exécution. Pour les réexécuter. Le traitement d'une commande DELETE ou INSERT s'effectue selon des étapes similaires. • Bind (affectation de valeurs) : cette étape est identique à l'affectation de valeurs effectuée lors du traitement d'une interrogation. les instructions LMD. le processus serveur les lit à partir des fichiers de données et les place dans le cache. Le processus serveur place des verrous sur les lignes à modifier. Les blocs de données enregistrent les nouvelles valeurs des données. Oracle9i Database Administration I 1-44 . LGWR. zone de mémoire partagée et tampon de journalisation • les principaux processus d'arrière-plan : DBWn. PMON et SMON • l'utilisation du processus d'arrière-plan ARCn • les processus d'arrière-plan facultatifs et conditionnels • la hiérarchie logique 1-45 Copyright © Oracle Corporation. 2001. fichiers de journalisation en ligne • les structures mémoire SGA : cache de tampons de la base de données.Synthèse Ce chapitre vous a présenté : • les fichiers de base de données : fichiers de données. Tous droits réservés. CKPT. fichiers de contrôle. Oracle9i Database Administration I 1-45 . Tous droits réservés.Présentation de l'exercice 1 Cet exercice porte sur : • les composants de l'architecture • les structures utilisées dans la connexion d'un utilisateur à une instance Oracle 1-46 Copyright © Oracle Corporation. Oracle9i Database Administration I 1-46 . 2001. a La zone de mémoire partagée est composée du cache "library". b le processus serveur. d Une session démarre une fois que le serveur Oracle a authentifié l'utilisateur. b la mémoire PGA. d la zone de mémoire partagée. ________________________________________ ________________________________________ ________________________________________ ________________________________________ ________________________________________ Oracle9i Database Administration I 1-47 . lequel ou lesquels sont disponibles au démarrage d'une instance Oracle ? a le processus utilisateur. b la mémoire PGA. 4 Parmi les zones mémoire suivantes. d Le cache "library" est composé des zones SQL et PL/SQL partagées. 8 Indiquez ci-dessous cinq processus d'arrière-plan obligatoires. laquelle ne fait pas partie de la mémoire SGA ? a le cache de tampons de la base de données. b Pour établir une connexion avec la base de données. a Vrai b Faux 6 La mémoire PGA est une région de la mémoire qui contient les données et les informations de contrôle de plusieurs processus serveur ou de plusieurs processus d'arrière-plan. de la zone SQL partagée. l'utilisateur doit démarrer une instance Oracle. a Vrai b Faux 7 Parmi les processus suivants. a Un serveur Oracle est un ensemble de données composé de trois types de fichier. de la zone de mémoire Java et de la zone de mémoire LARGE POOL. c le tampon de journalisation. laquelle permet de mettre en mémoire cache les informations du dictionnaire de données ? a le cache de tampons de la base de données.Exercice 1 : composants de l'architecture Oracle 1 Parmi les affirmations suivantes. c Une connexion est un chemin de communication entre le serveur Oracle et l'instance Oracle. d la zone de mémoire partagée. c La zone de mémoire partagée est utilisée pour un objet pouvant être partagé globalement. b La zone de mémoire partagée permet de stocker les dernières instructions SQL exécutées. 5 La tâche principale du tampon de journalisation consiste à enregistrer toutes les modifications apportées aux blocs de données de la base. 2 Parmi les zones mémoire suivantes. c les processus d'arrière-plan. c le tampon de journalisation. déterminez laquelle est vraie. 3 Identifiez les deux affirmations correctes se rapportant à la zone de mémoire partagée. du cache du dictionnaire de données. b Log Writer C se charge de la récupération de l'instance. ________________________________________ ________________________________________ ________________________________________ Oracle9i Database Administration I 1-48 . ________________________________________ ________________________________________ 13 Indiquez les composants d'une instance Oracle. a Tablespaces b Extent c Segment d Base de donnée e Bloc 12 Indiquez les composants d'un serveur Oracle. a Vrai b Faux 11 Rétablissez la hiérarchie des structures suivantes. a Database Writer E permet l'écriture dans les en-têtes des fichiers de données. en commençant par la base de données.Exercice 1 : composants de l'architecture Oracle (suite) 9 Affectez à chaque processus la tâche correspondante. d Process Monitor B enregistre les modifications de la base dedonnées pour permettre la récupération. e Checkpoint A écrit les tampons "dirty" dans les fichiers de données. 10 La structure physique d'une base Oracle est composée de fichiers de contrôle. ________________________________________ ________________________________________ 14 Indiquez trois types de fichier composant une base de données Oracle. c System Monitor D exécute des opérations de nettoyage suite à l'échec de processus. de fichiers de données et de fichiers de journalisation. . 2001. Tous droits réservés.Initiation à Oracle Server Copyright © Oracle Corporation. Objectifs A la fin de ce chapitre. 2001. Oracle9i Database Administration I 2-2 . Tous droits réservés. vous pourrez : • identifier les outils standard d'administration de base de données que peut utiliser l'administrateur • identifier les fonctions d'Oracle Universal Installer • utiliser SQL*Plus pour accéder à une base de données Oracle et la manipuler • répertorier les principaux composants d'Oracle Enterprise Manager 2-2 Copyright © Oracle Corporation. de surveiller et de régler une ou plusieurs bases de données 2-3 Copyright © Oracle Corporation. Exemples d'outils standard d'administration de base de données Les outils répertoriés dans la diapositive sont décrits dans ce cours. Utilitaire permettant d'accéder à des données d'une base Oracle Interface utilisateur permettant d'administrer. Tous droits réservés. de mettre à niveau ou de supprimer des composants logiciels. Outil doté d'une interface graphique qui entre en interaction avec Oracle Universal Installer ou qui peut être utilisé indépendamment afin de créer. mais ils ne représentent qu'un sous-ensemble des utilitaires fournis par Oracle. 2001. supprimer ou modifier une base de données. Oracle9i Database Administration I 2-3 .Outils d'administration de base de données Outil Oracle Universal Installer (OUI) Oracle Database Configuration Assistant SQL*Plus Oracle Enterprise Manager Description Permet d'installer. Oracle9i Database Administration I 2-4 . Oracle Universal Installer s'exécute en mode automatique (ou non-interactif) à l'aide d'un fichier de réponses. • peut être exécuté en mode interactif ou automatique . • Repose sur un moteur Java. • détecte la langue du système d'exploitation et exécute l'installation dans cette langue. – possibilité d'installations basées sur le Web. 2-4 Copyright © Oracle Corporation. • peut supprimer des produits installés . – inventaire des installations de composants et de suites. – désinstallation de composants installés. Tous droits réservés. • Possède les fonctions suivantes : – résolution automatique des dépendances. Fonctions d'Oracle Universal Installer Oracle Universal Installer est un utilitaire basé sur Java. Universal Installer • détecte les dépendances entre les composants et effectue l'installation en conséquence. • peut pointer sur une URL correspondant à un emplacement où une version ou une zone intermédiaire a été définie. – prise en charge de plusieurs répertoires d'origine Oracle Home. qui offre une solution d'installation pour toutes les plates-formes compatibles Java et propose une procédure d'installation et une interface communes.Oracle Universal Installer • Permet d'installer. et installer le logiciel à distance via HTTP. • conserve un inventaire de tous les répertoires d'origine Oracle Home sur une machine cible avec leurs noms ainsi que les produits qui y sont installés et la version de ces derniers. de mettre à niveau ou de supprimer des composants logiciels et de créer une base de données. – prise en charge de la technologie de globalisation. indépendantes de la plate-forme. 2001. les actions de désinstallation correspondent à l'annulation des actions d'installation. exécutez la commande suivante : D:\> setup 2-5 Copyright © Oracle Corporation. n'exécutez pas l'installeur en tant qu'utilisateur root. nommé setup. consultez la documentation Oracle propre à votre système d'exploitation. NT : Le programme d'installation. Oracle9i Database Administration I 2-5 . se trouve dans le répertoire install/win32. Tous droits réservés.Démarrer Universal Installer • Pour démarrer Oracle Universal Installer sous UNIX. nommé runInstaller. exécutez la commande suivante : $ . se trouve dans le répertoire INSTALL\install\solaris. Remarque : Pour plus d'informations sur l'installation d'Oracle Server sur votre plate-forme. Sous Unix./runInstaller • Pour démarrer Oracle Universal Installer sous NT. 2001.exe. Installation interactive UNIX : Le programme d'installation. /runInstaller -responsefile myrespfile -silent 2-6 Copyright © Oracle Corporation. . L'utilisateur doit tout d'abord copier et modifier le fichier de réponses afin de définir les composants à installer. les valeurs de ORACLE_HOME et les types d'installation. par exemple. Il s'agit d'un fichier texte contenant des variables et des valeurs utilisées par Oracle Universal Installer lors de l'installation. setup. Les paramètres d'installation sont personnalisés à l'aide d'un fichier de réponses. Oracle9i Database Administration I 2-6 .Installation non-interactive à l'aide de fichiers de réponses • Ce type d'installation ne permet pas d'interaction avec l'utilisateur • Fichiers de réponses : – Modèles devant être modifiés – Fichiers texte contenant des variables et des valeurs – Paramètres personnalisés • Pour démarrer Universal Installer en mode noninteractif. UNIX : Des modèles de fichiers de réponses sont disponibles dans le répertoire stage/response./runInstaller -responsefile filename [-silent] [-nowelcome] NT : Des modèles de fichiers de réponses sont disponibles dans le répertoire Response du CD-ROM. c'est-à-dire standard (Typical) ou personnalisée (Custom). Tous droits réservés. 2001. Ces paramètres incluent.exe –responsefile filename [-silent] Remarque : Il ne s'agit pas du mode caractère. exécutez la commande suivante : . Installation non-interactive à l'aide de fichiers de réponses L'installation non-interactive s'effectue lorsque aucune action de l'utilisateur n'est prévue ou si des terminaux non-graphiques sont utilisés pour l'installation. • NOWELCOME n'affiche pas de fenêtre de bienvenue./runInstaller –responsefile FILENAME [-SILENT] [-NOWELCOME] Où : • FILENAME identifie le fichier de réponses.us.com" s_mountPoint="/u01/app/oracle/ora9i/dbs" s_dbSid="db09" b_createDB=true Oracle9i Database Administration I 2-7 . "9. • SILENT exécute Oracle Universal Installer en mode automatique. ce paramètre n'est pas nécessaire.1.oracle.7. UNIX : .0 [Session] UNIX_GROUP_NAME="dba" FROM_LOCATION="/u01/stage/products.1"} SHOW_COMPONENT_LOCATIONS_PAGE=false SHOW_SUMMARY_PAGE=false SHOW_INSTALL_PROGRESS_PAGE=false SHOW_REQUIRED_CONFIG_TOOL_PAGE=false SHOW_OPTIONAL_CONFIG_TOOL_PAGE=false SHOW_END_SESSION_PAGE=false NEXT_SESSION=true SHOW_SPLASH_SCREEN=true SHOW_WELCOME_PAGE=false SHOW_ROOTSH_CONFIRMATION=true SHOW_EXIT_CONFIRMATION=true INSTALL_TYPE="Typical” s_GlobalDBName="u01.0.1.Lancer Oracle Universal Installer en mode non-interactif Exemple : Lancez Oracle Universal Installer en mode non-interactif. Exemple de fichier de réponses pour Unix : [General] RESPONSEFILE_VERSION=1.server". Si vous utilisez SILENT.jar" ORACLE_HOME="/u01/app/oracle/ora9i" ORACLE_HOME_NAME="Ora9i" TOPLEVEL_COMPONENT={"oracle. sh doit être affichée. valeur de ORACLE_HOME – ORACLE_HOME_NAME. Remarque : Pour plus d'informations sur la configuration d'un fichier de réponses. – SHOW EXIT CONFIRMATION prend la valeur TRUE si la boîte de dialogue demandant la confirmation de la fermeture de l'installeur doit être affichée.Lancer Oracle Universal Installer en mode non-interactif Exemple de fichier de réponses (suite) : • La section General indique le numéro de version du fichier de réponses. Oracle9i Database Administration I 2-8 . valeur de ORACLE_HOME_NAME – SHOW INSTALL PROGRESS correspond à la page d'avancement de l'installation qui s'affiche lors de la phase d'installation. – ORACLE_HOME. • La section Sessions répertorie diverses boîtes de dialogue d'Universal Installer. dont les suivantes : – FROM LOCATION indique l'emplacement de la source des produits à installer. – SHOW ROOTISH CONFIRMATION prend la valeur TRUE si la boîte de dialogue demandant la confirmation de l'exécution du script root. reportezvous au guide d'installation de votre système d'exploitation. Oracle Database Configuration Assistant Oracle Database Configuration Assistant vous permet de : • créer une base de données • configurer des options de base de données • supprimer une base de données • gérer des modèles 2-9 Copyright © Oracle Corporation. 2001. Oracle Database Configuration Assistant Le chapitre "Créer une base de données" explique comment créer une base à l'aide d'Oracle Database Configuration Assistant. Tous droits réservés. Oracle9i Database Administration I 2-9 . vous recevrez le message d'erreur suivant : ORA-28009 connecting to SYS should be SYSDBA or SYSOPER. Elles contiennent des informations d'administration utilisées par les outils Oracle. Si vous tentez de vous connecter en tant que SYS sans le privilège SYSDBA ou SYSOPER. dont les informations sont essentielles. Pour des raisons de sécurité. il est possible de créer d'autres utilisateurs. Ce rôle dispose de tous les privilèges système sur la base de données. A la création d'une base de données. Administrateurs de base de données Des privilèges supplémentaires sont nécessaires pour exécuter des tâches d'administration (création d'utilisateurs. Vous devez créer au moins un nom d'administrateur supplémentaire pour exécuter les tâches d'administration quotidiennes. par exemple) sur le serveur Oracle. est créé et devient propriétaire du dictionnaire de données. Oracle9i Database Administration I 2-10 . les deux comptes utilisateur SYS et SYSTEM sont créés automatiquement et reçoivent le rôle prédéfini d'administrateur de base de données. 2001. En fonction du mode de création de la base de données (création manuelle ou à l'aide de Database Creation Assistant). identifié à l'origine par le mot de passe manager. identifié à l'origine par le mot de passe change_on_install. l'utilisateur SYSTEM. Des tables et des vues appartenant à l'utilisateur SYSTEM sont créées. il convient de changer les mots de passe par défaut de SYS et SYSTEM immédiatement après la création de la base de données.Administrateurs de base de données • Les utilisateurs SYS et SYSTEM sont créés automatiquement en même temps que la base de données • Ils reçoivent le rôle d'administrateur de base de données SYS • Mot de passe : change_on_install • Propriétaire du dictionnaire de données de la base SYSTEM • Mot de passe : manager • Propriétaire des tables et vues internes utilisées par les outils Oracle 2-10 Copyright © Oracle Corporation. SYS Lors de la création d'une base de données. l'utilisateur SYS. Tous droits réservés. SYSTEM Lors de la création d'une base de données. est également créé automatiquement. 2001. SQL est un langage fonctionnel qui permet aux utilisateurs de communiquer avec Oracle pour ajouter. mettre à jour ou modifier des données dans la base. Oracle9i Database Administration I 2-11 . SQL*Plus SQL*Plus est l'outil de ligne de commande d'Oracle qui permet d'exécuter la suite de commandes SQL (Structured Query Language) standard. de créer et d'exécuter des interrogations. d'ajouter des lignes. – de démarrer et d'arrêter la base de données. 2-11 Copyright © Oracle Corporation. ou en extraire des données.SQL*Plus • Outil Oracle qui permet : – d'interagir avec la base de données et de la manipuler. • Sous-ensemble du langage SQL standard avec des extensions spécifiques • Connexion à SQL*Plus sqlplus /nolog connect / as sysdba Connected to an idle instance. de modifier des données et d'écrire des états personnalisés. Tous droits réservés. La console affiche les objets du système et leurs relations dans une arborescence hiérarchique et sous forme graphique. Spatial Index Advisor et Text Manager. ainsi que le repérage et la gestion des services. d'une suite d'outils et de services et d'un réseau de serveurs de gestion et d'Agents Intelligents. 2001. Oracle9i Database Administration I 2-12 . le repérage (discovery) et la gestion des bases de données. qui incluent la gestion et la planification des travaux (Job scheduling). ainsi que d'autres applications telles qu'Oracle Net Manager. la gestion des événements. Les services standard.Oracle Enterprise Manager • Outil de gestion centralisée des systèmes. Tuning Pack et Change Management Pack. Tous droits réservés. 2-12 Copyright © Oracle Corporation. Oracle Enterprise Manager comporte des applications intégrées qui permettent de réaliser des tâches d'administration standard et avancées. Ces applications incluent des packs facultatifs tels que Diagnostics Pack. Oracle Enterprise Manager Oracle Enterprise Manager est une structure de gestion unifiée composée d'une console à base Java. • Fournit des outils d'administration de serveurs parallèles et de bases de données de réplication. de diagnostic et de réglage sur plusieurs bases de données • Outil permettant d'administrer plusieurs noeuds de réseau et services à partir de plusieurs emplacements • Permet de partager des tâches avec d'autres administrateurs. destiné aux administrateurs de base de données • Outil permettant d'exécuter les tâches d'administration. En outre. offrent une structure complète pour Oracle Enterprise Manager. Vous pouvez utiliser la console en mode autonome pour effectuer des tâches administratives de base qui ne requièrent pas le système Job. 2001. Troisième niveau : un Agent Intelligent installé sur chaque noeud surveille les services du noeud et exécute des tâches demandées par le serveur de gestion. Oracle9i Database Administration I 2-13 . avec connexion directe aux bases de données.Architecture d'Oracle Enterprise Manager Oracle Management Server Console Agent Oracle server Référentiel (repository) Agent Oracle server Oracle Management Server Agent Oracle server 2-13 Copyright © Oracle Corporation. Architecture d'Oracle Enterprise Manager Oracle Enterprise Manager utilise une architecture à trois niveaux (three-tier) : Premier niveau : des clients console et des outils intégrés offrent l'interface graphique utilisée par les administrateurs. Le lancement de la console en mode autonome permet d'utiliser une ou plusieurs applications sans Oracle Management Server ou l'Agent Intelligent. Event ou Group. ce produit est également disponible dans une architecture à deux niveaux (2-tiers). Deuxième niveau : les serveurs OMS (Oracle Management Server) et un référentiel (repository) de bases de données constituent un niveau intermédiaire (middle tier) évolutif pour le traitement des tâches de gestion du système. Etant donné qu'il n'est pas toujours nécessaire d'implémenter Oracle Enterprise Manager en tant que système à trois niveaux (3-tiers). Tous droits réservés. Il est utilisé par OMS comme emplacement de stockage back-end persistant. OMS représente la partie centrale de la structure d'Oracle Enterprise Manager et fournit des comptes utilisateur d'administration. Un Agent Intelligent réside sur chaque noeud. L'ID de l'Agent Intelligent est dbsnmp. Si cela s'avère nécessaire. la connexion à la console peut s'effectuer en mode autonome. Référentiel Oracle Enterprise Manager Le référentiel est un ensemble de tables créé lors de la configuration d'OMS. Il communique avec OMS et réalise les tâches demandées par les consoles et les applications client. Dans les versions antérieures. Ce type de fonctionnement permet aux Agents Intelligents de réaliser des tâches telles que le démarrage et l'arrêt d'une base de données tout en restant opérationnels si une autre partie du système est en panne. traite des fonctions telles que les travaux et les événements et gère le flux d'informations entre la console (premier niveau) et les noeuds gérés (troisième niveau). les données d'application. Noeuds Le troisième niveau est composé de noeuds gérés contenant des cibles telles que des bases de données et d'autres services gérés. Un seul Agent Intelligent est nécessaire par noeud. de la console et d'Oracle Management Server. il est possible d'utiliser plusieurs OMS qui partageront un référentiel et garantiront fiabilité et tolérance aux pannes. Toutes les données système. Oracle Management Server Oracle Management Server (OMS) est le deuxième niveau d'Oracle Enterprise Manager. L'Agent Intelligent s'exécute indépendamment de la base de données. les informations sur le statut des noeuds gérés et les informations sur les packs gérés par le système sont stockées dans un référentiel (repository). Oracle9i Database Administration I 2-14 .Architecture d'Oracle Enterprise Manager (suite) Console Le premier niveau est composé de clients tels que les consoles et les applications de gestion qui présentent des interfaces utilisateur aux administrateurs pour toutes leurs tâches de gestion. toutes les connexions s'effectuaient via Oracle Management Server. La majeure partie de la logique applicative du premier niveau dépend du deuxième niveau (Oracle Management Server) Remarque : A partir de la version Oracle9i. la console ou Oracle Management Server. Il est possible de lancer la console en mode autonome ou en se connectant à Oracle Management Server. Tous droits réservés. 2001. Remarque : Ce cours n'est pas destiné à présenter en détail Oracle Enterprise Manager. Il est possible d'exécuter la console en mode léger via le Web ou en tant que client lourd. voir le cours Oracle Enterprise Manager 9i.Console • Point de lancement central • Peut être exécutée sur client léger ou client lourd • Peut être lancée en mode autonome ou via un OMS 2-15 Copyright © Oracle Corporation. Pour plus d'informations sur l'utilisation d'Oracle Enterprise Manager. Pour les clients lourds. SQL*Plus Worksheet peut être lancé depuis la console. Fonctionnalités de la console La console fournit une interface utilisateur aux administrateurs et un point de lancement central pour l'ensemble des outils et des applications de gestion. Oracle9i Database Administration I 2-15 . les fichiers doivent être installés localement. Les clients légers utilisent un navigateur Web pour se connecter à un serveur sur lequel sont installés des fichiers de console. Démarrer la console Oracle Enterprise Manager Exemple : Démarrez la console OEM. Choisissez de démarrer la console à l'aide de l'une des options suivantes : • Login to the Oracle Management Server • Launch standalone 3. Lancez la console : Start > Programs > Oracle-OraHome90 > Enterprise Manager Console 2. Cliquez sur OK. Oracle9i Database Administration I 2-16 . 1. Oracle9i Database Administration I 2-17 . 2001. Tous droits réservés.Synthèse Ce chapitre vous a permis d'apprendre à : • identifier les outils d'administration de base de données • identifier les fonctions d'Oracle Universal Installer • utiliser SQL*Plus pour accéder à une base de données et la manipuler • identifier les principaux composants d'Oracle Enterprise Manager 2-17 Copyright © Oracle Corporation. Tous droits réservés. 2001. Oracle9i Database Administration I 2-18 . vous allez : • vous connecter à SQL*Plus • vous connecter à la console Oracle Enterprise Manager 2-18 Copyright © Oracle Corporation.Présentation de l'exercice 2 Dans cet exercice. Gérer une instance Oracle Copyright © Oracle Corporation. 2001. . Tous droits réservés. Objectifs A la fin de ce chapitre. vous pourrez : • créer et gérer des fichiers de paramètres d'initialisation • démarrer et arrêter une instance • surveiller et utiliser des fichiers de diagnostic 3-2 Copyright © Oracle Corporation. Oracle9i Database Administration I 3-2 . 2001. Tous droits réservés. Tous droits réservés. 2001. Oracle9i Database Administration I 3-3 . le serveur Oracle doit lire le fichier de paramètres d'initialisation. Fichiers de paramètres d'initialisation Pour démarrer une instance.Fichiers de paramètres d'initialisation Instance Oracle Zone de mémoire partagée Cache "library" Cache du dictionnaire de données PMON SMON Mémoire SGA Cache de tampons de la base de données Zone de mémoire Java Tampon de journalisation Zone de mémoire LARGE POOL DBW0 LGWR CKPT Autres spfiledb01.ora CONNECT / AS SYSDBA STARTUP 3-3 Copyright © Oracle Corporation. mais prend en compte les valeurs Oracle par défaut. le serveur Oracle lit le fichier de paramètres d'initialisation. Tous droits réservés. • Une instance peut présenter plusieurs fichiers de paramètres d'initialisation • Les modifications apportées aux entrées du fichier s'appliquent en fonction du type de fichier de paramètres d'initialisation utilisé : – Fichier de paramètres statique. généralement nommé spfileSID. Oracle9i Database Administration I 3-4 . – Implicite – Le fichier ne contient aucune entrée.Fichiers de paramètres d'initialisation • Les entrées sont propres à l'instance en cours de démarrage • Il existe deux types de paramètre : – Explicite – Le fichier contient une entrée. SPFILE 3-4 Copyright © Oracle Corporation.ora. Ce dernier peut être de deux types : • Fichier de paramètres statique. 2001. généralement nommé initSID. SPFILE. PFILE – Fichier de paramètres persistant. Contenu des fichiers de paramètres d'initialisation : • Liste de paramètres d'instance • Nom de la base de données à laquelle l'instance est associée • Affectations destinées aux structures mémoire de la mémoire SGA (System Global Area) • Utilisation des fichiers de journalisation en ligne (online) remplis • Noms et emplacements des fichiers de contrôle • Informations relatives aux segments d'annulation Une instance peut présenter plusieurs fichiers de paramètres d'initialisation afin d'optimiser les performances dans certaines situations.ora. • Fichier de paramètres persistant. Fichiers de paramètres d'initialisation Pour démarrer une instance. PFILE. procédez comme suit : 1. Sélectionnez All Initialization Parameters dans la page General. Oracle9i Database Administration I 3-5 . 2. Sélectionnez Databases > Instance > Configuration.Fichiers de paramètres d'initialisation Utiliser Oracle Enterprise Manager pour afficher les paramètres d'initialisation A partir de la console OEM. Ce fichier est en lecture seule pendant le démarrage de l'instance.Fichier PFILE initSID.ora • Il s'agit d'un fichier texte • Il peut être modifié à l'aide d'un éditeur du système d'exploitation • Toute modification est apportée manuellement • Les modifications sont effectives au démarrage suivant • Il ne peut être ouvert que lors du démarrage de l'instance • Son répertoire par défaut est $ORACLE_HOME/dbs 3-6 Copyright © Oracle Corporation. S'il est modifié.ora. Tous droits réservés. Oracle9i Database Administration I 3-6 . l'instance doit être interrompue et redémarrée pour que les nouvelles valeurs des paramètres soient effectives. 2001. le fichier PFILE se trouve dans le répertoire $ORACLE_HOME/dbs sous le nom initSID. PFILE PFILE est un fichier texte que vous pouvez mettre à jour à l'aide d'un éditeur standard du système d'exploitation. Par défaut. – Identifiez-le de façon unique à l'aide d'un SID de base de données. que vous pouvez utiliser pour créer un fichier initSID.ora • Modifiez le fichier initSID. Tous droits réservés. cp init. Les paramètres du fichier initSID. – Affectez des valeurs qui répondent aux besoins de la base de données. – Editez les paramètres. – Copiez l'exemple à l'aide de la commande appropriée du système d'exploitation.ora.ora. Oracle9i Database Administration I 3-7 .ora. Oracle Universal Installer crée un exemple de fichier init. 2001.ora propre à l'instance. 3-7 Copyright © Oracle Corporation.ora peuvent être modifiés à l'aide d'un éditeur de texte. – Oracle Universal Installer installe un exemple de fichier. Créer un fichier PFILE Au cours de l'installation.Créer un fichier PFILE • Créez ce fichier à partir d'un exemple de fichier init.ora $ORACLE_HOME/dbs/initdba01. Oracle9i Database Administration I 3-8 . selon le paramètre utilisé.ora db_name instance_name = dba01 = dba01 control_files = ( home/dba01/ORADATA/u01/control01dba01. • Vous pouvez ajouter d'autres fichiers à l'aide du mot-clé IFILE.Exemple de fichier PFILE # Initialization Parameter File: initdba01. 3-8 Copyright © Oracle Corporation. Cette valeur peut dépendre du système d'exploitation. • Les valeurs multiples sont placées entre parenthèses et séparées par des virgules. elle doit également être respectée pour les noms de fichier. Remarque : Adoptez une convention d'énumération des paramètres dans l'ordre alphabétique ou par groupe de fonctions. Le fichier PFILE varie d'une instance à l'autre et ne se présente pas nécessairement comme dans la diapositive. • Les lignes de commentaires sont précédées du symbole #. • Si la distinction majuscules/minuscules est importante pour le système d'exploitation. • Placez les paramètres entre guillemets pour inclure des littéraux de type caractère. sauf exception. • Le serveur propose une valeur par défaut pour chaque paramètre. • Les paramètres peuvent être indiqués dans n'importe quel ordre. 2001. . .ctl) db_block_size db_cache_size shared_pool_size java_pool_size max_dump_file_size user_dump_dest core_dump_dest undo_management undo_tablespace . home/dba01/ORADATA/u02/control01dba02.ctl. Tous droits réservés. = 4096 = 4M = 50000000 = 50000000 = 10240 = /home/dba01/ADMIN/UDUMP = /home/dba01/ADMIN/CDUMP = AUTO = UNDOTBS background_dump_dest = /home/dba01/ADMIN/BDUMP Exemple de fichier PFILE • Indiquez les valeurs au format suivant : mot-clé=valeur. En outre.ora. Tous droits réservés. le fichier est mis à jour par le serveur Oracle. 3-9 Copyright © Oracle Corporation. Par défaut. 2001. Il permet d'apporter à la base de données des modifications qui seront conservées après l'arrêt et le redémarrage. qui sont enregistrées dans le fichier. Sa mise à jour est effectuée par le serveur Oracle. Il permet de rendre les modifications persistantes après l'arrêt et le redémarrage. parce qu'il réside côté serveur. Ce fichier ne doit pas être modifié manuellement et doit toujours résider côté serveur. Fichier SPFILE Oracle9i propose un nouveau fichier binaire nommé SPFILE. Il peut bénéficier de la prise en charge de RMAN pour effectuer des sauvegardes du fichier de paramètres d'initialisation. il peut régler lui-même les valeurs des paramètres. Oracle9i Database Administration I 3-9 . il se trouve dans le répertoire $ORACLE_HOME/dbs et son nom se présente sous le format spfileSID.Fichier SPFILE spfileSID. il devient inutile. Une fois créé. S'il est modifié manuellement.ora • • • • Il s'agit d'un fichier binaire. Il réside toujours côté serveur. • Il peut bénéficier de la prise en charge d'Oracle Recovery Manager pour effectuer des sauvegardes du fichier de paramètres d'initialisation. • Il peut régler les valeurs des paramètres. Oracle9i Database Administration I 3-10 . 2001. – PFILE-NAME correspond au fichier PFILE qui sert de base à la création du fichier SPFILE. SQL> CREATE SPFILE FROM PFILE. exécutable avant ou après le démarrage de l'instance si vous disposez du privilège SYSDBA.ora’ FROM PFILE = ‘$ORACLE_HOME/dbs/initDBA01. • PFILE-NAME correspond au nom du fichier PFILE utilisé pour créer le SPFILE. Tous droits réservés. où : – SPFILE-NAME correspond au fichier SPFILE à créer. Oracle utilise le fichier PFILE par défaut pour générer un SPFILE dont le nom sera défini par le système. SQL> CREATE SPFILE [='SPFILE-NAME'] 2 FROM PFILE[='PFILE-NAME'] Où : • SPFILE-NAME correspond au nom du fichier SPFILE à créer.ora’. Créer un fichier SPFILE Vous pouvez créer un fichier SPFILE à partir d'un fichier PFILE à l'aide de la commande CREATE SPFILE. Si vous ne précisez pas SPFILE-NAME et PFILE-NAME dans la syntaxe. 3-10 Copyright © Oracle Corporation.Créer un fichier SPFILE • Créez ce type de fichier à partir d'un fichier PFILE. Le fichier PFILE doit être disponible côté serveur. • Il peut être exécuté avant ou après le démarrage de l'instance. CREATE SPFILE = ‘$ORACLE_HOME/dbs/spfileDBA01. • recréant le fichier SPFILE à partir du PFILE édité. Oracle9i Database Administration I 3-11 . • éditant le fichier PFILE. Cette commande peut être exécutée avant ou après le démarrage de l'instance. SQL> CREATE PFILE FROM SPFILE. vous pouvez utiliser la vue V$SPPARAMETER pour afficher le contenu du fichier SPFILE. Vous pouvez ainsi afficher le fichier SPFILE et apporter des modifications en : • exportant le SPFILE vers un PFILE. Le PFILE est créé côté serveur sous forme de fichier texte. L'export d'un SPFILE vers un PFILE permet également de créer une sauvegarde du fichier de paramètres persistant. Remarque : Dans Oracle9i. V$SPPARAMETER Outre les options présentées précédemment. RMAN peut également sauvegarder des fichiers de paramètres persistants.Créer un fichier SPFILE (suite) Exporter un fichier SPFILE Le contenu d'un fichier SPFILE peut être exporté vers un PFILE. Utiliser Oracle Enterprise Manager pour exporter un fichier SPFILE A partir de la console OEM.Créer un fichier SPFILE Utiliser Oracle Enterprise Manager pour créer un fichier SPFILE A partir de la console OEM. Oracle9i Database Administration I 3-12 . procédez comme suit : 1. procédez comme suit : 1. Sélectionnez Object > Create spfile dans le menu principal. Sélectionnez Object > Create pfile dans le menu principal. instance_name='dba01' *. Sa modification manuelle le rend inutilisable.db_name='dba01‘ *. .undo_tablespace='UNDOTBS' . Exemple de fichier SPFILE Les commentaires qui figurent sur les mêmes lignes que les paramètres dans le fichier PFILE sont mis à jour dans le fichier SPFILE. Le SPFILE est un fichier binaire.background_dump_dest=‘/home/dba01/ADMIN/BDUMP’ *. bien que son texte soit lisible sous Unix.compatible='9.0' *. Oracle9i Database Administration I 3-13 .0. 2001.Exemple de fichier SPFILE *.undo_management='AUTO' *.core_dump_dest=‘/home/dba01/ADMIN/CDUMP’ *.global_names=TRUE *.remote_login_passwordfile='exclusive‘ *. Tous droits réservés. exportez-le vers un fichier PFILE.db_domain=‘world’ *. Tous les autres commentaires sont ignorés.db_block_size=4096 *.java_pool_size=50000000’ *.control_files='/home/dba01/ORADATA/u01/ctrl01. .shared_pool_size=50000000 *.ctl’ *. Si vous devez consulter le contenu d'un fichier SPFILE ou y apporter des modifications. 3-13 Copyright © Oracle Corporation. ora PFILE par défaut • Vous pouvez modifier ces priorités si vous indiquez un PFILE : STARTUP PFILE = $ORACLE_HOME/dbs/initDBA1. pour démarrer la base de données. vous devez placer SPFILE=<full path and filename> dans le fichier PFILE. le fichier initSID. • Si aucun fichier SPFILE par défaut n'est détecté. SPFILE = /database/startup/spfileDBA1. Un fichier PFILE peut éventuellement contenir une définition précisant qu'un SPFILE doit être utilisé. Tous droits réservés. 2001. • Si aucun fichier spfileSID.ora • Un PFILE peut indiquer qu'un SPFILE doit être utilisé. Fonctionnement de la commande STARTUP Ordre des priorités : • Lorsque la commande STARTUP est utilisée.ora 3-14 Copyright © Oracle Corporation. Exemple : SPFILE=$HOME/ADMIN/PFILE/$ORACLE_SID.ora n'est détecté. Oracle9i Database Administration I 3-14 .ora côté serveur démarre l'instance. Il n'existe pas d'autre moyen de démarrer l'instance à l'aide d'un SPFILE qui ne se trouve pas à l'emplacement par défaut.Fonctionnement de la commande STARTUP • Ordre des priorités : – – – – spfileSID.ora SPFILE par défaut initSID.ora côté serveur est utilisé pour démarrer l'instance. le fichier spfileSID. le fichier SPFILE par défaut n'est pas utilisé pour démarrer l'instance. le fichier SPFILE par défaut côté serveur est utilisé pour démarrer l'instance. Dans ce cas.ora. Si vous indiquez un fichier PFILE. 2001. Modifier des paramètres du fichier SPFILE La commande ALTER SYSTEM SET permet de modifier la valeur des paramètres de l'instance. parameter_value désigne la nouvelle valeur du paramètre. SPFILE modifie la valeur du paramètre uniquement dans le fichier SPFILE. SID identifie le SID Oracle (ORACLE_SID) du fichier SPFILE utilisé. 3-15 Copyright © Oracle Corporation. BOTH modifie la valeur du paramètre dans l'instance en cours et dans le fichier SPFILE. Oracle9i Database Administration I 3-15 . SCOPE indique si la modification doit être apportée dans la mémoire. 'sid' désigne le SID spécifique à utiliser lors de la modification du fichier SPFILE. ALTER SYSTEM SET parameter_name = parameter_value [COMMENT 'text'] [SCOPE = MEMORY|SPFILE|BOTH] [SID= 'sid'|'*'] où : parameter_name correspond au nom du paramètre à modifier. • Indiquez si ces modifications sont temporaires ou persistantes : ALTER SYSTEM SET undo_tablespace = 'UNDO2' SCOPE=BOTH. '*' utilise le fichier SPFILE par défaut. COMMENT correspond à un commentaire à ajouter dans le fichier SPFILE.Modifier des paramètres du fichier SPFILE • Utilisez la commande ALTER SYSTEM pour apporter des modifications aux valeurs de paramètres : ALTER SYSTEM SET undo_tablespace = 'UNDO2'. MEMORY modifie la valeur du paramètre uniquement dans l'instance en cours. Tous droits réservés. en regard du paramètre modifié. dans le fichier SPFILE ou dans les deux. • Supprimez ou réinitialisez des valeurs : ALTER SYSTEM RESET undo_suppress_errors SCOPE=BOTH SID='*'. SQL> SHOW PARAMETERS undo_suppress_errors NAME undo_suppress_errors TYPE boolean VALUE TRUE ---------------------. Il existe plusieurs méthodes de suppression d'un paramètre du fichier SPFILE : • • • Utilisez la commande ALTER SYSTEM SET pour réinitialiser la valeur par défaut du paramètre afin de simuler une suppression. Recréez le fichier SPFILE à l'aide de la commande CREATE SPFILE FROM PFILE. Utilisez la commande ALTER SYSTEM RESET pour supprimer le paramètre du fichier SPFILE.----------. Oracle9i Database Administration I 3-16 .------- SQL> ALTER SYSTEM SET undo_suppress_errors = TRUE 2 COMMENT = ‘temporary testing’ SCOPE=BOTH 3 SID=‘DBA01’.Modifier des paramètres du fichier SPFILE (suite) Exemple : SQL> SHOW PARAMETERS undo_suppress_errors NAME undo_suppress_errors TYPE boolean VALUE FALSE ---------------------.----------.------- La commande ALTER SYSTEM RESET permet d'effectuer une suppression ou de rétablir la valeur par défaut. SQL> ALTER SYSTEM RESET parameter_name [SCOPE = MEMORY|SPFILE|BOTH] [SID= ‘sid’|’*’] Exemple : SQL> ALTER SYSTEM RESET undo_suppress_errors 2 SCOPE=BOTH SID=‘dba01’. Cliquez sur OK. 3. Modifiez un paramètre dans la colonne des valeurs. 2. procédez comme suit : 1. 5. 4.Modifier des paramètres du fichier SPFILE (suite) Utiliser Oracle Enterprise Manager pour modifier la configuration du fichier SPFILE A partir de la console OEM. Dans la page General. Cliquez sur Configuration. Sélectionnez Databases > Instance. cliquez sur All Initialization Parameters. Oracle9i Database Administration I 3-17 . Taille (en octets) de la zone de mémoire partagée. Taille du cache pour les blocs de taille standard Identificateur de base de données pouvant comporter jusqu'à 8 caractères. DBWn. Paramètres communément modifiés Paramètre IFILE Description Nom du fichier de paramètres à imbriquer dans le fichier de paramètres en cours. I 3-18 Oracle9i Database Administration LOG_BUFFER MAX_DUMP_FILE_SIZE PROCESSES SQL_TRACE TIMED_STATISTICS . Il est possible d'utiliser jusqu'à trois niveaux d'imbrication.). Emplacement de création des fichiers trace de débogage utilisateur pour un processus utilisateur. Il s'agit du seul paramètre obligatoire lors de la création d'une base de données. Active ou désactive la fonction trace SQL pour chaque session utilisateur. etc. Taille maximale des fichiers trace. Nombre maximal de processus du système d'exploitation pouvant se connecter simultanément à l'instance. Active ou désactive le moment du déclenchement dans les fichiers trace et sur les écrans de surveillance. COMPATIBLE CONTROL_FILES DB_CACHE_SIZE DB_NAME SHARED_POOL_SIZE USER_DUMP_DEST Remarque : Les valeurs par défaut varient selon la version du serveur Oracle.Paramètres à indiquer dans le fichier de paramètres d'initialisation Paramètre BACKGROUND_DUMP_DES T Description Emplacement d'écriture des fichiers trace de processus en arrière-plan (LGWR. Nom des fichiers de contrôle. exprimée en nombre de blocs du système d'exploitation. Version du serveur avec laquelle l'instance doit être compatible. Il s'agit également de l'emplacement du fichier d'alertes. Nombre d'octets alloués au tampon de journalisation (redo log buffer) dans la mémoire SGA. fichier initSID.ora. Les scénarios suivants décrivent les différentes étapes de démarrage d'une instance. • Le démarrage des processus d'arrière-plan. • L'affectation de la mémoire SGA. Démarrer une base de données Lorsque vous lancez la base de données.ora. La déclaration du paramètre PFILE avec STARTUP remplace les valeurs par défaut. Nommez la base de données à l'aide du paramètre DB_NAME dans le fichier de paramètres d'initialisation ou dans la commande STARTUP. Oracle9i Database Administration I 3-19 .ora. fichier spfile. – s'il n'est pas détecté. Tous droits réservés.log et des fichiers trace. • L'ouverture du fichier alertSID.Démarrer une base de données en mode NOMOUNT OPEN STARTUP MOUNT NOMOUNT Instance démarrée SHUTDOWN SHUTDOWN 3-19 Copyright © Oracle Corporation. vous sélectionnez son statut de démarrage. Le démarrage d'une instance comprend les tâches suivantes : • La lecture du fichier d'initialisation dans le répertoire $ORACLE_HOME/dbs dans l'ordre suivant : – fichier spfileSID. 2001. Démarrer l'instance (NOMOUNT) Le démarrage d'une instance en mode NOMOUNT ne s'effectue qu'à la création d'une base de données ou à la recréation de fichiers de contrôle. – s'il n'est pas détecté. C'est le cas. 2001. par exemple. Démarrer une base de données Monter la base de données (MOUNT) : Pour effectuer des opérations de maintenance. • effectuer une récupération complète de la base de données. pour les tâches suivantes : • renommer des fichiers de données. Toutefois.Démarrer une base de données en mode MOUNT OPEN STARTUP MOUNT Fichier de contrôle ouvert pour cette instance NOMOUNT Instance démarrée SHUTDOWN SHUTDOWN 3-20 Copyright © Oracle Corporation. Le montage d'une base de données comprend les tâches suivantes : • Association d'une base de données à une instance démarrée • Localisation et ouverture des fichiers de contrôle indiqués dans le fichier de paramètres • Lecture des fichiers de contrôle pour extraire le nom et le statut des fichiers de données et des fichiers de journalisation. Oracle9i Database Administration I 3-20 . • activer ou désactiver des options d'archivage de fichiers de journalisation. Tous droits réservés. vous démarrez une instance et montez une base de données sans l'ouvrir. l'existence des fichiers de données et des fichiers de journalisation en ligne n'est pas vérifiée à ce stade. Ainsi. comme indiqué par le fichier de contrôle de cette instance NOMOUNT Instance démarrée SHUTDOWN Fichier de contrôle ouvert pour cette instance SHUTDOWN 3-21 Copyright © Oracle Corporation. vous démarrez une instance avant de monter et d'ouvrir la base de données. Démarrer une base de données Ouvrir la base de données (OPEN) : En mode de fonctionnement normal. Au cours de cette dernière étape. L'ouverture de la base de données comprend les tâches suivantes : • Ouverture des fichiers de données en ligne • Ouverture des fichiers de journalisation en ligne Si un fichier de données ou de journalisation en ligne est absent lorsque vous tentez d'ouvrir la base de données. le processus d'arrière-plan SMON (System Monitor) déclenche la récupération de l'instance. 2001. Oracle9i Database Administration I 3-21 . les utilisateurs autorisés peuvent se connecter à la base et effectuer des opérations standard sur les données.Démarrer une base de données en mode OPEN OPEN STARTUP MOUNT Tous les fichiers sont ouverts. Si nécessaire. Tous droits réservés. le serveur Oracle vérifie que tous les fichiers de données et de journalisation en ligne peuvent être ouverts et contrôle la cohérence de la base de données. le serveur Oracle renvoie une erreur. Tous droits réservés.) Où : • OPEN permet aux utilisateurs d'accéder à la base de données. mais ne permet pas aux utilisateurs d'y accéder. 2001.ora 3-22 Copyright © Oracle Corporation. Commande STARTUP Pour démarrer une instance. • MOUNT monte la base de données pour certaines tâches d'administration. mais ne permet pas d'accéder à la base de données.Commande STARTUP Démarrez l'instance et ouvrez la base de données : STARTUP STARTUP PFILE=$ORACLE_HOME/dbs/initdb01. • PFILE=parfile permet de configurer l'instance à partir d'un fichier contenant des paramètres qui ne sont pas des paramètres par défaut. Oracle9i Database Administration I 3-22 . exécutez la commande suivante : STARTUP [FORCE] [RESTRICT] [PFILE=filename] [OPEN [RECOVER][database] |MOUNT |NOMOUNT] (Remarque : Cet exemple n'intègre pas l'ensemble de la syntaxe. • NOMOUNT crée la mémoire SGA et lance les processus d'arrière-plan. Remarque : STARTUP et SHUTDOWN sont des commandes SQL*Plus et non SQL. Oracle9i Database Administration I 3-23 . voir le guide d'installation de votre système d'exploitation.Démarrer (suite) • FORCE interrompt l'instance en cours. Remarque : Pour plus d'informations. puis exécute un démarrage normal • RESTRICT n'autorise l'accès à la base de données qu'aux utilisateurs disposant du privilège RESTRICTED SESSION • RECOVER lance la procédure de restauration physique au démarrage de la base de données Automatiser le démarrage de la base de données Sous UNIX : Le démarrage et l'arrêt automatiques de la base de données peuvent être contrôlés par les entrées d'un fichier spécial du système d'exploitation (par exemple. Dépannage Si vous rencontrez des erreurs à l'exécution de la commande STARTUP. le fichier oratab qui se trouve dans le répertoire /var/opt/oracle). vous devez d'abord lancer la commande SHUTDOWN avant de réexécuter la commande STARTUP. Oracle9i Database Administration I 3-24 . Cliquez sur Configuration. Cliquez sur Apply. 3. 2. Sélectionnez Databases > Instance. Dans l'onglet General.Options d'arrêt (suite) Utiliser Oracle Enterprise Manager pour démarrer une base de données A partir de la console OEM. vous devez disposer des privilèges SYSDBA. procédez comme suit : 1. Remarque : Pour démarrer une base de données. sélectionnez l'option Open. 4. Commande ALTER DATABASE Pour faire passer la base de données du statut NOMOUNT à MOUNT ou du statut MOUNT à OPEN. exécutez la commande suivante : ALTER DATABASE OPEN [READ WRITE| READ ONLY] Où : • READ WRITE : ouvre la base de données en lecture-écriture pour permettre aux utilisateurs de générer des fichiers de journalisation • READ ONLY : limite l'accès aux transactions en lecture seule et ne permet pas de générer des informations de journalisation Oracle9i Database Administration I 3-25 . exécutez la commande ALTER DATABASE : ALTER DATABASE { MOUNT | OPEN } Vous pouvez ouvrir la base de données en mode lecture seule pour éviter que des transactions utilisateur ne modifient des données. Tous droits réservés. Pour démarrer une instance.Commande ALTER DATABASE • Remplacez le statut NOMOUNT de la base de données par le statut MOUNT : ALTER DATABASE db01 MOUNT. 3-25 Copyright © Oracle Corporation. • Ouvrez la base de données en lecture seule : ALTER DATABASE db01 OPEN READ ONLY. 2001. procédez comme suit pour fermer toutes les sessions utilisateur actives avant d'effectuer des tâches administratives : ALTER SYSTEM KILL SESSION 'integer1. • DISABLE RESTRICTED SESSION désactive le privilège RESTRICTED SESSION pour que les utilisateurs qui ne le possèdent pas puissent se connecter. 3-26 Copyright © Oracle Corporation.integer2' Où : • integer1 correspond à la valeur de la colonne SID de la vue V$SESSION • integer2 correspond à la valeur de la colonne SERIAL# de la vue V$SESSION Oracle9i Database Administration I 3-26 . par exemple. Tous droits réservés.Ouvrir une base de données en mode d'accès restreint • Utilisez la commande STARTUP pour restreindre l'accès à une base de données : STARTUP RESTRICT • Utilisez la commande ALTER SYSTEM pour placer une instance en mode d'accès restreint : ALTER SYSTEM ENABLE RESTRICTED SESSION. Mettre fin à des sessions Après avoir placé une instance en mode d'accès restreint. Vous pouvez démarrer la base de données en mode restreint pour qu'elle ne soit accessible qu'aux utilisateurs disposant du privilège RESTRICTED SESSION. Ouvrir une base de données en mode d'accès restreint Une session en mode restreint s'avère utile. 2001. Vous pouvez également mettre la base de données en mode d'accès restreint à l'aide de la commande SQL ALTER SYSTEM : ALTER SYSTEM [ {ENABLE|DISABLE} RESTRICTED SESSION ] Où : • ENABLE RESTRICTED SESSION accepte uniquement les connexions ultérieures des utilisateurs disposant du privilège RESTRICTED SESSION. lors de la mise à jour des structures ou de l'import/export d'une base de données. même si l'utilisateur se déconnecte et qu'une nouvelle session est ouverte sous le même ID de session. Conséquences de la fin d'une session A l'exécution de la commande ALTER SYSTEM KILL SESSION.Ouvrir une base de données en mode d'accès restreint (suite) Remarque : L'ID de session et le numéro de série permettent d'identifier une session de façon unique. le processus d'arrièreplan PMON effectue les tâches suivantes : • Annulation de la transaction en cours de l'utilisateur • Libération de tous les verrous de table ou de ligne • Libération de toutes les ressources réservées par l'utilisateur Oracle9i Database Administration I 3-27 . Cette unicité garantit que la commande ALTER SYSTEM KILL SESSION est appliquée à la session appropriée. Dans la boîte de dialogue Shutdown Options qui s'affiche. 7. Remarque : Pour effectuer cette procédure. Dans Instance State. Sélectionnez la page General. 2. Sélectionnez OK. sélectionnez l'option Shutdown. 3. 9.Options d'arrêt (suite) Utiliser Oracle Enterprise Manager pour ouvrir une base de données en mode d'accès restreint A partir de la console OEM. Sélectionnez Close lorsque le traitement est terminé. sélectionnez l'option Restrict access to database. Oracle9i Database Administration I 3-28 . sélectionnez l'option Immediate. Sélectionnez OK. Dans Instance State. 8. vous devez disposer des privilèges SYSDBA. 10. Sélectionnez Instance > Configuration. 12. 6. Sélectionnez Apply. 5. 11. 4. procédez comme suit : 1. Sélectionnez OK. Dans la boîte de dialogue Startup Options qui s'affiche. sélectionnez l'option Open. Cliquez sur Close lorsque le traitement est terminé. Remarque : Les tablespaces gérés localement sont traités dans un autre chapitre. 3-29 Copyright © Oracle Corporation. Pour qu'une interrogation devant utiliser un tablespace temporaire (par exemple. Cette fonctionnalité est particulièrement utile lorsqu'une base de données de secours doit décharger la base de données de production du traitement des interrogations. Tous droits réservés. Ainsi. mais pas des tablespaces. 2001. – d'exécuter des tris sur disque à l'aide de tablespaces gérés localement. Les opérations d'écriture sur disque portant sur d'autres fichiers. peuvent se poursuivre en mode lecture seule. • les fichiers de données et les tablespaces hors ligne peuvent être récupérés. en mode lecture seule : • les fichiers de données peuvent être mis hors ligne (offline) et en ligne (online). tels que les fichiers de contrôle. L'utilisateur SYS doit disposer d'un tablespace géré localement. Oracle9i Database Administration I 3-29 .Ouvrir une base de données en mode lecture seule • Ouvrir une base de données en mode lecture seule STARTUP MOUNT ALTER DATABASE OPEN READ ONLY. – de récupérer des fichiers de données et des tablespaces hors ligne. • Une base de données en lecture seule permet : – d'exécuter des interrogations. pour les tris sur disque) aboutisse. Ouvrir une base de données en mode lecture seule Vous pouvez ouvrir une base de données en lecture seule si elle n'est pas déjà ouverte en mode lecture-écriture. Le mode lecture seule ne limite ni la fonction de récupération de la base de données. les traces d'audit du système d'exploitation. les fichiers trace et les fichiers d'alertes. l'utilisateur en cours doit disposer d'un tablespace géré localement et affecté en tant que tablespace temporaire par défaut. ni les opérations de modification de son statut sans génération de données de journalisation. – de mettre des fichiers de données hors ligne et en ligne. 3. Sélectionnez OK. Sélectionnez OK. sélectionnez l'option Read Only Mode. 9. 8. sélectionnez l'option Immediate. 4. 12. sélectionnez l'option Shutdown. Sélectionnez Apply. Cliquez sur Close lorsque le traitement est terminé. procédez comme suit : 1. Dans Instance State. Sélectionnez OK. Remarque : Pour effectuer cette procédure. 10. Sélectionnez la page General. Dans la boîte de dialogue Startup Options qui s'affiche. 6. 11. Dans Instance State.Options d'arrêt (suite) Utiliser Oracle Enterprise Manager pour démarrer une base de données en mode lecture seule A partir de la console OEM. Sélectionnez Close lorsque le traitement est terminé. sélectionnez l'option Open. 5. 2. vous devez disposer des privilèges SYSDBA. Oracle9i Database Administration I 3-30 . Sélectionnez Instance > Configuration. 7. Dans la boîte de dialogue Shutdown Options qui s'affiche. 2001.Arrêter la base de données Mode d'arrêt Permet de nouvelles connexions Attend la fin des sessions en cours Attend la fin des transactions en cours Applique un point de reprise et ferme les fichiers A I T N Non Non Non Non Non Non Non Oui Non Non Oui Non Oui Oui Oui Oui Mode d'arrêt : • A = ABORT • I = IMMEDIATE • T = TRANSACTIONAL • N = NORMAL 3-31 Copyright © Oracle Corporation. connectez-vous en tant que SYSOPER ou SYSDBA et utilisez la commande suivante : SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ] Oracle9i Database Administration I 3-31 . Arrêter la base de données Arrêtez la base de données pour effectuer la sauvegarde hors ligne de toutes les structures physiques via le système d'exploitation et pour que les modifications appliquées aux paramètres d'initialisation statiques soient effectives au redémarrage. Pour arrêter une instance. Tous droits réservés. • La fin de toutes les transactions entraîne l'arrêt immédiat de la base de données. • La récupération de l'instance n'est pas nécessaire lors du redémarrage. Transactional ou Immediate Phase d'arrêt : • Le cache de tampons de la base de données est écrit dans les fichiers de données • Les modifications non validées sont annulées • Les ressources sont libérées Phase de redémarrage : • Aucune récupération d'instance Base de données cohérente (base "propre") 3-32 Copyright © Oracle Corporation. • Oracle ferme et démonte la base de données avant d'arrêter l'instance. • Les processus d'arrière-plan prennent fin et la zone SGA est supprimée de la mémoire. Arrêt en mode Transactional L'arrêt en mode Transactional évite aux clients de perdre leurs travaux en cours. Il s'effectue dans les conditions suivantes : • Aucun client ne peut lancer de nouvelle transaction pour l'instance indiquée. Tous droits réservés. Oracle9i Database Administration I 3-32 . Options d'arrêt Effectuez un arrêt en mode Normal : Le mode Normal est le mode d'arrêt par défaut. • Le serveur Oracle attend la déconnexion préalable de tous les utilisateurs. Il s'effectue dans les conditions suivantes : • Aucune nouvelle connexion ne peut être établie. • Le client est déconnecté lorsqu'il termine la transaction en cours. 2001.Options d'arrêt Arrêt en mode Normal. • Les tampons de journalisation et de la base de données sont écrits sur disque. • La récupération de l'instance n'est pas nécessaire lors du redémarrage. • Oracle annule les transactions actives et déconnecte tous les utilisateurs. Oracle9i Database Administration I 3-33 . • Oracle ferme et démonte la base de données avant d'arrêter l'instance.Options d'arrêt (suite) Arrêt en mode Immediate L'arrêt en mode Immediate s'effectue dans les conditions suivantes : • Les instructions SQL en cours de traitement par Oracle ne sont pas terminées. • Le serveur Oracle n'attend pas la déconnexion des utilisateurs de la base de données. • La récupération de l'instance n'est pas nécessaire lors du redémarrage. Tous droits réservés.Options d'arrêt Arrêt en Phase de redémarrage : Phase d'arrêt : mode Abort. • Les tampons de journalisation et de la base de données ne sont pas écrits sur disque. • Oracle n'attend pas la déconnexion des utilisateurs de la base de données. vous pouvez abandonner l'instance de base de données en cours. Cette opération s'effectue dans les conditions suivantes : • Les instructions SQL en cours de traitement par le serveur Oracle sont immédiatement interrompues. • L'instance est interrompue sans fermeture des fichiers. • Les fichiers de • Les mémoires échec d'instance journalisation tampon modifiées ou permettent de ne sont pas écrites démarrage forcé réappliquer les dans les fichiers de modifications données • Des segments • Les modifications d'annulation sont non validées ne utilisés pour annuler sont pas annulées les modifications non validées • Les ressources sont libérées Base de données incohérente (base non "propre") 3-34 Copyright © Oracle Corporation. elle s'effectue automatiquement. Remarque : Il n'est pas conseillé de sauvegarder une base de données incohérente. • Une récupération est nécessaire au redémarrage . Oracle9i Database Administration I 3-34 . Options d'arrêt Arrêt en mode Abort Si les arrêts en modes Normal et Immediate échouent. ni démontée. • La base de données n'est pas fermée. • Les transactions non validées ne sont pas annulées. 2001. sélectionnez l'option Open. Oracle9i Database Administration I 3-35 . vous devez disposer des privilèges SYSDBA.Options d'arrêt (suite) Utiliser Oracle Enterprise Manager pour arrêter une base de données A partir de la console OEM. 3. Cliquez sur Configuration. Sélectionnez Databases > Instance. Remarque : Pour arrêter une base de données. procédez comme suit : 1. Cliquez sur Apply. Dans l'onglet General. 2. 4. PMON. • Fichier alertSID. Leur type varie en fonction de l'incident qui se produit ou des informations qui doivent être délivrées. 2001. Ils s'avèrent également utiles pour la gestion des instances. Tous droits réservés.) Fichiers trace utilisateur : Informations essentielles en cas d'erreurs utilisateur fatales ou de fichiers d'une trace forcée par l'utilisateur. – permettent d'améliorer la gestion quotidienne de la base de données. – permettent de résoudre des incidents. DBWn. • Ils peuvent être de plusieurs types : – Fichiers alertSID. • Oracle9i Database Administration I 3-36 .log : Informations destinées au fonctionnement quotidien de la base de données • Fichiers trace de processus en arrière-plan (background process) : Informations essentielles en cas d'échec des processus d'arrière-plan (SMON. etc.Surveiller une instance à l'aide de fichiers de diagnostic • Les fichiers de diagnostic : – contiennent des informations relatives aux événements significatifs qui se sont produits.log – Fichiers trace de processus en arrière-plan – Fichiers trace utilisateur 3-36 Copyright © Oracle Corporation. Surveiller une instance à l'aide de fichiers de diagnostic Les fichiers de diagnostic permettent de capturer des informations relatives aux activités de la base de données. Consultez le fichier d'alertes dès que vous devez diagnostiquer des opérations quotidiennes ou des erreurs. 2001. • Chaque entrée est associée à un horodatage. Vous êtes responsable de la gestion de ce fichier dont la taille augmente lors de l'utilisation de la base de données. Tous droits réservés. – conserve quotidiennement des informations opérationnelles. 3-37 Copyright © Oracle Corporation.log : – enregistre les commandes. par exemple. Ce fichier contient également des pointeurs sur des fichiers trace qui délivrent des informations plus détaillées. – enregistre les résultats des principaux événements. les messages d'erreur de type ORA-600 ou relatifs aux extents (ensemble de blocs contigus) Oracle9i Database Administration I 3-37 . • Il doit être géré par l'administrateur de base de données. Le fichier d'alertes conserve un enregistrement des informations suivantes : • Date/heure d'arrêt ou de démarrage de la base de données • Liste de tous les paramètres d'initialisation qui ne sont pas des paramètres par défaut • Démarrage des processus d'arrière-plan • Thread utilisé par l'instance • Numéro de séquence du journal utilisé par le processus LGWR (Log Writer) • Informations relatives à un changement de fichier de journalisation • Création de tablespaces et de segments d'annulation • Instructions ALTER émises • Informations concernant. • Son emplacement est défini par le paramètre BACKGROUND_DUMP_DEST. il est créé au démarrage de l'instance. – établit le diagnostic des erreurs de la base de données. Au besoin. Fichier d'alertes Chaque instance Oracle possède un fichier d'alertes.Fichier d'alertes • Le fichier alertSID. Fichiers d'alertes (suite) L'emplacement du fichier alert_SID. Oracle9i Database Administration I 3-38 .log est défini par le paramètre d'initialisation BACKGROUND_DUMP_DEST. un fichier trace de processus en arrière-plan contient des informations d'en-tête précisant le numéro de version du serveur de données et du système d'exploitation. tel que SMON. 3-39 Copyright © Oracle Corporation. • Ils sont créés lorsqu'un processus d'arrière-plan détecte une erreur. • Leur emplacement est défini par le paramètre BACKGROUND_DUMP_DEST.trc).Fichiers trace de processus en arrière-plan • Les fichiers trace de processus en arrière-plan : – consignent les erreurs détectées par les processus d'arrière-plan. Oracle9i Database Administration I 3-39 . Ils ne sont créés que lorsqu'une erreur exige une écriture dans les fichiers trace. 2001. – permettent de diagnostiquer et de corriger les erreurs. Fichiers trace de processus en arrière-plan Les fichiers trace de processus en arrière-plan permettent de consigner des erreurs détectées par un processus d'arrière-plan. A sa création. Leur emplacement est défini par le paramètre d'initialisation BACKGROUND_DUMP_DEST. Utilisez-les pour diagnostiquer et résoudre des problèmes. PMON ou DBWn.trc (db01_lgwr_23845. Tous droits réservés. Convention d'appellation des fichiers trace utilisateur : sid_processname_PID. des messages d'erreur utilisateur. qui sont particulièrement utiles pour le réglage (tuning) SQL. Ils contiennent. Leur emplacement est défini par le paramètre d'initialisation USER_DUMP_DEST.Fichier trace utilisateur • Les fichiers trace utilisateur : – sont créés par le processus utilisateur. – peuvent être générés par un processus serveur.trc(db01_ora_23845. 3-40 Copyright © Oracle Corporation. • Ce type de fichier est créé lorsqu'un utilisateur rencontre des erreurs au cours d'une session. – contiennent des statistiques destinées aux instructions SQL tracées. Convention d'appellation des fichiers trace utilisateur : sid_ora_PID. Oracle9i Database Administration I 3-40 . • Sa taille est définie par le paramètre MAX_DUMP_FILE_SIZE. – contiennent des messages d'erreur utilisateur. en outre. • Son emplacement est défini par le paramètre USER_DUMP_DEST.trc). 2001. Fichiers trace utilisateur Les fichiers trace utilisateur contiennent des statistiques destinées aux instructions SQL tracées. Tous droits réservés. SET_SQL_TRACE_IN_SESSION • Niveau instance : – A l'aide du paramètre d'initialisation : SQL_TRACE = TRUE 3-41 Copyright © Oracle Corporation. La fonction de trace utilisateur est décrite en détail dans le cours Oracle9i SQL Statement Tuning. 2001. Oracle9i Database Administration I 3-41 . Activer ou désactiver la fonction de trace utilisateur Remarque : La déclaration du paramètre SQL_TRACE=TRUE au niveau instance génère un volume important de données de trace. Tous droits réservés. Utilisez cette option avec précaution.Activer ou désactiver la fonction de trace utilisateur • Niveau session : – A l'aide de la commande ALTER SESSION : ALTER SESSION SET SQL_TRACE = TRUE – A l'aide de la procédure SGBD : dbms_system. Sélectionnez All Initialization Parameters dans la page General. 3. Oracle9i Database Administration I 3-42 . procédez comme suit : 1. Sélectionnez Databases > Instance > Configuration. Définissez le paramètre SQL_TRACE = TRUE. 4. Sélectionnez OK.Activer ou désactiver la fonction de trace utilisateur Utiliser Oracle Enterprise Manager pour activer ou désactiver la fonction de trace utilisateur A partir de la console OEM. 2. Oracle9i Database Administration I 3-43 . 2001. Tous droits réservés.Synthèse Ce chapitre vous a permis d'apprendre à : • créer et gérer des fichiers de paramètres d'initialisation • démarrer et arrêter une instance • surveiller et utiliser des fichiers de diagnostic 3-43 Copyright © Oracle Corporation. vous allez : • créer un fichier SPFILE • démarrer et arrêter la base de données dans différents modes 3-44 Copyright © Oracle Corporation. 2001. Présentation de l'exercice 3 Remarque : Cet exercice peut être réalisé avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet. Tous droits réservés.Présentation de l'exercice 3 Dans cet exercice. Oracle9i Database Administration I 3-44 . créez un fichier SPFILE à partir d'un fichier PFILE. Que se passe-t-il dans la session de HR ? Que se passe-t-il dans celle de SYS ? 7 a Connectez-vous en tant qu'utilisateur SYS. puis ouvrez-la en mode lecture seule. activez la session en mode restreint. Remarque : Conservez les sessions SQL*Plus de SYS et de HR ouvertes. ‘Mars’). Placez le fichier SPFILE dans le répertoire $HOME/ADMIN/PFILE en lui affectant un nom au format spfileSID. L'opération aboutit-elle ? Quittez la session. Connectez-vous en tant qu'utilisateur SYS AS SYSDBA. 2 Une fois la base de données arrêtée. puis quittez. 4 Connectez-vous en tant qu'utilisateur SYS. Créez le fichier SPFILE à partir du fichier PFILE qui se trouve dans le répertoire $HOME/ADMIN/PFILE. b Démarrez une autre session en tant qu'utilisateur HR. puis insérez une ligne dans la table REGIONS en utilisant la syntaxe suivante :INSERT INTO regions VALUES (5. puis démarrez la base de données à l'aide du fichier SPFILE. INSERT INTO regions VALUES ( 5. 3 Affichez le fichier SPFILE depuis le système d'exploitation. Que se passe-t-il ? c Réaffectez à la base de données le mode lecture-écriture. d Sous l'ID utilisateur HR. ‘Mars’ ). puis reconnectez-vous sous l'ID utilisateur HR. 6 a Connectez-vous en tant qu'utilisateur HR avec le mot de passe HR. c Annulez l'insertion dans la session de HR. désactivez la session en mode restreint. puis procédez à un arrêt en mode Transactional. puis arrêtez la base. effectuez une sélection (SELECT) dans la table REGIONS. puis insérez la ligne suivante dans la table REGIONS. Ne validez pas et ne quittez pas la session. b Connectez-vous en tant qu'utilisateur HR avec le mot de passe HR. 5 a Arrêtez la base de données.Exercice 3 : Gérer une instance Oracle 1 Connectez-vous à la base de données en tant qu' utilisateur SYS. puis démarrez la base de données. Oracle9i Database Administration I 3-45 . Que se passe-t-il ? e Sous l'ID utilisateur SYS. b Démarrez SQL*Plus dans une nouvelle session Telnet. c Sous l'ID utilisateur SYS.ora (où SID correspond au nom de votre instance). Créer une base de données Copyright © Oracle Corporation. 2001. . Tous droits réservés. Tous droits réservés. vous pourrez : • identifier les conditions préalables à la création d'une base de données • créer une base de données à l'aide d'Oracle Database Configuration Assistant • créer manuellement une base de données • créer une base de données à l'aide d'OracleManaged Files 4-2 Copyright © Oracle Corporation. Oracle9i Database Administration I 4-2 .Objectifs A la fin de ce chapitre. 2001. 2001. Vous pouvez également utiliser un utilitaire de migration. La création d'une base de données permet de préparer plusieurs fichiers du système d'exploitation et ne s'effectue qu'une seule fois. Une fois que vous avez déterminé la fonction et le type de la base. Par exemple : comment les fichiers de données. Tous droits réservés. Lors de la migration à partir d'une ancienne version d'Oracle. nombreux traitements des transactions en ligne ou fonction générale). Planifier et organiser une base de données La planification d'une base de données constitue la première étape d'organisation et d'implémentation d'un système de base de données. vous devez définir l'architecture à utiliser. Vous devez d'abord définir de quelle manière la base sera utilisée afin de déterminer le type de base à créer pour répondre aux besoins de votre organisation (data warehouse. Oracle9i Database Administration I 4-3 . 4-3 Copyright © Oracle Corporation. la création d'une base de données n'est nécessaire que si vous avez besoin d'une base entièrement nouvelle. quel que soit le nombre de fichiers de données figurant dans la base. Oracle Data Migration Assistant est un outil conçu pour vous assister dans la migration de votre système de base de données actuel. vous devez choisir un nom et un nom d'identification système pour votre base de données. de contrôle et de journalisation (redo log) seront-ils organisés et stockés ? L'architecture OFA (Optimal Flexible Architecture) d'Oracle vous permet d'organiser la structure des fichiers de votre base de données et leurs emplacements. Une fois que vous avez défini votre architecture.Gérer et organiser une base de données • La planification d'une base de données constitue la première étape de la procédure de gestion d'un système de base de données – Définissez la fonction de la base de données – Définissez le type de la base de données – Définissez la conception de l'architecture de la base de données – Choisissez le nom de la base de données • Créez la base de données • Oracle Data Migration Assistant permet de migrer d'une version de la base de données à une autre plus récente. les fichiers journaux et les fichiers d'administration peuvent être installés sur plusieurs disques. • Oracle9i Database Administration I 4-4 . Elle permet d'identifier facilement les fichiers de contrôle. 4-4 Copyright © Oracle Corporation. Elle améliore les performances en réduisant la contention sur les disques pour les fichiers de données. Tous droits réservés. 2001. de journalisation et de données. Elle facilite l'administration de plusieurs répertoires d'origine Oracle Home sur une même machine en répartissant les fichiers sur des unités de disque et dans des répertoires différents. – Optimiser la fiabilité et les performances de la base de données en plaçant ses composants sur des disques différents. les fichiers binaires et les fichiers d'administration qui peuvent désormais résider dans des répertoires et sur des disques différents. les fichiers de contrôle. – Placer les objets présentant des comportements différents dans des tablespaces distincts. Les fichiers binaires. Architecture OFA (Optimal Flexible Architecture) L'installation et la configuration sur toutes les plates-formes prises en charge sont désormais conformes à l'architecture OFA. Cette architecture organise les fichiers de base de données en fonction de leur type et de leur utilisation.Architecture OFA • L'architecture OFA correspond à la présentation standard recommandée pour l'architecture de base de données d'Oracle • Elle repose sur trois règles principales : – Créer une structure de répertoires permettant de stocker n'importe quel fichier de base de données sur n'importe quel disque. Une convention d'appellation cohérente offre les avantages suivants : • • • Elle permet de différencier les fichiers de base de données des autres fichiers. Fichiers /product /release_number /bin /dbs /rdbms /sqlplus /admin /inst_name /pfile 4-5 Copyright © Oracle Corporation.ctl redo0101. Tous droits réservés.ctl redo0101.dbf control01. db02/ system01. l'installation de matériel supplémentaire et la répartition de la charge des entrées/sorties sur un nombre suffisant d'unités. Architecture OFA L'installation et la création d'une base de données présentent un autre point important à prendre en compte : l'organisation du système de fichiers en vue de faciliter la gestion de l'évolutivité du système par l'ajout de données à la base existante.log .. l'ajout d'utilisateurs.. la création de nouvelles bases de données. Emplacements dans le logiciel Oracle L'arborescence figurant dans la diapositive présente un exemple de base de données conforme à l'architecture OFA..Logiciel Oracle et emplacements des fichiers oracle_base Logiciel oradata/ db01/ system01. 2001.dbf control01..log . Oracle9i Database Administration I 4-5 . • Un espace disque suffisant pour recevoir la base de données prévue. Pour plus d'informations. Tous droits réservés. authentifié : – par le système d'exploitation. les fichiers de contrôle et les fichiers de données. vous devez disposer des éléments suivants : • Un compte disposant de privilèges.Conditions préalables à la création d'une base de données Pour créer une base de données. 2001. consultez les guides d'installation et d'administration de votre système d'exploitation. Avant de créer la base de données. Calculez l'espace disque nécessaire pour la base de données. assurez-vous que vous disposez d'une quantité de mémoire suffisante pour la mémoire SGA. • Une quantité de mémoire suffisante pour démarrer l'instance. 4-6 Copyright © Oracle Corporation. y compris pour les fichiers de journalisation en ligne. – à l'aide d'un fichier de mots de passe. Ceux-ci sont accordés via l'authentification par le système d'exploitation ou par un fichier de mots de passe. l'exécutable Oracle et les processus. Conditions préalables à la création d'une base de données Vous devez disposer des privilèges SYSDBA pour créer une base de données. Oracle9i Database Administration I 4-6 . Tous droits réservés. 2001. vous pouvez choisir d'authentifier les administrateurs par le système d'exploitation ou à l'aide d'un fichier de mots de passe. Remarque : Pour plus d'informations sur l'authentification par le système d'exploitation.Méthodes d'authentification utilisées par les administrateurs de base de données Administration distante de la base de données Administration locale de la base de données Oui Disposez-vous d'une connexion sécurisée ? Oui Souhaitezvous utiliser l'authentification par le système d'exploitation ? Non Utilisez l'authentification par le système d'exploitation Non Utilisez un fichier de mots de passe 4-7 Copyright © Oracle Corporation. consultez la documentation relative à votre système d'exploitation. Oracle9i Database Administration I 4-7 . Méthodes d'authentification utilisées par les administrateurs de base de données Selon que vous souhaitez administrer la base de données localement sur la machine sur laquelle elle est installée ou administrer plusieurs serveurs de bases de données à partir d'un client distant. Oracle9i Database Administration I 4-8 . voir le chapitre "Gérer les privilèges". Utiliser l'authentification par le fichier de mots de passe Oracle fournit un utilitaire de gestion des mots de passe. la connexion s'effectue sous le schéma PUBLIC. la connexion s'effectue sous le schéma SYS et non sous le schéma associé à votre nom utilisateur. 4-8 Copyright © Oracle Corporation. via des commandes GRANT spéciales. Les utilisateurs disposant de privilèges peuvent accéder à la base de données en utilisant le fichier de mots de passe. qui permet de créer un fichier de mots de passe. Remarque : Pour plus d'informations sur l'octroi de privilèges. Avec SYSOPER.Utiliser l'authentification par le fichier de mots de passe • Créez le fichier de mots de passe à l'aide de l'utilitaire de gestion des mots de passe $ orapwd file=$ORACLE_HOME/dbs/orapwU15 password=admin entries=5 • Définissez REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE dans le fichier de paramètres d'initialisation • Ajoutez des utilisateurs au fichier de mots de passe • Affectez des privilèges appropriés à chaque utilisateur GRANT SYSDBA TO HR. Lorsque vous vous connectez avec le privilège SYSDBA. orapwd. 2001. Tous droits réservés. Avec un fichier EXCLUSIVE. vous pouvez accorder des privilèges SYSDBA ou SYSOPER à des utilisateurs individuels. Affectez la valeur EXCLUSIVE au paramètre REMOTE_LOGIN_PASSWORDFILE. Créez le fichier de mots de passe à l'aide de l'utilitaire orapwd.Utiliser l'authentification par le fichier de mots de passe (suite) Utiliser un fichier de mots de passe : 1. N'insérez pas d'espaces avant ni après le signe égal (=). Oracle9i Database Administration I 4-9 . Il est préférable de définir un nombre élevé. CONNECT sys/admin AS SYSDBA Emplacement des fichiers de mots de passe : Sous Unix : $ORACLE_HOME/dbs Sous NT : %ORACLE_HOME%/database Gérer le fichier de mots de passe : Supprimez le fichier de mots de passe à l'aide des commandes du système d'exploitation et créez-en un à l'aide de l'utilitaire de gestion des mots de passe. Exemple : orapwd file=$ORACLE_HOME/dbs/orapwU15 password=admin entries=5 Où : filename : $ORACLE_HOME/dbs/orapwU15 password : admin entries : 5 2. entries correspond au nombre maximum d'utilisateurs autorisés à se connecter en tant que SYSDBA ou SYSOPER. orapwd file=filename password=password entries=max_users Où : filename correspond au nom du fichier de mots de passe (obligatoire). Connectez-vous à la base de données à l'aide du fichier de mots de passe créé précédemment. Si ce nombre est dépassé. Où : EXCLUSIVE indique qu'une seule instance peut utiliser le fichier de mots de passe et que ce dernier contient des noms autres que SYS. 3. vous devez créer un nouveau fichier de mots de passe. password correspond au mot de passe de SYSOPER et SYSDBA (obligatoire). • d'Oracle Database Configuration Assistant. d'Oracle Database Configuration Assistant (DBCA) ou en créant un script SQL avec la commande CREATE DATABASE. – – – – Interface utilisateur Base Java Lancé par Oracle Universal Installer Peut être utilisé en mode autonome • de la commande CREATE DATABASE. Si vous utilisez une version antérieure du logiciel Oracle. qui peut créer automatiquement une base de données de départ. Créer une base de données Vous pouvez créer une base de données automatiquement lors de l'installation d'Oracle9i à l'aide d'Oracle Universal Installer. DBCA est une interface utilisateur qui entre en interaction avec Oracle Universal Installer ou que vous pouvez utiliser de façon autonome pour simplifier la création d'une base de données. Tous droits réservés. Oracle Universal Installer lance DBCA.Créer une base de données Vous pouvez créer une base de données à l'aide : • d'Oracle Universal Installer. vous pouvez également migrer ou mettre à niveau une base de données existante. 4-10 Copyright © Oracle Corporation. Au cours de l'installation du serveur Oracle. Oracle9i Database Administration I 4-10 . vous pouvez donc utiliser DBCA. Pour créer une base. 2001. Cette interface à base Java peut être lancée depuis n'importe quelle plate-forme à l'aide d'un moteur Java. créer une base de départ ou lancer DBCA ultérieurement en tant qu'application autonome. 2001.1. Exemple : /u01/app/oracle/product/9. L'OFA recommande le répertoire $ORACLE_BASE/product/release. Tous droits réservés. configurez correctement l'environnement du système d'exploitation. Les exécutables Oracle9i se trouvent dans le répertoire $ORACLE_HOME/bin et doivent être ajoutés à la variable PATH. Environnement du système d'exploitation Avant de créer une base de données manuellement ou à l'aide de Database Configuration Assistant.Environnement du système d'exploitation Définissez les variables d'environnement suivantes : • ORACLE_BASE • ORACLE_HOME • ORACLE_SID • ORA_NLS33 • PATH • LD_LIBRARY_PATH 4-11 Copyright © Oracle Corporation. Exemple : $ORACLE_HOME/lib Oracle9i Database Administration I 4-11 .1 ORACLE_SID : nom de l'instance. LD_LIBRARY_PATH : répertoires des fichiers du système d'exploitation et de la bibliothèque Oracle. qui doit être unique pour les instances Oracle s'exécutant sur la même machine ORA_NLS33 : variable obligatoire lors de la création d'une base de données n'utilisant pas le jeu de caractères US7ASCII Exemple : $ORACLE_HOME/ocommon/nls/admin/data PATH : répertoires dans lesquels le système d'exploitation recherche des exécutables tels que SQL*Plus. ORACLE_BASE : répertoire situé le plus haut dans l'arborescence des différentes versions des produits Oracle Exemple : /u01/app/oracle ORACLE_HOME : répertoire dans lequel une des versions des produits Oracle est installée. voir l'aide en ligne d'Oracle Database Configuration Assistant. Tous droits réservés. Vous pouvez également utiliser la base de données existante pour créer une base ou un modèle.Database Configuration Assistant Database Configuration Assistant vous permet de : • créer une base de données • configurer des options de base de données • supprimer une base de données • gérer des modèles – créer un modèle à l'aide de paramètres prédéfinis – créer un modèle à partir d'une base de données existante – supprimer un modèle de base de données 4-12 Copyright © Oracle Corporation. Database Configuration Assistant A partir de la version Oracle9i. Les paramètres de la base de données sont stockés au format XML. si nécessaire Pour plus d'informations sur les modèles. 2001. vous pouvez gérer des modèles dont certains sont prédéfinis. Avantages liés à l'utilisation de modèles : • • • Gain de temps lors de la création de la base de données Possibilité de partager les modèles Possibilité de modifier des options de la base de données. Oracle9i Database Administration I 4-12 . Tous les fichiers journaux et de contrôle sont automatiquement créés et vous pouvez ajouter/supprimer des fichiers de contrôle et des fichiers journaux et modifier la destination et le nom des fichiers de données. Vous pouvez créer les modèles avec ou sans fichiers de données. – Sans fichiers de données : le modèle ne contiendra que la structure de la base de données. • • Sélectionnez l'option Create a Database. des tablespaces ou des segments d'annulation. Sélectionnez le type de base de données à créer à partir de la liste de modèles prédéfinis. Les paramètres d'initialisation ne peuvent pas être modifiés. – Avec des fichiers de données : le modèle contiendra la structure et les fichiers de données physiques de la base de données. Oracle9i Database Administration I 4-13 . Vous ne pouvez pas ajouter ou supprimer des fichiers de données. 2001. – Data warehouse – Fonction générale – Nouvelle base de données – Traitement des transactions Utilisez l'option Show Details pour visualiser ce que vous allez créer. Tous droits réservés. Vous pouvez indiquer et modifier tous les paramètres de la base. Créer une base de données à l'aide de Database Configuration Assistant • Lancez Database Configuration Assistant : Programs > Oracle-OraHome90 > Configuration and Migration Tools > Database Configuration Assistant.Créer une base de données à l'aide de Database Configuration Assistant • Sélectionnez le type de base de données à créer à partir de modèles prédéfinis • Précisez le SID et le nom global de base de données • Sélectionnez les fonctionnalités à utiliser dans la base de données • Identifiez les scripts à exécuter après la création de la base de données • Sélectionnez le mode de fonctionnement de la base de données 4-13 Copyright © Oracle Corporation. par exemple : – Oracle Spatial – Oracle OLAP Services – Exemples de schémas Les exemples de schémas contiennent des scripts destinés aux types de table suivants : Human Resources Order Entry Product Media Sales History Shipping • • Identifiez les scripts à exécuter après la création de la base de données. – Mode serveur dédié – Mode serveur partagé Oracle9i Database Administration I 4-14 .Créer une base de données (suite) • Précisez un SID et un nom global de base de données. • Sélectionnez les fonctions que vous souhaitez utiliser dans votre base. Sélectionnez le mode de fonctionnement de la base de données. Cette option est réservée aux administrateurs familiarisés avec les procédures avancées de création de bases. selon vos besoins • Sélectionnez une option de création de base de données 4-15 Copyright © Oracle Corporation. SORT_AREA_SIZE correspond à la quantité maximale de mémoire utilisée pour les opérations de tri. Vous pouvez choisir l'un des environnements de fonctionnement suivants pour la base de données : Online Transaction Processing (OLTP). Vous ne pouvez préciser la taille des blocs de données qu'à la création de la base.Créer une base de données à l'aide de Database Configuration Assistant • Indiquez les options relatives à la mémoire. Multipurpose et Data Warehousing. – Oracle9i Database Administration I 4-15 . à l'archivage. DB Sizing Cette option permet de définir les tailles de bloc et de zone de tri de la base de données. Tous droits réservés. L'option Custom vous permet de personnaliser la création de la base de données. 2001. – Archive Cette option place la base de données en mode ARCHIVELOG et permet l'archivage des fichiers de journalisation (fichiers redo log) avant leur réutilisation. au dimensionnement de la base de données et à l'emplacement des fichiers • Définissez les paramètres de stockage de la base de données • Modifiez les variables relatives à l'emplacement des fichiers. Créer une base de données à l'aide de Database Configuration Assistant • Définissez les options suivantes : – Memory Sélectionnez Typical ou Custom Database L'option Typical requiert peu d'entrées utilisateur. cliquez sur le bouton File Location Variables. fichiers de données. Sélectionnez une option de création de base de données. • • • Oracle9i Database Administration I 4-16 . – Save as a database template : cette option enregistre les paramètres de création de la base de données sous forme de modèle que vous pouvez ensuite ajouter à la liste des modèles disponibles. segments d'annulation et groupes de fichiers de journalisation. – Create database : cette option crée immédiatement la base de données. Cette page affiche une liste arborescente et une vue synthétisée (listes multicolonnes) qui vous permettent de visualiser et de modifier les objets suivants : fichiers de contrôle.Créer une base de données (suite) – File Locations Indiquez l'emplacement des fichiers trace et précisez le chemin du fichier de paramètres d'initialisation. • Define database storage parameters. Sélectionnez Finish. – Generate database creation scripts : cette option vous permet d'enregistrer les paramètres de création de la base de données sous forme de fichier script pour une utilisation ultérieure. Pour modifier des variables relatives à l'emplacement des fichiers. tablespaces. ORACLE_SID. Créer manuellement une base de données • Choisissez un nom unique pour l'instance et la base de données. • Définissez les variables du système d'exploitation. – ORACLE_SID : nom défini par l'utilisateur. • Ouvrez la base de données. Vous pouvez également définir un jeu de caractères nationaux facultatif. • Démarrez l'instance à l'étape NOMOUNT. – PATH : répertoires dans lesquels le système d'exploitation recherche des fichiers exécutables. affecté à une instance de base de données. • Définissez les variables du système d'exploitation. • Créez et exécutez la commande CREATE DATABASE. Ce nom permet de distinguer les différentes instances de base de données qui s'exécutent sur la même machine. • Créez le fichier de paramètres d'initialisation. Oracle9i Database Administration I 4-17 . PATH et LD_LIBRARY_PATH. Vous devez définir quatre variables d'environnement : ORACLE_HOME.Créer manuellement une base de données • Choisissez un nom unique pour l'instance et la base de données. • Exécutez des scripts afin de générer le dictionnaire de données et d'effectuer des étapes de postcréation. Vous devez définir un jeu de caractères de base de données. • Créez autant de tablespaces supplémentaires que nécessaire. Tous droits réservés. 2001. 4-17 Copyright © Oracle Corporation. – LD_LIBRARY_PATH : répertoires de stockage des fichiers bibliothèque requis. • Sélectionnez un jeu de caractères de base de données. • Sélectionnez un jeu de caractères de base de données. Exemple : – Character set AL32UTF16 – National character set AL16UTF16 Pour plus d'informations sur les différents jeux disponibles. voir le chapitre "Utiliser le support de globalisation". – ORACLE_HOME : répertoire situé le plus haut dans l'arborescence et dans lequel le serveur Oracle9i est installé. Créer manuellement une base de données (suite) • Créez le fichier de paramètres d'initialisation. procédures et fonctions intégrées. Copiez init.sql en tant qu'utilisateur SYS disposant du privilège SYSDBA.sql crée les vues et leurs synonymes à partir des tables de base et des vues dynamiques des performances. Modifiez le fichier en fonction des besoins de la base de données que vous créez. voir le chapitre "Gérer une instance Oracle". Avant d'exécuter ces scripts. Démarrez l'instance à l'étape NOMOUNT. – La commande CREATE DATABASE est considérablement simplifiée si la base de données créée vise à gérer les fichiers du système d'exploitation à l'aide d'OracleManaged Files (OMF).ora. Pour plus d'informations sur OMF. vous devez exécuter les scripts catalog. les options installées. la fonction d'audit. Le chapitre "Gérer une instance Oracle indique comment ouvrir une base de données qui se trouve à l'état NOMOUNT.sql et catproc. exceptions prédéfinies. • • • • • Oracle9i Database Administration I 4-18 . Connectezvous à SQL*Plus en tant qu'utilisateur SYS disposant du privilège SYSDBA. Lorsque la base de données se trouve à l'état NOMOUNT. SQL*Loader.ora enregistré au cours de l'installation. – catalog. exécutez le script. Créez ce fichier à l'aide de l'exemple de fichier init. • Créez et exécutez la commande CREATE DATABASE. Connectez-vous en tant qu'utilisateur SYS disposant du privilège SYSDBA.ora et nommez-le initSID.ora propre à une base de données et d'un fichier SPFILE. – Une fois la base de données créée. • Exécutez des scripts. Vous ne pouvez créer la base de données que si elle se trouve à l'état NOMOUNT. Vous devez ouvrir la base de données avant d'exécuter les scripts permettant de créer le dictionnaire de données et de réaliser les étapes de postcréation. opérations SQL). voir le chapitre "Gérer une instance Oracle". la fonction d'import/export. Il lance d'autres scripts qui créent des objets pour : • l'environnement PL/SQL de base (déclarations pour les types de données PL/SQL. Si vous devez utiliser un fichier SPFILE. Pour plus d'informations sur la procédure de création d'un fichier initSID. • Ouvrez la base de données. créez d'abord le fichier PFILE. vous devez affecter à la base de données l'état OPEN. Le chapitre "Gérer une instance Oracle" indique comment placer une base de données à l'état NOMOUNT. – Créez un script SQL contenant la commande CREATE DATABASE. Créer manuellement une base de données (suite) • Exécutez des scripts (suite) – catproc.sql crée les packages et les procédures nécessaires à l'utilisation de PL/SQL. – pupbld. Remarque : Vous devez exécuter ce script en tant qu'utilisateur SYSTEM. la réplication et d'autres options intégrées. LogMiner. L'exécution de ce script permet d'éviter l'affichage d'un message d'avertissement chaque fois qu'un utilisateur se connecte à SQL*Plus. la procédure de création manuelle d'une base de données sous Unix. • Créez des tablespaces supplémentaires.sql crée la table Product User Profile et les procédures associées. ainsi que des vues de packages supplémentaires pour les alertes. Remarque : L'annexe A décrit. Il crée également une partie des packages PL/SQL utilisés pour étendre la fonctionnalité de SGBDR. Oracle9i Database Administration I 4-19 . la mise en file d'attente. consultez la documentation Oracle propre à votre système d'exploitation. – Créez autant de tablespaces que nécessaire pour répondre aux besoins de votre base de données. les objets LOB (Large Objects). étape par étape. Pour plus d'informations sur la création de bases de données sur votre plate-forme. GROUP 2 ('/$HOME/ORADATA/u02/redo02. GROUP 3 ('/$HOME/ORADATA/u03/redo03.Créer la base de données CREATE DATABASE user01 LOGFILE GROUP 1 ('/$HOME/ORADATA/u01/redo01.dbf' SIZE 200M AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE temp CHARACTER SET US7ASCII NATIONAL CHARACTER SET AL16UTF16 SET TIME_ZONE= 'America/New_York' 4-20 Copyright © Oracle Corporation. Tous droits réservés. Créer la base de données Pour créer une base de données.log') SIZE 100M. exécutez la commande SQL suivante : CREATE DATABASE [database] [CONTROLFILE REUSE] [LOGFILE [GROUP integer] filespec [MAXLOGFILES integer] [MAXLOGMEMBERS integer] [MAXLOGHISTORY integer] [MAXDATAFILES integer] [MAXINSTANCES integer] [ARCHIVELOG|NOARCHIVELOG] [CHARACTER SET charset] [NATIONAL CHARACTER SET charset] [DATAFILE filespec [autoextend_clause] Oracle9i Database Administration I 4-20 .log') SIZE 100M.log') SIZE 100M MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXLOGHISTORY 1 MAXDATAFILES 100 MAXINSTANCES 1 DATAFILE '/$HOME/ORADATA/u01/system01.dbf' SIZE 325M UNDO TABLESPACE undotbs DATAFILE '/$HOME/ORADATA/u02/undotbs01. 2001. • MAXLOGFILES indique le nombre maximum de groupes de fichiers de journalisation que vous pouvez créer pour la base de données. Oracle9i Database Administration I 4-21 . le paramètre d'initialisation DB_NAME est utilisé). • CONTROLFILE REUSE indique qu'un fichier de contrôle existant identifié dans le fichier de paramètres doit être réutilisé. • LOGFILE GROUP correspond aux noms des fichiers journaux à utiliser et au groupe auquel ils appartiennent.Créer la base de données (suite) filespec :== 'filename' [SIZE integer][K|M] [REUSE] autoextend_clause :== [AUTOEXTEND {OFF|ON [NEXT integer[K|M]] [MAXSIZE {UNLIMITED|integer[K|M]} }] [DEFAULT TEMPORARY TABLESPACE tablespace filespec [temp_tablespace_extent_clause] temp_tablespace_extent_clause:== EXTENT MANAGEMENT LOCAL UNIFORM [SIZE integer][K|M] ] [UNDO TABLESPACE tablespace DATAFILE filespec [autoextend_clause] ] [SET TIME_ZONE [time_zone_region]] } ] Où : • DATABASE correspond au nom de la base de données à créer (si ce nom n'est pas indiqué. • MAXLOGHISTORY indique le nombre maximum de fichiers de journalisation archivés pour la restauration physique automatique d'Oracle Real Application Clusters. • MAXLOGMEMBERS indique le nombre maximum de fichiers journaux membres d'un groupe. • ARCHIVELOG indique que les fichiers de journalisation doivent être archivés avant d'être réutilisés. le fichier de contrôle est automatiquement étendu pour que la section fichiers de données puisse contenir un plus grand nombre de fichiers. Si vous tentez d'ajouter un fichier qui porte le nombre de fichiers à une valeur supérieure à MAXDATAFILES. S'il est omis. Oracle9i Database Administration I 4-22 . • CHARACTER SET désigne le jeu de caractères que la base de données utilise pour le stockage des données. • UNDO TABLESPACE crée un tablespace d'annulation et y ajoute les fichiers de données indiqués. NCLOB ou NVARCHAR2. • SET TIME_ZONE définit le fuseau horaire de la base de données. mais inférieure ou égale à DB_FILES. le jeu utilisé par défaut est celui de la base de données. • NOARCHIVELOG indique que les fichiers de journalisation peuvent être réutilisés sans archivage préalable de leur contenu. • MAXINSTANCES correspond au nombre maximal d'instances pouvant monter et ouvrir la base de données simultanément. • AUTOEXTEND active ou désactive l'extension automatique d'un fichier de données. • NATIONAL CHARACTER SET désigne le jeu de caractères nationaux utilisé pour le stockage des données dans les colonnes NCHAR. • MAXDATAFILES indique la taille initiale occupée par la section fichiers de données du fichier de contrôle lors de l'exécution de la commande CREATE DATABASE ou CREATE CONTROLFILE. • DEFAULT TEMPORARY TABLESPACE crée pour la base de données un tablespace temporaire par défaut auquel Oracle affecte tous les utilisateurs pour lesquels vous n'indiquez pas d'autre tablespace temporaire.Créer la base de données (suite) • DATAFILE: filespec désigne les fichiers de données à utiliser. • • • %t correspond au nom du tablespace.dbf indique qu'il s'agit d'un fichier OMF. 2001. 4-23 Copyright © Oracle Corporation.Créer une base de données à l'aide d'Oracle-Managed Files (OMF) • L'utilisation d'OMF simplifie l'administration des fichiers sur le système d'exploitation. • Les fichiers OMF sont créés et supprimés par le serveur Oracle via des commandes SQL. – DB_CREATE_ONLINE_LOG_DEST_N : indique l'emplacement par défaut des fichiers de journalisation en ligne et des fichiers de contrôle. tronqué au besoin pour ne pas dépasser la longueur maximale des noms de fichier. Tous droits réservés. Créer une base de données à l'aide d'Oracle-Managed Files Les OMF simplifient l'administration des fichiers puisqu'ils rendent inutile la gestion directe des fichiers dans une base de données Oracle. • Vous pouvez définir jusqu'à cinq emplacements.tmp Explication de la syntaxe de ces noms : • %u correspond à une chaîne de huit caractères qui garantit l'unicité.ctl • Fichiers de journalisation : ora_%g_%u. Ils sont nommés comme suit : • Fichiers de contrôle : ora_%u. tous les fichiers de données du tablespace s'affichent les uns à côté des autres. ora_ suivi de . Lorsque le nom du tablespace est placé avant la chaîne d'unicité. Oracle9i Database Administration I 4-23 .dbf • Fichiers de données temporaires : ora_%t_%u.log • Fichiers de données : ora_%t_%u. dans l'ordre alphabétique. • Deux paramètres permettent de les définir : – DB_CREATE_FILE_DEST : indique l'emplacement par défaut des fichiers de données. %g correspond au numéro du groupe de fichiers de journalisation. Il n'est pas indispensable de configurer à la fois les paramètres DB_CREATE_FILE_DEST et DB_CREATE_ONLINE_LOG_DEST_N. Oracle9i Database Administration I 4-24 . Vous pouvez utiliser l'un et/ou l'autre.Créer une base de données à l'aide d'Oracle-Managed Files (suite) Les fichiers d'annulation ne possèdent pas d'extension spéciale. 4-25 Copyright © Oracle Corporation. Exemple : – DB_CREATE_FILE_DEST=/$HOME/ORADATA/u05 – DB_CREATE_ONLINE_DEST_1=/$HOME/ORADATA/u01 – DB_CREATE_ONLINE_DEST_2=/$HOME/ORADATA/u02 • La commande CREATE DATABASE est simplifiée : @cddba01.sql > CREATE DATABASE dba01. Le fichier de contrôle principal est celui qui se trouve dans le répertoire /$HOME/ORADATA/u01. un fichier de données du tablespace d'annulation situé dans le répertoire /$HOME/ORADATA/u05 et dont la taille (10 Mo) peut être étendue de façon illimitée. L'exemple ci-dessus illustre la création d'une base de données à l'aide des OMF suivants : • Un fichier de données du tablespace SYSTEM. Tous droits réservés. car il n'est pas nécessaire de définir des noms ou des emplacements de fichier. la syntaxe de création de la base est simplifiée. • • Oracle9i Database Administration I 4-25 . les paramètres DB_CREATE_FILE_DEST et DB_CREATE_ONLINE_DEST_n sont définis dans le fichier de paramètres d'initialisation. • Deux groupes de fichiers de journalisation en ligne comportant deux membres de 100 Mo chacun et situés respectivement dans les répertoires /$HOME/ORADATA/u01 et /$HOME/ORADATA/u02. Si le mode de gestion automatique des annulations est activé. situés respectivement dans les répertoires /$HOME/ORADATA/u01 et /$HOME/ORADATA/u02. qui se trouve dans le répertoire /$HOME/ORADATA/u05 et dont la taille (100 Mo) peut être étendue automatiquement de façon illimitée. Créer une base de données à l'aide d'Oracle-Managed Files Dans le cas de la création d'une base de données à l'aide d'OMF. Si aucun paramètre d'initialisation n'a été défini. Un tablespace d'annulation nommé SYS_UNDOTBS est créé.Créer une base de données à l'aide d'Oracle-Managed Files • Définissez les paramètres OMF dans le fichier de paramètres d'initialisation. deux fichiers de contrôle. 2001. Lorsque les paramètres OMF sont définis. V$CONTROLFILE et V$LOGFILE. Oracle9i Database Administration I 4-26 . Les noms de fichier générés en interne peuvent être visualisés lorsque l'utilisateur effectue une sélection dans DBA_DATAFILES. Vous pouvez modifier dynamiquement les paramètres DB_CREATE_FILE_DEST et DB_CREATE_ONLINE_LOG_DEST_N à l'aide de la commande ALTER SYSTEM SET. V$DATAFILE. tous les fichiers OMF créés sont supprimés.Créer une base de données à l'aide d'Oracle-Managed Files (suite) Si la commande CREATE DATABASE échoue. l'instruction CREATE DATABASE échoue. • en cas d'erreurs du système d'exploitation liées. Tous droits réservés. corriger les erreurs et essayer à nouveau de créer la base de données. Oracle9i Database Administration I 4-27 . 4-27 Copyright © Oracle Corporation. Résoudre les problèmes Si l'un des trois incidents mentionnés dans la diapositive se produit. aux droits sur les fichiers ou les répertoires ou à un espace insuffisant. Vous devez alors supprimer les fichiers créés au moyen de cette instruction. • si les fichiers à créer existent déjà. par exemple. 2001.Résoudre les problèmes La création de la base de données échoue : • si le script SQL contient des erreurs de syntaxe. .. L'exécution de l'instance se poursuit et la base est ouverte et prête à l'emploi. de contrôle et de journalisation. Cette dernière contient les utilisateurs SYS et SYSTEM.Une fois la base de données créée. V$CONTROLFILE et V$DATAFILE.. 4-28 Copyright © Oracle Corporation. Tous droits réservés. Elle contient : • des fichiers de données. Changez les mots de passe de SYS et SYSTEM dès que la base de données est créée. • l'utilisateur SYS et le mot de passe change_on_install. 2001. Une fois la base de données créée. • des tables internes (mais pas de vues du dictionnaire de données). Selon la méthode de création utilisée (à l'aide de Database Configuration Assistant ou manuellement). telles que $LOGFILE. • l'utilisateur SYSTEM et le mot de passe manager.. mais aucune vue du dictionnaire de données n'est créée. Vous pouvez consulter les vues dynamiques des performances. il est possible de créer d'autres utilisateurs. Oracle9i Database Administration I 4-28 . Synthèse Ce chapitre vous a permis d'apprendre à : • identifier les conditions préalables à la création d'une base de données • créer une base de données à l'aide d'Oracle Database Configuration Assistant • créer manuellement une base de données • créer une base de données à l'aide d'Oracle-Managed Files 4-29 Copyright © Oracle Corporation. 2001. Oracle9i Database Administration I 4-29 . Tous droits réservés. • Revoyez les étapes du présent chapitre et.Présentation de l'exercice 4 • Ce chapitre présente deux méthodes spécifiques de création de base de données : – Création à l'aide d'étapes graphiques avec Database Configuration Assistant : Start > Programs > Oracle-OraHome90 > Configuration and Migration Tools. – L'annexe A décrit étape par étape la procédure de création manuelle d'une base de données sous UNIX. Tous droits réservés. 4-30 Copyright © Oracle Corporation. 2001. Oracle9i Database Administration I 4-30 . éventuellement. créez une base de données manuellement ou à l'aide de Database Configuration Assistant. Utiliser les vues du dictionnaire de données et les vues dynamiques des performances Copyright © Oracle Corporation. 2001. Tous droits réservés. . 2001.Objectifs A la fin de ce chapitre. vous pourrez : • identifier les objets de base de données intégrés • identifier le contenu et les types d'utilisation du dictionnaire de données • comprendre comment sont créées les vues du dictionnaire de données • identifier les catégories de vues du dictionnaire de données • interroger le dictionnaire de données et les vues dynamiques des performances • comprendre les conventions d'appellation des scripts d'administration 5-2 Copyright © Oracle Corporation. Tous droits réservés. Oracle9i Database Administration I 5-2 . plusieurs autres structures sont créées. Les déclencheurs d'événements de base de données ne seront pas présentés dans ce cours. Objets de base de données intégrés Outre la création des fichiers de base de données. Tous droits réservés. • Le dictionnaire de données décrit les objets de la base de données. • Les déclencheurs d'événements de base de données sont des procédures qui s'exécutent implicitement soit lors de la modification d'une table ou d'une vue. Oracle9i Database Administration I 5-3 . Ces packages sont créés lors de l'exécution du script catproc. • Les packages PL/SQL sont des unités de programme ajoutant une fonctionnalité à la base de données.sql après la commande CREATE DATABASE. soit à la suite d'une action de l'utilisateur ou du système de base de données. • Les tables dynamiques des performances contiennent des informations permettant à l'administrateur de base de données (DBA) de surveiller et de régler la base de données et l'instance correspondante. 2001. Les packages PL/SQL ne seront pas présentés dans ce cours.Objets de base de données intégrés Autres objets créés avec la base de données : • Dictionnaire de données • Tables des performances • Packages PL/SQL • Déclencheurs d'événements de base de données 5-3 Copyright © Oracle Corporation. Fichiers de données Fichiers Fichiers de de contrôle journalisation Base de données • Le propriétaire est l'utilisateur SYS. peuvent mettre à jour le dictionnaire de données. Le dictionnaire de données est mis à jour par le serveur Oracle chaque fois qu'une commande LDD est exécutée. Oracle9i Database Administration I 5-4 .Dictionnaire de données • • • • Il est vital pour toute base de données Oracle. telles que celle qui provoque l'extension d'une table. Il est stocké dans le tablespace SYSTEM. Le dictionnaire de données étant accessible en lecture seule. • Sa mise à jour est effectuée par le serveur Oracle. Il contient des tables et des vues en lecture seule. En outre. composé d'un jeu de tables et de vues accessibles en lecture seule. certaines commandes LMD. vous ne pouvez exécuter que des interrogations sur les tables et les vues qu'il contient. Le dictionnaire de données est vital pour la base de données Oracle. Tables du dictionnaire de données 5-4 Copyright © Oracle Corporation. Vous pouvez y accéder à l'aide d'instructions SQL. en passant par l'administrateur de base de données. Tous droits réservés. Il décrit la base de données et ses objets. fournissant des informations sur la base de données associée. • Il est accessible avec le privilège SELECT. Dictionnaire de données L'un des composants essentiels d'une base de données Oracle est son dictionnaire de données. 2001. de l'utilisateur final au développeur d'applications. et constitue aussi une source importante d'informations pour l'ensemble des utilisateurs. Elles sont automatiquement générées lorsque le serveur Oracle exécute le script sql. Vues du dictionnaire de données Les vues du dictionnaire de données synthétisent les informations des tables de base et les affichent dans un format qui facilite leur exploitation. Tables de base et vues du dictionnaire de données Le dictionnaire de données contient la description des objets se trouvant dans la base de données. Il comprend deux types d'objet : Tables de base Les tables de base sont des tables sous-jacentes qui contiennent des informations sur la base de données. N'utilisez jamais de commandes LMD pour mettre à jour directement les tables de base. Par exemple.sql 5-5 Copyright © Oracle Corporation. par exemple.sql qui est exécuté après la commande CREATE DATABASE. est une table de base. Oracle9i Database Administration I 5-5 . Seul le serveur Oracle doit écrire dans ces tables.bsq à la création de la base. Ces vues sont créées à l'aide du script catalog. les vues du dictionnaire de données utilisent des noms d'objets plutôt que des numéros d'objet. Elles constituent les premiers objets créés dans toute base de données Oracle. car la plupart des données sont stockées dans un format difficilement compréhensible.Tables de base et vues du dictionnaire de données Le dictionnaire de données est composé de deux parties : • Tables de base – Contiennent la description de la base de données – Sont créées à l'aide de la commande CREATE DATABASE • Vues du dictionnaire de données – Simplifient les informations contenues dans les tables de base – Sont accessibles par des synonymes publics – Sont créées à l'aide du script catalog. 2001. La table IND$. Tous droits réservés. Les utilisateurs y accèdent rarement directement. Elle contient des informations sur les index de la base de données. excepté pour la table AUD$. 2001.sql Exécute des scripts requis par PL/SQL côté serveur 5-6 Copyright © Oracle Corporation. Tous droits réservés. Les scripts se trouvent dans les répertoires suivants : UNIX : $ORACLE_HOME/rdbms/admin NT : %ORACLE_HOME%\rdbms\admin Oracle9i Database Administration I 5-6 . Exécutez ces scripts en tant qu'utilisateur SYS avec le privilège SYSDBA. Créer des vues du dictionnaire de données Les tables de base du dictionnaire de données sont automatiquement générées lors de la création d'une base de données. ainsi que les scripts correspondant aux options du serveur Oracle choisies s'exécutent automatiquement. En outre. vous devrez peut-être les réexécuter lors d'une mise à niveau vers une nouvelle version du serveur Oracle. Vous devrez exécuter manuellement ces scripts lorsque vous créerez manuellement une nouvelle base de données. les scripts utilisés pour créer les vues du dictionnaire de données et les vues dynamiques des performances.Créer des vues du dictionnaire de données Script catalog. Lorsque la base de données est créée à l'aide d'Oracle Universal Installer.sql Tâche effectuée Crée des vues du dictionnaire de données couramment utilisées et des synonymes catproc. • les informations d'audit (par exemple. séquences. 5-7 Copyright © Oracle Corporation. • les privilèges. sur l'identité des utilisateurs qui ont consulté ou mis à jour des objets de schéma). • les valeurs par défaut des colonnes. • les informations sur les contraintes d'intégrité. • les privilèges et rôles attribués à chaque utilisateur. etc. • les rôles. • les utilisateurs. clusters. • la quantité d'espace allouée aux objets de schéma et celle qu'ils utilisent. fonctions. index. packages. • les contraintes d'intégrité. • les définitions d'objets et l'espace alloué aux objets. Tous droits réservés. vues. • la fonction d'audit.). déclencheurs (triggers). procédures. Oracle9i Database Administration I 5-7 . 2001. • le nom des utilisateurs Oracle. synonymes.Contenu du dictionnaire de données Le dictionnaire de données fournit des informations sur : • la structure logique et la structure physique de la base de données. Contenu du dictionnaire de données Un dictionnaire de données contient les éléments suivants : • la définition de tous les objets de schéma de la base de données (tables. 5-8 Copyright © Oracle Corporation. Il met également le dictionnaire à jour en permanence pour y répercuter les modifications apportées aux structures de la base. • Le serveur Oracle le modifie lorsqu'une instruction LDD est exécutée.Utilisation du dictionnaire de données Principaux types d'utilisation : • Le serveur Oracle l'utilise pour rechercher des informations sur : – les utilisateurs. Lorsque la base de données est en service. 2001. Utilisation du dictionnaire de données Comment Oracle Server utilise-t-il le dictionnaire de données ? Les données des tables de base contenues dans le dictionnaire de données sont nécessaires au fonctionnement du serveur Oracle. Par conséquent. seul le serveur doit écrire ou modifier des informations dans ce dictionnaire. tandis que d'autres sont réservées aux administrateurs. Certaines sont accessibles à tous les utilisateurs Oracle. le serveur Oracle lit le dictionnaire de données pour s'assurer que les objets de schéma existent et que les utilisateurs disposent des privilèges d'accès appropriés sur ces derniers. Oracle9i Database Administration I 5-8 . Comment les utilisateurs et les administrateurs peuvent-ils exploiter le dictionnaire de données ? Les vues du dictionnaire de données servent de référence à tous les utilisateurs de la base. – les structures de stockage. • Les utilisateurs et les administrateurs de base de données l'utilisent comme référence en lecture seule pour obtenir des informations relatives à la base de données. – les objets de schéma. Tous droits réservés. Tous droits réservés. object_name. object_type FROM dba_objects. du point de vue utilisateur. Par exemple.Catégories de vues du dictionnaire de données • Trois principaux ensembles de vues statiques • Se distinguent par leur portée : – DBA : contenu de tous les schémas – ALL : éléments auxquels l'utilisateur a accès – USER : contenu du schéma de l'utilisateur DBA_xxx : tous les objets de la base de données ALL_xxx : objets accessibles à l'utilisateur en cours USER_xxx : objets appartenant à l'utilisateur en cours 5-9 Copyright © Oracle Corporation. Oracle9i Database Administration I 5-9 . Tout utilisateur doté du privilège système SELECT ANY TABLE peut interroger les vues DBA du dictionnaire de données. object_name. l'interrogation suivante renvoie des informations sur tous les objets auxquels l'utilisateur a accès : SELECT owner. object_type FROM all_objects. Vues portant le préfixe ALL Les vues portant le préfixe ALL offrent une perspective générale de la base de données. Elles renvoient des informations relatives aux objets de schéma accessibles à tout utilisateur doté de privilèges et de rôles accordés publiquement ou explicitement. l'administrateur peut lancer l'instruction suivante : SELECT owner. 2001. Catégories de vues du dictionnaire de données Vues portant le préfixe DBA Les vues portant le préfixe DBA fournissent une présentation globale de toute la base de données. Elles sont conçues pour être interrogées uniquement par les administrateurs de base de données. ainsi que des informations sur les objets de schéma qui lui appartiennent. Pour exécuter une interrogation sur tous les objets de la base de données. • renvoient un sous-ensemble des informations contenues dans les vues de catégorie ALL. • peuvent être associées à des synonymes publics abrégés. Ces vues : • font référence à l'environnement privé de l'utilisateur dans la base de données. Par exemple.Catégories de vues du dictionnaire de données (suite) Vues portant le préfixe USER Les vues qui portent le préfixe USER sont celles qui présentent le plus d'intérêt pour les utilisateurs de la base de données. • comportent des colonnes identiques à celles des autres vues. • concernent généralement des objets appartenant à l'utilisateur en cours. à ceci près que la colonne OWNER désigne implicitement l'utilisateur en cours. Vues du dictionnaire de données Les vues du dictionnaire de données sont des vues statiques qui répondent aux questions du type : • L'objet a-t-il été créé ? • D'où provient-il ? • Qui est son propriétaire ? • De quels privilèges les utilisateurs disposent-ils ? • Quelles sont les restrictions relatives à l'objet ? Remarque : Pour obtenir la liste de toutes les vues du dictionnaire de données. pour plus de commodité. voir le document Oracle9i Database Reference. l'interrogation suivante renvoie tous les objets contenus dans le schéma utilisateur : SELECT owner. object_type FROM users_objects. Oracle9i Database Administration I 5-10 . object_name. voir le document Oracle9i Database Reference. interrogez la vue DICT_COLUMNS. Utilisez la clause WHERE pour restreindre vos recherches : SELECT * FROM dictionary WHERE table_name LIKE ‘dba_seg%’ Utilisez le mot-clé DESCRIBE pour obtenir la liste des colonnes d'une vue : DESCRIBE dba_users.Exemples de vues du dictionnaire de données • Présentation générale – DICTIONARY. Exemples de vues du dictionnaire de données Pour obtenir une présentation des vues du dictionnaire de données. 2001. Pour obtenir une présentation des colonnes du dictionnaire de données. DBA_DATA_FILES 5-11 Copyright © Oracle Corporation. DICT_COLUMNS • Objets de schéma – DBA_TABLES. Utilisez la commande SELECT pour afficher le contenu d'une vue du dictionnaire de données : SELECT * FROM dba_users. DBA_INDEXES. interrogez la vue DICTIONARY ou son synonyme DICT. Remarque : Pour obtenir la liste de toutes les vues du dictionnaire de données et de leurs colonnes. DBA_EXTENTS • Structure de base de données – DBA_TABLESPACES. Exemple : SELECT * FROM dictionary. Oracle9i Database Administration I 5-11 . DBA_TAB_COLUMNS. DBA_CONSTRAINTS • Allocation d'espace – DBA_SEGMENTS. Tous droits réservés. Les synonymes commencent par le préfixe V$. 2001. Les tables dynamiques des performances permettent de répondre à des questions du type : • L'objet est-il en ligne et disponible ? • L'objet est-il ouvert ? • Quels verrous externes (locks) sont appliqués ? • La session est-elle active ? Oracle9i Database Administration I 5-12 . Il ne s'agit pas réellement de tables et elles ne sont pas accessibles à tous les utilisateurs. Toutefois. des informations sur les fichiers de données de la base et la vue V$FIXED_TABLE contient des informations sur toutes les tables et vues dynamiques des performances figurant dans la base de données. l'administrateur de base de données peut lancer des interrogations. Elles pointent sur des sources réelles d'informations figurant dans la mémoire et le fichier de contrôle. car elles ne peuvent pas être modifiées ni supprimées par l'administrateur de base de données. Tables dynamiques des performances Le serveur Oracle enregistre l'activité en cours de la base de données dans un ensemble de tables virtuelles nommées vues dynamiques des performances. accorder le privilège SELECT et créer des vues à partir de celles-ci. Les vues dynamiques des performances sont parfois appelées vues fixes. et ce pour présenter les conditions en temps réel de son fonctionnement. Des vues sont créées à partir de ces tables et sont associées à des synonymes publics. Les tables dynamiques des performances appartiennent à l'utilisateur SYS et portent des noms qui commencent par le préfixe V_$.Tables dynamiques des performances • Tables virtuelles • Enregistrent l'activité en cours de la base de données • Sont constamment mises à jour lorsque la base de données est active • Les informations sont lues à partir de la mémoire et du fichier de contrôle • Permettent de surveiller et de régler la base de données • Le propriétaire est l'utilisateur SYS • Les synonymes commencent par le préfixe V$ • Sont répertoriées dans la vue V$FIXED_TABLE 5-12 Copyright © Oracle Corporation. La vue V$DATAFILE contient. par exemple. Tous droits réservés. Ces tables ne sont présentes en mémoire que lorsque la base est active. Exemple : SELECT * FROM dictionary.Exemples de tables dynamiques des performances • • • • • • • • • • • 5-13 V$CONTROLFILE V$DATABASE V$DATAFILE V$INSTANCE V$PARAMETER V$SESSION V$SGA $SPPARAMETER V$TABLESPACE V$THREAD V$VERSION Copyright © Oracle Corporation. Utilisez le mot-clé DESCRIBE pour obtenir la liste des colonnes d'une vue : DESCRIBE V$INSTANCE. Oracle9i Database Administration I 5-13 . 2001. interrogez la vue DICT_COLUMNS. Utilisez la clause WHERE pour restreindre vos recherches : SELECT * FROM dictionary WHERE table_name like ‘V$data%’ Vous pouvez également interroger la vue V$FIXED_TABLE pour obtenir la liste des vues dynamiques des performances : SELECT * FROM V$FIXED_TABLE. interrogez la vue DICTIONARY ou son synonyme DICT. Tous droits réservés. Pour obtenir une présentation des colonnes des vues dynamiques des performances. Exemples de vues dynamiques des performances Pour obtenir une présentation des vues dynamiques des performances. Utilisez la commande SELECT pour afficher le contenu d'une vue : SELECT * from V$INSTANCE. Exemples de vues dynamiques des performances (suite) Exemples : • V$CONTROLFILE répertorie les noms des fichiers de contrôle. Remarque : Pour obtenir la liste de toutes les vues dynamiques des performances et de leurs colonnes. • V$DATAFILE contient les informations du fichier de contrôle sur le fichier de données. voir le document Oracle9i Database Reference. • V$PARAMETER répertorie les paramètres et les valeurs actuellement utilisés par la session. • V$TABLESPACE affiche les informations du fichier de contrôle sur le tablespace. • V$DATABASE contient les informations du fichier de contrôle sur la base de données. • V$THREAD contient des informations du fichier de contrôle sur les threads. • V$SPPARAMETER affiche le contenu du fichier SPFILE. • V$INSTANCE affiche l'état de l'instance en cours. Oracle9i Database Administration I 5-14 . • V$SESSION répertorie les informations sur la session en cours. • V$SGA contient des informations de synthèse sur la mémoire SGA (System Global Area). • V$VERSION indique les numéros de version des composants de la bibliothèque principale (core library) du serveur Oracle. Tous droits réservés.sql créent des vues du dictionnaire de données. le script utlxplan.sql dbms*.sql. Par exemple. Par exemple.sql.sql supprime ces tables et ces vues. Le script catnoadt. Les scripts dbms*. il existe des scripts qui génèrent des informations destinées aux utilitaires Oracle. Ainsi par exemple.sql Description Informations du catalogue et du dictionnaire de données Spécifications de package de la base de données Code de package de base de données crypté Vues et tables des utilitaires de base de données 5-15 Copyright © Oracle Corporation. le script catadt. Quelques scripts supplémentaires doivent être exécutés par l'administrateur de base de données. Conventions d'appellation des scripts d'administration Les scripts d'administration peuvent être répartis en plusieurs catégories en fonction de leur nom de fichier : Les scripts cat*. Remarque : La plupart de ces scripts doivent être exécutés sous l'ID utilisateur SYS avec le privilège SYSDBA.sql doivent être exécutés lorsque la base de données requiert des vues et des tables supplémentaires. Outre les scripts catalog.sql crée des vues du dictionnaire de données permettant d'afficher des métadonnées sur les types d'objet et d'autres caractéristiques objet du SGBD orienté objet.sql prvt*.Conventions d'appellation des scripts d'administration Convention cat*. Oracle9i Database Administration I 5-15 . Les scripts utl*.sql et prvt*plb créent des objets pour les packages Oracle prédéfinis pour l'extension des fonctions du serveur Oracle. le script dbmspool. L'administrateur de base de données doit examiner les scripts pour déterminer le compte utilisateur requis pour leur exécution.sql et catproc.plb utl*. La plupart des scripts SQL sont lancés lors de l'exécution du script catproc.sql permet d'afficher la taille des objets de la zone de mémoire partagée et de marquer ces objets comme étant à conserver ou à supprimer de la mémoire SGA pour limiter la fragmentation de la zone de mémoire partagée.sql crée une table permettant d'afficher le plan d'exécution d'une instruction SQL. Ces programmes facilitent l'administration de la base de données. 2001. Oracle9i Database Administration I 5-16 . 2001. Tous droits réservés.Synthèse Ce chapitre vous a permis d'apprendre à : • identifier les objets de base de données intégrés • identifier le contenu et les types d'utilisation du dictionnaire de données • comprendre comment sont créées les vues du dictionnaire de données • identifier les catégories des vues du dictionnaire de données • interroger le dictionnaire de données et les vues dynamiques des performances • comprendre les conventions d'appellation des scripts d'administration 5-16 Copyright © Oracle Corporation. Présentation de l'exercice 5 Remarque : Cet exercice peut être réalisé avec SQL*Plus. ou Oracle Enterprise Manager et SQL*Plus Worksheet. Tous droits réservés.Présentation de l'exercice 5 Dans cet exercice. vous allez : • identifier les composants et le contenu du dictionnaire de données • interroger le dictionnaire de données 5-17 Copyright © Oracle Corporation. 2001. Oracle9i Database Administration I 5-17 . V$THREAD et V$PARAMETER. Indice : Interrogez les vues dynamiques des performances V$DATABASE. 8 Identifiez le nom de la base de données. d Il est indispensable au bon fonctionnement de la base de données. identifiez les trois affirmations correctes concernant l'utilisation du dictionnaire de données : a Le serveur Oracle le modifie lorsqu'une instruction LMD est exécutée. 10 Identifiez le fichier de données qui constitue le tablespace SYSTEM. a Vrai b Faux 3 Dans la liste suivante. le nom de l'instance et la taille des blocs de la base de données. identifiez les affirmations correctes concernant le dictionnaire de données : a Le dictionnaire de données décrit la base de données et ses objets. 9 Affichez la liste des noms des fichiers de données. c Les utilisateurs et les administrateurs de base de données s'en servent comme référence. 2 Le script catalog. a Vrai b Faux 6 Dans la liste suivante. b Le dictionnaire de données comprend deux types d'objet : des tables de base et des vues. Indice : Interrogez la vue dynamique des performances V$DATAFILE. c Le dictionnaire de données est un ensemble de tables.sql permet de créer les tables de base. Indice : Interrogez la vue du dictionnaire de données DBA_DATA_FILES pour identifier le fichier de données qui constituent le tablespace SYSTEM. d Le dictionnaire de données enregistre et vérifie les informations relatives à la base de données qui lui est associée.Exercice 5 : utiliser les vues du dictionnaire de données et les vues dynamiques des performances 1 Dans la liste suivante. b Il permet de rechercher des informations sur les utilisateurs. les objets de schéma et les structures de stockage. a Vrai b Faux 5 Les informations d'une vue dynamique des performances sont extraites à partir du fichier de contrôle. 4 Les vues du dictionnaire de données sont statiques. identifiez les questions auxquelles une vue dynamique des performances peut répondre : a L'objet est-il en ligne et disponible ? b Quels verrous externes sont appliqués ? c Qui est le propriétaire de l'objet ? d De quels privilèges les utilisateurs disposent-ils ? e La session est-elle active ? 7 Recherchez la liste des vues du dictionnaire de données. Oracle9i Database Administration I 5-18 . 12 Répertoriez le nom et la date de création des utilisateurs de la base de données. Oracle9i Database Administration I 5-19 .Interrogez la vue DBA_FREE_SPACE du dictionnaire de données pour afficher la quantité d'espace disponible dans la base de données. .Interrogez la vue DBA_SEGMENTS du dictionnaire de données pour afficher la quantité d'espace utilisé.Exercice 5 : utiliser les vues du dictionnaire de données et les vues dynamiques des performances (suite) 11 Quel est le volume d'espace libre disponible et le volume d'espace utilisé dans la base de données ? Indices . Indice : Interrogez la vue DBA_USERS du dictionnaire de base de données pour obtenir la liste des noms et des dates de création des utilisateurs de la base de données. Oracle9i Database Administration I 5-20 . . Tous droits réservés. 2001.Gérer le fichier de contrôle Copyright © Oracle Corporation. vous pourrez : • expliquer les fonctions du fichier de contrôle • énumérer le contenu du fichier de contrôle • multiplexer et gérer le fichier de contrôle • gérer le fichier de contrôle à l'aide d'OracleManaged Files (OMF) • obtenir des informations sur les fichiers de contrôle 6-2 Copyright © Oracle Corporation. 2001. Tous droits réservés.Objectifs A la fin de ce chapitre. Oracle9i Database Administration I 6-2 . Fichier de contrôle Le fichier de contrôle est un petit fichier binaire nécessaire au démarrage et au bon fonctionnement de la base de données. Chaque fichier de contrôle est associé à une seule base de données Oracle. 6-3 Base de données Fichiers de contrôle Copyright © Oracle Corporation. la base ne fonctionne pas correctement. Avant l'ouverture d'une base.Fichier de contrôle • • • • Il s'agit d'un petit fichier binaire. – pour le fonctionnement de la base de données. Il est requis : – lors de l'étape MOUNT lors du démarrage de la base de données. l'administrateur de base de données et l'utilisateur final ne peuvent pas modifier ce fichier. Si toutes les copies des fichiers de contrôle d'une base de données sont perdues. Ce fichier est constamment mis à jour par le serveur Oracle pendant l'utilisation de la base de données. Seul le serveur Oracle peut modifier le contenu du fichier de contrôle . Tous droits réservés. Oracle9i Database Administration I 6-3 . Si ce fichier est inaccessible. Il assure l'intégrité de la base de données. • Il est lié à une seule base de données. • Sa taille initiale est définie par la commande CREATE DATABASE. 2001. • La perte de ce fichier peut nécessiter la récupération de la base de données. Il définit l'état actuel de la base de données physique. Il doit donc être accessible en écriture à chaque ouverture de la base. le fichier de contrôle est lu afin de déterminer si cette base est opérationnelle. cette dernière doit être récupérée pour être ouverte. Ceci est particulièrement visible lorsque les paramètres ont des valeurs élevées.Fichier de contrôle (suite) Dimensionner le fichier de contrôle Les mots-clés définis à la création de la base de données ont un impact sur la taille du fichier de contrôle. La taille du fichier dépend des mots-clés suivants dans la commande CREATE DATABASE ou CREATE CONTROLFILE : • MAXLOGFILES • MAXLOGMEMBERS • MAXLOGHISTORY • MAXDATAFILES • MAXINSTANCES Oracle9i Database Administration I 6-4 . • Le numéro de séquence du journal en cours est enregistré lors des changements de fichier de journalisation. • Le nom et l'emplacement des fichiers de données et des fichiers de journalisation en ligne (online redo logs) associés sont mis à jour lors de l'ajout. • L'horodatage de création de la base de données est également enregistré à la création de cette dernière. • Les informations relatives aux points de reprise (checkpoints) sont enregistrées lorsque les points de reprise ont lieu. • Les informations relatives aux tablespaces sont mises à jour lors de l'ajout ou de la suppression de tablespaces. • L'emplacement et le statut des journaux archivés sont enregistrés lors de l'archivage. • L'identificateur de la base de données est enregistré à la création de cette dernière. du changement de nom ou de la suppression de l'un de ces fichiers dans la base de données. • L'historique de journalisation est enregistré lors des changements de fichier de journalisation. Tous droits réservés. Oracle9i Database Administration I 6-5 . Contenu du fichier de contrôle Le fichier de contrôle contient les informations suivantes : • Le nom de la base de données correspond au nom indiqué par le paramètre d'initialisation DB_NAME ou à celui utilisé dans l'instruction CREATE DATABASE.Contenu du fichier de contrôle Le fichier de contrôle contient les entrées suivantes : • Nom et identificateur de la base de données • Horodatage de création de la base de données • Nom des tablespaces • Nom et emplacement des fichiers de données et des fichiers de journalisation (redo log) • Numéro de séquence du fichier de journalisation en cours • Informations sur les points de reprise (checkpoints) • Début et fin des segments d'annulation (undo segments) • Informations sur l'archivage des fichiers de journalisation • Informations sur les sauvegardes 6-5 Copyright © Oracle Corporation. • L'emplacement et le statut des sauvegardes sont enregistrés par l'utilitaire Recovery Manager. 2001. Contenu du fichier de contrôle (suite) Le fichier de contrôle comprend deux types de section : • les sections réutilisables. Les sections réutilisables contiennent les informations de Recovery Manager. • les sections non réutilisables. Ces sections sont utilisées de manière circulaire et ne peuvent être réutilisées que par Recovery Manager. Oracle9i Database Administration I 6-6 . Remarque : Recovery Manager est présenté en détail dans le cours Oracle9i DBA II. telles que les noms des fichiers de données de sauvegarde et ceux des fichiers de journalisation de sauvegarde. ctl. Sauvegarder les fichiers de contrôle Etant donné que le fichier de contrôle enregistre la structure physique de la base de données.ctl Disque 1 (u01) Disque 2 (u02) ctrl01.ctl • en ajoutant un fichier de contrôle une fois la base de données créée. Multiplexer le fichier de contrôle Pour vous préserver d'une panne en un point unique affectant le fichier de contrôle. si vous perdez un fichier de contrôle.Multiplexer le fichier de contrôle CONTROL_FILES= $HOME/ORADATA/u01/ctrl01. Tous droits réservés. vous pouvez utiliser une copie multiplexée de ce fichier pour redémarrer l'instance sans procéder à une récupération de la base de données. $HOME/ORADATA/u02/ctrl02.ctl. il est vivement recommandé de multiplexer ce fichier et de stocker chaque copie sur un disque physique distinct. voir le cours Oracle9i DBA II.ctl 6-7 Copyright © Oracle Corporation. $HOME/ORADATA/u02/ctrl02. Ainsi.ctl ctrl02. Oracle9i Database Administration I 6-7 . 2001. vous devez immédiatement effectuer une sauvegarde de ce fichier lorsque vous modifiez la structure physique de la base de données. Vous pouvez multiplexer un fichier de contrôle jusqu'à huit fois : • en créant plusieurs fichiers de contrôle en même temps que la base de données et en indiquant leur nom et chemin d'accès complet dans le fichier de paramètres d'initialisation : CONTROL_FILES=$HOME/ORADATA/u01/ctrl01. Pour plus d'informations sur la sauvegarde et la récupération du fichier de contrôle. Arrêtez la base de données : shutdown immediate 3.ctl'. Créez les fichiers de contrôle supplémentaires : à l'aide de la commande de copie du système d'exploitation. Arrêtez la base de données : arrêtez la base afin de créer les fichiers de contrôle supplémentaires sur le système d'exploitation.ctl $HOME/ORADATA/u02/ctrl02. Créez des fichiers de contrôle supplémentaires : cp $HOME/ORADATA/u01/ctrl01. Démarrez la base de données : au démarrage de la base. 2. 2.Multiplexer le fichier de contrôle lorsqu'un fichier SPFILE est utilisé 1. Tous droits réservés. Démarrez la base de données : startup 6-8 Copyright © Oracle Corporation. 3. 2001.ctl 4. Modifiez le SPFILE : à l'aide de la commande ALTER SYSTEM SET. Modifiez le SPFILE : ALTER SYSTEM SET control_files = '$HOME/ORADATA/u01/ctrl01.ctl' SCOPE=SPFILE. Oracle9i Database Administration I 6-8 . Multiplexer le fichier de contrôle lorsqu'un fichier SPFILE est utilisé 1. modifiez le fichier SPFILE afin d'y inclure la liste des fichiers de contrôle à utiliser (fichier de contrôle principal et copies multiplexées). créez autant de fichiers de contrôle supplémentaires que nécessaire et vérifiez que ces fichiers sont créés dans les répertoires appropriés. '$HOME/ORADATA/u02/ctrl02. le fichier SPFILE est lu et le serveur Oracle met à jour tous les fichiers de contrôle répertoriés dans le paramètre CONTROL_FILES. 4. Tous droits réservés.ctl. Arrêtez la base de données : arrêtez la base afin de créer les fichiers de contrôle supplémentaires sur le système d'exploitation. Créez des fichiers de contrôle supplémentaires : cp $HOME/ORADATA/u01/ctrl01. Démarrez la base de données : startup 6-9 Copyright © Oracle Corporation. 2001.ctl 3. Multiplexer le fichier de contrôle lorsqu'un fichier PFILE est utilisé 1. 2. Ajoutez les noms des fichiers de contrôle au fichier PFILE : modifiez le fichier PFILE afin d'y inclure la liste des fichiers de contrôle. /DISK3/control02. Créez les fichiers de contrôle supplémentaires : à l'aide de la commande de copie du système d'exploitation. Démarrez la base de données : au démarrage de la base.ctl $HOME/ORADATA/u02/ctrl02. créez autant de fichiers de contrôle supplémentaires que nécessaire et vérifiez que ces fichiers sont créés dans les répertoires appropriés. Ajoutez les noms des fichiers de contrôle au fichier PFILE : CONTROL_FILES = (/DISK1/control01.Multiplexer le fichier de contrôle lorsqu'un fichier PFILE est utilisé 1. Oracle9i Database Administration I 6-9 . 4.ctl) 4. 3. le fichier PFILE est lu et le serveur Oracle met à jour tous les fichiers de contrôle répertoriés dans le paramètre CONTROL_FILES. Arrêtez la base de données : shutdown immediate 2. 2001. Si ce dernier n'est pas défini.ctl) et sont ajoutés dans le fichier alertSID. les fichiers de contrôle seront placés à l'emplacement défini par le paramètre DB_CREATE_FILE_DEST. une erreur sera générée). le paramètre CONTROL_FILES doit être défini dans le fichier de paramètres d'initialisation (à défaut. Tous droits réservés. Si vous utilisez un fichier init.log à la création des fichiers. la valeur du paramètre CONTROL_FILES doit correspondre aux noms générés par OMF. Gérer les fichiers de contrôle à l'aide d'OMF Si le paramètre CONTROL_FILES n'est pas défini dans le fichier de paramètres d'initialisation. que vous pouvez visualiser en effectuant une sélection dans la vue V$CONTROLFILE ou le fichier alertSID. Si aucun de ces deux paramètres n'est défini.log. Oracle9i Database Administration I 6-10 .ora. Si vous utilisez un fichier SPFILE. les fichiers de contrôle ne seront pas de type OMF. Dans ce cas. les fichiers de contrôle sont automatiquement créés en tant que fichiers OMF lors de la création de la base de données. les fichiers créés sont de type OMF • Les emplacements sont définis par le paramètre DB_CREATE_ONLINE_LOG_DEST_n • Les noms sont générés de façon unique et s'affichent dans le fichier alertSID. Les noms des fichiers de contrôle sont générés de façon unique (ora_cmr7t30p. le paramètre CONTROL_FILES est automatiquement défini et sauvegardé à la création de la base de données L'emplacement des fichiers de contrôle est déterminé par le paramètre DB_CREATE_ONLINE_LOG_DEST_n.log 6-10 Copyright © Oracle Corporation.Gérer les fichiers de contrôle à l'aide d'OMF • Si le paramètre CONTROL_FILES n'est pas défini. SELECT name FROM V$CONTROLFILE. Obtenir des informations sur les fichiers de contrôle Pour connaître l'emplacement et le nom des fichiers de contrôle. le statut et l'emplacement des fichiers de contrôle.Obtenir des informations sur les fichiers de contrôle Vous pouvez interroger les vues suivantes pour obtenir des informations sur le statut et l'emplacement des fichiers de contrôle : • V$CONTROLFILE répertorie le nom et le statut de tous les fichiers de contrôle associés à l'instance.ctl 2 rows selected. • SHOW PARAMETERS CONTROL_FILES répertorie le nom. 2001. SELECT name. interrogez la vue V$CONTROLFILE. Vous pouvez également utiliser la vue V$PARAMETER. • V$CONTROLFILE_RECORD_SECTION fournit des informations sur les enregistrements des différentes sections des fichiers de contrôle. NAME ------------control_files Value ------------------------------------/u01/home/db03/ORADATA/u01/ctrl01. value from V$PARAMETER WHERE name = 'control_files'. 6-11 Copyright © Oracle Corporation. NAME -----------------------------------/u01/home/db03/ORADATA/u01/ctrl01.ctl Oracle9i Database Administration I 6-11 .ctl /u01/home/db03/ORADATA/u01/ctrl01. Tous droits réservés. • V$PARAMETER répertorie le statut et l'emplacement de tous les paramètres. qui est déterminé par le paramètre MAXDATAFILES de la commande CREATE DATABASE. records_total.----------. vous pouvez afficher le nombre maximum de fichiers de données (40. SQL> SHOW PARAMETER control_files.Obtenir des informations sur les fichiers de contrôle (suite) Pour obtenir des informations sur les enregistrements des différentes sections des fichiers de contrôle. NAME TYPE string VALUE $HOME/ORADATA/u01/ctrl01.ctl. interrogez la vue V$CONTROLFILE_RECORD_SECTION. SQL> SELECT type. record_size. dans notre exemple).------------ La colonne RECORDS_TOTAL indique le nombre d'enregistrements alloués à une section. Vous pouvez également utiliser la commande SHOW PARAMETERS pour localiser les fichiers de contrôle. -----------------. Exemples : • V$BACKUP • V$DATAFILE • V$TEMPFILE • V$TABLESPACE • V$ARCHIVE • V$LOG • V$LOGFILE • V$LOGHIST • V$ARCHIVED_LOG • V$DATABASE Oracle9i Database Administration I 6-12 . RECORD_SIZE RECORDS_TOTAL RECORDS_USED 180 40 10 TYPE DATAFILE 1 row selected.----------. records_used 2 3 FROM v$controlfile_record_section WHERE TYPE='DATAFILE'. Par exemple.------------.-----------------------------control_files Les informations d'un certain nombre de vues dynamiques des performances sont extraites du fichier de contrôle.ctl -------------. $HOME/ORADATA/u02/ctrl02. Cliquez sur Controlfile.Obtenir des informations sur les fichiers de contrôle (suite) Utiliser Oracle Enterprise Manager pour afficher des informations sur les fichiers de contrôle A partir de la console OEM. 4. 3. Oracle9i Database Administration I 6-13 . Modifiez un paramètre dans la colonne des valeurs. Dans l'onglet General. procédez comme suit : 1. cliquez sur All Initialization Parameters. Sélectionnez Databases > Storage. 2. 5. Cliquez sur OK. 2001.ora est utilisé • gérer les fichiers de contrôle à l'aide d'OMF 6-14 Copyright © Oracle Corporation. Oracle9i Database Administration I 6-14 .Synthèse Ce chapitre vous a permis d'apprendre à : • multiplexer le fichier de contrôle lorsqu'un fichier SPFILE est utilisé • multiplexer le fichier de contrôle lorsqu'un fichier init. Tous droits réservés. Présentation de l'exercice 6 Remarque : Vous pouvez réaliser cet exercice avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet. 2001. Tous droits réservés. vous allez : • démarrer la base de données sans fichier de contrôle • multiplexer un fichier de contrôle existant 6-15 Copyright © Oracle Corporation.Présentation de l'exercice 6 Dans cet exercice. Oracle9i Database Administration I 6-15 . ou utilisez la commande SHOW PARAMETER pour confirmer que les deux fichiers de contrôle sont utilisés. utilisez la commande chmod 660. puis nommez le nouveau fichier ctrl02. Indices : . modifiez le fichier SPFILE (SCOPE=SPILE) pour ajouter le nouveau fichier de contrôle au fichier d'initialisation.ctl. Remarque : Vous pouvez également utiliser la vue V$PARAMETER ou exécuter la commande SHOW PARAMETER pour afficher le nom et l'emplacement du fichier de contrôle. Sous UNIX. par exemple. Interrogez la vue dynamique des performances V$CONTROLFILE ou V$PARAMETER.ctl que vous placerez dans le répertoire u02. Normalement. 2 Tentez de démarrer la base de données sans fichier de contrôle.Exercice 6 : gérer le fichier de contrôle 1 Où se trouve le fichier de contrôle existant et quel est son nom ? Indice : Interrogez la vue dynamique des performances V$CONTROLFILE. Oracle9i Database Administration I 6-16 . Arrêtez la base de données. Que se passe-t-il ? 3 Multiplexez le fichier de contrôle existant en utilisant le répertoire u02. Démarrez la base de données. Vérifiez que les deux fichiers de contrôle sont utilisés.Avant d'arrêter la base de données. puis copiez le fichier de contrôle existant dans un nouveau fichier nommé ctrl02. Pour simuler cette opération. les droits sur le fichier restent inchangés . cette situation n'est présentée que pour les besoins du cours. modifiez le nom du fichier de contrôle dans le fichier de paramètres ou renommez le fichier de contrôle. - 4 Quelle est la taille initiale de la section relative aux fichiers de données dans le fichier de contrôle ? Indice : Interrogez la vue dynamique des performances V$CONTROLFILE_RECORD_SECTION. la commande chmod 660 sous UNIX. Assurez-vous que le serveur Oracle a accès en écriture à ce nouveau fichier en utilisant. Gérer les fichiers de journalisation Copyright © Oracle Corporation. 2001. . Tous droits réservés. 2001. Tous droits réservés.Objectifs A la fin de ce chapitre. vous pourrez : • expliquer le rôle des fichiers de journalisation en ligne • décrire la structure des fichiers de journalisation en ligne • gérer les changements de fichier de journalisation et les points de reprise • multiplexer et mettre à jour les fichiers de journalisation en ligne • gérer les fichiers de journalisation en ligne à l'aide d'OMF 7-2 Copyright © Oracle Corporation. Oracle9i Database Administration I 7-2 . Il peut s'agir de transactions qui n'ont pas encore été validées. de journa• Deux groupes au lisation moins sont requis. Utiliser des fichiers de journalisation Les fichiers de journalisation (fichiers redo log) permettent de journaliser les transactions en cas de panne de la base de données. 2001. Oracle9i Database Administration I 7-3 . par exemple. Chaque transaction est écrite de manière synchrone dans le tampon de journalisation (redo log buffer). puis transférée dans les fichiers de journalisation pour fournir un mécanisme de récupération en cas de défaillance physique (à l'exception. • Ils offrent un mécanisme de récupération. • Ils peuvent être Fichiers organisés en groupes. d'informations sur des segments d'annulation et d'instructions de gestion des schémas et des objets. par exemple. du chargement de données par chemin direct dans des objets lorsque la clause NOLOGGING est activée). 7-3 Copyright © Oracle Corporation. en cas d'échec d'instance pour récupérer les données validées qui n'ont pas été écrites dans les fichiers de données.Utiliser des fichiers de journalisation Les fichiers de journalisation présentent les caractéristiques suivantes : • Ils enregistrent toutes les modifications apportées aux données. Ils ne servent qu'à la récupération de données. Tous droits réservés. Les fichiers de journalisation sont utilisés. Ce type de numéro. 2001. • Le processus d'arrière-plan LGWR écrit simultanément les mêmes informations dans tous les fichiers de journalisation en ligne d'un groupe. Structure des fichiers de journalisation L'administrateur de base de données peut configurer la base Oracle pour gérer des copies de fichiers de journalisation en ligne afin d'éviter de perdre des données en cas d'incident. Groupes de fichiers de journalisation en ligne : • Un ensemble de copies identiques de fichiers de journalisation en ligne est nommé groupe de fichiers de journalisation en ligne. Oracle9i Database Administration I 7-4 .Structure des fichiers de journalisation Groupe 1 Groupe 2 Groupe 3 Disque 1 Membre Membre Membre Membre Membre Membre Disque 2 7-4 Copyright © Oracle Corporation. • Les membres d'un groupe portent tous le même numéro de séquence de journal et ont tous la même taille. Membres des fichiers de journalisation en ligne • Chaque fichier de journalisation en ligne d'un groupe est nommé membre. Le numéro en cours est stocké dans le fichier de contrôle et dans l'en-tête de tous les fichiers de données. • Le serveur Oracle nécessite au moins deux groupes de fichiers de journalisation en ligne pour garantir un fonctionnement correct de la base de données. Tous droits réservés. permettant d'identifier de manière unique chaque fichier de journalisation. est attribué lorsque le serveur Oracle écrit dans un groupe de fichiers de journalisation. Les paramètres suivants limitent le nombre de fichiers de journalisation en ligne : • Le paramètre MAXLOGFILES de la commande CREATE DATABASE définit le nombre maximum absolu de groupes de fichiers de journalisation en ligne.Structure des fichiers de journalisation (suite) Créer des fichiers de journalisation initiaux Les groupes de fichiers de journalisation en ligne (online) et les membres initiaux sont créés en même temps que la base de données. • La valeur maximale et la valeur par défaut du paramètre MAXLOGFILES dépendent du système d'exploitation. Oracle9i Database Administration I 7-5 . La valeur maximale et la valeur par défaut de ce paramètre dépendent du système d'exploitation. • Le paramètre MAXLOGMEMBERS de la commande CREATE DATABASE détermine le nombre maximum de membres par groupe. • lorsque le tampon de journalisation contient plus d'un mégaoctet d'enregistrements modifiés. dans les cas suivants : • lorsqu'une transaction est validée. • avant que le processus DBWn n'écrive les blocs modifiés du cache de tampons (buffer cache) de la base de données dans les fichiers de données. – On parle alors de changement de fichier de journalisation. • Lorsqu'un fichier de ce type est rempli. Mode de fonctionnement des fichiers de journalisation Le serveur Oracle enregistre de manière séquentielle toutes les modifications apportées à la base de données dans le tampon de journalisation. Les entrées de journalisation sont écrites par le processus LGWR dans l'un des groupes de fichiers de journalisation. 2001. 7-6 Copyright © Oracle Corporation. Les fichiers de journalisation sont utilisés de façon cyclique. Tous droits réservés. appelé groupe de fichiers de journalisation en cours. le processus LGWR passe au groupe de fichiers de journalisation suivant. Chaque groupe est identifié par un numéro de séquence remplacé à chaque nouvelle utilisation du journal. le processus LGWR passe au groupe suivant. Changements de fichier de journalisation Le processus LGWR écrit de façon séquentielle dans les fichiers de journalisation en ligne.Mode de fonctionnement des fichiers de journalisation • Les fichiers de journalisation sont utilisés de façon cyclique. le processus LGWR revient au premier groupe et reprend l'écriture. Oracle9i Database Administration I 7-6 . Lorsque le groupe de fichiers de journalisation en ligne en cours est complet. • lorsqu'un tiers du tampon de journalisation est occupé. – Les informations sont écrites dans le fichier de contrôle. On parle alors de changement de fichier de journalisation. Lorsque le dernier fichier de journalisation en ligne disponible est complet. – Une opération de point de reprise se produit également. • lorsque la commande ALTER TABLESPACE [OFFLINE NORMAL|READ ONLY|BEGIN BACKUP]entraîne l'exécution de points de reprise sur certains fichiers de données. Oracle9i Database Administration I 7-7 . La valeur par défaut est 0. • Le processus d'arrière-plan des points de reprise CKPT met à jour le fichier de contrôle pour indiquer qu'il s'est exécuté correctement. dans les cas suivants : • à chaque changement de fichier de journalisation. s'il est défini. Des points de reprise peuvent se produire pour tous les fichiers de données de la base ou pour certains uniquement. Remarque : Le paramètre FAST_START_MTTR_TARGET est traité en détail dans le cours Oracle9i DBA II. Si le point de reprise est lancé par un changement de fichier de journalisation. Leur nombre est déterminé par le paramètre FAST_START_MTTR_TARGET.log si le paramètre d'initialisation LOG_CHECKPOINTS_TO_ALERT possède la valeur TRUE. Transactional ou Immediate.Mode de fonctionnement des fichiers de journalisation (suite) Points de reprise Au cours d'un point de reprise : • Plusieurs tampons "dirty" de la base de données gérés par le fichier de journalisation faisant l'objet d'un point de reprise (checkpoint) sont écrits par DBWn dans les fichiers de données. • lors de l'arrêt d'une instance à l'aide de l'option Normal. par exemple. Un point de reprise se produit. • lorsque l'administrateur de base de données l'exécute manuellement. • lorsque son exécution est forcée par le paramètre d'initialisation FAST_START_MTTR_TARGET. La valeur par défaut FALSE de ce paramètre ne permet pas d'enregistrer les points de reprise. Des informations sur chaque point de reprise sont enregistrées dans le fichier alert_SID. ce processus met également à jour les en-têtes des fichiers de données. Imposer des changements de fichier de journalisation et des points de reprise • Imposer un changement de fichier de journalisation : ALTER SYSTEM SWITCH LOGFILE. le paramètre FAST_START_MTTR_TARGET a été défini de sorte que la récupération de l'instance ne dure pas plus de 600 secondes. 7-8 Copyright © Oracle Corporation. ALTER SYSTEM CHECKPOINT. Dans l'exemple ci-dessus. comme indiqué précédemment. • Vous pouvez forcer l'application de points de reprise à l'aide : – du paramètre FAST_START_MTTR_TARGET. 2001. Tous droits réservés. FAST_START_MTTR_TARGET = 600 – de la commande ALTER SYSTEM CHECKPOINT. La base de données va ajuster les autres paramètres à cette fin. Imposer des points de reprise : Le paramètre FAST_START_MTTR_TARGET remplace les paramètres invalidés : • FAST_START_IO_TARGET • LOG_CHECKPOINT_TIMEOUT Les paramètres invalidés ne doivent pas être utilisés si le paramètre FAST_START_MTTR_TARGET est employé. Oracle9i Database Administration I 7-8 . Imposer des changements de fichier de journalisation et des points de reprise Des changements de fichier de journalisation et des points de reprise sont automatiquement réalisés à un stade donné de l'exécution de la base de données. mais l'administrateur peut forcer l'application de ces opérations. rdo') SIZE 1M. le serveur Oracle génère automatiquement la valeur.rdo Groupe 1 log2a.] Définissez le nom et l'emplacement des membres en suivant les spécifications de fichier.rdo log1b.rdo log2b..rdo Groupe 3 7-9 Copyright © Oracle Corporation.rdo'. Si vous omettez ce paramètre.. Tous droits réservés. log1a. 2001. Par exemple. Utilisez la commande SQL suivante pour créer un groupe de fichiers de journalisation en ligne : ALTER DATABASE [database] ADD LOGFILE [GROUP integer] filespec [. Vous pouvez choisir la valeur du paramètre GROUP pour chaque groupe de fichiers de journalisation.Ajouter des groupes de fichiers de journalisation en ligne ALTER DATABASE ADD LOGFILE GROUP 3 ('$HOME/ORADATA/u01/log3a. '$HOME/ORADATA/u02/log3b. [GROUP integer] filespec]. vous pouvez ajouter des groupes pour résoudre les problèmes de disponibilité. vous pouvez être amené à créer des groupes de fichiers de journalisation supplémentaires.rdo log3b. Oracle9i Database Administration I 7-9 .rdo Groupe 2 log3a. Ajouter des groupes de fichiers de journalisation en ligne Dans certains cas. .rdo log1c.rdo' TO GROUP 1. '$HOME/ORADATA/u04/log3c. TO {GROUP integer |('filename'[.rdo log1b. Si le fichier existe déjà. Vous pouvez identifier le groupe cible en indiquant un ou plusieurs membres ou le numéro du groupe..Ajouter des membres à des fichiers de journalisation en ligne ALTER DATABASE ADD LOGFILE MEMBER '$HOME/ORADATA/u04/log1c. Oracle9i Database Administration I 7-10 .rdo log2c.rdo log3c...rdo Groupe 2 log3a. il doit être de même taille et vous devez indiquer l'option REUSE.rdo' TO GROUP 3..rdo log3b. log1a. 'filename']. Ajouter des membres à des fichiers de journalisation en ligne Pour ajouter des membres à des groupes de fichiers de journalisation existants. Tous droits réservés.. Utilisez le nom complet des membres pour ne pas créer les fichiers dans un répertoire par défaut du serveur de bases de données. 2001.rdo' TO GROUP 2. 'filename' [REUSE]].) } ]. '$HOME/ORADATA/u04/log2c.rdo Groupe 1 7-10 log2a. utilisez la commande ALTER DATABASE LOGFILE MEMBER suivante : ALTER DATABASE [database] ADD LOGFILE MEMBER [ 'filename' [REUSE] [.rdo Groupe 3 Copyright © Oracle Corporation.rdo log2b. Oracle9i Database Administration I 7-11 . Cliquez sur Create. Sélectionnez Create dans le menu accessible par le bouton droit de la souris. Sélectionnez Databases > Storage. 2. 5. Dans l'onglet General. 3. procédez comme suit : 1.Ajouter des membres à des fichiers de journalisation en ligne (suite) Utiliser Oracle Enterprise Manager pour ajouter des groupes de fichiers de journalisation et des membres A partir de la console OEM. 4. indiquez les informations nécessaires à la création du groupe de fichiers de journalisation et des membres. Cliquez sur le dossier Redo Log Groups. . Tous droits réservés.rdo Groupe 3 Copyright © Oracle Corporation.. • Vous ne pouvez pas supprimer un groupe actif ou en cours.... Oracle9i Database Administration I 7-12 . 'filename'].rdo Groupe 2 log3a.rdo Groupe 1 7-12 log2a. 2001. log1a. 'filename']. les fichiers du système d'exploitation sont conservés. puis supprimez les anciens.)}].{GROUP integer|('filename'[. Utilisez la commande ALTER DATABASE DROP LOGFILE suivante pour supprimer l'ensemble d'un groupe de fichiers de journalisation en ligne : ALTER DATABASE [database] DROP LOGFILE {GROUP integer|('filename'[. Supprimer des groupes de fichiers de journalisation en ligne Pour augmenter ou réduire la taille des groupes de fichiers de journalisation en ligne.)} [.. • Lorsque vous supprimez un groupe de fichiers de journalisation en ligne. ajoutezen de nouveaux (ayant la nouvelle taille).Supprimer des groupes de fichiers de journalisation en ligne ALTER DATABASE DROP LOGFILE GROUP 3. Restrictions : • Une instance nécessite au moins deux groupes de fichiers de journalisation en ligne. rdo'. Utilisez la commande ALTER DATABASE DROP LOGFILE MEMBER suivante pour supprimer un ou plusieurs membres d'un fichier de journalisation en ligne : ALTER DATABASE [database] DROP LOGFILE MEMBER 'filename'[. vous devez imposer un changement de fichier de journalisation pour supprimer le membre. 2001. Tous droits réservés. 'filename'].rdo log1b.Supprimer des membres de fichiers de journalisation en ligne ALTER DATABASE DROP LOGFILE MEMBER '$HOME/ORADATA/u04/log3c. Restrictions : • Vous ne pouvez pas supprimer le dernier membre valide du groupe.. le fichier du système d'exploitation n'est pas supprimé si vous n'utilisez pas la fonction OMF. vous ne pouvez pas supprimer le membre.rdo log1c. • Si la base de données fonctionne en mode ARCHIVELOG et que le groupe de fichiers de journalisation du membre n'est pas archivé. • S'il s'agit du groupe en cours. Oracle9i Database Administration I 7-13 .. • Lorsque vous supprimez un membre d'un groupe de fichiers de journalisation en ligne. Supprimer des membres de fichiers de journalisation Vous pouvez être amené à supprimer un membre d'un fichier de journalisation en ligne parce qu'il n'est plus valide.rdo Groupe 2 Copyright © Oracle Corporation.rdo log1b. log1a.rdo log2c.rdo Groupe 1 7-13 log1a. Confirmez la suppression. Confirmez la suppression. procédez comme suit : 1. 2.Utiliser Storage Manager pour supprimer des membres et des groupes de fichiers de journalisation Utiliser Oracle Enterprise Manager pour supprimer des membres et des groupes de fichiers de journalisation A partir de la console OEM. Oracle9i Database Administration I 7-14 . Sélectionnez Remove dans le menu accessible par le bouton droit de la souris. puis cliquez sur Remove dans le menu accessible par le bouton droit de la souris. sélectionnez le membre. procédez comme suit : 1. puis sélectionnez le groupe contenant le membre à supprimer. 2. Développez l'arborescence du dossier Redo Log Groups. Pour supprimer un membre. 3. Dans la page General. 3. puis sélectionnez le groupe de fichiers de journalisation à supprimer. Sélectionnez Databases > Storage. Pour supprimer un groupe. Développez l'arborescence du dossier Redo Log Groups. procédez comme suit : 1. rdo'. Le serveur Oracle modifie uniquement les pointeurs dans les fichiers de contrôle. 7-15 Copyright © Oracle Corporation. assurez-vous que les nouveaux fichiers existent. 2001. – Exécutez la commande. Tous droits réservés.Transférer ou renommer des fichiers de journalisation en ligne Transférez ou renommez des fichiers de journalisation en ligne selon l'une des méthodes suivantes : • Commande ALTER DATABASE CLEAR LOGFILE – Copiez les fichiers de journalisation en ligne dans un nouvel emplacement. il ne renomme pas physiquement les fichiers de système d'exploitation et ne crée pas de fichiers.’filename’]… TO ‘filename’]… Oracle9i Database Administration I 7-15 . • Ajoutez de nouveaux membres et supprimez les anciens. La commande ALTER DATABASE RENAME FILE suivante permet de renommer un fichier de journalisation en ligne (online) : SQL> ALTER DATBASE [database} 2 3 RENAME FILE ‘filename’ [. Avant de renommer les fichiers. Transférer ou renommer des fichiers de journalisation en ligne Vous pouvez changer l'emplacement des fichiers de journalisation en ligne en renommant les fichiers. ALTER DATABASE CLEAR LOGFILE '$HOME/ORADATA/u01/log2a. procédez comme suit : 1. Sélectionnez Databases > Storage > Redo Log Groups. Utiliser Oracle Enterprise pour transférer ou renommer des groupes de fichiers de journalisation et des membres A partir de la console OEM. 4. 3.Utiliser Storage Manager pour transférer ou renommer des membres de fichiers de journalisation. Oracle9i Database Administration I 7-16 . Sélectionnez un groupe de fichiers de journalisation. 2. Modifiez le nom de fichier (File Name) ou le répertoire (File Directory) du membre du fichier de journalisation pour renommer ou transférer des membres. Cliquez sur Apply. Placez les fichiers de journalisation archivés et les fichiers de journalisation en ligne sur des disques différents afin de réduire la contention entre les processus d'arrière-plan ARCn et LGWR. Une configuration asymétrique ne doit être que temporaire et résulter d'une situation anormale. Oracle9i Database Administration I 7-17 . l'instance ne s'arrête pas lorsqu'un membre n'est pas disponible. une instance de base de données n'a besoin que de deux groupes. Tous droits réservés. Dans d'autres cas. vous devez ajouter des groupes.Configuration des fichiers de journalisation en ligne Groupe 1 Groupe 2 Groupe 3 Membre Membre Membre Membre Membre Disque 1 Disque 2 Disque 3 7-17 Copyright © Oracle Corporation. 2001. Ainsi. Configuration des fichiers de journalisation en ligne Pour déterminer le nombre de fichiers de journalisation en ligne nécessaires à une instance de base de données. si des messages du fichier trace LGWR ou du fichier d'alertes indiquent que le processus LGWR doit souvent attendre la fin d'un point de reprise ou l'archivage d'un groupe pour accéder à un groupe. vous devez tester différentes configurations. alors que d'autres membres le sont. Par exemple. Bien que les groupes multiplexés du serveur Oracle puissent contenir un nombre de membres différent. Définir l'emplacement des fichiers de journalisation en ligne Lorsque vous créez des fichiers de journalisation en ligne multiplexés. telle qu'une défaillance du disque. placez les membres d'un groupe sur différents disques. Dans certains cas. tentez de créer une configuration symétrique. elle peut nécessiter des groupes supplémentaires pour garantir leur disponibilité pour le processus LGWR. Oracle9i Database Administration I 7-18 . Définir la taille des fichiers de journalisation en ligne La taille minimale d'un fichier de journalisation en ligne est de 50 Ko. • l'espace de stockage disponible sur le support (une bande. par exemple. Dans ce cas. si l'archivage est activé). vous devez créer de nouveaux groupes de taille différente et supprimer les anciens groupes. et sa taille maximale est fonction du système d'exploitation. la différence de taille ne procure aucun avantage.Configuration des fichiers de journalisation en ligne (suite) Placez les fichiers de données et les fichiers de journalisation en ligne sur des disques différents afin de réduire la contention entre les processus LGWR et DBWn et limiter les risques de perte de ces fichiers en cas de défaillance physique. Toutefois. Des groupes de tailles différentes ne doivent exister que temporairement lorsque vous souhaitez changer la taille des membres des groupes de fichiers de journalisation en ligne. Les membres des groupes peuvent avoir des tailles différentes. La configuration des fichiers de journalisation en ligne peut être affectée par : • le nombre de changements de fichier de journalisation et de points de reprise. • le nombre d'entrées de journalisation et leur volume. 2001. Cette commande a été définie de sorte qu'aucune spécification de fichier ne soit nécessaire.log. Supprimer un groupe Dans l'exemple ci-dessus. le groupe de fichiers de journalisation 3 et les fichiers du système d'exploitation associés à chaque membre du fichier journal OMF du groupe 3 sont supprimés.Gérer des fichiers de journalisation en ligne à l'aide d'OMF • Définissez le paramètre DB_CREATE_ONLINE_LOG_DEST_n : DB_CREATE_ONLINE_LOG_DEST_1 DB_CREATE_ONLINE_LOG_DEST_2 • Vous pouvez ajouter un groupe sans spécification de fichier : ALTER DATABASE ADD LOGFILE. Oracle9i Database Administration I 7-19 .log. par exemple) et s'affiche dans le fichier alertSID. • Supprimer un groupe : ALTER DATABASE DROP LOGFILE GROUP 3. Dans l'exemple ci-dessus. L'administrateur de base de données utilise la commande ALTER DATABASE ADD LOGFILE pour créer un nouveau groupe de fichiers de journalisation en ligne. La taille par défaut est de 100 Mo. L'exemple de la diapositive permet d'ajouter un fichier journal contenant deux membres à l'emplacement DB_CREATE_ONLINE_LOG_DEST_1 et un autre à l'emplacement DB_CREATE_ONLINE_LOG_DEST_2. Des noms de fichiers uniques sont générés automatiquement pour les membres de fichiers de journalisation et s'affichent dans le fichier alertSID. Tous droits réservés. Gérer des fichiers de journalisation en ligne à l'aide d'OMF Définissez le paramètre DB_CREATE_ONLINE_LOG_DEST_n : Pour créer des fichiers de journalisation en ligne à gérer à l'aide d'OMF. Fichiers de journalisation archivés et fichiers OMF Les fichiers de journalisation archivés ne peuvent pas être de type OMF. Leur nom est généré automatiquement (ora_1_wo94n2xi. 7-19 Copyright © Oracle Corporation. vous devez définir le paramètre DB_CREATE_ONLINE_LOG_DEST_n pour chaque copie multiplexée identifiée par la valeur n. deux groupes comportant deux membres chacun ont été créés.log. La taille par défaut est de 100 Mo. sequence#. 2001. members. Tous droits réservés. SEQUENCE# BYTES MEMBERS --------CURRENT 1 STATUS --------INACTIVE ---------. interrogez les vues suivantes : • V$LOG • V$LOGFILE 7-20 Copyright © Oracle Corporation. CURRENT désigne le groupe de fichiers de journalisation en ligne en cours. Obtenir des informations sur les groupes et les membres Vue V$LOG L'interrogation suivante renvoie des informations sur le fichier de journalisation en ligne à partir du fichier de contrôle : SQL> SELECT group#.-------1048576 1 689 1048576 GROUP# --------1 688 2 2 rows selected.Obtenir des informations sur les groupes et les membres Pour obtenir des informations sur les groupes et les membres. Les éléments suivants correspondent aux valeurs les plus courantes de la colonne STATUS : • • UNUSED indique qu'aucune écriture n'a encore été effectuée dans le groupe de fichiers de journalisation en ligne. status 2 FROM v$log. Ce statut est affecté aux fichiers de journalisation en ligne qui viennent d'être ajoutés. bytes. Oracle9i Database Administration I 7-20 . Ce statut implique que ce groupe est actif. Il peut être archivé ou non. Il peut être archivé ou non. mais qu'il ne s'agit pas du groupe en cours. Une fois effacé. par exemple une erreur d'entrée/sortie lors de l'écriture de l'en-tête du nouveau journal. Le journal peut conserver ce statut si une erreur de changement de fichier se produit.rdo /u01/home/db03/ORADATA/u03/log01a. L'absence de valeur indique que le fichier est utilisé. STALE indique que le contenu du fichier est incomplet. le fichier reçoit le statut UNUSED. Vue V$LOGFILE Interrogez cette vue pour obtenir le nom de tous les membres d'un groupe. SQL> SELECT member FROM V$LOGFILE. DELETED indique que le fichier n'est plus utilisé. Il est nécessaire pour la récupération après panne et peut être utilisé pour la récupération de blocs. • • CLEARING_CURRENT indique qu'un thread fermé est supprimé du fichier journal en cours. INACTIVE indique que le groupe de fichiers de journalisation en ligne n'est plus utile à la récupération d'instance. MEMBER ------------------------------------/u01/home/db03/ORADATA/u03/log02a. • CLEARING indique que le journal est recréé sous la forme d'un fichier vide suite à l'exécution de la commande ALTER DATABASE CLEAR LOGFILE. Oracle9i Database Administration I 7-21 .rdo La colonne STATUS peut prendre l'une des valeurs suivantes : • • • • INVALID indique que le fichier est inaccessible.Obtenir des informations sur les groupes et les membres (suite) • ACTIVE indique que le groupe de fichiers de journalisation en ligne est actif. Vous pouvez archiver les fichiers de journalisation en ligne de deux manières : • manuellement. une base de données est créée en mode NOARCHIVELOG. Tous droits réservés. – Sauvegarde : Peut s'effectuer lorsque la base de données est ouverte. Le processus LGWR ne remplace pas un groupe de fichiers de journalisation tant que le processus de point de reprise de ce groupe n'est pas terminé. 2001. Fichiers de journalisation archivés L'une des principales décisions d'un administrateur de base de données consiste à déterminer si la base de données doit être configurée pour fonctionner en mode ARCHIVELOG ou NOARCHIVELOG. Mode NOARCHIVELOG En mode NOARCHIVELOG. lorsque les fichiers de journalisation en ligne sont complets. • Par défaut. ils sont remplacés et un changement de fichier de journalisation se produit. Oracle9i Database Administration I 7-22 . 7-22 Copyright © Oracle Corporation. Dans la mesure où toutes les modifications apportées à la base de données sont enregistrées dans les fichiers de journalisation en ligne. l'administrateur de base de données peut utiliser la sauvegarde physique et les fichiers de journalisation en ligne archivés pour récupérer la base de données sans perdre les données validées.Fichiers de journalisation archivés • Vous pouvez archiver les fichiers de journalisation en ligne complets. • automatiquement (méthode recommandée). Mode ARCHIVELOG Si la base de données est configurée pour fonctionner en mode ARCHIVELOG. les groupes inactifs de fichiers de journalisation en ligne complets doivent être archivés. • L'exécution de la base de données en mode ARCHIVELOG et l'archivage des fichiers de journalisation présentent deux avantages : – Récupération : La sauvegarde de la base de données et des fichiers de journalisation en ligne et archivés peuvent garantir la récupération de toutes les transactions validées. ARCn lance l'archivage du groupe de fichiers de journalisation complet à chaque changement de fichier. Oracle9i Database Administration I 7-23 .Fichiers de journalisation archivés (suite) Mode ARCHIVELOG (suite) Le paramètre d'initialisation LOG_ARCHIVE_START indique si l'archivage doit être automatique ou manuel lors du démarrage de l'instance. Vous pouvez archiver manuellement tous les fichiers de ce type ou uniquement certains d'entre eux. Il doit exécuter manuellement une commande à chaque fois qu'il souhaite archiver un fichier de journalisation en ligne. • TRUE indique que l'archivage est automatique. • La valeur par défaut FALSE indique que l'administrateur de base de données archive manuellement les fichiers de journalisation complets. Tous droits réservés. 2001. • Ils sont mis à jour par l'administrateur de base de données. SQL> SELECT archiver 2 FROM v$instance. 7-24 Copyright © Oracle Corporation. – Enregistrements : nom des fichiers archivés. Fichiers de journalisation archivés Vous pouvez obtenir des informations sur les journaux archivés à partir de la vue V$INSTANCE.Fichiers de journalisation archivés • Archivage réalisé automatiquement par le processus ARCn • Archivage réalisé automatiquement à l'aide d'instructions SQL • Lorsque les fichiers sont correctement archivés : – une entrée est générée dans le fichier de contrôle. ARCHIVE --------STOPPED 1 row selected. • Les fichiers archivés peuvent être multiplexés. Remarque : L'archivage est présenté en détail dans le cours Oracle9i DBA II. – tant qu'il n'a pas été archivé par ARCn. numéro de séquence du journal et numéro SCN le plus élevé et le plus faible – Un fichier de journalisation complet ne peut pas être réutilisé : – tant qu'un point de reprise n'a pas eu lieu. Oracle9i Database Administration I 7-24 . La page Recovery vous permet de définir et d'identifier les caractéristiques spécifiques à un archivage. Cliquez sur Configuration. 4. Oracle9i Database Administration I 7-25 . tel que le mode. le format de nom de fichier et l'emplacement cible des fichiers de journalisation. procédez comme suit : 1. 3. • All Initialization Parameters : identifie les paramètres définis pour l'archivage. La page identifie les éléments suivants : • Database and Instance Information–Archive Log Mode : mode d'exécution de la base de données.Fichiers de journalisation archivés (suite) Utiliser Oracle Enterprise Manager pour obtenir des informations d'archivage A partir de la console OEM. 2. Sélectionnez Databases > Instance. 2001. Oracle9i Database Administration I 7-26 .Synthèse Ce chapitre vous a permis d'apprendre à : • expliquer le rôle des fichiers de journalisation en ligne • obtenir des informations sur les fichiers de journalisation • gérer les changements de fichier de journalisation et les points de reprise • multiplexer et mettre à jour les fichiers de journalisation en ligne • gérer les fichiers de journalisation en ligne à l'aide d'OMF 7-26 Copyright © Oracle Corporation. Tous droits réservés. Présentation de l'exercice 7 Dans cet exercice. Oracle9i Database Administration I 7-27 . vous allez : • créer des membres et des groupes de fichiers de journalisation en ligne • gérer des membres et des groupes de fichiers de journalisation en ligne • gérer les fichiers de journalisation en ligne à l'aide d'OMF 7-27 Copyright © Oracle Corporation. Présentation de l'exercice 7 Remarque : Cet exercice peut être réalisé avec SQL*Plus. ou avec Oracle Enterprise Manager et SQL*Plus Worksheet. Tous droits réservés. 2001. 4 En respectant les conventions d'appellation suivantes. . Ajoutez le groupe 3 : log03a. ajoutez un groupe de fichiers de journalisation à votre base de données et placez deux membres sur u03 et u04.rdo Vérifiez le résultat obtenu. Indices : . 3 En respectant les conventions d'appellation suivantes.Exécutez la commande ALTER DATABASE ADD LOGFILE pour créer un groupe. Indices : .Interrogez la vue dynamique des performances V$LOG pour afficher le nombre de groupes de fichiers de journalisation et de membres.Exécutez la commande ALTER DATABASE ADD LOGFILE MEMBER pour ajouter un membre à chaque groupe de fichiers de journalisation. .Exercice 7 : gérer les fichiers de journalisation 1 Répertoriez le nombre et l'emplacement des fichiers journaux existants et affichez le nombre de groupes de fichiers de journalisation et de membres que contient votre base de données.Interrogez la vue dynamique des performances V$LOGFILE pour vérifier le résultat. 2 Dans quel mode la base de données est-elle configurée ? L'archivage est-il activé ? Indices : .Interrogez la vue dynamique V$LOGFILE.rdo et log03b. Utilisez la vue dynamique V$LOG. ajoutez un membre à chaque groupe de fichiers de journalisation de la base de données stockée sur u04 : Ajoutez un membre au groupe 1 : log01b.rdo Vérifiez le résultat obtenu.Interrogez la vue dynamique des performances V$DATABASE.Interrogez la vue dynamique des performances V$LOGFILE pour afficher le nom des nouveaux membres du nouveau groupe. Oracle9i Database Administration I 7-28 .rdo Ajoutez un membre au groupe 2 : log02b. Indices : . Interrogez la vue dynamique des performances V$INSTANCE. . . (Les fichiers journaux ne pouvant pas être redimensionnés. 6 Redimensionnez tous les fichiers de journalisation en ligne en leur attribuant la taille 1024 Ko. Le nombre de changements de fichier requis varie. Indices : .Exécutez la commande ALTER DATABASE DROP LOGFILE GROUP pour supprimer le groupe de fichiers de journalisation. Exécutez la commande ALTER DATABASE DROP LOGFILE pour supprimer les groupes inactifs.Interrogez la vue dynamique V$LOG pour vérifier le groupe actif. vous devez ajouter de nouveaux journaux et supprimer les anciens.Interrogez la vue dynamique V$LOG pour vérifier le résultat. Interrogez la vue dynamique V$LOG pour vérifier le résultat. Exécutez la commande ALTER SYSTEM SWITCH LOGFILE pour forcer les changements de fichier de journalisation et attribuer au groupe le statut inactif. .) Indices : .Exécutez la commande ALTER DATABASE ADD LOGFILE GROUP pour ajouter deux nouveaux groupes d'une taille de 1024 Ko. - Oracle9i Database Administration I 7-29 . Supprimez du groupe les fichiers du système d'exploitation.Exercice 7 : gérer les fichiers de journalisation (suite) 5 Supprimez le groupe de fichiers de journalisation créé à l'étape 4. Oracle9i Database Administration I 7-30 . 2001. . Tous droits réservés.Gérer les tablespaces et les fichiers de données Copyright © Oracle Corporation. Tous droits réservés. 2001. Oracle9i Database Administration I 8-2 . vous pourrez : • définir la fonction des tablespaces et des fichiers de données • créer des tablespaces • gérer des tablespaces • créer et gérer des tablespaces à l’aide d'OracleManaged Files (OMF) 8-2 Copyright © Oracle Corporation.Objectifs A la fin de ce chapitre. la base de données Oracle la plus simple comportera un tablespace et un fichier de données. – est composé d’un ou de plusieurs fichiers de données. chacun étant composé de deux fichiers de données (soit un total de six fichiers de données). • Chaque tablespace d'une base de données Oracle contient un ou plusieurs fichiers appelés fichiers de données. – est divisé en unités logiques de stockage. Ces fichiers sont des structures physiques conformes au système d'exploitation sur lequel s'exécute le serveur Oracle. 2001. 8-3 Base de données Tablespace Fichiers de données Copyright © Oracle Corporation. Tablespaces et fichiers de données Les bases de données. • Une base de données Oracle est composée d’une ou de plusieurs unités de stockage logiques appelées tablespaces. • Les données d'une base sont stockées de manière collective dans les fichiers de données constituant chaque tablespace de la base de données. Une autre base de données pourra comporter trois tablespaces. mais ils présentent d’importantes différences. – est un référentiel pour les – données d’objet de schéma. Par exemple. • Un tablespace : – ne peut appartenir qu’à une seule base de données à la fois.Tablespaces et fichiers de données Oracle stocke les données logiquement dans les tablespaces et physiquement dans les fichiers de données. Oracle9i Database Administration I 8-3 . les tablespaces et les fichiers de données sont très proches. qui de manière collective stockent toutes les données de la base de données. • Un fichier de données : – ne peut appartenir qu’à un tablespace et qu’à une seule – base de données. Tous droits réservés. • séparent les segments d'annulation. Les tablespaces non SYSTEM : • facilitent l'administration de la base de données. 2001. 8-4 Copyright © Oracle Corporation. – gère la quantité d'espace allouée aux utilisateurs. les segments de données d'application et les segments d'index d'application. les segments temporaires. – facilite l'administration de l'espace. • ne doit pas contenir de données utilisateur. – contient le segment d'annulation SYSTEM. Oracle9i Database Administration I 8-4 . y compris les programmes stockés. bien que cela soit possible. • doit exister dans toutes les bases de données.Types de tablespace • Le tablespace SYSTEM : – est créé en même temps que la base de données. • contient le dictionnaire de données. – contient le dictionnaire de données. • gèrent la quantité d'espace allouée aux objets utilisateur. Types de tablespace L'administrateur de base de données crée des tablespaces pour améliorer le contrôle et faciliter la gestion de la base. • Le tablespace non SYSTEM – sépare les segments. • séparent les données en fonction des besoins de sauvegarde. Tous droits réservés. Le tablespace SYSTEM : • est créé en même temps que la base de données. Le serveur Oracle accepte deux types de tablespace : le tablespace SYSTEM et tous les autres tablespaces. • séparent les données dynamiques des données statiques. • contient le segment d'annulation SYSTEM. Créer des tablespaces La commande CREATE TABLESPACE permet de créer un tablespace : CREATE TABLESPACE tablespace [DATAFILE clause] [MINIMUM EXTENT integer[K|M]] [BLOCKSIZE integer [K]] [LOGGING|NOLOGGING] [DEFAULT storage_clause ] [ONLINE|OFFLINE] [PERMANENT|TEMPORARY] [extent_management_clause] [segment_management_clause] Oracle9i Database Administration I 8-5 . 8-5 Copyright © Oracle Corporation.dbf' SIZE 100M AUTOEXTEND ON NEXT 5M MAXSIZE 200M.Créer des tablespaces Un tablespace est créé à l'aide de la commande : CREATE TABLESPACE CREATE TABLESPACE userdata DATAFILE '/u01/oradata/userdata01. 2001. Tous droits réservés. OFFLINE rend le tablespace indisponible dès sa création. autoextend_clause permet d'activer ou de désactiver l'extension automatique du fichier de données. Elle vous permet d'indiquer si Oracle doit procéder au suivi de l'espace libre et utilisé dans les segments du tablespace à l'aide des bitmaps ou des listes de blocs libres (free list). index et partitions du tablespace seront écrites par défaut dans le fichier de journalisation (LOGGING est la valeur par défaut). segment_management_clause ne s'applique qu'aux tablespaces permanents. TEMPORARY indique que le tablespace ne contiendra que des objets temporaires. BLOCKSIZE indique une taille de bloc non standard pour le tablespace. Oracle9i Database Administration I 8-6 . NOLOGGING indique que toutes les modifications effectuées dans les tables. tels que les segments de tri implicite créés par la clause ORDER BY. le paramètre DB_CACHE_SIZE et au moins un paramètre DB_nK_CACHE_SIZE doivent être définis et la valeur de Integer que vous définissez dans cette clause doit être identique à celle d'un paramètre DB_nK_CACHE_SIZE. index et partitions du tablespace ne seront pas écrites par défaut dans le fichier de journalisation (NOLOGGING n'affecte que certaines commandes LMD et LDD. REUSE permet au serveur Oracle de réutiliser un fichier existant. DEFAULT définit les paramètres de stockage par défaut de tous les objets créés dans le tablespace. PERMANENT indique que le tablespace peut être utilisé pour stocker des objets permanents. telles que les chargements des données par chemin direct). La définition des clauses EXTENT MANAGEMENT LOCAL et BLOCKSIZE est impossible. LOGGING indique que toutes les modifications effectuées sur les tables. DATAFILE définit les fichiers de données constituant le tablespace. Utilisez K ou M pour définir la taille en kilo-octets ou en mégaoctets.Créer des tablespaces (suite) Où : Tablespace correspond au nom du tablespace à créer. SIZE définit la taille du fichier (utilisez K ou M pour définir la taille en kilo-octets ou en mégaoctets). datafile_clause:== filename [SIZE integer[K|M] [REUSE] [ autoextend_clause ] filename correspond au nom d'un fichier de données du tablespace. NEXT indique la taille en octets de la prochaine incrémentation de l'espace disque devant être allouée automatiquement lorsque plusieurs extents sont requis. gérés localement. extent_management_clause indique la manière dont les extents du tablespace sont gérés (cette clause est décrite dans l'une des sections suivantes du présent chapitre). MINIMUM EXTENT garantit que la taille de chaque extent (ensemble de blocs contigus) du tablespace est un multiple de integer. Pour définir cette clause. Pour plus d'informations. UNLIMITED indique l'espace disque pouvant être affecté au fichier de données ou indique que le fichier temporaire n'est pas limité.Créer des tablespaces (suite) Où : MAXSIZE indique l'espace disque maximum autorisé pour l'extension automatique d'un fichier de données. Oracle9i Database Administration I 8-7 . voir Oracle9i SQL Reference et Oracle9i Concepts. Oracle9i Database Administration I 8-8 . procédez comme suit : 1. Cliquez sur Create. Entrez les informations requises concernant le tablespace dans les onglets General et Storage.Créer des tablespaces (suite) Utiliser Oracle Enterprise Manager pour créer un tablespace A partir de la console OEM. 4. 2. Sélectionnez Create dans le menu accessible par le bouton droit de la souris. 3. Sélectionnez Databases > Storage > Tablespaces. Gestion de l'espace dans les tablespaces Les tablespaces affectent de l'espace dans les extents. 2001. Cette méthode est utilisée par défaut dans Oracle9i. Chaque bit du bitmap correspond à un bloc ou à un groupe de blocs. Lors de leur création. Tablespaces gérés au moyen du dictionnaire : Les extents sont gérés à l'aide du dictionnaire de données. Lorsqu'un extent est alloué ou libéré pour être réutilisé. – Les tables appropriées sont mises à jour lorsque les extents sont alloués ou libérés. Tous droits réservés. 8-9 Copyright © Oracle Corporation. Oracle9i Database Administration I 8-9 . Le serveur Oracle met à jour les tables appropriées dans le dictionnaire de données chaque fois qu'un extent est alloué ou libéré. vous pouvez choisir l'une ou l'autre des méthodes de gestion de l'espace libre et utilisé suivantes : Tablespaces gérés localement : les extents sont gérés dans le tablespace via des bitmaps.Gestion de l'espace dans les tablespaces • Tablespace géré localement : – Extents libres gérés dans le tablespace – Un bitmap est utilisé pour enregistrer des extents libres – Chaque bit correspond à un bloc ou à un groupe de blocs – La valeur des bits indique si ceux-ci sont disponibles ou utilisés • Tablespace géré au moyen du dictionnaire : – Les extents libres sont gérés par le dictionnaire de données. le serveur Oracle modifie les valeurs bitmap pour indiquer le nouveau statut des blocs. Tablespaces gérés localement L'option LOCAL (option par défaut) de la clause EXTENT MANAGEMENT permet d'indiquer qu'un tablespace doit être géré localement.Tablespaces gérés localement • La contention au niveau des tables du dictionnaire de données est réduite. La taille par défaut est de 1 Mo. UNIFORM indique que le tablespace est géré à l'aide d'extents d'une taille uniforme de SIZE octets. 8-10 Copyright © Oracle Corporation. • Aucune annulation n'est générée lors de l'allocation ou de la libération d'espace. MINIMUM EXTENT ou TEMPORARY. extent_management_clause: [ EXTENT MANAGEMENT [ DICTIONARY | LOCAL [ AUTOALLOCATE | UNIFORM [SIZE integer[K|M]] ] ] ] Où : DICTIONNARY indique que le tablespace est géré à l'aide des tables du dictionnaire.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K. LOCAL indique que le tablespace est géré localement à l'aide d'un bitmap. • Aucune fusion n'est requise. Tous droits réservés. Si vous définissez LOCAL. Oracle9i Database Administration I 8-10 . CREATE TABLESPACE userdata DATAFILE '/u01/oradata/userdata01. 2001. AUTOALLOCATE (option par défaut) indique que le tablespace est géré par le système (les utilisateurs ne peuvent pas définir de taille d'extent). vous ne pouvez pas définir DEFAULT storage_clause. Utilisez K ou M pour définir la taille d'extent en kilo-octets ou en mégaoctets. • La gestion locale des extents identifie automatiquement les espaces libres adjacents.Tablespaces gérés localement (suite) La clause EXTENT MANAGEMENT peut être utilisée dans diverses commandes CREATE : • Pour un tablespace permanent non SYSTEM. lorsque l'utilisation ou la libération d'espace dans un extent provoque l'exécution d'une autre opération qui utilise ou libère l'espace dans un segment d'annulation ou une table du dictionnaire de données. vous pouvez définir EXTENT MANAGEMENT LOCAL dans la commande CREATE TEMPORARY TABLESPACE. car elle ne met à jour aucune table dans le dictionnaire de données (sauf dans certains cas précis. tels que les informations sur les quotas de tablespace). • Dans la mesure où les tablespaces gérés localement n'enregistrent pas l'espace libre dans des tables du dictionnaire de données. • S'il s'agit d'un tablespace TEMPORARY. vous pouvez définir EXTENT MANAGEMENT LOCAL dans la commande CREATE TABLESPACE. Oracle9i Database Administration I 8-11 . • Le système peut déterminer automatiquement la taille des extents gérés localement. Avantages des tablespaces gérés localement : Les tablespaces gérés localement présentent les avantages suivants par rapport aux tablespaces gérés au moyen du dictionnaire : • La gestion locale permet d'éviter les opérations récursives de gestion d'espace qui peuvent se produire avec les tablespaces gérés au moyen du dictionnaire. ils réduisent la contention au niveau des tables. ce qui évite d'avoir à fusionner les extents libres. • La modification des bitmaps d'extent ne génère pas d'informations d'annulation. dbf' SIZE 500M EXTENT MANAGEMENT DICTIONARY DEFAULT STORAGE (initial 1M NEXT 1M PCTINCREASE 0). Cette méthode est plus souple que celle applicable aux tablespaces gérés localement. 2001. Oracle9i Database Administration I 8-12 . Tablespaces gérés au moyen du dictionnaire Il est possible de personnaliser le stockage des segments des tablespaces gérés au moyen du dictionnaire. Tous droits réservés. 8-12 Copyright © Oracle Corporation. mais elle s'avère beaucoup moins efficace.Tablespaces gérés au moyen du dictionnaire • Les extents sont gérés dans le dictionnaire de données • Chaque segment stocké dans le tablespace peut posséder une clause de stockage différente • Une fusion est requise CREATE TABLESPACE userdata DATAFILE '/u01/oradata/userdata01. CREATE UNDO TABLESPACE tablespace [DATAFILE clause] Oracle9i Database Administration I 8-13 . Tablespace d'annulation Un tablespace d'annulation est utilisé dans la gestion automatique des annulations (AUM). Il ne peut être utilisé qu'avec les clauses DATAFILE et EXTENT.Tablespace d'annulation • • • • Il permet de stocker des segments d'annulation. 2001. CREATE UNDO TABLESPACE undo1 DATAFILE '/u01/oradata/undo01. Tous droits réservés. Les extents sont gérés localement. voir le chapitre "Gérer les données d'annulation". Il ne peut contenir aucun autre objet. 8-13 Copyright © Oracle Corporation. Pour plus d'informations.dbf' SIZE 40M. Tablespaces TEMPORARY • Ils sont utilisés pour les opérations de tri • Ils ne peuvent pas contenir d'objets permanents • La gestion locale des extents est recommandée CREATE TEMPORARY TABLESPACE temp TEMPFILE '/u01/oradata/temp01.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M. Les tablespaces TEMPORARY améliorent les performances lorsque plusieurs tris ne peuvent tenir dans la mémoire. La taille du segment de tri augmente par allocation d'extents jusqu'à ce qu'elle soit égale ou supérieure au nombre total des demandes de stockage de tous les tris en cours exécutés dans l'instance. Tous droits réservés. Oracle9i Database Administration I 8-14 . Un segment de tri ou un segment temporaire est utilisé lorsqu'un segment est partagé par plusieurs opérations de tri. Aucun objet de schéma permanent ne peut résider dans un tablespace TEMPORARY. 2001. Tablespaces TEMPORARY Vous pouvez gérer plus efficacement l'espace pour les opérations de tri en définissant des tablespaces TEMPORARY réservés exclusivement aux segments de tri. 8-14 Copyright © Oracle Corporation. Le segment de tri d'un tablespace TEMPORARY donné est créé lors de la première opération de tri dans l'instance. Tablespaces TEMPORARY (suite) Les tablespaces temporaires gérés localement contiennent des fichiers de données temporaires (tempfiles) semblables aux fichiers de données standard. • la restauration physique ne permet pas de restaurer les fichiers temporaires. • vous ne pouvez pas renommer un fichier temporaire. • les fichiers temporaires ne peuvent pas être en lecture seule. affectez au paramètre UNIFORM SIZE une valeur multiple de celle du paramètre SORT_AREA_SIZE. • vous ne pouvez pas créer un fichier temporaire à l'aide de la commande ALTER DATABASE. • des fichiers temporaires sont requis pour les bases de données en lecture seule. Oracle9i Database Administration I 8-15 . à ceci près que :•les fichiers temporaires sont toujours en mode NOLOGGING. Pour optimiser les performances d'une opération de tri dans un tablespace temporaire. 3. Oracle9i Database Administration I 8-16 .Segments temporaires (suite) Utiliser Oracle Enterprise Manager pour créer un tablespace TEMPORARY A partir de la console OEM. Sélectionnez Create dans le menu accessible par le bouton droit de la souris. Renseignez l'onglet General. Sélectionnez l'onglet Storage et entrez les informations de stockage. Sélectionnez Databases > Storage > Tablespaces. procédez comme suit : 1. 6. 5. 4. Sélectionnez l'option Temporary dans la région Type. Cliquez sur Create. 2. le tablespace SYSTEM est affecté à tous les utilisateurs créés sans la clause TEMPORARY TABLESPACE. vous devez créer un tablespace TEMPORARY. Oracle9i Database Administration I 8-17 . Les utilisateurs qui n'ont pas été explicitement affectés à un tablespace TEMPORARY seront alors affectés au tablespace TEMPORARY par défaut.Tablespace TEMPORARY par défaut • Définit un tablespace TEMPORARY par défaut correspondant à la base de données. Vous pouvez modifier la base de données temporaire par défaut à tout moment à l'aide de la commande ALTER DATABASE DEFAULT TEMPORARY TABLESPACE. tous les utilisateurs affectés à ce tablespace sont réaffectés au nouveau tablespace par défaut. • Permet d'effectuer des suppressions à l'aide du tablespace SYSTEM pour stocker des données temporaires. puis modifier la base de données. Pour définir un tablespace TEMPORARY par défaut une fois la base de données créée. Tous droits réservés. un avertissement indiquant que le tablespace SYSTEM est le tablespace temporaire par défaut est placé dans le fichier alert_sid. En cas de modification du tablespace TEMPORARY par défaut. 2001. SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp. • Un tablespace TEMPORARY peut être créé à l'aide de : – CREATE DATABASE – Géré localement – ALTER DATABASE ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp. Si vous créez un tablespace TEMPORARY par défaut en même temps que la base de données. le tablespace SYSTEM ne sera pas utilisé à des fins de stockage temporaire. 8-17 Copyright © Oracle Corporation.log. Tablespace TEMPORARY par défaut Lorsque vous ne définissez pas de tablespace TEMPORARY par défaut à la création de la base de données. Par ailleurs. log') SIZE 100M. Créer un tablespace TEMPORARY par défaut Pendant la création de la base de données : Lorsque vous ne définissez pas de tablespace TEMPORARY par défaut à la création de la base de données. Si vous créez un tablespace TEMPORARY par défaut en même temps que la base de données. Par ailleurs. Lorsqu'un tablespace TEMPORARY par défaut est créé à l'aide de la commande CREATE DATABASE.log') SIZE 100M.dbf' SIZE 4M CHARACTER SET US7ASCII 8-18 Copyright © Oracle Corporation.dbf' SIZE 200 DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '/$HOME/ORADATA/u03/temp01. un avertissement est placé dans le fichier alert_sid. le tablespace SYSTEM ne sera pas utilisé à des fins de stockage temporaire.Créer un tablespace TEMPORARY par défaut • Pendant la création de la base de données : CREATE DATABASE DBA01 LOGFILE GROUP 1 ('/$HOME/ORADATA/u01/redo01.log. MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXLOGHISTORY 1 MAXDATAFILES 100 MAXINSTANCES 1 DATAFILE '/$HOME/ORADATA/u01/system01. le tablespace SYSTEM est affecté à tous les utilisateurs créés sans la clause TEMPORARY TABLESPACE.dbf' SIZE 325M UNDO TABLESPACE undotbs DATAFILE '/$HOME/ORADATA/u02/undotbs01. il est géré localement. Tous droits réservés. 2001. Oracle9i Database Administration I 8-18 . GROUP 2 ('/$HOME/ORADATA/u02/redo02. indiquant que le tablespace SYSTEM est le tablespace TEMPORARY par défaut. 8-19 Copyright © Oracle Corporation. Vous pouvez modifier le tablespace TEMPORARY par défaut à tout moment à l'aide de la commande ALTER DATABASE DEFAULT TEMPORARY TABLESPACE. En cas de modification du tablespace TEMPORARY par défaut. Les utilisateurs qui n'ont pas été explicitement affectés à un tablespace temporaire seront alors affectés au tablespace temporaire par défaut. SELECT * FROM DATABASE_PROPERTIES. 2001. tous les utilisateurs affectés à ce tablespace sont réaffectés au nouveau tablespace par défaut. Tous droits réservés. Oracle9i Database Administration I 8-19 . • la commande ALTER DATABASE comme indiqué ci-dessus. Créer un tablespace TEMPORARY par défaut (suite) Une fois la base de données créée : Un tablespace TEMPORARY par défaut peut être créé et défini à l'aide de : • la commande CREATE TABLESPACE pour créer un tablespace TEMPORARY. • Pour trouver le tablespace TEMPORARY par défaut de la base de données. interrogez DATABASE_PROPERTIES.Créer un tablespace TEMPORARY par défaut • Une fois la base de données créée : ALTER DATABASE DEFAULT TEMPORARY TABLESPACE default_temp2. procédez comme suit : 1. Sélectionnez Databases > Storage > Tablespaces. 2. 3. 5. Sélectionnez Temporary et Set as Default Temporary Tablespace dans l'onglet General.Créer un tablespace TEMPORARY par défaut (suite) Utiliser Oracle Enterprise Manager pour créer un tablespace TEMPORARY par défaut A partir de la console OEM. 4. Sélectionnez Create dans le menu accessible par le bouton droit de la souris. Cliquez sur Create. Oracle9i Database Administration I 8-20 . Renseignez la page Storage. Modifier le type de tablespace TEMPORARY par défaut Dans la mesure où le tablespace TEMPORARY par défaut doit être le tablespace SYSTEM ou un tablespace TEMPORARY. Les utilisateurs affectés à l'ancien tablespace sont automatiquement réaffectés au nouveau. Mettre le tablespace TEMPORARY par défaut hors ligne (offline) La mise hors ligne des tablespaces vise à rendre cette partie de la base de données indisponible pour d'autres utilisateurs (sauvegarde hors ligne. Restrictions relatives au tablespace TEMPORARY par défaut Supprimer un tablespace TEMPORARY par défaut Avant de supprimer le tablespace TEMPORARY par défaut.Restrictions relatives au tablespace TEMPORARY par défaut Les tablespaces TEMPORARY par défaut ne peuvent pas être : • supprimés tant qu'un nouveau tablespace par défaut n'est pas disponible. Tous droits réservés. vous devez en créer un nouveau à l'aide de la commande ALTER DATABASE. 2001. Oracle9i Database Administration I 8-21 . • mis hors ligne. • transformé en tablespace permanent. vous ne pouvez pas mettre hors ligne un tablespace TEMPORARY par défaut. Etant donné que ces situations ne s'appliquent pas aux tablespaces TEMPORARY. L'ancien tablespace n'est supprimé que lorsque le nouveau est disponible. 8-21 Copyright © Oracle Corporation. par exemple). maintenance ou modification d'une application qui utilise le tablespace. vous ne pouvez pas le transformer en tablespace permanent. tous ses fichiers de données doivent être en ligne (online). Ce mode n'autorise pas les opérations d'écriture dans le tablespace. tels que des tables et des index. Tablespaces accessibles en lecture seule La commande ALTER TABLESPACE [tablespace]READ ONLY place le tablespace en mode lecture seule de transition. Oracle9i Database Administration I 8-22 . excepté pour l'annulation de transactions existantes qui ont préalablement modifié des blocs du tablespace. Cette opération est possible car la commande DROP met à jour le dictionnaire de données et non les fichiers physiques qui constituent le tablespace. ALTER TABLESPACE userdata READ ONLY. La mise en lecture seule d'un tablespace crée un point de reprise dans les fichiers de données du tablespace. Pour rendre accessible en écriture un tablespace qui est en lecture seule. d'un tablespace en lecture seule. car ces commandes n'affectent que le dictionnaire de données. 2001.Tablespaces accessibles en lecture seule • Utilisez la commande suivante pour placer un tablespace en lecture seule. la commande en lecture seule s'exécute et place le tablespace en lecture seule. – Ces données sont disponibles pour les opérations de lecture uniquement. Pour les tablespaces gérés localement. – Crée un point de reprise. le segment supprimé est converti en segment temporaire pour éviter la mise à jour du bitmap. Vous pouvez supprimer des éléments. Tous droits réservés. – Il est possible de supprimer des objets des tablespaces 8-22 Copyright © Oracle Corporation. Une fois toutes les transactions existantes validées ou annulées. . Les fichiers de données peuvent donc résider sur des supports en lecture seule. 3. ALTER TABLESPACE.RENAME DATAFILE Oracle9i Database Administration I 8-23 . Grâce aux tablespaces en lecture seule...READ ONLY 2. Pour créer un tablespace accessible en lecture seule sur un lecteur non réinscriptible : 1. tels que des CD-ROM ou des unités non réinscriptibles.. ALTER TABLESPACE.Tablespaces accessibles en lecture seule (suite) La mise en lecture seule d'un tablespace permet d'empêcher les opérations d'écriture dans les fichiers de données de ce tablespace. il n'est pas nécessaire de sauvegarder de grandes sections de données statiques d'une base de données. Utilisez la commande appropriée du système d'exploitation pour transférer les fichiers de données d'un tablespace vers un lecteur accessible en lecture seule. 4. Sélectionnez le tablespace. Sélectionnez Databases > Storage > Tablespaces. 3. Cliquez sur Apply. Cochez la case Read Only dans la région Status de l'onglet General. procédez comme suit : 1. 2.Tablespaces accessibles en lecture seule (suite) Utiliser Oracle Enterprise Manager pour créer un tablespace en lecture seule A partir de la console OEM. Oracle9i Database Administration I 8-24 . Toutefois. le serveur Oracle ne permet pas aux instructions SQL qui suivent de faire référence aux objets contenus dans le tablespace. La mise hors ligne ou en ligne des tablespaces est enregistrée dans le dictionnaire de données et le fichier de contrôle. • restaurer un tablespace ou un fichier de données lorsque la base de données est ouverte. il reste hors ligne et n'est pas vérifié au remontage et à la réouverture de la base de données. ce qui permet aux utilisateurs de la base d'accéder aux données qu'il contient. Tous droits réservés. Si un tablespace est hors ligne lorsque vous arrêtez une base de données. les utilisateurs qui tentent d'accéder à ces objets reçoivent un message d'erreur. 8-25 Copyright © Oracle Corporation. Oracle9i Database Administration I 8-25 . Mettre un tablespace hors ligne Un tablespace est généralement en ligne. • Mettre un tablespace en ligne : ALTER TABLESPACE userdata ONLINE. • sauvegarder un tablespace hors ligne (bien qu'il soit possible de sauvegarder un tablespace pendant qu'il est en ligne et en cours d'utilisation). Dans ce cas.Mettre un tablespace hors ligne • Non disponible pour l'accès aux données • Tablespaces ne pouvant pas être mis hors ligne : – Tablespace SYSTEM : – Tablespaces contenant des segments d'annulation actifs – Tablespace TEMPORARY par défaut • Mettre un tablespace hors ligne : ALTER TABLESPACE userdata OFFLINE. • déplacer un fichier de données lorsque la base est ouverte. Statut hors ligne d'un tablespace Lorsque vous mettez un tablespace hors ligne. l'administrateur de base de données peut le mettre hors ligne pour : • rendre une partie de la base de données indisponible tout en permettant l'accès normal au reste de la base. 2001. à l'exception du tablespace SYSTEM ou des tablespaces contenant des segments d'annulation ou temporaires actifs. TEMPORARY exécute un point de reprise pour les fichiers de données en ligne du tablespace uniquement. Il n'est pas nécessaire d'effectuer une restauration physique du tablespace avant de le remettre en ligne. Oracle9i Database Administration I 8-26 . le serveur Oracle met tous les fichiers de données associés hors ligne. l'administrateur de base de données peut mettre hors ligne n'importe quel tablespace. utilisez la clause NORMAL.Mettre un tablespace hors ligne (suite) Lorsque certaines erreurs se produisent (par exemple. Dans la mesure du possible. si le processus DBWn tente plusieurs fois en vain d'écrire dans un fichier de données du tablespace). Les fichiers hors ligne peuvent nécessiter une restauration physique. Lorsque vous mettez un tablespace hors ligne. Mettre un tablespace hors ligne Lorsque la base de données est ouverte. IMMEDIATE ne garantit pas la disponibilité des fichiers du tablespace et n'exécute pas de point de reprise. même si certains fichiers ne peuvent pas être écrits. l'instance Oracle met automatiquement hors ligne un tablespace en ligne. Ces situations sont décrites en détail dans le cours Oracle9i DBA II. Vous devez effectuer une restauration physique du tablespace avant de le remettre en ligne. ALTER TABLESPACE tablespace {ONLINE |OFFLINE [NORMAL|TEMPORARY|IMMEDIATE|FOR RECOVER]} Où : NORMAL supprime de la mémoire SGA tous les blocs de tous les fichiers de données du tablespace (action par défaut). FOR RECOVER met les tablespaces hors ligne en vue d'une récupération jusqu'à un point dans le temps. Sélectionnez Offline dans la région Status de l'onglet General. 4. Sélectionnez Databases > Storage > Tablespaces. procédez comme suit : 1. 5. Cliquez sur Apply. Sélectionnez le tablespace. 2. Sélectionnez le mode dans le menu déroulant. 3. Oracle9i Database Administration I 8-27 .Mettre un tablespace hors ligne (suite) Utiliser Oracle Enterprise Manager pour créer un tablespace hors ligne A partir de la console OEM. 8-28 Copyright © Oracle Corporation. • Les paramètres de stockage des tablespaces gérés localement ne peuvent pas être modifiés. ALTER TABLESPACE userdata DEFAULT STORAGE (INITIAL 2M NEXT 2M MAXEXTENTS 999).Modifier les paramètres de stockage • Utiliser la commande ALTER TABLESPACE pour modifier les paramètres de stockage : ALTER TABLESPACE userdata MINIMUM EXTENT 2M. Modifier les paramètres de stockage Utilisez la commande ALTER TABLESPACE pour modifier la définition de stockage par défaut d'un tablespace : ALTER TABLESPACE tablespace [MINIMUM EXTENT integer[K|M] |DEFAULT storage_clause ] Oracle9i Database Administration I 8-28 . Tous droits réservés. 2001. 2. Cliquez sur l'onglet Storage et effectuez les modifications nécessaires.Modifier les paramètres de stockage par défaut (suite) Utiliser Oracle Enterprise Manager pour modifier les paramètres de stockage A partir de la console OEM. 3. Oracle9i Database Administration I 8-29 . 4. Cliquez sur Apply. Sélectionnez Databases > Storage > Tablespaces. procédez comme suit : 1. Cliquez sur le tablespace à l'aide du bouton droit de la souris et sélectionnez View/Edit Details dans le menu qui s'affiche. Tous droits réservés. 2001. Oracle9i Database Administration I 8-30 . • en ajoutant un fichier de données au tablespace.Redimensionner un tablespace Un tablespace peut être redimensionné en : • modifiant la taille d'un fichier de données : – automatiquement à l'aide de AUTOEXTEND – manuellement à l'aide de ALTER TABLESPACE • ajoutant un fichier de données à l'aide de ALTER TABLESPACE 8-30 Copyright © Oracle Corporation. Redimensionner un tablespace Vous pouvez augmenter la taille d'un tablespace de deux manières : • en modifiant automatiquement ou manuellement la taille d'un fichier de données. • Interrogez la vue DBA_DATA_FILES pour déterminer si AUTOEXTEND est activé. • Les applications ne s'arrêtent plus à cause des pannes d'allocation des extents. 8-31 Copyright © Oracle Corporation.. Tous droits réservés. Lors de la création d'un fichier de données. Avantages de l'utilisation de la clause AUTOEXTEND : • Le besoin d'intervention immédiate est réduit lorsque l'espace disponible est insuffisant dans le tablespace. Activer l'extension automatique des fichiers de données Indiquer AUTOEXTEND pour un nouveau fichier de données La clause AUTOEXTEND permet d'activer ou de désactiver l'extension automatique des fichiers de données. utilisez les commandes SQL suivantes pour activer l'augmentation automatique de la taille du fichier de données : • CREATE DATABASE • • CREATE TABLESPACE . 2001.. La taille des fichiers est incrémentée selon vos indications mais est limitée par une valeur maximale... ADD DATAFILE Oracle9i Database Administration I 8-31 . DATAFILE ALTER TABLESPACE .Activer l'extension automatique des fichiers de données • Les fichiers peuvent être redimensionnés automatiquement à l'aide des commandes suivantes : – CREATE DATABASE – CREATE TABLESPACE – ALTER TABLESPACE … ADD DATAFILE • Exemple : CREATE TABLESPACE user_data DATAFILE '/u01/oradata/userdata01.dbf' SIZE 200M AUTOEXTEND ON NEXT 10M MAXSIZE 500M. UNLIMITED ne définit aucune limite d'allocation d'espace disque pour le fichier de données.. /home/dba01/ORADATA/u01/system01. SQL> select tablespace_name. AUTOEXTEND ON active l'extension automatique des fichiers de données. TABLESPACE_NAME FILE_NAME AUTOEXTENSIBLE --------------.dbf /home/dba01/ORADATA/u06/indx01. Indiquer AUTOEXTEND pour un fichier de données existant Utilisez la commande SQL ALTER DATABASE pour activer ou désactiver l'extension automatique des fichiers de données existants : ALTER DATABASE [database] DATAFILE 'filename'[..dbf /home/dba01/ORADATA/u06/index01.dbf YES NO NO NO YES NO YES NO Oracle9i Database Administration I 8-32 . autoextensible 2 from dba_data_files.-------------SYSTEM DATA01 USERS INDX SAMPLE DATA02 INDEX01 UNDO2 8 rows selected.dbf /home/dba01/ORADATA/u03/users01.dbf /home/dba01/ORADATA/u01/UNDO2.-----------------------.dbf /home/dba01/ORADATA/u03/data02.Activer l'extension automatique des fichiers de données (suite) Indiquer AUTOEXTEND pour un nouveau fichier de données (suite) La commande ALTER DATABASE permet de modifier un fichier de données et d'activer son extension automatique. file_name. 'filename']. ALTER DATABASE DATAFILE filespec [autoextend_clause] autoextend_clause:== [ AUTOEXTEND { OFF|ON[NEXT integer[K|M]] [MAXSIZE UNLIMITED | integer[K|M]] } ] Où : AUTOEXTEND OFF désactive l'extension automatique des fichiers de données.dbf /home/dba01/ORADATA/u02/sample01.dbf /home/dba01/ORADATA/u04/data01. autoextend_clause Déterminer si AUTOEXTEND est activé ou non Interrogez la vue DBA_DATA_FILES pour déterminer si AUTOEXTEND est activé et examinez la colonne AUTOEXTENSIBLE. NEXT définit l'espace disque à allouer au fichier de données lorsque des extents supplémentaires sont nécessaires MAXSIZE définit l'espace disque maximum à allouer au fichier de données. procédez comme suit : 1. 3. 5. 4. Sélectionnez le fichier de données.Indiquer AUTOEXTEND pour un nouveau fichier de données (suite) Utiliser Oracle Enterprise Manager pour activer le redimensionnement automatique A partir de la console OEM. Cliquez sur Apply. Définissez les valeurs de Increment et Maximum Size. Cochez la case Automatically extend datafile when full dans la page Storage. Sélectionnez Databases > Storage > Datafiles. Oracle9i Database Administration I 8-33 . 2. Redimensionner manuellement un fichier de données • Augmentez ou réduisez manuellement la taille d'un fichier de données à l'aide de ALTER DATABASE.dbf' RESIZE 200M. Tous droits réservés. en octets. le DBA peut redimensionner un fichier de données au lieu d'ajouter des fichiers de données.. La commande ALTER DATABASE permet d'augmenter ou de diminuer manuellement la taille d'un fichier de données.. RESIZE integer[K|M] Où : Integer correspond à la taille absolue. 8-34 Copyright © Oracle Corporation. ALTER DATABASE [database] DATAFILE ‘filename’[. ‘filename’]. du fichier de données final. • Exemple : ALTER DATABASE DATAFILE '/u03/oradata/userdata02. Redimensionner manuellement un fichier de données Pour augmenter l'espace de la base de données. S'il existe des objets de base de données ayant une taille supérieure à la taille définie. 2001. • Redimensionner un fichier de données ajoute de l'espace sans ajouter de fichier de données. • Le redimensionnement manuel d'un fichier de données requiert l'utilisation de l'espace libre d'une base de données. la taille du fichier de données est diminuée uniquement jusqu'au dernier bloc des derniers objets du fichier de données. Oracle9i Database Administration I 8-34 . ALTER TABLESPACE tablespace ADD DATAFILE filespec [autoextend_clause] Oracle9i Database Administration I 8-35 .Ajouter des fichiers de données à un tablespace • Augmente l'espace alloué à un tablespace en ajoutant des fichiers de données. • La clause ADD DATAFILE permet d'ajouter un fichier de données. Tous droits réservés. 8-35 Copyright © Oracle Corporation. • Exemple : ALTER TABLESPACE user_data ADD DATAFILE '/u01/oradata/userdata03. Ajouter des fichiers de données à un tablespace Utilisez la commande ALTER TABLESPACE ADD DATAFILE pour ajouter des fichiers de données à un tablespace afin d'augmenter l'espace disque total qui lui est alloué.dbf' SIZE 200M. 2001. Sélectionnez Add Datafile. Dans l'onglet General. 2. 5. Sélectionnez Databases > Storage > Tablespaces. 3. 4. Sélectionnez le tablespace. entrez les informations concernant le fichier. Cliquez sur Create. Oracle9i Database Administration I 8-36 . procédez comme suit : 1.Ajouter des fichiers de données à un tablespace (suite) Utiliser Oracle Enterprise Manager pour ajouter un fichier de données A partir de la console OEM. l'administrateur de base de données peut déplacer des fichiers de données en utilisant l'une des méthodes suivantes : Commande ALTER TABLESPACE La commande ALTER TABLESPACE présentée ci-dessous ne s'applique qu'aux fichiers de données d'un tablespace non SYSTEM qui ne contiennent pas de segments d'annulation ou temporaires actifs : ALTER TABESPACE tablespace RENAME DATAFILE 'filename'[. 8-37 Copyright © Oracle Corporation. 'filename']. TO 'filename'[. – Les fichiers de données cible doivent exister.. – Utilisez la commande appropriée du système d'exploitation pour déplacer ou copier les fichiers. – Exécutez la commande ALTER TABLESPACE RENAME DATAFILE.Méthodes de déplacement des fichiers de données • ALTER TABLESPACE – Le tablespace doit être hors ligne. 'filename']. Méthodes de déplacement des fichiers de données Selon le type de tablespace. 2001. Les noms des fichiers source doivent correspondre à ceux stockés dans le fichier de contrôle.dbf' TO '/u02/oradata/userdata01.dbf'. • Etapes permettant de renommer un fichier – Mettez le tablespace hors ligne. Tous droits réservés. – Au besoin. – Mettez le tablespace en ligne.. Oracle9i Database Administration I 8-37 . ALTER TABLESPACE userdata RENAME DATAFILE '/u01/oradata/userdata01... utilisez la commande appropriée du système d'exploitation pour supprimer le fichier. Montez la base de données. 8-38 Copyright © Oracle Corporation. – Le fichier de données cible doit exister. Utilisez la commande de système d'exploitation appropriée pour déplacer les fichiers. Tous droits réservés. 'filename'].dbf'. 3. Arrêtez la base de données. 5. Pour renommer les fichiers des tablespaces qui ne peuvent pas être mis hors ligne...Méthodes de déplacement des fichiers de données • ALTER DATABASE – La base de données doit être montée. Dans la mesure où le tablespace SYSTEM ne peut pas être mis hors ligne. 4. 'filename']. vous devez utiliser cette méthode pour déplacer ses fichiers de données. Exécutez la commande ALTER DATABASE RENAME FILE. TO 'filename'[. ALTER DATABASE [database] RENAME FILE 'filename'[. 2001. Ouvrez la base de données. procédez comme suit : 1... ALTER DATABASE RENAME FILE '/u01/oradata/system01.dbf' TO '/u03/oradata/system01. Méthodes de déplacement des fichiers de données (suite) Commande ALTER DATABASE La commande ALTER DATABASE permet de déplacer tous les types de fichier de données. 2. Oracle9i Database Administration I 8-38 . procédez comme suit : 1. Sélectionnez le tablespace dans lequel se trouve le fichier à déplacer. Lorsque le tablespace est hors ligne. Oracle9i Database Administration I 8-39 . Indiquez toujours des noms de fichier complets (avec le chemin) pour distinguer les nouveaux fichiers des anciens. mettez à jour les informations File Directory dans la page General. 5. Cliquez sur Apply. Elles ne créent ni ne déplacent aucun fichier. 2. sélectionnez Offline. Dans la page General.Méthodes de déplacement des fichiers de données (suite) Utiliser Oracle Enterprise Manager pour déplacer un fichier de données A partir de la console OEM. Sélectionnez Databases > Storage > Tablespaces. Remarque : • • Ces commandes vérifient l'existence du fichier au nouvel emplacement. 3. 4. 6. Sélectionnez Apply. • INCLUDING CONTENTS supprime les segments • INCLUDING CONTENTS AND DATAFILES supprime les fichiers de données • CASCADE CONSTRAINTS supprime les contraintes d'intégrité référentielle DROP TABLESPACE userdata INCLUDING CONTENTS AND DATAFILES. Tous droits réservés. AND DATAFILES supprime les fichiers du système d'exploitation associés.Supprimer des tablespaces • Un tablespace ne peut pas être supprimé : – s'il s'agit du tablespace SYSTEM. INCLUDING CONTENTS supprime tous les segments du tablespace. 8-40 Copyright © Oracle Corporation. CASCADE CONSTRAINTS supprime les contraintes d'intégrité référentielles des tables situées en dehors du tablespace qui font référence aux clés primaires et uniques des tables du tablespace supprimé. Supprimer des tablespaces Vous pouvez utiliser la commande SQL DROP TABLESPACE pour supprimer un tablespace de la base de données lorsque le tablespace et son contenu ne sont plus utiles : DROP TABLESPACE tablespace [INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]] Où : tablespace correspond au nom du tablespace à supprimer. Oracle9i Database Administration I 8-40 . – s'il possède des segments actifs. 2001. Oracle9i Database Administration I 8-41 .Supprimer des tablespaces (suite) Instructions : • Un tablespace qui contient toujours des données ne peut pas être supprimé sans l'option INCLUDING CONTENTS. seuls les pointeurs de fichier du fichier de contrôle de la base de données associée sont supprimés. Les fichiers du système d'exploitation sont conservés et doivent être supprimés explicitement à l'aide de la commande appropriée du système d'exploitation si la clause AND DATAFILES n'est pas utilisée ou si les fichiers de données ne sont pas des fichiers OMF. • Lorsque vous supprimez un tablespace. • Une fois qu'un tablespace a été supprimé. ses données ne figurent plus dans la base de données. Cette option peut générer un grand nombre d'annulations lorsque le tablespace contient de nombreux objets. • Vous pouvez supprimer un tablespace en lecture seule et les segments qu'il contient. • Il est recommandé de mettre le tablespace hors ligne avant de le supprimer. afin d'empêcher d'éventuelles transactions d'accéder à ses segments. procédez comme suit : 1. Sélectionnez le tablespace. Sélectionnez Remove dans le menu accessible par le bouton droit de la souris. Sélectionnez Databases > Storage > Tablespaces.Supprimer des tablespaces (suite) Utiliser Oracle Enterprise Manager pour supprimer un tablespace A partir de la console OEM. Oracle9i Database Administration I 8-42 . 4. 3. 2. Sélectionnez Yes pour confirmer l'opération. Gérer des tablespaces à l'aide d'OMF • Définissez le paramètre DB_CREATE_FILE_DEST en utilisant l'une des méthodes suivantes : – Fichier de paramètres d'initialisation – Définition dynamique à l'aide de la commande ALTER SYSTEM ALTER SYSTEM SET db_create_file_dest = '/u01/oradata/dba01'. – La valeur UNLIMITED est affectée à AUTOEXTEND. – la taille par défaut est de 100 Mo. 2001. Oracle9i Database Administration I 8-43 . Tous les fichiers de données sont créés automatiquement et leur emplacement est défini par DB_CREATE_FILE_DEST. Le nom du fichier est généré automatiquement par le serveur Oracle (ora_tbs1_2ixfh90q. • Lorsque vous créez le tablespace : – le fichier de données est automatiquement créé dans DB_CREATE_FILE_DEST.dbf). Tous droits réservés. La clause DATAFILE n'est pas requise. 8-43 Copyright © Oracle Corporation. Gérer des tablespaces à l'aide d'OMF Le paramètre d'initialisation DB_CREATE_FILE_DEST est défini lors de la configuration d'Oracle-Managed Files (OMF) pour la création de tablespaces. Dans ce cas. 8-44 Copyright © Oracle Corporation. la taille par défaut des fichiers est de 100 Mo et AUTOEXTEND est défini sans restriction de taille maximale (MAXSIZE). Leur destination peut être modifiée de manière dynamique à l'aide de la commande SYSTEM SET. Oracle9i Database Administration I 8-44 .Gérer des tablespaces à l'aide d'OMF • Créer un tablespace OMF CREATE TABLESPACE text_data DATAFILE SIZE 20M. Il est toutefois possible d'indiquer une taille de fichier. • Modifier de manière dynamique l'emplacement du fichier par défaut : ALTER SYSTEM SET db_create_file_dest = '/u01/oradata/dba01'. • Supprimer un tablespace supprime également des fichiers du système d'exploitation. Supprimer les tablespaces OMF Lorsqu'un tablespace créé avec OMF est supprimé. 2001. La commande ADD DATAFILE ne requiert plus de spécification de fichier. Modifier de manière dynamique les emplacements du fichier par défaut DB_CREATE_ONLINE_LOG_DEST_n doit être défini pour éviter que des fichiers journaux et des fichiers de contrôle ne soient placés avec des fichiers de données. Ajouter des fichiers de données aux tablespaces OMF Un fichier de données peut être ajouté à un tablespace existant. CREATE TABLESPACE tablespace [ DATAFILE [ filename ] [ SIZE integer [K|M] ] ]. • Ajouter un fichier de données OMF à un tablespace existant ALTER TABLESPACE text_data ADD DATAFILE. Gérer des tablespaces à l'aide d'OMF Créer des tablespaces à l'aide d'OMF La création de tablespaces avec OMF ne requiert pas de clause DATAFILE. les fichiers de données associés sont supprimés au niveau du système d'exploitation. Tous droits réservés. Oracle9i Database Administration I 8-45 . 2001.Obtenir des informations sur les tablespaces Vous pouvez obtenir des informations sur les tablespaces et les fichiers de données en interrogeant les éléments suivants : • Tablespaces : – DBA_TABLESPACES – V$TABLESPACE • Informations sur le fichier de données : – DBA_DATA_FILES – V$DATAFILE • Informations sur les fichiers temporaires : – DBA_TEMP_FILES – V$TEMPFILE 8-45 Copyright © Oracle Corporation. Tous droits réservés. 2001.Synthèse Ce chapitre vous a permis d'apprendre à : • utiliser des tablespaces pour séparer des données • créer différents types de tablespace • gérer des tablespaces • gérer des tablespaces à l'aide d'OMF 8-46 Copyright © Oracle Corporation. Oracle9i Database Administration I 8-46 . Tous droits réservés. Oracle9i Database Administration I 8-47 . Présentation de l'exercice 8 Remarque : Cet exercice peut être réalisé avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet. Tous droits réservés.Présentation de l'exercice 8 Dans cet exercice. 2001. vous allez : • créer des tablespaces • modifier des tablespaces • configurer et créer un tablespace avec OMF 8-47 Copyright © Oracle Corporation. b Essayez de créer une autre table TABLE2. c INDX01. TABLE1. NE METTEZ PAS le tablespace en lecture seule à ce stade. Supprimez la première table créée. géré localement avec des extents d'une taille uniforme de 4 Ko (activez l'extension automatique de 500 Ko lorsque des extents supplémentaires d'une taille maximale de 2 Mo sont requis). Mettez le tablespace INDEX01 en ligne. Vérifiez l'emplacement et le statut de INDEX01.DBA_TABLESPACES V$TABLESPACE V$DATAFILE 2 Allouez 500 Ko d'espace disque supplémentaire au tablespace DATA02 et vérifiez le résultat. puis vérifiez le résultat. e Affichez les informations à partir du dictionnaire de données. Utilisez la commande ALTER TABLESPACE pour redéplacer le tablespace. Mettez le tablespace RONLY en lecture seule et vérifiez-le en exécutant une interrogation appropriée.Exercice 8 : gérer les tablespaces et les fichiers de données 1 Créez des tablespaces permanents associés aux noms et aux paramètres de stockage suivants : a DATA01. 4 a Créez une table dans le tablespace RONLY. géré au moyen du dictionnaire. Utilisez V$DATAFILE pour vérifier le statut. Ne définissez pas d'emplacement de fichier. b DATA02. utilisez l'une des interrogations suivantes : . 3 Déplacez le tablespace INDEX01 vers le sous-répertoire u06. d RONLY pour les tables en lecture seule avec le stockage par défaut. Indices : Mettez le tablespace INDEX01 hors ligne. Utilisez la commande appropriée du système d'exploitation pour déplacer le tablespace vers u06. 6 Affectez la valeur $HOME/ORADATA/u05 au paramètre DB_CREATE_FILE_DEST uniquement dans la mémoire. Créez un tablespace DATA03 de 5 Mo. Oracle9i Database Administration I 8-48 . Indice : Pour obtenir des informations sur les tablespaces. géré localement avec des extents de taille uniforme (assurez-vous que les tailles des extents utilisés dans le tablespace sont des multiples de 100 Ko). Que se passe-t-il ? 5 Supprimez le tablespace RONLY et le fichier de données associé. Utilisez V$DATAFILE pour vérifier le statut. Vérifiez la création du fichier de données. Tous droits réservés.Structure de stockage et relations Copyright © Oracle Corporation. 2001. . Tous droits réservés. vous pourrez : • décrire la structure logique de la base de données • énumérer les types de segment et leur utilisation • énumérer les mots-clés qui gèrent l'utilisation de l'espace de bloc • obtenir des informations sur les structures de stockage à partir du dictionnaire de données 9-2 Copyright © Oracle Corporation.Objectifs A la fin de ce chapitre. 2001. Oracle9i Database Administration I 9-2 . Ce chapitre prolonge la description de la structure de stockage d'une base de données et aborde plus particulièrement les segments.dbf S_DEPT S_EMP FIRST_N AME Index RBS2 (suite) Seg Seg Seg Seg données données Index RB Seg Data Seg Index Seg RB Seg RB Seg RB Seg RB EXTENTS 1 2 1 2 1 2 1 1 2 2 1 DISPO 1 1 2 2 1 BLOCS DE DONNEES Oracle 9-3 Copyright © Oracle Corporation.D.Structure de stockage et relations Base de données PROD TABLESPACES SYSTEM FICHIERS DE DONNEES USER_DATA DISK2/ USER1. 2001. ses tablespaces et ses fichiers de données. Index D.dbf RBS1 RBS2 RBS1 (suite) TEMP DISK1/ TEMP. Architecture de base de données Le chapitre précédent portait sur la structure de stockage d'une base de données. DISK3/ USER2. les extents (ensemble de blocs contigus) et les blocs de données. Oracle9i Database Administration I 9-3 . Tous droits réservés.D.dbf Temp Seg Temp DISK1/SYS1.dbf SEGMENTS Table D.dbf S_DEPT S_EMP Seg données (suite) RBS DISK1/ ROLL1. L'utilisation de ce type de segment requiert l'option de partitionnement d'Oracle9i Enterprise Edition. Lorsqu'une table est partitionnée. Table : Les données d'une base sont généralement stockées dans des tables. chacune de ses partitions constitue un segment qui peut être contrôlé de manière indépendante à l'aide des paramètres de stockage. chacune se trouvant dans un tablespace différent. Le serveur Oracle prend actuellement en charge le partitionnement à l'aide d'une série de valeurs de clé. Cette section décrit les différents types de segment. Ils utilisent de l'espace dans les fichiers de données d'une base. d'un algorithme de hachage et d'une liste de valeurs. ni partitionnée. Partition de table : L'évolutivité et la disponibilité sont des points très importants à prendre en compte lorsqu'une table de base de données est utilisée simultanément par de nombreux utilisateurs. 2001. Toutes les données d'un segment de table doivent être stockées dans un seul tablespace. Oracle9i Database Administration I 9-4 . Les données d'un segment de table ne sont pas stockées dans un ordre spécifique et l'administrateur de la base de données a un contrôle très limité sur l'emplacement des lignes dans les blocs d'une table. Types de segment Les segments sont des objets qui occupent de l'espace dans une base de données. Un segment de table stocke les données d'une table qui n'est ni incluse dans un cluster. Tous droits réservés. les données de la table peuvent être stockées dans plusieurs partitions.Types de segment Table Partition de table Cluster Index 9-4 Copyright © Oracle Corporation. Dans ce cas. Les tables d'un cluster appartiennent au même segment et partagent les mêmes caractéristiques de stockage. trois segments d'index sont utilisés. un cluster est un type de segment de données.Types de segment (suite) Cluster : A l'instar d'une table. Les lignes d'un cluster sont stockées en fonction des valeurs des colonnes de clé. Un cluster peut contenir une ou plusieurs tables. Si une table possède trois index. Index : Toutes les entrées d'un index spécifique sont stockées dans un même segment d'index. Les lignes d'une table incluse dans un cluster sont accessibles à l'aide d'un index ou d'un algorithme de hachage. Le segment d'index permet de rechercher l'emplacement des lignes dans une table en fonction d'une clé spécifique. Oracle9i Database Administration I 9-5 . Oracle9i Database Administration I 9-6 . SELECT DISTINCT et SELECT GROUP BY. car toutes les données peuvent être extraites directement à partir de l'arborescence d'index.Types de segment Table organisée en index Partition d'index Segment d'annulation Segment temporaire 9-6 Copyright © Oracle Corporation. Tous droits réservés. Dans ce cas. Lorsqu'un tri nécessite davantage d'espace disponible que n'en contient la mémoire. Une table organisée en index ne nécessite pas de recherche. Segment d'annulation : Un segment d'annulation est utilisé par une transaction qui apporte des modifications à une base. Partition d'index : Un index peut être partitionné et réparti dans plusieurs tablespaces. Un index partitionné est utilisé principalement pour réduire la contention en répartissant les entrées/sorties d'index. Ce type de segment requiert l'option de partitionnement d'Oracle9i Enterprise Edition. Types de segment Table organisée en index : Les données d'une table organisée en index sont stockées dans l'index en fonction de la valeur de clé. l'ancienne valeur est stockée dans le segment d'annulation pour permettre à l'utilisateur d'annuler les modifications. des résultats intermédiaires sont écrits sur le disque dans des segments temporaires. Avant toute modification des blocs de données ou d'index. 2001. le serveur Oracle tente d'effectuer les tris dans la mémoire. s'il le souhaite. chaque partition correspond à un segment et ne peut pas occuper plusieurs tablespaces. Segment temporaire : Lorsque l'utilisateur exécute des commandes telles que CREATE INDEX. bsq en même temps que la base de données. 2001. la table interne. est stockée sous forme de segment distinct. Le segment de bootstrap ne peut pas faire l'objet d'une interrogation. Table imbriquée : Une colonne de table peut être constituée d'une table définie par l'utilisateur contenant. tels que des documents texte. ni d'une mise à jour. des images ou des données vidéo. par exemple.Types de segment Segment LOB Table imbriquée Segment de bootstrap 9-7 Copyright © Oracle Corporation. appelé également segment de cache. Types de segment Segment LOB : Vous pouvez utiliser une ou plusieurs colonnes d'une table pour stocker des objets LOB (Large Object). Ce segment permet d'initialiser le cache du dictionnaire de données lorsqu'une instance ouvre la base. Dans ce cas. est créé par le script sql. Tous droits réservés. le serveur Oracle les enregistre dans des segments distincts appelés segments LOB. les articles d'une commande. Oracle9i Database Administration I 9-7 . Si les valeurs de ces colonnes sont volumineuse. Segment de bootstrap : Un segment de bootstrap. et ne nécessite aucune opération de maintenance de la part de l'administrateur de la base de données. appelée table imbriquée. La table contient uniquement un pointeur vers l'emplacement des données LOB correspondantes. Priorité des clauses de stockage Valeur Oracle par défaut Tablespace Segment 9-8 Copyright © Oracle Corporation, 2001. Tous droits réservés. Paramètres de stockage Une clause de stockage peut être définie au niveau du segment afin de contrôler le mode d'allocation des extents à un segment. • Tout paramètre de stockage défini au niveau du segment annule l'option correspondante définie au niveau du tablespace, sauf pour les paramètres de tablespace MINIMUM EXTENT et UNIFORM SIZE. • Lorsque des paramètres de stockage ne sont pas définis explicitement au niveau du segment, les paramètres définis au niveau du tablespace sont utilisés par défaut. • Lorsque les paramètres de stockage ne sont pas définis explicitement au niveau du tablespace, les valeurs système par défaut du serveur Oracle sont utilisées. Autres considérations : • Lorsque vous modifiez des paramètres de stockage, les nouvelles valeurs s'appliquent uniquement aux extents non encore alloués. • Certains paramètres ne peuvent pas être définis au niveau du tablespace. Ils doivent être indiqués au niveau du segment uniquement. • Lorsque vous définissez une taille minimum d'extent pour le tablespace, cette taille s'applique à tous les extents alloués ultérieurement à des segments du tablespace. Oracle9i Database Administration I 9-8 Allocation et libération d'extents • Un extent est une tranche d'espace utilisée par un segment dans un tablespace. • Un extent est alloué lorsqu'un segment est : – créé – étendu – modifié • Un extent est libéré lorsqu'un segment est : – supprimé – modifié – vidé 9-9 Copyright © Oracle Corporation, 2001. Tous droits réservés. Oracle9i Database Administration I 9-9 Extents utilisés et extents libres Fichier de données En-tête de fichier Extent utilisé Extent libre 9-10 Copyright © Oracle Corporation, 2001. Tous droits réservés. Extents Lorsqu'un tablespace est créé, les fichiers de données qu'il contient présentent un en-tête qui correspond au(x) premier(s) bloc(s) du fichier. Chaque segment créé reçoit de l'espace provenant des extents libres du tablespace. L'espace contigu utilisé par un segment est appelé extent utilisé. Lorsque des segments libèrent de l'espace, les extents libérés sont ajoutés au pool d'extents libres disponibles dans le tablespace. Oracle9i Database Administration I 9-10 Bloc de base de données • Unité minimum d'E/S • Comprend un ou plusieurs blocs du système d'exploitation • Est défini à la création d'un tablespace • DB_BLOCK_SIZE détermine la taille de bloc par défaut 9-11 Copyright © Oracle Corporation, 2001. Tous droits réservés. Oracle9i Database Administration I 9-11 Support de plusieurs tailles de bloc • Il est possible de créer une base de données avec une taille de bloc standard et jusqu'à quatre tailles de bloc non standard. • Les tailles de bloc peuvent être égales à toute puissance de deux comprise entre 2 et 32 Ko. 9-12 Copyright © Oracle Corporation, 2001. Tous droits réservés. Support de plusieurs tailles de bloc Oracle9i prend en charge la création de bases de données à plusieurs tailles de bloc. Cette fonction est particulièrement utile dans les cas suivants : • Lors du transport d'un tablespace d'une base de données OLTP (Traitement des transactions en ligne) vers un data warehouse d'entreprise. Oracle9i facilite le transport entre des bases de données possédant des tailles de bloc différentes. • Lorsque vous souhaitez pouvoir placer des objets dans des tablespaces possédant la taille de bloc appropriée afin d'optimiser les performances des E/S. La taille de bloc du tablespace SYSTEM est nommée taille de bloc standard. Elle est définie à la création de la base de données. Oracle9i vous permet de définir jusqu'à quatre tailles de bloc non standard en complément de la taille de bloc standard. Dans le fichier d'initialisation, vous pouvez configurer des sous-caches dans le cache de tampons (buffer cache) pour chacune de ces tailles de bloc. Les sous-caches peuvent également être configurés lorsqu'une instance s'exécute. Vous pouvez affecter n'importe quelle taille de bloc non standard définie aux tablespaces que vous créez. La taille de bloc standard est utilisée pour le tablespace SYSTEM et pour la plupart des autres tablespaces. Oracle9i Database Administration I 9-12 Taille de bloc standard • Elle est définie à la création de la base de données à l'aide du paramètre DB_BLOCK_SIZE. Pour la modifier, il est nécessaire de recréer la base de données. • Elle est utilisée par les tablespaces SYSTEM et TEMPORARY. • DB_CACHE_SIZE indique la taille du cache de tampons DEFAULT pour une taille de bloc standard. – Taille minimale = un granule (4 Mo ou 16 Mo) – Valeur par défaut = 48 Mo 9-13 Copyright © Oracle Corporation, 2001. Tous droits réservés. Taille de bloc standard Le paramètre d'initialisation DB_BLOCK_SIZE définit la taille de bloc standard de la base de données. Cette taille de bloc est utilisée par le tablespace SYSTEM et par les tablespaces temporaires. Sauf indication contraire, la taille de bloc standard est également utilisée comme taille de bloc par défaut d'un tablespace. Oracle peut prendre en charge jusqu'à quatre tailles de bloc non standard supplémentaires. La taille de bloc la plus fréquemment utilisée doit être sélectionnée comme taille de bloc standard. Cette taille de bloc est souvent la seule à être définie. Le plus souvent, le paramètre DB_BLOCK_SIZE est défini avec la valeur 4 Ko ou 8 Ko. Si elle n'est pas définie, la taille de bloc par défaut est propre au système d'exploitation et généralement parfaitement adaptée. Dès lors qu'une base de données est créée, il est impossible de modifier la taille de bloc. La seule solution consiste à recréer la base. Le paramètre d'initialisation DB_CACHE_SIZE remplace le paramètre DB_BLOCK_BUFFERS utilisé dans les versions précédentes. Il définit la taille du cache des tampons utilisant la taille de bloc standard. La taille de bloc standard est quant à elle définie par le paramètre DB_BLOCK_SIZE. Le paramètre DB_BLOCK_BUFFERS fonctionne toujours, pour la compatibilité avec les versions antérieures, mais il reste un paramètre statique. Il ne peut pas être combiné à l'un des paramètres dynamiques de dimensionnement. Remarque : Le granule est une unité d'allocation de mémoire virtuelle contiguë. La taille d'un granule dépend de la taille totale estimée de la mémoire SGA, qui est calculée en fonction de la valeur du paramètre SGA_MAX_SIZE : 4 Mo si la taille de la mémoire SGA estimée est inférieure à 128 Mo, 16 Mo dans les autres cas. Oracle9i Database Administration I 9-13 Tailles de bloc non standard • Configurez des caches supplémentaires avec les paramètres dynamiques suivants : – – – – – DB_2K_CACHE_SIZE pour des blocs de 2 Ko DB_4K_CACHE_SIZE pour des blocs de 4 Ko DB_8K_CACHE_SIZE pour des blocs de 8 Ko DB_16K_CACHE_SIZE pour des blocs de 16 Ko DB_32K_CACHE_SIZE pour des blocs de 32 Ko • DB_nK_CACHE_SIZE n'est pas autorisé si nK est la taille de bloc standard • Taille minimale de chaque cache : un granule 9-14 Copyright © Oracle Corporation, 2001. Tous droits réservés. Tailles de bloc non standard Les paramètres d'initialisation de cache de tampons déterminent la taille des caches de la mémoire SGA. Ils vous permettent de définir la taille des caches pour les différentes tailles de bloc utilisées par la base. Si vous souhaitez utiliser plusieurs tailles de bloc dans votre base, le paramètre DB_CACHE_SIZE et au moins un jeu de paramètres DB_nK_CACHE_SIZE doivent être définis. Chaque paramètre détermine la taille du cache de tampons pour la taille de bloc correspondante. Par défaut, la valeur zéro est affectée au paramètre DB_nK_CACHE_SIZE. N'affectez pas la valeur zéro à ce paramètre si des tablespaces en ligne (online) ont une taille de bloc de n Ko. Les restrictions spécifiques à la plate-forme qui concernent la taille de bloc s'appliquent. Par exemple, vous ne pouvez pas définir le paramètre DB_32K_CACHE_SIZE si la taille maximale de bloc est inférieure à 32 Ko pour la plate-forme. De même, vous ne pouvez pas définir le paramètre DB_2K_CACHE_SIZE si la taille minimale de bloc est supérieure à 2 Ko. Remarque : Vous ne pouvez pas utiliser ces paramètres pour définir la taille du cache pour la taille de bloc standard. Par exemple, si la valeur de DB_BLOCK_SIZE est de 2 Ko, il est interdit de définir le paramètre DB_2K_CACHE_SIZE. La taille du cache pour la taille de bloc standard est toujours déterminée à partir de la valeur de DB_CACHE_SIZE. Le granule est une unité d'allocation de mémoire virtuelle contiguë. La taille d'un granule dépend de la taille totale estimée de la mémoire SGA, qui est calculée en fonction de la valeur du paramètre SGA_MAX_SIZE. Oracle9i Database Administration I 9-14 Tailles de bloc non standard Utilisation d'Oracle Enterprise Manager pour configurer des caches supplémentaires A partir de la console OEM, procédez comme suit : 1. Sélectionnez Databases > Configuration. 2. Sélectionnez All Initialization Parameters. 3. Apportez les modifications appropriées aux paramètres suivants : – DB_2K_CACHE_SIZE – DB_4K_CACHE_SIZE – DB_8K_CACHE_SIZE – DB_16K_CACHE_SIZE – DB_32K_CACHE_SIZE 4. Cliquez sur OK. Oracle9i Database Administration I 9-15 Créer des tablespaces de taille de bloc non standard CREATE TABLESPACE tbs_1 DATAFILE 'tbs_1.dbf' SIZE 10M BLOCKSIZE 4K; DESCRIBE dba_tablespaces Name Null? Type ------------------ -------- -----------TABLESPACE_NAME NOT NULL VARCHAR2(30) BLOCK_SIZE NOT NULL NUMBER ... 9-16 Copyright © Oracle Corporation, 2001. Tous droits réservés. Créer des tablespaces de taille de bloc non standard Utilisez la clause BLOCKSIZE pour définir une taille de bloc non standard pour le tablespace. Vous pouvez indiquer la taille en octets ou en kilo-octets à l'aide du suffixe K. Pour définir la clause BLOCKSIZE, vous devez définir le paramètre DB_CACHE_SIZE et au moins un jeu de paramètres DB_nK_CACHE_SIZE. En outre, le nombre entier que vous indiquez dans cette clause doit correspondre à la valeur de l'un des paramètres DB_nK_CACHE_SIZE. Restriction : Vous ne pouvez pas définir des tailles de bloc non standard pour un tablespace temporaire (TEMPORARY) ou si vous souhaitez affecter ce tablespace en tant que tablespace temporaire pour tous les utilisateurs. La première instruction de la diapositive crée un tablespace appelé tbs_1 avec le fichier tbs_1.dbf dont la taille de bloc est de 4 Ko. Pour que cette instruction aboutisse, les mémoires tampon (buffers) de 4 Ko doivent être configurées dans le cache de tampons. Remarque : Une nouvelle colonne a été ajoutée aux vues *_TABLESPACES du dictionnaire afin d'indiquer la taille de bloc utilisée dans un tablespace particulier. Oracle9i Database Administration I 9-16 Créer des tablespaces de taille de bloc non standard Utiliser Oracle Enterprise Manager pour créer un tablespace de taille de bloc non standard A partir de la console OEM, procédez comme suit : 1. Sélectionnez Databases > Storage > Tablespaces. 2. Sélectionnez Create dans le menu contextuel, accessible à l'aide du bouton droit de la souris. 3. Pour définir la taille de bloc lors de la création d'un tablespace, sélectionnez la page Storage et indiquez la valeur de Block Size. 4. Cliquez sur Create. Oracle9i Database Administration I 9-17 Règles relatives à l'utilisation de plusieurs tailles de bloc • Toutes les partitions d'un objet doivent résider dans des tablespaces ayant la même taille de bloc. • Tous les tablespaces temporaires, y compris les tablespaces permanents utilisés comme tablespaces temporaires par défaut, doivent utiliser la taille de bloc standard. • Les segments de débordement d'une table organisée en index et les segments LOB en dehors de la ligne peuvent être stockés dans un tablespace ayant une taille de bloc différente de celle de la table de base. 9-18 Copyright © Oracle Corporation, 2001. Tous droits réservés. Oracle9i Database Administration I 9-18 Contenu d'un bloc de base de données En-tête Espace libre Données 9-19 Copyright © Oracle Corporation, 2001. Tous droits réservés. Blocs de données Un bloc de données Oracle contient : • Un en-tête de bloc : l'en-tête contient l'adresse du bloc de données, le répertoire des tables, le répertoire des lignes et les espaces de transaction utilisés lorsque des transactions modifient des lignes du bloc. La croissance d'un en-tête de bloc s'effectue du haut vers le bas. • Un espace de données : les données des lignes sont insérées dans le bloc du bas vers le haut. • Un espace libre : l'espace libre se situe au milieu du bloc, ce qui permet l'extension de l'en-tête et des données de ligne lorsque cela s'avère nécessaire. A l'origine, l'espace libre d'un bloc est contigu, mais il peut être fragmenté par les suppressions et les mises à jour. Lorsque c'est nécessaire, le serveur Oracle effectue une fusion de cet espace. Oracle9i Database Administration I 9-19 Paramètres d'utilisation de l'espace de bloc INITRANS MAXTRANS PCTFREE PCTUSED 9-20 Copyright © Oracle Corporation, 2001. Tous droits réservés. Paramètres d'utilisation de l'espace de bloc Les paramètres d'utilisation de l'espace de bloc permettent de contrôler l'utilisation de l'espace dans les segments de données et dans les segments d'index. Paramètres de contrôle de la simultanéité d'accès aux données : Les paramètres INITRANS et MAXTRANS définissent le nombre initial et le nombre maximum d'espaces de transaction créés dans un bloc d'index ou dans un bloc de données. Ces espaces permettent de stocker des informations sur les transactions qui modifient le bloc à un point donné dans le temps. Une transaction n'utilise qu'un espace de transaction, même si elle modifie plusieurs lignes ou entrées d'index. Le paramètre INITRANS, dont la valeur par défaut est 1 pour les segments de données et 2 pour les segments d'index, garantit un niveau minimum de simultanéité d'accès aux données. Par exemple, si vous lui affectez la valeur 3, le paramètre INITRANS permet à trois transactions au moins de modifier simultanément le bloc. Si nécessaire, vous pouvez allouer des espaces de transaction supplémentaires en utilisant l'espace libre du bloc afin de permettre à un plus grand nombre de transactions de modifier simultanément des lignes du bloc. Le paramètre MAXTRANS, dont la valeur par défaut est 255, définit le nombre maximum de transactions pouvant modifier simultanément un bloc de données ou un bloc d'index. Cette valeur limite l'espace utilisé dans le bloc par les espaces de transaction et garantit ainsi un espace disponible suffisant pour les données de ligne et d'index. Oracle9i Database Administration I 9-20 Paramètres d'utilisation de l'espace de bloc (suite) Paramètres de gestion de l'utilisation de l'espace de données : Le paramètre PCTFREE d'un segment de données définit, pour chaque bloc de données, le pourcentage d'espace réservé à l'augmentation de la taille du bloc résultant des mises à jour de lignes. La valeur par défaut de ce paramètre est de 10%. Le paramètre PCTUSED d'un segment de données correspond au pourcentage minimum d'espace utilisé que le serveur Oracle tente de conserver pour chaque bloc de données de la table. Un bloc est replacé dans la liste de blocs libres (free list) lorsque la quantité d'espace utilisé devient inférieure à la valeur du paramètre PCTUSED. La liste de blocs libres d'un segment contient les blocs qui pourront être utilisés pour des insertions. Par défaut, un segment est créé avec une seule liste de blocs libres. Vous pouvez définir davantage de listes pour un segment à l'aide du paramètre FREELISTS de la clause de stockage. Le paramètre PCTUSED prend par défaut la valeur 40%. Les paramètres PCTFREE et PCTUSED représentent le pourcentage d'espace de données disponible, à savoir l'espace de bloc restant une fois l'espace d'en-tête déduit de la taille totale du bloc. Remarque : L'utilisation de ces paramètres avec les index est présentée en détail dans le chapitre "Gérer les index". Le paramètre FREELISTS est présenté en détail dans le cours Oracle9i: Performance Tuning. Oracle9i Database Administration I 9-21 Gestion des blocs de données Vous disposez de deux méthodes pour gérer les blocs de données : • Gestion automatique de l'espace de segment • Gestion manuelle 9-22 Copyright © Oracle Corporation, 2001. Tous droits réservés. Oracle9i Database Administration I 9-22 Gestion automatique de l'espace de segment • Cette méthode permet de gérer l'espace libre des segments de base de données. • Le suivi de la quantité d'espace libre et utilisé dans les segments s'effectue à l'aide de bitmaps et non de listes de blocs libres. • Cette méthode : – facilite la gestion – permet une meilleure utilisation de l'espace – améliore les performances des opérations INSERT simultanées • Restriction : Elle ne peut pas être utilisée pour les tablespaces qui contiendront des LOB. 9-23 Copyright © Oracle Corporation, 2001. Tous droits réservés. Gestion automatique de l'espace de segment Facilité de gestion PCTUSED, FREELISTS et FREELIST GROUPS sont gérés automatiquement. Meilleure utilisation de l'espace Tous les objets, et notamment ceux dont les tailles de ligne varient énormément, utilisent plus efficacement l'espace. Meilleure gestion de la simultanéité d'accès aux données Le réglage en cours d'exécution des variations des accès simultanés est amélioré. Oracle9i Database Administration I 9-23 Gestion automatique de l'espace de segment • Les segments bitmap contiennent un bitmap qui indique le statut de chaque bloc dans le segment par rapport à son espace disponible. • La représentation des blocs est contenue dans un ensemble de blocs particulier, appelés "blocs bitmap" (BMB). • Lorsque vous insérez une ligne, le serveur recherche dans la représentation des blocs un bloc disposant d'un espace suffisant. • Lorsque la quantité d'espace disponible d'un bloc varie, le nouveau statut de ce dernier est indiqué dans le bitmap. 9-24 Copyright © Oracle Corporation, 2001. Tous droits réservés. Oracle9i Database Administration I 9-24 Configurer la gestion automatique de l'espace de segment • Vous ne pouvez activer la gestion automatique de l'espace de segment qu'au niveau tablespace pour les tablespaces gérés localement. CREATE TABLESPACE data02 DATAFILE ‘/u01/oradata/data02.dbf’ SIZE 5M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K SEGMENT SPACE MANAGEMENT AUTO; • Une fois qu'un tablespace est créé, les spécifications s'appliquent à tous les segments créés dans le tablespace. 9-25 Copyright © Oracle Corporation, 2001. Tous droits réservés. Configurer la gestion automatique de l'espace de segment La clause SEGMENT SPACE MANGEMENT AUTO de la commande CREATE TABLESPACE permet de définir des segments bitmap, qui ne pourront pas être modifiés. Les paramètres PCTUSED, FREELIST et FREELIST GROUPS définis seront ignorés. Les tables normales, les index, les tables organisées en index (IOT) et les LOB constituent des segments qui peuvent être gérés par des bitmaps. Oracle9i Database Administration I 9-25 il s'agissait de la seule méthode disponible pour la gestion des blocs de données. Elle utilise des paramètres tels que PCTFREE.Gestion manuelle des blocs de données • Permet de configurer manuellement les blocs de données à l'aide de paramètres tels que : – PCTFREE – PCTUSED – FREELIST • Seule méthode disponible dans les versions antérieures d'Oracle 9-26 Copyright © Oracle Corporation. Tous droits réservés. PCTUSED et FREELIST. Gestion manuelle des blocs de données La gestion manuelle vous permet de configurer le type d'utilisation de l'espace de bloc et la disponibilité d'un bloc. 2001. La méthode de gestion manuelle est la méthode utilisée par défaut. Oracle9i Database Administration I 9-26 . Dans les versions antérieures d'Oracle. 4. les insertions sont possibles dans le bloc. Au fur et à mesure que des lignes sont insérées. une colonne NULL se voit affecter une valeur). Toutefois. Lorsque le taux d'utilisation est inférieur à la valeur du paramètre PCTUSED. Si des lignes du bloc sont supprimées ou que leur taille diminue à la suite de mises à jour. Utilisation de l'espace de bloc Les étapes qui suivent décrivent la gestion de l'espace d'un bloc pour un segment de données qui présente les paramètres PCTFREE=20 et PCTUSED=40 : 1. Remarque : Les règles de définition des paramètres PCTFREE et PCTUSED sont décrites en détail dans les chapitres "Gérer les tables" et "Gérer les index".PCTFREE) de l'espace de données disponible dans le bloc. 2. soit 40% dans notre exemple. Les insertions ne sont plus possibles lorsque les lignes occupent au moins 80% (100 . Des lignes sont insérées dans le bloc jusqu'à ce que son espace libre soit égal ou inférieur à 20%.Utilisation de l'espace de bloc PCTFREE=20 PCTUSED=40 Insertions Insertions 80 % (en dehors de la liste de blocs libres) 1 2 Insertions 80 % 40 % Insertion (dans la liste de blocs libres) 3 4 9-27 Copyright © Oracle Corporation. Les 20% restants peuvent être utilisés lorsque la taille d'une ligne augmente (par exemple. Ainsi. Oracle9i Database Administration I 9-27 . Tous droits réservés. le taux d'utilisation de l'espace de bloc peut passer en dessous de 80%. aucune insertion ne s'effectue dans un bloc tant que le taux d'utilisation n'est pas inférieur à la valeur de PCTUSED. 2001. le taux d'utilisation de l'espace de bloc peut dépasser 80% à la suite de mises à jour. 3. le taux d'utilisation du bloc augmente et le cycle redémarre à partir de l'étape 1. Sélectionnez Databases > Schema > Table. Cliquez sur Create. 2.Utilisation de l'espace de bloc Utiliser Oracle Enterprise Manager pour définir PCTFREE et PCTUSED A partir de la console OEM. accessible par le bouton droit de la souris. Sélectionnez Create dans le menu contextuel. Oracle9i Database Administration I 9-28 . 4. sélectionnez la page Storage et entrez les informations relatives à l'utilisation de l'espace (Space Usage). procédez comme suit : 1. Pour définir PCTFREE et PCTUSED lors de la création d'une table. 3. les segments et les extents libres et utilisés en interrogeant le dictionnaire de données. l'espace de chaque fichier de données. Une ligne est ajoutée à la vue DBA_TABLESPACES lorsque vous créez un tablespace comportant un ou plusieurs fichiers. A ce stade. correspond à un seul extent libre dans la vue DBA_FREE_SPACE. L'espace alloué aux extents de ce segment est visible dans la vue DBA_EXTENTS. Oracle9i Database Administration I 9-29 . Par ailleurs. une ligne est ajoutée à la vue DBA_DATA_FILES pour chaque fichier de la base de données. tandis que la vue DBA_FREE_SPACE est corrigée afin d'indiquer une quantité d'espace libre moindre dans les fichiers dans lesquels les extents ont été créés pour le segment. Tous droits réservés. interrogez les vues suivantes : • DBA_EXTENTS • DBA_SEGMENTS • DBA_TABLESPACES • DBA_DATA_FILES • DBA_FREE_SPACE 9-29 Copyright © Oracle Corporation. La totalité de l'espace d'un fichier (bloc d'en-tête exclu) doit être prise en compte dans la vue DBA_FREE_SPACE ou DBA_EXTENTS.Obtenir des informations sur le stockage Pour obtenir des informations sur le stockage. 2001. les fichiers de données. en-tête exclu. une ligne s'affiche dans la vue DBA_SEGMENTS. Lorsqu'un segment est créé. Interroger le dictionnaire de données Vous pouvez visualiser les relations entre les tablespaces. -----0 4 2 1 4 27 2 4 32 3 4 42 4 4 57 5 5 10 15 20 5 rows selected.---------. Oracle9i Database Administration I 9-30 .tablespace_name.blocks 2 FROM dba_extents 3 WHERE owner='HR' 4 AND segment_name='EMPLOYEES'.blocks 2 FROM dba_segments 3 WHERE owner = 'HR'.-------. SEGMENT_NAME TABLESPACE EXTENTS BLOCKS --------------.file_id.block_id.---------.------.extents.---------REGIONS SAMPLE 1 8 LOCATIONS SAMPLE 1 8 DEPARTMENTS SAMPLE 1 8 JOBS SAMPLE 1 8 EMPLOYEES SAMPLE 1 8 JOB_HISTORY SAMPLE 1 8 5 rows selected.Interroger le dictionnaire de données (suite) Vue DBA_SEGMENTS Interrogez la vue DBA_SEGMENTS pour obtenir le nombre d'extents et de blocs alloués à un segment. SQL> SELECT segment_name. EXTENT_ID FILE_ID BLOCK_ID BLOCKS --------. Vue DBA_EXTENTS Interrogez la vue DBA_EXTENTS pour vérifier les extents d'un segment donné. SQL> SELECT extent_id. SQLPLUS> SELECT tablespace_name. 2 3 1 1 1 MAX(BLOCKS SUM(BLOCKS 1284 2329 1023 5626 2431 1533 2419 1023 5626 2431 ----------------------------------------------------- Oracle9i Database Administration I 9-31 . count(*).Interroger le dictionnaire de données (suite) Vue DBA_FREE_SPACE Interrogez la vue DBA_FREE_SPACE pour vérifier les extents d'un segment donné. sum(blocks) 3> FROM dba_free_space 4> GROUP BY tablespace_name. 2> max(blocks). TABLESPACE_NAMECOUNT(*) DATA01 RBS SORT SYSTEM TEMP 5 rows selected. Oracle9i Database Administration I 9-32 .Synthèse Ce chapitre vous a permis d'apprendre à : • utiliser des tablespaces pour : – séparer des segments afin de faciliter l'administration – gérer l'allocation d'espace utilisateur • classer les segments par catégories en fonction du type d'information qu'ils contiennent • définir des tailles d'extent à l'aide de la clause de stockage • gérer l'utilisation de l'espace de bloc 9-32 Copyright © Oracle Corporation. Tous droits réservés. 2001. Présentation de l'exercice 9 Remarque : Cet exercice peut être réalisé avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.Présentation de l'exercice 9 Dans cet exercice. vous allez : • identifier et obtenir des informations sur les différents types de structure de stockage de la base de données 9-33 Copyright © Oracle Corporation. Tous droits réservés. Oracle9i Database Administration I 9-33 . 2001. 2 Identifiez les différents types de segment de la base de données. l'espace libre total et le plus grand extent libre de chaque tablespace.sql. Cette interrogation est utile pour identifier les segments susceptibles de générer des erreurs lors de futurs chargements de données.Exercice 9 : structure de stockage et relations 1 Connectez-vous sous l'ID utilisateur SYSTEM. 3 Ecrivez une interrogation permettant de vérifier les segments associés à une valeur inférieure de cinq extents au nombre maximal d'extents. Ne tenez pas compte du segment de bootstrap. 7 Répertoriez les segments qui généreront des erreurs lors de la tentative d'allocation d'un extent supplémentaire. 4 Quels fichiers disposent d'un espace alloué pour la table EMP ? 5 Exécutez le script lab09_05. puis exécutez le script lab09_01. en raison d'un espace insuffisant. Oracle9i Database Administration I 9-34 . L'interrogation doit afficher le nombre de fragments.sql pour créer des tables et des index. 6 Répertoriez l'espace libre disponible par tablespace. Tous droits réservés. 2001. .Gérer les données d'annulation Copyright © Oracle Corporation. vous pourrez : • décrire la fonction des données d'annulation • implémenter la gestion automatique des annulations • créer et configurer des segments d'annulation • extraire du dictionnaire de données des informations sur les segments d'annulation 10-2 Copyright © Oracle Corporation.Objectifs A la fin de ce chapitre. 2001. Oracle9i Database Administration I 10-2 . Tous droits réservés. Gestion manuelle Cette méthode vous permet de gérer manuellement la création. ces deux termes sont traduits par annulation. l'allocation et le réglage (tuning) des segments d'annulation. Oracle9i Database Administration I 10-3 .Gérer les données d'annulation • Deux méthodes de gestion des données d'annulation sont disponibles : – Gestion automatique – Gestion manuelle • Dans Oracle9i en version anglaise. Pour plus d'informations sur la gestion manuelle des annulations. Elle était la seule disponible dans les versions antérieures à Oracle9i. En version française. Tous droits réservés. 10-3 Copyright © Oracle Corporation. reportez-vous à l'annexe B "Gérer manuellement les données d'annulation". l'allocation et le réglage (tuning) des segments d'annulation. Gérer les données d'annulation Gestion automatique Le serveur Oracle gère automatiquement la création. le terme undo remplace le terme rollback qui était jusqu'alors employé. 2001. Oracle9i Database Administration I 10-4 . Segment d'annulation Un segment d'annulation permet d'enregistrer l'ancienne valeur (données d'annulation) lorsqu'un processus modifie les données d'une base. 2001. L'en-tête d'un segment d'annulation contient une table des transactions dans laquelle sont stockées des informations sur les transactions en cours associées au segment d'annulation. Les données d'annulation d'une transaction séquentielle sont stockées dans un seul segment d'annulation.Segment d'annulation Ancienne image Table Nouvelle image Segment d'annulation Transaction de mise à jour 10-4 Copyright © Oracle Corporation. Plusieurs transactions simultanées peuvent écrire des données dans un même segment d'annulation. Tous droits réservés. Il enregistre l'emplacement des données et leur valeur avant modification. La récupération est possible uniquement dans la mesure où les modifications effectuées dans le segment d'annulation sont également protégées par les fichiers de journalisation (fichiers redo log). Oracle9i Database Administration I 10-5 . Fonction des segments d'annulation Annulation d'une transaction Lorsqu'une transaction modifie une ligne dans une table. l'ancienne image des colonnes modifiées (données d'annulation) est enregistrée dans le segment d'annulation. le serveur Oracle restaure les valeurs d'origine en les réécrivant dans la ligne du segment d'annulation. Cohérence en lecture Lorsque des transactions sont en cours. Tous droits réservés. les autres utilisateurs de la base de données ne doivent pas avoir connaissance des modifications non validées effectuées par ces transactions. une instruction ne doit pas avoir connaissance des modifications validées après le début de son exécution. En cas d'annulation (rollback) de la transaction. Récupération d'une transaction Si l'instance échoue tandis que des transactions sont en cours. Les anciennes valeurs (données d'annulation) des segments d'annulation sont également utilisées pour fournir aux lecteurs une image cohérente d'une instruction donnée. 2001. le serveur Oracle doit annuler les modifications non validées lors de la réouverture de la base de données. En outre.Fonction des segments d'annulation Annulation d'une transaction Récupération d'une transaction Segment d'annulation Cohérence en lecture 10-5 Copyright © Oracle Corporation. L'annulation fait partie de la récupération de la transaction. Cohérence en lecture d'une transaction Une instruction SQL est toujours cohérente en lecture. Dans les deux cas. Prenons le cas d'une longue interrogation exécutée pendant que plusieurs modifications sont en cours : si une ligne contient des modifications non validées au début de l'interrogation. même si celles-ci sont modifiées par d'autres transactions. Tous droits réservés. Cohérence en lecture Le serveur Oracle permet à une instruction de voir les données de manière cohérente à un instant donné. Oracle9i Database Administration I 10-6 . il détermine le numéro SCN (System Change Number) en cours et s'assure que l'instruction ne traite pas les modifications non validées avant ce numéro. Vous pouvez également demander la cohérence en lecture d'une transaction LMD en exécutant la commande suivante au début de la transaction : SQL> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE.Cohérence en lecture SELECT * FROM table Table Nouvelle image Image au démarrage de l'instruction 10-6 Copyright © Oracle Corporation. 2001. le serveur Oracle fournit des données lues de manière cohérente dès le début de la transaction. Toutefois. vous pouvez demander la cohérence en lecture d'une transaction en lecture seule en exécutant la commande suivante au début de la transaction : SQL> SET TRANSACTION READ ONLY. le serveur Oracle crée une image cohérente en lecture de cette ligne en extrayant l'image avant des modifications depuis le segment d'annulation et en appliquant les modifications à une copie de la ligne en mémoire. Lorsque le serveur Oracle lance l'exécution d'une instruction SELECT. L'utilisation de la commande SERIALIZABLE peut affecter les performances. un segment d'annulation non SYSTEM (créé par l'administrateur de base de données) peut être utilisé pour les modifications apportées aux objets de tout tablespace non SYSTEM. 10-7 Copyright © Oracle Corporation. Segments d'annulation non SYSTEM Dans une base de données qui comporte plusieurs tablespaces. Types de segment d'annulation Segment d'annulation SYSTEM Le segment d'annulation SYSTEM est créé dans le tablespace SYSTEM à la création d'une base de données. 2001. Ce segment se présente et fonctionne de la même manière en mode manuel et en mode automatique. Tous droits réservés. • Le segment non SYSTEM est utilisé pour les objets d'autres tablespaces. temporairement ou à des fins de récupération. Il existe deux types de segment d'annulation non SYSTEM.Types de segment d'annulation • Le segment SYSTEM est utilisé pour les objets du tablespace SYSTEM. vous pouvez les mettre en ligne de façon explicite à l'aide de la commande ALTER ROLLBACK SEGMENT. Il ne peut être utilisé que pour les modifications apportées aux objets du tablespace SYSTEM. au moins un segment d'annulation non SYSTEM est requis pour le mode manuel ou un tablespace d'annulation (UNDO) pour le mode automatique. Toutefois. Mode manuel En mode manuel. Segments d'annulation privés Les segments d'annulation privés sont des segments mis en ligne (online) par une instance parce qu'ils sont répertoriés dans le fichier de paramètres. – Mode automatique : nécessite un tablespace d'annulation (UNDO) – Mode manuel : Privé : acquis par une instance spécifique Public : acquis par une instance quelconque • Les segments différés sont utilisés lorsque des tablespaces sont mis hors ligne immédiatement. Oracle9i Database Administration I 10-7 . Segments d'annulation différés Des segments d'annulation différés peuvent être créés lorsqu'un tablespace est mis hors ligne (offline). Etant donné que les segments d'annulation différés sont gérés par le serveur Oracle. Ces segments sont généralement utilisés avec Oracle Real Application Clusters pour créer un pool de segments d'annulation pouvant être utilisés par n'importe quelle instance Real Application Clusters. Oracle9i Database Administration I 10-8 .Types de segment d'annulation (suite) Segments d'annulation publics Les segments d'annulation publics constituent un pool de segments d'annulation disponibles dans une base de données. aucune intervention de votre part n'est nécessaire. Remarque : L'utilisation des segments d'annulation publics est présentée dans le manuel Oracle9i Real Application Clusters and Administration. Ils permettent d'annuler des transactions lorsque le tablespace est remis en ligne et sont automatiquement supprimés lorsqu'ils ne sont plus utiles. Tous droits réservés.Concepts de la gestion automatique des annulations • Les données d'annulation sont gérées à l'aide d'un tablespace d'annulation (UNDO). 2001. • Allouez un tablespace d'annulation (UNDO) par instance en prévoyant suffisamment d'espace pour la charge globale de l'instance. • Le serveur Oracle gère automatiquement les données d'annulation dans le tablespace d'annulation (UNDO). 10-9 Copyright © Oracle Corporation. Concepts de la gestion automatique des annulations Les segments d'annulation sont créés selon la convention d'appellation suivante : _SYSSMUn$ Exemple : _SYSSMU1$ _SYSSMU2$ Oracle9i Database Administration I 10-9 . dbf Fichier d'initialisation Tablespace d'annulation (UNDO) 10-10 Copyright © Oracle Corporation. car le serveur Oracle choisira automatiquement le tablespace d'annulation. Tous droits réservés. 2001. Configuration de la gestion automatique des annulations Si la base de données ne contient qu'un tablespace d'annulation (UNDO) et si la valeur du paramètre UNDO_MANAGEMENT est AUTO. undo1db01. Oracle9i Database Administration I 10-10 . le paramètre UNDO_TABLESPACE est facultatif.Configuration de la gestion automatique des annulations • Configurez les deux paramètres suivants dans le fichier d'initialisation : – UNDO_MANAGEMENT – UNDO_TABLESPACE • Créez au moins un tablespace d'annulation (UNDO). Oracle9i Database Administration I 10-11 .Paramètres d'initialisation de la gestion automatique des annulations • Le paramètre UNDO_MANAGEMENT indique si le système doit utiliser le mode AUTO ou MANUAL. En mode MANUAL (valeur par défaut). 2001. UNDO_MANAGEMENT=AUTO UNDO_TABLESPACE=UNDOTBS 10-11 Copyright © Oracle Corporation. Il ne peut pas être modifié dynamiquement après le démarrage de la base de données. UNDO_TABLESPACE : Ce paramètre définit le tablespace d'annulation (UNDO) à utiliser. comme dans les précédentes versions du serveur Oracle. Paramètres d'initialisation de la gestion automatique des annulations UNDO_MANAGEMENT : Ce paramètre détermine le mode d'annulation de la base de données. Tous droits réservés. • Le paramètre UNDO_TABLESPACE désigne un tablespace d'annulation (UNDO) spécifique à utiliser. Il peut être défini dans les fichiers d'initialisation ou modifié dynamiquement à l'aide de la commande ALTER SYSTEM. Il peut posséder la valeur AUTO ou MANUAL et doit être défini dans le fichier de paramètres d'initialisation. SQL> ALTER SYSTEM SET undo_tablespace = UNDOTBS. vous pouvez créer et gérer les segments d'annulation dont vous avez besoin dans la base de données. la base de données gère automatiquement les annulations et requiert un tablespace d'annulation (UNDO). En mode AUTO. sera nommé 'dbu1<oracle_sid>. . La valeur d'AUTOEXTEND est ON.dbf' et situé dans le répertoire $ORACLE_HOME/dbs. ajoutez une clause dans la commande CREATE DATABASE. . si la valeur du paramètre UNDO_MANAGEMENT est AUTO et que vous n'incluez pas la clause relative au tablespace d'annulation (UNDO) dans l'instruction CREATE DATABASE. CREATE UNDO TABLESPACE undo1 DATAFILE '/u01/oradata/undo1db01. Oracle9i Database Administration I 10-12 . vous pouvez créer un tablespace d'annulation (UNDO) à l'aide de la commande CREATE UNDO TABLESPACE. Gestion automatique des annulations : tablespace d'annulation (UNDO) La gestion automatique des annulations requiert un tablespace d'annulation (UNDO). dont la taille dépend du système d'exploitation. 10-12 Copyright © Oracle Corporation. Le fichier de données par défaut du tablespace SYS_UNDOTBS. La base de données peut contenir plusieurs tablespaces d'annulation. 2001. A la création de la base de données. mais un seul peut être actif.dbf' SIZE 20M. CREATE DATABASE db01 . Vous pouvez créer le tablespace d'annulation (UNDO) en même temps que la base de données en ajoutant une clause dans l'instruction CREATE DATABASE. le serveur Oracle crée un tablespace d'annulation nommé SYS_UNDOTBS. Une fois la base de données créée.Gestion automatique des annulations : tablespace d'annulation (UNDO) Pour créer le tablespace d'annulation (UNDO) en même temps que la base de données. Tous droits réservés. UNDO TABLESPACE undo1 DATAFILE '/u01/oradata/undoldb01.dbf' SIZE 20M AUTOEXTEND ON Vous pouvez également créer le tablespace ultérieurement à l'aide de la commande CREATE UNDO TABLESPACE. Oracle9i Database Administration I 10-13 . 3. entrez le nom et la taille du fichier. 5. 2. Cliquez sur Create. procédez comme suit : 1. Sélectionnez Undo dans la région Type. Sélectionnez Create dans le menu accessible à l'aide du bouton droit de la souris. 4. Sélectionnez Databases > Storage > Tablespace.Gestion automatique des annulations : tablespace d'annulation (UNDO) (suite) Utiliser Oracle Enterprise Manager pour créer un tablespace d'annulation (UNDO) A partir de la console OEM. Dans l'ongle General. un fichier de données est ajouté au tablespace d'annulation (UNDO) : ALTER TABLESPACE undotbs ADD DATAFILE '/u01/oradata/undotbs2. 2001.Gestion automatique des annulations : modifier un tablespace d'annulation (UNDO) • La commande ALTER TABLESPACE permet de modifier des tablespaces d'annulation (UNDO). Tous droits réservés. • Dans l'exemple ci-dessous.dbf' SIZE 30M AUTOEXTEND ON. Gestion automatique des annulations : modifier un tablespace d'annulation (UNDO) Le serveur prend en charge les clauses suivantes pour la modification d'un tablespace d'annulation (UNDO) : • ADD DATAFILE • RENAME • DATAFILE [ONLINE|OFFLINE] • BEGIN BACKUP • END BACKUP Oracle9i Database Administration I 10-14 . 10-14 Copyright © Oracle Corporation. Sélectionnez Databases > Storage. puis cliquez avec le bouton droit de la souris sur le tablespace d'annulation (UNDO). 2. Sélectionnez le dossier Tablespace. Sélectionnez Add a data file.Gestion automatique des annulations : modifier un tablespace d'annulation (UNDO) (suite) Utiliser Oracle Enterprise Manager pour modifier un tablespace d'annulation (UNDO) A partir de la console OEM. 3. Oracle9i Database Administration I 10-15 . procédez comme suit : 1. 10-16 Copyright © Oracle Corporation. 2001.Gestion automatique des annulations : changer de tablespace d'annulation (UNDO) • Vous pouvez passer d'un tablespace d'annulation (UNDO) à un autre. Oracle9i Database Administration I 10-16 . ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2. • La commande ALTER SYSTEM permet de changer dynamiquement de tablespace d'annulation (UNDO). • Vous ne pouvez affecter à une base de données qu'un tablespace d'annulation (UNDO) à la fois. mais un seul peut être actif. • Une instance peut contenir plusieurs tablespaces d'annulation (UNDO). Tous droits réservés. Cliquez sur Configuration. Sur la page Undo. 2. Cliquez sur Apply Oracle9i Database Administration I 10-17 . procédez comme suit : 1.Utiliser Oracle Enterprise Manager pour changer de tablespace d'annulation (UNDO) Utiliser Oracle Enterprise Manager pour changer de tablespace d'annulation (UNDO) A partir de la console OEM. 3. Sélectionnez Databases > Storage > Instance. sélectionnez le tablespace d'annulation (UNDO) dans la liste déroulante Current Undo. 4. 10-18 Copyright © Oracle Corporation. Gestion automatique des annulations : supprimer un tablespace d'annulation (UNDO) Vous ne pouvez pas supprimer un tablespace d'annulation s'il est en cours d'utilisation par une instance et si toutes ses transactions ne sont pas terminées. SQL> ALTER SYSTEM SET undo_tablespace = UNDOTBS2.usn.name IN ( SELECT segment_name 4 FROM dba_segments 5 WHERE tablespace_name = 'UNDOTBS‘ ) 6 AND a.usn = b.b. Si UNDOTBS est le tablespace d'annulation (UNDO) actif de la base de données et s'il doit être supprimé.--------------_SYSSMU4$ PENDING OFFLINE Oracle9i Database Administration I 10-18 . Tous droits réservés. NAME STATUS ------------------------. Créez d'abord un autre tablespace d'annulation s'il n'en existe pas. Exécutez l'interrogation suivante pour déterminer si des transactions sont en cours : SQL> SELECT a. – supprimez le tablespace une fois que toutes les transactions en cours sont terminées. 2001. définissez un nouveau tablespace d'annulation avant de procéder à la suppression.name. Vous pouvez supprimer UNDOTBS une fois que toutes ses transactions sont terminées. • Vous ne pouvez pas supprimer un tablespace d'annulation (UNDO) s'il est en cours d'utilisation par une instance.Gestion automatique des annulations : supprimer un tablespace d'annulation (UNDO) • La commande DROP TABLESPACE permet de supprimer un tablespace d'annulation (UNDO). • Pour supprimer un tablespace d'annulation actif : – changez de tablespace d'annulation. Changez ensuite de tablespace d'annulation en cours à l'aide de la commande ALTER SYSTEM.status 2 FROM v$rollname a. v$rollstat b 3 WHERE a. DROP TABLESPACE UNDOTBS2. Le serveur Oracle peut référencer UNDOTBS après être passé à un autre tablespace d'annulation pour garantir la cohérence en lecture des interrogations. Les interrogations qui s'adressent au tablespace UNDOTBS alors que celui-ci n'est plus disponible pour assurer une lecture cohérente aboutissent à l'erreur suivante : ORA-1555 snapshot too old. Oracle9i Database Administration I 10-19 . toutes les transactions sont terminées et vous pouvez supprimer le tablespace à l'aide de la commande suivante : SQL> DROP TABLESPACE UNDOTBS.Gestion automatique des annulations : supprimer un tablespace d'annulation (suite) Un segment d'annulation qui possède le statut PENDING OFFLINE contient encore des transactions en cours. Lorsque l'interrogation ne renvoie aucune ligne. Gestion automatique des annulations : supprimer un tablespace d'annulation (UNDO) (suite) Utiliser Oracle Enterprise Manager pour supprimer un tablespace d'annulation A partir de la console OEM. Cliquez à l'aide du bouton droit de la souris sur le nom du tablespace d'annulation et sélectionnez Remove dans le menu qui s'affiche. 2. 3. 4. Confirmez la suppression. Oracle9i Database Administration I 10-20 . Sélectionnez Databases > Storage. Sélectionnez le dossier Tablespace. procédez comme suit : 1. Autres paramètres de gestion automatique des annulations • UNDO_SUPPRESS_ERRORS – Lorsqu'il possède la valeur TRUE. ORA-30019: Illegal rollback segment operation in Automatic Undo mode UNDO_RETENTION Ce paramètre détermine la durée en secondes de conservation des données d'annulation pour garantir des lectures cohérentes. par exemple) en mode automatique. 10-21 Copyright © Oracle Corporation. Autres paramètres de gestion automatique des annulations UNDO_SUPPRESS_ERRORS Ce paramètre permet à l'utilisateur de supprimer les erreurs lors de l'exécution manuelle d'opérations de gestion des annulations (ALTER ROLLBACK SEGMENT ONLINE. La valeur 900 correspond à une durée de conservation de 15 minutes. vous pouvez lui ajouter l'instruction ALTER SESSION SET UNDO_SUPPRESS_ERRORS = true pour supprimer l'erreur ORA-30019. Ce paramètre peut être défini dans le fichier d'initialisation ou modifié dynamiquement à l'aide de la commande ALTER SYSTEM. La configuration de ce paramètre permet d'utiliser la fonction de tablespace d'annulation avant la conversion de l'ensemble des programmes d'application et scripts en mode automatique. Oracle9i Database Administration I 10-21 . Tous droits réservés. • UNDO_RETENTION – Ce paramètre contrôle le volume de données d'annulation à conserver pour une lecture cohérente. 2001. Par exemple. SQL> ALTER SYSTEM SET UNDO_RETENTION=900. ce paramètre supprime les erreurs qui surviennent lors de tentatives d'exécution d'opérations manuelles en mode AUTO. si l'une de vos applications utilise l'instruction SET TRANSACTION USE ROLLBACK SEGMENT. La conservation des données d'annulation permet d'exécuter des interrogations plus longues et nécessite des fichiers de données plus volumineux pour le tablespace d'annulation. Oracle9i Database Administration I 10-22 . Le serveur Oracle utilise un algorithme pour allouer de l'espace dans un tablespace d'annulation et alloue l'espace qui n'est pas occupé par des transactions en cours avant de provoquer l'échec d'une nouvelle transaction. les données d'annulation ne sont pas conservées pendant la période indiquée même si le paramètre UNDO_RETENTION est défini.Autres paramètres de gestion automatique des annulations (suite) Si la taille du tablespace d'annulation (UNDO) est trop restreinte. begin_time. END_TIME -----------------22-JAN-01 13:44:18 22-JAN-01 13:43:04 22-JAN-01 13:33:04 22-JAN-01 13:23:04 22-JAN-01 13:13:04 22-JAN-01 13:03:04 22-JAN-01 12:53:04 22-JAN-01 12:43:04 22-JAN-01 12:33:04 BEGIN_TIME UNDO -----------------. Statistiques relatives aux données d'annulation Vue V$UNDOSTAT : Cette vue disponible en modes manuel et automatique affiche un histogramme des données statistiques relatives au bon fonctionnement de la base de données. Tous droits réservés.----22-JAN-01 13:43:04 19 22-JAN-01 13:33:04 1474 22-JAN-01 13:23:04 1347 22-JAN-01 13:13:04 1628 22-JAN-01 13:03:04 2249 22-JAN-01 12:53:04 1698 22-JAN-01 12:43:04 1433 22-JAN-01 12:33:04 1532 22-JAN-01 12:23:04 1075 10-23 Copyright © Oracle Corporation. Oracle9i Database Administration I 10-23 . Cette vue vous permet d'estimer l'espace d'annulation nécessaire pour la charge globale en cours et permet au serveur Oracle de régler l'utilisation des annulations dans le système. qui est généralement inférieur à 10 minutes. 2001.Statistiques relatives aux données d'annulation SELECT end_time. Bien que l'intervalle de collecte des statistiques soit en principe de 10 minutes.undoblks FROM v$undostat. la ligne la plus récente renverra le temps écoulé depuis le début de l'intervalle. Chaque ligne contient des statistiques collectées toutes les 10 minutes dans l'instance. Le résultat d'une soustraction de données de type DATE est exprimé en jours. La formule suivante permet de calculer le nombre total de blocs générés et de le diviser par le temps de surveillance (en secondes) : SQL> SELECT (SUM(undoblks) / SUM) ((end_time . qui se trouvent dans le fichier d'initialisation. multipliez le résultat par 84600 (nombre de secondes en une journée). Pour convertir les jours en secondes. vous devez disposer des éléments d'information suivants : • UNDO_RETENTION en secondes (UR) • Nombre de blocs de données d'annulation générés par seconde (UPS) • L'espace supplémentaire varie en fonction de la taille des extents et des fichiers (db_block_size) (DBS) UndoSpace = [UR * (UPS * DBS)] + (DBS * 24) 10-24 Copyright © Oracle Corporation. qui correspond à la taille de bloc de base de données définie dans le paramètre DB_BLOCK_SIZE. Cette valeur doit être multipliée par la taille d'un bloc d'annulation. Tous droits réservés. Le résultat de l'interrogation renvoie le nombre de blocs d'annulation par seconde. 2001. L'interrogation suivante permet de calculer le nombre d'octets nécessaires : Oracle9i Database Administration I 10-24 . Les colonnes END_TIME et BEGIN_TIME sont de type DATE.begin_time) * 86400)FROM v$undostat.Gestion automatique des annulations : dimensionner un tablespace d'annulation Pour déterminer la taille d'un tablespace d'annulation (UNDO). disponible dans la vue V$UNDOSTAT. et le nombre de blocs d'annulation générés par seconde. Gestion automatique des annulations : dimensionner un tablespace d'annulation Le dimensionnement d'un tablespace d'annulation (UNDO) nécessite trois éléments d'information : les paramètres UNDO_RETENTION et DB_BLOCK_SIZE. 5 (SELECT (SUM(undoblks)/SUM(((end_time begin_time)*86400))) AS UPS 6 FROM v$undostat). Le résultat pour cette base de données est de 18.22 Mo. Bytes ---------19106213 Pour convertir des octets en mégaoctets. 7 (SELECT value AS DBS 8 FROM v$parameter 9 WHERE name = 'db_block_size'). divisez-les par 1 048 576. Pour obtenir de meilleurs résultats. Oracle9i Database Administration I 10-25 . effectuez ce calcul au moment de la journée où la charge globale de la base de données atteint son niveau maximum.Gestion automatique des annulations : dimensionner un tablespace d'annulation (suite) SQL> SELECT (UR * (UPS * DBS)) + (DBS * 24) AS "Bytes" 2 FROM (SELECT value AS UR 3 FROM v$parameter 4 WHERE name = 'undo_retention'). Oracle9i Database Administration I 10-26 . 2001. • Lorsqu'un groupe dépasse la limite définie. ORA-30027: "Undo quota violation . • Les quotas d'annulation permettent de regrouper les utilisateurs et de leur affecter un espace d'annulation maximum défini. il ne peut plus exécuter de nouvelle transaction jusqu'à ce que les transactions en cours se terminent ou échouent. Gestion automatique des annulations : quota d'annulation Les plans d'allocation de ressources permettent de regrouper les utilisateurs et de limiter les ressources mises à leur disposition. Lorsqu'un groupe dépasse la limite définie. une erreur est générée et aucune autre transaction ne peut être effectuée tant que les transactions en cours n'ont pas abouti ou échoué.failed to get %s (bytes)" Cause : le groupe de consommateurs de cette session a dépassé le quota d'annulation qui lui a été affecté. libérant ainsi de l'espace d'annulation. Remarque : Resource Manager est présenté dans le chapitre "Gérer la sécurité des mots de passe et les ressources". Vous pouvez limiter le volume de données d'annulation générées par un groupe en affectant une valeur à UNDO_POOL (par défaut. Tous droits réservés. Action : demandez à l'administrateur de la base de données d'augmenter le quota ou attendez la validation d'autres transactions avant de poursuivre. 10-26 Copyright © Oracle Corporation.Gestion automatique des annulations : quota d'annulation • Les transactions longues ou incorrectes peuvent utiliser des ressources considérables. ce paramètre a une valeur illimitée). • La directive UNDO_POOL de Resource Manager définit l'espace alloué à un groupe de ressources. Oracle9i Database Administration I 10-27 . Tous droits réservés. 2001. SEGMENT_NA ---------SYSTEM _SYSSMU1$ _SYSSMU2$ _SYSSMU3$ _SYSSMU4$ OWNER -----SYS PUBLIC PUBLIC PUBLIC PUBLIC TABLESPACE ---------SYSTEM UNDO1 UNDO1 UNDO1 UNDO1 STATUS -----ONLINE ONLINE ONLINE ONLINE ONLINE Les informations sur les segments d'annulation hors ligne ne sont visibles que dans cette vue. tandis que les segments d'annulation en ligne ne peuvent être visualisés que dans les vues dynamiques des performances.owner.Obtenir des informations sur les segments d'annulation • Interrogez les vues suivantes pour obtenir des informations sur les segments d'annulation : – DBA_ROLLBACK_SEGS • Vues dynamiques des performances – – – – – V$ROLLNAME V$ROLLSTAT V$UNDOSTAT V$SESSION V$TRANSACTION 10-27 Copyright © Oracle Corporation.tablespace_name. • PUBLIC : fait référence à un segment d'annulation public. Obtenir des informations sur les segments d'annulation Pour obtenir des informations sur tous les segments d'annulation de la base de données.status 2 FROM dba_rollback_segs. La colonne OWNER indique le type du segment d'annulation : • SYS : fait référence à un segment d'annulation privé. interrogez la vue DBA_ROLLBACK_SEGS : SQL> SELECT segment_name. rssize. s.---------.ubafil. Exemple : SQL> SELECT s. v$transaction t 4 WHERE s.---------.ses_addr.------.usn = s.s.---------.name.usn.username. t. s.---------.hwmsize.used_ublk 3 FROM v$session s.extents. s. t. 2 s. v$rollstat s 4 WHERE n. NAME EXTENTS RSSIZE HWMSIZE XACTS STATUS ---------.status 3 FROM v$rollname n.xacts. USERNAME XIDUSN UBAFIL UBABLK USED_UBLK -------. Exemple : SQL> SELECT n. 2 t.ubablk.xidusn.---------HR 2 2 5005 1 Oracle9i Database Administration I 10-28 .Obtenir des informations sur les segments d'annulation (suite) Vues V$ROLLSTAT et V$ROLLNAME : Joignez les vues V$ROLLSTAT et V$ROLLNAME pour obtenir les statistiques sur les segments d'annulation actuellement utilisés par l'instance. t.---------.-----SYSTEM 7 425984 425984 0 ONLINE _SYSSMU1$ 5 2289664 2289664 0 ONLINE _SYSSMU2$ 10 6549504 6549504 0 ONLINE _SYSSMU3$ 7 4386816 4386816 0 ONLINE _SYSSMU4$ 6 4321280 4321280 0 ONLINE Vues V$TRANSACTION et V$SESSION : Joignez les vues V$TRANSACTION et V$SESSION pour vérifier l'utilisation d'un segment d'annulation par les transactions en cours.---------.saddr = t. Synthèse Ce chapitre vous a permis d'apprendre à : • configurer la gestion automatique des annulations • créer un tablespace d'annulation (UNDO) • dimensionner correctement un tablespace d'annulation (UNDO) 10-29 Copyright © Oracle Corporation. 2001. Tous droits réservés. Oracle9i Database Administration I 10-29 . Présentation de l'exercice 10 Remarque : Vous pouvez réaliser cet exercice avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet. 2001.Présentation de l'exercice 10 Dans cet exercice. Oracle9i Database Administration I 10-30 . Tous droits réservés. vous allez : • créer un tablespace d'annulation (UNDO) • changer de tablespace d'annulation (UNDO) • supprimer un tablespace d'annulation (UNDO) 10-30 Copyright © Oracle Corporation. 3 Dans une nouvelle session Telnet. 8 Dans la session que vous avez ouverte sous l'ID utilisateur SYS. ni quitter la session. ni annuler. Exécutez le script lab10_03. supprimez le tablespace UNDOTBS. Comparez cette liste à celle établie à l'étape 1. Que se passe-t-il ? 6 Répertoriez les segments d'annulation du tablespace UNDOTBS et leur statut. 4 Dans la session que vous avez ouverte sous l'ID SYS. supprimez le tablespace UNDOTBS. Vous ne devez ni valider.Exercice 10 : gérer les données d'annulation 1 Connectez-vous en tant que SYSTEM/MANAGER et répertoriez les segments d'annulation du tablespace UNDOTBS. Que se passe-t-il ? 9 Sous l'ID utilisateur SYS. supprimez le tablespace UNDOTBS. 5 Sous l'ID utilisateur SYS. 2 Créez le tablespace d'annulation UNDO2 d'une taille de 15 Mo et placez-le dans le répertoire $HOME/oradata/u03. passez du tablespace d'annulation UNDOTBS à UNDO2 à l'aide de la commande ALTER SYSTEM. Que se passe-t-il ? Remarque : La suppression du tablespace peut prendre du temps. annulez la transaction et quittez cette session. 7 Dans la session que vous avez ouverte sous l'ID utilisateur HR.sql pour insérer une ligne dans la table DEPARTMENTS. A présent. exécutez la commande suivante : ALTER SYSTEM SET undo_retention=0 SCOPE=memory. démarrez SQL*Plus et connectez-vous sous l'ID utilisateur HR. Répertoriez les segments d'annulation d'UNDO2. Oracle9i Database Administration I 10-31 . Oracle9i Database Administration I 10-32 . 2001. Tous droits réservés.Gérer les tables Copyright © Oracle Corporation. . Tous droits réservés. Oracle9i Database Administration I 11-2 . 2001.Objectifs A la fin de ce chapitre. vider et supprimer une table • supprimer une colonne dans une table 11-2 Copyright © Oracle Corporation. vous pourrez : • identifier les différentes méthodes de stockage des données • décrire les types de données Oracle • distinguer un ROWID étendu d'un ROWID restreint • décrire la structure d'une ligne • créer des tables normales et des tables temporaires • gérer des structures de stockage au sein d'une table • réorganiser. Il s'agit du type de table par défaut qui constitue le sujet principal de ce chapitre. Les lignes peuvent être stockées dans n'importe quel ordre selon l'activité de la table. les tables organisées en index et les tables clusterisées sont traitées dans d'autres cours. Tables normales Une table normale (appelée en général "table") est l'élément le plus communément utilisé pour stocker les données utilisateur. Les prérogatives de l'administrateur sur la distribution des lignes d'une table clusterisée sont très limitées. • tables partitionnées. 2001. • tables organisées en index. Stocker des données utilisateur Il existe plusieurs méthodes de stockage des données utilisateur dans une base de données Oracle : • tables normales. Oracle9i Database Administration I 11-3 . Remarque : Les tables partitionnées. • tables clusterisées. Tous droits réservés.Stocker des données utilisateur Table normale Table partitionnée Table organisée en index Cluster 11-3 Copyright © Oracle Corporation. Elle présente les caractéristiques suivantes : • Une table partitionnée contient une ou plusieurs partitions qui stockent chacune les lignes partitionnées à l'aide du partitionnement par plage. auquel cas. Oracle9i Database Administration I 11-4 . au lieu de gérer deux espaces de stockage distincts pour la table et un index B-Tree. Les tables organisées en index offrent un accès sur clé rapide aux données des tables dans les interrogations impliquant des recherches de correspondance exacte ou par intervalle. • Des commandes spéciales permettent de gérer les partitions d'une table. ni dans l'index. Ce type de table peut présenter un segment de débordement (overflow segment) en raison de la valeur du paramètre PCTTHRESHOLD et du résultat de lignes plus longues nécessitant la zone de débordement. Table organisée en index Une table organisée en index est semblable à une table de "heaps" contenant un index de clé primaire sur une ou plusieurs de ses colonnes. le serveur Oracle fournit une clause OVERFLOW qui permet de résoudre le problème. • Chaque partition d'une table partitionnée constitue un segment qui peut se trouver dans un tablespace différent. composite ou par liste.Stocker des données utilisateur (suite) Table partitionnée Une table partitionnée permet de créer des applications évolutives. les besoins en stockage sont moindres dans la mesure où les colonnes de clé ne sont pas dupliquées dans la table. une table organisée en index ne gère qu'un seul B-Tree contenant la clé primaire de la table et d'autres valeurs de colonnes. • Les partitions sont particulièrement utiles pour les tables volumineuses qui peuvent être interrogées ou manipulées par plusieurs processus simultanément. Les colonnes non clé restantes sont stockées dans l'index à moins que la taille de l'entrée d'index ne devienne trop importante . En outre. Toutefois. par hachage. • La création de cluster est un mécanisme transparent pour les applications qui utilisent les tables. • La clé de cluster peut être constituée d'une ou de plusieurs colonnes. • Les clusters sont généralement utilisés pour améliorer les performances. • Les clusters régularisent à nouveau le stockage physique des tables sans affecter la structure logique. L'accès aléatoire aux données de cluster peut être plus rapide. • La clé de cluster est indépendante de la clé primaire. regroupées parce qu'elles partagent des colonnes et qu'elles sont souvent utilisées conjointement. Un cluster est constitué d'une table ou d'un ensemble de tables partageant les mêmes blocs de données. Les tables d'un cluster peuvent présenter une clé primaire qui peut correspondre à la clé de cluster ou à un ensemble différent de colonnes. Les données d'une table clusterisée peuvent être manipulées de la même manière que celles d'une table normale. Oracle9i Database Administration I 11-5 . mais le balayage complet (full table scan) des tables clusterisées est généralement plus long. • La mise à jour de l'une des colonnes de la clé de cluster peut provoquer la migration de la ligne. • Les tables d'un cluster contiennent des colonnes correspondant à la clé de cluster. Un cluster présente les caractéristiques suivantes : • Il dispose d'une clé de cluster qui permet d'identifier les lignes devant être stockées ensemble.Stocker des données utilisateur (suite) Table clusterisée Une table clusterisée permet également de stocker des données. par exemple. NCLOB. LONG RAW ROWID. BFILE LONG. CLOB. NCHAR est un type de données de prise en charge de la globalisation qui permet de stocker des jeux de caractères de longueur fixe ou de longueur variable. Types de données internes Oracle Le serveur Oracle fournit plusieurs types de données internes pour stocker les données scalaires. Type de données Scalaire Données alphanumériques : ces données sont stockées sous forme de chaînes de longueur fixe ou de longueur variable dans la base de données. Tous droits réservés. Les types de données alphanumériques de longueur fixe. sont des données alphanumériques de longueur variable.Types de données internes Oracle Type de données Défini par l'utilisateur Scalaire CHAR(N). tels que CHAR et NCHAR. UROWID Interne Ensemble VARRAY TABLE Relation REF 11-6 Copyright © Oracle Corporation. NVARCHAR2(N) NUMBER(P. Leur taille peut varier pour chaque ligne et atteindre 4 000 octets. sont stockés avec des espaces de remplissage. selon le jeu de caractères. les ensembles et les relations. NCHAR(N) VARCHAR2(N). La valeur par défaut est de 1 caractère ou 1 octet. Les données de types VARCHAR2 et NVARCHAR2. La taille maximale est déterminée par le nombre d'octets nécessaires au stockage d'un caractère.S) DATE TIMESTAMP RAW(N) BLOB. Oracle9i Database Administration I 11-6 . 2001. avec une limite maximale de 2 000 octets par ligne. Les types de données alphanumériques de longueur variable utilisent uniquement le nombre d'octets nécessaires au stockage de la valeur de colonne réelle. • NCLOB pour les jeux de caractères nationaux volumineux de longueur fixe. les documents ou les informations géographiques. Type de données RAW : ce type de données permet de stocker de petites quantités de données binaires. Contrairement à TIMESTAMP WITH TIME ZONE. Le serveur Oracle ne convertit pas le jeu de caractères lorsque des données de type RAW sont transmises entre les machines d'un réseau ou lorsqu'elles sont transférées d'une base de données vers une autre à l'aide d'utilitaires Oracle. Les paramètres TIMESTAMP WITH TIME ZONE et TIMESTAMP WITH LOCAL TIME ZONE peuvent utiliser des fuseaux horaires pour factoriser des éléments tels que l'heure d'été. Les types de données LONG et LONG RAW étaient utilisés auparavant pour les données non structurées. Le nombre d'octets nécessaires au stockage de la valeur de colonne réelle peut varier pour chaque ligne et atteindre 2 000 octets. Elles ne prennent pas en charge l'interface API LONG (Application Programming Interface). et vice versa. Une date Oracle contient toujours l'heure. • • BLOB et LONG RAW pour le stockage des données non structurées. Types de données LONG. Les données numériques nécessitent : • un octet pour l'exposant. • un octet tous les deux chiffres significatifs dans la mantisse. Les données de type LOB sont différentes des données de type LONG et LONG RAW et ne sont pas interchangeables. Ils peuvent comporter jusqu'à 38 chiffres significatifs. les nombres sont toujours stockés sous forme de données de longueur variable. telles que les images binaires. LONG RAW et LOB (Large Object) Oracle fournit six types de données pour stocker les objets LOB : • CLOB (Character Large Object) et LONG pour les données alphanumériques volumineuses de longueur fixe. Ces types de données sont remplacés par les types de données LOB.Types de données internes Oracle (suite) Type de données Scalaire (suite) Type de données numérique : dans les bases de données Oracle. Type de données TIMESTAMP : ce type de données stocke la date et l'heure ainsi que la partie décimale des secondes jusqu'à neuf positions décimales. Type de données DATE : le serveur Oracle enregistre les dates dans des champs de longueur fixe de sept octets. • un octet pour les nombres négatifs si le nombre de chiffres significatifs est inférieur à 38 octets. les paramètres TIMESTAMP et TIMESTAMP WITH LOCAL TIME ZONE peuvent être utilisés dans des clés primaires. BFILE pour le stockage des données non structurées dans des fichiers du système d'exploitation. et sont principalement fournis à des fins de compatibilité descendante. Oracle9i Database Administration I 11-7 . Il permet de localiser une ligne. Il constitue la méthode la plus rapide pour accéder à une ligne d'une table. et LOB à toutes les données de type LOB. Il présente les caractéristiques suivantes : • • • Il identifie de manière unique chaque ligne de la base de données. Types de données ROWID et UROWID Le type de données ROWID peut être interrogé en même temps que les autres colonnes d'une table. un morceau de ligne d'un bloc pointant vers le morceau de ligne suivant stocké dans un autre bloc.1. les données LOB prennent en charge les attributs des types d'objet (sauf les NCLOB) et la réplication. sauf si la taille des données de type VARCHAR2 est inférieure à la taille maximale de 4 000 octets. • • Il est stocké dans un index définissant des lignes ayant des valeurs de clé spécifiques. Dans la version 8. bien qu'il ne fournisse pas directement son adresse physique. Pour permettre l'utilisation du type UROWID. les types de données LOB permettent de stocker les données dans un segment et un tablespace distincts ou dans un fichier hôte. Il n'est pas enregistré explicitement sous la forme d'une valeur de colonne. un type de données UROWID est nécessaire pour le stockage d'un ROWID pour des lignes d'une table organisée en index. Contrairement aux données de type LONG. l'accès aux données doit s'effectuer séquentiellement. En outre. les données LOB offrent un accès systématique et aléatoire aux segments de données via une interface de type fichier. LONG RAW et LOB (suite) La comparaison entre la fonctionnalité LOB et les anciens types de données (LONG et LONG RAW) peut s'avérer utile.Types de données internes Oracle (suite) Types de données LONG. Oracle9i Database Administration I 11-8 . qui prend en charge les ROWID de tables étrangères (non Oracle) et peut stocker tous les types de ROWID. En conséquence. Les données de type LONG sont stockées sous forme de morceaux de lignes chaînés. le serveur Oracle fournit un type de données unique nommé ROWID universel ou UROWID. Par exemple.1 ou une valeur supérieure. Les types de données LONG stockent toutes les données dans le segment. LONG RAW Une seule colonne par table 2 gigaoctets maximum Données stockées dans le segment Aucune prise en charge du type d'objet Accès séquentiel au morceau LOB Plusieurs colonnes par table 4 gigaoctets maximum Données stockées dans le segment ou en dehors Prise en charge des types d'objet Accès aléatoire aux morceaux Les types de données LOB stockent un pointeur dans la table et les données dans un autre emplacement. LONG. Ci-dessous. En revanche. le paramètre COMPATIBLE doit posséder la valeur Oracle8. LONG fait référence à LONG et LONG RAW. tels que le nombre d'articles d'une commande. • Les caractéristiques de stockage d'une table imbriquée peuvent être définies par l'administrateur de base de données. Par exemple. mais la taille maximale du tableau doit être définie lors de sa déclaration. Oracle9i Database Administration I 11-9 . Elles peuvent être utilisées pour stocker des ensembles pouvant contenir un grand nombre d'enregistrements. Ces deux types de données sont décrits brièvement ci-dessous. Tables imbriquées : ces tables permettent de définir une table sous forme de colonne dans une table. mais sont désignées par un pointeur dans la ligne correspondante de la table parent. • Les lignes d'une table imbriquée présentent la même structure. l'option Objects était nécessaire pour définir et utiliser les ensembles. chaque élément ordonné peut pointer sur une ligne de la table PRODUCTS ou y faire référence sans avoir à stocker le code du produit. Type de données Oracle défini par l'utilisateur Le serveur Oracle permet à l'utilisateur de définir des types de données abstraits et de les utiliser dans l'application. • Les éléments d'un tableau présentent tous le même type de données. Généralement.Types de données internes Oracle (suite) Type de données Ensemble Deux types de données Ensemble permettent de stocker les données répétitives d'une ligne déterminée dans une table. • Le nombre d'éléments d'un tableau détermine la taille de ce dernier. Leur utilisation fait appel à l'option Objects. • Les lignes d'une table imbriquée ne sont pas stockées dans la table parent. Les tableaux VARRAY présentent les caractéristiques suivantes : • Un tableau contient un ensemble ordonné d'éléments de données. • Chaque élément comporte un index (numéro indiquant sa position dans le tableau). Tableaux de taille variable (VARRAY) : ces tableaux permettent de stocker des listes contenant un petit nombre d'éléments. • Le serveur Oracle permet d'utiliser des tableaux de taille variable (d'où le nom VARRAY). les tables imbriquées présentent les caractéristiques suivantes : • Une table imbriquée est un ensemble non ordonné d'enregistrements ou de lignes. Dans les versions antérieures à Oracle8i. tels que des numéros de téléphone de clients. • Il n'existe pas de taille maximale prédéfinie pour une table imbriquée. Type de données Relation (REF) Les types de données Relation servent de pointeurs dans la base de données. 16 bits. six positions pour le numéro de bloc et trois positions pour le numéro de ligne. affecté à chaque objet de données créé. et le numéro de ligne. tel qu'une table ou un index. Un ROWID étendu s'affiche à l'aide d'un schéma d'encodage en base 64 qui utilise six positions pour le numéro d'objet. soit un total de 64 caractères. En interne. dans le fichier. du bloc contenant la ligne. 10 bits. • Numéro de fichier relatif : numéro unique affecté à chaque fichier d'un tablespace.Format de ROWID • ROWID étendu OOOOOO Numéro d'objet de données FFF Numéro de fichier relatif BBBBBB Numéro de bloc RRR Numéro de ligne • ROWID restreint BBBBBBBB Numéro de bloc . • Numéro de ligne : numéro identifiant la position du pointeur des lignes dans l'entête de bloc. a-z. le numéro de fichier relatif. FFFF Numéro de fichier 11-10 Copyright © Oracle Corporation. soit un total de 80 bits ou 10 octets. RRRR Numéro de ligne . le numéro d'objet de données nécessite 32 bits. comme dans l'exemple ci-dessous : Oracle9i Database Administration I 11-10 . Ce schéma utilise les caractères AZ. 22 bits. 0-9. et /. 2001. le numéro de bloc. Tous droits réservés. • Numéro de bloc : numéro indiquant l'emplacement. trois positions pour le numéro de fichier relatif. Format de ROWID Un ROWID étendu nécessite 10 octets de stockage sur disque et s'affiche sur 18 caractères. Il est constitué des éléments suivants : • Numéro d'objet de données : numéro unique dans la base de données. Format de ROWID (suite) SQL> SELECT department_id. car les numéros de fichier étaient uniques au sein d'une base de données. où toutes les entrées d'index font référence aux lignes d'un même segment. et le numéro de ligne identifie la ligne dans le répertoire des lignes. un ROWID permet de localiser n'importe quelle ligne dans une base de données. Ce format était acceptable dans Oracle7 ou les versions antérieures. Bien qu'Oracle8 ait supprimé cette limitation en utilisant des numéros de fichier relatifs à des tablespaces. les versions précédentes étaient limitées à 1 022 fichiers de données. • AAAAA6 correspond au numéro de bloc. rowid FROM hr.-----------------10 AAABQMAAFAAAAA6AAA 20 AAABQMAAFAAAAA6AAB 30 AAABQMAAFAAAAA6AAC 40 AAABQMAAFAAAAA6AAD 50 AAABQMAAFAAAAA6AAE 60 AAABQMAAFAAAAA6AAF … Dans cet exemple : • AAABQM correspond au numéro d'objet de données. Le numéro de fichier relatif figurant dans le tablespace identifie le fichier. L'entrée du répertoire des lignes peut permettre de rechercher le début de la ligne. ROWID restreint dans Oracle7 et les versions antérieures Les versions de la base de données antérieures à Oracle8 utilisaient le format ROWID restreint. • AAA correspond au numéro de ligne du service dont l'ID=10. Ainsi. le numéro de bloc identifie le bloc contenant la ligne. ce qui correspond à la limite actuelle d'un tablespace. DEPARTMENT_ID ROWID ------------. Un ROWID restreint utilisait seulement six octets en interne et ne contenait pas de numéro d'objet de données.departments. Ainsi. • AAF correspond au numéro de fichier relatif. un ROWID restreint est toujours utilisé dans des objets. Oracle9i Database Administration I 11-11 . le serveur Oracle peut identifier le tablespace contenant la ligne en utilisant le numéro d'objet de données. Rechercher une ligne à l'aide d'un ROWID Etant donné qu'un segment ne peut résider que dans un seul tablespace. tels que les index non partitionnés ou les tables non partitionnées. Une colonne plus longue nécessite 3 octets. • des données de ligne : le serveur Oracle stocke la longueur et la valeur de chaque colonne (un octet est nécessaire pour enregistrer la longueur de colonne si celle-ci ne dépasse pas 250 octets. les informations de chaînage et le statut de verrouillage de la ligne. Les colonnes d'une ligne sont généralement enregistrées dans l'ordre dans lequel elles sont définies et les colonnes de fin NULL ne sont pas enregistrées. Remarque : La longueur des colonnes NULL qui ne sont pas des colonnes de fin doit être de 1 octet. Structure d'une ligne Les données des lignes sont stockées dans des blocs de base de données sous forme d'enregistrements de longueur variable. Chaque ligne d'une table possède : • un en-tête de ligne : cet en-tête permet de stocker le nombre de colonnes de la ligne. 2001. Tous droits réservés. Chaque ligne du bloc est associée à un pointeur dans le répertoire des lignes.Structure d'une ligne En-tête de ligne Bloc de base de données Longueur de colonne Valeur de colonne 11-12 Copyright © Oracle Corporation. La valeur de la colonne est stockée immédiatement après les octets de longueur de colonne). Aucun espace n'est nécessaire entre les lignes adjacentes. Le pointeur pointe sur le début de la ligne. Oracle9i Database Administration I 11-12 . job_id VARCHAR2(10). Remarque : Pour plus d'informations sur les clauses et paramètres que vous pouvez définir à l'aide de la commande CREATE TABLE. Remarque : Pour plus d'informations sur l'octroi de privilèges. hire_date DATE DEFAULT SYSDATE. first_name VARCHAR2(20). department_id NUMBER(4) ). Ce type de table est défini de façon explicite afin de contenir une instance d'objet d'un type particulier. Tous droits réservés. email VARCHAR2(25). Remarque : Les tables objet ne sont pas décrites dans ce chapitre.2). Table relationnelle : structure de base comportant les données utilisateur. Créer une table La commande CREATE TABLE permet de créer des tables relationnelles ou objet. salary NUMBER(8. voir le document Oracle9i SQL Reference.Créer une table CREATE TABLE hr. last_name VARCHAR2(25). Table objet : table qui utilise un type d'objet pour une définition de colonne. Vous devez disposer du privilège système CREATE TABLE pour créer une table relationnelle dans votre propre schéma et du privilège système CREATE ANY TABLE pour en créer une dans le schéma d'un autre utilisateur.employees( employee_id NUMBER(6). 11-13 Copyright © Oracle Corporation. commission_pct NUMBER (2. manager_id NUMBER(6). • Utilisez des tables gérées localement pour éviter toute fragmentation. phone_number VARCHAR2(20). 2001. Règles de création d'une table : • Placez les tables dans des tablespaces distincts. voir le chapitre "Gérer les privilèges". Oracle9i Database Administration I 11-13 .2). Lorsqu'un deuxième extent est requis. SQL> CREATE TABLE hr. 4 manager_id NUMBER(6). • MAXEXTENTS : Nombre maximum d'extents à affecter. La syntaxe ci-dessus est un sous-ensemble de la clause CREATE TABLE. Clause STORAGE La clause STORAGE précise les caractéristiques de stockage de la table. • MINEXTENTS : Nombre minimum d'extents à affecter. les extents seront répartis dans les différents fichiers de données. 3 department_name VARCHAR2(30). il est défini par la valeur NEXT et reçoit 200 Ko d'espace. Vous pouvez utiliser de 1 à 5 extents. parce que le paramètre PCTINCREASE possède la valeur 0. • PCTINCREASE : Pourcentage d'augmentation de la taille de l'extent après NEXT et par la suite. Oracle9i Database Administration I 11-14 . Si un troisième extent est nécessaire. Si la valeur de MINEXTENTS est supérieure à 1 et si le tablespace contient plusieurs fichiers de données. il reçoit également 200 Ko d'espace.Créer une table (suite) L'exemple ci-dessous permet de créer une table DEPARTMENTS dans un tablespace géré au moyen du dictionnaire de données.departments( 2 department_id NUMBER(4). L'espace affecté au premier extent (ensemble de blocs contigus) est de 200 Ko. 5 location_id NUMBER(4)) 6 STORAGE(INITIAL 200K NEXT 200K 7 PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS 5) 8 TABLESPACE data. Remarque : Pour plus d'informations sur les tablespaces. mis à jour pour chaque bloc de données de la table. voir le chapitre "Structure de stockage et relations". Pour plus d'informations sur cette fonction. Clause TABLESPACE La clause TABLESPACE désigne le tablespace dans lequel la table est créée. Remarque : Les paramètres PCTUSED. • La combinaison des paramètres PCTFREE et PCTUSED détermine si de nouvelles lignes seront insérées dans des blocs de données existants ou dans de nouveaux blocs. Ces paramètres permettent d'utiliser plus efficacement l'espace contenu dans une table. Une valeur nulle signifie que l'ensemble du bloc peut être rempli par insertion de nouvelles lignes. La valeur par défaut est 10. Il garantit qu'un nombre minimum de transactions simultanées peut mettre à jour le bloc. • MAXTRANS : Indique le nombre maximum de transactions simultanées pouvant mettre à jour un bloc de données affecté à la table.Créer une table (suite) Vous pouvez également indiquer des paramètres d'utilisation de l'espace de bloc dans la clause physical_attributes_clause de la table. cela signifie que 10 % de chaque bloc est réservé aux mises à jour de lignes existantes et que vous pouvez insérer de nouvelles lignes jusqu'à ce que chaque bloc soit rempli à 90 % maximum. La somme de leurs valeurs doit être inférieure ou égale à 100. Sa valeur doit être comprise entre 0 et 99. Ce paramètre a une valeur comprise entre 1 et 255 et prend par défaut la valeur 1. La table présentée en exemple se trouve dans le tablespace data. • PCTUSED : Indique le pourcentage minimum d'espace occupé. • INITRANS : Indique le nombre initial d'entrées de transactions affectées à chaque bloc de données alloué à la table. voir le chapitre "Gérer les tablespaces". Ce paramètre a une valeur comprise entre 1 et 255 et sa valeur par défaut dépend de la taille du bloc de données. Si vous omettez la clause TABLESPACE. Ce paramètre correspond à un entier compris entre 0 et 99 et prend par défaut la valeur 40. FREELISTS et FREELIST GROUPS sont invalidés par la fonction de gestion automatique de l'espace de segment d'Oracle9i. Cette limite ne s'applique pas aux interrogations. qu'il conserve généralement. Oracle crée l'objet dans le tablespace par défaut du propriétaire du schéma contenant la table. Oracle9i Database Administration I 11-15 . • PCTFREE : Indique le pourcentage d'espace présent dans chaque bloc de données de la table. Un bloc peut recevoir des lignes lorsque son espace occupé est inférieur à la valeur de PCTUSED. Sélectionnez Create dans le menu accessible par le bouton droit de la souris. 3.Créer une table Utiliser Oracle Enterprise Manager pour créer une table A partir de la console OEM. le propriétaire. Entrez les informations relatives à la table. telles que le nom. Entrez les informations relatives à la table. 2. telles que le nom. le tablespace. 4. Créer une table à l'aide de l'assistant : 1. les types de données et les tailles. le propriétaire. Oracle9i Database Administration I 11-16 . le tablespace. les colonnes. les colonnes. 1. Sélectionnez Databases > Schema > Table. Sélectionnez Databases > Schema > Table. Sélectionnez Object > Create Using Wizard. Cliquez sur Create. 4. 2. Cliquez sur Finish. procédez comme suit : Remarque : OEM offre de nombreuses options de création de table. les types de données et les tailles. 3. Tous droits réservés. • Utilisez des tables gérées localement pour éviter toute fragmentation. Règles de création d'une table Placez les tables dans des tablespaces distincts qui ne contiennent pas de segments d'annulation. Oracle9i Database Administration I 11-17 . 11-17 Copyright © Oracle Corporation. 2001. de segments temporaires ni d'index.Règles de création d'une table • Placez les tables dans des tablespaces distincts. • Utilisez un nombre limité de tailles d'extent standard pour les tables afin de réduire la fragmentation des tablespaces. Placez les tables dans des tablespaces gérés localement pour éviter la fragmentation. aucune donnée n'est exportée. Tous droits réservés.employees_temp AS SELECT * FROM hr. • Vous pouvez créer des index. 2001. • ON COMMIT PRESERVE ROWS : indique que les lignes sont visibles pour toute la session. des vues et des déclencheurs (triggers) dans les tables temporaires et utiliser les utilitaires Export et Import pour exporter et importer la définition d'une table temporaire. des vues et des déclencheurs dans ces tables. Les données d'une table temporaire de transaction sont conservées jusqu'à la fin de la transaction et celles d'une table temporaire de session. La commande CREATE GLOBAL TEMPORARY TABLE permet de créer une table temporaire spécifique d'une transaction ou d'une session. • Ces tables conservent les données jusqu'à la fin d'une transaction ou d'une session. Chaque session ne peut afficher et modifier que ses propres données. jusqu'à la fin de la session. La définition d'une table temporaire est visible dans toutes les sessions. Vous pouvez créer des index. Aucun verrou LMD n'est placé sur les données d'une table temporaire. Les données d'une session sont privées. même si vous utilisez l'option ROWS.Créer des tables temporaires • La clause GLOBAL TEMPORARY permet de créer une table temporaire : CREATE GLOBAL TEMPORARY TABLE hr. Les clauses suivantes contrôlent la durée de stockage des lignes : • ON COMMIT DELETE ROWS : indique que les lignes sont uniquement visibles dans la transaction. • Aucun verrou LMD n'est placé sur les données de ces tables.employees. Créer des tables temporaires Vous pouvez créer des tables temporaires contenant les données privées à la session qui n'existent que le temps d'une transaction ou d'une session. Toutefois. Oracle9i Database Administration I 11-18 . 11-18 Copyright © Oracle Corporation. Définir PCTUSED Définissez le paramètre PCTUSED pour permettre de renvoyer le bloc dans la liste de blocs libres (free list) uniquement lorsque l'espace est suffisant pour accepter une ligne moyenne. Tous droits réservés. Si un bloc de la liste des blocs libres ne dispose pas d'un espace suffisant pour l'insertion d'une ligne. plus l'espace disponible pour les mises à jour au sein d'un bloc de base de données est élevé. Oracle9i Database Administration I 11-19 . le serveur Oracle consulte le bloc suivant de la liste. Définir PCTFREE et PCTUSED Définir PCTFREE Plus la valeur du paramètre PCTFREE est élevée. En affectant une valeur plus élevée au paramètre PCTFREE. 2001. Définissez une valeur plus élevée si la table contient : • des colonnes initialement NULL qui ont été mises à jour à l'aide d'une valeur. c'est-à-dire que chaque bloc contiendra moins de lignes. vous réduisez la densité de bloc. La formule fournie permet de réduire le temps de balayage de la liste de blocs libres en augmentant la probabilité de trouver un bloc disposant de l'espace libre nécessaire. La formule définie ci-dessus permet au bloc de disposer d'un espace suffisant permettant à la taille de la ligne d'augmenter. • des colonnes dont la taille risque d'augmenter à la suite d'une mise à jour.PCTFREE Espace de données disponible 11-19 Copyright © Oracle Corporation.Définir PCTFREE et PCTUSED • Calcul de PCTFREE (Longueur de ligne moyenne – Longueur de ligne initiale) * 100 Longueur de ligne moyenne • Calcul de PCTUSED Longueur de ligne moyenne * 100 100 . Remarque : La commande ANALYZE TABLE permet d'estimer la longueur de ligne moyenne. Ce balayage linéaire se poursuit jusqu'à ce qu'un bloc disposant d'un espace suffisant soit trouvé ou que la fin de la liste soit atteinte. Dans ce cas.Migration et chaînage de lignes Avant mise à jour Après mise à jour Pointeur 11-20 Copyright © Oracle Corporation. Migration et chaînage de lignes Migration de lignes Si vous affectez au paramètre PCTFREE une valeur peu élevée. le bloc risque de ne pas contenir l'espace suffisant pour permettre l'augmentation de la longueur de la ligne à la suite d'une mise à jour. 2001. Cette opération est une migration de ligne. Remarque : La migration et le chaînage de lignes sont présentés en détail dans le cours Oracle9i Tuning. le serveur Oracle transfère la totalité de la ligne vers un nouveau bloc et conserve le pointeur du bloc d'origine sur le nouvel emplacement. la table en plusieurs tables contenant moins de colonnes. Lors de la migration d'une ligne. le serveur Oracle divise la ligne en morceaux de ligne plus petits. Tous droits réservés. Cette situation peut se produire lorsque la ligne contient des colonnes de très grande taille. Oracle9i Database Administration I 11-20 . Chaque morceau de ligne est stocké dans un bloc avec les pointeurs associés pour extraire et assembler la totalité de la ligne. Le chaînage de lignes peut être limité en définissant une plus grande taille de bloc ou en divisant. les performances des E/S sur la ligne sont réduites. car le serveur Oracle doit balayer deux blocs de données pour extraire les données. si possible. Dans ce cas. Chaînage de lignes Un chaînage de ligne se produit lorsqu'une ligne ne peut pas tenir dans un bloc. Modifier les paramètres d'utilisation de blocs et de stockage Vous pouvez modifier certains paramètres de stockage et tous les paramètres d'utilisation de l'espace de bloc à l'aide de la commande ALTER TABLE. la nouvelle valeur est utilisée. Syntaxe : ALTER TABLE [schema. La taille des extents suivants augmente de la valeur définie par le paramètre PCTINCREASE.]table {[ storage-clause ] [ INITRANS integer ] [ MAXTRANS integer]} Impact de la modification des paramètres de stockage Les paramètres que vous pouvez modifier et l'effet de leur modification sont les suivants : • NEXT : lorsque le serveur Oracle alloue un autre extent à la table.employees PCTFREE 30 PCTUSED 50 STORAGE(NEXT 500K MINEXTENTS 2 MAXEXTENTS 100). 2001. 11-21 Copyright © Oracle Corporation.Modifier les paramètres d'utilisation de blocs et de stockage ALTER TABLE hr. Oracle9i Database Administration I 11-21 . Tous droits réservés. le cinquième de 40 Ko. • MAXEXTENTS : vous pouvez affecter à ce paramètre une valeur égale ou supérieure au nombre actuel d'extents dans la table. La nouvelle valeur ne prend pas effet immédiatement. La nouvelle valeur est utilisée pour recalculer la valeur du paramètre NEXT lorsque l'extent suivant est alloué par le serveur Oracle. égale ou supérieure à la valeur définie. le troisième extent alloué sera de 10 Ko. Restrictions • Vous ne pouvez pas modifier la valeur du paramètre INITIAL d'une table. • MINEXTENTS : vous pouvez affecter à ce paramètre une valeur inférieure ou égale au nombre actuel d'extents dans la table.Modifier les paramètres d'utilisation de blocs et de stockage (suite) Impact de la modification des paramètres de stockage (suite) • PCTINCREASE : toute modification de ce paramètre est enregistrée dans le dictionnaire de données. Prenons l'exemple d'une table à deux extents qui présente les paramètres NEXT=10K et PCTINCREASE=0. etc. mais elle est utilisée si la table est vidée. le quatrième de 20 Ko. Oracle9i Database Administration I 11-22 . • La valeur du paramètre NEXT est arrondie à une valeur multiple de la taille du bloc. Vous pouvez également lui donner la valeur UNLIMITED. Si vous affectez la valeur 100 au paramètre PCTINCREASE. Sélectionnez Databases > Schema > Table. Notez que cette méthode ne permet pas de modifier le nombre minimum d'extents. 4. Développez l'arborescence du schéma. 5. procédez comme suit : 1. 2. Cliquez sur Apply. Oracle9i Database Administration I 11-23 .Utiliser Oracle Enterprise Manager pour modifier les paramètres de stockage Utiliser Oracle Enterprise Manager pour modifier les paramètres de stockage A partir de la console OEM. Modifiez les valeurs de la page Storage. Sélectionnez la table. ni le nombre initial de transactions. 3. Syntaxe Utilisez la commande suivante pour allouer un extent à une table : ALTER TABLE [schema. • avant de charger des données en masse pour empêcher l'extension dynamique de tables. Le serveur Oracle ne recalcule pas la taille de l'extent suivant lorsque cette commande est exécutée. le serveur Oracle alloue l'extent à l'un des fichiers du tablespace contenant la table.employees ALLOCATE EXTENT(SIZE 500K DATAFILE ‘/DISK3/DATA01. 2001. Allouer manuellement des extents Vous pouvez être amené à allouer des extents manuellement : • pour contrôler la distribution des extents d'une table dans les fichiers. l'instruction génère une erreur. Oracle9i Database Administration I 11-24 .Allouer manuellement des extents ALTER TABLE hr. Si vous n'utilisez pas la clause DATAFILE. Le fichier défini dans la clause DATAFILE doit appartenir au tablespace contenant la table. 11-24 Copyright © Oracle Corporation. le serveur Oracle utilise la taille d'extent NEXT_EXTENT de DBA_TABLES pour allouer l'extent. Tous droits réservés.DBF’). Remarque : La valeur NEXT_EXTENT de DBA_TABLES n'est pas affectée par l'allocation manuelle d'extents.]table ALLOCATE EXTENT [ ([SIZE integer [K|M]] [ DATAFILE ‘filename’ ]) ] Si SIZE est omis. Sinon. select * from employees where id=23 * ERROR at line 1: ORA-01502: index ‘HR.employees MOVE TABLESPACE data1. Tous droits réservés. Après avoir transféré une table. En outre. mais pas son contenu.EMPLOYEES_ID_PK' or partition of such index is in unusable state Oracle9i Database Administration I 11-25 . Réorganisation d'une table non partitionnée Vous pouvez déplacer une table non partitionnée sans exécuter l'utilitaire Export ou Import. • La réorganisation d'une table non partitionnée conserve sa structure. Cette opération est particulièrement utile lorsque vous : • transférez une table d'un tablespace à un autre. • Elle permet de déplacer une table vers un autre tablespace ou de réorganiser des extents. • réorganisez la table pour supprimer la migration de lignes. vous pouvez modifier les paramètres de stockage. 2001. vous devez reconstruire les index pour éviter l'erreur suivante : SQL> SELECT * FROM employees WHERE id=23. 11-25 Copyright © Oracle Corporation.Réorganisation d'une table non partitionnée ALTER TABLE hr. Oracle9i Database Administration I 11-26 . toutes ses lignes sont supprimées et l'espace utilisé est libéré. • Une table référencée par une clé étrangère ne peut pas être vidée. • Aucune donnée d'annulation n'est générée et la commande est implicitement validée (TRUNCATE TABLE est une commande LDD). • Les déclencheurs de suppression ne s'exécutent pas. Vider une table Syntaxe : TRUNCATE TABLE [schema.] table [{DROP | REUSE} STORAGE] Cette commande a les effets suivants : • Elle supprime toutes les lignes de la table.employees. 2001. • Elle vide également les index correspondants. Tous droits réservés. 11-26 Copyright © Oracle Corporation. • Lorsque vous videz une table.Vider une table TRUNCATE TABLE hr. • Les index correspondants sont également vidés. Syntaxe : Utilisez la commande suivante pour supprimer une table : DROP TABLE [schema. Tous droits réservés. Oracle9i Database Administration I 11-27 .department CASCADE CONSTRAINTS. 11-27 Copyright © Oracle Corporation.] table [CASCADE CONSTRAINTS] Lorsque vous supprimez une table. Supprimer une table Vous pouvez supprimer une table devenue inutile ou une table que vous souhaitez réorganiser. L'option CASCADE CONSTRAINTS est requise s'il s'agit de la table parent d'une relation de clé étrangère. voir le chapitre "Gérer l'intégrité des données". vous libérez les extents qu'elle utilise. vous pouvez les fusionner automatiquement ou manuellement plus tard. Remarque : Pour plus d'informations sur l'option CASCADE CONSTRAINTS. Si les extents sont contigus.Supprimer une table DROP TABLE hr. 2001. procédez comme suit : 1. 5.Supprimer une table Utiliser Oracle Enterprise Manager pour supprimer une table A partir de la console OEM. Oracle9i Database Administration I 11-28 . Sélectionnez Databases > Schema > Table. 6. Développez l'arborescence du dossier Schéma contenant la table à supprimer. Sélectionnez Yes pour confirmer la suppression. 4. 2. Développez l'arborescence du schéma. Sélectionnez Remove dans le menu accessible par le bouton droit de la souris. Sélectionnez la table. 3. Supprimer une colonne Le serveur Oracle vous permet de supprimer des colonnes à partir de lignes d'une table. Dans l'exemple de la diapositive. • Cette opération supprime la longueur et les données de colonne de chaque ligne. Cette instruction génère une erreur lorsque la table possède l'état VALID. Utiliser un point de reprise (checkpoint) lors de la suppression d'une colonne La suppression d'une colonne peut prendre un certain temps et nécessiter un espace d'annulation conséquent. vous pouvez définir des points de reprise afin de limiter l'espace d'annulation utilisé. • La suppression d'une colonne dans une table volumineuse prend énormément de temps. la table conserve l'attribut INVALID au démarrage et l'opération doit se poursuivre. Lorsque cette opération s'effectue dans des tables volumineuses. tout en évitant l'import ou l'export de données et la recréation d'index et de contraintes. Cette opération supprime toutes les colonnes non utilisées et qui peuvent occuper un espace considérable. car toutes les données de la colonne sont supprimées de la table. La suppression d'une colonne peut prendre un certain temps. Tous droits réservés.employees DROP COLUMN comments CASCADE CONSTRAINTS CHECKPOINT 1000. Dans les versions antérieures à Oracle8i. un point de reprise survient toutes les 1 000 lignes. La table possède l'attribut INVALID tant que la procédure n'est pas terminée. libérant ainsi de l'espace dans le bloc de données.Supprimer une colonne Supprimer une colonne d'une table : ALTER TABLE hr. Si l'instance tombe avant la fin de l'opération. 11-29 Copyright © Oracle Corporation. il était impossible de supprimer une colonne d'une table. Utilisez l'instruction suivante pour reprendre une annulation interrompue : SQL> ALTER TABLE hr. Oracle9i Database Administration I 11-29 .employees DROP COLUMNS CONTINUE. 2001. Sélectionnez Edit/View Details dans le menu accessible par le bouton droit de la souris. Développez l'arborescence du schéma. 6. 7. Sélectionnez Databases > Schema > Table. 2. Oracle9i Database Administration I 11-30 . 3.Supprimer une colonne Utiliser Oracle Enterprise Manager pour supprimer une colonne A partir de la console OEM. Sélectionnez la colonne à supprimer. Sélectionnez Drop Column dans le menu accessible par le bouton droit de la souris. 5. 4. procédez comme suit : 1. Sélectionnez la table. Développez l'arborescence du dossier Schéma contenant la table à supprimer. puis la supprimer ultérieurement. Lorsque vous supprimez deux colonnes d'une table. • Supprimez les colonnes non utilisées : ALTER TABLE hr. Ce marquage a l'avantage d'être relativement rapide dans la mesure où aucun espace disque n'est récupéré du fait qu'aucune donnée n'est supprimée. Les colonnes non utilisées se comportent comme si elles n'appartenaient pas à la table. toutes les lignes de la table sont mises à jour deux fois. Tous droits réservés.Utiliser l'option UNUSED • Marquez une colonne comme non utilisée : ALTER TABLE hr. marquer des colonnes comme non utilisées pour supprimer deux colonnes d'une même table. Vous pouvez supprimer ultérieurement les colonnes non utilisées de la table lorsque l'activité du système est faible.employees DROP UNUSED COLUMNS CHECKPOINT 1000. si vous marquez ces colonnes comme non utilisées avant de les supprimer. les lignes ne sont mises à jour qu'une seule fois. En revanche. les noms et les types de données de ces colonnes n'apparaissent pas lorsque la commande DESCRIBE est exécutée. 11-31 Copyright © Oracle Corporation. vous pouvez marquer la colonne pour indiquer qu'elle n'est pas utilisée. 2001. Leurs données ne sont pas visibles pour les interrogations. L'utilisateur peut ajouter une colonne portant le nom d'une colonne non utilisée. • Poursuivez la suppression de colonnes : ALTER TABLE hr. En outre. par exemple.employees SET UNUSED COLUMN comments CASCADE CONSTRAINTS. Vous pouvez.employees DROP COLUMNS CONTINUE CHECKPOINT 1000. Utiliser l'option UNUSED Au lieu de supprimer une colonne d'une table. Oracle9i Database Administration I 11-31 . interrogez la vue DBA_UNUSED_COL_TABS.-------------. OWNER TABLE_NAME COUNT ----. • supprimer d'une table organisée en index une colonne qui constitue une clé primaire.-------------. SQL > SELECT * FROM dba_partial_drop_tabs. • Une colonne LONG ou LONG RAW non utilisée mais non supprimée empêchera tout ajout de ce type de colonne à la table (même si l'affichage de la table ne présente pas de colonne LONG ou LONG RAW). interrogez la vue DBA_PARTIAL_DROP_TABS.-----HR EMPLOYEES 1 Pour identifier les tables sur lesquelles une opération DROP COLUMN n'est pas terminée. Oracle9i Database Administration I 11-32 . L'interrogation suivante indique que la table EMPLOYEES appartenant à l'utilisateur HR contient une colonne non utilisée : SQL > SELECT * FROM dba_unused_col_tabs. • supprimer des colonnes dans des tables imbriquées.Utiliser l'option UNUSED (suite) Identifier les tables contenant des colonnes inutilisées Pour identifier les tables contenant des colonnes non utilisées. • supprimer toutes les colonnes d'une table. • supprimer une colonne des tables appartenant à SYS. OWNER TABLE_NAME COUNT ----.-----no rows selected Restrictions relatives à la suppression d'une colonne Vous ne pouvez pas : • supprimer une colonne d'une table de type objet. • supprimer une colonne de clé de partitionnement. Elle affiche le nom des tables contenant des colonnes non utilisées et le nombre de ces colonnes. lancez l'interrogation suivante : SQL > SELECT table_name FROM dba_tables WHERE owner = 'HR'. Obtenir des informations sur les tables Vous pouvez obtenir des informations sur les tables à partir du dictionnaire de données. 2001. Pour afficher le numéro d'objet de données et l'emplacement de l'en-tête de toutes les tables appartenant à l'utilisateur HR. TABLE_NAME ------------------COUNTRIES DEPARTMENTS DEPARTMENTS_HIST EMPLOYEES EMPLOYEES_HIST JOBS JOB_HISTORY LOCATIONS REGIONS Oracle9i Database Administration I 11-33 . Tous droits réservés.Obtenir des informations sur les tables Interrogez les vues suivantes pour obtenir des informations sur les tables : • DBA_TABLES • DBA_OBJECTS 11-33 Copyright © Oracle Corporation. Obtenir des informations sur les tables (suite) SQL> SELECT object_name. created 2 FROM DBA_OBJECTS 3 WHERE object_name like 'EMPLOYEES' 4 AND owner = 'HR'.--------EMPLOYEES 16-APR-01 Oracle9i Database Administration I 11-34 . OBJECT_NAME CREATED ----------. 2001. Oracle9i Database Administration I 11-35 . Tous droits réservés. vider et supprimer une table supprimer une colonne dans une table 11-35 Copyright © Oracle Corporation.Synthèse Ce chapitre vous a permis d'apprendre à : • distinguer un ROWID étendu d'un ROWID restreint • • • • • décrire la structure d'une ligne créer des tables normales et des tables temporaires gérer des structures de stockage au sein d'une table réorganiser. Présentation de l'exercice 11 Dans cet exercice. vous allez : • créer une table • afficher les colonnes d'une table. les marquer comme non utilisées et les supprimer • allouer manuellement des extents • vider une table • obtenir des informations sur les tables 11-36 Copyright © Oracle Corporation. Tous droits réservés. 2001. Oracle9i Database Administration I 11-36 . Présentation de l'exercice 11 Remarque : Vous pouvez réaliser cet exercice avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet. créez les tables et les colonnes suivantes pour l'application de gestion des commandes que vous implémentez. veillez à affecter des valeurs NULL à la colonne DATE_OF_DELY DATE DATE_OF_DELY. puis contrôlez le nombre d'extents afin de vérifier qu'il n'ont pas été libérés. Indice : Interrogez la vue DBA_EXTENTS du dictionnaire de données. Table CUSTOMERS Colonne CUST_CODE NAME REGION Type et taille des données VARCHAR2(3) VARCHAR2(50) VARCHAR2(5) NUMBER(3) DATE VARCHAR2(3) ORDERS ORD_ID ORD_DATE CUST_CODE Remarque : Si vous utilisez OEM. Vérifiez que la table a bien été créée avec le nombre d'extents indiqué. 7 Videz la table ORDERS sans libérer d'espace. 4 Vérifiez le nombre d'extents utilisés par la table ORDERS. mais avec le paramètre MINEXTENTS=10.sql pour insérer des lignes dans les tables. Utilisez le tablespace USERS et conservez. Vous savez que des lignes seront insérées dans la table ORDERS sans valeur pour DATE_OF_DELY et que la table sera mise à jour une fois la commande effectuée. Marquez la colonne DATE_OF_DELY comme UNUSED.sql pour insérer des lignes dans la table ORDERS2. Combien d'extents la table comporte-telle à présent ? 9 Exécutez le script lab11_09. ORDERS2. les paramètres de stockage par défaut. à partir de la table ORDERS. 12 Supprimez la table ORDERS2. 6 Créez une autre table. 5 Allouez manuellement à la table ORDERS un extent possédant la taille par défaut. Oracle9i Database Administration I 11-37 . Que se passe-t-il ? 11 Supprimez la colonne non utilisée DATE_OF_DELY. 10 Affichez les colonnes de la table ORDERS2. 3 Identifiez les fichiers et les blocs qui contiennent les lignes destinées à la table ORDERS. Affichez à nouveau les colonnes de cette table. 8 Videz la table ORDERS2 en libérant de l'espace. 2 Exécutez le script lab11_02. puis vérifiez que l'opération a abouti.Exercice 11 : gérer les tables 1 En tant qu'utilisateur SYSTEM. si vous le souhaitez. Oracle9i Database Administration I 11-38 . Tous droits réservés. 2001.Gérer les index Copyright © Oracle Corporation. . 2001. Oracle9i Database Administration I 12-2 . Tous droits réservés. vous pourrez : • répertorier les différents types d'index et préciser leur utilisation • créer différents types d'index • réorganiser les index • mettre à jour les index • surveiller l'utilisation d'un index 12-2 Copyright © Oracle Corporation.Objectifs A la fin de ce chapitre. Un index concaténé. Le nombre maximal de colonnes d'un index composé est 32. Oracle9i Database Administration I 12-3 . la taille totale de l'ensemble des colonnes ne doit pas dépasser environ la moitié (moins un espace utilisé par Oracle) de l'espace disponible dans un bloc de données. alors que la classification physique dépend du mode de stockage des index. Il n'est pas nécessaire que les colonnes d'un index concaténé respectent l'ordre des colonnes de la table. Les index peuvent être classés en fonction de leur structure logique ou de leur mise en oeuvre physique. 2001. Classification des index Un index est une arborescence qui permet d'accéder directement à une ligne dans une table. La classification logique regroupe les index en fonction de l'application utilisée. est créé sur plusieurs colonnes dans une table. Toutefois.Classification des index • Logique – – – – Index basés sur une colonne ou concaténés Index uniques ou non-uniques Index basés sur une fonction Index de domaine • Physique – Index partitionnés ou non partitionnés – Index B-Tree Index normaux ou à clé inversée – Index bitmap 12-3 Copyright © Oracle Corporation. ou index composé. ni qu'elles soient adjacentes (par exemple : un index sur les colonnes des services et des postes d'une table d'employés). Index basés sur une colonne et index concaténés La clé d'un index basé sur une colonne ne contient qu'une seule colonne (par exemple : un index sur la colonne des numéros d'employé d'une table d'employés). Tous droits réservés. Index partitionnés et index non partitionnés Les index partitionnés sont utilisés avec des tables volumineuses pour stocker les entrées d'un index dans plusieurs segments. Cette restriction ne s'applique pas pour les index non-uniques. Il est qualifié d'index de domaine. Oracle9i Database Administration I 12-4 . car il indexe des données dans des domaines spécifiques aux applications.Classification des index (suite) Index uniques et index non-uniques Les index peuvent être uniques ou non-uniques. Ces index peuvent être créés sous forme d'index B-Tree ou bitmap. Ce type d'index précalcule la valeur de la fonction ou de l'expression et la stocke. Le partitionnement permet de répartir un index sur un grand nombre de tablespaces. Index de domaine Un index de domaine est un index spécifique (spatial ou sur texte) à une application que les sous-programmes fournis par un type d'index créent et gèrent et auquel ils accèdent. Objet ou LOB (Large Object). Un index unique garantit qu'il n'existe pas deux lignes portant les mêmes valeurs dans une colonne de clé (ou des colonnes) d'une table. Seuls les index de domaine basés sur une colonne sont pris en charge. donc de réduire la contention lors des recherches dans l'index et de faciliter la gestion. Vous pouvez créer cet index sur des colonnes contenant des données de type Scalaire. Ce chapitre explique comment créer et gérer les index B-Tree et bitmap non partitionnés. Index basés sur une fonction Un index basé sur une fonction est créé lorsque l'utilisateur fait appel à des fonctions ou des expressions impliquant une ou plusieurs colonnes d'une table en cours d'indexation. Une partition d'index peut être créée pour chaque partition de table. Les index partitionnés sont souvent utilisés avec les tables partitionnées pour améliorer l'évolutivité et faciliter la gestion. 2001. Tous droits réservés. Au bas de l'arborescence se trouvent les noeuds feuille qui contiennent les entrées d'index pointant sur les lignes de la table. Les blocs feuille comportent deux liens facilitant le balayage de l'index dans l'ordre croissant et décroissant des valeurs de clé. qui définissent la taille de la colonne dans la clé et la valeur de la colonne (le nombre de paires correspond au nombre maximal de colonnes dans l'index). • de paires de valeurs correspondant à la longueur de la colonne de clé. Le niveau suivant correspond aux blocs branche qui pointent sur les blocs du niveau suivant de l'index. Oracle9i Database Administration I 12-5 . qui contient les valeurs de clé. Index B-Tree Bien que tous les index utilisent une structure B-Tree. Structure d'un index B-Tree Dans la partie supérieure de l'index figure la racine contenant les entrées qui pointent sur le niveau suivant de l'index. • de l'identificateur ROWID d'une ligne.Index B-Tree Entrée d'index Racine Branche En-tête d'entrée d'index Feuille Longueur de la colonne de clé Valeur de la colonne de clé ROWID 12-5 Copyright © Oracle Corporation. l'expression index B-Tree est généralement associée à un index qui stocke une liste de ROWID pour chaque clé. Format des entrées feuille d'un index Une entrée d'index est constituée : • d'un en-tête d'entrée contenant le nombre de colonnes et les informations de verrouillage. L'impact d'une commande LMD sur un index est décrit ci-après. L'espace libéré par la ligne supprimée ne peut pas être utilisé pour de nouvelles entrées tant que toutes les entrées du bloc ne sont pas supprimées. • L'identificateur ROWID restreint permet de pointer sur les lignes de la table. • Il n'existe pas d'entrée d'index pour les lignes dont toutes les colonnes de clé sont NULL. C'est pourquoi une clause WHERE indiquant la valeur NULL aboutira toujours à un balayage complet de table (full table scan). Oracle9i Database Administration I 12-6 . sauf lors de la création. Le paramètre PCTFREE n'a aucun effet sur l'index. • Les opérations d'insertion provoquent l'insertion d'une entrée d'index dans le bloc approprié. Une nouvelle entrée peut être ajoutée à un bloc d'index. même si elle dispose d'un espace inférieur à celui défini par PCTFREE. Impact des opérations LMD sur un index Le serveur Oracle gère tous les index lorsque des opérations LMD sont exécutées sur une table. • La suppression d'une ligne entraîne uniquement la suppression logique de l'entrée d'index. sauf si l'index est compressé. • Les mises à jour des colonnes de clé provoquent une suppression logique et une insertion dans l'index.Index B-Tree (suite) Caractéristiques des entrées feuille d'un index Dans l'index B-Tree d'une table non partitionnée : • Les valeurs de clé se répètent si elles sont communes à plusieurs lignes. dans la mesure où toutes les lignes appartiennent au même segment. Si le bit est défini. Oracle9i Database Administration I 12-7 8 . les index bitmap offrent plus d'avantages que les index B-Tree : • lorsqu'une table contient des millions de lignes et que les colonnes de clé ont une faible cardinalité.8.0. 2001. 0100000011000001001> <Yellow. Tous droits réservés.0. Index bitmap Dans certains cas. qui contient le nombre de colonnes et les informations de verrouillage.0.8.3. • des valeurs de clé correspondant à la longueur et aux paires de valeurs de chaque colonne de clé (dans l'exemple.0. 0010001000001000010> 12-7 Copyright © Oracle Corporation.3. il est préférable d'utiliser des index bitmap plutôt que des index B-Tree pour les colonnes relatives au sexe et à la situation familiale dans une table contenant des enregistrements de passeport. Comme le montre le graphique.3.8. la ligne contenant le ROWID correspondant comporte la valeur de clé. • lorsque les interrogations utilisent souvent une combinaison de plusieurs conditions WHERE impliquant l'opérateur OR. 12. mais le noeud feuille comporte un bitmap pour chaque valeur de clé à la place d'une liste de ROWID. 12.3. Par exemple.3.3. le noeud feuille d'un index bitmap contient les éléments suivants : • un en-tête d'entrée. la clé n'est constituée que d'une seule colonne et la valeur de clé de la première entrée est Blue). 10. • lorsque les colonnes de clé sont en lecture seule ou qu'elles ne sont pas souvent mises à jour.Index bitmap Table Fichier 3 Bloc 10 Bloc 11 Index Bloc 12 ROWID ROWID clé de début de fin bitmap <Blue. Chaque bit du bitmap correspond à un ROWID possible. 10. 0001010000100100000> <Red.3. 1000100100010010100> <Green. 12. 12.3. Structure d'un index bitmap Un index bitmap présente également une structure B-Tree. c'est-à-dire qu'elles contiennent peu de valeurs distinctes. 10. 10.8. Du fait que les verrous sont appliqués sur l'ensemble du segment bitmap. le numéro de fichier 3. Oracle9i Database Administration I 12-8 . dans l'exemple. Le serveur Oracle utilise une technique de compression brevetée pour stocker les segments bitmap). Utiliser un index bitmap L'index B-Tree permet de localiser les noeuds feuille qui contiennent les segments bitmap d'une valeur donnée de la clé. Le ROWID de début et les segments bitmap permettent de localiser les lignes contenant la valeur de clé. Cette opération verrouille les segments bitmap correspondants. c'està-dire que le premier bit du bitmap correspond au ROWID. les bitmaps doivent être modifiés.Index bitmap (suite) Structure d'un index bitmap (suite) • le ROWID de début contenant. • le ROWID de fin contenant. Le ROWID de début est celui de la première ligne sur laquelle pointe le segment bitmap. le second bit du bitmap correspond à la ligne suivante du bloc. Les index bitmap utilisent des ROWID restreints. le numéro de bloc 10 et le numéro de ligne 0. le numéro de bloc 12 et le numéro de ligne 8. • un segment bitmap constitué d'une chaîne de bits (le bit est défini uniquement lorsque la ligne correspondante contient la valeur de clé. et le ROWID de fin pointe sur la dernière ligne de la table couverte par le segment bitmap. une ligne couverte par le bitmap ne peut pas être mise à jour par d'autres transactions tant que la première transaction n'est pas terminée. Lorsque la colonne de clé est modifiée dans la table. dans l'exemple. les index B-Tree peuvent être mieux adaptés à un environnement OLTP pour indexer les tables dynamiques. Ceci permet une utilisation efficace des bitmaps dans des interrogations qui utilisent le prédicat booléen. 2001. Tous droits réservés. En résumé. Oracle9i Database Administration I 12-9 . Le serveur Oracle peut utiliser deux segments bitmap pour exécuter un booléen au niveau du bit et obtenir le bitmap correspondant.Comparer les index B-Tree et les index bitmap Index B-Tree Adaptés aux colonnes de forte cardinalité Les mises à jour des clés consomment peu de ressources Inefficaces pour les interrogations utilisant des prédicats OR Utiles pour le traitement des transactions en ligne Index bitmap Adaptés aux colonnes de faible cardinalité Les mises à jour des colonnes de clé consomment de grandes quantités de ressources Efficaces pour les interrogations utilisant des prédicats OR Utiles pour le data warehouse 12-9 Copyright © Oracle Corporation. Comparer les index B-Tree et les index bitmap Les index bitmap sont plus compacts que les index B-Tree lorsqu'ils sont utilisés avec des colonnes de faible cardinalité. les verrous se trouvent sur les entrées correspondant à des lignes de la table. tandis que dans les index BTree. Les index bitmap permettent d'exécuter des opérations booléennes. car les bitmaps utilisent le verrouillage de niveau segment bitmap. Les mises à jour des colonnes de clé d'un index bitmap consomment davantage de ressources. tandis que les index bitmap peuvent être utiles pour les environnements de data warehouse dans lesquels des interrogations complexes sont utilisées dans des tables statiques volumineuses. Oracle9i Database Administration I 12-10 . Créer des index B-Tree normaux Vous pouvez créer un index dans le compte de l'utilisateur propriétaire de la table ou dans un compte différent. Tous droits réservés. 2001.employees_last_name_idx ON hr.employees(last_name) PCTFREE 30 STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 0 MAXEXTENTS 50) TABLESPACE indx. 12-10 Copyright © Oracle Corporation. L'instruction de la diapositive permet de créer un index sur la table EMPLOYEES à l'aide de la colonne LAST_NAME. bien que celui-ci soit généralement créé dans le même compte que celui de la table.Créer des index B-Tree normaux CREATE INDEX hr. Column : correspond au nom de la colonne. INITRANS : définit le nombre d'entrées de transaction préallouées dans chaque bloc (la valeur par défaut et minimale est 2). Oracle9i Database Administration I 12-11 . MAXTRANS : limite le nombre d'entrées de transaction pouvant être allouées à chaque bloc (la valeur par défaut est 255). NOSORT : indique que les lignes sont stockées dans la base de données en ordre croissant et que le serveur Oracle n'a pas besoin de les trier lors de la création de l'index. Index : correspond au nom de l'index. les tailles d'extent (ensemble des blocs contigus) de l'index sont arrondies au multiple supérieur. • PCTUSED ne peut pas être défini pour un index. l'attribut de journalisation de l'index correspond par défaut à celui du tablespace dans lequel il réside. le serveur Oracle utilise les index existants pour créer un nouvel index. ASC/DESC : indique si l'index doit être créé dans l'ordre croissant ou décroissant. • En cas d'absence de la clause [NO]LOGGING. Cette opération risque d'échouer si plusieurs opérations LMD ont été exécutées sur la table. Table : correspond au nom de la table. • Dans la mesure du possible. NOLOGGING : indique que la création de l'index et certains types de chargement de données ne sont pas consignés dans le fichier de journalisation. Etant donné que les entrées d'index doivent être stockées dans l'ordre approprié. Schema : correspond au propriétaire de l'index/de la table. Remarque : • Si le paramètre MINIMUM EXTENT est défini pour le tablespace. • Si le mot-clé NOSORT est utilisé lorsque les données ne sont pas triées selon la clé. l'exécution de l'instruction génère une erreur. PCTFREE : indique l'espace réservé dans chaque bloc (pourcentage de l'espace total moins l'en-tête de bloc) au moment de la création pour l'insertion de nouvelles entrées d'index. l'utilisateur ne peut pas contrôler les insertions dans un bloc d'index. LOGGING (valeur par défaut) : indique que la création de l'index et les opérations suivantes sur l'index sont consignées dans le fichier de journalisation (fichier redo log). TABLESPACE : définit le tablespace de création de l'index.Créer des index B-Tree normaux (suite) Explication de la syntaxe UNIQUE : désigne un index unique (la valeur par défaut est NONUNIQUE). STORAGE clause : identifie la clause de stockage qui détermine le mode d'allocation des extents à l'index. C'est le cas lorsque la clé du nouvel index correspond à la première partie de la clé d'un index existant. Sélectionnez Create dans le menu accessible par le bouton droit de la souris. 2. Sélectionnez Databases > dossier Schema > Index. procédez comme suit : 1. 4. Storage et Options. Partitions. Oracle9i Database Administration I 12-12 . Entrez les informations appropriées dans les pages General. Cliquez sur Create.Créer des index B-Tree normaux Utiliser Oracle Enterprise Manager pour créer un index A partir de la console OEM. 3. 12-13 Copyright © Oracle Corporation. Par conséquent. Les entrées d'index ne sont pas mises à jour. • Placez les index dans un tablespace distinct qui ne contient ni segment d'annulation. Utilisez toujours un nombre limité d'index sur les tables volatiles. les blocs d'index contiennent souvent plus d'entrées. Tous droits réservés.Règles de création des index • Equilibrez les besoins des interrogations et des LMD • Placez les index dans un tablespace distinct • Utilisez des tailles d'extent uniformes : multiples de cinq blocs ou MINIMUM EXTENT pour le tablespace • Utilisez la clause NOLOGGING pour les index volumineux • La valeur INITRANS doit généralement être plus élevée pour les index que pour les tables correspondantes. • Les entrées d'index étant plus petites que les lignes qu'elles indexent. Index et paramètre PCTFREE Le paramètre PCTFREE d'un index fonctionne différemment de celui d'une table. La mise à jour d'une colonne de clé provoque la suppression logique de l'entrée d'index et une insertion. la valeur de INITRANS doit généralement être plus élevée pour les index que pour les tables correspondantes. Oracle9i Database Administration I 12-13 . 2001. ni table. Ce paramètre n'est utilisé que lors de la création de l'index pour réserver de l'espace aux entrées d'index à insérer dans le même bloc d'index. ni segment temporaire. • Vous pouvez améliorer considérablement les performances des index volumineux en désactivant la fonction de journalisation. Règles de création des index Tenez compte des points suivants lors de la création d'un index : • Les index accélèrent les interrogations et ralentissent les opérations LMD. Utilisez la clause NOLOGGING pour créer des index volumineux. s'il s'agit d'un index sur la colonne des codes client d'une table de facturation.Règles de création des index (suite) Index et paramètre PCTFREE (suite) Affectez une valeur faible au paramètre PCTFREE pour les index de colonne dont la valeur augmente de manière séquentielle. par exemple. Lorsque la colonne indexée d'une ligne insérée peut prendre n'importe quelle valeur. par exemple. affectez une valeur plus élevée au paramètre PCTFREE. et il est inutile d'insérer une nouvelle entrée entre deux entrées d'index existantes. Dans ce cas. Oracle9i Database Administration I 12-14 . de nouvelles entrées d'index sont toujours ajoutées aux entrées existantes. Vous pouvez procéder ainsi. Dans ce type de situation. une année. comme dans le cas d'un numéro de facture généré par le système. utilisez l'équation suivante pour définir la valeur de PCTFREE : Nombre maximal de lignes – Nombre initial de lignes x 100 Nombre maximal de lignes La valeur maximale peut correspondre à une période spécifique. c'est-àdire que la nouvelle valeur peut être comprise dans la plage de valeurs en cours. . column [ASC | DESC ] ] . Créer des index bitmap Syntaxe Utilisez la commande suivante pour créer un index bitmap : CREATE BITMAP INDEX [schema.. Oracle9i Database Administration I 12-15 .] table (column [ ASC | DESC ] [ .] index ON [schema. 12-15 Copyright © Oracle Corporation. Tous droits réservés.Créer des index bitmap CREATE BITMAP INDEX orders_region_id_idx ON orders(region_id) PCTFREE 30 STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 0 MAXEXTENTS 50) TABLESPACE indx. 2001.) [ TABLESPACE tablespace ] [ PCTFREE integer ] [ INITRANS integer ] [ MAXTRANS integer ] [ storage-clause ] [ LOGGING| NOLOGGING ] [ NOSORT ] Notez qu'un index bitmap ne peut pas être unique. Oracle9i Database Administration I 12-16 . En règle générale. plus la cardinalité est élevée. plus la quantité de mémoire nécessaire est importante pour obtenir des performances optimales. Par exemple. La valeur par défaut est de 8 Mo. si la cardinalité est de 2. définissez une valeur faible.Créer des index bitmap (suite) Paramètre CREATE_BITMAP_AREA_SIZE Le paramètre d'initialisation CREATE_BITMAP_AREA_SIZE détermine l'espace à utiliser pour stocker les segments bitmap en mémoire. Si la cardinalité est peu élevée. exprimez la valeur en kilo-octets plutôt qu'en mégaoctets. Une valeur supérieure peut accélérer la création de l'index. procédez comme suit : 1. Partitions. 2. 5. 4. Storage et Options. Oracle9i Database Administration I 12-17 . Cliquez sur Create. 3. Sélectionnez Databases > Schema > Index. Sélectionnez Create dans le menu accessible par le bouton droit de la souris. Sélectionnez Bitmap dans la page General. Entrez les informations appropriées dans les pages General.Créer des index bitmap Utiliser Oracle Enterprise Manager pour créer un index bitmap A partir de la console OEM. 12-18 Copyright © Oracle Corporation. 2001. Vous pouvez modifier les paramètres d'utilisation des blocs pour garantir un niveau plus élevé de simultanéité d'accès aux données des blocs d'un index. Oracle9i Database Administration I 12-18 . Tous droits réservés.Modifier les paramètres de stockage des index ALTER INDEX employees_last_name_idx STORAGE(NEXT 400K MAXEXTENTS 100). Syntaxe ALTER INDEX [schema.]index [ storage-clause ] [ INITRANS integer ] [ MAXTRANS integer ] La modification des paramètres de stockage a les mêmes implications sur un index que sur une table. Modifier les paramètres de stockage des index La commande ALTER INDEX permet de modifier certains paramètres de stockage et d'utilisation des blocs. la modification vise à augmenter la valeur du paramètre MAXEXTENTS de l'index. Souvent. Développez l'arborescence du schéma auquel appartient l'index. Sélectionnez Databases > Schema > Index. 5. Oracle9i Database Administration I 12-19 . Modifiez les valeurs de la page Storage. Sélectionnez l'index 4. 3.Modifier les paramètres de stockage des index Utiliser Oracle Enterprise Manager pour modifier les paramètres de stockage d'un index A partir de la console OEM. procédez comme suit : 1. Cliquez sur Apply. 2. Lorsqu'une table est vidée. Remarque : L'espace d'indexation est libéré lorsque la table de l'index est vidée. Syntaxe Utilisez la commande suivante pour allouer de l'espace à un index ou en libérer : ALTER INDEX [schema. L'ajout d'extents empêche l'augmentation dynamique de la taille des index.]index {ALLOCATE EXTENT ([SIZE integer [K|M]] [ DATAFILE ‘filename’ ]) | DEALLOCATE UNUSED [KEEP integer [ K|M ] ] } Les règles d'allocation ou de libération manuelle d'espace à l'aide de ces commandes sont identiques à celles d'une table. Tous droits réservés. Allouer et libérer de l'espace d'indexation Allouer manuellement de l'espace à un index Il peut être nécessaire d'ajouter des extents à un index en prévision d'un grand nombre d'insertions dans une table.Allouer et libérer de l'espace d'indexation ALTER INDEX orders_region_id_idx ALLOCATE EXTENT (SIZE 200K DATAFILE ‘/DISK6/indx01. 12-20 Copyright © Oracle Corporation. Libérer manuellement de l'espace dans un index Utilisez la clause DEALLOCATE de la commande ALTER INDEX pour libérer l'espace inutilisé situé au-delà du repère high-water mark d'un index. ALTER INDEX orders_id_idx DEALLOCATE UNUSED. Oracle9i Database Administration I 12-20 . 2001. son index l'est également.dbf’). qui affecte les performances. • L'ancien index est supprimé après la création du nouvel index. 12-21 Copyright © Oracle Corporation. ce qui lui permet d'utiliser l'espace de manière optimale. 2001. • Aucun tri n'est nécessaire lors de la reconstruction d'un index à partir d'un index existant. • Le nouvel index ne contient pas d'entrées supprimées. Oracle9i Database Administration I 12-21 . • Les interrogations peuvent utiliser l'index existant pendant la construction du nouvel index. Cas de reconstruction d'index Reconstruisez un index dans les cas suivants : • L'index existant doit être transféré vers un autre tablespace. Tous droits réservés. Reconstruire un index La reconstruction d'un index présente les caractéristiques suivantes : • Un index est créé à partir d'un index existant.Reconstruire un index Utilisez la commande ALTER INDEX pour : • déplacer un index vers un autre tablespace • optimiser l'utilisation de l'espace en retirant les entrées supprimées ALTER INDEX orders_region_id_idx REBUILD TABLESPACE indx02. Cette opération peut s'avérer nécessaire si l'index se trouve dans le même tablespace que la table ou si des objets doivent être redistribués sur les disques. ce qui permet d'améliorer les performances. un espace suffisant est nécessaire dans le tablespace de l'ancien index et dans celui du nouvel index. Lors de la reconstruction. Oracle9i Database Administration I 12-22 . REBUILD ne permet pas de convertir un index bitmap en index B-Tree et inversement.] index REBUILD [ TABLESPACE tablespace ] [ PCTFREE integer ] [ INITRANS integer ] [ MAXTRANS integer ] [ storage-clause ] [ LOGGING| NOLOGGING ] [ REVERSE | NOREVERSE ] La commande ALTER INDEX . c'est le cas des index glissants. Ce cas de figure peut se présenter lors de la migration d'applications depuis une version antérieure du serveur Oracle.. Si d'anciennes commandes sont en attente. En règle générale. tels que ceux qui sont associés aux numéros de commande d'une table dans laquelle les commandes exécutées sont supprimées et les nouvelles commandes portant des numéros plus élevés sont ajoutées à la table. il peut exister des blocs feuille d'index ne contenant que quelques entrées supprimées.. Le mot-clé REVERSE ou NOREVERSE ne s'applique qu'aux index B-Tree.Reconstruire un index (suite) Cas de reconstruction d'index (suite) • L'index contient un grand nombre d'entrées supprimées.. MOVE TABLESPACE. • Un index normal existant doit être converti en index à clé inversée. • La table de l'index a été transférée vers un autre tablespace à l'aide de la commande ALTER TABLE .. Syntaxe Utilisez la commande suivante pour reconstruire un index : ALTER INDEX [schema. 2001. Reconstruire un index en ligne La création ou la reconstruction d'un index peut nécessiter beaucoup de temps. • Vous ne pouvez pas libérer l'espace inutilisé. • Certaines restrictions subsistent 12-23 Copyright © Oracle Corporation. mais il est recommandé de ne pas exécuter de longues opérations LMD au cours de cette procédure. cette opération nécessitait le verrouillage de la table et empêchait l'exécution d'opérations LMD simultanées. Restrictions : • Vous ne pouvez pas reconstruire un index sur une table temporaire.Reconstruire un index en ligne • La reconstruction des index peut s'effectuer avec un verrouillage de table minimal ALTER INDEX orders_id_idx REBUILD ONLINE. • Vous ne pouvez pas reconstruire l'ensemble d'un index partitionné. Remarque : Il existe toujours des verrous LMD qui vous empêchent d'exécuter d'autres opérations LDD lors de la construction d'index en ligne. Dans les versions antérieures à Oracle8i. Tous droits réservés. notamment si la table est très volumineuse. Oracle9i Database Administration I 12-23 . • Vous ne pouvez pas modifier la valeur du paramètre PCTFREE de l'index dans son intégralité. Oracle9i autorise les opérations simultanées sur la table de base pendant la création ou la reconstruction des index. Vous devez reconstruire chaque partition ou sous-partition. vous pouvez le reconstruire ou le fusionner.Fusionner les index Avant la fusion Après la fusion ALTER INDEX orders_id_idx COALESCE. Le schéma de la diapositive présente l'impact de la commande ALTER INDEX … COALESCE sur l'index hr. Avant la fusion. La fusion d'un index correspond à une reconstruction de blocs en ligne. Fusionner les index Lorsqu'un index est fragmenté. S'il existe des blocs feuille d'index B-Tree qui peuvent être libérés pour être réutilisés. vous pouvez les fusionner à l'aide de la commande SQL suivante : SQL> ALTER INDEX hr.employees_idx COALESCE. les deux premiers blocs feuille sont remplis à 50 %.employees_idx. vous devez en connaître les avantages et les inconvénients et choisir celle qui correspond le mieux à vos besoins. Cela signifie que l'index est fragmenté et qu'il est possible de le fusionner afin de remplir le premier bloc et ainsi de réduire la fragmentation. 2001. Avant d'effectuer l'une ou l'autre de ces opérations. Tous droits réservés. 12-24 Copyright © Oracle Corporation. Oracle9i Database Administration I 12-24 . 2001. comme indiqué dans l'exemple suivant : Oracle9i Database Administration I 12-25 . INDEX_STATS 12-25 Copyright © Oracle Corporation. Tous droits réservés. Syntaxe ANALYZE INDEX [ schema.]index VALIDATE STRUCTURE Après avoir exécuté cette commande.Vérifier les index et leur validité ANALYZE INDEX orders_region_id_idx VALIDATE STRUCTURE. Cette commande ne vérifie pas si les entrées d'index correspondent au données de la table. interrogez la vue INDEX_STATS pour obtenir des informations sur l'index. Vérifier les index et leur validité L'analyse d'un index vous permet : • de contrôler la corruption de bloc. • d'insérer dans la vue INDEX_STATS des informations sur l'index. pct_used. del_lf_rows FROM index_stats. PCT_USED --------11 LF_ROWS -------14 DEL_LF_ROWS -----------0 Oracle9i Database Administration I 12-26 . distinct_keys 2 3 lf_rows. si le rapport entre DEL_LF_ROWS et LF_ROWS excède 30 %.Vérifier les index et leur validité (suite) SQL> SELECT blocks. Réorganisez l'index si la proportion de lignes supprimées est élevée. BLOCKS -----25 1 row selected. par exemple. 12-27 Copyright © Oracle Corporation. 2001.deptartments_name_idx. Supprimer des index Vous pouvez supprimer un index dans les cas suivants : • lorsqu'il n'est plus utile aux applications. Tous droits réservés. notamment s'il s'agit d'un index de table volatile (cela s'applique généralement aux systèmes OLTP dans lesquels des interrogations ad hoc sont générées en fin d'année ou de trimestre pour collecter les informations nécessaires aux bilans). Les index nécessaires aux contraintes ne peuvent pas être supprimés si la contrainte dépendante n'a pas été préalablement désactivée ou supprimée. telles que le chargement. • lorsqu'il est utilisé périodiquement. • lorsqu'il est endommagé. La suppression d'index avant des chargements importants de données et leur recréation après les chargements : – améliorent les performances de chargement. il n'est pas nécessaire de le conserver. • lorsqu'il reçoit l'attribut INVALID à la suite d'un échec d'instance au cours de certaines opérations. • avant de procéder à des chargements en masse. Oracle9i Database Administration I 12-27 . – permettent une utilisation plus efficace de l'espace d'indexation. Dans ce cas.Supprimer des index • Supprimez et recréez un index avant de procéder à des chargements en masse • Supprimez les index rarement utilisés et créez-les lorsqu'ils sont nécessaires • Supprimez et recréez les index non valides DROP INDEX hr. Sélectionnez Databases > Schema > Index. Remarque : Vous ne pouvez pas supprimer un index qui sert à mettre en oeuvre une contrainte d'intégrité activée. Oracle9i Database Administration I 12-28 . Sélectionnez Remove dans le menu accessible par le bouton droit de la souris. Sélectionnez le schéma auquel appartient l'index. Sélectionnez l'index 5. 3. 6. procédez comme suit : 1. 2. 4. Confirmez la suppression. Développez l'arborescence du schéma auquel appartient l'index. Les contraintes sont présentées dans le chapitre "Gérer l'intégrité des données".Supprimer des index Utiliser Oracle Enterprise Manager pour supprimer un index A partir de la console OEM. dept_id_idx MONITORING USAGE • Pour arrêter la surveillance de l'utilisation d'un index : ALTER INDEX hr. Oracle9i Database Administration I 12-29 .Identifier les index non utilisés • Pour lancer la surveillance de l'utilisation d'un index : ALTER INDEX hr. Colonnes de la vue V$OBJECT_USAGE INDEX_NAME : nom de l'index.dept_id_idx NOMONITORING USAGE 12-29 Copyright © Oracle Corporation. vous pouvez le supprimer. la vue V$OBJECT_USAGE est réinitialisée pour l'index indiqué. Tous droits réservés. TABLE_NAME : table correspondante. il est possible de rassembler des statistiques sur l'utilisation d'un index et de les afficher dans la vue V$OBJECT_USAGE. Lorsque la clause MONITORING USAGE est mentionnée. START_MONITORING : heure de début de surveillance de l'index. la suppression des index non utilisés réduit la surcharge du serveur Oracle pour les instructions LMD et donc améliore les performances. MONITORING : indique si la surveillance est activée (ON) ou non (OFF). 2001. Identifier les index non utilisés A partir de la version Oracle9i. USED : indique par YES ou NO si l'index a été utilisé pendant la surveillance. Si les informations collectées indiquent que l'index n'est jamais utilisé. END_MONITORING : heure de fin de surveillance de l'index. Les informations précédentes sont effacées ou réinitialisées et une nouvelle heure de début est enregistrée. De plus. interrogez les vues suivantes : • DBA_INDEXES : fournit des informations sur les index • DBA_IND_COLUMNS : fournit des informations sur les colonnes indexées • V$OBJECT_USAGE : fournit des informations sur l'utilisation d'un index 12-30 Copyright © Oracle Corporation. Tous droits réservés. Oracle9i Database Administration I 12-30 . 2001.Obtenir des informations sur les index Pour obtenir des informations sur les index. Tous droits réservés.Synthèse Ce chapitre vous a permis d'apprendre à : • créer différents types d'index • réorganiser les index • supprimer des index • obtenir des informations sur les index à partir du dictionnaire de données • lancer et arrêter la surveillance de l'utilisation des index 12-31 Copyright © Oracle Corporation. 2001. Oracle9i Database Administration I 12-31 . 2001. Tous droits réservés. Oracle9i Database Administration I 12-32 . vous allez : • indexer des colonnes d'une table • transférer l'index vers un autre tablespace • supprimer un index • obtenir des informations sur l'index 12-32 Copyright © Oracle Corporation.Présentation de l'exercice 12 Dans cet exercice. Présentation de l'exercice 12 Remarque : Cet exercice peut être réalisé avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet. Index NUMB_OE_IDX NUMB_NO_IDX Colonne ODD_EVEN NO Blocs Oracle9i Database Administration I 12-33 . b Interrogez la table NUMBERS pour déterminer le nombre de valeurs distinctes dans les deux colonnes de la table. Indice : Utilisez une valeur PCTINCREASE égale à zéro pour créer des extents de taille identique. Placez ces index dans le tablespace INDX01. 2 Transférez l'index CUST_REGION_IDX vers un autre tablespace. Vérifiez dans DBA_SEGMENTS le nombre total de blocs alloués aux extents.sql pour créer la table NUMBERS et l'alimenter. exécutez le script lab12_05a. La table CUSTOMERS se trouve dans le schéma SYSTEM. Indice : Accédez à ces informations par la vue DBA_EXTENTS. le serveur Oracle construit un index temporaire. Indice : Vous pouvez reconstruire l'index en indiquant un autre tablespace. Le nouvel index réutilise-t-il les mêmes blocs qu'auparavant ? Indice : Reconstruisez l'index. respectivement sur les colonnes ODD_EVEN et NO de la table NUMBERS. 3 Notez les fichiers et les blocs utilisés par les extents dans l'index CUST_REGION_IDX. Remarque : Le nouvel index ne réutilise pas le même espace après reconstruction. 4 Recréez l'index CUST_REGION_IDX sans le supprimer au préalable et conservez-le dans le même tablespace. supprime l'ancien. Indice : Les index B-Tree sont adaptés aux colonnes qui contiennent de nombreuses valeurs distinctes tandis que les index bitmap conviennent plutôt aux colonnes qui contiennent peu de valeurs distinctes. Vérifiez la taille totale des index et écrivez ci-dessous le nombre de blocs.Exercice 12 : gérer les index 1 Vous envisagez de créer des index sur les colonnes NAME et REGION de la table CUSTOMERS. créez les index B-Tree NUMB_OE_IDX et NUMB_NO_IDX. puis placez-les dans le tablespace INDX01. puis renomme l'index temporaire. En effet. c En utilisant des tailles d'extent uniformes de 4 Ko. Quels sont les types d'index appropriés pour ces deux colonnes ? Créez ces index (nommez-les respectivement CUST_NAME_IDX et CUST_REGION_IDX). 5 a Sous l'ID utilisateur SYSTEM. Oracle9i Database Administration I 12-34 . .Gérer l'intégrité des données Copyright © Oracle Corporation. 2001. Tous droits réservés. Oracle9i Database Administration I 13-2 . vous pourrez : • implémenter des contraintes d'intégrité des données • gérer des contraintes d'intégrité • obtenir des informations sur les contraintes à partir du dictionnaire de données 13-2 Copyright © Oracle Corporation. 2001. Tous droits réservés.Objectifs A la fin de ce chapitre. • les déclencheurs de base de données. 2001.Intégrité des données Déclencheur de base de données Contrainte d'intégrité Données Code d'application Table 13-3 Copyright © Oracle Corporation. Le code d'application peut être implémenté sous forme de procédures stockées dans la base de données ou sous forme d'applications exécutées sur le client. Vous disposez de trois méthodes principales pour garantir l'intégrité des données : • le code d'application. Tous droits réservés. L'administrateur de base de données est le premier concerné par la mise en oeuvre de la méthode choisie par le concepteur et par l'équilibrage entre le besoin de performances et l'intégrité des données. Oracle9i Database Administration I 13-3 . Le présent chapitre aborde l'utilisation des contraintes d'intégrité. Intégrité des données L'intégrité des données garantit que les données d'une base respectent certaines règles. Le choix de la méthode à utiliser pour appliquer ces règles relève de la conception de la base de données. • les contraintes d'intégrité déclaratives. • elles sont entièrement documentées dans le dictionnaire de données. c'est-à-dire que vous pouvez les définir pour qu'ils s'exécutent lorsque l'événement se produit. Les déclencheurs de base de données ne sont généralement créés que pour appliquer une règle complexe ne pouvant être définie sous la forme d'une contrainte d'intégrité. même s'ils sont définis. Contraintes d'intégrité Les contraintes d'intégrité constituent le mécanisme par excellence pour appliquer des règles pour les raisons suivantes : • elles améliorent les performances. • elles centralisent les règles. Les sections suivantes expliquent le fonctionnement des contraintes d'intégrité et leur mise en oeuvre par le serveur Oracle. Oracle9i Database Administration I 13-4 . ou pour qu'ils ne s'exécutent pas. tel que l'insertion ou la mise à jour d'une colonne. Remarque : Les déclencheurs de base de données sont traités dans d'autres cours Oracle.Méthodes garantissant l'intégrité des données (suite) Déclencheurs de base de données Les déclencheurs de base de données sont des programmes PL/SQL qui s'exécutent lorsqu'un événement. dans la mesure où elles nécessitent peu de code. se produit dans une table. • elles sont simples à déclarer et à modifier. Vous pouvez activer ou désactiver les déclencheurs. • elles sont souples (activées ou désactivées). Types de contrainte Par défaut. Désigne une colonne ou une combinaison de colonnes comme unique. 2001. Chaque table de la base de données ne peut contenir plus d'une contrainte de clé primaire. Une contrainte de clé UNIQUE nécessite que toutes les valeurs d'une colonne ou d'un ensemble de colonnes (clé) soient uniques. Désigne une colonne ou une combinaison de colonnes comme clé étrangère dans une contrainte d'intégrité référentielle. de clé primaire et de clé étrangère doivent être gérées pour garantir une disponibilité optimale et des performances acceptables. • que les colonnes de clé primaire ne contiennent pas de valeurs NULL. UNIQUE CLE PRIMAIRE CLE ETRANGERE CHECK 13-5 Copyright © Oracle Corporation. Tous droits réservés. Oracle9i Database Administration I 13-5 . Indique une condition à laquelle doit répondre chaque ligne de la table.Types de contrainte Contrainte NOT NULL Description Indique qu'une colonne ne peut pas contenir de valeurs NULL. Désigne une colonne ou une combinaison de colonnes comme clé primaire de la table. Ce type de contrainte garantit : • que la colonne définie ne peut pas posséder de doublons de valeur de ligne dans une table. Bien que les contraintes NOT NULL et CHECK ne nécessitent aucune attention particulière de la part de l'administrateur de base de données (DBA). Une colonne ou un ensemble de colonnes d'une table ne peut pas contenir deux valeurs de ligne identiques. Une contrainte NOT NULL exige qu'une colonne d'une table contienne des valeurs. • qu'une contrainte d'intégrité CHECK sur une colonne ou un ensemble de colonnes nécessite qu'une condition définie soit vraie ou inconnue pour toutes les lignes de la table. toutes les colonnes d'une table acceptent les valeurs NULL (absence de valeur). les contraintes UNIQUE. Une contrainte d'intégrité peut prendre l'un des états suivants : • DISABLE NOVALIDATE • DISABLE VALIDATE • ENABLE NOVALIDATE • ENABLE VALIDATE DISABLE NOVALIDATE : Ce type de contrainte n'est pas contrôlé. DISABLE VALIDATE : Cet état interdit toute modification des colonnes auxquelles s'applique la contrainte. l'index de la contrainte est supprimé et la contrainte est désactivée.Etats des contraintes DISABLE NOVALIDATE DISABLE VALIDATE ENABLE NOVALIDATE ENABLE VALIDATE Nouvelles données Données existantes 13-6 Copyright © Oracle Corporation. Remarque : L'index n'est pas supprimé si la contrainte peut être différée. il est possible d'entrer des données non conformes dans la base. Etats des contraintes Une contrainte d'intégrité peut être activée (ENABLE) ou désactivée (DISABLE). les données sont contrôlées à leur entrée ou leur mise à jour dans la base. Tous droits réservés. Les données qui ne répondent pas à la règle de la contrainte sont refoulées. Si la contrainte est désactivée. Oracle9i Database Administration I 13-6 . Les données de la table et les nouvelles données entrées ou mises à jour peuvent ne pas respecter les règles de conformité définies par la contrainte. 2001. En outre. Si elle est activée. "differable index" . Il s'avère plus utile d'activer des contraintes NOVALIDATE dans des configurations de data warehouse qui téléchargent (vers le serveur) des données OLTP valides. les éventuelles vérifications apportées sont totalement ignorées. Si l'état de la contrainte est ENABLE NOVALIDATE. Il est cependant possible d'insérer ce type de ligne lorsque la contrainte est désactivée. Les transitions entre ces états sont régies par les règles suivantes : • ENABLE suppose VALIDATE. c'est-à-dire des données qui enfreignent la contrainte. La table peut cependant contenir des données non valides. Cette situation peut provoquer le report de l'exécution d'opérations LMD. En revanche. les lectures. Lorsqu'une contrainte unique ou primaire passe de l'état DISABLE à l'état ENABLE et qu'il n'existe aucun index. ENABLE VALIDATE : Cet état interdit l'insertion dans la table de lignes enfreignant la contrainte. VALIDATE et NOVALIDATE n'ont pas d'implications par défaut pour les états ENABLE et DISABLE. telles que le chargement de données. sauf si NOVALIDATE est défini. puis à l'état ENABLE VALIDATE. (Sauf si l'index peut être différé . De la même manière. Lorsqu'une contrainte passe de l'état NOVALIDATE à l'état VALIDATE. la table est verrouillée et la conformité de toutes les données de la table est vérifiée. Les lignes qui enfreignent la contrainte doivent être mises à jour ou supprimées pour que la contrainte puisse recevoir l'état validé. écritures et instructions LDD ne sont pas bloquées. toute infraction résultant de l'insertion de données alors que la contrainte était désactivée. ce dernier est supprimé. demeure. lorsqu'une clé unique ou primaire passe de l'état ENABLE à l'état DISABLE et qu'elle est activée avec un index unique. • • • Oracle9i Database Administration I 13-7 . • • DISABLE suppose NOVALIDATE. La ligne est alors appelée exception à la contrainte. alors un index unique est créé automatiquement. Lorsqu'une contrainte passe de l'état désactivé à l'état ENABLE VALIDATE. Il est donc conseillé de faire d'abord passer la contrainte de l'état désactivé à l'état ENABLE NOVALIDATE. Lorsqu'une seule contrainte passe de l'état ENABLE NOVALIDATE à l'état ENABLE VALIDATE.Etats des contraintes (suite) ENABLE NOVALIDATE : Cet état interdit l'entrée de nouvelles données non conformes à la contrainte. sauf si VALIDATE est défini. lorsque la contrainte passe de l'état VALIDATE à l'état NOVALIDATE. toutes les données doivent être vérifiées.alors l'index créé n'est pas unique). Vérification des contraintes Vous pouvez différer la vérification de la validité des contraintes jusqu'à la fin de la transaction. Ces contraintes s'avèrent très utiles lorsque les lignes parent et les lignes enfant d'une relation de clé étrangère sont entrées simultanément. par défaut. Contraintes différées Les contraintes différées ne sont vérifiées que lorsqu'une transaction est validée. Une contrainte définie comme pouvant être différée peut être indiquée comme suit : • Initially immediate indique qu'il s'agit par défaut d'une contrainte immédiate. également appelées contraintes immédiates. telle que delete cascade. Une violation de contrainte annule l'instruction. Si une contrainte provoque une action. Oracle9i Database Administration I 13-8 . Tous droits réservés. Il est impossible de modifier une contrainte ne pouvant pas être différée afin de l'appliquer à la fin de la transaction. l'ensemble de la transaction est annulé. la contrainte ne doit être appliquée qu'à la fin de la transaction. sauf indication contraire explicite.Vérification des contraintes Instruction LMD Vérifier la validité des contraintes non différées COMMIT Vérifier la validité des contraintes différées 13-8 Copyright © Oracle Corporation. comme dans le cas d'un système de traitement des commandes où les articles et la commande sont entrés simultanément. • Initially deferred indique que. sont appliquées à la fin de chaque instruction LMD. on considère alors que l'action fait partie de l'instruction qui l'a déclenchée. Contraintes non différées ou immédiates Les contraintes non différées. 2001. Si une violation de contrainte est détectée lors de la validation. Tous droits réservés. Le mode SET CONSTRAINTS est actif pendant la durée de la transaction ou jusqu'à ce qu'une autre instruction SET CONSTRAINTS réinitialise le mode. L'instruction SET CONSTRAINTS ne peut pas être utilisée dans les déclencheurs. ALTER SESSION SET CONSTRAINT[S] = {IMMEDIATE|DEFERRED|DEFAULT} SET CONSTRAINT | CONSTRAINTS {constraint |ALL } {IMMEDIATE|DEFERRED} Oracle9i Database Administration I 13-9 . 13-9 Copyright © Oracle Corporation. L'instruction ALTER SESSION dispose également d'une clause SET CONSTRAINTS permettant d'affecter la valeur IMMEDIATE ou DEFERRED aux contraintes. • L'instruction ALTER SESSION dispose également d'une clause SET CONSTRAINTS permettant d'affecter la valeur DEFERRED ou IMMEDIATE aux contraintes. Définir des contraintes immédiates ou différées L'instruction SET CONSTRAINTS définit des contraintes DEFERRED ou IMMEDIATE pour une transaction spécifique.Définir des contraintes immédiates ou différées • Utilisez l'instruction SET CONSTRAINTS pour définir des contraintes DEFERRED (différées) ou IMMEDIATE (immédiates). L'instruction ALTER SESSION SET CONSTRAINTS s'applique uniquement à une session en cours. 2001. Elle vous permet de définir le mode pour des contraintes ou pour une liste de noms de contrainte. Cette commande suppose de définir TOUTES les contraintes pouvant être différées (la liste des noms de contrainte ne peut pas être définie). • Si un index peut être utilisé et que la contrainte ne peut pas être différée. un index portant le nom de la contrainte est créé selon les règles suivantes : – S'il s'agit d'une clé pouvant être différée.Application des contraintes UNIQUE et de clé primaire Clé activée ? Oui Un index Oui est-il disponible ? S'agit-il Contrainte Oui d'un index nonpouvant être unique ? différée ? Non Contrainte pouvant être différée ? Non Utilisez l'index existant Non/Oui Oui Non N'utilisez pas d'index Non Créez un index unique Créez un index non-unique 13-10 Copyright © Oracle Corporation. – S'il s'agit d'une clé ne pouvant pas être différée. utilisez l'index existant si la contrainte peut être différée et que l'index est non-unique. Si la contrainte est activée et que les colonnes de la contrainte ne correspondent pas au début d'un index. est utilisé pour appliquer la contrainte. un index unique est créé. qu'il soit unique ou non-unique. Tous droits réservés. De même. Application des contraintes UNIQUE et de clé primaire Les contraintes UNIQUE et de clé primaire sont appliquées en utilisant des index. 2001. aucun index n'est nécessaire. Le serveur Oracle utilise la procédure suivante pour mettre en oeuvre les contraintes UNIQUE et de clé primaire : • • Si la contrainte est désactivée. Si la contrainte est activée et que les colonnes de la contrainte forment la première partie d'un index. il convient alors d'utiliser l'index existant. cet index. un index non-unique est créé sur la colonne de clé. Vous pouvez contrôler l'emplacement et le type de l'index utilisé pour appliquer ces contraintes. • Oracle9i Database Administration I 13-10 . L'instruction suivante permet d'effectuer ces deux opérations : DROP TABLE table CASCADE CONSTRAINTS Vous ne pouvez pas vider la table mère sans supprimer ou désactiver la clé étrangère. Remarques sur la clé étrangère Vous devez tenir compte de plusieurs éléments lorsque vous gérez des tables dans une relation de clé étrangère. utilisez la commande suivante : DROP TABLESPACE tablespace INCLUDING CONTENTS CASCADE CONSTRAINTS Oracle9i Database Administration I 13-11 . 2001. Pour ce faire. Tous droits réservés. LDD impliquant la table parent La clé étrangère doit être supprimée avant la table parent. La clé étrangère doit être supprimée avant le tablespace contenant la table parent.Remarques sur la clé étrangère Action souhaitée Supprimer la table parent Vider la table parent Solution appropriée Mise en cascade des contraintes Désactiver ou supprimer la clé étrangère Utiliser la clause CASCADE CONSTRAINTS S'assurer que le tablespace contenant la clé parent est en ligne Supprimer le tablespace contenant la table parent Exécuter l'instruction LMD sur la table enfant 13-11 Copyright © Oracle Corporation. Lorsque des données sont insérées ou que la colonne de clé étrangère est mise à jour dans la table enfant. mais le libère immédiatement après. Si la clé étrangère de la table enfant ne contient pas d'index. la clé parent ne peut être mise à jour que si l'ancienne valeur de clé ne figure dans aucune ligne enfant. le verrou est obtenu et libéré une fois par ligne. créez un index sur les colonnes de la clé étrangère. Oracle9i Database Administration I 13-12 . Il obtient toujours le verrou de type Share au niveau table. Si plusieurs clés primaires sont mises à jour ou supprimées. le serveur Oracle doit vérifier dans la table enfant qu'aucune ligne ne contient la clé étrangère correspondante. Oracle9i ne nécessite plus de verrou de type Share sur les clés étrangères non indexées. Lors de la mise à jour ou de la suppression de la clé primaire. l'opération n'aboutit que si le tablespace contenant l'index est en ligne (online). il est possible de conserver l'intégrité référentielle en verrouillant les entrées d'index et en évitant d'utiliser des verrous plus restrictifs sur la table enfant. Si la table contient un index. le serveur Oracle vérifie l'index de la table parent utilisée pour appliquer la clé référencée. le serveur Oracle verrouille la table enfant et interdit les modifications pour garantir l'intégrité référentielle. De même.Remarques sur la clé étrangère (suite) Si l'option DELETE CASCADE n'est pas utilisée lors de la suppression de lignes de la table parent. Si les deux tables doivent être mises à jour simultanément par des transactions différentes. Le tablespace contenant la table parent ne doit pas nécessairement être en ligne pour exécuter des opérations LMD sur la table enfant. Par conséquent. Pour définir une contrainte d'intégrité. la table parent doit figurer dans votre schéma ou vous devez disposer du privilège REFERENCES sur les colonnes de la clé référencée dans la table parent. 13-13 Copyright © Oracle Corporation. Définir des contraintes lors de la création d'une table Vous pouvez définir une contrainte lorsque vous créez une table ou lorsque vous la modifiez. vous devez disposer des privilèges requis. Tous droits réservés. Pour cela.Définir des contraintes lors de la création d'une table CREATE TABLE hr. 2001. last_name VARCHAR2(25) CONSTRAINT employee_last_name_nn NOT NULL.employee( id NUMBER(7) CONSTRAINT employee_id_pk PRIMARY KEY DEFERRABLE USING INDEX STORAGE(INITIAL 100K NEXT 100K) TABLESPACE indx. Oracle9i Database Administration I 13-13 . dept_id NUMBER(7)) TABLESPACE users. Pour créer une contrainte d'intégrité référentielle. utilisez la clause constraint_clause dans une instruction CREATE TABLE ou ALTER TABLE. la contrainte doit. DISABLE : désactive la contrainte d'intégrité (lorsqu'une contrainte d'intégrité est désactivée. par défaut. INITIALLY IMMEDIATE est utilisé par défaut). NOT DEFERRABLE est utilisé par défaut. elle n'est vérifiée qu'à la fin de chaque transaction. Oracle9i Database Administration I 13-14 . DEFERRABLE : indique que la vérification des contraintes peut être différée jusqu'à la fin de la transaction à l'aide de la commande SET CONSTRAINT.Définir des contraintes lors de la création d'une table (suite) La syntaxe column_constraint fait partie de la définition de la table. USING INDEX : indique que les paramètres définis dans index-clause doivent être utilisés pour l'index auquel fait appel le serveur Oracle afin d'appliquer une contrainte UNIQUE ou de clé primaire (l'index porte le même nom que la contrainte). NOT DEFERRABLE : indique que la contrainte est vérifiée à la fin de chaque instruction LMD (une contrainte NOT DEFERRABLE ne peut pas être différée par des sessions ou des transactions.) INITIALLY IMMEDIATE : indique qu'au début de chaque transaction.]table [(column)] [ON DELETE CASCADE] |CHECK (condition) } constraint_state :== [NOT DEFERRABLE|DEFERRABLE [INITIALLY {IMMEDIATE|DEFERRED}] ] [DISABLE|ENABLE [VALIDATE|NOVALIDATE]] Où : CONSTRAINT : identifie la contrainte d'intégrité par le nom constraint stocké dans le dictionnaire de données. être vérifiée à la fin de chaque instruction LMD (si aucune clause INITIALLY n'est définie. La syntaxe suivante vous permet de définir la contrainte au moment de la création de la table : column datatype [CONSTRAINT constraint] {[NOT] NULL |UNIQUE [USING INDEX index_clause] |PRIMARY KEY [USING INDEX index_clause] |REFERENCES [schema. INITIALLY DEFERRED : indique qu'il s'agit d'une contrainte DEFERRABLE et que. le serveur Oracle ne l'applique pas). par défaut. Sélectionnez la page Constraints. Sélectionnez Create dans le menu accessible à l'aide du bouton droit de la souris. Cliquez sur Create. 5. puis définissez des contraintes d'intégrité. Oracle9i Database Administration I 13-15 . procédez comme suit : 1. 3. 2. 4. Sélectionnez Databases > Schema > Table.Définir des contraintes lors de la création d'une table (suite) Utiliser Oracle Enterprise Manager pour définir des contraintes A partir de la console OEM. Renseignez la page General. department(id) 4 DEFERRABLE INITIALLY DEFERRED).. ) [USING INDEX index_clause] |FOREIGN KEY (column [. Oracle9i Database Administration I 13-16 . column ]. décrite dans la section "Vérifier les contraintes" du présent chapitre. peut être utilisée pour identifier les lignes qui enfreignent une contrainte ajoutée à l'aide de la commande ALTER TABLE.. ) [USING INDEX index_clause] |UNIQUE (column [... Il peut s'agir d'une contrainte quelconque à l'exception de la contrainte NOT NULL. • La définition d'une contrainte à partir du type NOT NULL une fois la table créée n'est possible que dans le cas suivant : ALTER TABLE table MODIFY column CONSTRAINT constraint NOT NULL. column ].employee 2 ADD(CONSTRAINT employee_dept_id_fk FOREIGN KEY(dept_id) 3 REFERENCES hr. column ]. puisque vous pouvez créer plusieurs fois la même contrainte avec des noms différents. Une contrainte de table se définit comme suit : [CONSTRAINT constraint] {PRIMARY KEY (column [.. Exemple de définition de contraintes après la création d'une table SQL> ALTER TABLE hr. Remarque : La clause EXCEPTIONS. ) REFERENCES [schema.]table [(column [. • Vous devez utiliser des contraintes de table dans les cas suivants : – lorsqu'une contrainte s'applique à plusieurs colonnes. column ].Définir des contraintes lors de la création d'une table (suite) Contrainte de table Une contrainte de table fait partie de la définition de la table.. notamment pour les contraintes CHECK.. – lorsqu'une table est modifiée pour recevoir des contraintes autres que NOT NULL. )] [ON DELETE CASCADE] |CHECK (condition) } [constraint_state] Remarque : • Il est recommandé d'adopter une convention d'appellation standard pour les contraintes.. il est préférable de désactiver les contraintes. Pour ce faire. Instructions de définition des contraintes Tenez compte des points suivants pour définir des contraintes : • Placez les index utilisés pour appliquer les contraintes UNIQUE et de clé primaire dans un tablespace différent de celui de la table. Si vous utilisez un index unique pour appliquer une contrainte UNIQUE ou de clé primaire. – utilisent des index non-uniques si les chargements en masse sont fréquents. cet index doit être supprimé lorsque vous désactivez la contrainte. Dans une telle situation. Pour ce faire. • Les clés étrangères d'autoréférencement : – définissent ou activent les clés étrangères après le premier chargement de données. 13-17 Copyright © Oracle Corporation. 2001. vous pouvez améliorer les performances en utilisant un index non-unique pour appliquer des contraintes UNIQUE ou de clé primaire. puis de réactiver les contraintes. • Si une table contient une clé étrangère d'autoréférencement. de charger les données. puis modifier la table pour ajouter ou activer la contrainte. soit créer la table et l'index.Instructions de définition des contraintes • Contraintes UNIQUE et de clé primaire : – placent des index dans un tablespace distinct. – diffèrent la vérification des contraintes. Oracle9i Database Administration I 13-17 . Tous droits réservés. La seconde méthode s'avère très utile lorsque des données sont chargées fréquemment. utilisez l'une des méthodes suivantes pour charger les données : – Définissez ou activez la clé étrangère après le premier chargement de données. – Définissez la contrainte comme pouvant être différée. • Si les données sont souvent chargées en masse dans une table. vous pouvez soit définir la clause USING INDEX. créez une clé pouvant être différée ou créez l'index avant de définir ou d'activer la clé. . Si vous utilisez cette option pour activer une contrainte. Enable NOVALIDATE Pour les contraintes de clé primaire (PRIMARY KEY) et UNIQUE possédant un index.Activer les contraintes ENABLE NOVALIDATE • Table non verrouillée • Les clés primaires et uniques doivent utiliser des index non-uniques ALTER TABLE hr. l'utilisation du mode NOVALIDATE est beaucoup plus rapide que celle du mode VALIDATE. ] table ENABLE NOVALIDATE {CONSTRAINT constraint | PRIMARY KEY | UNIQUE ( column [. comme c'est le cas dans un environnement OLTP. 2001. Utilisez cette méthode lorsque de nombreuses opérations LMD sont exécutées sur la table. car les données existantes ne sont pas vérifiées par rapport à la contrainte si cette dernière peut être différée.departments ENABLE NOVALIDATE CONSTRAINT dept_pk.. Tous droits réservés. Utilisez la commande suivante pour activer une contrainte ENABLE NOVALIDATE : ALTER TABLE [ schema. il n'est pas nécessaire de verrouiller la table. Activer les contraintes Une contrainte désactivée peut être activée à l'aide de l'option ENABLE NOVALIDATE ou ENABLE VALIDATE. ) } [ USING INDEX index_clause ] Oracle9i Database Administration I 13-18 . column ] . 13-18 Copyright © Oracle Corporation. Remarque : Le cours Introduction to SQL and PL/SQL indique comment désactiver des contraintes. Toutefois. Oracle9i Database Administration I 13-19 . cette méthode ne procure aucun avantage particulier par rapport à la méthode ENABLE VALIDATE. si vous devez créer l'index. • les contraintes ont été désactivées et l'index a été supprimé.Activer les contraintes (suite) Restrictions La clause USING INDEX ne s'applique qu'aux contraintes UNIQUE ou de clé primaire pouvant être différées. car le serveur Oracle verrouille la table pour créer l'index. et uniquement si l'une des conditions suivantes est vraie : • les contraintes n'ont pas été activées lors de leur création. 2. 3. procédez comme suit : 1. 4. puis apportez les modifications nécessaires. Oracle9i Database Administration I 13-20 . Sélectionnez Databases > Schema > Table. Cliquez sur l'onglet Constraints. Sélectionnez la table dans laquelle les contraintes doivent être modifiées.Activer les contraintes (suite) Utiliser Oracle Enterprise Manager pour définir des contraintes A partir de la console OEM. Cliquez sur Apply. employees ENABLE VALIDATE CONSTRAINT emp_dept_fk. • Le serveur Oracle crée un index s'il n'en existe pas sur les colonnes d'index. Si cette commande est exécutée lorsqu'une contrainte est en vigueur. Si la détection est lancée alors que la contrainte est désactivée. Oracle9i Database Administration I 13-21 . Activer les contraintes Lorsque le mode VALIDATE est associé à une contrainte. Tous droits réservés. 2001. Il crée un index non-unique pour une contrainte UNIQUE ou de clé primaire pouvant être différée. • Les opérations simultanées sur la table sont rendues possibles. Les avantages sont les suivants : • Toutes les contraintes sont activées simultanément. La contrainte appliquée garantit qu'aucune donnée insérée lors de la validation ne viole ces règles. Il crée un index unique lorsqu'il active une contrainte UNIQUE ou de clé primaire ne pouvant pas être différée. les données existantes sont vérifiées par rapport à la contrainte.Activer les contraintes • Table verrouillée • Peut utiliser des index uniques ou non-uniques • Requiert des données de table valides ENABLE VALIDATE ALTER TABLE hr. la table n'a pas besoin d'être verrouillée durant la validation. Cette action est effectuée par défaut lorsqu'une contrainte est activée. les effets sont les suivants : • La table est verrouillée et aucune modification n'est possible tant que la validation des données existantes n'est pas terminée. 13-21 Copyright © Oracle Corporation. • Chaque contrainte est exécutée en interne et en parallèle. Il est inutile de la définir lorsque vous activez une contrainte désactivée. Oracle9i Database Administration I 13-22 . • L'utilisation de la clause EXCEPTIONS est décrite dans la section suivante. • Si des données de la table violent la contrainte. ) } [ USING INDEX index_clause ] [ EXCEPTIONS INTO [ schema. column ] .. ] table ENABLE [ VALIDATE ]{CONSTRAINT constraint | PRIMARY KEY | UNIQUE ( column [. ] table ] Remarque : • VALIDATE est l'option par défaut.. l'instruction est annulée et la contrainte reste désactivée.Activer les contraintes (suite) Utilisez la commande suivante pour activer une contrainte ENABLE VALIDATE : ALTER TABLE [ schema. et réactiver une contrainte. • Lancez une sous-interrogation sur la table EXCEPTIONS pour identifier les lignes contenant des données non valides. Pour plus d'informations. • Corrigez les erreurs.sql dépendent du système d'exploitation.sql pour créer la table EXCEPTIONS.Utiliser la table EXCEPTIONS • Exécutez le script utlexcpt1. exécutez le script utlexcpt1. Si la table EXCEPTIONS n'a pas encore été créée. 13-23 Copyright © Oracle Corporation. Identifier une violation de contrainte due aux lignes La clause EXCEPTIONS permet d'identifier les lignes qui violent une contrainte activée. Tous droits réservés. procédez comme suit : 1. • Exécutez l'instruction ALTER TABLE avec l'option EXCEPTIONS. consultez la documentation Oracle propre à votre système d'exploitation. Pour identifier et rectifier les violations de contrainte. 2001. Oracle9i Database Administration I 13-23 . SQL> DESCRIBE exceptions Name -------------------------ROW_ID OWNER TABLE_NAME CONSTRAINT Null? ------ROWID VARCHAR2(30) VARCHAR2(30) VARCHAR2(30) Type ---------------- Remarque : Le nom et l'emplacement exacts du script utlexcpt1.sql : SQL> @?/rdbms/admin/utlexcpt1 Statement processed. • Réexécutez l'instruction ALTER TABLE pour activer la contrainte. ---. Si vous réexécutez la commande.employee 2 ENABLE VALIDATE CONSTRAINT employee_dept_id_fk 3 EXCEPTIONS INTO system.employee 2 SET dept_id=10 3 WHERE rowid=’AAAAeyAADAAAAA1AAA’. Des lignes sont insérées dans la table EXCEPTIONS. ALTER TABLE hr. SQL> COMMIT. 3. id. last_name. ROWID ID LAST_NAME DEPT_ID -----------------. dept_id 2 3 4 5 FROM hr.------AAAAeyAADAAAAA1AAA 1003 Pirie 50 1 row selected. Statement processed.--------.Identifier une violation de contrainte due aux lignes (suite) 2.employee * ORA-02298: cannot enable (HR.EMPLOYEE_DEPT_ID_FK) . videz cette table pour supprimer toutes les lignes existantes. 4.exceptions. elle doit appartenir au propriétaire de la table en cours de modification.parent keys not found Si la table EXCEPTIONS n'est pas qualifiée avec le nom du propriétaire. Corrigez les erreurs contenues dans les données : SQL> UPDATE hr. 1 row processed.employee WHERE ROWID in (SELECT row_id FROM exceptions) FOR UPDATE. Exécutez la commande ALTER TABLE en utilisant la clause EXCEPTIONS : SQL> ALTER TABLE hr. Identifiez les données non valides en lançant une sous-interrogation sur la table EXCEPTIONS : SQL> SELECT rowid. Oracle9i Database Administration I 13-24 . Statement processed.employee 2 ENABLE VALIDATE CONSTRAINT employee_dept_id_fk 3 EXCEPTIONS INTO system.Identifier une violation de contrainte due aux lignes (suite) 5.exceptions. Statement processed. SQL> ALTER TABLE hr. Oracle9i Database Administration I 13-25 . Videz la table EXCEPTIONS et réactivez la contrainte : SQL> TRUNCATE TABLE exceptions. 2001. validated 3 FROM dba_constraints 4 WHERE owner='HR' 5 AND table_name='EMPLOYEES'. DEFERRABLE DEFERRED VALIDATED --------------. R EMPLOYEE_ID_PK P SYS_C00565 C 3 rows selected. Obtenir des informations sur les contraintes Lancez l'interrogation suivante sur la table EMPLOYEE de l'utilisateur HR pour obtenir le nom..EMPLOYEE_DEPT. constraint_type.----------DEFERRABLE DEFERRED VALIDATED DEFERRABLE IMMEDIATE VALIDATED NOT DEFERRABLE IMMEDIATE ---------VALIDATED Oracle9i Database Administration I 13-26 . deferrable. Tous droits réservés. CONSTRAINT_NAME C ---------------. le type et le statut de toutes les contraintes : SQL> SELECT constraint_name. 2 deferred.Obtenir des informations sur les contraintes Interrogez les vues suivantes pour obtenir des informations sur les contraintes : • DBA_CONSTRAINTS • DBA_CONS_COLUMNS 13-26 Copyright © Oracle Corporation. . Indique la condition définie pour une contrainte CHECK.owner = cc. SEARCH_CONDITION R_OWNER R_CONSTRAINT_NAME GENERATED BAD RELY LAST_CHANGE Colonnes des contraintes Pour identifier les colonnes des contraintes de la table EMPLOYEES de l'utilisateur HR.constraint_name = cc. Indique le propriétaire et le nom de la contrainte référencée pour les clés étrangères.table_name='EMPLOYEE' 6 AND c. c. dba_cons_columns cc 4 WHERE c. Si cet indicateur est défini. il est utilisé dans l'optimiseur.. CONSTRAINT_NAME C COLUMN_NAME ---------------. 2 cc. Indique si le nom de la contrainte a été généré par le système (les valeurs acceptées sont USERNAME et GENERATED NAME). R ou C selon qu'il s'agit respectivement d'une contrainte de clé primaire. lancez l'interrogation suivante : SQL> SELECT c.constraint_name. U. Indique la date à laquelle la contrainte a été activée ou désactivée pour la dernière fois. Oracle9i Database Administration I 13-27 . Les contraintes NOT NULL sont stockées sous forme de contraintes CHECK. de clé étrangère ou d'une contrainte CHECK. Indique que la contrainte doit être réécrite afin d'éviter des problèmes tels que ceux liés au passage à l'an 2000.column_name 3 FROM dba_constraints c..owner 7 AND c.constraint_type.constraint_name 8 ORDER BY cc. de clé unique.position.owner='HR' 5 AND c.Obtenir des informations sur les contraintes (suite) Le tableau suivant présente les colonnes non explicites de la vue DBA_CONSTRAINTS.--------------EMPLOYEE_DEPT. R DEPT_ID EMPLOYEE_ID_PK P ID SYS_C00565 C LAST_NAME 3 rows selected. Nom CONSTRAINT_TYPE Description Le type de la contrainte est P. 3 p.r_constraint_name = p.constraint_type='R' 10 AND c. lancez l'interrogation suivante : SQL> SELECT c.constraint_name AS "Referenced Key".constraint_type.owner='HR' 8 AND c.constraint_name.constraint_name AS "Foreign Key"..owner 11 AND c. 2 p.---------.Obtenir des informations sur les contraintes (suite) Rechercher les relations entre les clés primaires et les clés étrangères Pour identifier les clés étrangères de la table EMPLOYEE de l'utilisateur HR et les contraintes parent.table_name='EMPLOYEE' 9 AND c. 5 p.owner.---------EMPLOYEES_DEPT. Foreign Key Referenced Key C OWNER TABLE_NAME -----------. DEPT_PK P HR DEPARTMENT 1 row selected.r_owner=p.. dba_constraints p 7 WHERE c.table_name 6 FROM dba_constraints c. 4 p. Oracle9i Database Administration I 13-28 .-------------. Oracle9i Database Administration I 13-29 . 2001.Synthèse Ce chapitre vous a permis d'apprendre à : • implémenter l'intégrité des données • utiliser une stratégie appropriée pour créer et gérer des contraintes • obtenir des informations à partir du dictionnaire de données 13-29 Copyright © Oracle Corporation. Tous droits réservés. 2001. Oracle9i Database Administration I 13-30 .Présentation de l'exercice 13 Dans cet exercice. Tous droits réservés. vous allez : • créer des contraintes • activer des contraintes UNIQUE • créer une table EXCEPTIONS • identifier les cas de violation de contrainte détectés dans une table. corriger les erreurs et réactiver les contraintes 13-30 Copyright © Oracle Corporation. exécutez le script lab13_03. 3 Sous l'ID utilisateur SYSTEM. L'opération a-t-elle réussi ? 5 a Assurez-vous que les nouvelles lignes qui ont été ajoutées à la table ne violent pas la contrainte portant sur la table PRODUCT. sont conformes à la contrainte (considérez que la table comporte plusieurs milliers de lignes et qu'il est bien trop long de vérifier chacune d'elles manuellement). 7 Exécutez le script lab13_07.sql pour insérer des lignes dans la table. puis assurez-vous que toutes les données. Indice : Activez la contrainte NOVALIDATE. nouvelles ou existantes. c Pour vérifier que la contrainte rejette les insertions en infraction. e Activez la contrainte. b Vérifier le nom et le type des index créés pour valider les contraintes. d Corrigez les erreurs. modifiez les codes produit en conséquence. Indice : Procédez comme suit : a Créez la table EXCEPTIONS. Les insertions ontelles abouti ? Annulez (rollback) les modifications. Indice : Utilisez la vue DBA_CONSTRAINTS pour obtenir ces informations.sql afin d'insérer deux enregistrements dans la table PRODUCTS.Exercice 13 : gérer l'intégrité des données 1 Examinez le script lab13_01.sql. Oracle9i Database Administration I 13-31 . Exécutez-le pour créer les contraintes. Indice : Les index ne sont créés que pour les contraintes UNIQUE et de clé primaire. 4 Activez la contrainte UNIQUE dans la table PRODUCT. b Exécutez la commande pour activer la contrainte et intercepter les exceptions. b Interrogez le dictionnaire de données afin de vérifier l'impact de cette modification. 2 Interrogez le dictionnaire de données pour effectuer les opérations suivantes : a Vérifier la présence de contraintes et déterminer leur statut et si elles peuvent être différées. ajoutez une ligne contenant les valeurs suivantes : PRODUCT_I D PRODUCT_DESCRIPTION LIST_PRICE 4000 Monitor 3000 6 Effectuez les opérations requises pour identifier les cas de violation de contrainte détectés dans la table PRODUCTS. Ils portent le même nom que ces contraintes. c Utilisez les ROWID dans la table EXCEPTIONS pour afficher les lignes de la table PRODUCTS qui violent la contrainte (ne demandez pas l'affichage des colonnes LOB). Oracle9i Database Administration I 13-32 . .Gérer la sécurité des mots de passe et les ressources Copyright © Oracle Corporation. 2001. Tous droits réservés. la gestion des mots de passe et les ressources 14-2 Copyright © Oracle Corporation. 2001. Oracle9i Database Administration I 14-2 . Tous droits réservés. vous pourrez : • gérer les mots de passe à l'aide de profils • administrer des profils • contrôler l'utilisation des ressources à l'aide de profils • obtenir des informations sur les profils.Objectifs A la fin de ce chapitre. • Les profils peuvent être activés ou désactivés. l'administrateur de base de données peut l'affecter à chaque utilisateur. • espace mémoire (zone SQL privée pour serveur partagé uniquement).Profils • Un profil est un ensemble nommé contenant les limites relatives aux mots de passe et aux ressources. relatives aux mots de passe et aux ressources : • durée de vie et expiration des mots de passe. 14-3 Copyright © Oracle Corporation. • La commande CREATE USER ou ALTER USER permet d'affecter des profils aux utilisateurs. le serveur Oracle limite l'utilisation de la base de données et des ressources au profil défini pour l'utilisateur. Profils Un profil correspond à un ensemble nommé contenant les limites suivantes. • verrouillage d'un compte. affectation du profil DEFAULT. • durée d'inactivité. Tous droits réservés. • temps CPU. Si les limites relatives aux ressources sont actives. Oracle9i Database Administration I 14-3 . • historique des mots de passe. • Par défaut. • vérification de la complexité des mots de passe. • opérations d'entrée/sortie (E/S). • durée de connexion. Une fois un profil créé. • sessions simultanées. 2001. Caractéristiques des profils : • Les affectations de profil n'ont pas d'incidence sur les sessions en cours. • Si vous n'affectez pas de profil à un utilisateur que vous créez. • Gérer l'utilisation des ressources dans les systèmes de base de données multiutilisateurs complexes et volumineux. ce dernier reçoit automatiquement le profil DEFAULT. • Garantir que les utilisateurs sont déconnectés de la base de données lorsque leur session reste inactive pendant un certain temps. Vous ne pouvez les affecter ni à des rôles. • Les profils ne peuvent être affectés qu'à des utilisateurs. toutes les valeurs du profil DEFAULT sont illimitées. • Contrôler l'utilisation des mots de passe. Oracle9i Database Administration I 14-4 . l'administrateur de base de données peut modifier les valeurs afin d'appliquer par défaut des limites à tous les utilisateurs. • Affecter facilement aux utilisateurs des limites relatives aux ressources.Profils (suite) Le serveur Oracle crée automatiquement le profil DEFAULT en même temps que la base de données. toutes les limites du profil DEFAULT s'appliquent. ni à d'autres profils. • Activer des limites relatives aux ressources de groupe pour les utilisateurs similaires. A l'origine. Toutefois. Si aucun profil spécifique n'est attribué explicitement à un utilisateur. Fonctions des profils : • Empêcher les utilisateurs d'exécuter des opérations qui utilisent beaucoup de ressources. Le présent chapitre décrit les fonctions de gestion des mots de passe : • Verrouillage d'un compte : active le verrouillage automatique d'un compte lorsque l'utilisateur ne parvient pas à se connecter au système après un nombre défini de tentatives. • Durée de vie et expiration des mots de passe : affecte au mot de passe une durée de vie après laquelle il expire et doit être changé. Oracle9i Database Administration I 14-5 .Gestion des mots de passe Historique des mots de passe Verrouillage d'un compte Utilisateur Configurer des profils Durée de vie et expiration des mots de passe Vérification des mots de passe 14-5 Copyright © Oracle Corporation. les administrateurs de base de données gèrent les mots de passe Oracle à l'aide de profils. Gestion des mots de passe Pour mieux contrôler la sécurité des bases de données. • Vérification de la complexité des mots de passe : vérifie qu'un mot de passe est suffisamment complexe pour garantir une protection contre les intrus qui tenteraient de forcer l'accès au système. Tous droits réservés. • Historique des mots de passe : vérifie les nouveaux mots de passe pour garantir qu'un mot de passe ne sera pas réutilisé avant un certain temps ou avant un certain nombre de changements de mot de passe. 2001. déverrouillez et faites expirer des comptes à l'aide de la commande CREATE USER ou ALTER USER. • Les limites relatives aux mots de passe sont toujours appliquées. Activer la gestion des mots de passe Créez un profil pour limiter les paramètres de mot de passe. Les paramètres de limites relatives aux mots de passe des profils sont toujours appliqués. utilisez la commande CREATE USER ou ALTER USER pour verrouiller ou déverrouiller un compte utilisateur. et affectez-le à l'utilisateur à l'aide de la commande CREATE USER ou ALTER USER. • Verrouillez. 2001. voir le chapitre "Gérer les utilisateurs". • Pour activer la gestion des mots de passe. 14-6 Copyright © Oracle Corporation. Remarque : Pour plus d'informations sur la commande CREATE USER. Lorsque la gestion des mots de passe est active.Activer la gestion des mots de passe • Configurez la gestion des mots de passe à l'aide de profils que vous affecterez aux utilisateurs. Tous droits réservés.sql sous le nom utilisateur SYS. exécutez le script utlpwdmg. Oracle9i Database Administration I 14-6 . le compte n'est pas déverrouillé automatiquement. Le compte de base de données peut être verrouillé explicitement à l'aide de la commande ALTER USER. Tous droits réservés. de verrouillage du compte après le nombre d'échecs de connexion défini PASSWORD_LOCK_TIME 14-7 Copyright © Oracle Corporation. Remarque : La commande ALTER USER est présentée plus loin dans ce chapitre. 2001. Le compte est déverrouillé automatiquement après un certain délai défini par le paramètre PASSWORD_LOCK_TIME ou doit être déverrouillé par l'administrateur de base de données à l'aide de la commande ALTER USER.Verrouillage d'un compte Paramètre FAILED_LOGIN_ATTEMPTS Description Nombre d'échecs de connexion avant verrouillage du compte Durée. Oracle9i Database Administration I 14-7 . Dans ce cas. Verrouillage d'un compte Le serveur Oracle verrouille automatiquement un compte lorsque la valeur de FAILED_LOGIN_ATTEMPTS est atteinte. en jours. Il doit changer de mot de passe pendant cette période. S'il ne le change pas. une fois le mot de passe expiré. en jours. en jours. Durée de vie et expiration des mots de passe Le paramètre PASSWORD_LIFE_TIME définit la durée de vie maximale à l'issue de laquelle un mot de passe doit être changé. L'administrateur peut définir une période de grâce (PASSWORD_GRACE_TIME) qui commence après la première tentative de connexion à la base de données. le statut EXPIRED est affecté au compte de l'utilisateur. Tous droits réservés.Durée de vie et expiration des mots de passe Paramètre PASSWORD_LIFE_TIME Paramètre Durée de vie. pendant laquelle l'utilisateur peut changer de mot de passe après la première connexion établie une fois le mot de passe expiré PASSWORD_GRACE_TIME 14-8 Copyright © Oracle Corporation. Jusqu'à la fin de la période de grâce. Oracle9i Database Administration I 14-8 . Lorsque le mot de passe est explicitement défini comme ayant expiré. son compte est verrouillé. l'utilisateur reçoit un message d'avertissement à chaque connexion. 2001. du mot de passe avant expiration Période de grâce. vous devez affecter la valeur UNLIMITED à l'autre paramètre.Historique des mots de passe Paramètre PASSWORD_REUSE_TIME Description Période. en jours. Si vous affectez une valeur autre que DEFAULT ou UNLIMITED à l'un des paramètres. Tous droits réservés. Historique des mots de passe La vérification de l'historique des mots de passe permet d'empêcher un utilisateur de réutiliser un mot de passe pendant une période donnée. Vous pouvez mettre en oeuvre la vérification à l'aide de l'un des paramètres suivants : • PASSWORD_REUSE_TIME permet d'indiquer que l'utilisateur ne peut pas réutiliser un mot de passe pendant un certain nombre de jours. • PASSWORD_REUSE_MAX permet de forcer l'utilisateur à définir un mot de passe différent des mots de passe précédents. Oracle9i Database Administration I 14-9 . 2001. pendant laquelle un mot de passe ne peut pas être réutilisé Nombre maximum de réutilisations d'un mot de passe PASSWORD_REUSE_MAX 14-9 Copyright © Oracle Corporation. Le serveur Oracle fournit un sous-programme de vérification par défaut.Vérifier les mots de passe Paramètre PASSWORD_VERIFY_FUNCTION Description Fonction PL/SQL qui vérifie la complexité d'un mot de passe avant que celui-ci ne soit affecté 14-10 Copyright © Oracle Corporation. vous pouvez appeler une fonction PL/SQL pour vérifier la validité du mot de passe. Vérifier les mots de passe Avant d'affecter un nouveau mot de passe à un utilisateur. Tous droits réservés. Oracle9i Database Administration I 14-10 . mais l'administrateur de base de données peut également créer une fonction PL/SQL. 2001. il doit tenir compte des restrictions suivantes : • La procédure doit faire appel à la spécification indiquée dans la diapositive. Tous droits réservés. 2001. voir le chapitre "Gérer les utilisateurs". old_password_parameter IN VARCHAR2(30)) RETURN BOOLEAN 14-11 Copyright © Oracle Corporation. • La fonction de mot de passe appartient à SYS. un message d'erreur est renvoyé et l'exécution de la commande ALTER USER ou CREATE USER est interrompue. password_parameter IN VARCHAR2(30). une erreur est renvoyée et l'exécution de la commande ALTER USER ou CREATE USER est interrompue. • La procédure renvoie la valeur TRUE si elle aboutit et FALSE si elle échoue.Fonction de mot de passe fournie par l'utilisateur Cette fonction doit être créée dans le schéma SYS et respecter la spécification suivante : function_name( userid_parameter IN VARCHAR2(30). Remarque : Pour plus d'informations sur la commande CREATE USER. • Si la fonction de mot de passe déclenche une exception. • Si la fonction de mot de passe n'est plus valide. Fonction de mot de passe fournie par l'utilisateur Lorsque l'administrateur ajoute une nouvelle fonction de vérification de mot de passe. Oracle9i Database Administration I 14-11 . 14-12 Copyright © Oracle Corporation. Oracle9i Database Administration I 14-12 . • Il doit comporter au moins une lettre. Tous droits réservés. 2001. Fonction de vérification de mot de passe Le serveur Oracle fournit une fonction de vérification de complexité appelée VERIFY_FUNCTION. Au cours de l'exécution du script utlpwdmg. un caractère numérique et un caractère spécial.sql.Fonction de vérification de mot de passe VERIFY_FUNCTION • Longueur minimale de quatre caractères • Le mot de passe doit être différent du nom utilisateur.sql. qui doit être exécutée dans le schéma SYS. • Il doit comporter au moins trois lettres différentes par rapport à l'ancien mot de passe. le serveur Oracle crée la fonction VERIFY_FUNCTION et modifie le profil DEFAULT à l'aide de la commande ALTER PROFILE suivante : SQL> ALTER PROFILE DEFAULT LIMIT SQL> ALTER PROFILE DEFAULT LIMIT 2 3 4 5 6 7 8 PASSWORD_LIFE_TIME 60 PASSWORD_GRACE_TIME 10 PASSWORD_REUSE_TIME 1800 PASSWORD_REUSE_MAX UNLIMITED FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1/1440 PASSWORD_VERIFY_FUNCTION verify_function. Il s'agit d'une fonction PL/SQL par défaut du script utlpwdmg. Créer un profil : paramètres de mot de passe CREATE PROFILE grace_5 LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME UNLIMITED PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_TIME 30 PASSWORD_VERIFY_FUNCTION verify_function PASSWORD_GRACE_TIME 5. 14-13 Copyright © Oracle Corporation. 2001. Créer un profil Utilisez la commande CREATE PROFILE pour administrer les mots de passe : CREATE PROFILE profile LIMIT [FAILED_LOGIN_ATTEMPTS max_value] [PASSWORD_LIFE_TIME max_value] [ {PASSWORD_REUSE_TIME |PASSWORD_REUSE_MAX} max_value] [PASSWORD_LOCK_TIME max_value] [PASSWORD_GRACE_TIME max_value] [PASSWORD_VERIFY_FUNCTION {function|NULL|DEFAULT} ] Oracle9i Database Administration I 14-13 . Tous droits réservés. PASSWORD_GRACE_TIME définit le nombre de jours durant lesquels. Si vous affectez un entier à ce paramètre. PASSWORD_REUSE_MAX définit le nombre de changements de mot de passe nécessaires avant que le mot de passe actuel puisse être réutilisé. Le mot de passe expire s'il n'est pas changé pendant cette période. FAILED_LOGIN_ATTEMPTS définit le nombre d'échecs de connexion au compte utilisateur avant le verrouillage du compte. pendant lequel un mot de passe ne peut pas être réutilisé. PASSWORD_LIFE_TIME définit le nombre de jours durant lesquels le même mot de passe peut être utilisé pour l'authentification. Si vous affectez un entier à ce paramètre. il expire et toute tentative de connexion échoue. PASSWORD_VERIFY_FUNCTION permet de transmettre une fonction PL/SQL de vérification de complexité de mot de passe sous forme d'argument à l'instruction CREATE PROFILE. PASSWORD_REUSE_TIME définit le délai. Si le mot de passe n'a pas été changé pendant cette période. un avertissement est émis et la connexion est autorisée. une fois la période de grâce commencée. du verrouillage d'un compte utilisateur une fois que le nombre défini d'échecs consécutifs de connexion au compte utilisateur est atteint. vous devez affecter la valeur UNLIMITED à PASSWORD_REUSE_TIME.Créer un profil (suite) où PROFILE correspond au nom du profil à créer. en jours. Oracle9i Database Administration I 14-14 . vous devez affecter la valeur UNLIMITED à PASSWORD_REUSE_MAX. en jours. PASSWORD_LOCK_TIME définit la durée. Cliquez sur Create. 4. 2. 5. 3. puis entrez les paramètres de mot de passe du compte. Oracle9i Database Administration I 14-15 . Sélectionnez l'onglet Password. Entrez le nom du profil et renseignez les autres champs ou conservez les valeurs par défaut. procédez comme suit : 1. Sélectionnez Create dans le menu accessible à l'aide du bouton droit de la souris.Créer un profil Utiliser Oracle Enterprise Manager pour créer un profil A partir de la console OEM. Sélectionnez Databases > Security > Profiles. Sélectionnez Create dans le menu accessible à l'aide du bouton droit de la souris. Cliquez sur OK. 4. 2. procédez comme suit : 1. Sélectionnez Object > Assign a Profile to User(s) dans le menu accessible à l'aide du bouton droit de la souris. Sélectionnez l'utilisateur (ou les utilisateurs) 5. 3. Oracle9i Database Administration I 14-16 .Créer un profil Utiliser Oracle Enterprise Manager pour créer un profil A partir de la console OEM. Sélectionnez Databases > Security > Profiles. 2001. 14-17 Copyright © Oracle Corporation.Modifier un profil : paramètres de mot de passe La commande ALTER PROFILE permet de modifier les limites relatives aux mots de passe ALTER PROFILE default LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LIFE_TIME 60 PASSWORD_GRACE_TIME 10. Modifier un profil Utilisez la commande ALTER PROFILE pour modifier les limites relatives aux mots de passe affectées à un profil : ALTER PROFILE profile LIMIT [FAILED_LOGIN_ATTEMPTS max_value] [PASSWORD_LIFE_TIME max_value] [ {PASSWORD_REUSE_TIME |PASSWORD_REUSE_MAX} max_value] [PASSWORD_LOCK_TIME max_value] [PASSWORD_GRACE_TIME max_value] [PASSWORD_VERIFY_FUNCTION {function|NULL|DEFAULT} ] Pour affecter aux paramètres de mot de passe une valeur inférieure à un jour : 1 heure : PASSWORD_LOCK_TIME = 1/24 10 minutes : PASSWORD_LOCK_TIME = 10/1400 5 minutes : PASSWORD_LOCK_TIME = 5/1440 Oracle9i Database Administration I 14-17 . Tous droits réservés. Sélectionnez le profil. 4. Oracle9i Database Administration I 14-18 . Sélectionnez Databases > Security > Profiles. 3. Sélectionnez la page Password et modifiez le profil. 5. 6. Cliquez sur Apply. procédez comme suit : 1. 2. Sélectionnez Create dans le menu accessible à l'aide du bouton droit de la souris. Sélectionnez View/Edit Details dans le menu accessible à l'aide du bouton droit de la souris.Utiliser Oracle Enterprise Manager pour modifier un profil Utiliser Oracle Enterprise Manager pour modifier un profil A partir de la console OEM. Définissez cette option pour supprimer un profil actuellement affecté à des utilisateurs). Tous droits réservés. • Lorsque vous supprimez un profil. 2001. • L'option CASCADE retire le profil à l'utilisateur auquel il a été affecté. CASCADE retire le profil aux utilisateurs auxquels il est affecté (le serveur Oracle leur affecte alors automatiquement le profil DEFAULT. Remarques : • Vous ne pouvez pas supprimer le profil DEFAULT. la suppression ne s'applique qu'aux sessions créées par la suite et non aux sessions en cours. 14-19 Copyright © Oracle Corporation. DROP PROFILE developer_prof CASCADE. Oracle9i Database Administration I 14-19 . • Vous ne pouvez pas supprimer le profil DEFAULT.Supprimer un profil : paramètres de mot de passe • La commande DROP PROFILE permet de supprimer un profil. Supprimer un profil : paramètres de mot de passe La commande DROP PROFILE permet de supprimer un profil : DROP PROFILE profile [CASCADE] où : profile correspond au nom du profil à supprimer. DROP PROFILE developer_prof. Supprimer un profil Utiliser Oracle Enterprise Manager pour supprimer un profil A partir de la console OEM. 2. Sélectionnez Remove dans le menu accessible à l'aide du bouton droit de la souris. procédez comme suit : 1. Sélectionnez Yes pour confirmer la suppression. Oracle9i Database Administration I 14-20 . 3. Sélectionnez Databases > Security > Profiles. 4. Sélectionnez le profil. – de la commande ALTER SYSTEM. procédez comme suit : 1. 2. • Vous pouvez activer les limites relatives aux ressources à l'aide : – du paramètre d'initialisation RESOURCE_LIMIT.Gestion des ressources • Les limites relatives à la gestion des ressources peuvent s'appliquer au niveau session. Remarque : La mise en application des limites relatives aux ressources n'est pas nécessaire pour activer la gestion des mots de passe Oracle. Oracle9i Database Administration I 14-21 . Gestion des ressources Pour gérer l'utilisation des ressources avec des profils. au niveau appel ou aux deux. Tous droits réservés. l'instance doit être arrêtée. puis redémarrée). 14-21 Copyright © Oracle Corporation. Appliquez les limites relatives aux ressources à l'aide de la commande ALTER SYSTEM ou en modifiant le fichier de paramètres d'initialisation (dans ce cas. Affectez des profils à l'aide de la commande CREATE USER ou ALTER USER. 2001. Créez un profil à l'aide de la commande CREATE PROFILE pour déterminer les limites relatives aux ressources et aux mots de passe. Ces étapes sont décrites en détail dans la section suivante. • Les limites peuvent être définies par des profils via la commande CREATE PROFILE. 3. 14-22 Copyright © Oracle Corporation. • Ce paramètre permet de mettre en oeuvre l'architecture d'application des limites. Paramètre d'initialisation RESOURCE_LIMIT : • Modifiez ce paramètre dans le fichier de paramètres d'initialisation. Commande ALTER SYSTEM : • Utilisez cette commande pour activer ou désactiver l'application des limites relatives aux ressources d'une instance. Oracle9i Database Administration I 14-22 . • La valeur FALSE (valeur par défaut) désactive l'application des limites. • La valeur TRUE permet d'appliquer les limites. Tous droits réservés. • Utilisez cette commande pour activer ou désactiver l'application des limites lorsque la base de données ne peut pas être arrêtée. • Activez le paramètre à l'aide de la commande ALTER SYSTEM pour appliquer les limites relatives aux ressources.Activer les limites relatives aux ressources • Affectez la valeur TRUE au paramètre d'initialisation RESOURCE_LIMIT. • Le paramètre défini à l'aide de la commande ALTER SYSTEM reste effectif jusqu'à sa prochaine modification ou jusqu'à l'arrêt de la base de données. 2001. Activer les limites relatives aux ressources Pour activer ou désactiver les limites relatives aux ressources. puis redémarrez l'instance pour activer ou désactiver l'application des limites relatives aux ressources. ALTER SYSTEM SET RESOURCE_LIMIT=TRUE. modifiez le paramètre d'initialisation RESOURCE_LIMIT ou utilisez la commande ALTER SYSTEM. Vous pouvez limiter ces opérations pour empêcher les instructions qui effectuent de nombreuses opérations d'E/S de saturer la mémoire et de monopoliser le disque. Remarque : L'architecture serveur partagé est présentée en détail dans le cours Oracle9i DBA II. Tous droits réservés. Elle ne tient pas compte de l'activité de l'application. LOGICAL_READS_PER_SESSION limite le nombre total d'opérations de lecture en mémoire et sur disque. par exemple : ORA-02391: exceeded simultaneous SESSION_PER_USER limit • Le serveur Oracle déconnecte l'utilisateur. PRIVATE_SGA ne s'applique que dans le cas d'une architecture serveur partagé. 2001. Définir des limites relatives aux ressources au niveau session Remarques : Vous pouvez appliquer les limites d'un profil au niveau session et/ou au niveau appel. La limite IDLE_TIME n'est pas affectée par les interrogations longues et les autres opérations. Lorsqu'une limite de niveau session est dépassée : • Un message d'erreur est renvoyé. Sa valeur peut être définie en kilo-octets ou en mégaoctets. Les limites au niveau session s'appliquent à chaque connexion. Remarques : • • • La durée d'inactivité (IDLE_TIME) n'est calculée que pour le processus serveur. Oracle9i Database Administration I 14-23 .Définir des limites relatives aux ressources au niveau session Ressource CPU_PER_SESSION SESSIONS_PER_USER Description Temps CPU total calculé en centièmes de secondes Nombre de sessions simultanées autorisées pour chaque nom utilisateur Temps de connexion calculé en minutes Périodes d'inactivité calculées en minutes Nombre de blocs de données (lectures physiques et logiques) Espace privé de la mémoire SGA mesuré en octets (dans le cas d'un serveur partagé uniquement) CONNECT_TIME IDLE_TIME LOGICAL_READS_PER _SESSION PRIVATE_SGA 14-23 Copyright © Oracle Corporation. • toutes les instructions précédentes restent inchangées.Définir des limites relatives aux ressources au niveau appel Ressource CPU_PER_CALL Description Temps CPU par appel en centièmes de secondes Nombre de blocs de données pouvant être lus par appel LOGICAL_READS_PER _CALL 14-24 Copyright © Oracle Corporation. 2001. • l'instruction est annulée. Définir des limites relatives aux ressources au niveau appel Les limites au niveau appel s'appliquent pour chaque appel effectué pendant l'exécution d'une instruction SQL. Lorsqu'une limite au niveau appel est dépassée : • le traitement de l'instruction est interrompu. Oracle9i Database Administration I 14-24 . • la session utilisateur reste connectée. Tous droits réservés. Créer un profil : limites relatives aux ressources CREATE PROFILE developer_prof LIMIT SESSIONS_PER_USER 2 CPU_PER_SESSION 10000 IDLE_TIME 60 CONNECT_TIME 480. UNLIMITED ou DEFAULT. 14-25 Copyright © Oracle Corporation. Oracle9i Database Administration I 14-25 . Créer un profil : limites relatives aux ressources Créez un profil à l'aide de la commande CREATE PROFILE : CREATE PROFILE profile LIMIT [SESSIONS_PER_USER max_value] [CPU_PER_SESSION max_value] [CPU_PER_CALL max_value] [CONNECT_TIME max_value] [IDLE_TIME max_value] [LOGICAL_READS_PER_SESSION max_value] [LOGICAL_READS_PER_CALL max_value] [COMPOSITE_LIMIT max_value] [PRIVATE_SGA max_bytes] où : profile correspond au nom du profil. max_value correspond à un entier. UNLIMITED ou DEFAULT. 2001. Tous droits réservés. max_bytes correspond à un entier qui peut être suivi de Ko ou Mo. COMPOSITE_LIMIT limite le coût total des ressources d'une session en unités de service. Oracle9i Database Administration I 14-26 . Pour calculer ce coût. voir le document Oracle9i SQL Reference. Remarque : Pour plus d'informations sur l'indication du poids pour chaque commande ALTER RESOURCE COST des ressources de session. Oracle additionne les éléments suivants : – CPU_PER_SESSION – CONNECT_TIME – LOGICAL_READS_PER_SESSION – PRIVATE_SGA La vue RESOURCE_COST du dictionnaire de données fournit les limites affectées aux différentes ressources. comme indiqué dans le profil DEFAULT. DEFAULT indique que le profil est soumis à la limite relative à cette ressource.Créer un profil : limites relatives aux ressources (suite) UNLIMITED indique que l'utilisateur qui possède ce profil peut utiliser cette ressource de manière illimitée. procédez comme suit : • Sélectionnez Security > Profiles. Oracle9i Database Administration I 14-27 .Créer un profil : limites relatives aux ressources Utiliser Oracle Enterprise Management pour définir des limites relatives aux ressources A partir de la console OEM. • • • Sélectionnez Create dans le menu accessible à l'aide du bouton droit de la souris. Entrez les paramètres relatifs aux ressources dans la page General. Cliquez sur Create. Eléments de Database Resource Manager Groupe de consommateurs de ressources : groupe d'utilisateurs ou de sessions constitué en fonction des besoins liés au traitement des ressources. Méthode d'allocation des ressources : méthode utilisée par Database Resource Manager pour l'allocation d'une ressource spécifique. Généralement. 2001. Oracle9i Database Administration I 14-28 . Gérer les ressources à l'aide de Database Resource Manager Database Resource Manager doit permettre au serveur Oracle d'exercer un contrôle accru sur les décisions relatives à la gestion des ressources et donc d'éviter les problèmes liés à une gestion inefficace du système d'exploitation. les administrateurs de base de données disposent de ce privilège grâce à l'option ADMIN du rôle DBA. Administrer Database Resource Manager Vous devez disposer du privilège système ADMINISTER_RESOURCE_MANAGER pour administrer Database Resource Manager (DBMS_RESOURCE_MANAGER). Tous droits réservés. • Le privilège ADMINISTER_RESOURCE_MANAGER est requis 14-28 Copyright © Oracle Corporation. Plan d'allocation de ressources : contient des directives indiquant le mode d'allocation des ressources aux groupes de consommateurs de ressources.Gérer les ressources à l'aide de Database Resource Manager • Le serveur Oracle exerce un contrôle accru sur les décisions relatives à la gestion des ressources • Eléments de Database Resource Manager – – – – Groupe de consommateurs de ressources Plan d'allocation de ressources Méthode d'allocation des ressources Directives du plan d'allocation de ressources • Le package DBMS_RESOURCE_MANAGER permet de créer et de gérer des éléments. Directive du plan d'allocation de ressources : permet aux administrateurs d'associer des groupes de consommateurs de ressources à des plans spécifiques et d'allouer des ressources à ces groupes. Oracle9i Database Administration I 14-29 . 14-29 Copyright © Oracle Corporation. • Ils contiennent des directives précisant le mode d'allocation des ressources aux groupes de consommateurs.Gérer les ressources à l'aide de Database Resource Manager • Les plans d'allocation de ressources indiquent quels groupes de consommateurs de ressources leur appartiennent. Tous droits réservés. 2001. Oracle9i Database Administration I 14-30 . procédez comme suit : • • • • Sélectionnez Databases > Instance.Gérer les ressources à l'aide de Database Resource Manager Utiliser Oracle Enterprise Manager pour configurer Resource Manager A partir de la console OEM. Sélectionnez Resource Plans pour procéder à une opération de création ou de modification. Sélectionnez Resource Plan Schedule pour procéder à une opération de création ou de modification. Sélectionnez Resource Consumer Groups pour procéder à une opération de création ou de modification. Directives du plan d'allocation de ressources Database Resource Manager offre plusieurs méthodes d'allocation des ressources : • Méthode CPU • Pool de sessions actif et mise en file d'attente • Limite du degré de parallélisme • Changement automatique de groupe de consommateurs • Durée d'exécution maximale estimée • Quota d'annulation 14-31 Copyright © Oracle Corporation, 2001. Tous droits réservés. Directives du plan d'allocation de ressources Méthode CPU : permet d'indiquer le mode d'allocation des ressources de la CPU aux groupes de consommateurs. Pool de sessions actif et mise en file d'attente : vous pouvez contrôler le nombre maximal de sessions actives simultanées autorisées au sein d'un groupe de consommateurs. Cette valeur maximale désigne le pool de sessions actif. Lorsqu'une session ne peut pas être lancée en raison de la saturation du pool, elle est placée dans une file d'attente. Lorsqu'une session active se termine, la première session de la file d'attente est programmée pour exécution. Il est également possible de définir une période de temporisation de sorte qu'un travail en file d'attente dépasse le délai imparti, générant une erreur qui provoque son interruption. Limite du degré de parallélisme : indique une limite de degré de parallélisme pour toutes les opérations d'un groupe de consommateurs. Changement automatique de groupe de consommateurs : permet de gérer les ressources en fonction de certains critères. Si les critères ne sont par satisfaits, les sessions passent automatiquement à un autre groupe de consommateurs. Les critères disponibles sont les suivants : Groupe cible : groupe cible du changement automatique. Durée du changement : durée du changement en secondes. Durée estimée du changement : durée estimée de l'opération, qui permet de déterminer s'il convient de passer à une autre opération avant que l'opération en cours ne commence. Oracle9i Database Administration I 14-31 Directives du plan d'allocation de ressources (suite) Durée d'exécution maximale estimée : estime de façon proactive la durée d'exécution d'une opération. Le DBA peut définir la durée maximale estimée d'exécution d'une opération à un moment donné à l'aide du paramètre MAX_ESTIMATED_EXEC_TIME. Si l'estimation de l'opération est supérieure à la valeur de MAX_ESTIMATED_EXEC_TIME, l'opération ne démarrera pas, ce qui permet d'éviter les travaux particulièrement lourds qui consomment trop de ressources système. Pool d'annulation : un pool d'annulation peut être défini pour chaque groupe de consommateurs de ressources pour permettre le contrôle de la quantité totale d'annulations qu'un groupe peut générer. Lorsqu'un groupe dépasse cette limite, l'instruction LMD en cours qui génère la journalisation est interrompue. Le pool d'annulation est défini par le paramètre de directive du plan d'allocation de ressources UNDO_POOL. Remarque : Database Resource Manager est présenté dans le cours Oracle9i Tuning. Oracle9i Database Administration I 14-32 Obtenir des informations sur les limites relatives aux mots de passe et aux ressources Vous pouvez interroger les vues suivantes pour obtenir des informations sur les limites relatives aux mots de passe et aux ressources : • DBA_USERS • DBA_PROFILES 14-33 Copyright © Oracle Corporation, 2001. Tous droits réservés. Obtenir des informations sur les limites relatives aux mots de passe et aux ressources Interrogez la vue DBA_USERS pour obtenir des informations sur le statut des comptes. SQL> SELECT username, password, account_status, 2 FROM dba_users; USERNAME PASSWORD ACCOUNT_STATUS ------- -------- -------------SYS SYSTEM OUTLN DBSNMP HR OE 8A8F025737A9097A D4DF7931AB130E37 4A3BA55E08595C81 E066D214D5421CCC BB69FBB77CFA6B9A 957C7EF29CC223FC LOCKED OPEN OPEN OPEN OPEN OPEN Oracle9i Database Administration I 14-33 Afficher des informations sur les profils Interrogez la vue DBA_PROFILES pour afficher des informations sur le profil des mots de passe : SQL> SELECT * FROM dba_profiles 2 3 WHERE resource_type='PASSWORD' AND profile=’GRACE_5’; RESOURCE --------3 30 30 UNLIMITED DEFAULT UNLIMITED 5 PASSWORD PASSWORD PASSWORD PASSWORD PASSWORD LIMIT ------- PROFILE RESOURCE_NAM -------------------GRACE_5 PASSWORD_LIFE_TIME GRACE_5 PASSWORD_REUSE_TIME GRACE_5 PASSWORD_REUSE_MAX GRACE_5 PASSWORD_LOCK_TIME GRACE_5 PASSWORD_GRACE_TIME GRACE_5 FAILED_LOGIN_ATTEMPTS PASSWORD GRACE_5 PASSWORD_VERIFY_FUNCTION PASSWORD Oracle9i Database Administration I 14-34 Synthèse Ce chapitre vous a permis d'apprendre à : • administrer des mots de passe • administrer des profils 14-35 Copyright © Oracle Corporation, 2001. Tous droits réservés. Oracle9i Database Administration I 14-35 Présentation de l'exercice 14 Dans cet exercice, vous allez : • activer la gestion des mots de passe • définir des profils et les affecter aux utilisateurs • désactiver la gestion des mots de passe 14-36 Copyright © Oracle Corporation, 2001. Tous droits réservés. Présentation de l'exercice 14 Remarque : Vous pouvez réaliser cet exercice avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet. Oracle9i Database Administration I 14-36 Exercice 14 : gérer la sécurité des mots de passe et les ressources 1 Exécutez le script lab14_01.sql pour créer l'utilisateur Jeff, puis le script @$ORACLE_HOME/rdbms/admin/utlpwdmg.sql pour activer la gestion des mots de passe. 2 Tentez de remplacer le mot de passe de l'utilisateur Jeff par Jeff. Que se passe-t-il ? 3 Essayez de remplacer le mot de passe par Jeff pour qu'il respecte le format de gestion des mots de passe. Indice : Le mot de passe doit contenir au moins un chiffre, un caractère et un signe de ponctuation. 4 Modifiez le profil DEFAULT pour que les paramètres suivants s'appliquent aux utilisateurs possédant ce profil : le compte doit être verrouillé après deux tentatives de connexion, le mot de passe doit expirer après un délai de 30 jours, le même mot de passe ne doit pas être réutilisé pendant au moins une minute, le compte doit bénéficier d'une période de grâce de cinq jours pour la modification d'un mot de passe qui a expiré. Assurez-vous que ces exigences sont satisfaites. Indices : Modifiez les limites du profil par défaut à l'aide de la commande ALTER PROFILE. Interrogez la vue DBA_PROFILES du dictionnaire de données pour vérifier les résultats. 5 Connectez-vous sous l'ID de l'utilisateur Jeff en entrant un mot de passe non valide. Après deux tentatives, connectez-vous avec le mot de passe correct. Que se passe-t-il ? 6 Vérifiez à l'aide de la vue DBA_USERS du dictionnaire de données que le compte de Jeff est verrouillé. Déverrouillez-le, puis connectez-vous sous l'ID de Jeff. Indice : Déverrouillez le compte à l'aide de la commande ALTER USER. 7 Désactivez les vérifications de mots de passe pour le profil DEFAULT. Indice : Utilisez la commande ALTER PROFILE. 8 Connectez-vous sous l'ID de l'utilisateur Jeff en entrant un mot de passe non valide. Après deux tentatives, connectez-vous avec le mot de passe correct. Que se passe-t-il ? Oracle9i Database Administration I 14-37 Oracle9i Database Administration I 14-38 Gérer les utilisateurs Copyright © Oracle Corporation, 2001. Tous droits réservés. Objectifs A la fin de ce chapitre, vous pourrez : • créer des utilisateurs de base de données • modifier et supprimer des utilisateurs existants • surveiller les informations relatives aux utilisateurs existants 15-2 Copyright © Oracle Corporation, 2001. Tous droits réservés. Oracle9i Database Administration I 15-2 Utilisateurs et sécurité Verrouillage Tablespace de compte par défaut Mécanisme d'authentification Tablespace temporaire Domaine de sécurité Quotas de tablespace Privilèges de rôle Privilèges directs Limites relatives aux ressources 15-3 Copyright © Oracle Corporation, 2001. Tous droits réservés. Utilisateurs et sécurité Domaine de sécurité L'administrateur de base de données définit le nom des utilisateurs autorisés à accéder à la base de données. Un domaine de sécurité définit les paramètres qui s'appliquent à l'utilisateur. Mécanisme d'authentification Trois méthodes permettent d'authentifier un utilisateur qui souhaite accéder à la base de données : • Par le dictionnaire de données • Par le système d'exploitation • Par le réseau La méthode d'authentification est précisée lorsque vous définissez l'utilisateur dans la base de données. Elle peut ensuite être modifiée. Le présent chapitre porte uniquement sur l'authentification par la base de données et par le système d'exploitation. Remarque : Pour plus d'informations sur l'authentification par le système d'exploitation à l'aide de rôles, reportez-vous au chapitre "Initiation au serveur Oracle". L'authentification via le réseau est présentée dans le cours Oracle9i DBA II. Oracle9i Database Administration I 15-3 Utilisateurs et sécurité (suite) Quotas de tablespace Les quotas de tablespace contrôlent la quantité d'espace physique de stockage allouée à un utilisateur dans les tablespaces de la base de données. Tablespace par défaut Le tablespace par défaut définit l'emplacement de stockage des segments créés par un utilisateur si celui-ci n'indique pas explicitement de tablespace lors de la création des segments. Tablespace temporaire Le tablespace temporaire définit l'emplacement d'allocation des extents (ensembles de blocs contigus) par le serveur Oracle lorsque l'utilisateur exécute une opération dans laquelle les données triées sont écrites sur disque. Verrouillage de compte Vous pouvez verrouiller les comptes pour empêcher les utilisateurs de se connecter à la base de données. Le verrouillage peut être effectué automatiquement, mais l'administrateur de base de données peut également verrouiller ou déverrouiller les comptes manuellement. Limites relatives aux ressources Vous pouvez définir des limites pour l'utilisation de ressources telles que le temps CPU, les entrées/sorties (E/S) logiques et le nombre de sessions ouvertes par l'utilisateur. Privilèges directs Les privilèges directs permettent de contrôler les actions qu'exécute l'utilisateur dans la base de données. Privilèges de rôle Vous pouvez accorder indirectement des privilèges à un utilisateur à l'aide de rôles. Remarque : Pour plus d'informations sur les privilèges de rôle, reportez-vous aux chapitres "Gérer les privilèges" et "Gérer les rôles". Le présent chapitre porte sur la définition des utilisateurs avec le mécanisme d'authentification approprié, la limitation de l'espace auquel peuvent faire appel les utilisateurs dans le système et le contrôle manuel du verrouillage des comptes. Oracle9i Database Administration I 15-4 Schéma de base de données Objets de schéma Tables Déclencheurs Contraintes Index Vues Séquences Programmes stockés Synonymes Types de données définis par l'utilisateur Liens de base de données • • Un schéma est un ensemble nommé d'objets. Lorsqu'un utilisateur est créé, un schéma correspondant est également créé. Un utilisateur ne peut être associé qu'à un seul schéma. Le nom utilisateur et le nom de schéma sont souvent utilisés indifféremment 15-5 • • Copyright © Oracle Corporation, 2001. Tous droits réservés. Schéma de base de données Un schéma est un ensemble nommé d'objets, tels que des tables, des vues, des clusters, des procédures et des packages, associés à un utilisateur. Lorsque vous créez un utilisateur de base de données, un schéma correspondant portant le nom de l'utilisateur est créé. Un utilisateur ne peut être associé qu'à un schéma du même nom ; par conséquent, nom utilisateur et schéma sont souvent utilisés indifféremment. La diapositive montre les objets dont les utilisateurs peuvent être propriétaires dans une base de données Oracle. Oracle9i Database Administration I 15-5 Liste de contrôle pour la création d'utilisateurs • Identifiez les tablespaces dans lesquels l'utilisateur a besoin de stocker des objets. • Déterminez les quotas applicables pour chaque tablespace. • Affectez un tablespace par défaut et un tablespace temporaire. • Créez un utilisateur. • Accordez des privilèges et des rôles à l'utilisateur. 15-6 Copyright © Oracle Corporation, 2001. Tous droits réservés. Oracle9i Database Administration I 15-6 Créer un utilisateur : authentification par la base de données Définissez le mot de passe initial : CREATE USER aaron IDENTIFIED BY soccer DEFAULT TABLESPACE data DEFAULT TEMPORARY TABLESPACE temp QUOTA 15M ON data QUOTA 10M ON users PASSWORD EXPIRE; 15-7 Copyright © Oracle Corporation, 2001. Tous droits réservés. Créer un utilisateur : authentification par la base de données Syntaxe : Utilisez la commande suivante pour créer un utilisateur : CREATE USER user IDENTIFIED {BY password | EXTERNALLY} [ DEFAULT TABLESPACE tablespace ] [ TEMPORARY TABLESPACE tablespace ] [ QUOTA {integer [K | M ] | UNLIMITED } ON tablespace [ QUOTA {integer [K | M ] | UNLIMITED } ON tablespace ]...] [ PASSWORD EXPIRE ] [ ACCOUNT { LOCK | UNLOCK }] [ PROFILE { profile | DEFAULT }] Oracle9i Database Administration I 15-7 Créer un utilisateur : authentification par la base de données (suite) Syntaxe (suite) Où : BY password indique que l'utilisateur est authentifié par la base de données et qu'il doit fournir un mot de passe pour se connecter. EXTERNALLY indique que l'utilisateur est authentifié par le système d'exploitation. GLOBALLY AS indique que l'utilisateur est authentifié de façon globale. DEFAULT TABLESPACE ou TEMPORARY TABLESPACE désigne le tablespace par défaut ou le tablespace temporaire de l'utilisateur. QUOTA définit l'espace maximum alloué aux objets détenus par l'utilisateur dans le tablespace (le quota peut être défini par un entier représentant des octets ou des kilo-octets et des mégaoctets. Le mot-clé UNLIMITED permet d'indiquer que les objets détenus par l'utilisateur peuvent utiliser l'ensemble de l'espace disponible du tablespace. Par défaut, aucun quota de tablespace n'est affecté aux utilisateurs). PASSWORD EXPIRE force l'utilisateur à réinitialiser le mot de passe lorsqu'il se connecte à la base de données à l'aide de SQL*Plus (cette option n'est valide que si l'utilisateur est authentifié par la base de données). ACCOUNT LOCK/UNLOCK permet de verrouiller ou de déverrouiller explicitement le compte de l'utilisateur (la valeur par défaut est UNLOCK). PROFILE permet de contrôler l'utilisation des ressources et de définir le mécanisme de contrôle par mot de passe à appliquer à l'utilisateur. Remarque : Pour plus d'informations sur la création de profils, reportez-vous au chapitre "Gérer les profils". Vous devez impérativement utiliser une méthode d'authentification par mot de passe. Si vous définissez un mot de passe, celui-ci est géré par le serveur Oracle dans le dictionnaire de données. Les mécanismes de contrôle par mot de passe fournis par le serveur Oracle sont disponibles lorsque les utilisateurs sont authentifiés par le serveur. Lorsque le mot de passe a été défini et que l'utilisateur se connecte à l'aide de SQL*Plus, celuici reçoit le message suivant lui demandant d'entrer un nouveau mot de passe : ERROR: ORA-28001: the account has expired Changing password for PETER Old password: New password: Retype new password: Password changed Oracle9i Database Administration I 15-8 Créer un utilisateur : authentification par la base de données (suite) Utiliser Oracle Enterprise Manager pour créer un utilisateur A partir de la console OEM : 1. Sélectionnez Databases > Security > Users. 2. Sélectionnez Create dans le menu accessible par le bouton droit de la souris. 3. Entrez les informations nécessaires à la création de l'utilisateur. 4. Cliquez sur Create. Oracle Security Manager accorde automatiquement le rôle CONNECT à tous les utilisateurs créés à l'aide de cet outil. Remarque : Pour plus d'informations sur le rôle CONNECT, reportez-vous au chapitre "Gérer les rôles". Oracle9i Database Administration I 15-9 Créer un utilisateur : authentification par le système d'exploitation Le paramètre d'initialisation OS_AUTHENT_PREFIX indique le format des noms utilisateur. Sa valeur par défaut est OPS$. CREATE USER aaron IDENTIFIED EXTERNALLY DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE temp QUOTA 15m ON data PASSWORD EXPIRE; 15-10 Copyright © Oracle Corporation, 2001. Tous droits réservés. Créer un utilisateur : authentification par le système d'exploitation Authentification par le système d'exploitation Utilisez la clause IDENTIFIED EXTERNALLY de la commande CREATE USER pour indiquer que l'utilisateur doit être authentifié par le système d'exploitation. Cette option est généralement utile lorsque l'utilisateur se connecte directement à la machine sur laquelle s'exécute le serveur Oracle. Nom utilisateur pour l'authentification par le système d'exploitation Le paramètre d'initialisation OS_AUTHENT_PREFIX permet de définir le format des noms utilisateur pour l'authentification par le système d'exploitation. La valeur OPS$ est utilisée par défaut pour garantir la compatibilité descendante avec les versions antérieures du serveur Oracle. Pour affecter la valeur NULL au préfixe, définissez ce paramètre d'initialisation comme suit : OS_AUTHENT_PREFIX = ““ L'exemple de la diapositive montre comment l'utilisateur aaron est défini dans la base de données. L'utilisateur aaron du système d'exploitation peut accéder à la base de données sans validation du serveur Oracle. Ainsi, pour se connecter au système sous UNIX à l'aide de SQL*Plus, aaron doit entrer la commande suivante à partir du système d'exploitation : $ sqlplus / Oracle9i Database Administration I 15-10 Oracle9i Database Administration I 15-11 .. • L'utilisateur qui se connecte à la machine sur laquelle s'exécute le serveur Oracle n'a pas besoin de fournir de mot de passe. l'administrateur de base de données peut créer l'utilisateur à l'aide d'une commande du type suivant : CREATE USER ops$user IDENTIFIED BY password . Si l'utilisateur se connecte depuis un client distant. La valeur par défaut FALSE indique que l'utilisateur ne peut être authentifié que par la machine sur laquelle s'exécute le serveur Oracle.Créer un utilisateur : authentification par le système d'exploitation (suite) Nom utilisateur pour l'authentification par le système d'exploitation Remarque : • Le paramètre OS_AUTHENT_PREFIX=OPS$ permet d'authentifier l'utilisateur par le système d'exploitation ou par le serveur Oracle. il doit fournir un mot de passe.. Dans ce cas. • La modification du paramètre OS_AUTHENT_PREFIX peut empêcher les utilisateurs de la base de données qui sont authentifiés par le système d'exploitation de se connecter à la base. Utilisez ce paramètre avec précaution en raison de problèmes de sécurité potentiels. • Le paramètre d'initialisation REMOTE_OS_AUTHENT=TRUE indique que l'utilisateur peut être authentifié par un système d'exploitation distant. Remarque : Le privilège UNLIMITED TABLESPACE est prioritaire sur les paramètres des quotas. 2001. Tous droits réservés. • Procédez comme suit pour modifier le quota de tablespace d'un utilisateur : ALTER USER aaron QUOTA 0 ON USERS. Par exemple.] Si vous définissez un quota de 0.Modifier les quotas de tablespace d'un utilisateur • Vous pouvez modifier les quotas de tablespace d'un utilisateur dans les cas suivants : • lorsque la taille des tables appartenant à l'utilisateur augmente de manière imprévue. Modifier les quotas de tablespace d'un utilisateur Utilisez la commande suivante pour modifier les quotas d'espace de tablespace ou redéfinir les tablespaces : ALTER USER user [ DEFAULT TABLESPACE tablespace] [ TEMPORARY TABLESPACE tablespace] [ QUOTA {integer [K | M] | UNLIMITED } ON tablespace [ QUOTA {integer [K | M] | UNLIMITED } ON tablespace ] . si le tablespace USERS contient une table de 10 Mo et qu'un quota de 0 est affecté à ce tablespace. plus aucun extent ne peut être alloué à la table. mais aucun nouvel espace ne peut leur être alloué. 15-12 Copyright © Oracle Corporation. • lorsque les objets sont réorganisés et placés dans des tablespaces différents. • lorsqu'une application est étendue et nécessite des tables ou des index supplémentaires. Oracle9i Database Administration I 15-12 .. Les options non modifiées ne sont pas affectées. les objets de l'utilisateur sont conservés dans le tablespace révoqué.. Entrez le quota dans la page Quota. Sélectionnez View/Edit Details dans le menu accessible par le bouton droit de la souris. 5. 2. 4. Oracle9i Database Administration I 15-13 .Modifier les quotas de tablespace d'un utilisateur Utilisez la commande suivante pour modifier les quotas d'espace de tablespace ou redéfinir les tablespaces : 1. 3. Cliquez sur Apply. Sélectionnez l'utilisateur. Sélectionnez Databases > Security > Users. • Vous ne pouvez pas supprimer les utilisateurs qui sont connectés au serveur Oracle. • Vous ne pouvez pas supprimer un utilisateur connecté au serveur Oracle. DROP USER aaron. Oracle9i Database Administration I 15-14 .Supprimer un utilisateur • La clause CASCADE permet de supprimer tous les objets d'un schéma. 15-14 Copyright © Oracle Corporation. Supprimer un utilisateur DROP USER user [CASCADE] Règles : • L'option CASCADE supprime tous les objets du schéma avant de supprimer l'utilisateur. DROP USER aaron CASCADE. Tous droits réservés. Elle doit être définie si le schéma contient des objets. 2001. Sélectionnez Remove dans le menu accessible par le bouton droit de la souris. Oracle9i Database Administration I 15-15 . 3.Supprimer un utilisateur Utiliser Oracle Enterprise Manager pour supprimer un utilisateur A partir de la console OEM : 1. 5. Sélectionnez Yes pour confirmer la suppression. Cliquez sur Apply. 4. Sélectionnez Databases > Security > Users. Sélectionnez l'utilisateur. 2. SQL> SELECT username.Obtenir des informations sur les utilisateurs Interrogez les vues suivantes pour obtenir des informations sur les utilisateurs : • DBA_USERS • DBA_TS_QUOTAS 15-16 Copyright © Oracle Corporation. 2001. default_tablespace 2 FROM dba_users. Obtenir des informations sur les utilisateurs L'interrogation ci-après permet de rechercher le tablespace par défaut (default_tablespace) de tous les utilisateurs. Tous droits réservés. USERNAME --------SYS SYSTEM OUTLN DBSNMP HR OE DEFAULT_TABLESPACE -----------------SYSTEM SYSTEM SYSTEM SYSTEM SAMPLE SAMPLE Oracle9i Database Administration I 15-16 . Synthèse Ce chapitre vous a permis d'apprendre à : • créer des utilisateurs en indiquant le mécanisme de contrôle par mot de passe approprié • contrôler l'utilisation de l'espace 15-17 Copyright © Oracle Corporation. 2001. Tous droits réservés. Oracle9i Database Administration I 15-17 . Tous droits réservés. vous allez : • créer des utilisateurs • afficher des informations sur les utilisateurs à l'aide du dictionnaire de données • supprimer les quotas d'un utilisateur 15-18 Copyright © Oracle Corporation. Oracle9i Database Administration I 15-18 .Présentation de l'exercice 15 Dans cet exercice. 2001. Présentation de l'exercice 15 Remarque : Vous pouvez réaliser cet exercice avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet. affichez les informations sur la quantité d'espace que Bob peut utiliser dans les tablespaces. 7 Supprimez le compte d'Emi de la base de données. remplacez le mot de passe de Bob par SAM. supprimez le quota de Bob sur son tablespace par défaut. Affectez-lui le mot de passe OLINK en vous assurant qu'il recevra une demande de modification de ce mot de passe lors de sa prochaine connexion. Que se passe-t-il ? b Sous l'ID utilisateur Bob. Oracle9i Database Administration I 15-19 . 4 A partir du dictionnaire de données. modifiez le tablespace temporaire de Bob. 8 Bob a oublié son mot de passe. 3 Affichez les informations sur Bob et Emi à partir du dictionnaire de données.sql pour accorder à Bob le droit de créer des sessions. Assurez-vous que les objets et les segments temporaires créés par Bob ne sont pas ajoutés au tablespace SYSTEM. Indice : Vous pouvez interroger la vue DBA_USERS. 2 Créez l'utilisateur Emi associé au mot de passe MARY. 6 Sous l'ID utilisateur SYSTEM. Indice : Vous pouvez interroger la vue DBA_TS_QUOTAS. Assurez-vous également que Bob peut se connecter et créer dans les tablespaces USERS et INDX des objets dont la taille peut atteindre un mégaoctet. 5 a Sous l'ID utilisateur Bob.Exercice 15 : gérer les utilisateurs 1 Créez l'utilisateur Bob associé au mot de passe CRUSADER. Utilisez le script lab15_01. Assurez-vous que les objets et les segments de tri créés par Emi ne sont pas ajoutés au tablespace SYSTEM. Indice : Affectez à Bob le tablespace par défaut USERS et le tablespace temporaire TEMP. Oracle9i Database Administration I 15-20 . Gérer les privilèges Copyright © Oracle Corporation. . 2001. Tous droits réservés. Oracle9i Database Administration I 16-2 . 2001.Objectifs A la fin de ce chapitre. Tous droits réservés. vous pourrez : • identifier les privilèges système et objet • accorder et révoquer des privilèges 16-2 Copyright © Oracle Corporation. • sélectionner des lignes dans la table d'un autre utilisateur. • d'accorder et de révoquer le droit d'effectuer certaines opérations système. • d'accorder des privilèges directement à des utilisateurs ou à des rôles. • d'accorder des privilèges à tous les utilisateurs (PUBLIC). une vue. une fonction ou un package. un administrateur de base de données est chargé : • d'autoriser un utilisateur à effectuer un type d'opération. 2001. Par exemple. Tous droits réservés. le privilège lié à la création de tablespaces est un privilège système.Gérer les privilèges Il existe deux types de privilèges utilisateur Oracle : • Système : permet aux utilisateurs de réaliser certaines actions dans la base de données • Objet : permet aux utilisateurs d'accéder à un objet donné et de le manipuler 16-3 Copyright © Oracle Corporation. Privilèges objet Chaque privilège objet autorise un utilisateur à exécuter une action spécifique sur un objet tel qu'une table. Oracle9i Database Administration I 16-3 . Privilèges Un privilège est un droit d'exécution d'un type donné d'instruction SQL ou un droit d'accès à l'objet d'un autre utilisateur. Dans sa tâche de contrôle des privilèges. une procédure. Il autorise son détenteur à : • se connecter à une base de données. • exécuter la procédure stockée d'un autre utilisateur. Privilèges système Chaque privilège système permet à un utilisateur d'effectuer une opération spécifique ou une catégorie d'opérations sur la base de données. une séquence. • créer une table. qui permettent d'accorder et de révoquer des privilèges système à un utilisateur ou à un rôle (pour plus d'informations sur les rôles. CREATE TABLESPACE • Privilèges autorisant la gestion d'objets dans un schéma propre à l'utilisateur. voir le chapitre "Gérer les rôles"). 16-4 Copyright © Oracle Corporation. • La commande REVOKE supprime les privilèges. tels que CREATE SESSION. 2001. tels que CREATE TABLE • Privilèges autorisant la gestion d'objets de n'importe quel schéma. Privilèges système Ces privilèges peuvent être classés comme suit : • Privilèges autorisant l'exécution d'opérations sur l'ensemble du système. • La commande GRANT permet d'accorder un privilège à un utilisateur ou un groupe d'utilisateurs.Privilèges système • Il existe plus de 100 privilèges système différents. Oracle9i Database Administration I 16-4 . Tous droits réservés. • Le mot-clé ANY signifie que les utilisateurs disposent du privilège de gestion d'objets dans n'importe quel schéma. tels que CREATE ANY TABLE Les privilèges peuvent être gérés à l'aide des commandes LDD GRANT et REVOKE. • Le privilège UNLIMITED TABLESPACE ne peut pas être accordé à un rôle. 2001. • Les privilèges tels que CREATE TABLE. • Le privilège DROP ANY TABLE est requis pour vider une table appartenant à un autre schéma. L'utilisateur doit disposer d'un quota de tablespace ou du privilège UNLIMITED TABLESPACE. Oracle9i Database Administration I 16-5 .Privilèges système : exemples Catégorie INDEX Exemples CREATE ANY INDEX ALTER ANY INDEX DROP ANY INDEX CREATE TABLE CREATE ANY TABLE ALTER ANY TABLE DROP ANY TABLE SELECT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE CREATE SESSION ALTER SESSION RESTRICTED SESSION CREATE TABLESPACE ALTER TABLESPACE DROP TABLESPACE UNLIMITED TABLESPACE TABLE SESSION TABLESPACE 16-5 Copyright © Oracle Corporation. CREATE PROCEDURE et CREATE CLUSTER impliquent la suppression des objets concernés. Tous droits réservés. • Le privilège CREATE TABLE permet d'exécuter les commandes CREATE INDEX et ANALYZE. Privilèges système : exemples • Il n'existe pas de privilège CREATE INDEX. {system_privilege|role} ]. TO {user|role|PUBLIC} [. Oracle9i Database Administration I 16-6 . role : désigne le nom du rôle à accorder.Accorder des privilèges système • Utilisez la commande GRANT pour accorder des privilèges système. [WITH ADMIN OPTION] Où : system_privilege : désigne le privilège système à accorder. En effet.. Tous droits réservés. 16-6 Copyright © Oracle Corporation. ces privilèges sont généralement réservés aux administrateurs de la sécurité et sont rarement accordés à d'autres utilisateurs.. WITH ADMIN OPTION : autorise le bénéficiaire à accorder son privilège ou son rôle à d'autres utilisateurs ou rôles. PUBLIC : accorde le privilège système à tous les utilisateurs.. Le bénéficiaire peut ensuite accorder un privilège système à d'autres utilisateurs avec l'option ADMIN. mais cette opération doit s'effectuer avec précaution.. GRANT CREATE SESSION TO emi. • Le bénéficiaire peut accorder le privilège système à d'autres utilisateurs grâce à l'option ADMIN. 2001. Accorder des privilèges système Utilisez l'instruction SQL GRANT pour accorder des privilèges système aux utilisateurs. GRANT CREATE SESSION TO emi WITH ADMIN OPTION. {user|role|PUBLIC} ]. GRANT {system_privilege|role} [. 6. Cliquez sur Apply. Oracle9i Database Administration I 16-7 . 2. procédez comme suit : 1. Sélectionnez les privilèges système à accorder. Sélectionnez Databases > Security > Users. 7. Sélectionnez l'utilisateur auquel le privilège doit être accordé. Vous pouvez cocher la case Admin Option. Cliquez sur l'onglet System Privileges dans la zone détails de la console. 5.Accorder des privilèges système Utiliser Oracle Enterprise Manager pour accorder des privilèges système A partir de la console OEM. Privilèges SYSDBA et SYSOPER Seul l'administrateur de base de données peut se connecter à une base de données avec des privilèges administrateur. 2001.Privilèges SYSDBA et SYSOPER Catégorie SYSOPER Exemples STARTUP SHUTDOWN ALTER DATABASE OPEN | MOUNT ALTER DATABASE BACKUP CONTROLFILE TO RECOVER DATABASE ALTER DATABASE ARCHIVELOG RESTRICTED SESSION SYSOPER PRIVILEGES WITH ADMIN OPTION CREATE DATABASE ALTER TABLESPACE BEGIN/END BACKUP RESTRICTED SESSION RECOVER DATABASE UNTIL SYSDBA 16-8 Copyright © Oracle Corporation. Oracle9i Database Administration I 16-8 . il dispose de tous les privilèges lui permettant d'exécuter n'importe quelle opération sur la base ou sur les objets de celle-ci. Tous droits réservés. Lorsqu'un utilisateur se connecte à une base de données en tant que SYSDBA. En effet. Le privilège système EXECUTE ANY PROCEDURE permet d'accéder aux procédures de n'importe quel autre schéma. Tous droits réservés. Restrictions relatives aux privilèges système Le mécanisme de protection du dictionnaire de données d'Oracle9i empêche les utilisateurs non autorisés d'accéder aux objets du dictionnaire. Si le paramètre possède la valeur TRUE. les privilèges système qui permettent d'accéder aux objets d'autres schémas n'autorisent pas l'accès aux objets du dictionnaire. à l'exception de SYS (les dictionnaires sont inaccessibles. par exemple). • grâce à la valeur par défaut FALSE.Restrictions relatives aux privilèges système • Le paramètre O7_DICTIONARY_ACCESSIBILITY : • contrôle les restrictions relatives aux privilèges système. l'instruction SELECT ANY TABLE autorise l'accès aux vues et tables de tous les schémas. Si sa valeur est FALSE. • permet d'accéder aux objets du schéma SYS s'il possède la valeur TRUE. les privilèges SYSTEM qui permettent d'accéder aux objets d'autres schémas n'autorisent pas l'accès aux objets du schéma du dictionnaire de données. les privilèges système qui permettent d'accéder à n'importe quel schéma interdisent l'accès au schéma SYS. 16-9 Copyright © Oracle Corporation. vues. Par exemple. le privilège SELECT ANY TABLE vous permet d'accéder à des vues et des tables d'autres schémas. Oracle9i Database Administration I 16-9 . Par exemple. à l'exception de celles du schéma SYS. 2001. l'accès aux objets du schéma SYS est autorisé (fonction Oracle7). packages et synonymes). si O7_DICTIONARY_ACCESSIBILITY=FALSE. L'accès aux objets du dictionnaire est limité aux rôles SYSDBA et SYSOPER. mais ne vous autorise pas à sélectionner des objets du dictionnaire (tables de base. 2001. REVOKE CREATE TABLE FROM emi. Par exemple. {user|role|PUBLIC} ]. Tout utilisateur disposant d'un privilège système avec l'option ADMIN OPTION peut révoquer le privilège de n'importe quel autre utilisateur de la base de données. Remarque : • • La commande REVOKE permet uniquement la révocation des privilèges système accordés directement à l'aide de la commande GRANT.Révoquer des privilèges système • Utilisez la commande REVOKE pour révoquer un privilège système accordé à un utilisateur. REVOKE {system_privilege|role} [. si vous accordez le privilège SELECT ANY TABLE à un utilisateur qui a créé des procédures ou des vues utilisant une table d'un autre schéma... • Les utilisateurs qui disposent d'un privilège système avec l'option ADMIN OPTION peuvent révoquer des privilèges système. {system_privilege|role} ].. La révocation de privilèges système peut avoir un impact sur certains objets dépendants. FROM {user|role|PUBLIC} [. 16-10 Copyright © Oracle Corporation. Révoquer des privilèges système Vous pouvez révoquer des privilèges système à l'aide de l'instruction SQL REVOKE. la révocation de ce privilège invalide ces procédures ou vues. • Seuls les privilèges accordés via la commande GRANT peuvent être révoqués.. même si ce n'est pas lui qui l'a accordé. Tous droits réservés. Oracle9i Database Administration I 16-10 . 4. Oracle9i Database Administration I 16-11 . puis cliquez sur la flèche orientée vers le haut. Cliquez sur la page System Privileges dans la zone détails de la console. Cliquez sur Apply. Sélectionnez le privilège système à révoquer. 2. procédez comme suit : 1. 3. Sélectionnez Databases > Security > Users. Sélectionnez l'utilisateur dont le privilège doit être révoqué.Révoquer des privilèges système Utiliser Oracle Enterprise Manager pour révoquer des privilèges système A partir de la console OEM. 5. La table d'Emi n'est pas supprimée et cette dernière dispose toujours du privilège système CREATE TABLE. Oracle9i Database Administration I 16-12 . 5. Résultat : La table de Jeff n'est pas supprimée. Tous droits réservés. Jeff crée une table. 2. 4. que le privilège ait été accordé avec l'option ADMIN OPTION ou non. Emi crée une table. mais il ne peut plus créer de table. L'administrateur de base de données révoque le privilège système CREATE TABLE précédemment accordé à Jeff. 3.Révoquer des privilèges système accordés avec l'option ADMIN OPTION DBA Jeff Emi GRANT REVOKE DBA Jeff Emi 16-12 Copyright © Oracle Corporation. Jeff accorde le privilège système CREATE TABLE à Emi. Révoquer des privilèges système (suite) La révocation d'un privilège système n'entraîne aucun effet de cascade. L'administrateur de base de données accorde le privilège système CREATE TABLE à Jeff avec l'option ADMIN OPTION. 2001. Suivez les étapes de l'exemple suivant : Scénario 1. une fonction ou un package spécifique. 2001. Tous droits réservés. Vous pouvez restreindre les privilèges UPDATE. Vous pouvez limiter un droit de type SELECT en créant une vue présentant un sous-ensemble de colonnes et en accordant le privilège SELECT sur la vue. une vue. REFERENCES et INSERT en précisant un sous-ensemble de colonnes pouvant être mises à jour. objet ALTER DELETE EXECUTE INDEX INSERT REFERENCES SELECT UPDATE Table Vue Séquence Procédure 16-13 Copyright © Oracle Corporation. une séquence. Le tableau de la diapositive répertorie les privilèges correspondant à différents objets. les seuls privilèges qui s'appliquent à une séquence sont SELECT et ALTER. une procédure.Privilèges objet Priv. Privilèges objet Un privilège objet est un privilège ou droit autorisant la réalisation d'une action donnée sur une table. Chaque objet présente un ensemble propre de privilèges pouvant être accordés. Ainsi. Oracle9i Database Administration I 16-13 . Remarque : La diapositive ne fournit pas la liste exhaustive des privilèges objet. Un privilège accordé sur un synonyme octroie directement un droit sur la table de base référencée par ce synonyme. ..Accorder des privilèges objet • Utilisez la commande GRANT pour accorder des privilèges objet. ALL accorde tous les privilèges objet qui ont été accordés avec l'option WITH GRANT OPTION. 2001. {user|role|PUBLIC} ].. |ALL [PRIVILEGES]} ON TO [schema. • L'objet doit se trouver dans votre schéma ou vous devez avoir reçu le privilège avec l'option GRANT OPTION. object_privilege [(column_list)] ]. column_list désigne une colonne de table ou de vue (cette valeur ne peut être définie que lors de l'octroi du privilège INSERT. GRANT EXECUTE ON dbms_output TO jeff.. REFERENCES ou UPDATE).]object {user|role|PUBLIC}[. WITH GRANT OPTION autorise le bénéficiaire à accorder ses privilèges objet à d'autres utilisateurs ou rôles.customers TO jeff WITH GRANT OPTION. Oracle9i Database Administration I 16-14 . ON object identifie l'objet sur lequel les privilèges doivent être accordés. 16-14 Copyright © Oracle Corporation. [WITH GRANT OPTION] Où : object_privilege désigne le privilège objet à accorder. Accorder des privilèges objet GRANT { object_privilege [(column_list)] [. Tous droits réservés. GRANT UPDATE ON emi. tous les privilèges associés vous sont automatiquement accordés. • Par défaut. soyez prudent lorsque vous accordez à d'autres utilisateurs des privilèges sur vos objets. • Pour cela. • Par souci de sécurité. l'objet doit se trouver dans votre schéma ou vous devez avoir reçu le privilège avec l'option GRANT OPTION. si vous disposez d'un objet.Accorder des privilèges objet (suite) Utilisez l'instruction GRANT pour accorder des privilèges objet. Oracle9i Database Administration I 16-15 . Cliquez sur Apply. 3. si nécessaire. 4. Cliquez sur l'onglet Object Privileges dans la zone détails de la console. 2. Sélectionnez Databases > Security > Users. 6.Accorder des privilèges objet Utiliser Oracle Enterprise Manager pour accorder des privilèges objet A partir de la console OEM. 5. 7. Vous pouvez cocher la case Grant Option. Oracle9i Database Administration I 16-16 . Développez l'arborescence des dossiers du schéma et de l'objet sur lesquels le privilège objet sera accordé. puis cliquez sur la flèche orientée vers le bas. Sélectionnez l'utilisateur auquel le privilège doit être accordé. Sélectionnez le privilège à accorder dans le champ Available Privileges. procédez comme suit : 1. 16-17 Copyright © Oracle Corporation. Révoquer des privilèges objet L'instruction REVOKE permet de révoquer des privilèges objet. [CASCADE CONSTRAINTS] FROM {user|role|PUBLIC} Oracle9i Database Administration I 16-17 .Révoquer des privilèges objet • Utilisez la commande REVOKE pour révoquer des privilèges objet. {user|role|PUBLIC} ].. Utilisez la commande suivante pour révoquer des privilèges objet : REVOKE { object_privilege [. • Seul l'utilisateur qui a accordé un privilège objet peut le révoquer.. object_privilege ].]object [.. L'utilisateur qui révoque un privilège objet doit être celui qui l'a accordé. Tous droits réservés.. | ALL [PRIVILEGES] } ON [schema. 2001.orders FROM jeff. REVOKE SELECT ON emi. Révoquer des privilèges objet (suite) Où : object_privilege désigne le privilège objet à révoquer. Restriction : Les utilisateurs qui accordent des privilèges objet peuvent les révoquer uniquement aux utilisateurs auxquels ils les ont accordés. CASCADE CONSTRAINTS supprime toutes les contraintes d'intégrité référentielle définies à l'aide du privilège REFERENCES ou ALL. FROM identifie les utilisateurs ou les rôles dont les privilèges objet sont révoqués. Oracle9i Database Administration I 16-18 . ALL révoque tous les privilèges objet accordés à l'utilisateur. ON désigne l'objet sur lequel les privilèges objet doivent être révoqués. Cliquez sur Apply. 4. Oracle9i Database Administration I 16-19 .Révoquer des privilèges objet Utiliser Oracle Enterprise Manager pour révoquer des privilèges objet A partir de la console OEM. 2. Sélectionnez le privilège objet à révoquer. procédez comme suit : 1. Cliquez sur l'onglet Object Privileges dans la zone détails de la console. 3. puis cliquez sur la flèche orientée vers le haut. Sélectionnez l'utilisateur dont le privilège doit être révoqué. Sélectionnez Databases > Security > Users. 5. si le privilège SELECT ANY TABLE est accordé à un utilisateur qui a créé des procédures utilisant la table. • Jeff accorde ce privilège sur la table EMPLOYEES à Emi. toutes les procédures contenues dans le schéma de l'utilisateur doivent être recompilées pour être réutilisées. Oracle9i Database Administration I 16-20 . Révoquer des privilèges objet (suite) Vous pouvez observer des effets de cascade lorsque vous révoquez un privilège système lié à une opération LMD. Tous droits réservés. La révocation de privilèges objet accordés avec l'option WITH GRANT OPTION provoque également un effet de cascade. 2001. Suivez les étapes de l'exemple suivant : Scénario • Jeff reçoit le privilège objet SELECT sur la table EMPLOYEES avec l'option GRANT OPTION. le privilège SELECT de Jeff est révoqué en entraînant la révocation du privilège d'Emi. • Par la suite.Révoquer les privilèges objet accordés avec l'option WITH GRANT OPTION Bob GRANT Jeff Emi REVOKE Bob Jeff Emi 16-20 Copyright © Oracle Corporation. Par exemple. Obtenir des informations sur les privilèges Interrogez les vues suivantes pour obtenir des informations sur les privilèges : • DBA_SYS_PRIVS • SESSION_PRIVS • DBA_TAB_PRIVS • DBA_COL_PRIVS 16-21 Copyright © Oracle Corporation. SESSION_PRIVS affiche la liste des privilèges auxquels l'utilisateur a accès. Oracle9i Database Administration I 16-21 . Tous droits réservés. Obtenir des informations sur les privilèges DBA_SYS_PRIVS affiche la liste des privilèges système accordés aux utilisateurs et aux rôles. DBA_TAB_PRIVS affiche la liste de tous les octrois de privilèges sur les objets de la base de données. DBA_COL_PRIVS décrit tous les octrois de privilèges sur les colonnes de la base de données. 2001. Oracle9i Database Administration I 16-22 . 2001. Tous droits réservés.Synthèse Ce chapitre vous a permis d'apprendre à : • identifier les privilèges système et objet • accorder et révoquer des privilèges 16-22 Copyright © Oracle Corporation. vous allez : • créer un utilisateur et accorder des privilèges système • accorder des privilèges objet à des utilisateurs 16-23 Copyright © Oracle Corporation. Tous droits réservés. 2001. Présentation de l'exercice 16 Remarque : Cet exercice peut être réalisé avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet. Oracle9i Database Administration I 16-23 .Présentation de l'exercice 16 Dans cet exercice. à se 4 Créez l'utilisateur Trevor identifié par le mot de passe diamond1$. c Connectez-vous en tant qu'utilisateur SYSTEM. En tant qu'utilisateur SYSTEM. puis autorisez Bob à sélectionner des données dans la table CUSTOMERS1 d'Emi.sql pour vous connecter en tant qu'Emi et créez les tables CUSTOMERS1 et ORDERS1. puis autorisez Bob à sélectionner des données dans la table CUSTOMERS1 d'Emi et à octroyer ce droit à d'autres utilisateurs. 2 a Exécutez le script lab16_02a. b Connectez-vous en tant qu'utilisateur SYSTEM. le tablespace temporaire TEMP et un quota de tablespace de 1 Mo sur DATA01. 5 a En tant que Bob. Vérifiez que les enregistrements ont été insérés. 5 b Connectez-vous en tant qu'Emi. c Connectez-vous en tant que Trevor. Remarque : Le message A password has expired va s'afficher en raison des opérations effectuées à l'étape 8 de l'exercice 15. Que se passe-t-il ? 6 Autorisez Emi à démarrer et arrêter la base de données. créez l'utilisateur Emi et autorisez-le à se connecter à la base de données et à créer des objets dans son schéma. mais pas à en créer une nouvelle. Que se passe-t-il ? 3 Reconnectez-vous en tant qu'Emi. puis retirez à Bob le privilège de lecture de la table CUSTOMERS1 d'Emi. puis autorisez-le connecter à la base de données. Oracle9i Database Administration I 16-24 . puis interrogez la table CUSTOMERS1 d'Emi. Indice : Utilisez la vue DBA_TAB_PRIVS.CUSTOMERS vers la table CUSOMTERS1 d'Emi. autorisez Trevor à accéder à la table CUSTOMERS1 d'Emi.Exercice 16 : gérer les privilèges 1 Connectez-vous en tant qu'utilisateur SYSTEM. Remplacez le mot de passe de Bob par aaron$1. puis copiez les données de SYSTEM. consultez les vues du dictionnaire de données qui enregistrent ces actions. Affectez-lui le tablespace par défaut DATA01. .Gérer les privilèges Copyright © Oracle Corporation. 2001. Tous droits réservés. Oracle9i Database Administration I 16-2 .Objectifs A la fin de ce chapitre. Tous droits réservés. vous pourrez : • identifier les privilèges système et objet • accorder et révoquer des privilèges 16-2 Copyright © Oracle Corporation. 2001. Il autorise son détenteur à : • se connecter à une base de données. une fonction ou un package. une procédure. 2001. le privilège lié à la création de tablespaces est un privilège système. • d'accorder des privilèges directement à des utilisateurs ou à des rôles. Privilèges objet Chaque privilège objet autorise un utilisateur à exécuter une action spécifique sur un objet tel qu'une table. Privilèges Un privilège est un droit d'exécution d'un type donné d'instruction SQL ou un droit d'accès à l'objet d'un autre utilisateur. une vue. Dans sa tâche de contrôle des privilèges. • exécuter la procédure stockée d'un autre utilisateur. • d'accorder des privilèges à tous les utilisateurs (PUBLIC). Par exemple. une séquence. Tous droits réservés. • d'accorder et de révoquer le droit d'effectuer certaines opérations système. un administrateur de base de données est chargé : • d'autoriser un utilisateur à effectuer un type d'opération. • créer une table. • sélectionner des lignes dans la table d'un autre utilisateur.Gérer les privilèges Il existe deux types de privilèges utilisateur Oracle : • Système : permet aux utilisateurs de réaliser certaines actions dans la base de données • Objet : permet aux utilisateurs d'accéder à un objet donné et de le manipuler 16-3 Copyright © Oracle Corporation. Oracle9i Database Administration I 16-3 . Privilèges système Chaque privilège système permet à un utilisateur d'effectuer une opération spécifique ou une catégorie d'opérations sur la base de données. tels que CREATE SESSION. tels que CREATE ANY TABLE Les privilèges peuvent être gérés à l'aide des commandes LDD GRANT et REVOKE. Tous droits réservés.Privilèges système • Il existe plus de 100 privilèges système différents. Oracle9i Database Administration I 16-4 . • La commande REVOKE supprime les privilèges. tels que CREATE TABLE • Privilèges autorisant la gestion d'objets de n'importe quel schéma. 16-4 Copyright © Oracle Corporation. • La commande GRANT permet d'accorder un privilège à un utilisateur ou un groupe d'utilisateurs. • Le mot-clé ANY signifie que les utilisateurs disposent du privilège de gestion d'objets dans n'importe quel schéma. Privilèges système Ces privilèges peuvent être classés comme suit : • Privilèges autorisant l'exécution d'opérations sur l'ensemble du système. qui permettent d'accorder et de révoquer des privilèges système à un utilisateur ou à un rôle (pour plus d'informations sur les rôles. voir le chapitre "Gérer les rôles"). 2001. CREATE TABLESPACE • Privilèges autorisant la gestion d'objets dans un schéma propre à l'utilisateur. Privilèges système : exemples • Il n'existe pas de privilège CREATE INDEX. • Le privilège UNLIMITED TABLESPACE ne peut pas être accordé à un rôle. • Le privilège DROP ANY TABLE est requis pour vider une table appartenant à un autre schéma. 2001. Tous droits réservés.Privilèges système : exemples Catégorie INDEX Exemples CREATE ANY INDEX ALTER ANY INDEX DROP ANY INDEX CREATE TABLE CREATE ANY TABLE ALTER ANY TABLE DROP ANY TABLE SELECT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE CREATE SESSION ALTER SESSION RESTRICTED SESSION CREATE TABLESPACE ALTER TABLESPACE DROP TABLESPACE UNLIMITED TABLESPACE TABLE SESSION TABLESPACE 16-5 Copyright © Oracle Corporation. • Les privilèges tels que CREATE TABLE. L'utilisateur doit disposer d'un quota de tablespace ou du privilège UNLIMITED TABLESPACE. Oracle9i Database Administration I 16-5 . • Le privilège CREATE TABLE permet d'exécuter les commandes CREATE INDEX et ANALYZE. CREATE PROCEDURE et CREATE CLUSTER impliquent la suppression des objets concernés. [WITH ADMIN OPTION] Où : system_privilege : désigne le privilège système à accorder. Le bénéficiaire peut ensuite accorder un privilège système à d'autres utilisateurs avec l'option ADMIN. TO {user|role|PUBLIC} [. mais cette opération doit s'effectuer avec précaution.Accorder des privilèges système • Utilisez la commande GRANT pour accorder des privilèges système. GRANT {system_privilege|role} [. {user|role|PUBLIC} ]. role : désigne le nom du rôle à accorder. Oracle9i Database Administration I 16-6 . Tous droits réservés.. {system_privilege|role} ].. Accorder des privilèges système Utilisez l'instruction SQL GRANT pour accorder des privilèges système aux utilisateurs. • Le bénéficiaire peut accorder le privilège système à d'autres utilisateurs grâce à l'option ADMIN. PUBLIC : accorde le privilège système à tous les utilisateurs. GRANT CREATE SESSION TO emi. GRANT CREATE SESSION TO emi WITH ADMIN OPTION. ces privilèges sont généralement réservés aux administrateurs de la sécurité et sont rarement accordés à d'autres utilisateurs. 2001. 16-6 Copyright © Oracle Corporation. En effet... WITH ADMIN OPTION : autorise le bénéficiaire à accorder son privilège ou son rôle à d'autres utilisateurs ou rôles. 7. Vous pouvez cocher la case Admin Option. Cliquez sur l'onglet System Privileges dans la zone détails de la console. Oracle9i Database Administration I 16-7 . 6. Sélectionnez Databases > Security > Users. Sélectionnez l'utilisateur auquel le privilège doit être accordé. 2. Cliquez sur Apply. Sélectionnez les privilèges système à accorder. procédez comme suit : 1. 5.Accorder des privilèges système Utiliser Oracle Enterprise Manager pour accorder des privilèges système A partir de la console OEM. il dispose de tous les privilèges lui permettant d'exécuter n'importe quelle opération sur la base ou sur les objets de celle-ci.Privilèges SYSDBA et SYSOPER Catégorie SYSOPER Exemples STARTUP SHUTDOWN ALTER DATABASE OPEN | MOUNT ALTER DATABASE BACKUP CONTROLFILE TO RECOVER DATABASE ALTER DATABASE ARCHIVELOG RESTRICTED SESSION SYSOPER PRIVILEGES WITH ADMIN OPTION CREATE DATABASE ALTER TABLESPACE BEGIN/END BACKUP RESTRICTED SESSION RECOVER DATABASE UNTIL SYSDBA 16-8 Copyright © Oracle Corporation. 2001. Tous droits réservés. Oracle9i Database Administration I 16-8 . Lorsqu'un utilisateur se connecte à une base de données en tant que SYSDBA. Privilèges SYSDBA et SYSOPER Seul l'administrateur de base de données peut se connecter à une base de données avec des privilèges administrateur. packages et synonymes). Oracle9i Database Administration I 16-9 . le privilège SELECT ANY TABLE vous permet d'accéder à des vues et des tables d'autres schémas. Le privilège système EXECUTE ANY PROCEDURE permet d'accéder aux procédures de n'importe quel autre schéma. Restrictions relatives aux privilèges système Le mécanisme de protection du dictionnaire de données d'Oracle9i empêche les utilisateurs non autorisés d'accéder aux objets du dictionnaire. En effet. les privilèges système qui permettent d'accéder à n'importe quel schéma interdisent l'accès au schéma SYS. l'instruction SELECT ANY TABLE autorise l'accès aux vues et tables de tous les schémas. les privilèges SYSTEM qui permettent d'accéder aux objets d'autres schémas n'autorisent pas l'accès aux objets du schéma du dictionnaire de données. mais ne vous autorise pas à sélectionner des objets du dictionnaire (tables de base. 2001. Si sa valeur est FALSE. 16-9 Copyright © Oracle Corporation. vues.Restrictions relatives aux privilèges système • Le paramètre O7_DICTIONARY_ACCESSIBILITY : • contrôle les restrictions relatives aux privilèges système. à l'exception de celles du schéma SYS. L'accès aux objets du dictionnaire est limité aux rôles SYSDBA et SYSOPER. par exemple). Si le paramètre possède la valeur TRUE. • permet d'accéder aux objets du schéma SYS s'il possède la valeur TRUE. l'accès aux objets du schéma SYS est autorisé (fonction Oracle7). Par exemple. • grâce à la valeur par défaut FALSE. Tous droits réservés. à l'exception de SYS (les dictionnaires sont inaccessibles. Par exemple. les privilèges système qui permettent d'accéder aux objets d'autres schémas n'autorisent pas l'accès aux objets du dictionnaire. si O7_DICTIONARY_ACCESSIBILITY=FALSE. Tout utilisateur disposant d'un privilège système avec l'option ADMIN OPTION peut révoquer le privilège de n'importe quel autre utilisateur de la base de données. La révocation de privilèges système peut avoir un impact sur certains objets dépendants. REVOKE {system_privilege|role} [. 16-10 Copyright © Oracle Corporation. la révocation de ce privilège invalide ces procédures ou vues. Par exemple. {user|role|PUBLIC} ]. REVOKE CREATE TABLE FROM emi. Remarque : • • La commande REVOKE permet uniquement la révocation des privilèges système accordés directement à l'aide de la commande GRANT. Révoquer des privilèges système Vous pouvez révoquer des privilèges système à l'aide de l'instruction SQL REVOKE.Révoquer des privilèges système • Utilisez la commande REVOKE pour révoquer un privilège système accordé à un utilisateur. Oracle9i Database Administration I 16-10 .. • Les utilisateurs qui disposent d'un privilège système avec l'option ADMIN OPTION peuvent révoquer des privilèges système. 2001. si vous accordez le privilège SELECT ANY TABLE à un utilisateur qui a créé des procédures ou des vues utilisant une table d'un autre schéma.. même si ce n'est pas lui qui l'a accordé.. • Seuls les privilèges accordés via la commande GRANT peuvent être révoqués. FROM {user|role|PUBLIC} [. Tous droits réservés.. {system_privilege|role} ]. puis cliquez sur la flèche orientée vers le haut. Sélectionnez l'utilisateur dont le privilège doit être révoqué. Cliquez sur Apply.Révoquer des privilèges système Utiliser Oracle Enterprise Manager pour révoquer des privilèges système A partir de la console OEM. procédez comme suit : 1. 2. Sélectionnez Databases > Security > Users. 4. 3. 5. Sélectionnez le privilège système à révoquer. Cliquez sur la page System Privileges dans la zone détails de la console. Oracle9i Database Administration I 16-11 . 2. Jeff crée une table. Oracle9i Database Administration I 16-12 .Révoquer des privilèges système accordés avec l'option ADMIN OPTION DBA Jeff Emi GRANT REVOKE DBA Jeff Emi 16-12 Copyright © Oracle Corporation. mais il ne peut plus créer de table. La table d'Emi n'est pas supprimée et cette dernière dispose toujours du privilège système CREATE TABLE. que le privilège ait été accordé avec l'option ADMIN OPTION ou non. 2001. Tous droits réservés. 3. Jeff accorde le privilège système CREATE TABLE à Emi. 5. L'administrateur de base de données accorde le privilège système CREATE TABLE à Jeff avec l'option ADMIN OPTION. Emi crée une table. L'administrateur de base de données révoque le privilège système CREATE TABLE précédemment accordé à Jeff. Résultat : La table de Jeff n'est pas supprimée. Suivez les étapes de l'exemple suivant : Scénario 1. 4. Révoquer des privilèges système (suite) La révocation d'un privilège système n'entraîne aucun effet de cascade. une vue. Oracle9i Database Administration I 16-13 . Vous pouvez limiter un droit de type SELECT en créant une vue présentant un sous-ensemble de colonnes et en accordant le privilège SELECT sur la vue. Un privilège accordé sur un synonyme octroie directement un droit sur la table de base référencée par ce synonyme. objet ALTER DELETE EXECUTE INDEX INSERT REFERENCES SELECT UPDATE Table Vue Séquence Procédure 16-13 Copyright © Oracle Corporation. Remarque : La diapositive ne fournit pas la liste exhaustive des privilèges objet. une fonction ou un package spécifique. une séquence.Privilèges objet Priv. Ainsi. Chaque objet présente un ensemble propre de privilèges pouvant être accordés. 2001. REFERENCES et INSERT en précisant un sous-ensemble de colonnes pouvant être mises à jour. Vous pouvez restreindre les privilèges UPDATE. une procédure. Privilèges objet Un privilège objet est un privilège ou droit autorisant la réalisation d'une action donnée sur une table. Tous droits réservés. les seuls privilèges qui s'appliquent à une séquence sont SELECT et ALTER. Le tableau de la diapositive répertorie les privilèges correspondant à différents objets. 2001. REFERENCES ou UPDATE). WITH GRANT OPTION autorise le bénéficiaire à accorder ses privilèges objet à d'autres utilisateurs ou rôles.. GRANT UPDATE ON emi. • L'objet doit se trouver dans votre schéma ou vous devez avoir reçu le privilège avec l'option GRANT OPTION. 16-14 Copyright © Oracle Corporation. |ALL [PRIVILEGES]} ON TO [schema. [WITH GRANT OPTION] Où : object_privilege désigne le privilège objet à accorder. ALL accorde tous les privilèges objet qui ont été accordés avec l'option WITH GRANT OPTION. Oracle9i Database Administration I 16-14 .]object {user|role|PUBLIC}[. GRANT EXECUTE ON dbms_output TO jeff. object_privilege [(column_list)] ]. column_list désigne une colonne de table ou de vue (cette valeur ne peut être définie que lors de l'octroi du privilège INSERT. Accorder des privilèges objet GRANT { object_privilege [(column_list)] [. {user|role|PUBLIC} ]...Accorder des privilèges objet • Utilisez la commande GRANT pour accorder des privilèges objet. ON object identifie l'objet sur lequel les privilèges doivent être accordés. Tous droits réservés..customers TO jeff WITH GRANT OPTION. • Par défaut.Accorder des privilèges objet (suite) Utilisez l'instruction GRANT pour accorder des privilèges objet. si vous disposez d'un objet. Oracle9i Database Administration I 16-15 . soyez prudent lorsque vous accordez à d'autres utilisateurs des privilèges sur vos objets. • Pour cela. tous les privilèges associés vous sont automatiquement accordés. • Par souci de sécurité. l'objet doit se trouver dans votre schéma ou vous devez avoir reçu le privilège avec l'option GRANT OPTION. puis cliquez sur la flèche orientée vers le bas. 7.Accorder des privilèges objet Utiliser Oracle Enterprise Manager pour accorder des privilèges objet A partir de la console OEM. Cliquez sur l'onglet Object Privileges dans la zone détails de la console. Sélectionnez le privilège à accorder dans le champ Available Privileges. procédez comme suit : 1. 5. 3. Cliquez sur Apply. Développez l'arborescence des dossiers du schéma et de l'objet sur lesquels le privilège objet sera accordé. Oracle9i Database Administration I 16-16 . 6. Vous pouvez cocher la case Grant Option. Sélectionnez l'utilisateur auquel le privilège doit être accordé. si nécessaire. 2. 4. Sélectionnez Databases > Security > Users. | ALL [PRIVILEGES] } ON [schema. • Seul l'utilisateur qui a accordé un privilège objet peut le révoquer. Tous droits réservés.orders FROM jeff. {user|role|PUBLIC} ]..Révoquer des privilèges objet • Utilisez la commande REVOKE pour révoquer des privilèges objet... 2001.. L'utilisateur qui révoque un privilège objet doit être celui qui l'a accordé. [CASCADE CONSTRAINTS] FROM {user|role|PUBLIC} Oracle9i Database Administration I 16-17 . Utilisez la commande suivante pour révoquer des privilèges objet : REVOKE { object_privilege [.]object [. 16-17 Copyright © Oracle Corporation. REVOKE SELECT ON emi. Révoquer des privilèges objet L'instruction REVOKE permet de révoquer des privilèges objet. object_privilege ]. CASCADE CONSTRAINTS supprime toutes les contraintes d'intégrité référentielle définies à l'aide du privilège REFERENCES ou ALL. ALL révoque tous les privilèges objet accordés à l'utilisateur. ON désigne l'objet sur lequel les privilèges objet doivent être révoqués. Restriction : Les utilisateurs qui accordent des privilèges objet peuvent les révoquer uniquement aux utilisateurs auxquels ils les ont accordés.Révoquer des privilèges objet (suite) Où : object_privilege désigne le privilège objet à révoquer. FROM identifie les utilisateurs ou les rôles dont les privilèges objet sont révoqués. Oracle9i Database Administration I 16-18 . Cliquez sur Apply. Sélectionnez le privilège objet à révoquer. Cliquez sur l'onglet Object Privileges dans la zone détails de la console. puis cliquez sur la flèche orientée vers le haut. 3. 2. 4. Sélectionnez l'utilisateur dont le privilège doit être révoqué. procédez comme suit : 1. Oracle9i Database Administration I 16-19 . Sélectionnez Databases > Security > Users. 5.Révoquer des privilèges objet Utiliser Oracle Enterprise Manager pour révoquer des privilèges objet A partir de la console OEM. toutes les procédures contenues dans le schéma de l'utilisateur doivent être recompilées pour être réutilisées. Tous droits réservés. Révoquer des privilèges objet (suite) Vous pouvez observer des effets de cascade lorsque vous révoquez un privilège système lié à une opération LMD. • Par la suite. • Jeff accorde ce privilège sur la table EMPLOYEES à Emi. si le privilège SELECT ANY TABLE est accordé à un utilisateur qui a créé des procédures utilisant la table. La révocation de privilèges objet accordés avec l'option WITH GRANT OPTION provoque également un effet de cascade. Par exemple.Révoquer les privilèges objet accordés avec l'option WITH GRANT OPTION Bob GRANT Jeff Emi REVOKE Bob Jeff Emi 16-20 Copyright © Oracle Corporation. 2001. le privilège SELECT de Jeff est révoqué en entraînant la révocation du privilège d'Emi. Suivez les étapes de l'exemple suivant : Scénario • Jeff reçoit le privilège objet SELECT sur la table EMPLOYEES avec l'option GRANT OPTION. Oracle9i Database Administration I 16-20 . SESSION_PRIVS affiche la liste des privilèges auxquels l'utilisateur a accès. 2001. DBA_COL_PRIVS décrit tous les octrois de privilèges sur les colonnes de la base de données.Obtenir des informations sur les privilèges Interrogez les vues suivantes pour obtenir des informations sur les privilèges : • DBA_SYS_PRIVS • SESSION_PRIVS • DBA_TAB_PRIVS • DBA_COL_PRIVS 16-21 Copyright © Oracle Corporation. Oracle9i Database Administration I 16-21 . DBA_TAB_PRIVS affiche la liste de tous les octrois de privilèges sur les objets de la base de données. Obtenir des informations sur les privilèges DBA_SYS_PRIVS affiche la liste des privilèges système accordés aux utilisateurs et aux rôles. Tous droits réservés. 2001.Synthèse Ce chapitre vous a permis d'apprendre à : • identifier les privilèges système et objet • accorder et révoquer des privilèges 16-22 Copyright © Oracle Corporation. Oracle9i Database Administration I 16-22 . Tous droits réservés. Présentation de l'exercice 16 Remarque : Cet exercice peut être réalisé avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet. Oracle9i Database Administration I 16-23 . vous allez : • créer un utilisateur et accorder des privilèges système • accorder des privilèges objet à des utilisateurs 16-23 Copyright © Oracle Corporation. 2001. Tous droits réservés.Présentation de l'exercice 16 Dans cet exercice. puis interrogez la table CUSTOMERS1 d'Emi. c Connectez-vous en tant que Trevor.Exercice 16 : gérer les privilèges 1 Connectez-vous en tant qu'utilisateur SYSTEM. Affectez-lui le tablespace par défaut DATA01. 2 a Exécutez le script lab16_02a.CUSTOMERS vers la table CUSOMTERS1 d'Emi. le tablespace temporaire TEMP et un quota de tablespace de 1 Mo sur DATA01. consultez les vues du dictionnaire de données qui enregistrent ces actions. puis autorisez-le connecter à la base de données. Remplacez le mot de passe de Bob par aaron$1. mais pas à en créer une nouvelle.sql pour vous connecter en tant qu'Emi et créez les tables CUSTOMERS1 et ORDERS1. à se 4 Créez l'utilisateur Trevor identifié par le mot de passe diamond1$. Indice : Utilisez la vue DBA_TAB_PRIVS. Remarque : Le message A password has expired va s'afficher en raison des opérations effectuées à l'étape 8 de l'exercice 15. autorisez Trevor à accéder à la table CUSTOMERS1 d'Emi. 5 b Connectez-vous en tant qu'Emi. puis autorisez Bob à sélectionner des données dans la table CUSTOMERS1 d'Emi. c Connectez-vous en tant qu'utilisateur SYSTEM. En tant qu'utilisateur SYSTEM. puis retirez à Bob le privilège de lecture de la table CUSTOMERS1 d'Emi. 5 a En tant que Bob. Vérifiez que les enregistrements ont été insérés. Oracle9i Database Administration I 16-24 . puis copiez les données de SYSTEM. puis autorisez Bob à sélectionner des données dans la table CUSTOMERS1 d'Emi et à octroyer ce droit à d'autres utilisateurs. Que se passe-t-il ? 6 Autorisez Emi à démarrer et arrêter la base de données. b Connectez-vous en tant qu'utilisateur SYSTEM. Que se passe-t-il ? 3 Reconnectez-vous en tant qu'Emi. créez l'utilisateur Emi et autorisez-le à se connecter à la base de données et à créer des objets dans son schéma. Tous droits réservés.Gérer les rôles Copyright © Oracle Corporation. . 2001. vous pourrez : • créer et modifier des rôles • gérer la disponibilité des rôles • supprimer des rôles • utiliser des rôles prédéfinis • afficher des informations sur les rôles à partir du dictionnaire de données 17-2 Copyright © Oracle Corporation. Oracle9i Database Administration I 17-2 . 2001.Objectifs A la fin de ce chapitre. Tous droits réservés. • peuvent être accordés à tout utilisateur ou rôle. Ils facilitent l'administration des privilèges dans une base de données. • n'ont pas de propriétaire et ne se trouvent dans aucun schéma. • peuvent être constitués de privilèges système et de privilèges objet. Tous droits réservés. un rôle ne peut pas être accordé à lui-même ou de façon circulaire. Oracle9i Database Administration I 17-3 . • doivent posséder un nom unique différent des noms utilisateur et des noms de rôle existants. • peuvent nécessiter un mot de passe pour être activés.Rôles Utilisateurs A B C Rôles HR_MGR HR_CLERK Privilèges SELECT ON JOBS CREATE TABLE CREATE SESSION INSERT ON JOBS UPDATE ON JOBS 17-3 Copyright © Oracle Corporation. En revanche. • peuvent être activés ou désactivés pour chaque utilisateur auquel ils ont été accordés. • sont décrits dans le dictionnaire de données. Les rôles : • sont accordés et révoqués à l'aide des commandes qui permettent d'accorder et de révoquer des privilèges système. 2001. Les rôles sont des groupes nommés de privilèges associés qui sont accordés à des utilisateurs ou à d'autres rôles. Définition d'un rôle Oracle permet de gérer et de contrôler aisément les privilèges à l'aide de rôles. Octroi possible via le système d'exploitation Vous pouvez utiliser des commandes ou des utilitaires du système d'exploitation pour accorder des rôles aux utilisateurs dans la base de données. Tous droits réservés. Au lieu d'accorder les mêmes privilèges à plusieurs utilisateurs. Oracle9i Database Administration I 17-4 . Disponibilité sélective des privilèges Vous pouvez activer et désactiver les rôles pour activer et désactiver temporairement les privilèges. tous les utilisateurs auxquels ce rôle a été accordé bénéficient automatiquement et immédiatement des nouveaux privilèges.Avantages des rôles • • • • Gestion simplifiée des privilèges Gestion dynamique des privilèges Disponibilité sélective des privilèges Octroi possible via le système d'exploitation 17-4 Copyright © Oracle Corporation. L'activation d'un rôle permet également de vérifier qu'un utilisateur dispose de ce rôle. Gestion dynamique des privilèges En cas de modification des privilèges associés à un rôle. vous pouvez accorder les privilèges à un rôle et associer ce rôle à chaque utilisateur. 2001. Avantages des rôles Gestion simplifiée des privilèges Utilisez des rôles pour simplifier la gestion des privilèges. Tous droits réservés. Utilisez la commande suivante pour créer un rôle : CREATE ROLE role [NOT IDENTIFIED | IDENTIFIED {BY password | EXTERNALLY | GLOBALLY | USING package}] Où : role : correspond au nom du rôle. Créer des rôles Si vous disposez du privilège système CREATE ROLE. vous pouvez créer des rôles à l'aide de l'instruction CREATE ROLE. GLOBALLY : indique que l'utilisateur doit être autorisé par le service de répertoire d'entreprise à utiliser le rôle pour l'activer à l'aide de l'instruction SET ROLE ou à la connexion. NOT IDENTIFIED : indique qu'aucune vérification n'est nécessaire lorsque le rôle est activé. IDENTIFIED EXTERNALLY ou BY password. 17-5 Copyright © Oracle Corporation. IDENTIFIED : indique qu'une vérification est nécessaire lorsque le rôle est activé. • Identifié par mot de passe : CREATE ROLE hr_clerk IDENTIFIED BY bonus. Lorsque vous créez un rôle défini comme NOT IDENTIFIED. qui ne peut être activé que par des applications utilisant un package autorisé. USING package : crée un rôle d'application. • Identifié de manière externe : CREATE ROLE hr_manager IDENTIFIED EXTERNALLY. Oracle l'accorde avec l'option ADMIN.Créer des rôles Rôles avec l'option ADMIN : • Non identifié : CREATE ROLE oe_clerk. BY password : fournit le mot de passe que l'utilisateur doit indiquer pour activer le rôle. Oracle9i Database Administration I 17-5 . 2001. EXTERNALLY : indique que l'utilisateur doit avoir reçu une autorisation d'un service externe (tel que le système d'exploitation ou un service tiers) pour activer le rôle. Sélectionnez Databases > Security > Roles.Créer des rôles Utiliser Oracle Enterprise Manager pour créer un rôle A partir de la console OEM. procédez comme suit : 1. Sélectionnez Create dans le menu accessible par le bouton droit de la souris. 6. 2. 5. Entrez les informations nécessaires à la création d'un rôle. Oracle9i Database Administration I 17-6 . Cliquez sur Create. Les rôles EXP_FULL_DATABASE et IMP_FULL_DATABASE sont fournis pour faciliter l'utilisation des utilitaires Import et Export. mais il est principalement conservé pour assurer la compatibilité avec la version 8. EXECUTE_CATALOG_ROLE et SELECT_CATALOG_ROLE permettent d'accéder aux vues et aux packages du dictionnaire de données. Sur la plupart des systèmes d'exploitation. RESOURCE et DBA sont fournis pour de assurer une compatibilité descendante avec les versions antérieures du serveur Oracle. Oracle9i Database Administration I 17-7 . DBA EXP_FULL_DATABASE IMP_FULL_DATABASE DELETE_CATALOG_ROLE EXECUTE_CATALOG_ROLE Description Fournis pour garantir une compatibilité descendante Privilèges d'export de la base de données Privilèges d'import de la base de données Privilèges DELETE sur les tables du dictionnaire de données Privilège EXECUTE sur les packages du dictionnaire de données Privilège SELECT sur les tables du dictionnaire de données SELECT_CATALOG_ROLE 17-7 Copyright © Oracle Corporation. Rôles prédéfinis Les rôles présentés dans le tableau sont automatiquement définis pour les bases de données Oracle à l'exécution des scripts de création de base de données. Les rôles CONNECT. Ils sont accordés aux utilisateurs qui ne disposent pas du rôle DBA.Rôles prédéfinis Rôles CONNECT. Autres rôles spéciaux Le serveur Oracle crée également d'autres rôles qui vous permettent d'administrer la base de données. AQ_USER_ROLE est obsolète. Par exemple. AQ_ADMINISTRATOR_ROLE permet d'administrer Advanced Queuing. mais qui doivent accéder aux vues et aux tables du dictionnaire de données.0. D'autres rôles sont définis dans les scripts SQL fournis avec la base de données. Leur nom peut varier selon le système d'exploitation utilisé. Les rôles DELETE_CATALOG_ROLE. il s'agit des rôles OSOPER et OSDBA. Tous droits réservés. 2001. RESOURCE. Utilisez la commande suivante pour modifier un rôle : ALTER ROLE role {NOT IDENTIFIED | IDENTIFIED {BY password |USING package| EXTERNALLY | GLOBALLY }}. 2001. 17-8 Copyright © Oracle Corporation. Modifier des rôles Vous ne pouvez modifier un rôle que pour changer sa méthode d'authentification.Modifier des rôles • Utilisez ALTER ROLE pour modifier la méthode d'authentification. EXTERNALLY : indique que l'utilisateur doit avoir reçu une autorisation d'un service externe (tel que le système d'exploitation ou un service tiers) pour activer le rôle. Tous droits réservés. ALTER ROLE oe_clerk IDENTIFIED BY order. ALTER ROLE hr_manager NOT IDENTIFIED. NOT IDENTIFIED : indique qu'aucune vérification n'est nécessaire lorsque le rôle est activé. Où : role : correspond au nom du rôle. IDENTIFIED : indique qu'une vérification est nécessaire lorsque le rôle est activé. GLOBALLY : indique que l'utilisateur doit être autorisé par le service de répertoire d'entreprise à utiliser le rôle pour l'activer à l'aide de l'instruction SET ROLE ou à la connexion. Pour cela. ALTER ROLE hr_clerk IDENTIFIED EXTERNALLY. vous devez disposer du rôle approprié avec l'option ADMIN ou du privilège système ALTER ANY ROLE. BY password : fournit le mot de passe permettant d'activer le rôle. Oracle9i Database Administration I 17-8 . • Cette commande requiert l'option ADMIN ou le privilège ALTER ANY ROLE. Sélectionnez Databases > Security > Roles. Oracle9i Database Administration I 17-9 . 2. Cliquez sur OK. Apportez les modifications nécessaires.Modifier des rôles (suite) Utiliser Oracle Enterprise Manager pour modifier un rôle A partir de la console OEM. procédez comme suit : 1. 3. 5. 4. Sélectionnez View/Edit Details dans le menu accessible par le bouton droit de la souris. Sélectionnez le rôle à modifier. Accorder des rôles Pour accorder un rôle... Accorder des rôles Pour accorder un rôle à un utilisateur. utilisez la commande GRANT : GRANT oe_clerk TO scott. {user|role|PUBLIC} ]. role ]. TO {user|role|PUBLIC} [. utilisez la même commande que pour accorder un privilège système : GRANT role [. GRANT hr_manager TO scott WITH ADMIN OPTION. 17-10 Copyright © Oracle Corporation. [WITH ADMIN OPTION] Où : role : correspond à un ensemble de rôles à accorder.. Tous droits réservés. PUBLIC : accorde le rôle à tous les utilisateurs. le modifier ou le supprimer. GRANT hr_clerk TO hr_manager. 2001. WITH ADMIN OPTION : permet au bénéficiaire d'accorder le rôle à d'autres utilisateurs ou rôles. Si vous accordez un rôle avec cette option. Oracle9i Database Administration I 17-10 . le bénéficiaire peut l'accorder à d'autres utilisateurs ou le révoquer.. Oracle9i Database Administration I 17-11 .Accorder des rôles (suite) L'utilisateur qui crée un rôle le reçoit de façon implicite avec l'option ADMIN OPTION. Un utilisateur qui n'a pas reçu de rôle avec cette option doit disposer du privilège système GRANT ANY ROLE pour accorder des rôles aux autres utilisateurs ou révoquer des rôles accordés. Remarque : Le paramètre d'initialisation MAX_ENABLED_ROLES définit le nombre maximum de rôles de base de données que les utilisateurs peuvent activer. Oracle9i Database Administration I 17-12 . Cliquez sur la flèche vers le bas pour faire passer l'utilisateur dans la fenêtre Users that have the role. 3. 5. Sélectionnez Databases > Security > Roles. Sélectionnez Grantees dans le menu accessible par le bouton droit de la souris. 6. Sélectionnez le bénéficiaire du rôle dans la page Users. 4. 2.Accorder des rôles (suite) Utiliser Oracle Enterprise Manager pour accorder un rôle 1. Sélectionnez le rôle à accorder. Cliquez sur OK. role]. oe_clerk. • Un utilisateur peut se voir accorder un rôle par défaut. ALTER USER scott DEFAULT ROLE ALL EXCEPT hr_clerk. • Vous pouvez limiter le nombre de rôles par défaut d'un utilisateur. ALTER USER scott DEFAULT ROLE NONE.Etablir des rôles par défaut • Un utilisateur peut se voir accorder un grand nombre de rôles.. 17-13 Copyright © Oracle Corporation. ALTER USER scott DEFAULT ROLE hr_clerk. La clause DEFAULT ROLE s'applique uniquement aux rôles qui ont été accordés directement à l'utilisateur via une instruction GRANT.. ALTER USER scott DEFAULT ROLE ALL. tous les rôles d'un utilisateur sont activés à la connexion sans indication de mot de passe. 2001. • les rôles gérés par un service externe (le système d'exploitation. Oracle9i Database Administration I 17-13 . Elle ne permet pas d'activer : • les rôles qui n'ont pas été accordés à l'utilisateur. Un rôle par défaut est un sousensemble de ces rôles activé automatiquement lorsque l'utilisateur se connecte. par exemple). Par défaut.. • les rôles qui ont été accordés par l'intermédiaire d'autres rôles. Rôles par défaut Un utilisateur peut disposer d'un grand nombre de rôles. | ALL [EXCEPT role [. Utilisez la commande suivante pour accorder des rôles par défaut à un utilisateur : ALTER USER user DEFAULT ROLE {role [. La commande ALTER USER permet de limiter les rôles par défaut d'un utilisateur. role : correspond au rôle par défaut de l'utilisateur. ] | NONE} Où : user : correspond au nom de l'utilisateur qui reçoit les rôles. Tous droits réservés.role].. l'utilisateur ne dispose que des privilèges qui lui ont été accordés directement).Rôles par défaut (suite) ALL : transforme tous les rôles accordés à l'utilisateur en rôles par défaut. NONE : ne convertit aucun des rôles accordés à l'utilisateur en rôle par défaut (lors de la connexion. à l'exception de ceux figurant dans la clause EXCEPT (valeur par défaut). vous ne pouvez pas définir de rôles par défaut à l'aide de la commande CREATE USER. Oracle9i Database Administration I 17-14 . EXCEPT : indique que les rôles qui suivent ne doivent pas être inclus dans les rôles par défaut. Etant donné que les rôles doivent être accordés pour pouvoir être définis comme rôles par défaut. Tous droits réservés.employees. Seules les applications utilisant un package PL/SQL autorisé peuvent activer un rôle d'application. Oracle9i Database Administration I 17-15 . admin_role est un rôle d'application qui ne peut être activé que par les modules définis dans le package PL/SQL hr. Dans l'exemple.Rôles d'application • Seuls les packages PL/SQL autorisés peuvent activer des rôles d'application • La clause de package USING permet de créer un rôle d'application CREATE ROLE admin_role IDENTIFIED USING hr. SQL> CREATE ROLE admin_role IDENTIFIED USING hr. Ils peuvent en effet créer un rôle d'application et désigner le package PL/SQL autorisé à l'activer. Les développeurs d'applications n'ont pas besoin d'intégrer des mots de passe aux applications pour sécuriser un rôle. 2001. Rôles d'application La clause de package USING de l'instruction CREATE ROLE crée un rôle d'application. 17-15 Copyright © Oracle Corporation.employee.employee. Utilisez la commande ALTER USER. Oracle9i Database Administration I 17-16 .. Activer et désactiver les rôles Activez ou désactivez les rôles pour activer ou désactiver temporairement les privilèges associés.DEFAULT ROLE pour indiquer les rôles qui seront activés à la connexion de l'utilisateur. Celui-ci doit être inclus dans la commande SET ROLE. ils sont activés à la connexion. l'utilisateur ne peut pas utiliser les privilèges associés s'ils ne lui ont pas été accordés directement ou s'ils n'ont pas été accordés à un autre rôle activé pour cet utilisateur. A la session suivante.Activer et désactiver les rôles • Désactivez un rôle accordé à un utilisateur pour le révoquer temporairement • Activez un rôle pour l'accorder temporairement • La commande SET ROLE permet d'activer et de désactiver les rôles • Les rôles par défaut d'un utilisateur sont activés à la connexion • Un mot de passe peut être requis pour activer un rôle 17-16 Copyright © Oracle Corporation. 2001. les rôles actifs de l'utilisateur sont remplacés par les rôles par défaut. Les rôles par défaut accordés à un utilisateur ne nécessitent pas de mot de passe . l'utilisateur peut utiliser les privilèges associés. comme les rôles sans mot de passe.. Tous les autres rôles seront alors désactivés. Un rôle ne peut être activé que s'il a été accordé à l'utilisateur. Les rôles ne sont activés que pour une session. Lorsque le rôle est désactivé. Tous droits réservés. Un mot de passe peut être nécessaire pour activer un rôle. Vous pouvez activer les rôles à partir de n'importe quel outil ou programme autorisant les commandes PL/SQL à l'exception des procédures stockées. Lorsqu'un rôle est activé. Définir les rôles à activer La commande SET ROLE et la procédure DBMS_SESSION.SET_ROLE permettent d'activer tous les rôles inclus dans la commande et de désactiver tous les autres. des procédures Oracle Forms). mais pas dans des procédures stockées. l'erreur suivante se produit à l'exécution : ORA-06565: cannot execute SET ROLE from within stored procedure Oracle9i Database Administration I 17-17 . vous pouvez activer et désactiver des rôles dans des blocs anonymes et des procédures d'application (par exemple. Si une procédure stockée contient la commande SET ROLE. car cette action peut modifier le domaine de sécurité (ensemble de privilèges) qui a permis d'appeler la procédure. dans les instructions PL/SQL.Activer et désactiver les rôles (suite) Restrictions Vous ne pouvez pas activer un rôle à partir d'une procédure stockée. Ainsi. Activer et désactiver les rôles SET ROLE hr_clerk. | ALL [ EXCEPT role [. ALL : active tous les rôles accordés à l'utilisateur en cours. 17-18 Copyright © Oracle Corporation.] | NONE } Où : role : correspond au nom du rôle. SET ROLE oe_clerk IDENTIFIED BY order.. EXCEPT role : n'active pas les rôles indiqués. L'option ALL sans la clause EXCEPT ne fonctionne que lorsque les rôles activés ne nécessitent pas de mot de passe. IDENTIFIED BY password : fournit le mot de passe permettant d'activer le rôle. SET ROLE {role [ IDENTIFIED BY password ] [. Oracle9i Database Administration I 17-18 . role [ IDENTIFIED BY password ]].. Activer et désactiver les rôles La commande SET ROLE désactive tous les autres rôles accordés à l'utilisateur. à l'exception de ceux figurant dans la clause EXCEPT (vous ne pouvez pas utiliser cette option pour activer des rôles nécessitant des mots de passe). role ] . 2001. SET ROLE ALL EXCEPT oe_clerk... Tous droits réservés. NONE : désactive tous les rôles de la session en cours (seuls les privilèges accordés directement à l'utilisateur sont actifs). utilisez la syntaxe suivante : REVOKE oe_clerk FROM scott. REVOKE role [. 2001. {user|role|PUBLIC} ] où : role : correspond au rôle à révoquer ou au rôle à partir duquel des rôles doivent être révoqués. Oracle9i Database Administration I 17-19 . Tout utilisateur possédant un rôle avec l'option ADMIN peut retirer ce rôle à un autre utilisateur ou rôle de la base de données. 17-19 Copyright © Oracle Corporation. PUBLIC : révoque le privilège ou le rôle accordé à tous les utilisateurs. Révoquer des rôles accordés à des utilisateurs L'instruction SQL REVOKE permet de révoquer un rôle accordé à un utilisateur. Tous droits réservés. les utilisateurs disposant du privilège GRANT ANY ROLE peuvent révoquer n'importe quel rôle. • Pour révoquer un rôle. role ] FROM {user|role|PUBLIC} [. REVOKE hr_manager FROM PUBLIC. user : définit l'utilisateur dont les privilèges système ou les rôles doivent être révoqués. Par ailleurs.Révoquer des rôles accordés à des utilisateurs • La révocation d'un rôle accordé à un utilisateur requiert l'option ADMIN OPTION ou le privilège GRANT ANY ROLE. Oracle9i Database Administration I 17-20 . Sélectionnez l'utilisateur dont un rôle doit être révoqué. 5. Sélectionnez le rôle à révoquer. 3.Révoquer des rôles accordés à des utilisateurs Utiliser Oracle Enterprise Manager pour révoquer un rôle accordé à un utilisateur A partir de la console OEM. 4. procédez comme suit : 1. Sélectionnez Revoke dans le menu accessible par le bouton droit de la souris. 2. Sélectionnez Yes pour confirmer l'opération. Sélectionnez Databases > Security > Users. • Pour supprimer un rôle. Supprimer des rôles Pour supprimer un rôle de la base de données. 17-21 Copyright © Oracle Corporation. Vous pouvez supprimer le rôle s'il vous a été accordé avec l'option ADMIN OPTION ou si vous disposez du privilège système DROP ANY ROLE. le serveur Oracle le révoque pour tous les utilisateurs et tous les rôles auxquels il était accordé et le supprime de la base de données. – il est supprimé de la base de données. Tous droits réservés. utilisez la commande suivante : DROP ROLE role Lorsque vous supprimez un rôle.Supprimer des rôles • Lorsque vous supprimez un rôle : – il est retiré à tous les utilisateurs et rôles auxquels il était accordé. 2001. • La suppression d'un rôle requiert l'option ADMIN OPTION ou le privilège DROP ANY ROLE. Oracle9i Database Administration I 17-21 . utilisez la syntaxe suivante : DROP ROLE hr_manager. Sélectionnez Remove dans le menu accessible par le bouton droit de la souris. 3. Sélectionnez Databases > Security > Roles. 2.Supprimer des rôles (suite) Utiliser Oracle Enterprise Manager pour supprimer un rôle A partir de la console OEM. 4. Sélectionnez le rôle à supprimer. Oracle9i Database Administration I 17-22 . Sélectionnez Yes pour confirmer l'opération. procédez comme suit : 1. 4. Si une modification de l'application implique l'octroi de nouveaux privilèges pour exécuter la tâche Payroll. Tous droits réservés. Tous les utilisateurs qui exécutent cette tâche reçoivent les nouveaux privilèges. tel que PAY_CLERK. 2001. Le nom du rôle d'application correspond à une tâche de l'application. telle que PAYROLL. L'exemple de la diapositive utilise des tâches d'application et des intitulés de poste comme noms de rôle. 5. Pour créer et accorder des rôles à des utilisateurs. 2.Instructions relatives à la création de rôles Utilisateurs Rôles utilisateur Rôles d'application HR_CLERK HR_MANAGER PAY_CLERK BENEFITS PAYROLL Privilèges d'application Privilèges Benefits Privilèges Payroll 17-23 Copyright © Oracle Corporation. Le nom du rôle utilisateur correspond à un intitulé de poste. procédez comme suit : 1. Accordez des rôles d'application aux rôles de l'utilisateur. Instructions relatives à la création de rôles Etant donné qu'un rôle contient les privilèges nécessaires à l'exécution d'une tâche. 3. Créez un rôle pour chaque type d'utilisateur. Accordez les rôles de l'utilisateur à d'autres utilisateurs. Créez un rôle pour chaque tâche d'application. le nom du rôle correspond généralement à une tâche d'application ou à un intitulé de poste. il suffit à l'administrateur de base de données d'accorder les nouveaux privilèges au rôle d'application PAYROLL. Accordez au rôle d'application les privilèges nécessaires à l'exécution de la tâche. Oracle9i Database Administration I 17-23 . Les mots de passe ne permettent d'activer un rôle que par l'intermédiaire d'une application. car ce rôle peut servir à émettre des chèques. qui n'est pas un rôle par défaut. Par exemple. • Lorsque l'utilisateur se connecte à l'application d'établissement des bulletins de salaire. il active le rôle PAY_CLERK en fournissant le mot de passe approprié. Le mot de passe étant codé dans le programme. • Le rôle PAY_CLERK_RO (RO signifiant Read Only. UPDATE.Règles d'utilisation des mots de passe et des rôles par défaut Protection par mot de passe (pas la valeur par défaut) Rôle par défaut PAY_CLERK PAY_CLERK_RO Privilèges INSERT. car il ne connaît pas le mot de passe du rôle PAY_CLERK. DELETE et SELECT Privilèges SELECT 17-24 Copyright © Oracle Corporation. • Le rôle PAY_CLERK a reçu tous les privilèges nécessaires à l'exécution de la fonction d'établissement des bulletins de salaire. Règles d'utilisation des mots de passe et des rôles par défaut Les mots de passe permettent de renforcer la sécurité lorsqu'un rôle est activé. 2001. Oracle9i Database Administration I 17-24 . Cette méthode est décrite dans l'exemple de la diapositive. • L'administrateur de base de données a accordé les rôles PAY_CLERK et PAY_CLERK_RO à l'utilisateur. aucun message ne demande à l'utilisateur de l'entrer. • L'utilisateur peut se connecter à SQL*Plus pour effectuer des interrogations. Tous droits réservés. mais il ne peut pas modifier les données. lecture seule) dispose uniquement de privilèges SELECT sur les tables nécessaires à l'exécution de la fonction d'établissement des bulletins de salaire. l'application peut demander à l'utilisateur d'entrer un mot de passe pour activer le rôle PAY_CLERK. Tous droits réservés. interrogez les vues suivantes du dictionnaire de données : • DBA_ROLES : Tous les rôles qui existent dans la base de données • DBA_ROLE_PRIVS : Rôles accordés à des utilisateurs et à des rôles • ROLE_ROLE_PRIVS : Rôles accordés à des rôles • DBA_SYS_PRIVS : Privilèges système accordés à des utilisateurs et à des rôles • ROLE_SYS_PRIVS : Privilèges système accordés à des rôles • ROLE_TAB_PRIVS : Privilèges objet accordés à des rôles • SESSION_ROLES : Rôles activés par l'utilisateur 17-25 Copyright © Oracle Corporation. 2001. password_required 2 FROM dba_roles. Rechercher les informations sur les rôles La plupart des vues du dictionnaire de données qui contiennent des informations sur les privilèges des utilisateurs indiquent également si le rôle requiert un mot de passe.Obtenir des informations sur les rôles Pour obtenir des informations sur les rôles. SQL> SELECT role. ROLE -----------------------------CONNECT RESOURCE DBA SELECT_CATALOG_ROLE EXECUTE_CATALOG_ROLE DELETE_CATALOG_ROLE IMP_FULL_DATABASE EXP_FULL_DATABASE SALES_CLERK HR_CLERK PASSWORD ----------NO NO NO NO NO NO NO NO YES EXTERNAL Oracle9i Database Administration I 17-25 . Synthèse Ce chapitre vous a permis d'apprendre à : • créer des rôles • accorder des privilèges à des rôles • accorder des rôles à des utilisateurs ou à des rôles • établir des rôles par défaut 17-26 Copyright © Oracle Corporation. Oracle9i Database Administration I 17-26 . 2001. Tous droits réservés. Tous droits réservés. 2001. vous allez : • répertorier les privilèges système d'un rôle • créer. Oracle9i Database Administration I 17-27 . Présentation de l'exercice 17 Remarque : Cet exercice peut être réalisé avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet. affecter et supprimer des rôles • créer des rôles d'application 17-27 Copyright © Oracle Corporation.Présentation de l'exercice 17 Dans cet exercice. 2 Créez le rôle DEV qui permettra à un utilisateur de créer une table ou une vue et de sélectionner des données dans la table CUSTOMERS1 d'Emi. Connectezvous sous l'ID utilisateur Bob et répertoriez les segments d'annulation utilisés. 4 Bob doit vérifier les segments d'annulation actuellement utilisés par l'instance. tentez de créer la vue CUST_VIEW dans la table CUSTOMERS d'Emi. b Donnez à Bob la possibilité de lire toutes les informations du dictionnaire de données.Exercice 17 : gérer les rôles 1 Examinez la vue du dictionnaire de données et répertoriez les privilèges système du rôle RESOURCE. En tant que SYSTEM. Que se passe-t-il ? Oracle9i Database Administration I 17-28 . accordez à SYSTEM le privilège SELECT sur CUSTOMERS1. Que se passe-t-il ? 6 Sous l'ID utilisateur Emi. 3 a Affectez les rôles RESOURCE et DEV à Bob. tentez ensuite de créer la vue CUST_VIEW dans la table CUSTOMERS1 d'Emi. Indice : Utilisez SET ROLE SELECT_CATALOG_ROLE. 5 Sous l'ID utilisateur SYSTEM. en précisant que seul le rôle RESOURCE doit être automatiquement activé à la connexion. .Fonction d'audit Copyright © Oracle Corporation. 2001. Tous droits réservés. vous pourrez : • définir les catégories d'audit • activer l'audit d'une instance • définir les options d'audit 18-2 Copyright © Oracle Corporation. 2001.Objectifs A la fin de ce chapitre. Tous droits réservés. Oracle9i Database Administration I 18-2 . – rassembler des informations sur certaines activités. le nombre d'entrées/sorties (E/S) logiques réalisées et le nombre d'utilisateurs qui se connectent simultanément aux périodes les plus chargées. Fonction d'audit Si un utilisateur non autorisé supprime des données. 2001. Oracle9i Database Administration I 18-3 .Fonction d'audit • La fonction d'audit permet de surveiller certaines actions des utilisateurs sur la base de données. L'administrateur peut rassembler des statistiques sur les tables mises à jour. Elle est utilisée pour : – examiner les activités suspectes réalisées dans la base de données. • L'audit peut être effectué par session ou par accès. 18-3 Copyright © Oracle Corporation. Tous droits réservés. l'administrateur de base de données peut effectuer un audit de toutes les connexions à la base et de toutes les suppressions (qu'elles aient abouti ou non) effectuées sur l'ensemble des tables de la base. Dans ce cas. • Effectuer l'audit des succès ou des échecs. Instructions relatives à l'audit Limitez l'audit en identifiant vos besoins. 2001.Instructions relatives à l'audit • Définissez les éléments à auditer : – utilisateurs. instructions ou objets – exécution d'instructions – exécutions d'instruction ayant abouti et/ou échoué • Gérez votre trace d'audit : – surveillez l'augmentation de son volume – protégez-la des accès non autorisés 18-4 Copyright © Oracle Corporation. Remarque : Les enregistrements d'audit peuvent être écrits dans SYS. les procédures suivantes permettront de limiter la génération d'audits • Définir les utilisateurs à inclure dans un audit.AUD$ ou dans la trace d'audit du système d'exploitation. dont l'utilisation dépend du système employé. • Effectuer l'audit par session et non par accès. Tous droits réservés. et les instructions analysées ne s'exécutent pas correctement. Si vous devez utiliser l'audit d'instruction ou de privilège. Vous devez libérer de l'espace dans la trace d'audit pour que ces instructions puissent être exécutées. vous ne pouvez plus y écrire d'enregistrements d'audit. Surveiller l'augmentation du volume de la trace d'audit Si la trace d'audit est saturée. L'audit d'objet doit être utilisé lorsque cela est possible pour réduire le nombre d'entrées générées. des erreurs sont renvoyées à tous les utilisateurs qui exécutent des instructions analysées. puis définissez les options d'audit minimales correspondant à ces besoins. mais pas des deux. Oracle9i Database Administration I 18-4 . • gérez soigneusement l'audit d'objet de schéma (les utilisateurs peuvent activer l'audit des objets qui leur appartiennent). l'administrateur de base de données doit être le seul à disposer du rôle DELETE_CATALOG_ROLE. • accordez le privilège AUDIT ANY avec précaution. procédez comme suit : • n'activez l'audit qu'en cas de nécessité. car les lignes sont fournies uniquement à titre indicatif et ne sont pas nécessaires au fonctionnement de l'instance Oracle. Bien que vous ne deviez pas supprimer cette table.Instructions relatives à l'audit (suite) Surveiller l'augmentation du volume de la trace d'audit (suite) Pour éviter que le volume de la trace d'audit n'augmente trop rapidement. Protéger la trace d'audit Veillez à protéger la trace d'audit afin d'empêcher l'ajout. • Activez l'audit sur l'instance. Oracle9i Database Administration I 18-5 . Exécutez la commande suivante : SQL> AUDIT delete ON sys. Supprimez régulièrement les enregistrements d'audit de la trace d'audit à l'aide de la commande DELETE ou TRUNCATE. Etant donné que la taille de cette table varie. Les fichiers d'audit se trouvent dans le répertoire $ORACLE_HOME/rdbms/audit. vous pouvez l'effacer ou la vider. il est préférable de la stocker hors du tablespace SYSTEM. la modification ou la suppression d'informations d'audit. • Entrez la commande suivante : SQL> ALTER TABLE aud$ MOVE TABLESPACE AUDIT_TAB. • sélectionnez les options d'audit à bon escient. Extraire la trace d'audit du tablespace SYSTEM La taille de la table AUD$ peut augmenter de manière illimitée au fur et à mesure que des enregistrements sont ajoutés à la trace d'audit de la base de données. Afin d'empêcher toute suppression non autorisée dans la trace d'audit. car il permet également à un utilisateur d'activer l'audit. Pour transférer la table AUD$ vers le tablespace AUDIT_TAB : • Vérifiez que l'audit n'est pas activé.aud$ BY ACCESS. • Entrez la commande suivante : SQL> CREATE INDEX i_aud1 ON aud$(sessionid. ses$tid) 2 TABLESPACE AUDIT_IDX. Oracle9i Database Administration I 18-6 . la date et l'heure et si l'audit de la base de données était activé ou non. • Privilèges de l'administrateur : l'enregistrement d'audit indique le nom de l'utilisateur du système d'exploitation qui s'est connecté à Oracle avec des privilèges d'administrateur. l'identificateur du terminal. l'identificateur du terminal. si un utilisateur non autorisé supprime des données dans des tables. Tous droits réservés. Oracle enregistre toujours certaines opérations effectuées sur la base dans la trace d'audit du système d'exploitation : • Démarrage de l'instance : l'enregistrement d'audit indique le nom de l'utilisateur du système d'exploitation qui a démarré l'instance. • Arrêt de l'instance : l'enregistrement d'audit indique le nom de l'utilisateur du système d'exploitation qui a arrêté l'instance. 2001. ainsi que la date et l'heure. Utilisez la trace d'audit pour identifier les activités suspectes. l'administrateur de base de données peut décider d'auditer toutes les connexions à la base de données en conjonction avec les suppressions de lignes ayant réussi ou échoué dans les tables de la base. Les informations sur les actions sont enregistrées dans la trace d'audit. Audit d'une base de données L'audit d'une base de données consiste à surveiller et à enregistrer certaines actions exécutées sur la base de données par les utilisateurs.Catégories d'audit • Audit par défaut – Arrêt et démarrage de l'instance – Privilèges de l'administrateur • Audit d'une base de données – Activé par l'administrateur de base de données – Ne peut pas enregistrer de valeurs de colonnes • Audit d'une application ou basé sur les données – Implémenté via le code – Peut enregistrer des valeurs de colonnes – Permet de suivre les modifications apportées à des table 18-6 Copyright © Oracle Corporation. Catégories d'audit Que l'audit de la base de données soit activé ou non. Par exemple. L'audit d'application peut être effectué via du code client. utilisez l'audit d'application. Si vous souhaitez analyser les modifications de colonnes d'une base de données et enregistrer chaque modification de valeur dans les colonnes. l'administrateur de base de données peut collecter des statistiques sur les tables mises à jour. Par exemple. Audit basé sur les données L'audit d'une base de données ne permet pas d'enregistrer les valeurs des colonnes. Oracle9i Database Administration I 18-7 . des procédures stockées ou des déclencheurs de base de données. le nombre d'entrées/sorties logiques et le nombre d'utilisateurs connectés simultanément aux heures les plus chargées.Catégories d'audit (suite) Audit d'une base de données (suite) Vous pouvez également utiliser un audit pour surveiller certaines activités dans la base de données et collecter des informations sur ces activités. FALSE ou NONE : désactive l'audit. AUDIT_TRAIL = value où value peut correspondre à : TRUE ou DB : active l'audit et envoie tous les enregistrements d'audit vers la trace d'audit de la base de données (SYS. Ce paramètre indique si la trace d'audit est écrite dans une table de la base de données ou dans la trace d'audit du système d'exploitation. Audit d'une base de données Activer et désactiver l'audit de base de données Une fois que vous avez sélectionné les éléments à analyser. Tous droits réservés. Remarque : Il n'existe pas de valeur par défaut.Audit d'une base de données Activer l'audit Exécuter la Commande d'une base de Fichier de données paramètres DBA Afficher les informations d'audit Définir les options d'audit Processus serveur Générer la trace d'audit Utilisateur Options d'audit Base de données Trace d'audit de l'OS Trace d'audit 18-8 Copyright © Oracle Corporation. définissez le paramètre d'initialisation AUDIT_TRAIL pour activer l'audit de l'instance.AUD$). Oracle9i Database Administration I 18-8 . 2001. OS : active l'audit et envoie tous les enregistrements d'audit vers la trace du système d'exploitation (si ce dernier le permet). vous pouvez la désactiver à l'aide de la commande NOAUDIT. Définir les options d'audit Ensuite. Bien que vous puissiez utiliser les instructions SQL AUDIT et NOAUDIT à tout moment. Etant donné que les vues et les procédures peuvent faire référence à d'autres objets de base de données. Générer des données d'audit La génération et l'insertion d'un enregistrement de trace d'audit sont indépendantes d'une transaction utilisateur. Vous pouvez également indiquer si un enregistrement d'audit doit être généré pour chaque occurrence ou une seule fois par session. les enregistrements ne sont écrits dans la trace d'audit que si l'administrateur a défini le paramètre AUDIT_TRAIL du fichier d'initialisation. Exécution d'instructions Lorsque les utilisateurs exécutent des instructions PL/SQL et SQL. Cette commande permet de préciser les commandes. sélectionnez les vues de la trace d'audit du dictionnaire de données ou utilisez un utilitaire du système d'exploitation pour afficher la trace d'audit du système d'exploitation. Ainsi.Audit d'une base de données (suite) Les enregistrements d'audit ne sont pas écrits dans la trace d'audit si l'administrateur n'a pas affecté la valeur DB ou OS au paramètre AUDIT_TRAIL. les utilisateurs. plusieurs enregistrements d'audit peuvent être générés à la suite de l'exécution d'une seule instruction. Afficher les informations d'audit Pour consulter les informations générées pendant l'audit. l'enregistrement de trace d'audit reste inchangé. Les instructions SQL au sein de programmes PL/SQL sont analysées individuellement de manière appropriée lors de l'exécution du programme. les objets ou les privilèges qui feront l'objet de l'audit. une erreur de syntaxe. Remarque : Le manuel d'installation et de configuration de votre système d'exploitation contient des informations relatives à l'écriture des enregistrements d'audit dans la trace d'audit du système d'exploitation. vous devez définir des options d'audit à l'aide de la commande AUDIT. Si une option d'audit est devenue inutile. qui se produit au cours de l'analyse. Oracle9i Database Administration I 18-9 . Dans la mesure où cet enregistrement est généré au cours de l'exécution. le processus serveur analyse les options d'audit pour déterminer si l'instruction en cours d'exécution doit générer un enregistrement d'audit. si ce type de transaction est annulé. empêchera la création d'un enregistrement de trace d'audit. Ces informations permettent d'identifier les activités suspectes dans la base de données et de surveiller son activité. Audit d'objet de schéma : audit sélectif d'instructions spécifiques relatives à un objet de schéma donné. • Audit de privilège AUDIT create any trigger.orders. l'option AUDIT TABLE analyse plusieurs instructions LDD. Ce type d'audit s'applique toujours à tous les utilisateurs de la base de données. 2001. quelle que soit la table sur laquelle elles sont exécutées. AUDIT SELECT ON HR.EMPLOYEES. par exemple. Par exemple. Vous pouvez configurer un audit d'instruction pour analyser certains utilisateurs ou tous les utilisateurs de la base de données. Vous pouvez configurer ce type d'option pour analyser un utilisateur donné ou tous les utilisateurs de la base de données.Options d'audit • Audit d'instruction AUDIT TABLE. par exemple. AUDIT CREATE ANY TRIGGER. Options d'audit Audit d'instruction : audit sélectif d'instructions SQL et non des objets de schéma spécifiques qui s'y rapportent. 18-10 Copyright © Oracle Corporation. Audit de privilège : audit sélectif de privilèges système dans le but de réaliser les actions correspondantes. Tous droits réservés. Vous pouvez choisir n'importe quelle option d'audit et préciser les conditions suivantes : • WHENEVER SUCCESSFUL / WHENEVER NOT SUCCESSFUL • BY SESSION / BY ACCESS Oracle9i Database Administration I 18-10 . • Audit d'objet de schéma AUDIT SELECT ON emi. A l'aide de ce package. Oracle9i Database Administration I 18-11 .) et d'autres attributs sont intégrés à la trace d'audit Désactiver un audit Utilisez l'instruction NOAUDIT pour arrêter un audit lancé par la commande AUDIT. etc. l'administrateur de base de données crée une règle d'audit sur la table cible. si une instruction AUDIT (instruction A) active un audit sur un utilisateur et qu'une seconde instruction (B) active un audit sur tous les utilisateurs. variable attachée (bind variable).Options d'audit Audit détaillé • Permet la surveillance de l'accès aux données en fonction du contenu • S'implémente à l'aide du package DBMS_FGA 18-11 Copyright © Oracle Corporation. Si l'une des lignes renvoyées par un bloc d'interrogations correspond à la condition d'audit. Remarque : L'instruction NOAUDIT inverse l'effet d'une instruction AUDIT exécutée précédemment. horodatage. mais n'affecte pas l'instruction A et continue d'analyser l'utilisateur concerné par l'instruction A. nom de règle. Par conséquent. texte SQL. Options d'audit Audit détaillé : permet de surveiller l'accès aux données en fonction du contenu. une entrée d'événement d'audit (nom utilisateur. 2001. ID de session. Tous droits réservés. Le package PL/SQL DBMS_FGA gère les règles d'audit basé sur les données. Elle doit présenter la même syntaxe que l'instruction AUDIT précédente et inverse uniquement l'effet de cette instruction. l'instruction NOAUDIT qui désactive l'audit pour tous les utilisateurs inverse l'instruction B. Obtenir des informations sur l'audit Interrogez les vues suivantes pour obtenir des informations sur l'audit : • ALL_DEF_AUDIT_OPTS • DBA_STMT_AUDIT_OPTS • DBA_PRIV_AUDIT_OPTS • DBA_OBJ_AUDIT_OPTS 18-12 Copyright © Oracle Corporation. Obtenir des informations sur l'audit Vue du dictionnaire de données -------------------ALL_DEF_AUDIT_OPTS DBA_STMT_AUDIT_OPTS DBA_PRIV_AUDIT_OPTS DBA_OBJ_AUDIT_OPTS Description ---------------------Options d'audit par défaut Options d'audit d'instruction Options d'audit de privilège Options d'audit d'objet de schéma Oracle9i Database Administration I 18-12 . 2001. Tous droits réservés. Ces vues sont créées par l'administrateur de base de données.AUD$) est une table unique figurant dans le dictionnaire de toutes les bases de données Oracle. Tous droits réservés. Obtenir des informations sur les enregistrements d'audit Répertorier les enregistrements d'audit La trace d'audit de la base de données (SYS.Obtenir des informations sur les enregistrements d'audit Interrogez les vues suivantes pour obtenir des informations sur les enregistrements d'audit : • DBA_AUDIT_TRAIL • DBA_AUDIT_EXISTS • DBA_AUDIT_OBJECT • DBA_AUDIT_SESSION • DBA_AUDIT_STATEMENT 18-13 Copyright © Oracle Corporation. Vue du dictionnaire de données -------------------DBA_AUDIT_TRAIL DBA_AUDIT_EXISTS DBA_AUDIT_OBJECT DBA_AUDIT_SESSION déconnexion DBA_AUDIT_STATEMENT Enregistrements d'audit d'instruction Description ------------------------------Toutes les entrées de la trace d'audit Enregistrements correspondants à AUDIT EXISTS/NOT EXISTS Enregistrements relatifs aux objets de schéma Toutes les entrées de connexion et de Oracle9i Database Administration I 18-13 . 2001. La diapositive présente plusieurs vues prédéfinies disponibles. Tous droits réservés. Oracle9i Database Administration I 18-14 .Synthèse Ce chapitre vous a permis d'apprendre à : • définir les besoins d'audit • activer et désactiver l'audit • identifier et utiliser les différentes options d'audit 18-14 Copyright © Oracle Corporation. 2001. 18-15 Copyright © Oracle Corporation. 2001. Tous droits réservés.Présentation de l'exercice 18 Il n'y a pas d'exercice proposé pour ce chapitre. Oracle9i Database Administration I 18-15 . Oracle9i Database Administration I 18-16 . Tous droits réservés.Charger des données dans une base Copyright © Oracle Corporation. . 2001. Tous droits réservés. 2001.Objectifs A la fin de ce chapitre. Oracle9i Database Administration I 19-2 . vous pourrez : • présenter l'utilisation d'opérations de chargement de données par chemin direct • décrire l'utilisation de SQL*Loader • réaliser les opérations de base de SQL*Loader • répertorier les règles d'utilisation de SQL*Loader et du chargement des données par chemin direct 19-2 Copyright © Oracle Corporation. 2001. Son puissant moteur d'analyse des données applique peu de contraintes sur le format des données du fichier de données. Méthodes de chargement des données Il existe plusieurs méthodes de chargement des données dans des tables d'une base de données Oracle. L'export et l'import sont présentés dans le cours Oracle9i DBA II.Méthodes de chargement des données Autres applications Base de données Oracle Export Utilitaire SQL*Loader Import Base de données Oracle Chargement des données par chemin direct 19-3 Copyright © Oracle Corporation. Cette méthode accélère les opérations d'insertion en passant outre le cache de tampons (buffer cache) de la base de données et en écrivant directement les données dans les fichiers de données. Le chargement des données par chemin direct et l'utilitaire SQL*Loader sont présentés dans ce cours. SQL*Loader L'utilitaire SQL*Loader charge les données de fichiers externes dans les tables d'une base de données Oracle. Tous droits réservés. Chargement des données par chemin direct Utilisez la méthode de chargement des données par chemin direct pour copier les données d'une table vers une autre au sein d'une même base de données. Oracle9i Database Administration I 19-3 . comme indiqué dans la commande suivante : INSERT /*+APPEND */ INTO [ schema. dans des tables non partitionnées ou dans des partitions d'une table • Avec ou sans consignation des données de journalisation 19-4 Copyright © Oracle Corporation. sub-query correspond à la sous-interrogation qui permet de sélectionner les colonnes et les lignes à insérer.. Le parallélisme de INSERT . Chargement des données par chemin direct Le chargement des données par chemin direct (en série ou en parallèle) ne peut prendre en charge que la syntaxe INSERT .. Oracle9i fournit des extensions syntaxiques qui augmentent la portée de l'instruction INSERT . Tous droits réservés.. SELECT d'une instruction INSERT... SELECT de sorte que vous pouvez insérer des lignes dans plusieurs tables dans le cadre d'une instruction LMD. ] table [ [NO]LOGGING ] sub-query. Où : schema correspond au propriétaire de la table. Le chargement des données par chemin direct peut être appelé à l'aide du conseil APPEND.Chargement des données par chemin direct Le chargement des données par chemin direct peut être réalisé de la manière suivante : • Normale (en série) ou en parallèle • Dans des tables partitionnées. SELECT est déterminé en fonction de conseils (Hints) en parallèle ou de la définition de table en parallèle. et non la syntaxe INSERT ... Oracle9i Database Administration I 19-4 . Valeurs.. 2001. table correspond au nom de la table. Si vous utilisez l'option NOLOGGING.Chargement des données par chemin direct (suite) Mode LOGGING Lorsque vous effectuez une insertion à l'aide de l'option par défaut LOGGING. Si la table contient un grand nombre de blocs dont des lignes ont été supprimées. Oracle9i Database Administration I 19-5 . Autres considérations Toutes les données chargées à l'aide de cette méthode sont chargées au-dessus du repère highwater mark. Toutefois. ce qui permet une récupération complète en cas d'incident. un nombre minimal d'informations de journalisation est généré lors de la mise à jour du dictionnaire de données. les modifications apportées aux données ne seront pas enregistrées dans le tampon de journalisation (redo log buffer). Si plusieurs modifications en ligne (online) des données de la table sont susceptibles de se produire simultanément. on peut constater une perte d'espace et un ralentissement des balayages complets de table (full table scans). Le mode NOLOGGING est utilisé si l'attribut correspondant a été défini pour la table. l'opération génère des entrées de journalisation (redo log entries). il est conseillé de définir l'attribut NOLOGGING avant de charger les données et de le réinitialiser (LOGGING) une fois le chargement des données terminé. Processus serveur Table EMPLOYEES Bloc utilisé Espace libre après la suppression 19-6 Repère high-water mark Blocs utilisés par les lignes insérées Copyright © Oracle Corporation. une table partitionnée ou une table sous-partitionnée Les données sont insérées au-delà du repère high-water mark actuel du segment de table ou de chaque segment de partition. Lors du chargement d'une table partitionnée ou sous-partitionnée. une nouvelle valeur est affectée à ce repère. SQL*Loader partitionne les lignes et gère les index (qui peuvent également être partitionnés). Un chargement de données par chemin direct d'une table partitionnée ou sous-partitionnée peut consommer une grande quantité de ressources. COMMIT. Lors de l'exécution d'une instruction. Tous droits réservés. Oracle9i Database Administration I 19-6 . Chargement des données par chemin direct en série Chargement des données par chemin direct dans une table non partitionnée. 2001. Le repère high-water mark correspond au niveau auquel les blocs n'ont jamais été formatés pour recevoir des données. rendant ainsi les données visibles aux autres utilisateurs.Chargement des données par chemin direct en série INSERT /*+ APPEND */ INTO emp NOLOGGING SELECT * FROM t_employees. Processus esclave Processus esclave Table EMPLOYEES Bloc utilisé Espace libre après la suppression 19-7 Repère high-water mark Segments temporaires Copyright © Oracle Corporation. Chargement des données par chemin direct en parallèle Vous pouvez charger des données par chemin direct en parallèle : • en utilisant le conseil PARALLEL dans l'instruction INSERT. 2001.2) */ INTO hr. comme indiqué dans l'exemple.employees NOLOGGING SELECT * FROM hr. ou • en créant la table ou en la modifiant pour définir la clause PARALLEL. INSERT /*+PARALLEL(hr. • Un objet modifié par chargement de données par chemin direct en parallèle ne peut pas être interrogé ni modifié de nouveau dans la même transaction. le serveur Oracle utilise plusieurs processus. section "Parallel Execution". les extents (ensembles de blocs contigus) de chaque segment sont intégrés à la table dans laquelle les enregistrements sont insérés. Tous droits réservés. Lorsque la transaction est validée. Oracle9i Database Administration I 19-7 . Lorsque vous effectuez des chargements de données par chemin direct en parallèle.old_employees.Chargement des données par chemin direct en parrallèle ALTER SESSION ENABLE PARALLEL DML. pour insérer les données dans la table. appelés processus esclaves "Parallel Query". Remarque : • Vous devez exécuter la commande ALTER SESSION ENABLE PARALLEL DML au début de la transaction. Pour plus d'informations sur les chargements de données par chemin direct en parallèle.employees. Des segments temporaires sont alloués pour le stockage des données insérées par chaque processus esclave. voir Oracle9i Database Reference. Oracle9i Database Administration I 19-8 . Ce serveur insère des données au-delà du repère high-water mark actuel des segments de partition qui lui sont affectés. mais pas plus d'un processus par partition.Chargement des données par chemin direct en parallèle (suite) Chargement des données par chemin direct en parallèle dans une table non partitionnée Chaque serveur d'exécution en parallèle alloue un nouveau segment temporaire et insère des données dans ce segment. Lors de l'exécution d'une instruction. le coordinateur de l'exécution en parallèle fusionne les nouveaux segments temporaires dans le segment de table principal. le repère high-water mark de chaque segment de partition est mis à jour par le coordinateur d'exécution en parallèle et prend la nouvelle valeur. Chargement des données par chemin direct en parallèle dans une table partitionnée Chaque serveur d'exécution en parallèle peut avoir une ou plusieurs partitions. Lors de l'exécution d'une instruction. rendant ainsi les données visibles aux autres utilisateurs. • Les fonctions SQL peuvent être appliquées aux données en entrée avant le stockage de la ligne dans la base de données. • Les données en entrée peuvent se présenter sous n'importe quel format : caractère. des bandes ou des canaux nommés. • Les données peuvent être chargées directement dans la table sans utiliser le cache de tampons de la base de données.SQL*Loader Fichier de contrôle du programme de chargement Fichiers de données en entrée Fichier de paramètres (facultatif) SQL*Loader Traitement du champ Acceptation Rebut Sélection de l'enregistrement Sélection Rejet Fichier des enregistrements refusés Rejet Fichier de rebut (facultatif) Serveur Oracle Insertion Fichier journal Fichiers de données de la base 19-9 Copyright © Oracle Corporation. • Des options sont disponibles pour ajouter des données aux tables ou remplacer des données existantes. tels que des disques. • Les champs en entrée peuvent être de longueur fixe ou de longueur variable. date et décimal non condensé. • Les données peuvent être chargées à partir de différents types de support. 2001. • Plusieurs enregistrements en entrée peuvent être combinés pour former un enregistrement de chargement logique. Oracle9i Database Administration I 19-9 . binaire. Par exemple. Tous droits réservés. Ses caractéristiques sont les suivantes : • SQL*Loader peut utiliser un ou plusieurs fichiers en entrée. décimal condensé. • Les données peuvent être chargées simultanément dans plusieurs tables. Caractéristiques de SQL*Loader L'utilitaire SQL*Loader charge les données des fichiers externes dans les tables d'une base de données Oracle. une valeur de clé séquentielle peut être générée et stockée dans une colonne. • Les valeurs de colonne peuvent être générées automatiquement en fonction de règles. • Fichier de rebut : créé. pour stocker tous les enregistrements qui ne répondent pas aux critères de sélection.Fichiers utilisés par SQL*Loader L'utilitaire SQL*Loader utilise les fichiers suivants : • Fichier de contrôle : définit le format d'entrée. Oracle9i Database Administration I 19-10 . les tables de sortie et les conditions facultatives permettant de ne charger qu'une partie des enregistrements de fichiers de données en entrée. si nécessaire. • Fichier de paramètres : fichier facultatif permettant de définir les paramètres de ligne de commande pour le chargement. • Fichier des enregistrements refusés : utilisé par l'utilitaire pour écrire les enregistrements rejetés lors du chargement des données (cette situation peut se produire lorsque l'utilitaire valide les enregistrements en entrée ou lorsque le serveur Oracle insère les enregistrements). • Fichiers de données en entrée : contiennent les données au format défini dans le fichier de contrôle. qui contient l'enregistrement du chargement. • Fichier journal : fichier créé par SQL*Loader. Ces paramètres peuvent être entrés dans n'importe quel ordre. Oracle9i Database Administration I 19-11 . dans certains cas. éventuellement séparés par des virgules. Si vous appelez SQL*Loader sans définir de paramètres.ctl \ > log=case1. Vous pouvez indiquer les valeurs des paramètres ou.log direct=Y case1.ctl SQL*Loader Table EMPLOYEES case1. Utiliser SQL*Loader Ligne de commande Lorsque vous appelez SQL*Loader. accepter les paramètres par défaut sans entrer de valeurs.log 19-11 Copyright © Oracle Corporation. vous pouvez définir les paramètres qui déterminent les caractéristiques de la session. 2001. un écran d'aide affiche les paramètres disponibles et leurs valeurs par défaut.Utiliser SQL*Loader $sqlldr hr/hr \ > control=case1. Tous droits réservés. Utiliser la page Data File 8. Sélectionnez Next pour commencer. Utiliser la page Schedule 11. Utiliser la page Load Method pour définir la méthode de chargement 9. Remarque : Les autres diapositives de ce chapitre traitent des informations demandées dans l'Assistant de Chargement : 6. Utiliser la page Load Method pour définir les fichiers facultatifs 10. La page Introduction de l'Assistant de Chargement s'affiche. 3. procédez comme suit : 1. Développez la table dans laquelle vous chargerez les données. 2. Sélectionnez Databases > Schema > Table. Utiliser la page Job Information 12. Utiliser la page Summary Oracle9i Database Administration I 19-12 . Utiliser la page Control File 7. 5. Sélectionnez Data Management > Load dans le menu accessible par le bouton droit de la souris. 4.Utiliser SQL*Loader (suite) Utiliser Oracle Enterprise Manager pour effectuer un chargement de données à l'aide de l'Assistant de Chargement A partir de la console OEM. ROWS et SKIP. 2001. • La manière dont SQL*Loader est configuré (gestion de mémoire. • La première section contient des informations de session. rejet d'enregistrements. Tous droits réservés. le fichier de contrôle du programme de chargement est composé de trois sections. le cas échéant.des options globales comme les paramètres BINDSIZE. les données en entrée. • La deuxième section est composée d'un ou de plusieurs blocs INTO TABLE. par exemple). • La troisième section est facultative et contient..le mode de chargement des données. etc. .Fichier de contrôle de SQL*Loader Le fichier de contrôle du programme de chargement indique à SQL*Loader : • L'emplacement des données de chargement • Le format des données • Les détails de la configuration – gestion de la mémoire – rejet de l'enregistrement – détails du traitement des chargements interrompus • La méthode de manipulation des données 19-13 Copyright © Oracle Corporation. Fichier de contrôle de SQL*Loader Le fichier de contrôle de SQL*Loader est un fichier texte qui contient les instructions LDD (Langage de définition de données). Bien que ce ne soit pas explicitement défini. • La manière dont SQL*Loader manipule les données en cours de chargement. lesquelles permettent de contrôler les aspects suivants d'une session SQL*Loader : • L'endroit où SQL*Loader trouve les données à charger. . telles que : . • Le format escompté des données. Chaque bloc contient des informations sur la table dans laquelle les données doivent être chargées (le nom et les colonnes de la table. Oracle9i Database Administration I 19-13 .des clauses INFILE qui indiquent l'emplacement des données en entrée. chargements interrompus.) au cours du chargement des données. etc. 999. vous devez utiliser l'instruction CONTINUE LOAD DATA. 3.DAT’ 4 BADFILE ’sample. empno POSITION(45) INTEGER EXTERNAL TERMINATED BY WHITESPACE.bad’ 5 DISCARDFILE ’sample. deptno POSITION(1:2) INTEGER EXTERNAL(3) NULLIF deptno=BLANKS. ename POSITION(34:41) CHAR TERMINATED BY WHITESPACE "UPPER(:ename)". mgr POSITION(28:31) INTEGER EXTERNAL TERMINATED BY WHITESPACE. sal POSITION(51) CHAR TERMINATED BY WHITESPACE "TO_NUMBER(:sal.Fichier de contrôle de SQL*Loader (suite) L'exemple ci-dessous présente un fichier de contrôle de SQL*Loader standard. 2. Ils peuvent apparaître à n'importe quelle ligne de commande du fichier. mais pas à l'intérieur des données. 1 -. job POSITION(7:14) CHAR TERMINATED BY WHITESPACE NULLIF job=BLANKS "UPPER(:job)". Oracle9i Database Administration I 19-14 .’ 9 TRAILING NULLCOLS 10 (hiredate SYSDATE.This is a sample control file 2 LOAD DATA 3 INFILE ’SAMPLE. L'instruction LOAD DATA informe SQL*Loader qu'un nouveau chargement de données commence.dsc’ 6 APPEND 7 INTO TABLE emp 8 WHEN (57) = ’. Le mot-clé INFILE indique le nom d'un fichier de données contenant les données à charger. Les commentaires sont introduits de cette façon dans le fichier de contrôle.99’)". Si vous poursuivez un chargement interrompu en cours d'exécution.’$99. NULLIF mgr=BLANKS. comm INTEGER EXTERNAL ENCLOSED BY ’(’ AND ’%’ ":comm * 100" ) Explication de cet exemple : 1. Fichier de contrôle de SQL*Loader (suite) 4. Il définit la relation entre les enregistrements du fichier de données et les tables de la base de données. les champs et les types de données. 8. 9. 10. Le mot-clé DISCARDFILE indique le nom d'un fichier dans lequel sont placés les enregistrements de rebut. Oracle9i Database Administration I 19-15 . Le mot-clé INTO TABLE vous permet d'identifier les tables. 6. Dans cet exemple. Le mot-clé APPEND est l'une des options que vous pouvez utiliser lors du chargement des données dans une table qui contient déjà des données. Le reste du fichier de contrôle contient la liste des champs et fournit des informations sur les formats de colonne de la table en cours de chargement. Le mot-clé BADFILE indique le nom d'un fichier dans lequel sont placés les enregistrements rejetés. La clause TRAILING NULLCOLS demande à SQL*Loader de traiter toutes les colonnes en position relative qui ne figurent pas dans l'enregistrement comme des colonnes NULL. 5. Cette virgule sépare les dollars des cents dans le champ et entraîne le rejet des enregistrements si aucune valeur n'est affectée à SAL. SQL*Loader ne charge l'enregistrement que si le 57ème caractère est une virgule décimale. 7. Pour charger des données dans une table vide. utilisez le mot-clé INSERT. La clause WHEN indique une ou plusieurs conditions de champ auxquelles chaque enregistrement doit répondre avant que SQL*Loader ne charge les données. Sélectionnez Databases > Schema > Table. La page Introduction de l'Assistant de Chargement s'affiche. Utiliser la page Load Method pour définir les fichiers facultatifs 11.Fichier de contrôle de SQL*Loader (suite) Utiliser la colonne OEM pour effectuer un chargement de données à l'aide de l'Assistant de Chargement A partir de la console OEM. Utiliser la page Load Method pour définir la méthode de chargement 10. 8. Utiliser la page Summary Oracle9i Database Administration I 19-16 . Sélectionnez Data Management > Load dans le menu accessible par le bouton droit de la souris. Utiliser la page Data File 9. 7. Sélectionnez Next. Utiliser la page Job Information 13. 3. Utiliser la page Control File : Indiquez le chemin et le nom complets du fichier de contrôle sur le serveur de bases de données. procédez comme suit : 1. Remarque : Les autres diapositives de ce chapitre traitent des informations demandées dans l'Assistant de Chargement : 6. Utiliser la page Schedule 12. Développez la table dans laquelle vous chargerez les données. 4. 5. Sélectionnez Next pour commencer. 2. car il a une signification particulière pour SQL*Loader. 2001. 19-17 Copyright © Oracle Corporation. • Le mot-clé CONSTANT est réservé. les chaînes placées entre apostrophes ou guillemets sont prises en compte littéralement. • Le mot-clé CONSTANT est réservé. Les commentaires de cette section ne sont donc pas pris en charge. La troisième section facultative du fichier de contrôle est interprétée comme des données plutôt que comme une syntaxe. Oracle9i Database Administration I 19-17 .Remarques sur la syntaxe du fichier de contrôle • Le format de la syntaxe est libre. Remarques sur la syntaxe du fichier de contrôle • Le format de la syntaxe est libre (les instructions peuvent être insérées sur plusieurs lignes). • La syntaxe n'est pas sensible à la casse. • Dans la syntaxe du fichier de contrôle. de même que la casse. • Les commentaires sont précédés de deux traits d'union (--) et se terminent à la fin de la ligne. Tous droits réservés. Cependant. les commentaires sont précédés de deux traits d'union (--) et se terminent à la fin de la ligne. il convient donc de ne pas utiliser le mot CONSTANT dans les noms de table ou de colonne. • La syntaxe n'est pas sensible à la casse. Afin d'éviter tout conflit. • Un fichier de données peut avoir l'un des trois formats suivants : – Format d'enregistrement fixe – Format d'enregistrement variable – Format d'enregistrement de type "stream" 19-18 Copyright © Oracle Corporation.Données et fichiers de données en entrée • SQL*Loader lit les données à partir d'un ou de plusieurs fichiers définis dans le fichier de contrôle. • Dans SQL*Loader. ce qui représente précisément neuf octets (avec un jeu de caractères simple octet) et le retour chariot représente le dixième octet.fghi 0003.abcd 0002. abcd].’ (col1. load data infile ’example.klmn Oracle9i Database Administration I 19-18 . Tous droits réservés. L'exemple ci-dessous présente un fichier de contrôle qui indique un fichier de données au format d'enregistrement fixe. 2001. les données du fichier de données sont organisées en enregistrements. col2) example. Le premier enregistrement est [0001. Données et fichiers de données en entrée Format d'enregistrement fixe Un fichier de données est au format d'enregistrement fixe lorsque tous ses enregistrements présentent la même longueur binaire. il offre de meilleures performances que le format variable ou le format de type "stream" et sa déclaration est simple. Le fichier de données contient quatre enregistrements physiques. Bien que ce format soit le moins flexible.dat: 0001. Exemple : INFILE <datafile_name> "fix n" Cet exemple indique que SQL*Loader doit interpréter le fichier de données indiqué comme un fichier au format d'enregistrement fixe dont tous les enregistrements présentent la même longueur binaire de n octets.dat’ "fix 10" into table example fields terminated by ’. Format d'enregistrement de type "stream" Un fichier est au format d'enregistrement de type "stream" lorsque les enregistrements ne sont pas définis en fonction de la taille. SQL*Loader prend par défaut la valeur 5.Données et fichiers de données en entrée (suite) Format d'enregistrement variable Un fichier est au format d'enregistrement variable lorsque la longueur de chaque enregistrement d'un champ de type caractère est insérée au début de chacun de ses enregistrements. celle du deuxième enregistrement est de 010 octets (dont un saut de ligne de un caractère). n indique le nombre d'octets contenus dans le champ de longueur d'enregistrement. 010world. Oracle9i Database Administration I 19-19 . load data infile ’example.dat est composé de trois enregistrements physiques. L'affectation d'une valeur n supérieure à 40 génère une erreur. X’hex_string’ désigne une chaîne binaire au format hexadécimal. Le fichier de données example.im. SQL*Loader constitue des enregistrements en effectuant un balayage pour localiser le caractère de fin de l'enregistrement.col2 char(7)) example.dat et d'attendre un format d'enregistrement variable dans lequel les champs correspondant à la longueur de l'enregistrement présentent une longueur de 3 octets. L'exemple suivant présente la définition d'un fichier de contrôle qui demande à SQL*Loader de rechercher des données dans le fichier example.dat’ "var 3“ into table example fields terminated by ’.name is. Ce type de format est le plus flexible.dat: 009hello. Ce format est plus flexible que le format d'enregistrement fixe et plus performant que le format d'enregistrement de type "stream". et celle du troisième enregistrement est de 012 octets. Si aucune valeur n'est affectée à n. mais son utilisation peut affecter les performances.cd. vous pouvez définir comme suit un fichier de données à interpréter comme un fichier au format variable : INFILE "datafile_name" "var n" Dans cet exemple. 012my. Par exemple. Cet exemple considère également que le fichier de données possède un jeu de caractères simple octet. La longueur du premier enregistrement est de 009 (neuf) octets. Vous pouvez définir comme suit un fichier de données à interpréter comme un fichier au format d'enregistrement de type "stream" : INFILE <datafile_name> ["str terminator_string"] The terminator_string is specified as either ’char_string’ or X’hex_string’ where: ’char_string’ désigne une chaîne de caractères placée entre apostrophes ou guillemets.’ optionally enclosed by ’"’ (col1 char(5). dat’ "str ’|\n’“ into table example fields terminated by ’. le caractère de retour à la ligne (fin de ligne) est utilisé par défaut (saut de ligne sur les plates-formes de type UNIX. col2 char(7)) example. est différent de celui du fichier de données. retour chariot suivi d'un saut de ligne sur les plates-formes Microsoft. Si aucune chaîne terminator_string n'est définie.).dat: hello.bond.Données et fichiers de données en entrée (suite) Lorsque la chaîne terminator_string contient des caractères spéciaux (non imprimables). comme le montre l'exemple suivant : \n saut de ligne (retour à la ligne) \t tabulation horizontale \f page suivante \v tabulation verticale \r retour chariot Si le jeu de caractères de votre session.| Oracle9i Database Administration I 19-20 .’ optionally enclosed by ’"’ (col1 char(5). etc. aucune conversion n'est réalisée. Etant donné que l'on suppose que les chaînes hexadécimales figurent dans le jeu de caractères du fichier de données.world. Vous pouvez définir certains caractères non imprimables comme (’char_string’) en utilisant une barre oblique inverse. La barre oblique inverse permet de définir le caractère non imprimable de saut de ligne. défini par le paramètre NLS_LANG. load data infile ’example. Le caractère de saut de ligne est relié au jeu de caractères du fichier de données. les chaînes de caractères sont converties dans le jeu de caractères du fichier de données. L'exemple suivant présente le chargement de données au format d'enregistrement de type "stream" dans lequel la chaîne terminator_string est définie à l'aide de la chaîne de caractères ’|\n'.| james. elle doit être définie comme une chaîne X’hex_string ’. 5. Utiliser la page Control File : Indiquez le chemin et le nom complets du fichier de contrôle sur le serveur de bases de données. Utiliser la page Load Method pour définir la méthode de chargement 9. 3. Utiliser la page Schedule 11. Développez la table dans laquelle vous chargerez les données. Sélectionnez Data Management > Load dans le menu accessible par le bouton droit de la souris. n'oubliez pas de respecter la casse dans les environnements Unix. Sélectionnez Databases > Schema > Table 2. Sélectionnez Next. Utiliser la page Data File : Cette page détermine la manière dont vous souhaitez définir le fichier contenant les données. • Indiquer le chemin complet du serveur de bases de données sur lequel réside le fichier de données. 7. Utiliser la page Job Information 12. Sélectionnez Next pour commencer. Utiliser la page Summary Oracle9i Database Administration I 19-21 . Dans ce cas. Remarque : Les autres diapositives de ce chapitre traitent des informations demandées dans l'Assistant de Chargement : 6. La page Introduction de l'Assistant de Chargement s'affiche.Données et fichiers de données en entrée (suite) Utiliser Oracle Enterprise Manager pour effectuer un chargement de données à l'aide de l'Assistant de Chargement A partir de la console OEM. Utiliser la page Load Method pour définir les fichiers facultatifs 10. 8. 4. Vous pouvez choisir l'une des méthodes suivantes : • Définir les données dans le fichier de contrôle (identifié ci-dessus). procédez comme suit : 1. mais pour une plus grande flexibilité. L'exemple suivant utilise CONCATENATE avec integer. SQL*Loader peut utiliser l'une des deux méthodes suivantes : • Combiner un nombre fixe d'enregistrements physiques pour la création de chaque enregistrement logique. 2001. • Combiner des enregistrements physiques à des enregistrements logiques lorsqu'une condition donnée est vraie. Tous droits réservés. Enregistrements logiques SQL*Loader organise les données en entrée en enregistrements physiques.Enregistrements logiques Vous pouvez indiquer à SQL*Loader de suivre l'une des stratégies de création d'enregistrement logique suivantes : • Combiner un nombre fixe d'enregistrements physiques pour la création de chaque enregistrement logique. en fonction du format d'enregistrement défini. qui indique le nombre d'enregistrements physiques à combiner : CONCATENATE integer Oracle9i Database Administration I 19-22 . 19-22 Copyright © Oracle Corporation. Utiliser CONCATENATE pour assembler des enregistrements logiques Le mot-clé CONCATENATE est utilisé lorsque SQL*Loader doit toujours ajouter le même nombre d'enregistrements physiques pour créer un enregistrement logique. • Combiner des enregistrements physiques à des enregistrements logiques lorsqu'une condition donnée est vraie. il est possible d'indiquer à SQL*Loader de combiner un certain nombre d'enregistrements physiques à un enregistrement logique. Pour réaliser cette opération. Un enregistrement physique est par défaut un enregistrement logique. deux enregistrements peuvent être combinés si le premier enregistrement comporte un signe dièse (#) en position 80. Oracle9i Database Administration I 19-23 .Utiliser CONTINUEIF pour assembler des enregistrements logiques Vous devez utiliser le mot-clé CONTINUEIF si le nombre d'enregistrements physiques à poursuivre varie. CONTINUEIF est suivi d'une condition évaluée pour chaque enregistrement physique lu. Par exemple. le second enregistrement ne sera pas ajouté au premier. S'il s'agit d'un autre caractère. Les enregistrements qui ne respectent pas les spécifications de champ sont rejetés. ceux qui ne correspondent pas aux critères de sélection sont mis au rebut. Au cours du chargement. Oracle9i Database Administration I 19-24 . Méthodes de chargement des données SQL*Loader permet le chargement de données de deux manières : • par chemin conventionnel.Méthodes de chargement des données Instance Insertion de tableau Mémoire SGA Zone de mémoire partagée Conventionnel Table Enregistrement des données Chemin direct Espace utilisé uniquement par le chargement par chemin conventionnel 19-24 Repère high-water mark Copyright © Oracle Corporation. 2001. les enregistrements en entrée sont analysés en fonction des spécifications de champ. et un tableau d'enregistrements est créé et inséré dans la table définie dans le fichier de contrôle. Tous droits réservés. • par chemin direct. Chargement des données par chemin conventionnel Le chargement des données par chemin conventionnel crée un tableau contenant les lignes à insérer et utilise l'instruction SQL INSERT pour charger les données. Vous pouvez utiliser le chargement par chemin conventionnel pour charger des données aussi bien dans les tables clusterisées que dans les tables non clusterisées. La génération des informations de journalisation est contrôlée par l'attribut de journalisation de la table chargée. Aucune entrée de journalisation n'est créée si la base de données ne fonctionne pas en mode ARCHIVELOG. Le chargement des données par chemin direct utilise les spécifications de champ pour créer des blocs de données Oracle complets qu'il écrit directement dans des fichiers de données Oracle. Oracle9i Database Administration I 19-25 . Ce script est appelé automatiquement à l'exécution du script catalog. fourni par Oracle.sql. Cette méthode n'utilise pas le cache de tampons de la base de données et accède à la mémoire SGA uniquement pour gérer les extents et ajuster le repère high-water mark. mais ne convient pas à toutes les situations. La section suivante présente une comparaison des deux méthodes et des exemples décrivant les situations dans lesquelles chaque méthode peut être utilisée.Méthodes de chargement des données (suite) Chargement des données par chemin direct Le chargement des données par chemin direct crée des blocs de données en mémoire et les enregistre directement dans les extents alloués à la table en cours de chargement. crée des vues utilisées pour le chargement des données par chemin direct. Remarque : Le script catldr.sql. Le chargement des données par chemin direct est généralement plus rapide que le chargement des données par chemin conventionnel. Développez la table dans laquelle vous chargerez les données. Vous pouvez choisir l'une des méthodes suivantes : • Conventional Path • Direct Load • Parallel Direct Load 9. procédez comme suit : 1. n'oubliez pas de respecter la casse dans les environnements Unix. Remarque : Les autres diapositives de ce chapitre traitent des informations demandées dans l'Assistant de Chargement : 6. Utiliser la page Load Method pour définir la méthode de chargement : Cette page définit la méthode de chargement des données que vous souhaitez utiliser. Utiliser la page Summary Oracle9i Database Administration I 19-26 .Méthodes de chargement des données (suite) Utiliser Oracle Enterprise Manager pour effectuer un chargement de données à l'aide de l'Assistant de Chargement A partir de la console OEM. Sélectionnez Next. 2. Dans ce cas. Sélectionnez Data Management > Load dans le menu accessible par le bouton droit de la souris. Utiliser la page Data File : Cette page détermine la manière dont vous souhaitez définir le fichier contenant les données. 5. La page Introduction de l'Assistant de Chargement s'affiche. 7. 3. Utiliser la page Schedule 11. 4. Utiliser la page Control File : Indiquez le chemin et le nom complets du fichier de contrôle sur le serveur de bases de données. Utiliser la page Job Information 12. 8. Sélectionnez Next pour commencer. Sélectionnez Databases > Schema > Table. • Indiquer le chemin complet du serveur de bases de données sur lequel réside le fichier de données. Utiliser la page Load Method pour définir les fichiers facultatifs 10. Vous pouvez choisir l'une des méthodes suivantes : • Définir les données dans le fichier de contrôle (identifié ci-dessus). Oracle9i Database Administration I 19-27 . • Les ressources internes ne sont pas libérées à la suite de l'enregistrement des données. • Le repère est déplacé après l'enregistrement des données. Chaque chargement de données peut faire appel à plusieurs transactions. seuls les blocs de base de données complets sont écrits dans la base. 2001. • Les blocs sont écrits après le repère high-water mark de la table. • Les index ne sont pas mis à jour à chaque enregistrement de données. Le chargement des données par chemin direct enregistre les données pour écrire des blocs de données dans des fichiers de données Oracle. Comparer les chargements de données par chemin direct et par chemin conventionnel Méthode d'enregistrement des données Le chargement des données par chemin conventionnel utilise une instruction SQL et des instructions COMMIT sur la base de données pour enregistrer les données. • Un enregistrement de données ne met pas fin à la transaction. L'insertion d'un tableau d'enregistrements est suivie d'une opération de validation. Un enregistrement de données et une validation (COMMIT) présentent les différences suivantes : • Lors d'un enregistrement de données. de clé unique et NOT NULL Les déclencheurs INSERT ne s'exécutent pas Ne peut pas effectuer de chargement dans des tables clusterisées Les autres utilisateurs ne peuvent pas modifier les tables Copyright © Oracle Corporation. Tous droits réservés.Comparer les chargements de données par chemin direct et par chemin conventionnel Chargement des données par chemin conventionnel Utilise COMMITs pour rendre les modifications permanentes Entrées de journalisation toujours générées Applique toutes les contraintes Les déclencheurs INSERT s'exécutent Peut effectuer un chargement dans des tables clusterisées Les autres utilisateurs peuvent modifier les tables 19-27 Chargement des données par chemin direct Utilise des enregistrements de données Génère une journalisation uniquement sous certaines conditions Applique uniquement les contraintes de clé primaire. Vous ne pouvez charger une table incluse dans un cluster qu'avec le chargement des données par chemin conventionnel. • Les contraintes de clé primaire et de clé unique sont vérifiées au cours du chargement et à la fin du chargement. En revanche. les contraintes sont traitées comme suit : • Les contraintes NOT NULL sont vérifiées lors de la création des tableaux. Dans le chargement par chemin direct. ils sont désactivés avant l'exécution d'un chargement des données par chemin direct et réactivés à la fin du chargement. • si la base de données fonctionne en mode ARCHIVELOG et que la journalisation est désactivée. Si vous ne devez insérer qu'un petit nombre de lignes dans une table volumineuse. aucune entrée de journalisation n'est créée : • si la base de données fonctionne en mode NOARCHIVELOG. Vous pouvez désactiver la journalisation en affectant à la table l'attribut NOLOGGING ou en indiquant la clause UNRECOVERABLE dans le fichier de contrôle. sauf lorsque plusieurs sessions de chargement des données par chemin direct en parallèle sont utilisées simultanément. et peuvent être désactivées en cas de violation. Lors d'un chargement des données par chemin direct. car elles font référence à d'autres lignes ou tables. préférez le chargement des données par chemin conventionnel. Oracle9i Database Administration I 19-28 . les autres transactions ne peuvent pas modifier les tables en cours de chargement. car elles peuvent utiliser des fonctions SQL. Appliquer les contraintes Lors d'un chargement des données par chemin conventionnel. Ils peuvent rester désactivés si un objet référencé n'est pas accessible à la fin du chargement. Utilisez le chargement des données par chemin conventionnel pour charger des données dans des tables avec des déclencheurs INSERT. Verrouillage Lorsqu'un chargement des données par chemin direct est en cours. Exécuter les déclencheurs INSERT Les déclencheurs (triggers) WHILE INSERT sont activés pendant le chargement des données par chemin conventionnel. Charger les données dans des tables clusterisées Vous ne pouvez pas utiliser le chargement des données par chemin direct pour charger des lignes dans une table incluse dans un cluster. • Les contraintes de clé étrangère et les contraintes CHECK sont désactivées et peuvent être réactivées à la fin du chargement en utilisant les commandes appropriées dans le fichier de contrôle. toutes les contraintes activées sont appliquées comme s'il s'agissait d'une opération LMD. Les contraintes de clé étrangère sont désactivées.Comparer les chargements de données par chemin direct et par chemin conventionnel (suite) Consigner les modifications Le chargement des données par chemin conventionnel génère des entrées de journalisation comme n'importe quelle instruction LMD. Les contraintes CHECK sont désactivées. Chargement des données par chemin direct en parallèle Segments temporaires load1. vous devez envisager le chargement de données par chemin conventionnel simultané.dat load2.ctl Table SQL*Loader SQL*Loader Repère high-water mark 19-29 Copyright © Oracle Corporation.dat SQL*Loader load1. Chemin conventionnel simultané Si des déclencheurs ou des contraintes d'intégrité posent problème. 2001. Exécutez plusieurs sessions de chargement simultanées sur un système à plusieurs CPU. • la méthode de chargement par chemin direct avec simultanéité entre segments.ctl load2. puis chargez chacun de ces fichiers via une session de chargement des données par chemin conventionnel.ctl load3. Cette technique peut s'appliquer au chargement de différentes tables ou au chargement de différentes partitions de la même table par chemin direct simultané. Oracle9i Database Administration I 19-29 . Trois modèles de simultanéité d'accès aux données peuvent réduire le temps de chargement des données • le chargement des données par chemin conventionnel en parallèle. Chargement des données par chemin direct en parallèle L'ouverture de plusieurs sessions SQL*Loader permet d'améliorer les performances du chargement des données par chemin direct.dat load3. Simultanéité entre segments Vous pouvez utiliser la simultanéité entre segments pour charger simultanément différents objets. Divisez les fichiers de données en entrée en fichiers distincts en fonction des limites logiques des enregistrements. Tous droits réservés. • la méthode de chargement par chemin direct avec simultanéité au sein des segments. mais que vous souhaitez accélérer le chargement. Oracle9i Database Administration I 19-30 . Le parallélisme au sein des segments est alors possible.Simultanéité au sein des segments Le chargement des données par chemin direct en parallèle permet à plusieurs sessions de chargement par chemin direct de charger simultanément des données dans la même table ou dans la même partition d'une table partitionnée. Oracle9i Database Administration I 19-31 . • Le serveur de bases de données Oracle accepte les données. les champs de données du fichier de données sont convertis en colonnes dans la base. Tous droits réservés. puis exécute l'instruction INSERT pour les stocker dans la base. 2001. La conversion s'effectue en deux étapes : • Les spécifications de champ du fichier de contrôle permettent d'interpréter le format de ce fichier et de le convertir en instruction SQL INSERT à l'aide de ces données.Conversion des données Pendant le chargement des données par chemin conventionnel. 19-31 Copyright © Oracle Corporation. une ligne à insérer est envoyée à Oracle. 2001. Dans le cas contraire. – Si la base de données Oracle considère que la ligne n'est pas valide. Tous droits réservés. 19-32 Copyright © Oracle Corporation. l'enregistrement est rejeté et SQL*Loader le place dans le fichier des enregistrements refusés. s'il manque le délimiteur d'inclusion ou si un champ délimité dépasse sa longueur maximale. Par exemple. l'enregistrement est rejeté et placé par SQL*Loader dans le fichier des enregistrements refusés. • Fichier de rebut – Ce fichier ne peut être utilisé que s'il a été activé.Enregistrements de rebut ou refusés • Fichier des enregistrements refusés – SQL*Loader rejette les enregistrements dont le format d'entrée n'est pas valide. Si Oracle détermine que la ligne est valide. Il est possible que la ligne soit rejetée si une clé n'est pas unique ou si un champ requis contient une valeur NULL ou des données non valides pour le type de données Oracle. l'enregistrement est rejeté. Oracle9i Database Administration I 19-32 . elle est insérée dans la base de données. Enregistrements de rebut ou refusés Fichier des enregistrements refusés Ce fichier contient des enregistrements qui ont été rejetés par SQL*Loader ou par la base de données Oracle. Raisons du rejet par Oracle Une fois que SQL*Loader a accepté l'enregistrement pour traitement. Les enregistrements rejetés sont placés dans le fichier des enregistrements refusés. – Ce fichier contient des enregistrements qui ont été extraits par filtrage. Raisons du rejet par SQL*Loader SQL*Loader rejette des enregistrements lorsque le format d'entrée n'est pas valide. car ils ne correspondaient pas aux critères de sélection de l'enregistrement définis dans le fichier de contrôle. Vous pouvez indiquer le nombre maximal d'enregistrements à placer dans ce fichier. SQL*Loader peut créer un fichier nommé fichier de rebut. Le fichier de rebut contient par conséquent des enregistrements qui n'ont pas été insérés dans la base de données. Le fichier de rebut contient des enregistrements qui ont été extraits par filtrage du chargement de données parce qu'ils ne correspondaient pas aux critères de sélection de l'enregistrement définis dans le fichier de contrôle. Ce fichier est créé uniquement lorsqu'il est requis et si vous avez défini que ce type de fichier doit être activé. Oracle9i Database Administration I 19-33 .Enregistrements de rebut ou refusés (suite) Fichier de rebut Lors de son exécution. Vous pouvez choisir l'une des méthodes suivantes : : • Définir les données dans le fichier de contrôle (identifié ci-dessus). Procédez comme suit pour définir le chemin du fichier des enregistrements refusés. le chargement s'exécute comme un travail OEM Oracle9i Database Administration I 19-34 . du fichier de rebut et du fichier journal : • Sélectionnez le bouton Advanced de cette page. • Sélectionnez la page Optional Files. La page Introduction de l'Assistant de Chargement s'affiche. Sélectionnez Databases > Schema > Table. Sélectionnez Data Management > Load dans le menu accessible par le bouton droit de la souris. 9. 2. 8.Enregistrements de rebut ou refusés (suite) Utiliser Oracle Enterprise Manager pour effectuer un chargement de données à l'aide de l'Assistant de Chargement A partir de la console OEM. • Choisissez de générer l'un des fichiers et indiquez un chemin complet pour chaque fichier sélectionné. Remarque : Les autres diapositives de ce chapitre traitent des informations demandées dans l'Assistant de Chargement : 6. des options de réglage (tuning) et des fichiers facultatifs. Dans ce cas. Vous pouvez choisir l'une des méthodes suivantes : • Conventional Path • Direct Load • Parallel Direct Load Lorsque l'Assistant de Chargement reçoit les informations ci-dessus. 3. 4. Utiliser la page Control File : Indiquez le chemin et le nom complets du fichier de contrôle sur le serveur de bases de données. Lorsque l'Assistant de Chargement reçoit les informations ci-dessus. Développez la table dans laquelle vous chargerez les données. le chargement s'exécute comme un travail OEM. Utiliser la page Data File : Cette page détermine la manière dont vous souhaitez définir le fichier contenant les données. Sélectionnez Next pour commencer. Sélectionnez Next. 5. Utiliser la page Load Method pour définir les fichiers facultatifs : Cette page vous permet également de définir des besoins supplémentaires en chargement. 7. procédez comme suit : 1. Utiliser la page Load Method pour définir la méthode de chargement : Cette page définit la méthode de chargement des données que vous souhaitez utiliser. n'oubliez pas de respecter la casse dans les environnements Unix. • Sélectionnez OK. • Indiquer le chemin complet du serveur de bases de données sur lequel réside le fichier de données. Utiliser la page Summary : Cette page synthétise les informations de la page Load Wizard que vous avez soumises. Utiliser la page Schedule : Cette page indique à quel moment vous souhaitez exécuter le travail. 13. 11. Sélectionnez Jobs dans l'arborescence. Visualisez votre travail dans la page History. Utiliser la page Job Information : Cette page indique le nom et la finalité du travail. 12. Si tout semble correct. Il est recommandé de définir le propriétaire du schéma à ce stade. 10. sélectionnez OK pour soumettre le travail. Elle vous permet également de remplacer toute information d'identification et de connexion de préférence. 14. Oracle9i Database Administration I 19-35 . le chargement s'exécute comme un travail OEM.Enregistrements de rebut ou refusés (suite) Utiliser Oracle Enterprise Manager pour effectuer un chargement de données à l'aide de l'Assistant de Chargement (suite) Remarque : Lorsque l'Assistant de Chargement reçoit les informations ci-dessus. Vous pouvez ainsi parcourir les informations et les sauvegarder si vous devez effectuer des modifications. 2001. – si elles sont définies : DEFAULTIF ou NULLIF. le type de données et le délimiteur. CONSTANT ou EXPRESSION. – si elles sont définies : RECNUM. Tous droits réservés. APPEND ou REPLACE • Les informations de colonnes suivantes : – si elles existent dans le fichier de données : la position. le cas échéant. SEQUENCE. Contenu des fichiers journaux La section des informations d'en-tête contient les entrées suivantes : • Date de l'exécution • Numéro de version du logiciel La section des informations générales contient les entrées suivantes : • Nom de tous les fichiers d'entrée et de sortie • Echo des arguments de ligne de commande • Spécification des caractères de suite La section des informations sur les tables contient les entrées suivantes pour chaque table chargée : • Nom de la table • Conditions de chargement. Oracle9i Database Administration I 19-36 . la longueur. Elles indiquent si tous les enregistrements ou uniquement les enregistrements répondant à la clause WHEN ont été chargés • Spécification INSERT.Contenu des fichiers journaux • • • • • • • Informations d'en-tête Informations générales Informations sur les tables Informations sur les fichiers de données Informations de chargement des tables Statistiques récapitulatives Statistiques supplémentaires relatives aux chargements des données par chemin direct et informations sur la technologie multithread 19-36 Copyright © Oracle Corporation. • le chargement des données par chemin conventionnel ne fournit pas d'état des statistiques par partition.pour les autres surcharges (donnée obligatoire. le fichier journal contient le mot-clé DATETIME ou INTERVAL sous l'en-tête Data type. le mot-clé est suivi du repère correspondant. La section des informations sur le fichier de données ne s'affiche que lorsque des fichiers de données présentent des erreurs de données.Contenu des fichiers journaux (suite) Si le fichier de contrôle SQL*Loader contient des directives de chargement de données de type datetime ou interval. lus ou rejetés pour tous les fichiers de données). Dans ce cas. la demande d'opération consignée est remplacée. Oracle9i Database Administration I 19-37 . indépendante de BINDSIZE) • Statistiques de chargement cumulées (nombre d'enregistrements ignorés. Les statistiques suivantes sont consignées au chargement d'une table : • le chargement des données par chemin direct d'une table partitionnée fournit un état des statistiques par partition.pour le tableau de variables (espace réellement utilisé en fonction du paramètre BINDSIZE défini) . mais qui ont été rejetées à la suite d'erreurs de données • Nombre de lignes mises au rebut car elles ne répondaient pas aux tests de la clause WHEN • Nombre de lignes dont les champs correspondants sont tous NULL La section des statistiques récapitulatives affiche les données suivantes : • Quantité d'espace utilisée : . Si cela s'avère pertinent. Elle contient les entrées suivantes : • Erreurs d'enregistrement de données SQL*Loader et Oracle • Enregistrements de rebut La section des informations sur le chargement des tables contient les entrées suivantes pour chaque table chargée : • Nombre de lignes chargées • Nombre de lignes qui auraient pu être chargées. Si la restauration physique est désactivée. le chargement n'est pas consigné. toutes les options. • Améliorez les performances de la manière suivante : – Allouez un espace suffisant – Triez les données sur l'index le plus volumineux – Dans les chargements en parallèle. vous pouvez définir l'emplacement des segments temporaires utilisés pour l'insertion de données. définissez différents fichiers pour les segments temporaires 19-38 Copyright © Oracle Corporation. peuvent être identiques. • Préallouez l'espace en fonction du volume de données attendu pour éviter l'allocation dynamique d'extents lors du chargement et améliorer la vitesse de chargement. Par exemple. des segments temporaires sont utilisés pour générer des index pour les nouvelles données. Définissez un fichier de base de données différent pour chaque session de chargement afin d'optimiser les performances. 2001. si vous chargez toutes les semaines les données dans un data warehouse. Ces index sont fusionnés avec les index existants à la fin du chargement. • Avec le chargement des données par chemin direct en parallèle. Règles d'utilisation de SQL*Loader Les instructions suivantes vous permettent de réduire le nombre d'erreurs et d'améliorer les performances lorsque vous utilisez SQL*Loader : • Utilisez un fichier de paramètres pour définir les options de ligne de commande couramment utilisées. • Ne placez les données dans le fichier de contrôle que pour un chargement réduit unique. à l'exception des noms de fichier. Oracle9i Database Administration I 19-38 . • Séparez le fichier de contrôle du fichier de données afin de permettre la réutilisation des fichiers de contrôle pour plusieurs sessions de chargement. • Lorsque vous faites appel au chargement des données par chemin direct. Vous pouvez réduire l'espace de tri en triant les données en entrée sur les clés de l'index le plus volumineux. Tous droits réservés.Règles d'utilisation de SQL*Loader • Utilisez un fichier de paramètres pour définir les options de ligne de commande couramment utilisées. Tous droits réservés. 2001. Oracle9i Database Administration I 19-39 .Synthèse Ce chapitre vous a permis d'apprendre à : • décrire l'utilisation de SQL*Loader • réaliser des opérations de base avec SQL*Loader • démontrer vos capacités dans le cadre d'un chargement des données par chemin direct • répertorier les règles d'utilisation de SQL*Loader et du chargement des données par chemin direct 19-39 Copyright © Oracle Corporation. Présentation de l'exercice 19 Dans cet exercice. Tous droits réservés. Présentation de l'exercice 19 Remarque : Cet exercice peut être réalisé avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet. 2001. vous allez : • utiliser SQL*Loader pour restaurer des données – à l'aide d'un fichier de contrôle – à l'aide d'un fichier de données • utiliser le chargement des données par chemin direct pour charger des données 19-40 Copyright © Oracle Corporation. Oracle9i Database Administration I 19-40 . lcase2.ctl • Dans Oracle Enterprise Manager : OEMsqlcase1.ctl.ctl Les fichiers sont situés dans le répertoire LABS. c Interrogez la table DEPARTMENTS2 pour vérifier les données. observez les fichiers suivants : lcase1. 4 a Exécutez SQL*Loader en mode de chargement par chemin direct pour charger des données dans la table DEPTARTMENTS2. b En tant que HR.sql pour créer la table DEPARTMENTS2 2 a Exécutez SQL*Loader en mode de chargement des données par chemin conventionnel pour charger des données dans la table DEPARTMENTS2. b Utilisez la commande appropriée du système d'exploitation pour observer le fichier journal. Utilisez les fichiers de contrôle suivants : • Dans SQL*Plus : lcase2. Remarque : Il s'exécute en utilisant un fichier de données en entrée qui charge les données.ctl • Dans Oracle Enterprise Manager : OEMsqlcase2. exécutez le script lab19_01. 3 Supprimez tous les enregistrements de la table DEPTARTMENTS2.ctl.ctl Les fichiers sont situés dans le répertoire LABS. OEMsqlcase2. b Utilisez la commande appropriée du système d'exploitation pour observer le fichier journal. c Interrogez la table DEPARTMENTS2 pour vérifier les données. • Si vous utilisez Oracle Enterprise Manager. Oracle9i Database Administration I 19-41 .dat.ctl et lcase2. Remarque : Il s'exécute en utilisant un fichier de contrôle contenant les données en entrée.ctl et OEMsqlcase2. Utilisez le fichier de contrôle suivant : • Dans SQL*Plus : lcase1. • Si vous utilisez SQL*Plus. observez les fichiers suivants : OEMsqlcase1.Exercice 19 : charger des données dans une base 1 a Observez les fichiers de données à utiliser dans le chargement afin de vous familiariser avec les formats de fichier de contrôle et de fichier de données. Vérifiez les données. Videz la table. Oracle9i Database Administration I 19-42 . Définissez un degré de parallélisme de 2. Effectuez ensuite une sélection dans la table EMPLOYEES2 pour vérifier qu'elle ne contient aucune donnée. b Effectuez un chargement par chemin direct de la table EMPLOYEES vers la table EMPLOYEES2 et interrogez cette dernière pour vérifier le chargement. créez une table EMPLOYEES2 que vous sélectionnez comme table EMPLOYEES. 6 a Videz à nouveau la table EMPLOYEES2.Exercice 19 : charger des données dans une base 5 a En tant qu'utilisateur HR. b Restaurez les données à l'aide d'un chargement par chemin direct en parallèle depuis la table EMPLOYEES. Effectuez ensuite une sélection dans la table EMPLOYEES2 pour vérifier qu'elle ne contient aucune donnée. 2001. . Tous droits réservés.Utiliser la prise en charge de la globalisation Copyright © Oracle Corporation. 2001. Oracle9i Database Administration I 20-2 . vous pourrez : • choisir les jeux de caractères de la base de données et les jeux de caractères nationaux d'une base • définir le comportement dépendant de la langue à l'aide de paramètres d'initialisation. Tous droits réservés. de variables d'environnement et de la commande ALTER SESSION • utiliser les différents types de paramètre de support NLS • expliquer l'influence sur le comportement d'application dépendant de la langue • obtenir des informations sur l'utilisation de la prise en charge de la globalisation 20-2 Copyright © Oracle Corporation.Objectifs A la fin de ce chapitre. Lorsqu'ils utilisent des jeux de caractères différents. ainsi que des conventions relatives à l'ordre de tri. à l'heure. 2001. Tous droits réservés. 84 tris linguistiques (71 tris monolingues et 13 tris multilingues) et 235 jeux de caractères codés.Caractéristiques de la prise en charge de la globalisation • • • • • • • • Prise en charge de la langue Prise en charge du territoire Prise en charge du jeu de caractères Tri linguistique Prise en charge des messages Formats de date et d'heure Nombres Devises 20-3 Copyright © Oracle Corporation. Les opérations dépendantes de la langue sont gérées par des paramètres et des variables d'environnement sur le client et le serveur. aux dates. Oracle reconnaît actuellement 57 langues. Le serveur et le client peuvent être exécutés sur le même site ou sur des sites différents. aux devises. Oracle9i Database Administration I 20-3 . 88 territoires. Caractéristiques de la prise en charge de la globalisation La prise en charge de la globalisation permet d'adapter à la langue nationale les utilitaires de base de données et les messages d'erreur. aux nombres et au calendrier. le serveur Oracle gère automatiquement la conversion de ces jeux. Les fuseaux horaires permettent de prendre en charge l'heure d'été. Les symboles de crédit et de débit diffèrent également d'un pays à l'autre. de l'Asie orientale et de l'Asie du Sud-Est. notamment dans les langues de l'Europe de l'Ouest. • Le serveur Oracle permet d'effectuer un grand nombre de tris linguistiques qui tiennent compte des règles de tri de chaque langue. impérial et Thaï bouddhique sont pris en charge. aux secondes. jours. japonais. multioctets et de longueur fixe. dont les jeux simple octet. mois et années. du Moyen-Orient. • Les utilitaires et les messages d'erreur de la base de données s'affichent dans la langue nationale. sont pris en charge.Caractéristiques de la prise en charge de la globalisation (suite) • Les utilisateurs peuvent manipuler. de l'Europe de l'Est. • Les données numériques sont présentées dans les formats nationaux appropriés. stocker. heures. selon les conventions relatives à la partie décimale des secondes. traiter et extraire des données dans leur langue nationale. • Un grand nombre d'encodages de jeux de caractères. minutes. Oracle9i Database Administration I 20-4 . Les produits Oracle sont traduits dans 30 langues. • Les dates et les heures peuvent être présentées au format ISO (International Organization for Standardization). • Chaque pays et chaque zone géographique possède ses propres conventions culturelles qui affectent directement les formats des données. • Les symboles monétaires correspondent aux conventions économiques nationales et ISO. • Les calendriers nationaux tels que les calendriers grégorien. Oracle prend en charge différents types d'encodage : • simple octet. • longueur variable. Les encodages de jeux de caractères permettent d'interpréter des données en symboles significatifs. AL16UTF16. d'un terminal vers une machine hôte. UTF8). Oracle9i Database Administration I 20-5 . 2001. • longueur fixe. Tous droits réservés.Encodages Oracle prend en charge différents types d'encodage de jeux de caractères : • Jeux de caractères simple octet – 7 bits – 8 bits • Jeux de caractères multioctets de longueur variable • Jeux de caractères multioctets de longueur fixe • Unicode (AL32UFT8. Les encodages simple octet de 7 bits peuvent définir jusqu'à 128 (27) caractères tandis que ceux de 8 bits peuvent définir jusqu'à 256 (28) caractères. • Unicode. Jeux de caractères simple octet Chaque caractère d'un jeu de caractères simple octet utilise un seul octet. Encodages Un encodage de jeux de caractères définit les codes numériques correspondant aux caractères qu'un ordinateur ou un terminal peut afficher et recevoir. 20-5 Copyright © Oracle Corporation. Exemples de jeux de caractères multioctets de longueur variable • Code japonais étendu UNIX JEUC (Japanese Extended UNIX) • Chinois GB2312-80 (CGB2312-80) • AL32UTF8 (UTF-8) Jeux de caractères multioctets de longueur fixe Les jeux de caractères de longueur fixe fournissent une prise en charge similaire à celle des jeux de caractères multioctets. indique que les octets suivants correspondent à des caractères à double octet. Les jeux de caractères multioctets sont généralement utilisés pour les langues asiatiques. mais chaque caractère correspond à un nombre fixe d'octets. Unicode 16 bits (Unicode 2 octets de longueur fixe) Oracle9i Database Administration I 20-6 . Toutefois.Encodages (suite) Exemples de jeux de caractères simple octet Jeu de caractères 7 bits : ASCII américain 7 bits (US7ASCII) Jeu de caractères 8 bits : • ISO 8859-1 Europe de l'Ouest (WE8ISO8859P1) • Page de code 500 8 bits EBCDIC Europe de l'Ouest (WE8EBCDIC500) • DEC 8 bits Europe de l'Ouest (WE8DEC) Jeux de caractères multioctets de longueur variable Dans un jeu de caractères multioctets de longueur variable. les autres encodages distinguent les caractères simple octet des caractères multioctets. Cela offre l'avantage de pouvoir représenter de manière uniforme tous les caractères. jusqu'à ce qu'un code normal soit rencontré. Exemple de jeux de caractères multioctets de longueur fixe AL16UTF16. envoyé par un périphérique. Un code de contrôle spécial. Un seul jeu de caractères de longueur fixe est pris en charge et ce. uniquement dans le jeu de caractères nationaux AL16UTF16. Certains encodages multioctets utilisent la valeur du bit le plus significatif pour indiquer qu'un octet représente un seul octet ou fait partie d'une série d'octets représentant un caractère. chaque caractère est codé sur un ou plusieurs octets. Le jeu de caractères de type UTF-8 présente l'avantage d'inclure les caractères ASCII codés également sur un seul octet. Oracle9i Database Administration I 20-7 . Oracle fournit les jeux de caractères de base de données AL32UTF8. reportez-vous aux jeux de caractères Oracle de type Unicode. Pour plus d'informations sur les jeux UTF8. UTF16 (Universal Character Set Transformation Format) est un format de caractère de longueur fixe de deux octets et UTF-8 est un format de caractère de longueur variable. y compris les symboles et les caractères techniques utilisés dans l'édition. Le répertoire de caractères Unicode peut être représenté dans divers formats de codage.0 contient 49 149 caractères et peut en représenter plus d'un million. UTF8 est un "superjeu" de caractères ASCII qui facilite la migration du jeu de caractères de la base de données lors de la mise à niveau des jeux de caractères ASCII vers Unicode. AL32UTF8 et AL16UTF16 sans trait d'union. Remarque : Pour plus d'informations sur les jeux de caractères UTF-16 et UTF-8 avec trait d'union. qui pourront être utilisés sur un ordinateur. Unicode version 3. UTF8 et UTFE et les jeux de caractères nationaux AL16UTF16 et UTF8.Encodages (suite) Jeu de caractères Unicode Unicode est une norme internationale de codage des caractères qui représente tous les caractères. reportez-vous au codage Unicode. Jeux de caractères de base de données et jeux de caractères nationaux Jeux de caractères de base de données Définis au moment de la création Ne peuvent pas être modifiés sans recréation Stockent les données dans des colonnes de type CHAR. Oracle9i Database Administration I 20-8 . il doit comporter le sous-jeu de caractères EBCDIC ou ASCII 7 bits selon le jeu de caractères nationaux de la plate-forme. En conséquence. LONG Peuvent stocker des jeux de caractères de longueur variable Jeux de caractères nationaux Définis au moment de la création Ne peuvent pas être modifiés sans recréation (peu d'exceptions) Stockent les données dans des colonnes de type NCHAR. NCLOB Peuvent stocker des jeux de caractères Unicode de type AL16UTF16 ou UTF8 20-8 Copyright © Oracle Corporation. NVARCHAR2 et NCLOB) sont des types de données Unicode d'Oracle9i. 2001. le jeu AL16UTF16 est utilisé par défaut. vous ne pouvez pas utiliser un jeu de caractères multioctets de longueur fixe comme jeu de caractères de la base de données. VARCHAR2. Jeux de caractères de la base de données et jeux de caractères nationaux Types de jeu de caractères L'instruction CREATE DATABASE dispose de la clause CHARACTER SET et de la clause facultative supplémentaire NATIONAL CHARACTER SET qui permettent de déclarer le jeu de caractères qui servira de jeu de caractères de la base de données et de jeu de caractères nationaux. mais vous pouvez l'utiliser comme jeu de caractères nationaux. Si vous ne définissez pas la clause NATIONAL CHARACTER SET. NVARCHAR2. CLOB. Tous droits réservés. Le jeu de caractères nationaux sert uniquement au stockage Unicode et les types de données SQL NCHAR (NCHAR. Etant donné que le jeu de caractères de la base de données permet d'identifier et de stocker le code source SQL et PL/SQL. On observe cependant une certaine surcharge de conversion du jeu de caractères. Ainsi. afin d'éviter une possible perte de données. ce qui vous oblige à vérifier que le jeu du système d'exploitation possède un répertoire de caractères équivalent. les polices correspondant au jeu de caractères choisi. par exemple. Règles de sélection d'un jeu de caractères de la base Oracle Quelle langue la base de données doit-elle prendre en charge ? Plusieurs jeux de caractères peuvent répondre à vos besoins en termes de langue. Le système d'exploitation fournit. Tous droits réservés. 2001. Oracle9i Database Administration I 20-9 . si vous savez que vous aurez besoin de développer ultérieurement le support de différentes langues. d'autres ressources du système d'exploitation doivent être prises en compte. Si vous sélectionnez un jeu de caractères différent de celui disponible sur le système d'exploitation. Oracle peut convertir le jeu du système d'exploitation en jeu de caractères de la base de données. il est plus judicieux de sélectionner immédiatement un jeu de caractères avec une plage plus large. Quels sont les problèmes d'interaction rencontrés avec les ressources système et les applications ? Tandis que la base de données gère et traite les données réelles de type alphanumérique. Les méthodes d'entrée qui prennent en charge les langues souhaitées et l'application doivent également être compatibles avec un jeu de caractères particulier. Mais il convient de prendre également en compte vos besoins ultérieurs.Règles de sélection d'un jeu de caractères de la base Oracle Eléments à prendre en considération : • Quelle langue la base de données doit-elle prendre en charge ? • Quels sont les problèmes d'interaction rencontrés avec les ressources système et les applications ? • Quelles sont les conséquences sur les performances ? • Quelles sont les restrictions ? 20-9 Copyright © Oracle Corporation. afin d'éviter toute opération de migration ultérieure. tout comme vous ne pouvez pas définir un jeu de caractères EBCDID sur les plates-formes ASCII.Règles de sélection d'un jeu de caractères de la base Oracle (suite) Quelles sont les conséquences sur les performances ? Le choix du jeu de caractères influe sur les performances en cas de gestion d'encodages différents. Quelles sont les restrictions ? Vous ne pouvez pas sélectionner de jeu de caractères de la base de données du type multioctet de longueur fixe. Mais ce type de jeu limite le nombre de langues utilisables. vous devez sélectionner un jeu de caractères qui ne nécessitera pas de conversion de jeu et utilisera l'encodage le plus efficace pour les langues souhaitées. Oracle9i Database Administration I 20-10 . Vous ne pouvez pas définir un jeu de caractères ASCII comme jeu de caractères de la base de données sur les plates-formes EBCDID. Pour obtenir les meilleures performances. Ils sont en outre les moins exigeants en espace. Les jeux de caractères simple octet présentent des performances supérieures à celles des jeux multioctets. Les caractères asiatiques en UTF8 sont codés sur trois octets et nécessitent donc davantage d'espace que le jeu AL16UTF16.Règles de sélection d'un jeu de caractères nationaux Oracle • Deux possibilités : – AL16UTF16 – UTF8 • Le facteur espace est-il à prendre en compte ? • Le facteur performances est-il à prendre en compte ? 20-11 Copyright © Oracle Corporation. qui correspond à la version 3. UTF8 prend en charge la version 3. Le jeu AL16UFT16 correspond à un jeu de caractères Unicode de longueur fixe de deux octets. Tous droits réservés. Le jeu UTF8 correspond quant à lui à un jeu de caractères Unicode de longueur variable de un à trois octets.0 d'Unicode dans Oracle9i (qui sera conservée dans les prochaines versions).0 dans Oracle9i. Règles de sélection d'un jeu de caractères nationaux Oracle Deux types de jeu sont disponibles : AL16UTF16 et UTF8. 2001. Il prend en charge la dernière version de la norme Unicode. Le jeu AL16UTF16 est un codage de longueur fixe plus rapide que le jeu UTF8 de longueur variable. Les caractères européens en UTF8 sont codés sur un à deux octets et occupent ainsi moins d'espace que le jeu AL16UTF16 qui code les caractères sur deux octets. Oracle9i Database Administration I 20-11 . Distribution équitable des données multilingues Si des données multilingues sont distribuées dans l'ensemble de la base. Choisir une solution Unicode : base de données Unicode Migration du code facilitée pour Java ou PL/SQL Une base de données Unicode limite les modifications de code effectuées lors de la mise en oeuvre de plusieurs langues en stockant des données multilingues dans des types de données SQL CHAR (CHAR. Oracle9i Database Administration I 20-12 .Choisir une solution Unicode : base de données Unicode Quand devez-vous utiliser une base de données Unicode ? • Migration du code facilitée pour Java ou PL/SQL • Migration des données facilitée à partir des données ASCII • Distribution équitable des données multilingues • Recherche InterMedia Text 20-12 Copyright © Oracle Corporation. Tous droits réservés. 2001. il est possible de migrer la base grâce à une simple instruction ALTER DATABASE. choisissez une base de données Unicode qui ne vous demande pas d'identifier les colonnes qui stockent ce type de données. Oracle Text Une base de données Unicode est nécessaire si vous souhaitez utiliser des BLOB multilingues avec Oracle Text. Il n'est pas nécessaire de réécrire le code pour les types SQL NCHAR. CLOB et LONG) existants. VARCHAR2. Migration des données facilitée à partir des données ASCII Si le jeu de caractères et les données en cours de la base sont purement de type US7ASCII. car la longueur des types wchar_t et chaîne correspond à celle des types SQL NCHAR de la base de données. car le mode de stockage des données UTF-16 est identique à celui de la mémoire tampon (buffer) wchar_t en Visual C/C++ et du tampon de chaîne en Visual Basic. Il vous suffit donc de tester l'application une fois pour qu'elle s'exécute sur les bases client de n'importe quel jeu de caractères de base de données. utilisez un jeu de base de données simple octet et des types de données SQL NCHAR utilisant le jeu AL16UTF16 pour les données multilingues. vous pouvez ajouter des types SQL NCHAR aux nouvelles tables et aux tables existantes. Les données de ce type sont toujours stockées en Unicode et leur longueur est toujours indiquée en unités de code UTF-16. Choisir une solution Unicode : type de données Unicode Ajout incrémentiel de support multilingue Si vous souhaitez ajouter un support Unicode sans migrer la base de données. Vous pouvez éviter le débordement du tampon dans vos applications client. Tous droits réservés. réduit les performances. L'encodage UTF-8. Oracle9i Database Administration I 20-13 . Application prête à l'emploi Vous pouvez utiliser le type de données SQL NCHAR pour les applications prêtes à l'emploi en raison de sa fiabilité (type Unicode). Performances En matière de performances. 2001.Choisir une solution Unicode : type de données Unicode Quand devez-vous utiliser un type de données Unicode ? • Ajout incrémentiel de support multilingue • Applications prêtes à l'emploi • Performances – Un jeu de caractères de base de données simple octet avec un jeu de caractères nationaux de longueur fixe • Meilleur support du jeu UTF-16 avec des clients Windows 20-13 Copyright © Oracle Corporation. Meilleur support du jeu UTF-16 avec des clients Windows Si vos applications sont écrites en langage Visual C/C++ ou Visual Basic pour Windows. vous souhaiterez peut-être utiliser les types de données SQL NCHAR. qui est de longueur variable. L'utilisation des jeux de caractères simple octet de longueur fixe et multioctets donne de meilleurs résultats. 2001. Oracle9i Database Administration I 20-14 . • sous forme de variables d'environnement pour permettre au client de remplacer les paramètres par défaut du serveur par des conventions locales. Définir l'environnement dépendant de la langue Vous pouvez définir les paramètres NLS de trois manières : • sous forme de paramètres d'initialisation sur le serveur pour définir l'environnement par défaut du serveur (ces paramètres par défaut n'ont aucun effet sur le client).Définir le comportement dépendant de la langue Paramètre d'initialisation Variable d'environnement Commande ALTER SESSION 20-14 Copyright © Oracle Corporation. • à l'aide du paramètre ALTER SESSION pour remplacer la valeur par défaut définie pour la session ou le serveur. Tous droits réservés. m. Définir le comportement dépendant de la langue pour le serveur Paramètres d'initialisation NLS Le paramètre d'initialisation NLS_LANGUAGE définit les valeurs des conventions dépendantes de la langue. 2001. le nom doit être placé entre guillemets ("The Netherlands"). le caractère décimal. comme dans The Netherlands. Le paramètre d'initialisation NLS_TERRITORY définit les valeurs des conventions dépendantes du territoire. notamment : • le format de date par défaut. Remarque : Lorsque le nom du territoire contient un espace. • le premier jour de la semaine. Tous droits réservés. p..D.Définir le comportement dépendant de la langue pour le serveur • NLS_LANGUAGE indique : – – – – la langue des messages le jour et le mois les symboles utilisés pour A. le séparateur de groupe et les symboles monétaires ISO et nationaux par défaut 20-15 Copyright © Oracle Corporation. • le caractère décimal et le séparateur de groupes de données. • les symboles utilisés pour a.M le mécanisme de tri par défaut • NLS_TERRITORY indique : – le numéro du jour et de la semaine – le format de date par défaut. B.. • la langue utilisée pour les jours et les mois et leur abréviation. Oracle9i Database Administration I 20-15 . • la séquence de tri par défaut des caractères.C. A. et B.. telles que : • la langue utilisée pour les messages Oracle.D.M. • le symbole monétaire ISO. • le calcul du numéro de semaine ISO.C. • le symbole monétaire national. P. A.m. Valeurs par défaut dépendantes de la langue et du territoire Paramètres d'initialisation NLS Le paramètre d'initialisation NLS_LANGUAGE détermine les valeurs par défaut des paramètres suivants : Colonne NLS_DATE_LANGUAGE Description Modifie explicitement la langue des noms de jour et de mois et de leur abréviation ainsi que celle des autres éléments de format de date.. Modifie la séquence de tri linguistique qu'utilise le serveur Oracle pour trier les caractères (la valeur de tri doit correspondre au nom d'une séquence de tri linguistique). NLS_SORT Oracle9i Database Administration I 20-16 . 20-16 Copyright © Oracle Corporation. Tous droits réservés. 2001.Valeurs par défaut dépendantes de la langue et du territoire Paramètre NLS_LANGUAGE NLS_DATE_LANGUAGE NLS_SORT NLS_TERRITORY NLS_CURRENCY NLS_ISO_CURRENCY NLS_DATE_FORMAT NLS_NUMERIC_CHARACTERS Valeurs AMERICAN AMERICAN BINARY AMERICA $ AMERICA DD-MON-RR . Italie Luxembourg Pays-Bas Portugal Espagne Suède Royaume-Uni Oracle9i Database Administration I 20-17 . le symbole de l'euro a été ajouté pour les territoires suivants : Autriche Belgique Danemark Finlande France Allemagne Grèce Irlande Les jeux de caractères ISO. Définit explicitement un nouveau format de date par défaut (la valeur doit correspondre à un modèle de format de date). NLS_NUMERIC_CHARACTERS Prise en charge de la double devise pour l'euro L'euro. le support double devise a été ajouté pour les territoires concernés. tels que WE8ISO8859P15 et la page de codes Microsoft WE8MSWIN1252 contiennent le code du symbole de l'euro. Définit explicitement le territoire dont le symbole monétaire ISO doit être utilisé. Le paramètre d'initialisation NLS_DUAL_CURRENCY permet de définir un second symbole monétaire pour la session utilisateur. la nouvelle devise de l'Union Européenne. Dans le cadre de la prise en charge de la double devise. Définit explicitement un nouveau caractère décimal et un nouveau séparateur de groupes de données.Valeurs par défaut dépendantes de la langue et du territoire (suite) Paramètres d'initialisation NLS (suite) Le paramètre NLS_TERRITORY définit les valeurs par défaut des paramètres suivants : Colonne NLS_CURRENCY NLS_ISO_CURRENCY NLS_DATE_FORMAT Description Définit explicitement un nouveau symbole monétaire national. a été introduit le 1er janvier 1999. Pour permettre sa prise en charge. Tous droits réservés. Définir le comportement dépendant de la langue pour la session Variable d'environnement NLS_LANG Cette variable d'environnement permet de définir la convention culturelle souhaitée pour un utilisateur.UTF8 • Autres variables d'environnement : – – – – – – – NLS_DATE_FORMAT NLS_DATE_LANGUAGE NLS_SORT NLS_NUMERIC_CHARACTERS NLS_CURRENCY NLS_ISO_CURRENCY NLS_CALENDAR 20-18 Copyright © Oracle Corporation. 2001. Chaque composant gère un sous-groupe de fonctions NLS : NLS_LANG=<language>_<territory>.Définir le comportement dépendant de la langue pour la session • Variable d'environnement : NLS_LANG=French_France. characterset : définit l'encodage de jeu de caractères de l'application client (normalement celui du terminal de l'utilisateur). Oracle9i Database Administration I 20-18 . La valeur NLS_LANG remplace n'importe quelle valeur des paramètres d'initialisation NLS.<charset> Où : Language : remplace la valeur de NLS_LANGUAGE et gère les mêmes fonctions que NLS_LANGUAGE. Territory : remplace la valeur de NLS_TERRITORY et gère les mêmes fonctions que NLS_TERRITORY. US7ASCII à NLS_LANG. Oracle suppose que les données envoyées ou reçues appartiennent au même jeu et aucune validation ou conversion n'est effectuée. Oracle9i Database Administration I 20-19 . Définir le comportement dépendant de la langue pour la session (suite) Variable d'environnement NLS_LANG (suite) NLS_LANG définit l'encodage de jeu de caractères d'un terminal client.. L'encodage de la base de données doit correspondre ou être équivalent à un "superjeu" de tous les encodages client. Oracle traitera alors ces caractères comme des caractères US7ASCII simple octet. Les données transmises entre le client et le serveur sont converties automatiquement entre les deux encodages. Toutes les fonctions de manipulation de chaîne SQL telles que SUBSTR ou LENGTH seront donc définies sur les octets et non sur les caractères et tous les caractères non-ASCII pourront être perdus suite à un export et un import dans une autre base de données. Les clients peuvent utiliser des encodages différents. Tous droits réservés. Lorsque les jeux de caractères de la base de données et du client sont identiques. vous pouvez stocker des caractères Simplified Chinese multioctets dans une base de données simple octet.Jeux de caractères dans l'architecture client-serveur NLS_LANG= <language>_<territory>. mais une mauvaise utilisation peut générer des problèmes d'incohérence des données. Considérons que le jeu de caractères de votre base de données est US7ASCII et que vous utilisez Simplified Chinese Windows comme terminal client. 20-19 Copyright © Oracle Corporation. En affectant le jeu de caractères client SIMPLIFIED CHINESE_HONGKONG. CHARACTER SET <charset> NATIONAL CHARACTER SET <ncharset> .<charset> NLS_NCHAR=<ncharset> CREATE DATABASE .. La conversion est transparente pour l'application client. Ce scénario offre de meilleures performances... 2001. tels que le stockage à partir d'un jeu de caractères autre que le jeu de la base de données. par exemple). ce qui permet de définir les caractéristiques NLS propres à chaque client. définissez la variable d'environnement ORA_NLS33 comme suit : $ORACLE_HOME/ocommon/nls/admin/data Il s'agit également du paramètre par défaut si vous ne définissez pas ORA_NLS33. Les variables suivantes ne peuvent être définies que dans l'environnement client : • NLS_CREDIT • NLS_DEBIT • NLS_DISPLAY • NLS_LANG • NLS_LIST_SEPARATOR • NLS_MONETARY Remarque : Ces paramètres sont décrits dans le manuel Oracle9i Globalization Support Manual. Sous UNIX.Définir le comportement dépendant de la langue pour la session (suite) Autres variables d'environnement Tous les paramètres d'initialisation NLS sont disponibles sous forme de variables d'environnement. Si vous affectez la variable d'environnement ORA_NLS33 à un répertoire non valide. vous ne pouvez créer la base de données qu'avec le jeu de caractères par défaut US7ASCII. perse ou Thaï bouddhique. La variable NLS_CALENDAR peut également être utilisée pour définir le calendrier qu'utilise le serveur (grégorien. Oracle9i Database Administration I 20-20 . 2001. il existe un package de base de données DBMS_SESSION. ’’’DD.MM. le format de date de la session est modifié. DBMS_SESSION. Oracle9i Database Administration I 20-21 .MM.YYYY’’’) . En outre. Outre l'exécution explicite des commandes ALTER SESSION.YYYY’. Tous droits réservés. Cette commande permet également de modifier toutes les variables d'environnement définies sur le client et le serveur. Dans l'exemple ci-dessus.SET_NLS(‘NLS_DATE_FORMAT’.Définir le comportement dépendant de la langue pour la session ALTER SESSION SET NLS_DATE_FORMAT=‘DD. Définir l'environnement dépendant de la langue pour la session Modifier les paramètres NLS Pour modifier les caractéristiques NLS d'une session. 20-21 Copyright © Oracle Corporation.SET_NLS qui utilise le nom et la valeur du paramètre. des outils tels que SQL*Plus lisent les variables d'environnement et exécutent la commande ALTER SESSION correspondante. utilisez la commande ALTER SESSION. Oracle9i Database Administration I 20-22 . La position alphabétique d'un caractère peut varier d'une langue à l'autre. les lettres présentant le même aspect possèdent la même valeur principale. Pour obtenir la liste complète des tris. Le premier passage sert à comparer la valeur principale de l'intégralité de la chaîne de la table principale et le second passage à comparer la valeur secondaire de la table secondaire.0 pour le classement multilingue 20-22 Copyright © Oracle Corporation. Pour effectuer le tri multilingue. Chaque langue peut ainsi trier correctement chaque caractère codé.Tri linguistique Il existe trois types de tri : • Le tri binaire. En règle générale. Oracle définit des lettres avec des différences diacritiques et de casse pour la même valeur principale. effectuée en fonction des valeurs binaires des caractères codés • Le tri monolingue – effectue deux passages. voir Oracle9i Globalization Support Manual. Oracle reconnaît 84 tris linguistiques (68 tris monolingues et 13 tris multilingues). A ce jour.0. 2001. Oracle effectue un tri monolingue en deux passages. mais des valeurs secondaires différentes. Tous droits réservés. Tri linguistique Un tri binaire est un mécanisme de tri conventionnel qui permet de trier les lettres en fonction des valeurs binaires utilisées pour coder les caractères. – basé sur les valeurs primaires et secondaires affectées à un caractère. • Le tri multilingue – basé sur la nouvelle norme ISO 14651 et – sur Unicode 3. Ce tri est ainsi plus performant que le tri binaire. Oracle utilise un mécanisme de tri qui repose sur une norme ISO (ISO14651) et sur Unicode 3. mais reste limité. Lorsque vous souhaitez comparer des chaînes. SQL> CREATE TABLE list ( num NUMBER(1). mais se trouve après z dans le tri binaire. Table created. def VARCHAR2(7) ). • multilingue avec French_M. Pour résoudre les problèmes de tri binaire. Tous droits réservés.Tri NLS • Le paramètre NLS_SORT indique le type de tri des caractères – Il est défini par la variable d'environnement NLS_LANG – Il peut être remplacé au niveau session • Fonction NLSSORT – Indique le type de tri des caractères – Permet de définir les tris au niveau interrogation 20-23 Copyright © Oracle Corporation. le serveur Oracle permet d'effectuer des tris linguistiques à l'aide du paramètre NLS_SORT. • monolingue avec French. Impact du support NLS sur le tri L'exemple suivant présente les trois types de tri : • binaire. Dans l'exemple. 2 3 4 word VARCHAR2(5). Tri NLS Par exemple. Oracle9i Database Administration I 20-23 . une liste de quatre termes français est créée dans une table. la lettre ä est triée avant la lettre b en français. 2001. Vous remarquerez que dans BINARY. et les accents. La valeur BINARY est affectée au paramètre NLS_SORT. Par exemple. e est placé avant è. 'gelée'. Session altered. 'frost'). de la droite vers la gauche. 'frozen'). (1. word. SQL> ALTER SESSION SET NLS_SORT = FRENCH. (3. NUM --2 3 1 4 WORD ----gelé gèle gelée gelez DEF ------frozen freezes frost freeze Oracle9i Database Administration I 20-24 . 'gelez'. SQL> INSERT INTO list VALUES 1 row created. e possède une valeur binaire inférieure à celle de è. def 2 FROM list 3 ORDER BY word. Session altered. (4. word. (2. 'gelé'. French est un tri monolingue qui effectue uniquement deux passages. SQL> INSERT INTO list VALUES 1 row created. les lettres sont triées de la gauche vers la droite. SQL> ALTER SESSION SET NLS_SORT = BINARY. SQL> SELECT num.Tri NLS (suite) Impact du support NLS sur le tri (suite) SQL> INSERT INTO list VALUES 1 row created. 'freeze'). 'freezes'). NUM --4 2 1 3 WORD ----gelez gelé gelée gèle DEF ------freeze frozen frost freezes La valeur French est ensuite affectée au paramètre NLS_SORT. def 2 FROM list 3 ORDER BY word. ce qui ne permet pas de saisir toutes les nuances de la langue française. Ce thème sera abordé dans le tri multilingue. SQL> INSERT INTO list VALUES 1 row created. SQL> SELECT num. en français. dans l'encodage de jeux de caractères. En effet. 'gèle'. NUM --3 2 1 4 WORD ----gèle gelé gelée gelez DEF ------freezes frozen frost freeze NLSSORT permet de définir le tri au niveau interrogation. Session altered. le tri multilingue est représenté par French_M. word. Vous remarquerez que les résultats sont identiques à ceux de l'exemple ci-dessus.'NLS_SORT=FRENCH_M'). NUM --3 2 1 4 WORD ----gèle gelé gelée gelez DEF ------freezes frozen frost freeze Oracle9i Database Administration I 20-25 . Notez les différences par rapport au tri précédent. def 2 FROM list 3 ORDER BY NLSSORT(word. mais le tri est modifié au niveau interrogation. def 2 FROM list 3 ORDER BY word. Session altered. SQL> SELECT num. SQL> SELECT num.Tri NLS (suite) Impact du support NLS sur le tri (suite) Enfin. la valeur BINARY est affectée au paramètre NLS_SORT au niveau session. word. SQL> ALTER SESSION SET NLS_SORT=BINARY. SQL> ALTER SESSION SET NLS_SORT = FRENCH_M. Dans l'exemple suivant. ‘NLS_DATE_LANGUAGE=FRENCH’) FROM employees. TO_CHAR(sal. ces fonctions peuvent remplacer les valeurs définies par l'environnement. ‘NLS_NUMERIC_CHARACTERS=‘‘.Mon.YYYY’. 2001. Certaines fonctions SQL nécessitent de définir explicitement des paramètres NLS dans la liste des paramètres. Tous droits réservés. Utiliser des paramètres NLS dans des fonctions SQL Les fonctions SQL de type "character" supportent les caractères simple octet ou multioctets.’9G999D99’.’’’) FROM emp.Utiliser des paramètres NLS dans des fonctions SQL SELECT TO_CHAR(hire_date.’DD. En conséquence.. 20-26 Copyright © Oracle Corporation. Oracle9i Database Administration I 20-26 . SELECT ename. Mai.Avr.Jan.Fev.YYYY'. 'DD.Fev.1997 19.2000 11.2000 11.Mar.1999 04.1998 23.Avr.Mar. 2 'NLS_DATE_LANGUAGE=FRENCH') AS "Hire Date" 3 FROM employees.Nov.1997 24.Mar.1999 24.1996 19.Jan.2000 21.Mon.Mar.Dec.1998 11.2000 Oracle9i Database Administration I 20-27 .Mar.2000 24.Mar.Mai.1997 23.Exemples d'utilisation de paramètres NLS dans des fonctions SQL (suite) SQL> SELECT TO_CHAR(hire_date.1998 24.2000 23.1999 24.Mar.1998 23.1998 24.Avr.1997 03.1999 21.Nov. Hire Date ----------15.Jan. 00 11.00 7.000.00 Oracle9i Database Administration I 20-28 .00 9.100.00 8.600. LAST_NAME ------------------------Doran Sewall Vishney Greene Marvins Lee Ande Banda Ozer Bloom Fox Smith Bates Kumar Abel Hutton Taylor Livingston Grant TO_CHAR(SA ---------7.00 9.'NLS_NUMERIC_CHARACTERS=''.600.400.00 6.00 6.500.400.00 10.000.00 6.'99G999D99'.000.500.200.00 6.00 8.00 7.00 10.''') FROM employees.Exemples d'utilisation de paramètres NLS dans des fonctions SQL (suite) SQL> SELECT last_name.000.500.00 7. 2 3 TO_CHAR(salary.800.500.00 7.200.00 7.00 8.400.00 11..800.300. rm" pour les mois du calendrier romain • "IW" pour les numéros de semaine ISO • "IYYY. IY" et "I" pour les années ISO Oracle9i Database Administration I 20-29 . TO_DATE et TO_NUMBER.Exemples d'utilisation de paramètres NLS dans des fonctions SQL (suite) Les fonctions SQL suivantes utilisent des paramètres NLS : Fonction TO_DATE TO_NUMBER Paramètre NLS NLS_DATE_LANGUAGE NLS_CALENDAR NLS_NUMERIC_CHARACTER S NLS_CURRENCY NLS_ISO_CURRENCY NLS_DATE_LANGUAGE NLS_NUMERIC_CHARACTER S NLS_CURRENCY NLS_ISO_CURRENCY NLS_CALENDAR TO_CHAR NLS_UPPER. IYY. NLSSORT Eléments de masque de format de nombre • "D" pour séparateur décimal • "G" pour séparateur de groupe (milliers) • "L" pour symbole monétaire national • "C" pour symbole monétaire national ISO • "U" pour symbole de la double devise. NLS_SORT NLS_LOWER. NLS_INITCAP. Des éléments de masque de format ont été définis pour des fonctions telles que TO_CHAR. utilisé pour l'euro Eléments de masque de format de date • "RM. Support d'indexation linguistique • Indexation linguistique • Niveau de performances élevé avec le tri local CREATE INDEX list_word ON list (NLSSORT(word. Tous droits réservés. Support d'indexation linguistique Vous pouvez spécialiser les index fonctionnels pour créer des index triés selon la langue définie. Comportement linguistique des opérateurs de comparaison NLS_COMP est un paramètre dynamique d'initialisation qui gère la manière dont les opérateurs de comparaison. • Paramètre NLS_COMP de comparaison linguistique 20-30 Copyright © Oracle Corporation. Oracle9i Database Administration I 20-30 . la comparaison s'effectue en fonction de la valeur binaire de la chaîne. > et = traitent le tri linguistique. Lorsque la valeur ANSI est affectée au paramètre. les opérateurs de comparaison utilisent des séquences de tri linguistique pour déterminer le résultat de l'opération en fonction du paramètre NLS_SORT. ce qui permet d'exécuter des interrogations basées sur des index sur des données triées selon les règles linguistiques nationales. tels que <. ‘NLS_SORT = French_M’)). Lorsque la valeur par défaut BINARY est affectée au paramètre. La fonction SQL NLSSORT renvoie la chaîne d'octets utilisée pour trier le premier paramètre dans la séquence de tri linguistique. 2001. un index créé sur WORD est trié selon l'ordre French_M. Dans cet exemple. Exemple: $sqlldr control=utl1case. les données sont converties dans le jeu de caractères de la session défini par le paramètre NLS_LANG. Lors de l'import. 20-31 Copyright © Oracle Corporation.ctl characterset=WE8ISO9959P1 Oracle9i Database Administration I 20-31 . les données sont converties du jeu de caractères du fichier d'export dans celui de la base de données. Lorsque vous utilisez la conversion de données par chemin conventionnel. Le jeu de caractères du paramètre indique le jeu de caractères à utiliser dans chaque fichier de données. Si vous utilisez la conversion de données par chemin direct. les données sont automatiquement converties du jeu de caractères du fichier d'export dans celui de la base de données cible. – Chemin direct : Les données sont directement converties dans le jeu de caractères de la base. Import et chargement de données avec le support NLS Le fichier d'export est exporté avec le jeu de caractères de la base de données source. Tous droits réservés.Import et chargement de données avec le support NLS • Lors de l'import. L'utilitaire SQL*Loader peut également convertir le jeu de caractères des fichiers de données dans le jeu de caractères de la base de données. 2001. • Utilitaire SQL*Loader : – Chemin conventionnel : Les données sont converties dans le jeu de caractères de la session défini par le paramètre NLS_LANG. Le fichier de contrôle indique à l'utilitaire SQL*Loader comment interpréter le fichier de données. les données sont directement converties dans le jeu de caractères de la base. NLS_NCHAR_CHARACTERSET) • VALUE 20-32 Copyright © Oracle Corporation. PARAMETER ----------------------NLS_CHARACTERSET NLS_NCHAR_CHARACTERSET 2 rows selected. 2001. VALUE -----------------------------WE8ISO8859P1 AL16UTF16 Oracle9i Database Administration I 20-32 . lancez l'interrogation suivante : SQL> SELECT parameter. Obtenir des informations sur les jeux de caractères Pour afficher le jeu de caractères de la base de données et le jeu de caractères nationaux.Obtenir des informations sur les jeux de caractères NLS_DATABASE_PARAMETERS: • PARAMETER (NLS_CHARACTERSET. value 2 FROM nls_database_parameters 3 WHERE parameter LIKE '%CHARACTERSET%'. Tous droits réservés. ---------------------------- Oracle9i Database Administration I 20-33 . Obtenir des informations sur les paramètres NLS Cette vue contient uniquement les valeurs des paramètres définis explicitement dans le fichier init<SID>. Tous droits réservés. SQL> SELECT * FROM nls_instance_parameters. 2001. PARAMETER NLS_LANGUAGE NLS_TERRITORY NLS_SORT NLS_DATE_LANGUAGE NLS_DATE_FORMAT NLS_CURRENCY NLS_NUMERIC_CHARACTERS NLS_ISO_CURRENCYNLS_CALENDAR NLS_TIME_FORMAT NLS_TIMESTAMP_FORMAT VALUE AMERICAN AMERICA -----------------------------.Obtenir des informations sur les paramètres NLS • NLS_INSTANCE_PARAMETERS: – PARAMETER (paramètres d'initialisation explicitement définis) – VALUE • NLS_SESSION_PARAMETERS: – PARAMETER (paramètres de session) – VALUE 20-33 Copyright © Oracle Corporation.ora. SSXFF AM HH.MI. PARAMETER NLS_LANGUAGE NLS_TERRITORY NLS_CURRENCY NLS_ISO_CURRENCY NLS_NUMERIC_CHARACTERS NLS_CALENDAR NLS_DATE_FORMAT NLS_DATE_LANGUAGE NLS_SORT NLS_TIME_FORMAT NLS_TIMESTAMP_FORMAT NLS_TIME_TZ_FORMAT NLS_TIMESTAMP_TZ_FORMAT NLS_DUAL_CURRENCY NLS_COMP NLS_LENGTH_SEMANTICS NLS_NCHAR_CONV_EXCP 17 rows selected.MI. VALUE AMERICAN AMERICA $ AMERICA .Obtenir des informations sur les paramètres NLS (suite) NLS_TIME_TZ_FORMAT NLS_TIMESTAMP_TZ_FORMAT NLS_DUAL_CURRENCY NLS_COMP NLS_LENGTH_SEMANTICS NLS_NCHAR_CONV_EXCP 17 rows selected.MI.MI. SQL> SELECT * FROM nls_session_parameters..SSXFF AM TZR DD-MON-RR HH.---------------------------BYTE FALSE Oracle9i Database Administration I 20-34 . La vue suivante contient les paramètres de session.SSXFF AM DD-MON-RR HH. GREGORIAN DD-MON-RR AMERICAN BINARY HH.SSXFF AM TZR $ BINARY BYTE FALSE -----------------------------. VALUE -------------AMERICAN GERMAN FRENCH CANADIAN FRENCH SPANISH ITALIAN DUTCH SWEDISH NORWEGIAN PARAMETER --------LANGUAGE LANGUAGE LANGUAGE LANGUAGE LANGUAGE LANGUAGE LANGUAGE LANGUAGE LANGUAGE ...Obtenir des informations sur les paramètres NLS • V$NLS_VALID_VALUES: – PARAMETER (LANGUAGE. TERRITORY. Tous droits réservés. Oracle9i Database Administration I 20-35 . 2001. CHARACTERSET) – VALUE • V$NLS_PARAMETERS: – PARAMETER (paramètres de session NLS. NLS_CHARACTERSET) – VALUE 20-35 Copyright © Oracle Corporation. Obtenir des informations sur les paramètres NLS Affichez la liste de toutes les valeurs valides des paramètres NLS : SQL> SELECT * FROM v$nls_valid_values 2 WHERE parameter='LANGUAGE'. SORT. MI.SSXFF AM TZR $ AL16UTF16 BINARY BYTE FALSE -----------------------------. utilisez la syntaxe suivante : SQL> SELECT * FROM v$nls_parameters.MI. GREGORIAN DD-MON-RR AMERICAN WE8ISO8859P1 BINARY HH. Elle renvoie la liste des jeux de caractères. Par exemple. VALUE AMERICAN AMERICA $ AMERICA .MI.MI.SSXFF AM TZR DD-MON-RR HH..SSXFF AM HH. DBA_TAB_COLUMNS crée cette colonne à partir de la vue COL$. Remarque : Différentes vues contiendront une nouvelle colonne CHARACTER_SET_NAME qui indique le nom du jeu de caractères : CHAR_CS pour le jeu de caractères de la base de données et NCHAR_CS pour le jeu de caractères nationaux.---------------------------- Oracle9i Database Administration I 20-36 .Obtenir des informations sur les paramètres NLS (suite) Remarque : La vue V$NLS_VALID_VALUES affiche le contenu du fichier d'initialisation des données NLS. tris linguistiques et définitions de territoire fournis avec une version donnée de la base. Pour afficher les valeurs en cours des paramètres NLS. langues.SSXFF AM DD-MON-RR HH. Cette liste peut contenir des définitions qui ne sont plus supportées ou qui sont utilisées en interne. PARAMETER NLS_LANGUAGE NLS_TERRITORY NLS_CURRENCY NLS_ISO_CURRENCY NLS_NUMERIC_CHARACTERS NLS_CALENDAR NLS_DATE_FORMAT NLS_DATE_LANGUAGE NLS_CHARACTERSET NLS_SORT NLS_TIME_FORMAT NLS_TIMESTAMP_FORMAT NLS_TIME_TZ_FORMAT NLS_TIMESTAMP_TZ_FORMAT NLS_DUAL_CURRENCY NLS_NCHAR_CHARACTERSET NLS_COMP NLS_LENGTH_SEMANTICS NLS_NCHAR_CONV_EXCP 19 rows selected. Tous droits réservés. Il identifie la zone de conversion possible des caractères et de troncature des données. par balayage de la base de données. 20-37 Copyright © Oracle Corporation. vous pouvez utiliser le nouvel Oracle Locale Builder. de personnaliser et de définir différentes classes Locale. Il convient d'utiliser cet outil d'analyse avant de procéder à la conversion d'un jeu de caractères. – permet de visualiser. contrôle toutes les données alphanumériques et génère une synthèse de l'analyse de la base. • Oracle Locale Builder : – offre une interface graphique simple d'utilisation. si le jeu de caractères peut être modifié. signale les éventuels problèmes de migration. Si vous devez personnaliser l'une des définitions existantes ou en créer une nouvelle. modifier et créer des définitions "Locale". Oracle9i Database Administration I 20-37 . – fournit des états sur les problèmes possibles et les solutions. Utiliser des paramètres NLS dans des fonctions SQL Outil d'analyse de jeu de caractères (Character Set Scanner) Cet outil est un utilitaire en mode ligne de commande qui facilite la conversion des jeux de caractères. qui propose une interface graphique conviviale permettant de visualiser. l'effort requis et les largeurs de colonne qui pourraient être augmentées. 2001. Il évalue en outre la faisabilité. des jeux de caractères et des tris linguistiques.Utiliser des paramètres NLS dans des fonctions SQL • L'outil d'analyse de jeu de caractères : – détermine. des territoires. Oracle Locale Builder Le serveur Oracle9i offre un vaste jeu de définitions "Locale" incluant des langues. Oracle9i Database Administration I 20-38 .Synthèse Ce chapitre vous a permis d'apprendre à : • choisir un jeu de caractères de base de données et un jeu de caractères nationaux pour la base de données • utiliser les différents types de paramètre de support NLS pour le serveur ou la session 20-38 Copyright © Oracle Corporation. 2001. Tous droits réservés. Présentation de l'exercice 20 Remarque : Vous pouvez réaliser cet exercice avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet. 2001. Tous droits réservés. vous allez : • vérifier le jeu de caractères de la base de données et le jeu de caractères nationaux • identifier les valeurs NLS valides • définir des paramètres NLS 20-39 Copyright © Oracle Corporation.Présentation de l'exercice 20 Dans cet exercice. Oracle9i Database Administration I 20-39 . Dans DUAL. sélectionnez sysdate. Remplacez la valeur de NLS_LANGUAGE par FRENCH. assurez-vous que toutes les années s'affichent selon un format à quatre chiffres. Oracle9i Database Administration I 20-40 .Exercice 20 : utiliser la prise en charge de la globalisation 1 Vérifiez le jeu de caractères de la base de données et le jeu de caractères nationaux 2 Quelles sont les valeurs valides pour le jeu de caractères de la base de données ? 3 Dans cette session. Tous droits réservés. . 2001.Créer une base de données Oracle9i dans un environnement UNIX Copyright © Oracle Corporation. Remarque : Le présent document part du principe que le serveur Oracle9i a été installé dans un répertoire nommé ORACLE_HOME.ora. Par ailleurs.Introduction Procédure de création d'une base de données La création d'une base de données utilisable s'effectue en six étapes : trois étapes de création et trois autres étapes facultatives visant à rendre la base utilisable. • Exécutez les scripts catalog. • Définissez les variables d'environnement du système d'exploitation ORACLE_HOME.sql. • Créez un tablespace pour les données utilisateur et tout autre tablespace qui pourrait s'avérer nécessaire pour répondre aux besoins de la base de données. PATH et LD_LIBRARY_PATH. • Exécutez la commande CREATE DATABASE dans SQL*Plus. Oracle9i Database Administration I A-2 . • Exécutez le script pupbld. ORACLE_SID. il n'aborde pas l'installation du serveur.sql et catproc.sql. • Modifiez/créez le fichier de paramètres initsid. 1 % setenv ORACLE_SID db01 % setenv PATH $PATH:$ORACLE_HOME/bin % setenv LD_LIBRARY_PATH /usr/lib:$ORACLE_HOME/lib Oracle9i Database Administration I A-3 . ORACLE_SID représente un nom défini par l'utilisateur affecté à une instance d'une base de données.1. PATH. PATH définit les répertoires dans lesquels le système d'exploitation recherche les exécutables. export LD_LIBRARY_PATH Shell C : % setenv ORACLE_HOME /u01/oracle9i/product/9. export ORACLE_SID $ PATH=/usr/bin:/usr/ccs/bin:$ORACLE_HOME/bin. Le système d'exploitation utilise cette variable (identificateur du système) pour distinguer les différentes instances de base de données qui s'exécutent sur la machine. Les exécutables Oracle9i se trouvent dans le répertoire $ORACLE_HOME/bin et doivent être ajoutés à la variable PATH. LD_LIBRARY_PATH. ORACLE_HOME représente le chemin d'accès au répertoire principal d'installation du serveur Oracle9i.0. export ORACLE_HOME $ ORACLE_SID=db01. Exemple Shell Bourne ou Korn : $ ORACLE_HOME=/u01/oracle9i/product/9. Le répertoire doit être fourni par la personne qui a procédé à l'installation du serveur. Vous devez également définir quatre variables d'environnement : ORACLE_HOME. tels que SQL*Plus. export PATH $ LD_LIBRARY_PATH=/usr/lib:$ORACLE_HOME/lib.Configurer l'environnement Vous devez configurer l'environnement UNIX et installer le serveur Oracle9i avant de créer la base de données.0. LD_LIBRARY_PATH définit les répertoires de stockage des fichiers bibliothèque requis. ORACLE_SID. généralement l'administrateur UNIX ou le DBA. Conservez-le en tant que sauvegarde et ne le modifiez pas. Les valeurs des paramètres background_dump_dest.ora. Affectez-lui la valeur AUTO dans le fichier d'initialisation. qui indique le nom utilisé pour désigner une instance de la base. Quelques paramètres doivent être configurés. le dernier sera utilisé. Créez une copie du fichier contenant le nom de la variable ORACLE_SID. Oracle9i Reference propose de placer les paramètres dans l'ordre alphabétique afin d'éviter les doublons. Son utilisation est différente de celle du paramètre ORACLE_SID. par exemple : db_name.ora Le fichier init. Les valeurs de db_name et d'ORACLE_SID sont souvent identiques.ora affecte la base de données au démarrage. si un paramètre est mentionné plusieurs fois. Assurez-vous de configurer ce fichier avant de créer la base de données. mais également son mode de création. mais ce n'est pas une obligation.ora configuré par l'utilisateur est lu à chaque démarrage de la base de données.ora Le fichier texte initsid. Exemple $ cd $ORACLE_HOME/dbs $ cp init. core_dump_dest et undo_management. db_name indique le nom de la base de données. contient les fichiers trace pour les processus d'arrière-plan et le fichier alert. Un fichier init.ora type contient de nombreux commentaires présentant des propositions de configuration des paramètres. En revanche. Les paramètres de ce fichier ne doivent pas figurer dans un ordre précis. Les paramètres de ce fichier permettent d'initialiser les paramètres de la base. il identifie les fichiers de contrôle à créer. db_name doit correspondre (au niveau de la casse également) au nom de base de données utilisé dans la commande CREATE DATABASE à la création de la base.Modifier initsid. Dans le fichier initsid. • user_dump_dest contient les fichiers trace utilisateur. • background_dump_dest Un exemple de fichier initdb01. user_dump_dest.ora initdb01.ora Modifier/créer le fichier initsid.ora type est placé dans le répertoire $ORACLE_HOME/dbs à l'installation du serveur Oracle9i. Le paramètre d'initialisation control_files désigne le nom et le chemin d'accès complet des fichiers de contrôle de la base de données. background_dump_dest. La configuration des paramètres du fichier initsid. Le paramètre d'initialisation undo_management détermine si les données d'annulation sont traitées automatiquement par le serveur Oracle ou manuellement par le DBA. user_dump_dest et core_dump_dest indiquent le chemin d'accès complet de l'emplacement de stockage des fichiers trace : • core_dump_dest contient les dumps noyau (core dumps) générés par la base de données.ora est présenté à la fin de cette annexe. control_files. Lors de la création de la base. Oracle9i Database Administration I A-4 .log. un administrateur doit créer un fichier de mots de passe pour la base de données et le mot de passe affecté à SYS dans le fichier de mots de passe ne sera pas utilisé. L'utilitaire SQL*Plus d'Oracle intervient dans la création de la base de données. Créez un script SQL contenant la commande CREATE DATABASE (un exemple de script de création de base de données est présenté à la fin de cette annexe). Connectez-vous à SQL*Plus sous l'ID utilisateur SYS AS SYSDBA selon l'une des méthodes ci-dessus. Démarrez la base de données en mode NOMOUNT.ora. Oracle9i Database Administration I A-5 . la taille et l'emplacement du tablespace SYSTEM et des tablespaces TEMPORARY et d'annulation (UNDO) et le jeu de caractères de la base de données (cette liste n'est pas exhaustive). S'il ne fait pas partie de ce groupe. L'exécutable UNIX de SQL*Plus est sqlplus. 4. vous pouvez créer la base de données. 3. La commande CREATE DATABASE permet de créer une base de données Oracle. 2. Lorsque vous créez une base de données. $ sqlplus 'sys/oracle as sysdba' ou $ sqlplus /nolog SQL> connect sys/oracle as sysbda Procédure de création et d'exécution de l'instruction SQL : 1. Si l'utilisateur UNIX utilisé pour la connexion à SQL*Plus fait partie du groupe de l'administrateur défini à l'installation du serveur Oracle9i.Créer la base de données Après avoir configuré l'environnement et le fichier initsid. vous pouvez appliquer la syntaxe suivante : $ sqlplus '/ as sysdba ' ou $ sqlplus /nolog SQL> connect / as sysdba 2. Elle indique le nombre de fichiers journaux ainsi que leur emplacement. La syntaxe ci-dessous considère que le mot de passe affecté à SYS est oracle. Exécutez le script SQL. Connectez-vous à SQL*Plus sous cet ID utilisateur et ce rôle selon l'une des méthodes suivantes : 1. le serveur Oracle9i ne connaît que l'utilisateur SYS et le rôle SYSDBA. Créer la base de données (suite) Exemple % sqlplus 'sys/oracle as sysdba' SQL> startup nomount ORACLE instance started.rdo') SIZE 10M. Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers SQL> @crdbdb01.dbf' SIZE 100M AUTOEXTEND ON NEXT 5M MAXSIZE 150M DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '$HOME/ORADATA/u02/temp_01_db01.sql SQL> CREATE DATABASE db01 2 3 4 5 6 7 8 9 10 11 12 . Oracle9i Database Administration I A-6 .dbf' SIZE 15M AUTOEXTEND ON NEXT 5M MAXSIZE 30M CHARACTER SET WE8ISO8859P1 NATIONAL CHARACTER SET AL16UTF16 21790532 bytes 278340 bytes 16777216 bytes 4194304 bytes 540672 bytes Statement processed.rdo') SIZE 10M DATAFILE '$HOME/ORADATA/u01/system_01_db01. LOGFILE GROUP 1 ('$HOME/ORADATA/u03/log_01_01_db01. GROUP 2 ('$HOME/ORADATA/u03/log_02_01_db01. Exécuter pupbld.sql crée les vues du dictionnaire de données tandis que catproc. L'interrogation suivante renvoie les objets non valides.Exécuter des scripts Les scripts catalog.object_type dba_objects status = 'INVALID' ORDER BY owner.object_name.sql Le script pupbld.sql crée les packages et procédures nécessaires à l'utilisation de PL/SQL.sql.sql et catproc. vérifiez que les objets sont valides. situé dans le répertoire $ORACLE_HOME/sqlplus/admin. Exemple % sqlplus /nolog SQL> CONNECT / AS SYSDBA SQL> @$ORACLE_HOME/rdbms/admin/catalog. doivent être exécutés une fois la base de données créée. SQL> SELECT 2 3 4 FROM WHERE owner. catalog.object_name. Ces deux scripts doivent être exécutés sous l'ID utilisateur SYS une fois que la base de données est ouverte. Ce script doit être exécuté sous l'ID utilisateur SYS. crée la table Product User Profile et les procédures associées. $ sqlplus system/manager SQL> @$ORACLE_HOME/sqlplus/admin/pupbld. situés dans le répertoire $ORACLE_HOME/rdbms/admin. la durée totale d'exécution des deux scripts se situe entre 35 et 65 minutes. Son exécution permet. entre autres. d'éviter l'affichage d'un message d'avertissement à chaque connexion d'un utilisateur à SQL*Plus. Une fois les scripts exécutés.sql.sql Oracle9i Database Administration I A-7 .object_type.sql SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql Lorsque le système n'est pas occupé. les tablespaces suivants sont créés à l'installation d'une base de données. Exemple SQL> create tablespace USERS 2 3 4 5 datafile '$HOME/ORADATA/u03/users_01_db01.dbf' SIZE 25M PERMANENT EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K SEGMENT SPACE MANAGEMENT auto. En principe. Oracle9i Database Administration I A-8 . • • • • • Modifiez le fichier initsid.sql et catproc. ORACLE_SID.ora. Créez les tablespaces nécessaires à la base de données.sql. PATH et LD_LIBRARY_PATH.Créer des tablespaces Créez d'autres tablespaces nécessaires à l'installation.sql. Exécutez le script pupbld. Synthèse • Définissez les variables ORACLE_HOME. • users données utilisateur • tools objets créés par l'utilisateur SYSTEM (facultatif) Ces tablespaces doivent être créés. Exécutez les scripts catalog. Exécutez la commande CREATE DATABASE. ctl core_dump_dest=$HOME/ADMIN/CDUMP db_block_size=4096 db_cache_size=4M db_domain=world db_name=db01 global_names=TRUE instance_name=db01 max_dump_file_size=10240 remote_login_passwordfile=exclusive service_names=db01 shared_pool_size=8M undo_management=AUTO user_dump_dest=$HOME/ADMIN/UDUMP Exemple de script de création d'une base de données CREATE DATABASE db01 LOGFILE GROUP 1 ('$HOME/ORADATA/u03/log_01_01_db01.dbf' SIZE 100M AUTOEXTEND ON NEXT 5M MAXSIZE 150M DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '$HOME/ORADATA/u02/temp_01_db01.rdo') SIZE 10M DATAFILE '$HOME/ORADATA/u01/system_01_db01.Exemple de fichier initdb01.ora background_dump_dest=$HOME/ADMIN/BDUMP compatible=9. GROUP 2 ('$HOME/ORADATA/u03/log_02_01_db01. Oracle9i Database Administration I A-9 .dbf' SIZE 15M AUTOEXTEND ON NEXT 5M MAXSIZE 30M CHARACTER SET WE8ISO8859P1 NATIONAL CHARACTER SET AL16UTF16 .0.rdo') SIZE 10M.0 control_files=$HOME/ORADATA/u01/ctrl_01_sid. Oracle9i Database Administration I A-10 . .Gérer manuellement les données d'annulation (segments d'annulation) Copyright © Oracle Corporation. Tous droits réservés. 2001. Oracle9i Database Administration I B-2 . 2001.Objectifs A la fin de ce chapitre. Tous droits réservés. vous pourrez : • créer des segments d'annulation à l'aide des paramètres de stockage appropriés • gérer des segments d'annulation • prévoir le nombre de segments d'annulation et leur taille • résoudre les problèmes courants liés aux segments d'annulation B-2 Copyright © Oracle Corporation. B-3 Copyright © Oracle Corporation. Tous droits réservés. 2001.Créer des segments d'annulation CREATE ROLLBACK SEGMENT rbs01 TABLESPACE rbs STORAGE ( INITIAL 100K NEXT 100K MINEXTENTS 20 MAXEXTENTS 100 OPTIMAL 2000K ). Créer des segments d'annulation Utilisez la commande suivante pour créer un segment d'annulation (rollback segment) : CREATE [PUBLIC] ROLLBACK SEGMENT rollback_segment [TABLESPACE tablespace] [STORAGE ( [INITIAL integer[K|M]] [NEXT [MINEXTENTS [OPTIMAL ) ] integer[K|M]] integer] {integer[K|M]|NULL}] [MAXEXTENTS {integer|UNLIMITED}] Oracle9i Database Administration I B-3 . Oracle9i Database Administration I B-4 . • Affectez au paramètre OPTIMAL une valeur permettant de réduire l'allocation et la libération d'extents de segment d'annulation. • La valeur du paramètre OPTIMAL. • Le paramètre PCTINCREASE d'un segment d'annulation ne peut pas être défini. • N'affectez pas la valeur UNLIMITED au paramètre MAXEXTENTS afin d'éviter toute extension inutile d'un segment d'annulation. • Placez toujours les segments d'annulation dans un tablespace distinct exclusif pour limiter la contention et la fragmentation. qui correspond à l'espace utilisé par les extents (ensembles de blocs contigus) dont le nombre est défini par le paramètre MINEXTENTS. en raison d'une erreur de programme. le paramètre MINEXENTS doit posséder au moins la valeur 2. et éventuellement des fichiers de données. si vous la définissez.Créer des segments d'annulation (suite) Restrictions • Un segment d'annulation peut être défini comme étant public ou privé (attribut par défaut) lors de sa création et ne peut pas être modifié. Il possède toujours la valeur 0. Instructions • Utilisez toujours INITIAL = NEXT pour les segments d'annulation pour vous assurer que tous les extents sont de même taille. doit être au moins égale à la taille initiale du segment d'annulation. • Pour un segment d'annulation. Exécutez la commande suivante pour affecter un segment d'annulation spécifique à une transaction : SET TRANSACTION USE ROLLBACK SEGMENT rollback_segment Si vous n'exécutez pas cette commande. Une transaction écrit une entrée à son emplacement en cours dans le segment d'annulation et avance le pointeur en cours d'une distance équivalente à la taille de l'entrée. le serveur Oracle affecte à la transaction le segment d'annulation qui contient le moins grand nombre de transactions. un segment d'annulation doit lui être affecté. Oracle9i Database Administration I B-5 . Tous droits réservés. Allouer un segment d'annulation Lorsqu'une transaction commence. Utiliser les extents Les transactions utilisent des extents d'un segment d'annulation dans une procédure séquentielle circulaire dans laquelle elles passent d'un extent à l'autre lorsque l'extent en cours est plein.Transactions et segments d'annulation 1 2 Transaction 1 Transaction 2 4 3 Extent actif Extent inactif B-5 Copyright © Oracle Corporation. 2001. mais un bloc de segment d'annulation ne contient les données que d'une seule et unique transaction. Plusieurs transactions peuvent écrire dans le même extent d'un segment d'annulation. Lorsque le dernier extent (4) du segment d'annulation est plein. Lorsque l'extent 3 est plein. Un extent est libre ou inactif lorsque aucune transaction en cours ne l'utilise. Cette opération est appelée "wrap". 4. A mesure que les deux transactions génèrent d'autres informations d'annulation. Lorsque les transactions commencent. deux transactions sont associées à un segment d'annulation contenant quatre extents. 2.Allouer un segment d'annulation (suite) Exemple Dans l'exemple de la diapositive. Oracle9i Database Administration I B-6 . c'est-à-dire lorsque toutes les transactions qui écrivent des données dans l'extent sont terminées. les transactions écrivent les données dans l'extent suivant de l'anneau. 3. elles se mettent à écrire les données dans l'extent 3 du segment d'annulation. les transactions peuvent utiliser le premier extent (1) de l'anneau s'il est libre ou inactif. à savoir l'extent 4. elles continuent à écrire dans l'extent 3. 1. La taille d'un segment d'annulation peut ainsi augmenter jusqu'à atteindre le nombre maximum d'extents défini par le paramètre MAXEXTENTS. le pointeur revient au début du premier extent. passe à l'extent suivant lorsque tous les blocs de l'extent en cours sont utilisés et qu'une transaction nécessite un autre bloc pour obtenir plus d'espace. Cette opération est une extension. ou en-tête du segment d'annulation. Oracle9i Database Administration I B-7 . Le pointeur ne peut passer à l'extent suivant que si aucune transaction n'est en cours d'exécution dans cet extent. Si l'extent suivant est utilisé. Lorsque le dernier extent est plein. Le pointeur ne peut pas ignorer un extent. 2001. Tous droits réservés.Augmentation de la taille des segments d'annulation 1 4 2 3 5 4 Extent actif Extent inactif Nouvel extent 1 2 3 B-7 Copyright © Oracle Corporation. Augmentation de la taille des segments d'annulation Le pointeur. la transaction alloue un extent supplémentaire au segment d'annulation. Paramètre OPTIMAL Le paramètre OPTIMAL définit la taille en octets à laquelle un segment d'annulation doit revenir. La libération d'extents n'a pas lieu dès la fin des transactions. mais il peut interrompre l'opération si l'extent suivant à libérer est en cours d'utilisation. Oracle9i Database Administration I B-8 . Tous droits réservés. Si vous définissez le paramètre OPTIMAL. parce qu'ils sont peu susceptibles d'être utilisés pour la cohérence en lecture. Le serveur Oracle tente de libérer des extents jusqu'à ce que la taille du segment d'annulation soit égale à la valeur du paramètre OPTIMAL. Les extents sont libérés lorsque les deux conditions suivantes sont vraies : • la taille en cours du segment d'annulation est supérieure à la valeur du paramètre OPTIMAL. Le serveur Oracle libère toujours les extents inactifs les plus anciens.Réduction de la taille des segments d'annulation 6 5 4 1 2 1 6 2 3 3 Extent actif OPTIMAL Extent inactif B-8 Copyright © Oracle Corporation. • il existe des extents contigus inactifs. 2001. Elle n'est exécutée que lorsque l'en-tête passe d'un extent à l'autre. un segment d'annulation peut libérer de l'espace lorsque les transactions qui ont provoqué l'augmentation de la taille du segment d'annulation sont terminées. Ce paramètre permet de réduire les pertes d'espace dans un segment d'annulation. si possible. 2001. Commande ALTER ROLLBACK SEGMENT Par défaut. définissez le nom du segment dans le fichier de paramètres. Le nombre de segments d'annulation qu'une instance peut mettre en ligne est limité par le paramètre MAX_ROLLBACK_SEGMENTS. vous devez définir le paramètre d'initialisation suivant : ROLLBACK_SEGMENTS=(rbs01. Affectez à ce paramètre une valeur supérieure d'une unité au nombre de segments d'annulation non SYSTEM nécessaires à l'instance. Pour garantir qu'une instance met toujours un segment d'annulation en ligne. Syntaxe Utilisez la commande suivante pour rendre un segment d'annulation disponible : ALTER ROLLBACK SEGMENT rollback_segment ONLINE.Mettre des segments d'annulation en ligne • Utilisez la commande suivante pour rendre un segment d'annulation disponible : ALTER ROLLBACK SEGMENT rbs01 ONLINE. Un segment d'annulation n'est en ligne que jusqu'à ce que l'instance soit arrêtée. comme indiqué dans l'exemple ci-dessous : ROLLBACK_SEGMENTS=(rbs01. • Pour vous assurer que les segments d'annulation seront mis en ligne au démarrage. rbs02) Oracle9i Database Administration I B-9 . rbs02) B-9 Copyright © Oracle Corporation. Tous droits réservés. Pour permettre aux transactions d'accéder au segment d'annulation. utilisez la commande ALTER ROLLBACK SEGMENT et mettez le segment d'annulation en ligne (online). tout segment d'annulation créé est hors ligne (offline) et ne peut être utilisé. Si le nombre de segments d'annulation publics est insuffisant.ora. Oracle9i Database Administration I B-10 . et le résultat correspond au nombre de segments d'annulation nécessaires à l'instance. • La valeur du paramètre TRANSACTIONS init.ora est divisée par celle du paramètre TRANSACTIONS_PER_ROLLBACK_SEGMENT init. Aucune erreur n'est générée.Obtention des segments d'annulation par les instances Obtention des segments d'annulation privés nommés Calcul du nombre de segments d'annulation requis Le nombre de segments estil suffisant ? Non Oui Obtention des segments d'annulation publics Mise en ligne de tous les segments d'annulation obtenus B-10 Copyright © Oracle Corporation. Si cette valeur est supérieure au nombre de segments d'annulation non SYSTEM que l'instance a déjà mis en ligne. l'instance obtient des segments d'annulation publics supplémentaires pour compenser le manque. Tous droits réservés. 2001. la base de données est ouverte et les utilisateurs peuvent y accéder. Obtention des segments d'annulation par les instances Les étapes suivantes expliquent comment une instance obtient les segments d'annulation lorsqu'elle ouvre une base de données : • L'instance obtient tous les segments d'annulation définis dans le paramètre d'initialisation ROLLBACK_SEGMENTS. integer] {integer[K|M]|NULL}] [MAXEXTENTS {integer|UNLIMITED}] Oracle9i Database Administration I B-11 . Modifier les paramètres de stockage d'un segment d'annulation La commande ALTER ROLLBACK SEGMENT permet de modifier les paramètres de stockage d'un segment d'annulation. Tous droits réservés.Modifier les paramètres de stockage d'un segment d'annulation • Utilisez la commande ALTER ROLLBACK SEGMENT. ALTER ROLLBACK SEGMENT rbs01 STORAGE( MAXEXTENTS 200 ). ALTER ROLLBACK SEGMENT rollback_segment [STORAGE ( [NEXT integer[K|M]] [MINEXTENTS [OPTIMAL ) ] Utilisez cette commande pour redéfinir les paramètres OPTIMAL et MAXEXTENTS. B-11 Copyright © Oracle Corporation. • Vous pouvez modifier OPTIMAL ou MAXEXTENTS. 2001. le serveur Oracle tente de désallouer des extents pour libérer l'espace supérieur à la taille optimale. Libérer manuellement de l'espace Utilisez la commande suivante pour libérer manuellement de l'espace affecté à un segment d'annulation : ALTER ROLLBACK SEGMENT rollback_segment SHRINK [ TO integer [ K|M ]]. mais s'arrête aussitôt si un extent ne peut être libéré parce qu'il est actif. cette commande est ignorée. Libérer de l'espace affecté aux segments d'annulation Si vous avez défini le paramètre OPTIMAL d'un segment d'annulation. Si la valeur de integer est supérieure à la taille actuelle du segment d'annulation. 2001. Cette commande tente de réduire la taille du segment d'annulation à la taille définie. ALTER ROLLBACK SEGMENT rbs01 SHRINK TO 4M. Si integer n'est pas défini. Tous droits réservés. B-12 Copyright © Oracle Corporation. le serveur Oracle tente de libérer les extents jusqu'à ce que la taille du segment d'annulation soit égale à la valeur du paramètre OPTIMAL. Oracle9i Database Administration I B-12 .Libérer de l'espace affecté aux segments d'annulation • Utilisez la commande ALTER ROLLBACK SEGMENT. • Si des extents sont actifs. ils ne sont pas obligatoirement ramenés à la taille demandée. • lorsque vous souhaitez supprimer le segment d'annulation. • Si le segment d'annulation est utilisé par des transactions. il prend temporairement l'état PENDING OFFLINE. Syntaxe Utilisez la commande suivante pour mettre un segment d'annulation hors ligne : ALTER ROLLBACK SEGMENT rollback_segment OFFLINE. B-13 Copyright © Oracle Corporation. 2001. Mettre un segment d'annulation hors ligne Mettez un segment d'annulation hors ligne : • pour empêcher de nouvelles transactions d'utiliser le segment. Si des transactions utilisent le segment d'annulation lorsque vous exécutez cette instruction.Mettre un segment d'annulation hors ligne • Mettez un segment d'annulation hors ligne pour interdire son accès. ALTER ROLLBACK SEGMENT rbs01 OFFLINE. Oracle9i Database Administration I B-13 . Le segment est mis hors ligne dès la fin des transactions en cours. comme l'indique la vue dynamique des performances V$ROLLSTAT. Tous droits réservés. le statut PENDING OFFLINE est affecté au segment. Pour pouvoir supprimer un segment d'annulation. vous devez le mettre hors ligne. 2001. utilisez la syntaxe suivante : DROP ROLLBACK SEGMENT rbs01. Oracle9i Database Administration I B-14 . Supprimez un segment d'annulation lorsqu'il est devenu inutile ou qu'il doit être recréé avec des paramètres de stockage INITIAL. Tous droits réservés.Supprimer des segments d'annulation • Pour pouvoir supprimer un segment d'annulation. • Pour supprimer un segment d'annulation. vous devez le mettre hors ligne. Supprimer des segments d'annulation Utilisez la commande suivante pour supprimer un segment d'annulation : DROP ROLLBACK SEGMENT rollback_segment. NEXT ou MINEXTENTS différents. B-14 Copyright © Oracle Corporation. Etant donné qu'un environnement OLTP utilise généralement des transactions brèves. Nombre de segments d'annulation Le bloc d'en-tête d'un segment d'annulation contient les entrées de la table des transactions qui définissent l'état de chaque transaction. vous devez permettre à la taille des segments d'annulation d'augmenter en les créant dans de grands tablespaces. Oracle9i Database Administration I B-15 . les environnements batch exécutent moins d'opérations que nécessaire pour effectuer plusieurs modifications. créez un segment d'annulation pour quatre transactions simultanées. En général. Tous droits réservés. Si possible. il est recommandé d'utiliser des segments d'annulation petits et nombreux dans ce type d'environnement. Par conséquent. Ceci peut provoquer une contention au niveau de l'en-tête. dans un environnement batch. 2001. Toute transaction utilisant un segment d'annulation doit fréquemment mettre à jour la table des transactions. Ces opérations exigent de grands segments d'annulation.Planifier le nombre de segments d'annulation • OLTP – Des segments d'annulation petits et nombreux – Quatre transactions par segment d'annulation – Jusqu'à dix transactions par segment d'annulation • Batch – Peu de grands segments d'annulation – Un par transaction B-15 Copyright © Oracle Corporation. notamment en environnement OLTP (Traitement des transactions en ligne). tandis que dans le second cas. Vous pouvez évaluer la taille du segment d'annulation en exécutant la plus longue transaction escomptée et en vérifiant la taille du segment ou la quantité d'informations d'annulation générée. En règle générale.Planifier le nombre d'extents de segments d'annulation 0. Nombre d'extents Vous pouvez créer des segments d'annulation comportant un grand nombre d'extents (MINEXTENTS=20) pour limiter l'extension dynamique d'un segment d'annulation. Oracle9i Database Administration I B-16 . seul l'identificateur de ligne (ROWID) est enregistré. S'il s'agit d'une insertion.00 0 10 20 30 40 Nombre d'extents B-16 Copyright © Oracle Corporation. la ligne entière est enregistrée.10 0.).40 Probabilité d'extension 0. Pour plus d'informations sur la surveillance des statistiques.20 0.50 0. Taille d'un segment d'annulation Le nombre d'octets requis pour le stockage des informations permettant d'effectuer une annulation dépend de deux éléments : • le type de la transaction exécutée (insertion.30 0. suppression. etc. l'insertion d'un enregistrement donné dans une table génère moins d'informations d'annulation que la suppression de ce même enregistrement. Tous droits réservés. 2001. mise à jour. voir les cours Oracle8i: Performance Tuning et Oracle8i: SQL Statement Tuning. • les données traitées. Problèmes liés aux segments d'annulation • • • • Espace insuffisant pour les transactions Erreurs de cohérence en lecture Sessions de blocage Erreurs de mise hors ligne d'un tablespace B-17 Copyright © Oracle Corporation. Oracle9i Database Administration I B-17 . 2001. Tous droits réservés. Si un segment d'annulation ne peut allouer plus d'extents. • Le nombre d'extents dans le segment d'annulation a atteint la valeur du paramètre MAXEXTENTS et il est impossible d'allouer des extents supplémentaires (ORA-01628). Cette situation peut avoir l'une des origines suivantes : • Le tablespace ne contient pas l'espace suffisant pour permettre l'extension des segments d'annulation (ORA-01560). car la limite imposée par le paramètre MAXEXTENTS a été atteinte : • augmentez la valeur de MAXEXTENTS du segment d'annulation. – Recréez des segments avec des tailles d'extent supérieures. – Activez l'extension automatique des fichiers de données. – Ajoutez des fichiers de données. • en ramenant les segments d'annulation à leur taille optimale. • Le segment a atteint la valeur du paramètre MAXEXTENTS : – Augmentez la valeur de MAXEXTENTS.Espace insuffisant pour les transactions • Le tablespace ne dispose plus d'espace : – Augmentez la taille des fichiers de données. 2001. Solution Si le tablespace ne comporte pas d'espace libre. B-18 Copyright © Oracle Corporation. • supprimez et recréez le segment d'annulation en utilisant une plus grande taille d'extent pour éviter que le problème ne se reproduise. • en augmentant la taille du tablespace. Tous droits réservés. Oracle9i Database Administration I B-18 . Causes possibles Une transaction utilise un seul segment d'annulation et peut échouer si le segment d'annulation ne contient pas suffisamment d'espace (ORA-01562). augmentez l'espace disponible : • en définissant OPTIMAL pour éviter qu'un seul segment d'annulation n'utilise tout l'espace libre du tablespace. l'utilisateur reçoit l'erreur ORA-01555 SNAPSHOT TOO OLD.Erreurs de cohérence en lecture SELECT * FROM table Table Bloc réutilisé Nouvelle image Image au début de l'instruction B-19 Copyright © Oracle Corporation. Si le serveur Oracle ne peut pas créer une image des données cohérente en lecture. Oracle9i Database Administration I B-19 . Remarque : Vous ne pouvez pas éviter ces erreurs en augmentant la valeur du paramètre MAXEXTENTS. le serveur Oracle empêche l'instruction de voir les modifications des autres utilisateurs non validées au début de son exécution ou effectuées après le début de son exécution. Tous droits réservés. Causes possibles Pour assurer la cohérence en lecture. • l'image avant du segment d'annulation a été remplacée par une autre transaction. • une plus grande taille d'extents. • une valeur OPTIMAL plus élevée. 2001. Solution Vous pouvez réduire les erreurs de cohérence en lecture en affectant aux segments : • une valeur MINEXTENTS plus élevée. Cette erreur se produit lorsque la transaction qui a effectué la modification a déjà validé les données et que : • l'espace de transaction de l'en-tête d'annulation a été réutilisé. c'est-à-dire une entrée générée par une transaction qui est toujours active. un espace considérable est perdu et l'administrateur de base de données peut intervenir pour empêcher l'augmentation excessive de la taille des segments d'annulation. Dans ce cas. Si ce dernier contient une entrée en cours. même s'il existe un grand nombre d'extents libres. Une transaction qui n'a effectué que quelques modifications et qui est inactive depuis un long moment peut entraîner l'augmentation de la taille des segments d'annulation.Sessions de blocage Session de blocage 4 3 1 2 5 1 Extent 3 2 3 4 Extent existant Nouvel extent B-20 Copyright © Oracle Corporation. le serveur Oracle tente de réutiliser l'extent suivant du segment. Causes possibles Lorsqu'un extent d'un segment d'annulation est plein. Oracle9i Database Administration I B-20 . Dans ce cas. La transaction ne peut pas ignorer un extent de l'anneau et poursuit les opérations d'écriture dans un extent suivant. il ne peut pas être utilisé. un segment d'annulation alloue un extent supplémentaire. 2001. Tous droits réservés. SID --9 SERIAL# ------27 START_TIME -----------------10/30/97 21:10:41 XIDUSN 2 USERNAME SYSTEM ------.start_uext-1) OR 6 ((r.Causes possibles (suite) Solution Interrogez les vues V$ROLLSTAT. Déterminez si l'utilisateur peut arrêter la transaction.serial#. s.xidusn.saddr = t. v$transaction t.xidusn = r.username 2 FROM v$session s.------ 1 row selected. s. t.usn 5 AND ((r.ses_addr 4 AND t.curext = t. V$SESSION et V$TRANSACTION pour identifier les transactions qui bloquent.extents-1) AND t. Oracle9i Database Administration I B-21 . v$rollstat r 3 WHERE s.curext = r.sid. Exemple SQL> SELECT s. t. vous devrez peut-être fermer la session.start_uext=0)). S'il ne le peut pas.start_time. 6. Utilisez la vue V$SESSION pour obtenir les informations relatives à l'utilisateur et à la session. Mettez le tablespace hors ligne. Tous droits réservés. Identification et résolution des problèmes Si un tablespace contient un ou plusieurs segments d'annulation actifs. 2001. 4. 3. 3. fermez la session. Si nécessaire. 6.Erreurs de mise hors ligne d'un tablespace Vous ne pouvez pas mettre hors ligne un tablespace contenant un segment d'annulation actif. Interrogez la vue DBA_ROLLBACK_SEGS pour identifier les segments d'annulation du tablespace. 1. Fermez la session ou demandez à l'utilisateur d'arrêter la transaction. B-22 Copyright © Oracle Corporation. 5. Oracle9i Database Administration I B-22 . Recherchez l'ID de session et le numéro de série. vous ne pouvez pas le mettre hors ligne. Recherchez les transactions actives utilisant ces segments d'annulation. 4. La session qui exécute l'instruction reçoit le message d'erreur ORA-01546. Solution Procédez comme suit : 1. Mettez tous ces segments hors ligne. recherchez les transactions qui utilisent ces segments d'annulation. Mettez hors ligne tous les segments d'annulation du tablespace. 2. Identifiez les segments d'annulation du tablespace. Mettez le tablespace hors ligne. Dans la vue V$TRANSACTION. 2. 5. 2001. .Solutions des exercices pour SQL*Plus Copyright © Oracle Corporation. Tous droits réservés. Dans ce cas.Conventions relatives aux solutions des exercices Les solutions sont destinées au stagiaire qui souhaite réaliser les exercices avec SQL*Plus. vous devrez disposer du privilège SYSDBA. Cela vous permettra de comprendre parfaitement le processus de création et ses effets sur la tâche à réaliser. N'exécutez pas un script . Exécuter des scripts d'exercice SQL Des scripts ont été intégrés aux exercices pour qu'ils réalisent certaines tâches à votre place. Exemple : suppression du fichier de mots de passe en cours situé dans le répertoire $HOME/ADMIN/PFILE. Utiliser la ligne de commande du système d'exploitation Vous aurez l'occasion de réaliser certaines tâches à l'aide de la ligne de commande du système d'exploitation. SQL > !rm $HOME/ADMIN/PFILE/orapw$ORACLE_SID $ > exit Se connecter en tant que SYS Pour vous connecter en tant qu'utilisateur SYS. CONNECT / AS SYSDBA Oracle9i Database Administration I C-2 . le symbole ! sera utilisé par la ligne de commande SQL*Plus pour sortir de SQL*Plus et entrer dans le mode de la ligne de commande du système d'exploitation. vous pouvez utiliser Exit pour revenir à la ligne de commande SQL*Plus. Il peut s'agir d'une tâche que vous n'avez pas encore assimilée à ce stade ou d'une tâche visant à vous permettre d'avancer plus facilement dans l'exercice. A la fin de votre travail avec cette ligne de commande.sql avant d'avoir revu sa fonction. Réponse : B. b la mémoire PGA. d la zone de mémoire partagée. Réponse : D 2 Parmi les zones mémoire suivantes. d la zone de mémoire partagée. c le tampon de journalisation. b Pour établir une connexion avec la base de données. c A Une connexion est un chemin de communication entre le serveur Oracle et l'instance Oracle. de la zone SQL partagée. d Une session démarre une fois que le serveur Oracle a authentifié l'utilisateur. l'utilisateur doit démarrer une instance Oracle. d Le cache "library" est composé des zones SQL et PL/SQL partagées. b La zone de mémoire partagée permet de stocker les dernières instructions SQL exécutées. a Un serveur Oracle est un ensemble de données composé de trois types de fichier. Réponse : D 5 La tâche principale du tampon de journalisation consiste à enregistrer toutes les modifications apportées aux blocs de données de la base.Exercice 1 1 Parmi les affirmations suivantes. b la mémoire PGA. a La zone de mémoire partagée est composée du cache "library". de la zone de mémoire Java et de la zone de mémoire LARGE POOL. D 4 Parmi les zones mémoire suivantes. a Vrai b Faux Réponse : Vrai Oracle9i Database Administration I C-3 . laquelle ne fait pas partie de la mémoire SGA ? a le cache de tampons de la base de données. c le tampon de journalisation. déterminez laquelle est vraie. Réponse : B 3 Identifiez les deux affirmations correctes se rapportant à la zone de mémoire partagée. laquelle permet de mettre en mémoire cache les informations du dictionnaire de données ? a le cache de tampons de la base de données. du cache du dictionnaire de données. c La zone de mémoire partagée est utilisée pour un objet pouvant être partagé globalement. 7 Parmi les processus suivants. a Vrai b Faux Réponse : Vrai Oracle9i Database Administration I C-4 . SMON. b le processus serveur.Exercice 1 (suite) 6 La mémoire PGA est une région de la mémoire qui contient les données et les informations de contrôle de plusieurs processus serveur ou de plusieurs processus d'arrière-plan. c les processus d'arrière-plan. ________________________________________ ________________________________________ ________________________________________ ________________________________________ ________________________________________ Réponse : DBWR. Une mémoire PGA est une région de la mémoire qui contient les données et les informations de contrôle d'un seul processus serveur ou d'un seul processus d'arrière-plan. c System Monitor D exécute des opérations de nettoyage suite à l'échec de processus. a Vrai b Faux Réponse : Faux. 10 La structure physique d'une base Oracle est composée de fichiers de contrôle. 9 Affectez à chaque processus la tâche correspondante. D. b Log Writer C se charge de la récupération de l'instance. a Database Writer E permet l'écriture dans les en-têtes des fichiers dedonnées. C. Réponse : E. PMON. LGWR. e Checkpoint A écrit les tampons "dirty" dans les fichiers de données. A. d Process Monitor B enregistre les modifications de la base de données pour permettre la récupération. B. Réponse : C 8 Indiquez ci-dessous cinq processus d'arrière-plan obligatoires. lequel ou lesquels sont disponibles au démarrage d'une instance Oracle ? a le processus utilisateur. CKPT. de fichiers de données et de fichiers de journalisation. 14 Indiquez trois types de fichier composant une base de données Oracle. B. ________________________________________ ________________________________________ ________________________________________ Réponse : Les fichiers de données. les fichiers de contrôle et les fichiers de journalisation. C. 13 Indiquez les composants d'une instance Oracle. Oracle9i Database Administration I C-5 . A. 12 Indiquez les composants d'un serveur Oracle. ________________________________________ ________________________________________ Réponse : La zone SGA et les processus d'arrière-plan. ________________________________________ ________________________________________ Réponse : L'instance Oracle et la base de données Oracle. en commençant par la base de données.Exercice 1 (suite) 11 Rétablissez la hiérarchie des structures suivantes. a Tablespaces b Extent c Segment d Base de donnée e Bloc Réponse : D. E. Indice : Suivez les instructions de votre formateur pour vous connecter.Production on Thu Nov 29 15:44:51 2001 (c) Copyright 2001 Oracle Corporation. Connectez-vous en tant que SYS AS SYSDBA.0. Démarrez SQL*Plus. Votre formateur vous fournira les comptes de connexion et vous aidera à vous connecter à votre compte. D X 3 Lancez Oracle Enterprise Manager en mode autonome. $ sqlplus /nolog SQL*Plus: Release 9.Exercice 2 Cet exercice s'effectue en salle. Sélectionnez Start > Programs > Oracle-OraHome90 > Enterprise Manager Console Sélectionnez l'option Launch standalone.1.0. All rights 2 A l'aide de SQL*Plus. Cliquez sur OK. SQL> CONNECT / AS SYSDBA Connected. Notez ci-dessous les informations qu'il vous fournira : Nom d'hôte : _________________________________ Nom SID : __________________________________ 1 Connectez-vous à SQL*Plus en tant que SYSDBA. Oracle9i Database Administration I C-6 . exécutez l'interrogation suivante pour vérifier que la connexion à la base de données a été établie. SQL> SELECT * FROM DUAL. reserved.0 . accédez au menu principal et procédez comme suit : Sélectionnez Navigator > Discover Nodes. - (suite page suivante) Oracle9i Database Administration I C-7 . Fermez la fenêtre MSDOS." 4. Remarque : Si le repérage n'aboutit informez-en votre formateur.Entrez le nom du noeud que vous souhaitez gérer. . Une fois le repérage terminé. Développez le dossier Database dans l'arborescence de navigation. 2. A l'invite de commande. vous devez exécuter les quatre étapes suivantes. Connectez-vous comme suit : Administrator: sysman Remarque : Respectez la casse Password: oem_temp Remarque : Respectez la casse. . sélectionnez OK.Sélectionnez Next. Remarque : Respectez la casse. en respectant la distinction entre les majuscules et les minuscules. Sélectionnez Next pour poursuivre. Cliquez deux fois sur votre base de données (qui vous a été indiquée par votre formateur). Veillez à l'entrer tel qu'il vous a été communiqué. Ouvrez une fenêtre MSDOS. c'est-à-dire le nom d'hôte du serveur de bases de données désigné (information fournie par votre formateur). Dans le cadre d'un cours en salle Oracle uniquement : Si vous suivez un cours en salle Oracle. Management Server: (information fournie par votre formateur) Une fois que la console OEM est ouverte. entrez oemctl start oms. Attendez que le message suivant s'affiche : "The Oracleoracle901_homeManagementServer service was started successfully. Démarrez la console OEM et sélectionnez l'option Login to the Oracle Management Server. qui sont propres à la configuration de ce type de cours : 1. qui vous sera fourni par formateur. remplacez le mot de passe par oracle. Lorsque vous y êtes invité. La boîte de dialogue Discovery Wizard s'ouvre. votre Entrez le nom du serveur Unix utilisé dans votre cours. pas. 3. Cliquez sur l'icône de mise à jour de fichier omsconfig sur le bureau.Exercice 2 : initiation au serveur Oracle 4 Lancez Oracle Enterprise Manager à l'aide d'Oracle Management Service. Accédez au bas de la page et sélectionnez l'entrée correspondant à votre base de données.Sélectionnez Start > Programs > Oracle-OraHome90 > Integrated Management Tools > SQLPlus Worksheet. Sélectionnez la page Preferred Credentials. Connectez-vous en tant que : SYSDBA. Oracle9i Database Administration I C-8 . Password et Service.Sélectionnez Tools > Database Applications > SQL*Plus Worksheet. Démarrez SQL*Plus Worksheet. Fournissez les informations suivantes : Username: (information fournie par votre formateur) Password: (information fournie par votre formateur) Confirm Password: Role: SYSDBA 5 Sélectionnez OK. vous devez intégrer le nom de service à la chaîne de connexion. Procédez comme suit pour démarrer SQL*Plus Worksheet depuis la console Oracle Enterprise Manager : .Exercice 2 : initiation au serveur Oracle 4 Lancez Oracle Enterprise Manager à l'aide d'Oracle Management Service (suite) Fournissez les informations de connexion suivantes : Utilisateur : sys Mot de passe : secure En tant que : SYSDBA Fournissez ensuite les informations d'identification et de connexion au noeud pour les travaux en cours d'exécution. Vous pouvez également démarrer SQL*Plus Worksheet depuis le menu Windows NT : . Remarque : A chaque fois que vous vous connectez sous un nom différent (dans SQL*Plus Worksheet). – Entrez les informations suivantes : Username. Dans le menu principal. Cliquez sur OK. sélectionnez Configuration > Preferences. • • • Connectez-vous directement à la base de données définie par votre formateur. SQL> CREATE SPFILE='$HOME/ADMIN/PFILE/spfile$ORACLE_SID.ora'.ora' 2 FROM PFILE='$HOME/ADMIN/PFILE/init$ORACLE_SID. Oracle9i Database Administration I C-9 . puis arrêtez base.Exercice 3 la 1 Connectez-vous à la base de données sous l'ID utilisateur SYS AS SYSDBA. Database dismounted. SQL> CONNECT / AS SYSDBA Connected to an idle instance. ORACLE instance shut down. Créez le fichier SPFILE à partir du fichier PFILE qui se trouve dans le répertoire $HOME/ADMIN/PFILE. Placez le fichier SPFILE dans le répertoire $HOME/ADMIN/PFILE en lui affectant un nom au format spfileSID. File created. SQL> CONNECT / AS SYSDBA Connected. SQL> SQL> SHUTDOWN IMMEDIATE Database closed. créez un fichier SPFILE à partir du fichier PFILE. 2 Une fois la base de données arrêtée.ora (où SID correspond au nom de votre instance). core_dump_dest='/u01/home/dba01/ADMIN/CDUMP' *. Database opened.Exercice 3 (suite) 3 Affichez le fichier SPFILE depuis le système d'exploitation.instance_name='dba01' *.background_dump_dest='/u01/home/dba01/ADMIN/BDUMP' *.control_files='/u01/home/dba01/ORADATA/u01/ctrl01.undo_management='AUTO' *.service_names='dba01' *.db_block_size=4096 *. SQL> STARTUP ORACLE instance started.db_name='dba01' *.user_dump_dest='/u01/home/dba01/ADMIN/UDUMP' 4 Connectez-vous sous l'ID utilisateur SYS AS SYSDBA. Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers Database mounted.0.remote_login_passwordfile='exclusive' *.ora *. puis démarrez la base de données à l'aide du fichier SPFILE.shared_pool_size=8M *.0' *.global_names=TRUE *.ctl' *.java_pool_size='0' *.max_dump_file_size='10240' *. SQL> CONNECT / AS SYSDBA Connected to an idle instance. 21790412 bytes 278220 bytes 16777216 bytes 4194304 bytes 540672 bytes Oracle9i Database Administration I C-10 .db_cache_size=4M *.compatible='9.undo_tablespace='UNDOTBS' *.db_domain='world' *. SQL> !more $HOME/ADMIN/PFILE/spfile$ORACLE_SID. 'Mars') * ERROR at line 1: ORA-01552: cannot use system rollback segment for nonsystem tablespace ‘SAMPLE' Oracle9i Database Administration I C-11 .Exercice 3 (suite) 5 a Arrêtez la base de données. ‘Mars’). Total System Global Area 21790412 Fixed Size 278220 Variable Size 16777216 Database Buffers 4194304 Redo Buffers 540672 Database mounted. SQL> SHUTDOWN IMMEDIATE Database closed. SQL> ALTER DATABASE OPEN READ ONLY. SQL> STARTUP MOUNT ORACLE instance started. Que se passe-t-il ? SQL> INSERT INTO regions VALUES ( 5. puis ouvrez-la en mode lecture seule. 'Mars'). bytes bytes bytes bytes bytes ligne b Connectez-vous sous l'ID utilisateur HR avec le mot de passe HR. INSERT INTO regions VALUES ( 5. puis insérez une dans la table REGIONS comme suit : INSERT INTO regions VALUES (5. ORACLE instance shut down. SQL> CONNECT / AS SYSDBA Connected. Database dismounted. Database altered. puis insérez la ligne suivante dans la table REGIONS. 'Mars'). SYS SESSION SQL> CONNECT / AS SYSDBA Connected. ORACLE instance shut down. 6 a Connectez-vous en tant qu'utilisateur HR avec le mot de passe HR. b Démarrez SQL*Plus dans une nouvelle session Telnet. SQL> SHUTDOWN IMMEDIATE Database closed. ‘Mars’ ). SQL> CONNECT / AS SYSDBA Connected. Ne validez pas et ne quittez pas la session. Database dismounted. puis procédez à un arrêt en mode Transactional. SQL> INSERT INTO regions VALUES (5. 1 row created. SQL> STARTUP ORACLE instance started. Connectez-vous en tant qu'utilisateur SYS AS SYSDBA.Exercice 3 (suite) 5 c Réaffectez à la base de données le mode lecture-écriture. SQL> SHUTDOWN TRANSACTIONAL Oracle9i Database Administration I C-12 . HR SESSION SQL> CONNECT hr/hr Connected. INSERT INTO regions VALUES ( 5. Beta (with complications) Remarque : La session SYS va se terminer et la base de données est sur le point de se fermer.0.0. Rollback complete. SQL> EXIT.0. puis quittez. ERROR: ORA-01089: immediate shutdown in progress . Database dismounted.0. Que se passe-t-il dans la session de HR ? Que se passe-t-il dans celle de SYS ? HR SESSION SQL> ROLLBACK. SYS SESSION Database closed.no operations are permitted Disconnected from Oracle9i Enterprise Edition Release 9.0 .0 .Beta With the Partitioning option JServer Release 9.Exercice 3 (suite) 6 c Annulez l'insertion dans la session de HR.0. Oracle9i Database Administration I C-13 .0. SYS SESSION SQL> CONNECT / AS SYSDBA Connected to an idle instance. activez la session en mode restreint. Oracle9i Database Administration I C-14 . System altered. SYS SESSION SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION. Remarque : Conservez les sessions SQL*Plus de SYS et de HR ouvertes. c Sous l'ID utilisateur SYS. SQL> STARTUP ORACLE instance started. b Démarrez une autre session en tant qu'utilisateur HR. puis démarrez la base de données.Exercice 3 (suite) 7 a Connectez-vous sous l'ID utilisateur SYS. HR SESSION SQL> CONNECT hr/hr Connected. Que se passe-t-il ? HR SESSION SQL> SELECT * 2 FROM regions. SYS SESSION SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION. L'opération aboutit-elle ? Quittez la session. e Sous l'ID utilisateur SYS.Exercice 3 (suite) 7 d Sous l'ID utilisateur HR.------------------------1 Europe 2 Americas 3 Asia 4 Middle East and Africa SQL> EXIT SQL> CONNECT hr/hr ERROR: ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege Warning: You are no longer connected to ORACLE. REGION_ID REGION_NAME ---------. effectuez une sélection (SELECT) dans la table REGIONS. Oracle9i Database Administration I C-15 . désactivez la session en mode restreint. System altered. puis reconnectez-vous sous l'ID utilisateur HR. Exercice 5 1 Dans la liste suivante. b Le dictionnaire de données comprend deux types d'objet : des tables de base et des vues. Réponse : B.bsq. c Le dictionnaire de données est un ensemble de tables. d Il est indispensable au bon fonctionnement de la base de données. identifiez les trois affirmations correctes concernant l'utilisation du dictionnaire de données : a Le serveur Oracle le modifie lorsqu'une instruction LMD est exécutée. a Vrai b Faux Réponse : Vrai 5 Les informations d'une vue dynamique des performances peuvent être extraites à partir du fichier de contrôle. B. C. d Le dictionnaire de données enregistre et vérifie les informations relatives à la base de données qui lui est associée. il s'agit du script sql.sql permet de créer des tables de base. identifiez les questions auxquelles une vue dynamique des performances peut répondre a L'objet est-il en ligne et disponible ? b Quels verrous externes sont appliqués ? c Qui est le propriétaire de l'objet ? d De quels privilèges les utilisateurs disposent-ils ? e La session est-elle active ? Réponse : A. c Les utilisateurs et les administrateurs de base de données s'en servent comme référence. 3 Dans la liste suivante. identifiez les affirmations correctes concernant le dictionnaire de données : a Le dictionnaire de données décrit la base de données et ses objets. Oracle9i Database Administration I C-16 . a Vrai b Faux Réponse : Vrai 6 Dans la liste suivante. a Vrai b Faux Réponse : Faux. Réponse : Toutes les affirmations. les objets de schéma et les structures de stockage. D. E. 2 Le script catalog. b Il permet de rechercher des informations sur les utilisateurs. 4 Les vues du dictionnaire de données sont statiques. TABLE_NAME -----------------------------ALL_ALL_TABLES ALL_ARGUMENTS ALL_ASSOCIATIONS ALL_AUDIT_POLICIES ALL_BASE_TABLE_MVIEWS ALL_CATALOG ALL_CLUSTERS ALL_CLUSTER_HASH_EXPRESSIONS ALL_COLL_TYPES .Exercice 5 (suite) 7 Recherchez la liste des vues du dictionnaire de données. Oracle9i Database Administration I C-17 . SQL> SELECT table_name 2 FROM dictionary. . 1063 rows selected. SQL> CONNECT SYSTEM/MANAGER Connected. . SQL> SELECT name 2 NAME ---------------------------------------------------------/u01/home/dba01/ORADATA/u01/system01. Indice : Interrogez les vues dynamiques des performances V$DATABASE. NAME --------DBA01 SQL> SELECT instance 2 FROM v$thread.dbf /u01/home/dba01/ORADATA/u01/querydata01.dbf /u01/home/dba01/ORADATA/u03/users01. VALUE -------------------------------4096 9 Affichez la liste des noms des fichiers de données. Indice : Interrogez la vue dynamique des performances V$DATAFILE.dbf /u01/home/dba01/ORADATA/u02/sample01. INSTANCE ---------------dba01 SQL> SELECT value 2 FROM v$parameter 3 WHERE name ='db_block_size'. Oracle9i Database Administration I C-18 . SQL> SELECT name 2 FROM v$database.dbf 6 rows selected.dbf /u01/home/dba01/ORADATA/u02/undotbs. le nom de l'instance et la taille des blocs de base de données. FROM v$datafile. V$THREAD et V$PARAMETER.Exercice 5 (suite) 8 Identifiez le nom de la base de données.dbf /u01/home/dba01/ORADATA/u03/index01. used space in KB ---------------131992 Oracle9i Database Administration I C-19 . SQL> SELECT sum(bytes)/1024 "free space in KB" 2 FROM dba_free_space. .Exercice 5 (suite) 10 Identifiez le fichier de données qui constitue le tablespace SYSTEM. free space in KB ---------------42700 SQL> SELECT sum(bytes)/1024 "used space in KB" 2 FROM dba_segments. Indice : Interrogez la vue DBA_DATA_FILES du dictionnaire de données pour identifier le fichier de données qui constituent le tablespace SYSTEM. SQL> SELECT file_name 2 3 FROM WHERE dba_data_files tablespace_name = 'SYSTEM'.Interrogez la vue DBA_SEGMENTS du dictionnaire de données pour afficher la quantité d'espace utilisé.dbf 11 Quel est le volume d'espace libre disponible et le volume d'espace utilisé dans la base de données ? Indices . FILE_NAME --------------------------------------/u01/home/dba01/ORADATA/u01/system01.Interrogez la vue DBA_FREE_SPACE du dictionnaire de données pour afficher la quantité d'espace disponible dans la base de données. CREATED 16-APR-01 16-APR-01 16-APR-01 16-APR-01 16-APR-01 16-APR-01 16-APR-01 16-APR-01 16-APR-01 USERNAME SYS SYSTEM OUTLN DBSNMP ORDSYS ORDPLUGINS MDSYS HR OE 9 rows selected. Indice : Interrogez la vue DBA_USERS du dictionnaire de base de données pour obtenir la liste des noms et des dates de création des utilisateurs de la base de données.--------- Oracle9i Database Administration I C-20 . -----------------------------. SQL> SELECT username.Exercice 5 (suite) 12 Répertoriez le nom et la date de création des utilisateurs de la base de données. created 2 FROM dba_users. -------------------------------------- Oracle9i Database Administration I C-21 .Exercice 6 1 Où se trouve le fichier de contrôle existant et quel est son nom ? Indice : Interrogez la vue dynamique des performances V$CONTROLFILE. STATUS ------.ctl v$controlfile. SQL> COL name FORMAT a50 SQL> SELECT * 2 FROM NAME /u01/home/dba01/ORADATA/u01/ctrl01. Remarque : Vous pouvez également utiliser la vue V$PARAMETER ou exécuter la commande SHOW PARAMETER pour afficher le nom et l'emplacement du fichier de contrôle. SQL> SHUTDOWN IMMEDIATE Database closed.ctl SQL> STARTUP ORACLE instance started.ctl.ctl $HOME/ORADATA/u01/ctrl01. ORACLE instance shut down. .bak.Utilisez la ligne de commande du système d'exploitation pour copier le fichier de contrôle . renommez la copie du de contrôle de façon appropriée.Exercice 6 2 a Tentez de démarrer la base de données sans fichier de contrôle.bak SQL> !rm $HOME/ORADATA/u01/ctrl01. SQL> !cp $HOME/ORADATA/u01/ctrl01. . .ctl en lui affectant l'extension . SQL> CONNECT / AS SYSDBA Connected. Que se passe-t-il ? Indices . SQL> !cp $HOME/ORADATA/u01/ctrl01. check alert log for more info fichier b Pour remédier à cet incident.ctl SQL> STARTUP ORACLE instance started. Database dismounted.Connectez-vous sous l'ID utilisateur SYS. arrêtez la base de données. Pour simuler cette opération. puis démarrez la base de données. Oracle9i Database Administration I C-22 .bak $HOME/ORADATA/u01/ctrl01. Total System Global Area 21790412 bytes Fixed Size 278220 bytes Variable Size 16777216 bytes Database Buffers 4194304 bytes Redo Buffers 540672 bytes ORA-00205: error in identifying controlfile. modifiez le nom du fichier de contrôle dans le fichier de paramètres ou renommez-le.Démarrez la base de données.Fermez la base de données à l'aide de l'option IMMEDIATE. . SQL> SHUTDOWN IMMEDIATE ORA-01507: database not mounted ORACLE instance shut down.Supprimez le fichier de contrôle . les droits sur le fichier restent inchangés .ctl FROM v$controlfile. puis copiez le fichier de contrôle existant dans un nouveau fichier nommé ctrl02. utilisez la commande chmod 660.ctl $HOME/ORADATA/u02/ctrl02. modifiez le fichier SPFILE (SCOPE=SPILE) pour ajouter le nouveau fichier de contrôle au fichier d'initialisation. Database mounted. SQL> !cp $HOME/ORADATA/u01/ctrl01. SQL> SELECT name 2 NAME -------------------------------------/u01/home/dba01/ORADATA/u01/ctrl01. Database dismounted.Avant d'arrêter la base de données. Indices .ctl SQL> !chmod 660 $HOME/ORADATA/u02/ctrl02. Démarrez la base de données.Exercice 6 (suite) 3 Multiplexez le fichier de contrôle existant en utilisant le répertoire u02. '$HOME/ORADATA/u02/ctrl02. Normalement. System altered.ctl que vous placerez dans le répertoire u02. Vérifiez que les deux fichiers de contrôle sont utilisés. ou utilisez la commande SHOW PARAMETER pour confirmer les deux fichiers de contrôle sont utilisés. Assurez-vous que le serveur Oracle a accès en écriture à ce nouveau fichier en utilisant. SQL> SHUTDOWN IMMEDIATE. Database opened. la commande chmod 660 sous UNIX. cette situation n'est présentée que pour les besoins du cours. Arrêtez la base de données. par exemple. Database closed. Interrogez la vue dynamique des performances V$CONTROLFILE ou V$PARAMETER.ctl /u01/home/dba01/ORADATA/u02/ctrl02. ORACLE instance shut down.ctl'.ctl. SQL> ALTER SYSTEM SET control_files = '$HOME/ORADATA/u01/ctrl01. Oracle9i Database Administration I C-23 . puis nommez le nouveau fichier ctrl02.ctl SQL> STARTUP ORACLE instance started.ctl' SCOPE=SPFILE. Sous Unix. que SQL> CONNECT / AS SYSDBA Connected. RECORDS_TOTAL ------------40 Oracle9i Database Administration I C-24 .Exercice 6 (suite) 4 Quelle est la taille initiale de la section de fichier de données dans le fichier de contrôle ? Indice : Interrogez la vue dynamique des performances V$CONTROLFILE_RECORD_SECTION. SQL> SELECT records_total 2 3 FROM WHERE v$controlfile_record_section type = 'DATAFILE'. SQL> SELECT member 2 FROM v$logfile. MEMBERS 1 1 ---------. Utilisez la vue dynamique des performances V$LOG.---------- Oracle9i Database Administration I C-25 .rdo /u01/home/dba01/ORADATA/u03/log01a. MEMBER ------------------------------------/u01/home/dba01/ORADATA/u03/log02a.Interrogez la vue dynamique des performances V$LOGFILE. members 2 FROM GROUP# 1 2 v$log.rdo SQL> SELECT group#. Indices .Exercice 7 1 Répertoriez le nombre et l'emplacement des fichiers journaux existants et affichez le nombre de groupes de fichiers de journalisation et de membres que contient votre base de données. Exercice 7 2 Dans quel mode la base de données est-elle configurée ? L'archivage est-il activé ? Indices .Interrogez la vue dynamique des performances V$DATABASE. Interrogez la vue dynamique des performances V$INSTANCE. SQL> SELECT log_mode 2 FROM v$database. ARCHIVE ------STOPPED Oracle9i Database Administration I C-26 . LOG_MODE -----------NOARCHIVELOG SQL> SELECT archiver 2 FROM v$instance. -----------------------------------2 ONLINE u01/home/dba01/ORADATA/u03/log02a.Interrogez la vue dynamique des performances V$LOGFILE pour vérifier le résultat.Exécutez la commande ALTER DATABASE ADD LOGFILE MEMBER pour ajouter un membre à chaque groupe de fichiers de journalisation.Exercice 7 (suite) 3 En respectant les conventions d'appellation suivantes. ajoutez un membre à chaque groupe de fichiers de journalisation de la base de données stockée sur u04 : Ajoutez un membre au groupe 1 : log01b. GROUP# STATUS TYPE MEMBER -----.rdo Ajoutez un membre au groupe 2 : log02b.rdo 1 STALE ONLINE u01/home/dba01/ORADATA/u03/log01a. SQL> ALTER DATABASE ADD LOGFILE MEMBER 2 '$HOME/ORADATA/u04/log01b. Database altered.------.rdo Vérifiez le résultat obtenu. Indices .rdo 1 INVALID ONLINE u01/home/dba01/ORADATA/u04/log01b. SQL> COLUMN GROUP# FORMAT 99 SQL> COLUMN MEMBER FORMAT a40 SQL> SELECT * 2 FROM v$logfile.rdo 2 INVALID ONLINE u01/home/dba01/ORADATA/u04/log02b. .rdo Oracle9i Database Administration I C-27 . 3 '$HOME/ORADATA/u04/log02b.-----.rdo' to Group 2.rdo' to Group 1. SQL> SELECT group#. SQL> ALTER DATABASE ADD 2 LOGFILE GROUP 3('$HOME/ORADATA/u03/log03a.------. Add Group 3: log03a. GROUP# MEMBERS -----. members FROM v$log.------. 3 '$HOME/ORADATA/u04/log03b. .rdo'. ajoutez un groupe de fichiers de journalisation et placez deux membres sur u03 et u04.rdo 6 rows selected. . SQL> COLUMN GROUP# FORMAT 99 SQL> COLUMN MEMBER FORMAT a40 SQL> SELECT * FROM v$logfile. GROUP# STATUS TYPE MEMBER -----. Database altered.Exercice 7 (suite) 4 En respectant les conventions d'appellation suivantes.rdo and log03b.Interrogez la vue dynamique des performances V$LOG pour afficher le nombre de groupes de fichiers de journalisation et de membres.rdo') SIZE 1024K.Exécutez la commande ALTER DATABASE ADD LOGFILE pour créer un groupe.---------1 2 2 2 3 2 Oracle9i Database Administration I C-28 . Vérifiez le résultat.rdo 3 ONLINE /u01/home/dba01/ORADATA/u04/log03b.rdo Indices .rdo 2 INVALID ONLINE /u01/home/dba01/ORADATA/u04/log02b.----------------------------------2 ONLINE /u01/home/dba01/ORADATA/u03/log02a.rdo 1 INVALID ONLINE /u01/home/dba01/ORADATA/u04/log01b.rdo 1 STALE ONLINE /u01/home/dba01/ORADATA/u03/log01a.rdo 3 ONLINE /u01/home/dba01/ORADATA/u03/log03a.Interrogez la vue dynamique des performances V$LOGFILE pour afficher le nom des nouveaux membres du nouveau groupe. Utilisez ALTER SYSTEM SWITCH LOGFILE si les fichiers journaux sont actifs.Exercice 7 (suite) 5 Supprimez le groupe de fichiers de journalisation créé à l'étape 4. Déterminez ensuite le nombre de fois que vous devez exécuter la commande ALTER SYSTEM SWITCH LOGFILE. System altered. SQL> ALTER DATABASE DROP LOGFILE GROUP 3. Interrogez la vue dynamique des performances V$LOG pour vérifier le résultat. Le nombre de changements de fichier varie. Exécutez la commande ALTER DATABASE DROP LOGFILE GROUP pour supprimer le groupe de fichiers de journalisation. GROUP# MEMBERS -----. Remarque : Interrogez la base de données pour consulter les fichiers journaux actifs. Database altered. members 2 FROM v$log.---------1 2 2 2 3 2 SQL> !rm $HOME/ORADATA/u03/log03a. System altered. Supprimez du groupe les fichiers du système d'exploitation. Indices . SQL> ALTER SYSTEM SWITCH LOGFILE. System altered. SQL> ALTER SYSTEM SWITCH LOGFILE. SQL> SELECT group#. SQL> ALTER SYSTEM SWITCH LOGFILE.rdo SQL> !rm $HOME/ORADATA/u04/log03b.rdo Oracle9i Database Administration I C-29 . .Exercice 7 (suite) 6 Redimensionnez tous les fichiers de journalisation en ligne (online redo log files) à la taille de 1024 Ko.Interrogez la vue dynamique des performances V$LOG pour vérifier le résultat. System altered.rdo'. SQL> ALTER SYSTEM SWITCH LOGFILE. status 2 FROM v$log.continued - Oracle9i Database Administration I C-30 . System altered. 6 '$HOME/ORADATA/u04/log04b. 5 GROUP 4( '$HOME/ORADATA/u03/log04a. Par conséquent.rdo'.Interrogez la vue dynamique des performances V$LOG pour vérifier le groupe actif. . Le nombre de changements de fichier requis varie. SQL> ALTER SYSTEM SWITCH LOGFILE. Database altered. . vous devez en ajouter de nouveaux et supprimer les anciens. Indices . .Il est impossible de redimensionner des fichiers journaux. SQL> SELECT group#. System altered. GROUP# -----1 2 3 4 STATUS ---------------ACTIVE CURRENT UNUSED UNUSED SQL> ALTER SYSTEM SWITCH LOGFILE.Exécutez la commande ALTER SYSTEM SWITCH LOGFILE pour forcer les changements de fichier de journalisation et attribuer au groupe le statut inactif.Exécutez la commande ALTER DATABASE DROP LOGFILE pour supprimer les groupes inactifs. . SQL> ALTER DATABASE ADD LOGFILE 2 GROUP 3( '$HOME/ORADATA/u03/log03a. . Déterminez ensuite le nombre de fois que vous devez exécuter la commande ALTER SYSTEM SWITCH LOGFILE.rdo‘ ) 7 SIZE 1024K.rdo‘ ) 4 SIZE 1024K. Remarque : Interrogez la base de données pour consulter les fichiers journaux actifs.Exécutez la commande ALTER DATABASE ADD LOGFILE GROUP pour ajouter deux nouveaux groupes d'une taille de 1024 Ko. 3 '$HOME/ORADATA/u04/log03b. continued SQL> ALTER DATABASE DROP LOGFILE GROUP 1. GROUP 2. bytes 2 FROM v$log.Exercice 7 (suite) . SQL> SELECT group#. BYTES 1048576 1048576 GROUP# 3 4 -----.---------- Oracle9i Database Administration I C-31 . Database altered. Tablespace created. Tablespace created. Oracle9i Database Administration I C-32 .dbf' SIZE 1M AUTOEXTEND ON NEXT 500K MAXSIZE 2M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4K. géré localement avec des extents d'une taille uniforme de 4 Ko (activez l'extension automatique de 500 Ko lorsque des extents supplémentaires d'une taille maximale de 2 Mo sont requis). c INDX01. Tablespace created.Exercice 8 1 Créez des tablespaces permanents associés aux noms et aux paramètres de stockage suivants : a DATA01. NE METTEZ PAS le tablespace en lecture seule à ce stade. géré localement avec des extents de taille uniforme (assurez-vous que les tailles des extents utilisés dans le tablespace sont des multiples de 100 Ko).dbf' SIZE 2M EXTENT MANAGEMENT DICTIONARY. . b DATA02. SQL> CREATE TABLESPACE data02 2 3 DATAFILE '$HOME/ORADATA/u03/data02. SQL> CREATE TABLESPACE data01 2 3 DATAFILE '$HOME/ORADATA/u04/data01. géré au moyen du dictionnaire de données. SQL> CREATE TABLESPACE index01 2 3 4 DATAFILE '$HOME/ORADATA/u02/index01.dbf' SIZE 1M. SQL> CREATE TABLESPACE ronly 2 DATAFILE '$HOME/ORADATA/u01/ronly01. Tablespace created. d RONLY pour les tables en lecture seule avec le stockage par défaut.dbf' SIZE 1M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100K. V$DATAFILE SQL> SELECT tablespace_name FROM dba_tablespaces.DBA_TABLESPACES . utilisez l'une des interrogations suivantes : . Oracle9i Database Administration I C-33 .Exercice 8 e Affichez les informations à partir du dictionnaire de données. Indice : Pour obtenir des informations sur les tablespaces.V$TABLESPACE . TABLESPACE_NAME -----------------------------SYSTEM TEMP USERS INDX SAMPLE DATA01 DATA02 DATA03 UNDO2 INDEX01 10 rows selected. bytes.-----------/u01/home/db02/ORADATA/u03/data02. Database altered.------.dbf' RESIZE 1500K. SQL> COLUMN name FORMAT a40 SQL> SELECT name.dbf 1536000 1048576 Oracle9i Database Administration I C-34 . BYTES CREATE_BYTES ------------------------------------.Exercice 8 (suite) 2 Allouez 500 Ko d'espace disque supplémentaires au tablespace DATA02 et vérifiez le résultat. SQL> ALTER DATABASE 2 DATAFILE '$HOME/ORADATA/u03/data02. create_bytes 2 3 NAME FROM WHERE v$datafile name LIKE '%data02%‘. Utilisez la commande de système d'exploitation pour déplacer le tablespace vers Tablespace altered.dbf $HOME/ORADATA/u06/index01.dbf /u01/home/dba01/ORADATA/u01/ronly01.dbf /u01/home/dba01/ORADATA/u03/data02.dbf /u01/home/dba01/ORADATA/u02/index01.dbf /u01/home/dba01/ORADATA/u03/indx. SQL> SELECT name. Indices .dbf' TO '$HOME/ORADATA/u06/index01.dbf SQL> ALTER TABLESPACE index01 2 3 4 RENAME DATAFILE '$HOME/ORADATA/u02/index01.Mettez le tablespace INDEX01 hors ligne. NAME /u01/home/dba01/ORADATA/u01/system01. u06.continued - Oracle9i Database Administration I C-35 . Vérifiez l'emplacement et le statut de INDEX01. Utilisez V$DATAFILE pour vérifier le statut. SQL> ALTER TABLESPACE index01 OFFLINE.dbf'.dbf /u01/home/dba01/ORADATA/u01/querydata01.Exercice 8 (suite) 3 Déplacez le tablespace INDEX01 vers le sous-répertoire u06.dbf /u01/home/dba01/ORADATA/u04/data01.dbf /u01/home/dba01/ORADATA/u02/sample01. Mettez le tablespace INDEX01 en ligne.dbf 10 rows selected. SQL> ALTER TABLESPACE index01 ONLINE.dbf /u01/home/dba01/ORADATA/u03/users01.dbf /u01/home/dba01/ORADATA/u02/undotbs. status 2 FROM v$datafile. SQL> !mv $HOME/ORADATA/u02/index01. Utilisez la commande ALTER TABLESPACE pour redéplacer le tablespace. .------- Utilisez V$DATAFILE pour vérifier le statut. STATUS SYSTEM ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE OFFLINE ONLINE -------------------------------------------------. Tablespace altered. Tablespace altered. dbf ONLINE /u01/home/dba01/ORADATA/u01/ronly01.------/u01/home/dba01/ORADATA/u01/system01.dbf ONLINE /u01/home/dba01/ORADATA/u06/index01. NAME STATUS -------------------------------------------------.dbf ONLINE /u01/home/dba01/ORADATA/u02/sample01.dbf ONLINE /u01/home/dba01/ORADATA/u01/querydata01. status 2 FROM v$datafile.dbf ONLINE /u01/home/dba01/ORADATA/u03/indx.dbf SYSTEM /u01/home/dba01/ORADATA/u02/undotbs.Exercice 8 (suite) .dbf ONLINE /u01/home/dba01/ORADATA/u03/data02.dbf ONLINE /u01/home/dba01/ORADATA/u04/data01.dbf ONLINE 10 rows selected. Oracle9i Database Administration I C-36 .dbf ONLINE /u01/home/dba01/ORADATA/u03/users01.suite SQL> SELECT name. dbf ONLINE /u01/home/dba01/ORADATA/u03/indx.----/u01/home/dba01/ORADATA/u01/system01.dbf ONLINE /u01/home/dba01/ORADATA/u01/querydata01.dbf ONLINE /u01/home/dba01/ORADATA/u01/ronly01.dbf ONLINE 10 rows selected.dbf ONLINE /u01/home/dba01/ORADATA/u04/data01. READ WRITE READ WRITE READ WRITE READ WRITE READ WRITE READ ONLY READ WRITE READ WRITE READ WRITE READ ONLY Oracle9i Database Administration I C-37 . Table created. status 2 FROM v$datafile. puis exécutez une interrogation pour vérifier.dbf ONLINE /u01/home/dba01/ORADATA/u03/data02. Mettez le tablespace RONLY en lecture seule. Tablespace altered. SQL> SELECT name. NAME STATUS ENABLED ------------------------------------------.dbf ONLINE /u01/home/dba01/ORADATA/u02/example01.Exercice 8 : gérer les tablespaces et les fichiers de données 4 a Créez une table dans le tablespace RONLY. enabled.dbf SYSTEM /u01/home/dba01/ORADATA/u02/undotbs. SQL> ALTER TABLESPACE ronly READ ONLY.dbf ONLINE /u01/home/dba01/ORADATA/u06/index01.dbf ONLINE /u01/home/dba01/ORADATA/u03/users01.---------. SQL> CREATE TABLE table1 ( x CHAR(1)) 2 TABLESPACE ronly. Oracle9i Database Administration I C-38 .Exercice 8 : gérer les tablespaces et les fichiers de données 4 b Essayez de créer une autre table TABLE2. cannot allocate space in it SQL> DROP TABLE table1. TABLE1. Supprimez la première table créée. Que se passe-t-il ? SQL> CREATE TABLE table2 ( y CHAR(1)) 2 TABLESPACE ronly. Table dropped. CREATE TABLE table2 ( y CHAR(1)) * ERROR at line 1: ORA-01647: tablespace 'RONLY' is read only. dbf v$tablespace.--- Oracle9i Database Administration I C-39 .ctl /u01/home/dba01/ORADATA/u01/system01.------------.dbf /u01/home/dba01/ORADATA/u01/ctrl01. SQL> DROP TABLESPACE ronly INCLUDING CONTENTS AND DATAFILES.bak /u01/home/dba01/ORADATA/u01/querydata01. SQL> SELECT * 2 FROM TS# NAME 0 SYSTEM 1 UNDOTBS 3 USERS 4 INDX 5 SAMPLE 2 TEMP 6 QUERY_DATA 7 DATA01 8 DATA02 9 INDEX01 10 rows selected. Tablespace dropped. SQL> !ls $HOME/ORADATA/u01/* /u01/home/dba01/ORADATA/u01/ctrl01. INC YES YES YES YES YES YES YES YES YES YES ------.Exercice 8 (suite) 5 Supprimez le tablespace RONLY et le fichier de données associé. puis vérifiez le résultat. dbf Oracle9i Database Administration I C-40 . SQL> CREATE TABLESPACE data03 2 DATAFILE SIZE 5M.Exercice 8 (suite) 6 Affectez la valeur $HOME/ORADATA/u05 au paramètre DB_CREATE_FILE_DEST uniquement dans la mémoire. SQL> SELECT * 2 FROM v$tablespace. Ne définissez pas d'emplacement de fichier. SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST='$HOME/ORADATA/u05‘ SCOPE=MEMORY. System altered. Créez un tablespace DATA03 de 5 Mo. Tablespace created. TS# NAME INC ------.--0 SYSTEM YES 1 UNDOTBS YES 3 USERS YES 4 INDX YES 5 SAMPLE YES 2 TEMP YES 6 QUERY_DATA YES 7 DATA01 YES 8 DATA02 YES 9 INDEX01 YES 11 DATA03 YES 11 rows selected.------------. Vérifiez la création du fichier de données. SQL> !ls $HOME/ORADATA/u05 ora_data03_xg17n9nd. sql pour créer des tables et des index. Oracle9i Database Administration I C-41 .sql 2 Identifiez les différents types de segment de la base de données. SQL> SELECT DISTINCT segment_type 2 FROM dba_segments. SEGMENT_TYPE -----------------CACHE CLUSTER INDEX INDEX PARTITION LOBINDEX LOBSEGMENT NESTED TABLE ROLLBACK TABLE TABLE PARTITION TYPE2 UNDO 11 rows selected. puis exécutez le script lab09_01.Exercice 9 1 Connectez-vous sous l'ID utilisateur SYSTEM. SQL> @$HOME/STUDENT/LABS/lab09_01. Cette interrogation est utile pour identifier les segments susceptibles de générer des erreurs lors de futurs chargements de données.segment_type. 2 3 4 5 FROM WHERE AND max_extents. SEGMENT_TYPE MAX_EXTENTS SEGMENT_NAME EXTENTS -------------------.dbf Oracle9i Database Administration I C-42 .--------EMP 8 TABLE 10 4 Quels fichiers disposent d'un espace alloué pour la table EMP ? SQL> SELECT DISTINCT f. FILE_NAME ------------------------------------/u01/home/dba01/ORADATA/u04/data01.----------.file_name 2 3 4 FROM WHERE AND dba_extents e. Ne tenez pas compte du segment de bootstrap.--------------.Exercice 9 (suite) 3 Ecrivez une interrogation permettant de vérifier les segments associés à une valeur inférieure de cinq extents au nombre maximal d'extents. SQL> COLUMN segment_name FORMAT a20 SQL> COLUMN segment_type FORMAT a15 SQL> SELECT segment_name.file_id=f.dba_data_files f e. extents dba_segments extents+5 > max_extents segment_type<>'CACHE'.file_id.segment_name='EMP' e. SQL> SELECT tablespace_name. MAX(bytes) AS largest FROM dba_free_space FRAGMENTS 3 1 1 1 1 1 1 1 15 1 TOTAL -----147456 1433600 5177344 2555904 5120000 917504 983040 4943872 24903680 5177344 LARGEST --------126976 1433600 5177344 2555904 5120000 917504 983040 4943872 6750208 5177344 GROUP BY tablespace_name. 2 3 4 5 SUM(bytes) AS total.Exercice 9 (suite) 5 Exécutez le script lab09_05.sql 6 Répertoriez l'espace libre disponible par tablespace.---------- Oracle9i Database Administration I C-43 . SQL> @$HOME/STUDENT/LABS/lab09_05. l'espace libre total et le plus grand extent libre de chaque tablespace. L'interrogation doit afficher le nombre de fragments. ----------------------.sql. SQL> CONNECT / AS SYSDBA Connected.COUNT(*) AS fragments. TABLESPACE_NAME DATA01 DATA02 DATA03 SAMPLE INDX INDEX01 QUERY_DATA SYSTEM UNDOTBS USERS 10 rows selected. bytes) > s.--------------. s.next_extent ) . s. SQL> SELECT s. SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME NEXT_EXTENT -----------.next_extent FROM WHERE dba_segments s NOT EXISTS ( SELECT 1 FROM dba_free_space f WHERE s.tablespace_name. 2 3 4 5 6 7 8 s.segment_name.----------BIG_EMP TABLE DATA01 1048576 Oracle9i Database Administration I C-44 .tablespace_name=f.Exercice 9 (suite) 7 Répertoriez les segments qui généreront des erreurs lors de la tentative d'allocation d'un extent supplémentaire.segment_type. en raison d'un espace insuffisant.-----------.tablespace_name HAVING max(f. SQL> SELECT segment_name 2 3 FROM WHERE dba_rollback_segs tablespace_name = 'UNDOTBS'. SEGMENT_NAME -------------------_SYSSMU1$ _SYSSMU2$ _SYSSMU3$ _SYSSMU4$ _SYSSMU5$ _SYSSMU6$ _SYSSMU7$ _SYSSMU8$ 8 rows selected.Exercice 10 1 Connectez-vous en tant que SYSTEM/MANAGER et répertoriez les segments d'annulation du tablespace UNDOTBS. SQL> CONNECT SYSTEM/MANAGER Connected. Oracle9i Database Administration I C-45 . Oracle9i Database Administration I C-46 .Exercice 10 2 Créez le tablespace d'annulation UNDO2 d'une taille de 15 Mo et placez-le dans le répertoire $HOME/oradata/u03. SQL> CREATE UNDO TABLESPACE undo2 2 DATAFILE '$HOME/ORADATA/u03/undo2.dbf' size 15M. Répertoriez les segments d'annulation du tablespace UNDO2. SQL> SELECT segment_name 2 3 FROM WHERE dba_rollback_segs tablespace_name = 'UNDO2'. Tablespace created. SEGMENT_NAME -------------------_SYSSMU9$ _SYSSMU10$ _SYSSMU11$ _SYSSMU12$ _SYSSMU13$ _SYSSMU14$ _SYSSMU15$ _SYSSMU16$ 8 rows selected. SQL> INSERT INTO departments 2 (department_id. 1 row created. SQL> ALTER SYSTEM SET undo_tablespace='UNDO2' SCOPE=BOTH.sql pour insérer une ligne dans la table DEPARTMENTS.'x'). démarrez SQL*Plus et connectez-vous sous l'ID utilisateur HR. Exécutez le script lab10_03. supprimez le tablespace UNDOTBS. passez dutablespace d'annulation UNDOTBS à UNDO2 à l'aide de la commande ALTER SYSTEM. ni annuler. ni quitter la session.Exercice 10 (suite) 3 Dans une nouvelle session Telnet. DROP TABLESPACE undotbs INCLUDING CONTENTS AND DATAFILES Oracle9i Database Administration I C-47 .department_name) 3 VALUES (9999.sql SQL> CONNECT hr/hr Connected. SQL> @$HOME/STUDENT/LABS/lab10_03. Vous ne devez ni valider. Que se passe-t-il ? SQL> DROP TABLESPACE undotbs 2 * ERROR at line 1: ORA-30013: undo tablespace 'UNDOTBS' is currently in use INCLUDING CONTENTS AND DATAFILES. 5 Sous l'ID utilisateur SYS. System altered. 4 Dans la session que vous avez ouverte sous l'ID SYS. name FROM WHERE dba_segments tablespace_name = 'UNDOTBS‘ ) 4 IN ( SELECT segment_name AND a.-----------. Comparez cette liste à celle établie à l'étape 1.name.b.usn. SQL> SELECT segment_name 2 3 FROM WHERE dba_rollback_segs tablespace_name = 'UNDOTBS'.Exercice 10 (suite) 6 Répertoriez les segments d'annulation du tablespace UNDOTBS et leur statut.--------------- Oracle9i Database Administration I C-48 .usn. SQL> SELECT a. STATUS PENDING OFFLINE USN NAME 2 _SYSSMU2$ ----. v$rollstat b WHERE a. SEGMENT_NAME -------------------_SYSSMU1$ _SYSSMU2$ _SYSSMU3$ _SYSSMU4$ _SYSSMU5$ _SYSSMU6$ _SYSSMU7$ _SYSSMU8$ 8 rows selected.status 2 3 5 6 7 FROM v$rollname a.a.usn = b. A présent. SQL> ROLLBACK. Rollback complete. Que se passe-t-il ? SQL> DROP TABLESPACE undotbs. SQL> EXIT. annulez la transaction et quittez cette session.Exercice 10 (suite) 7 Dans la session que vous avez ouverte sous l'ID utilisateur HR. Que se passe-t-il ? Remarque : La suppression du tablespace peut prendre du temps. Tablespace dropped. exécutez la commande suivante : ALTER SYSTEM SET undo_retention=0 SCOPE=memory. 8 Dans la session que vous avez ouverte sous l'ID utilisateur SYS. System altered. SQL> ALTER SYSTEM SET undo_retention=0 SCOPE=MEMORY. SQL> DROP TABLESPACE undotbs 2 INCLUDING CONTENTS AND DATAFILES. supprimez le tablespace UNDOTBS. supprimez le tablespace UNDOTBS. DROP TABLESPACE undotbs * ERROR at line 1: ORA-30013: undo tablespace 'UNDOTBS' is currently in use 9 Sous l'ID utilisateur SYS. Oracle9i Database Administration I C-49 . Utilisez le tablespace USERS et conservez. date_of_dely DATE ) TABLESPACE users. name VARCHAR2(50). SQL> CREATE TABLE orders 2 2 3 4 5 ( ord_id NUMBER(3). region VARCHAR2(5) ) TABLESPACE users. Remarque : Si vous utilisez OEM. SQL> CREATE TABLE customers 2 3 4 5 ( cust_code VARCHAR2(3).Exercice 11 1 En tant qu'utilisateur SYSTEM. Oracle9i Database Administration I C-50 . Table CUSTOMERS Column CUST_CODE NAME REGION Data Type and Size VARCHAR2(3) VARCHAR2(50) VARCHAR2(5) NUMBER(3) DATE VARCHAR2(3) DATE ORDERS ORD_ID ORD_DATE CUST_CODE DATE_OF_DELY Vous savez que des lignes seront insérées dans la table ORDERS sans valeur pour DATE_OF_DELY et que la table sera mise à jour une fois la commande effectuée. cust_code VARCHAR2(3). Table created. créez les tables et les colonnes suivantes pour l'application de gestion des commandes que vous implémentez. les paramètres de stockage par défaut. SQL> CONNECT system/manager Connected. ord_date DATE. veillez à affecter des valeurs NULL à la colonne DATE_OF_DELY. si vous le souhaitez. Table created. Exercice 11 (suite) 2 Exécutez le script lab11_02. COUNT(*) ---------1 Oracle9i Database Administration I C-51 . Indice : Interrogez la vue DBA_EXTENTS du dictionnaire de données. blocks 2 3 4 5 FROM WHERE AND AND FILE_ID 3 dba_extents owner = 'SYSTEM' segment_name = 'ORDERS' segment_type = 'TABLE'. SQL> SELECT count(*) 2 3 4 FROM WHERE AND dba_extents segment_name='ORDERS' owner='SYSTEM'. SQL> @$HOME/STUDENT/LABS/lab11_02. block_id.---------- 4 Vérifiez le nombre d'extents utilisés par la table ORDERS.sql 3 Identifiez les fichiers et les blocs qui contiennent les lignes destinées à la table ORDERS.---------. SQL> SELECT file_id. BLOCK_ID 25 BLOCKS 8 ---------.sql pour insérer des lignes dans les tables. mais avec le paramètre MINEXTENTS=10. COUNT(*) ---------2 6 Créez une autre table. Table altered. SQL> SELECT count(*) 2 3 4 FROM WHERE AND dba_extents segment_name='ORDERS' owner='SYSTEM'. Vérifiez que la table a bien été créée avec le nombre d'extents indiqué. SQL> ALTER TABLE orders ALLOCATE EXTENT. à partir de la table ORDERS. ORDERS2. COUNT(*) ---------10 Oracle9i Database Administration I C-52 . SQL> CREATE TABLE orders2 2 3 4 TABLESPACE users STORAGE(MINEXTENTS 10) AS SELECT * FROM orders. Table created. SQL> SELECT count(*) 2 3 4 FROM WHERE AND dba_extents segment_name='ORDERS2' owner='SYSTEM'. puis vérifiez que l'opération a abouti.Exercice 11 (suite) 5 Allouez manuellement à la table ORDERS un extent possédant la taille par défaut. SQL> SELECT count(*) 2 3 4 FROM WHERE AND dba_extents segment_name='ORDERS' owner='SYSTEM'.sql Oracle9i Database Administration I C-53 . Table truncated.sql pour insérer des lignes dans la table ORDERS2. COUNT(*) ---------2 elle 8 Videz la table ORDERS2 en libérant de l'espace. SQL> @$HOME/STUDENT/LABS/lab11_09. Combien d'extents la table comporte-tà présent ? SQL> TRUNCATE TABLE orders2. SQL> TRUNCATE TABLE orders REUSE STORAGE. COUNT(*) ---------10 9 Exécutez le script lab11_09. Table truncated. puis contrôlez le nombre d'extents afin de vérifier qu'ils n'ont pas été libérés. SQL> SELECT count(*) 2 3 4 FROM WHERE AND dba_extents segment_name='ORDERS2' owner='SYSTEM'.Exercice 11 (suite) 7 Videz la table ORDERS sans libérer d'espace. Exercice 11 (suite) 10 Affichez les colonnes de la table ORDERS2.------------------ Table altered. Null? Type NUMBER(3) DATE VARCHAR2(3) DATE -------------------------. Name ORD_ID ORD_DATE CUST_CODE DATE_OF_DELY SQL> ALTER TABLE orders2 2 3 SET UNUSED COLUMN date_of_dely CASCADE CONSTRAINTS. SQL> DROP TABLE orders2. Table altered. Affichez à nouveau les colonnes de cette table. SQL> ALTER TABLE orders2 2 DROP UNUSED COLUMNS. Table dropped.------------------ 11 Supprimez la colonne non utilisée DATE_OF_DELY.-------.-------. SQL> DESCRIBE orders2. Oracle9i Database Administration I C-54 . Name ORD_ID ORD_DATE CUST_CODE Null? NUMBER(3) DATE VARCHAR2(3) Type -------------------------. 12 Supprimez la table ORDERS2. Que se passe-t-il ? SQL> DESCRIBE orders2. Marquez la colonne DATE_OF_DELY comme UNUSED. Exercice 12 1 Vous envisagez de créer des index sur les colonnes NAME et REGION de la table CUSTOMERS. Quels sont les types d'index appropriés pour ces deux colonnes ? Créez ces index (nommez-les respectivement CUST_NAME_IDX et CUST_REGION_IDX). SQL> CONNECT system/manager Connected.customers(region) TABLESPACE index01. Index created. Oracle9i Database Administration I C-55 . Index created. Indice : dans le Les index B-Tree sont adaptés aux colonnes qui contiennent de nombreuses valeurs distinctes tandis que les index bitmap conviennent plutôt aux colonnes qui contiennent peu de valeurs distinctes. puis placez-les dans le tablespace INDX01). SQL> ALTER INDEX cust_region_idx REBUILD 2 TABLESPACE indx. 2 Transférez l'index CUST_REGION_IDX vers un autre tablespace. La table CUSTOMERS se trouve schéma SYSTEM. Index altered. Indice : Vous pouvez reconstruire l'index en indiquant un autre tablespace. SQL> CREATE INDEX cust_name_idx 2 3 ON customers(name) TABLESPACE index01. SQL> CREATE BITMAP INDEX cust_region_idx 2 3 ON system. Exercice 12 3 Notez les fichiers et les blocs utilisés par les extents dans l'index CUST_REGION_IDX. BLOCK_ID 142 BLOCKS 125 ---------. Indice : Accédez à ces informations par la vue DBA_EXTENTS. blocks 2 3 4 FROM WHERE AND FILE_ID 4 dba_extents segment_name='CUST_REGION_IDX' owner='SYSTEM'. blocks 2 3 4 FROM WHERE AND FILE_ID 4 dba_extents segment_name='CUST_REGION_IDX' owner='SYSTEM'. block_id.---------- Oracle9i Database Administration I C-56 . puis renomme temporaire. En le serveur Oracle construit un index temporaire. SQL> SELECT file_id. Le nouvel index réutilise-t-il les mêmes blocs qu'auparavant ? Indice : Reconstruisez l'index. supprime l'ancien. BLOCK_ID 17 BLOCKS 125 ---------.---------. block_id.---------- 4 Recréez l'index CUST_REGION_IDX sans le supprimer au préalable et conservez-le dans le même tablespace. SQL> SELECT file_id. l'index Remarque : Le nouvel index ne réutilise pas le même espace après reconstruction. effet. SQL> ALTER INDEX cust_region_idx REBUILD. Index altered.---------. créez les index B-Tree NUMB_OE_IDX et NUMB_NO_IDX. Index NUMB_OE_IDX NUMB_NO_IDX Column ODD_EVEN NO Blocks Oracle9i Database Administration I C-57 . Indice : Utilisez une valeur PCTINCREASE égale à zéro pour créer des extents de taille identique. 2 3 count(DISTINCT odd_even) OE FROM NO 10000 numbers. Vérifiez la taille totale des index et écrivez ci-dessous le nombre de blocs.sql les b Interrogez la table NUMBERS pour déterminer le nombre de valeurs distinctes dans deux colonnes de la table.---------- c En utilisant des tailles d'extent uniformes de 4 Ko. SQL> SELECT count(DISTINCT no) NO.Exercice 12 (suite) 5 a Sous l'ID utilisateur SYSTEM.sql pour créer la table NUMBERS et l'alimenter. OE 2 ---------. respectivement sur les colonnes ODD_EVEN et NO de la table NUMBERS. exécutez le script lab12_05a. Vérifiez dans DBA_SEGMENTS le nombre total de blocs alloués aux extents. SQL> @$HOME/STUDENT/LABS/lab12_05a. Placez ces index dans le tablespace INDEX01. BLOCKS 40 46 SEGMENT_NAME NUMB_OE_IDX NUMB_NO_IDX --------------.---------- Oracle9i Database Administration I C-58 . SQL> CREATE INDEX numb_no_idx 2 3 ON numbers(no) TABLESPACE index01. SQL> COLUMN segment_name FORMAT a15 SQL> SELECT segment_name.Exercice 12 (suite) 5 c (suite) SQL> CREATE INDEX numb_oe_idx 2 3 ON numbers(odd_even) TABLESPACE index01. Index created. Index created. blocks 2 3 4 FROM WHERE AND dba_segments segment_name LIKE 'NUMB%' segment_type='INDEX'. Exercice 12 (suite) 5 d Après avoir enregistré les blocs ci-dessus. blocks 2 3 4 FROM WHERE AND dba_segments segment_name LIKE 'NUMB%' segment_type='INDEX'. Placez ces index dans le tablespace INDEX01. respectivement sur les colonnes ODD_EVEN et NO de la table NUMBERS. SQL> CREATE BITMAP INDEX numb_oe_idx 2 3 ON numbers(odd_even) TABLESPACE index01. vous devez supprimer les index NUMB_OE_IDX et NUMB_NO_IDX. Index created. Oracle9i Database Administration I C-59 . SQL> DROP INDEX numb_no_idx. Index NUMB_OE_IDX NUMB_NO_IDX Column ODD_EVEN NO Blocks SQL> DROP INDEX numb_oe_idx.---------- Que pouvez-vous conclure de la relation entre la cardinalité et la taille des deux index ? Réponse : Les résultats révèlent que les index bitmap et B-tree sont compacts. Index dropped. Index dropped. Index created. créez les index bitmap NUMB_OE_IDX et NUMB_NO_IDX. SQL> SELECT segment_name. Vérifiez la taille totale des index et écrivez ci-dessous le nombre de blocs. BLOCKS 2 72 SEGMENT_NAME NUMB_OE_IDX NUMB_NO_IDX --------------. SQL> CREATE BITMAP INDEX numb_no_idx 2 3 ON numbers(no) TABLESPACE index01. Réexécutez l'interrogation dans DBA_SEGMENTS pour vérifier le nombre total de blocs alloués aux extents. En utilisant des tailles d'extent uniformes de 4 Ko. respectivement pour une colonne de faible cardinalité et pour une colonne de forte cardinalité. status FROM WHERE dba_constraints table_name IN ('PRODUCTS'.--------------.'ORDERS'.'CUSTOMERS') AND owner='SYSTEM'.. Indice : Utilisez la vue DBA_CONSTRAINTS pour obtenir ces informations. SQL> COLUMN constraint_name FORMAT a25 SQL> COLUMN table_name SQL> COLUMN deferrable SQL> COLUMN status 2 3 4 5 6 FORMAT a10 FORMAT a15 FORMAT a10 SQL> COLUMN constraint_type FORMAT a1 SQL> SELECT constraint_name. TABLE_NAME C DEFERRABLE CONSTRAINT_NAME STATUS ------------------------. deferrable. CUSTOMERS CUSTOMERS ORDERS ORDERS ORDERS PRODUCTS C NOT DEFERRABLE P DEFERRABLE R DEFERRABLE C NOT DEFERRABLE P NOT DEFERRABLE U DEFERRABLE Oracle9i Database Administration I C-60 .Exercice 13 1 Consultez le script lab13_01. table_name.---------. constraint_type.sql.------CUSTOMERS_REGION_CK ENABLED CUSTOMERS_CUST_CODE_PK ENABLED ORDERS_CUST_CODE_FK ENABLED ORDERS_DATE_OF_DELY_CK ENABLED ORDERS_ORD_ID_PK ENABLED PRODUCTS_PROD_CODE_UK DISABLED 6 rows selected. Exécutez-le pour créer les contraintes SQL> @$HOME/STUDENT/LABS/lab13_01.sql 2 Interrogez le dictionnaire de données pour effectuer les opérations suivantes : a Vérifiez la présence de contraintes et déterminer leur statut et si elles peuvent être différées. 'CUSTOMERS') ( SELECT constraint_name FROM WHERE INDEX_NAME CUSTOMERS_CUST_CODE_PK ORDERS_ORD_ID_PK -----------------------------. 'ORDERS'.---------. Indice : Les index ne sont créés que pour les contraintes de clé primaire et de clé unique.Exercice 13 (suite) 2 b Vérifiez le nom et le type des index créés pour valider les contraintes.'U') FROM WHERE dba_indexes index_name in dba_constraints table_name IN ('PRODUCTS'.sql afin d'insérer deux enregistrements dans la table PRODUCTS. Ils portent le même nom que ces contraintes. TABLE_NAME UNIQUENES CUSTOMERS ORDERS NONUNIQUE UNIQUE owner='SYSTEM' constraint_type in ('P'. exécutez le script lab13_03.sql Oracle9i Database Administration I C-61 . SQL> @$HOME/STUDENT/LABS/lab13_03. SQL> SELECT index_name.table_name.uniqueness 2 3 4 5 6 7 8 9 10 AND AND ) .--------- 3 Sous l'ID utilisateur SYSTEM. ------------. Table altered.products 5 a Assurez-vous que les nouvelles lignes ajoutées à la table ne violent pas la contrainte portant sur la table PRODUCT. ALTER TABLE system.----PRODUCTS U NOT VALIDATED CONSTRAINT_NAME STATUS ---------------------PRODUCTS_PROD_CODE_UK ENABLED Oracle9i Database Administration I C-62 . SQL> ALTER TABLE system. validated. L'opération a-t-elle abouti ? SQL> ALTER TABLE system. table_name.PRODUCTS_PROD_CODE_UK) . 2 3 4 5 constraint_type. activez la contrainte NOVALIDATE. TABLE_NAME C VALIDATED ---------. SQL> SELECT constraint_name.Exercice 13 (suite) 4 Activez la contrainte UNIQUE dans la table PRODUCT. status FROM WHERE AND dba_constraints table_name = 'PRODUCTS' owner='SYSTEM'.products 2 * ERROR at line 1: ORA-02299: cannot validate (SYSTEM.duplicate keys found ENABLE CONSTRAINT products_prod_code_uk..products 2 ENABLE NOVALIDATE CONSTRAINT products_prod_code_uk. Indice : Pour ce faire. b Interrogez le dictionnaire de données afin de vérifier l'impact de cette modification. 'Monitor'.exceptions.PRODUCTS_PROD_CODE_UK) violated VALUES(4000. SQL> ALTER TABLE system. ALTER TABLE system.products 2 * ERROR at line 1: ORA-00001: unique constraint (SYSTEM. ajoutez une ligne contenant les valeurs suivantes : PRODUCT_I D PRODUCT_DESCRIPTION LIST_PRICE 4000 Monitor 3000 SQL> INSERT INTO system.products Oracle9i Database Administration I C-63 .products 6 Effectuez les opérations requises pour identifier les cas de violation de contrainte détectés dans la table PRODUCTS. puis assurez-vous que toutes les données. modifiez les codes produit (PRODUCT_ID) en conséquence.3000). Indice : Procédez comme suit : a Créez la table EXCEPTIONS. sont conformes à la contrainte (considérez que la table comporte plusieurs milliers de lignes et qu'il est bien trop long de vérifier chacune d'elles manuellement). SQL> @?/rdbms/admin/utlexcpt b Exécutez la commande pour activer la contrainte et intercepter les exceptions. SQL> CONNECT system/manager Connected. INSERT INTO system.Exercice 13 (suite) 5 c Pour vérifier que la contrainte rejette les insertions en infraction.PRODUCTS_PROD_CODE_UK) . nouvelles ou existantes.duplicate keys found ENABLE CONSTRAINT products_prod_code_uk EXCEPTIONS INTO system.products 2 3 * ERROR at line 1: ORA-02299: cannot validate (SYSTEM. SQL> ALTER TABLE system. SET WHERE system. description 2 3 4 5 6 ROWID FROM WHERE system. Oracle9i Database Administration I C-64 . PROD_CODE DESCRIPTION ( SELECT row_id FROM WHERE -----------------.---------.Exercice 13 (suite) 6 c Utilisez les ROWID dans la table EXCEPTIONS pour afficher les lignes de la table PRODUCTS qui violent la contrainte (ne demandez pas l'affichage des colonnes LOB). SQL> UPDATE 2 3 4 5 1 row updated. e Activez la contrainte. prod_code.products prod_code='4001' rowid = ( SELECT max(row_id) FROM WHERE exceptions table_name='PRODUCTS‘ ) .products 2 3 ENABLE CONSTRAINT products_prod_code_uk EXCEPTIONS INTO system. SQL> SELECT rowid. Table altered.exceptions.products rowid IN exceptions table_name='PRODUCTS‘ ) .----------------------------AAABSgAAIAAAAASAAA AAABSgAAIAAAAASAAB 4000 UNIX Monitor 4000 NT Monitor d Corrigez les erreurs. sql SQL> INSERT INTO system. 'East'). Rollback complete.customers 2 VALUES ('J01'. SQL> ROLLBACK. INSERT INTO system.NULL).ORDERS_CUST_CODE_FK) violated .'J01'. SQL> @$HOME/STUDENT/LABS/lab13_07.orders Oracle9i Database Administration I C-65 .'01-JAN-98'.Exercice 13 (suite) 7 Exécutez le script lab13_07.'Sports Store'.orders 2 * ERROR at line 1: ORA-02291: integrity constraint (SYSTEM. VALUES (800. 1 row created. Les insertions ontelles réussi ? Annulez les modifications.parent key not found SQL> INSERT INTO system.sql pour insérer des lignes dans la table. TRUNCATE TABLE system.Exercice 13 (suite) 8 A présent. Session altered. SQL> INSERT INTO system.'Sports Store'. SQL> INSERT INTO system. SQL> @$HOME/STUDENT/LABS/lab13_08.customers 2 VALUES ('J01'. 1 row created.customers. SQL> COMMIT. L'opération a-t-elle abouti ? SQL> TRUNCATE TABLE system. Exécutez le script. Ce script effectue également les insertions dans le même ordre.orders 2 VALUES (800.'01-JAN-98'.sql SQL> ALTER SESSION SET CONSTRAINTS=deferred.customers * ERROR at line 1: ORA-02266: unique/primary keys in table referenced by enabled foreign keys Oracle9i Database Administration I C-66 . Commit complete.'J01'. 9 Videz la table CUSTOMERS. 1 row created. puis vérifiez que son exécution se déroule correctement. consultez le script lab13_08. 'East').NULL). sql SQL> @$ORACLE_HOME/rdbms/admin/utlpwdmg. puis le script @$ORACLE_HOME/rdbms/admin/utlpwdmg. User altered.sql 2 Tentez de remplacer le mot de passe de l'utilisateur Jeff par Jeff.sql pour créer l'utilisateur Jeff. Oracle9i Database Administration I C-67 .sql pour activer la gestion des mots de passe. ALTER USER jeff IDENTIFIED BY jeff * ERROR at line 1: ORA-28003: password verification for the specified password failed ORA-20001: Password same as or similar to user des 3 Essayez de remplacer le mot de passe de Jeff pour qu'il respecte le format de gestion mots de passe. Que se passe-t-il ? SQL> ALTER USER jeff IDENTIFIED BY jeff.Exercice 14 1 Exécutez le script lab14_01. SQL> ALTER USER jeff 2 IDENTIFIED BY super1$. SQL> @$HOME/STUDENT/LABS/lab14_01. un caractère et un signe de ponctuation. Indice : Le mot de passe doit contenir au moins un chiffre. Exercice 14 (suite) 4 Modifiez le profil DEFAULT pour que les paramètres suivants s'appliquent aux utilisateurs possédant ce profil : le compte doit être verrouillé après deux tentatives de connexion. Interrogez la vue DBA_PROFILES du dictionnaire de données pour vérifier les résultats. Profile altered. le mot de passe doit expirer après un délai de 30 jours. SQL> SELECT resource_name.le compte doit bénéficier d'une période de grâce de cinq jours pour la modification d'un mot de passe qui a expiré. ----------------------------.0006 5 RESOURCE_NAME FAILED_LOGIN_ATTEMPTS PASSWORD_LIFE_TIME PASSWORD_REUSE_TIME PASSWORD_REUSE_MAX PASSWORD_VERIFY_FUNCTION PASSWORD_LOCK_TIME PASSWORD_GRACE_TIME 7 rows selected.------------------- Oracle9i Database Administration I C-68 .0006 UNLIMITED VERIFY_FUNCTION . . limit 2 3 4 FROM WHERE AND dba_profiles profile='DEFAULT' resource_type='PASSWORD'. Indices Modifiez les limites du profil par défaut à l'aide de la commande ALTER PROFILE. le même mot de passe ne doit pas être réutilisé pendant au moins une minute. LIMIT 2 30 . Assurez-vous que ces exigences sont satisfaites. SQL> ALTER PROFILE default LIMIT 2 3 4 5 FAILED_LOGIN_ATTEMPTS 2 PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_TIME 1/1440 PASSWORD_GRACE_TIME 5. logon denied SQL> CONNECT jeff/super1$ ERROR: ORA-28000: the account is locked Oracle9i Database Administration I C-69 . SQL> CONNECT jeff/super ERROR: ORA-01017: invalid username/password. Que se passe-t-il ? SQL> CONNECT jeff/superman ERROR: ORA-01017: invalid username/password. connectez-vous avec le mot de passe correct. Après deux tentatives. logon denied Warning: You are no longer connected to ORACLE.Exercice 14 (suite) 5 Connectez-vous sous l'ID de l'utilisateur Jeff en entrant un mot de passe non valide. account_status 2 FROM dba_users. Déverrouillez le compte utilisateur Jeff. SQL> SELECT username. Oracle9i Database Administration I C-70 . SQL> CONNECT jeff/super1$ Connected. User altered. Indice : Déverrouillez le compte à l'aide de la commande ALTER USER. SQL> CONNECT / AS SYSDBA Connected. Connectez-vous ensuite sous l'ID Jeff.Exercice 14 (suite) 6 Utilisez la vue DBA_USERS du dictionnaire de données pour vérifier que l'utilisateur Jeff est verrouillé. SQL> ALTER USER jeff 2 ACCOUNT UNLOCK. USERNAME ACCOUNT_STATUS --------------.--------------SYS OPEN SYSTEM OPEN OUTLN OPEN ORDSYS OPEN MDSYS OPEN OE OPEN HR OPEN ORDPLUGINS OPEN DBSNMP OPEN JEFF LOCKED(TIMED) 10 rows selected. SQL> ALTER PROFILE default LIMIT 2 3 4 5 6 7 8 FAILED_LOGIN_ATTEMPTS PASSWORD_LIFE_TIME PASSWORD_REUSE_TIME PASSWORD_REUSE_MAX PASSWORD_VERIFY_FUNCTION PASSWORD_LOCK_TIME PASSWORD_GRACE_TIME UNLIMITED UNLIMITED UNLIMITED UNLIMITED NULL UNLIMITED UNLIMITED. Indice : Utilisez la commande ALTER PROFILE. Oracle9i Database Administration I C-71 . Profile altered. Que se passe-t-il ? Pourquoi ? SQL> CONNECT jeff/superman ERROR: ORA-01017: invalid username/password. logon denied Warning: You are no longer connected to ORACLE. celle-ci a été désactivée à l'étape 7.Exercice 14 (suite) 7 Désactivez les vérifications de mots de passe pour le profil DEFAULT. logon denied SQL> CONNECT jeff/super1$ Connected. Après deux tentatives. connectez-vous avec le mot de passe correct. 8 Connectez-vous sous l'ID Jeff en entrant un mot de passe non valide. SQL> CONNECT jeff/super ERROR: ORA-01017: invalid username/password. lorsque vous avez affecté la valeur NULL à la fonction PASSWORD_VERIFY_FUNCTION. En effet. Réponse : Le compte ne se verrouille pas si vous vous connectez avec le mot de passe correct à la troisième tentative (voir étape 5). SQL> CONNECT system/manager Connected. SQL> @$HOME/STUDENT/LABS/lab15_01. Oracle9i Database Administration I C-72 . Grant succeeded.sql SQL> GRANT CREATE SESSION TO bob. Utilisez le script lab15_01. User created. SQL> CREATE USER bob 2 3 4 5 6 IDENTIFIED BY crusader DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE temp QUOTA 1M ON USERS QUOTA 1M ON INDX. Vérifiez également que Bob peut se connecter et créer dans les tablespaces USERS et INDX des objets dont la taille peut atteindre un mégaoctet. Assurez-vous que les objets et les segments temporaires créés par Bob ne sont pas ajoutés au tablespace SYSTEM. Indice : Affectez à Bob le tablespace par défaut USERS et le tablespace temporaire TEMP.Exercice 15 1 Créez l'utilisateur Bob associé au mot de passe CRUSADER.sql pour accorder à Bob le droit de créer des sessions. -------------------. DEFAULT_TABLESPACE USERS USERS TEMPORARY_TABLE TEMP TEMP USERNAME EMI BOB ---------. default_tablespace. 'EMI'). Assurez-vous que les objets et les segments de tri créés par Emi ne sont pas ajoutés au tablespace SYSTEM.Exercice 15 2 Créez l'utilisateur Emi associé au mot de passe Mary.--------------- Oracle9i Database Administration I C-73 . 2 3 4 temporary_tablespace FROM WHERE dba_users username IN ('BOB'. SQL> CREATE USER emi 2 3 4 IDENTIFIED BY mary DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp. SQL> SELECT username. User created. Indice : Vous pouvez interroger la vue DBA_USERS. 3 Affichez les informations sur Bob et Emi à partir du dictionnaire de données. Exercice 15 (suite) 4 A partir du dictionnaire de données. ALTER USER bob Oracle9i Database Administration I C-74 .----. FORMAT a10 TABLESPACE_NAME USERNAME BYTES MAX_BLOCKS --------------. SQL> COLUMN tablespace_name FORMAT a15 SQL> COLUMN user SQL> SELECT * 2 3 FROM dba_ts_quotas MAX_BYTES BLOCKS WHERE username = 'BOB'.-----. affichez les informations sur la quantité d'espace que Bob peut utiliser dans les tablespaces.-------. SQL> ALTER USER bob 2 * ERROR at line 1: ORA-01031: insufficient privileges TEMPORARY TABLESPACE users. modifiez le tablespace temporaire de Bob. Que se passe-til ? SQL> connect bob/crusader Connected. Indice : Vous pouvez interroger la vue DBA_TS_QUOTAS.---------.--------INDX 256 USERS BOB BOB 0 0 1048576 1048576 0 0 5 a 256 Sous l'ID utilisateur Bob. SQL> CONNECT system/manager Connected. supprimez le quota de Bob sur son tablespace par défaut. SQL> CONNECT bob/crusader Connected. User altered. SQL> ALTER USER bob 2 IDENTIFIED BY sam. SQL> ALTER USER bob QUOTA 0 ON users. User altered. 6 Sous l'ID utilisateur SYSTEM.Exercice 15 (suite) 5 b Sous l'ID utilisateur Bob. remplacez le mot de passe de Bob par Sam. Oracle9i Database Administration I C-75 . SQL> ALTER USER bob 2 3 IDENTIFIED BY olink PASSWORD EXPIRE. Affectez à Bob le mot de passe OLINK et demandez-lui le modifier lors de sa prochaine connexion. Oracle9i Database Administration I C-76 .Exercice 15 (suite) 7 Supprimez le compte d'Emi de la base de données. de 8 Bob a oublié son mot de passe. User altered. SQL> DROP USER emi. User dropped. name region TABLESPACE data01. VARCHAR2(50).sql pour vous connecter en tant qu'Emi et créez les tables CUSTOMERS1 et ORDERS1. create table TO emi. NUMBER(3).sql. SQL> CONNECT system/manager Connected. User created. VARCHAR2(5) ) date_of_dely DATE ) Oracle9i Database Administration I C-77 . SQL> CREATE USER emi 2 3 4 5 IDENTIFIED BY "abcd12" DEFAULT TABLESPACE data01 TEMPORARY TABLESPACE temp QUOTA 1M ON data01. 2 a Exécutez le script lab16_02a. Affectez-lui le tablespace par défaut DATA01. le tablespace temporaire TEMP et un quota de tablespace de 1 Mo sur DATA01. DATE. CREATE TABLE orders1 (ord_id ord_date cust_code TABLESPACE data01. puis créez l'utilisateur Emi et autorisez-le à se connecter à la base de données et à créer des objets dans son schéma. SQL> @$HOME/STUDENT/LABS/lab16_02a.Exercice 16 1 Connectez-vous en tant que SYSTEM. CREATE TABLE customers1 (cust_code VARCHAR2(3). SQL> GRANT create session. SQL> CONNECT emi/abcd12 Connected. VARCHAR2(3). Grant succeeded. CUS NAME REGIO --. Vérifiez que les enregistrements ont bien été insérés. SQL> INSERT INTO emi.customers. puis autorisez Bob à sélectionner des données A08 NORTH WOODS HEALTH AND FITNESS SUPPLY dans la table CUSTOMERS1 d'Emi . SQL> GRANT select ON emi.CUSTOMERS vers la table CUSOMTERS d'Emi. 9 rows created. SQL> SELECT * FROM emi. Connected. Que se passe-t-il ? CENTER East J01 Sports Store East SQL> CONNECT system/manager 9 rows selected.---A01 TKB SPORT SHOP West A02 VOLLYRITE North A03 JUST TENNIS North A04 EVERY MOUNTAIN South A05 SHAPE UP South A06 SHAPE UP West c Connectez-vous en tant que SYSTEM.-------------------------------------------------.customers1. puis copiez les données de SYSTEM.Exercice 16 (suite) 2 b Connectez-vous en tant que SYSTEM.customers1 TO bob. SQL> CONNECT system/manager Connected.customers1 2 3 SELECT * FROM system. GRANT select ON emi.customers1 TO bob * ERROR at line 1: ORA-01031: insufficient privileges A07 WOMENS SPORTS South Oracle9i Database Administration I C-78 . Exercice 16 (suite) 3 Reconnectez-vous en tant qu'Emi.---------.-------. Indice : Utilisez la vue DBA_TAB_PRIVS. PRIVILEGE SELECT GRANT HIERARCHY YES NO FORMAT a8 FORMAT a8 FORMAT a8 FORMAT a10 FORMAT a3 FORMAT a3 SQL> COLUMN table_name FORMAT a10 GRANTEE OWNER TABLE_NAME GRANTOR BOB EMI CUSTOMERS1 EMI ------. Grant succeeded.----. puis autorisez Bob à sélectionner des données dans la table CUSTOMERS1 d'Emi et à octroyer ce droit à d'autres utilisateurs.--------- Oracle9i Database Administration I C-79 .----. En tant qu'utilisateur SYSTEM.---------. SQL> CONNECT emi/abcd12 Connected. SQL> CONNECT system/manager Connected. SQL> COLUMN grantee SQL> COLUMN owner SQL> COLUMN grantor SQL> COLUMN privilege SQL> COLUMN grantable SQL> COLUMN hierarchy SQL> SELECT * 2 3 FROM WHERE dba_tab_privs grantee='BOB'. SQL> GRANT select ON customers1 2 TO bob WITH GRANT OPTION. consultez les vues du dictionnaire de données qui enregistrent ces actions. Grant succeeded. User created. Remarque : Le message A password has expired va s'afficher en raison des effectuées à l'étape 8 de l'exercice 15.customers1 TO trevor. SQL> GRANT select ON emi. Remplacez le mot de passe de Bob par SQL> CONNECT bob/olink ERROR: ORA-28001: the password has expired Changing password for bob New password: aaron1$ Retype new password: aaron1$ Password changed Connected. 5 a En tant que Bob. Grant succeeded. SQL> CONNECT system/manager Connected. SQL> CREATE USER trevor IDENTIFIED BY “diamond1$". puis autorisez-le à se connecter à la base de données. SQL> GRANT create session TO trevor. Oracle9i Database Administration I C-80 . opérations aaron$1. autorisez Trevor à accéder à la table CUSTOMERS1 d'Emi.Exercice 16 (suite) 4 Créez l'utilisateur Trevor identifié par le mot de passe diamond1$. puis retirez à Bob le privilège de lecture de la table CUSTOMERS1 d'Emi.Exercice 16 (suite) 5 b Connectez-vous en tant qu'Emi. puis interrogez la table CUSTOMERS1 d'Emi.customers1. SQL> REVOKE select ON customers1 FROM bob. SQL> SELECT * 2 FROM emi. Que se passe-t-il ? SQL> CONNECT trevor/diamond1$ Connected. SQL> CONNECT emi/abcd12 Connected. * ERROR at line 2: ORA-00942: table or view does not exist FROM emi.customers1 Oracle9i Database Administration I C-81 . Revoke succeeded. c Connectez-vous en tant que Trevor. SQL> GRANT sysoper TO emi. mais pas à en créer une nouvelle. Oracle9i Database Administration I C-82 . Grant succeeded.Exercice 16 (suite) 6 Autorisez Emi à démarrer et arrêter la base de données. SQL> CONNECT / AS SYSDBA Connected. SQL> COLUMN privilege FORMAT a20 SQL> COLUMN grantee SQL> SELECT 2 3 FROM WHERE * dba_sys_privs grantee = 'RESOURCE'.Exercice 17 1 Examinez la vue du dictionnaire de données et répertoriez les privilèges système du rôle RESOURCE.-------------------. SQL> CONNECT system/manager Connected. PRIVILEGE CREATE CLUSTER CREATE INDEXTYPE CREATE OPERATOR CREATE PROCEDURE CREATE SEQUENCE CREATE TABLE CREATE TRIGGER CREATE TYPE ADM NO NO NO NO NO NO NO NO FORMAT a10 GRANTEE RESOURCE RESOURCE RESOURCE RESOURCE RESOURCE RESOURCE RESOURCE RESOURCE ---------.--- 8 rows selected. Oracle9i Database Administration I C-83 . SQL> CONNECT emi/abcd12 Connected. Oracle9i Database Administration I C-84 . SQL> GRANT select ON customers1 TO dev. create view TO dev. SQL> CREATE ROLE dev. Grant succeeded. Role created. SQL> GRANT create table. Grant succeeded.Exercice 17 2 Créez le rôle DEV qui permettra à un utilisateur de créer une table ou une vue et de sélectionner des données dans la table CUSTOMERS1 d'Emi. Grant succeeded. Oracle9i Database Administration I C-85 . SQL> ALTER USER bob 2 DEFAULT ROLE resource. en précisant que seul le rôle RESOURCE doit être automatiquement activé à la connexion. SQL> CONNECT system/manager Connected. b Donnez à Bob la possibilité de lire toutes les informations du dictionnaire de données. resource TO bob. SQL> GRANT select_catalog_role TO bob. SQL> CONNECT system/manager Connected. User altered.Exercice 17 (suite) 3 a Affectez les rôles RESOURCE et DEV à Bob. Grant succeeded. SQL> GRANT dev. Exercice 17 (suite) 4 Bob a besoin de vérifier les segments d'annulation actuellement utilisés par l'instance. SQL> CREATE VIEW cust_view AS 2 3 SELECT * FROM FROM emi. * ERROR at line 3: ORA-01031: insufficient privileges emi.customers. Que se passe-t-il ? SQL> CONNECT system/manager Connected. SQL> SET ROLE select_catalog_role. Connectez-vous sous l'ID utilisateur Bob et répertoriez les segments d'annulation utilisés. Indice : Utilisez SET ROLE SELECT_CATALOG_ROLE. 5 Sous l'ID utilisateur SYSTEM. SQL> CONNECT bob/aaron1$ Connected. Role set.customers Oracle9i Database Administration I C-86 . SQL> SELECT segment_name 2 FROM dba_rollback_segs 3 WHERE status='ONLINE'. tentez de créer la vue CUST_VIEW dans la table CUSTOMERS d'Emi. SEGMENT_NAME --------------SYSTEM _SYSSMU9$ _SYSSMU10$ _SYSSMU11$ _SYSSMU12$ _SYSSMU13$ _SYSSMU14$ _SYSSMU15$ _SYSSMU16$ 9 rows selected. View created. SQL> CONNECT system/manager Connected. SQL> GRANT select ON customers TO system. Oracle9i Database Administration I C-87 .Exercice 17 (suite) 6 Sous l'ID utilisateur Emi.customers. Grant succeeded. En tant que SYSTEM. accordez à SYSTEM le privilège SELECT sur CUSTOMERS1. tentez ensuite de créer la vue CUST_VIEW dans la table CUSTOMERS1 d'Emi. SQL> CREATE VIEW cust_view AS 2 3 SELECT * FROM emi. Que se passe-t-il ? SQL> CONNECT emi/abcd12 Connected. lcase2.0.ctl log=$HOME/lcase1. observez les fichiers suivants : lcase1.ctl.sql Table created. 2 a Exécutez SQL*Loader en mode de chargement des données par chemin conventionnel pour charger des données dans la table DEPARTMENTS2.log SQL*Loader: Release 9.ctl • Dans Oracle Enterprise Manager : OEMsqlcase1. $ cd $HOME/STUDENT/LABS $ sqlldr hr/hr control=lcase1. SQL> CONNECT hr/hr Connected.logical record count 27 . observez les fichiers suivants : OEMsqlcase1.Production on Fri Oct 5 23:18:29 2001 (c) Copyright 2001 Oracle Corporation. All rights reserved.ctl.dat Si vous utilisez Oracle Enterprise Manager. and lcase2.ctl Les fichiers sont situés dans le répertoire LABS.1.sql pour créer la table DEPARTMENTS2. Oracle9i Database Administration I C-88 . Utilisez le fichier de contrôle suivant : • Dans SQL*Plus : lcase1.ctl. • • Si vous utilisez SQL*Plus. b En tant que HR. SQL> @HOME/STUDENT/LABS/lab19_01. and OEMsqlcase2. exécutez le script lab19_01.0 . Remarque : Il s'exécute en utilisant un fichier de contrôle contenant les données en entrée.. OEMsqlcase2.Exercice 19 1 a Observez les fichiers de données à utiliser dans le chargement afin de vous familiariser avec les formats de fichier de contrôle et de fichier de données..0.ctl. Commit point reached . SQL> TRUNCATE TABLE departments2. DEPT_ID DEPT_NAME ------.Exercice 19 2 b Utilisez la commande appropriée du système d'exploitation pour observer le fichier journal. Table truncated. SQL> SELECT * FROM DEPTARTMENTS2.log -. Oracle9i Database Administration I C-89 .------------------10 Administration 20 Marketing 30 Purchasing 40 Human Resources 50 Shipping 60 IT 70 Public Relations … 27 rows selected 3 Supprimez tous les enregistrements de la table DEPTARTMENTS2. $ more lcase1.Note: Path used: Conventional c Interrogez la table DEPARTMENTS2 pour vérifier les données. ctl direct=true log=$HOME/STUDENT/LABS/lcase2.logical record count 27.0 .Production on Fri Oct 5 10:40:10 2001 (c) Copyright 2001 Oracle Corporation.log -.0. DEPT_ID DEPT_NAME ------. All rights reserved.1.Note: Path used: Direct c Interrogez la table DEPARTMENTS2 pour vérifier les données. b Utilisez la commande appropriée du système d'exploitation pour observer le fichier journal.Exercice 19 4 a Exécutez SQL*Loader en mode de chargement des données par chemin direct pour charger des données dans la table DEPARTMENTS2.log SQL*Loader: Release 9. $ more lcase2. SQL> SELECT * FROM DEPARTMENTS2. Oracle9i Database Administration I C-90 . Utilisez les fichiers de contrôle suivants : • Dans SQL*Plus : lcase2.ctl Les fichiers sont situés dans le répertoire LABS. Load completed .0.ctl • Dans Oracle Enterprise Manager : OEMsqlcase2. .. Remarque : Il s'exécute en utilisant un fichier de données en entrée qui charge les données $ cd $HOME/STUDENT/LABS $ sqlldr hr/hr control=lcase2..------------------10 Administration 20 Marketing 30 Purchasing 40 Human Resources 50 Shipping 60 IT 70 Public Relations 80 Sales 90 Executive … 27 rows selected. ----------------. Table truncated.------------------------- Oracle9i Database Administration I C-91 . SQL> TRUNCATE TABLE employees2. Effectuez ensuite une sélection dans la table EMPLOYEES2 pour vérifier qu'elle ne contient aucune donnée. créez une table EMPLOYEES2 à partir de la table EMPLOYEES. LAST_NAME Seo Patel Rajs Davies EMPLOYEE_ID FIRST_NAME 139 140 141 142 … 107 rows selected. first_name. last_name 2 FROM employees2. SQL> INSERT /*+ append */ INTO employees2 2 3 NOLOGGING SELECT * from employees. SQL> COMMIT. SQL> CONNECT hr/hr SQL> CREATE TABLE employees2 2 AS SELECT * FROM employees. John Joshua Trenna Curtis ---------. Table created. Videz la table. SQL> SELECT employee_id. 107 rows created.Exercice 19 5 a En tant qu'utilisateur HR. SQL> SELECT * FROM employees2. no rows selected b Effectuez un chargement par chemin direct de la table EMPLOYEES vers la table EMPLOYEES2 et interrogez cette dernière pour vérifier le chargement. Vérifiez les données. no rows selected b Restaurez les données à l'aide d'un chargement par chemin direct en parallèle depuis la table EMPLOYEES.Exercice 19 6 a Videz à nouveau la table EMPLOYEES2. last_name 2 FROM employees2. LAST_NAME Seo Patel Rajs Davies EMPLOYEE_ID FIRST_NAME 139 140 141 142 … 107 rows selected. Table truncated. John Joshua Trenna Curtis ---------. SQL> SELECT employee_id. SQL> SELECT * FROM employees2. SQL> TRUHCATE TABLE employees2. SQL> ALTER SESSION ENABLE PARALLEL DML. 107 rows created. Session altered SQL> INSERT /*+ parallel(employees2. Définissez un degré de parallélisme de deux.------------------------- Oracle9i Database Administration I C-92 . SQL> COMMIT.2) */ 2 3 INTO employees2 NOLOGGING SELECT * FROM employees. first_name. Effectuez ensuite une sélection dans la table EMPLOYEES2 pour vérifier qu'elle ne contient aucune donnée. Commit complete.----------------. VALUE WE8ISO8859P1 AL16UTF16 PARAMETER NLS_CHARACTERSET NLS_NCHAR_CHARACTERSET -----------------------------. ------------------AL16UTF16 AL24UTFFSS AL32UTF8 AR8ADOS710 AR8ADOS710T AR8ADOS720 AR8ADOS720T . . Oracle9i Database Administration I C-93 .-------------- 2 Quelles sont les valeurs valides pour le jeu de caractères de la base de données ? SQL> SELECT 2 3 4 VALUE FROM WHERE value v$nls_valid_values parameter = 'CHARACTERSET' ORDER BY value. .Exercice 20 1 Vérifiez le jeu de caractères de la base de données et le jeu de caractères nationaux SQL> CONNECT sys/oracle AS SYSDBA Connected. value 2 3 FROM WHERE nls_database_parameters parameter LIKE '%CHARACTERSET%'. SQL> SELECT parameter. Session modifiée.Exercice 20 (suite) les 3 Assurez-vous que toutes les dates affichées dans la session utilisent quatre chiffres pour années. Modifiez NLS_LANGUAGE en FRENCH. Dans DUAL. SQL> ALTER SESSION SET nls_date_format = 'DD-MON-YYYY'. Session altered. SQL> ALTER SESSION SET nls_language = FRENCH. SQL> SELECT sysdate 2 FROM dual. SYSDATE ----------07-OCT-2001 Oracle9i Database Administration I C-94 . sélectionnez sysdate. 2001.Solutions des exercices pour Oracle Enterprise Manager Copyright © Oracle Corporation. . Tous droits réservés. N'exécutez pas un script . Lorsqu'il existe des exceptions. Se connecter en tant que SYS Pour vous connecter en tant qu'utilisateur SYS. A la fin de votre travail avec cette ligne de commande.sql avant d'avoir revu sa fonction. Utiliser la ligne de commande du système d'exploitation Vous aurez l'occasion de réaliser certaines tâches à l'aide de la ligne de commande du système d'exploitation. elles sont signalées sous le titre Utiliser SQL*Plus Worksheet. Oracle9i Database Administration I D-2 . Il peut s'agir d'une tâche que vous n'avez pas encore assimilée à ce stade ou d'une tâche visant à vous permettre d'avancer plus facilement dans l'exercice. vous pouvez utiliser Exit pour revenir à la ligne de commande SQL*Plus. SQL > !rm $HOME/ADMIN/PFILE/orapw$ORACLE_SID $ > exit Exécuter des scripts d'exercice SQL Des scripts ont été intégrés aux exercices pour qu'ils réalisent certaines tâches à votre place. vous devrez disposer du privilège SYSDBA. le symbole ! sera utilisé par la ligne de commande SQL*Plus pour sortir de SQL*Plus et entrer dans le mode de la ligne de commande du système d'exploitation. CONNECT / AS SYSDBA Démarrer et arrêter la base de données Bien que la console OEM puisse être utilisée pour démarrer et arrêter la base de données.Conventions relatives aux solutions des exercices Les solutions sont destinées au stagiaire qui souhaite réaliser les exercices avec Oracle Enterprise Manager et SQL*Plus Worksheet. Dans ce cas. Cela vous permettra de comprendre parfaitement le processus de création et ses effets sur la tâche à réaliser. Utiliser la console OEM Lorsque vous pouvez utiliser une console OEM à la place de SQL*Plus Worksheet. Utiliser SQL*Plus Worksheet Les commandes permettant d'utiliser SQL*Plus et SQL*Plus Worksheet (voir l'Annexe C : Solutions des exercices SQL*Plus) sont identiques. cette option vous est signalée sous le titre Utiliser la console OEM. vous utiliserez SQL*Plus dans le cadre de ce cours Oracle en salle. Exemple : suppression du fichier de mots de passe en cours situé dans le répertoire $HOME/ADMIN/PFILE. b Pour établir une connexion avec la base de données. b la mémoire PGA. l'utilisateur doit démarrer une instance Oracle. Réponse : D 5 La tâche principale du tampon de journalisation consiste à enregistrer toutes les modifications apportées aux blocs de données de la base. c le tampon de journalisation. Réponse : D 2 Parmi les zones mémoire suivantes. de la zone SQL partagée. d Une session démarre une fois que le serveur Oracle a authentifié l'utilisateur. a Vrai b Faux de Réponse : Faux. b la mémoire PGA. déterminez laquelle est vraie. laquelle ne fait pas partie de la mémoire SGA ? a le cache de tampons de la base de données. b La zone de mémoire partagée permet de stocker les dernières instructions SQL exécutées. c La zone de mémoire partagée est utilisée pour un objet pouvant être partagé globalement. Réponse : B. c le tampon de journalisation. du cache du dictionnaire de données. a Vrai b Faux Réponse : Vrai 6 La mémoire PGA est une région de la mémoire qui contient les données et les informations contrôle de plusieurs processus serveur ou de plusieurs processus d'arrière-plan. d la zone de mémoire partagée. de la zone de mémoire Java et de la zone de mémoire LARGE POOL. c Une connexion est un chemin de communication entre le serveur Oracle et l'instance Oracle. a Un serveur Oracle est un ensemble de données composé de trois types de fichier. a La zone de mémoire partagée est composée du cache "library". d la zone de mémoire partagée. Réponse : B 3 Identifiez les deux affirmations correctes se rapportant à la zone de mémoire partagée. laquelle permet de mettre en mémoire cache les informations du dictionnaire de données ? a le cache de tampons de la base de données.Exercice 1 1 Parmi les affirmations suivantes. d Le cache "library" est composé des zones SQL et PL/SQL partagées. Oracle9i Database Administration I D-3 . D 4 Parmi les zones mémoire suivantes. Une mémoire PGA est une région de la mémoire qui contient les données et les informations de contrôle d'un seul processus serveur ou d'un seul processus d'arrière-plan. PMON. de fichiers de données et de fichiers de journalisation. c System Monitor D exécute des opérations de nettoyage suite à l'échec de processus. a Vrai b Faux Réponse : Vrai 11 Rétablissez la hiérarchie des structures suivantes. Oracle9i Database Administration I D-4 . B.C. en commençant par la base de données. 9 Affectez à chaque processus la tâche correspondante. d Process Monitor B enregistre les modifications de la base de données pour permettre la récupération. a Tablespaces b Extent c Segment d Base de donnée e Bloc Réponse : D.D. Réponse : C 8 Indiquez ci-dessous cinq processus d'arrière-plan obligatoires. c les processus d'arrière-plan. lequel ou lesquels sont disponibles au démarrage d'une instance Oracle ? a le processus utilisateur. CKPT. a Database Writer E permet l'écriture dans les en-têtes des fichiers de données. E. 12 Indiquez les composants d'un serveur Oracle.B. Answer: E. C. b le processus serveur. e Checkpoint A écrit les tampons "dirty" dans les fichiers de données. LGWR. SMON.Exercice 1 (suite) 7 Parmi les processus suivants.A 10 La structure physique d'une base Oracle est composée de fichiers de contrôle. b Log Writer C se charge de la récupération de l'instance. ________________________________________ ________________________________________ ________________________________________ ________________________________________ ________________________________________ Réponse : DBWR. ________________________________________ ________________________________________ Réponse : L'instance Oracle et la base de données Oracle. A. ________________________________________ ________________________________________ ________________________________________ Réponse : Les fichiers de données.Exercice 1 (suite) 13 Indiquez les composants d'une instance Oracle. les fichiers de contrôle et les fichiers de journalisation. ________________________________________ ________________________________________ Réponse : La zone SGA et les processus d'arrière-plan. Oracle9i Database Administration I D-5 . 14 Indiquez trois types de fichier composant une base de données Oracle. 1. Indice : Suivez les instructions de votre formateur pour vous connecter. .Sélectionnez Start > Programs > Oracle-OraHome90 > Enterprise Manager Console.Production on Thu Nov 29 15:44:51 2001 (c) Copyright 2001 Oracle Corporation. . Notez ci-dessous les informations qu'il vous fournira : Nom d'hôte : _________________________________ Nom SID : __________________________________ 1 Connectez-vous à SQL*Plus en tant que SYSDBA. All rights 2 A l'aide de SQL*Plus. Votre formateur vous fournira les comptes de connexion et vous aidera à vous connecter à votre compte. Démarrez SQL*Plus.0 . SQL> CONNECT / AS SYSDBA Connected. D X 3 Lancez Oracle Enterprise Manager en mode autonome. Connectez-vous en tant que SYS AS SYSDBA.Sélectionnez l'option Launch standalone. Oracle9i Database Administration I D-6 . exécutez l'interrogation suivante pour vérifier que la connexion à la base de données a été établie.0. SQL> SELECT * FROM DUAL. .Exercice 2 Cet exercice s'effectue en salle.0.Cliquez sur OK. $ sqlplus /nolog SQL*Plus: Release 9. reserved. Une fois le repérage terminé. Démarrez la console OEM et sélectionnez l'option Login to the Oracle Management Server. Attendez que le message suivant s'affiche : "The Oracleoracle901_homeManagementServer service was started successfully. Cliquez deux fois sur votre base de données (qui vous a été indiquée par votre formateur). Sélectionnez Next pour poursuivre. en respectant la distinction entre les majuscules et les minuscules. Management Server: (information fournie par votre formateur) Une fois que la console OEM est ouverte. Fermez la fenêtre MSDOS. Lorsque vous y êtes invité. Remarque : Si le repérage n'aboutit informez-en votre formateur." 4. entrez oemctl start oms. La boîte de dialogue Discovery Wizard s'ouvre. accédez au menu principal et procédez comme suit : Sélectionnez Navigator > Discover Nodes. Développez le dossier Database dans l'arborescence de navigation. A l'invite de commande.Entrez le nom du noeud que vous souhaitez gérer. 3. c'est-à-dire le nom d'hôte du serveur de bases de données désigné (information fournie par votre formateur). remplacez le mot de passe par oracle. Ouvrez une fenêtre MSDOS. . 2. vous devez exécuter les quatre étapes suivantes.Exercice 2 : initiation au serveur Oracle 4 Lancez Oracle Enterprise Manager à l'aide d'Oracle Management Service. Password: oem_temp Remarque : Respectez la casse. . - (suite page suivante) Oracle9i Database Administration I D-7 . Connectez-vous comme suit : Administrator: sysman Remarque : Respectez la casse. pas. Dans le cadre d'un cours en salle Oracle uniquement : Si vous suivez un cours en salle Oracle. votre Entrez le nom du serveur Unix utilisé dans votre cours.Sélectionnez Next. sélectionnez OK. qui sont propres à la configuration de ce type de cours : 1. Remarque : Respectez la casse. Veillez à l'entrer tel qu'il vous a été communiqué. Cliquez sur l'icône de mise à jour de fichier omsconfig sur le bureau. qui vous sera fourni par formateur. vous devez intégrer le nom de service à la chaîne de connexion. Cliquez sur OK. Dans le menu principal.Exercice 2 : initiation au serveur Oracle 4 Lancez Oracle Enterprise Manager à l'aide d'Oracle Management Service (suite) Fournissez les informations de connexion suivantes : Utilisateur : sys Mot de passe : secure En tant que : SYSDBA Fournissez ensuite les informations d'identification et de connexion au noeud pour les travaux en cours d'exécution. Vous pouvez également démarrer SQL*Plus Worksheet depuis le menu Windows NT : . – Entrez les informations suivantes : Username. Password et Service. • • Remarque : A chaque fois que vous vous connectez sous un nom différent (dans SQL*Plus Worksheet).Sélectionnez Start > Programs > Oracle-OraHome90 > Integrated Management Tools > SQLPlus Worksheet.Sélectionnez Tools > Database Applications > SQL*Plus Worksheet. Procédez comme suit pour démarrer SQL*Plus Worksheet depuis la console Oracle Enterprise Manager : . Démarrez SQL*Plus Worksheet. Sélectionnez la page Preferred Credentials. sélectionnez Configuration > Preferences. Connectez-vous en tant que : SYSDBA. Fournissez les informations suivantes : Username: (information fournie par votre formateur) Password: (information fournie par votre formateur) Confirm Password: Role: SYSDBA 5 Sélectionnez OK. Accédez au bas de la page et sélectionnez l'entrée correspondant à votre base de données. Oracle9i Database Administration I D-8 . • Connectez-vous directement à la base de données définie par votre formateur. Créez le fichier SPFILE à partir du fichier PFILE qui se trouve dans le répertoire $HOME/ADMIN/PFILE. . vous utiliserez SQL*Plus dans le cadre de ce cours. 2 Une fois la base de données arrêtée. Les instructions suivantes ont été fournies uniquement pour votre information. Exemple : spfile$ORACLE_SID. Utiliser la console OEM .ora (où SID correspond au nom de votre instance). . . SQL> CONNECT / AS SYSDBA Connected.Sélectionnez Object > Create spfile. SQL> SQL> SHUTDOWN IMMEDIATE Database closed.Cliquez sur OK. puis arrêtez la base.Identifiez le fichier PFILE utilisé.Exercice 3 1 Connectez-vous à la base de données sous l'ID utilisateur SYS. Remarque : Bien que la console OEM puisse être utilisée pour démarrer et arrêter la base de données. ORACLE instance shut down. sélectionnez l'option Shutdown. .Indiquez le nom du fichier SPFILE créé. .Sélectionnez Instance > Configuration. . Database dismounted. créez un fichier SPFILE à partir du fichier PFILE.Sélectionnez la page General. Oracle9i Database Administration I D-9 . Placez le fichier SPFILE dans le répertoire $HOME/ADMIN/PFILE en lui affectant un nom au format spfileSID.Sélectionnez Apply.Dans Instance State. Utiliser la console OEM .ora .La boîte de dialogue Create an spfile from a pfile s'affiche. db_block_size=4096 *.instance_name='dba01' *.undo_management='AUTO' *. Utiliser la ligne de commande du système d'exploitation $ more $HOME/ADMIN/PFILE/spfile$ORACLE_SID.service_names='dba01' *.background_dump_dest='/u01/home/dba01/ADMIN/BDUMP' *.core_dump_dest='/u01/home/dba01/ADMIN/CDUMP' *.db_name='dba01' *.db_cache_size=4M *.0.compatible='9.java_pool_size='0' *.Exercice 3 (suite) 3 Affichez le fichier SPFILE depuis le système d'exploitation.shared_pool_size=8M *.undo_tablespace='UNDOTBS' *.ctl' *.max_dump_file_size='10240' *.0' *.control_files='/u01/home/dba01/ORADATA/u01/ctrl01.global_names=TRUE *.ora *.db_domain='world' *.user_dump_dest='/u01/home/dba01/ADMIN/UDUMP' Oracle9i Database Administration I D-10 .remote_login_passwordfile='exclusive' *. Database opened. Utiliser la console OEM . vous utiliserez SQL*Plus dans le cadre de ce cours. sélectionnez l'option Open. SQL> STARTUP ORACLE instance started. Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers Database mounted.Sélectionnez Apply. . .Dans Instance State. puis démarrez la base de données à l'aide du fichier SPFILE. SQL> CONNECT / AS SYSDBA Connected to an idle instance. Les instructions suivantes ont été fournies uniquement pour votre information. 21790412 bytes 278220 bytes 16777216 bytes 4194304 bytes 540672 bytes Remarque : Bien que la console OEM puisse être utilisée pour démarrer et arrêter la base de données. . Oracle9i Database Administration I D-11 .Sélectionnez la page General.Exercice 3 (suite) 4 Connectez-vous sous l'ID utilisateur SYS.Sélectionnez Instance > Configuration. . .Sélectionnez Immediate dans la boîte de dialogue Shutdown Options. La boîte de dialogue Starting Up s'affiche.Sélectionnez Instance > Configuration. Database dismounted.Sélectionnez la page General. . .Sélectionnez Read Only Mode dans la boîte de dialogue Startup Options. bytes bytes bytes bytes bytes Remarque : Bien que la console OEM puisse être utilisée pour démarrer et arrêter la base de données. .Cliquez sur OK. . sélectionnez l'option Show All States. vous utiliserez SQL*Plus dans le cadre de ce cours. . . puis ouvrez-la en mode lecture seule.Cliquez sur OK.Sélectionnez Apply.Sélectionnez Apply. sélectionnez l'option Shutdown. Oracle9i Database Administration I D-12 . .Cliquez sur Close lorsque le traitement est terminé. ORACLE instance shut down. SQL> CONNECT / AS SYSDBA Connected. Total System Global Area 21790412 Fixed Size 278220 Variable Size 16777216 Database Buffers 4194304 Redo Buffers 540672 Database mounted. .Sélectionnez Open. Database altered. Les instructions suivantes ont été fournies uniquement pour votre information. SQL> SHUTDOWN IMMEDIATE Database closed.Dans Instance State. .Cliquez sur Close lorsque le traitement est terminé.Exercice 3 (suite) 5 a Arrêtez la base de données.Dans Instance State. SQL> STARTUP MOUNT ORACLE instance started. SQL> ALTER DATABASE OPEN READ ONLY. . Utiliser la console OEM . 'Mars'). Exemple: CONNECT HR/HR@[service name] . . . puis insérez une ligne dans la table REGIONS comme suit : INSERT INTO regions VALUES (5.Dans Instance State. ORACLE instance shut down. . Que se passe-t-il ? Utiliser SQL*Plus Worksheet . SQL> STARTUP ORACLE instance started. sélectionnez l'option Show All States. de INSERT INTO regions VALUES ( 5. Database dismounted. ‘Mars’).Sélectionnez Close. . . Remarque : Bien que la console OEM puisse être utilisée pour démarrer et arrêter la base de données. . Utiliser la console OEM .Sélectionnez Apply. SQL> CONNECT / AS SYSDBA Connected. . sélectionnez l'option Shutdown. SQL> SHUTDOWN IMMEDIATE Database closed. Oracle9i Database Administration I D-13 .Entrez la commande SQL. 'Mars') * ERROR at line 1: ORA-01552: cannot use system rollback segment for nonsystem tablespace ‘SAMPLE' 5 c Réaffectez à la base de données le mode lecture-écriture.Sélectionnez Execute.Sélectionnez Open. Les instructions suivantes ont été fournies uniquement pour votre information.Lorsque vous vous connectez. vous devez préciser le nom de service dans la chaîne connexion. vous utiliserez SQL*Plus dans le cadre de ce cours. INSERT INTO regions VALUES ( 5.Sélectionnez Instance > Configuration.Exercice 3 (suite) 5 b Connectez-vous sous l'ID utilisateur HR avec le mot de passe HR. .Dans Instance State.Cliquez sur OK. La boîte de dialogue Starting Up s'affiche.Sélectionnez la page General. vous devez préciser le nom de service dans la chaîne connexion. SYS SESSION SQL> CONNECT / AS SYSDBA Connected. Connectez-vous en tant qu'utilisateur SYS AS SYSDBA.Entrez la commande SQL. . . Ne validez pas et ne quittez pas la session. SQL> SHUTDOWN TRANSACTIONAL Oracle9i Database Administration I D-14 . puis procédez à un arrêt en mode Transactional.Lorsque vous vous connectez. HR SESSION CONNECT hr/hr@[service name] Connected. 'Mars'). ‘Mars’ ). b Démarrez SQL*Plus dans une nouvelle session Telnet.Exercice 3 (suite) 6 a Connectez-vous en tant qu'utilisateur HR avec le mot de passe HR. puis insérez la ligne suivante dans la table REGIONS. INSERT INTO regions VALUES (5. de Utiliser SQL*Plus Worksheet .Sélectionnez Execute. 1 row created. INSERT INTO regions VALUES ( 5. no operations are permitted Disconnected Remarque : La session SYS va se terminer et la base de données est sur le point de se fermer. EXIT. puis quittez. Que se passe-t-il dans la session de HR ? Que se passe-t-il dans celle de SYS ? HR SESSION ROLLBACK.Exercice 3 (suite) 6 c Annulez l'insertion dans la session de HR. Oracle9i Database Administration I D-15 . Database dismounted. ERROR: ORA-01089: immediate shutdown in progress . SYS SESSION Database closed. Rollback complete. Oracle9i Database Administration I D-16 . HR SESSION SQL> CONNECT hr/hr Connected.Exercice 3 (suite) 7 Remarque : Pour l'exercice suivant. SYS SESSION SQL> CONNECT / AS SYSDBA Connected to an idle instance. SQL> STARTUP ORACLE instance started. utilisez des sessions SQL*Plus. a Connectez-vous sous l'ID utilisateur SYS. c Sous l'ID utilisateur SYS. puis démarrez la base de données. Remarque : Conservez les sessions SQL*Plus de SYS et de HR ouvertes. SYS SESSION SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION. b Démarrez une autre session en tant qu'utilisateur HR. activez la session en mode restreint. System altered. .------------------------1 Europe 2 Americas 3 Asia 4 Middle East and Africa SQL> EXIT SQL> CONNECT hr/hr ERROR: ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege Warning: You are no longer connected to ORACLE. . puis reconnectez-vous sous l'ID utilisateur HR.Sélectionnez la page General. Les instructions suivantes ont été fournies uniquement pour votre information. e Sous l'ID utilisateur SYS. REGION_ID REGION_NAME ---------. Remarque : Bien que la console OEM puisse être utilisée pour placer la base de données en mode d'accès restreint. vous utiliserez SQL*Plus dans le cadre de ce cours. effectuez une sélection (SELECT) dans la table REGIONS. . Que se passe-t-il ? HR SESSION SQL> SELECT * 2 FROM regions. SYS SESSION SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION. désactivez la session en mode restreint.Sélectionnez Instance > Configuration.Sous Database and Instance Information.Exercice 3 (suite) 7 d Sous l'ID utilisateur HR. Utiliser la console OEM .Sélectionnez Apply. System altered. cliquez sur Yes dans l'option Restricted Mode. L'opération aboutit-elle ? Quittez la session. Oracle9i Database Administration I D-17 . bsq.Exercice 5 1 Dans la liste suivante. B. d Le dictionnaire de données enregistre et vérifie les informations relatives à la base de données qui lui est associée. identifiez les trois affirmations correctes concernant l'utilisation du dictionnaire de données : a Le serveur Oracle le modifie lorsqu'une instruction LMD est exécutée. d Il est indispensable au bon fonctionnement de la base de données. 2 Le script catalog. a Vrai b Faux Réponse : Vrai 5 Les informations d'une vue dynamique des performances peuvent être extraites à partir du fichier de contrôle. a Vrai b Faux Réponse : Vrai 6 Dans la liste suivante. Réponse : B. Réponse : Toutes les affirmations. c Les utilisateurs et les administrateurs de base de données s'en servent comme référence. b Il permet de rechercher des informations sur les utilisateurs. E. a Vrai b Faux Réponse : Faux. b Le dictionnaire de données comprend deux types d'objet : des tables de base et des vues.sql permet de créer des tables de base. Oracle9i Database Administration I D-18 . c Le dictionnaire de données est un ensemble de tables. les objets de schéma et les structures de stockage. D. 4 Les vues du dictionnaire de données sont statiques. identifiez les affirmations correctes concernant le dictionnaire de données : a Le dictionnaire de données décrit la base de données et ses objets. il s'agit du script sql. 3 Dans la liste suivante. identifiez les questions auxquelles une vue dynamique des performances peut répondre ? a L'objet est-il en ligne et disponible ? b Quels verrous externes sont appliqués ? c Qui est le propriétaire de l'objet ? d De quels privilèges les utilisateurs disposent-ils ? e La session est-elle active ? Réponse : A. C. vous devez préciser le nom de service dans la chaîne connexion. . . 1063 rows selected.Exercice 5 (suite) 7 Recherchez la liste des vues du dictionnaire de données.Lorsque vous vous connectez. Utiliser SQL*Plus Worksheet . . TABLE_NAME -----------------------------ALL_ALL_TABLES ALL_ARGUMENTS ALL_ASSOCIATIONS ALL_AUDIT_POLICIES ALL_BASE_TABLE_MVIEWS ALL_CATALOG ALL_CLUSTERS ALL_CLUSTER_HASH_EXPRESSIONS ALL_COLL_TYPES . . SELECT table_name FROM dictionary. CONNECT SYSTEM/MANAGER@[service name] Connected. de Oracle9i Database Administration I D-19 .Entrez la commande SQL.Sélectionnez Execute. le nom de l'instance et la taille des blocs de base de données. VALUE --------4096 9 Affichez la liste des noms des fichiers de données.dbf 6 rows selected.Sélectionnez Execute après chaque commande. SELECT name FROM v$database.Entrez la commande SQL.dbf /u01/home/dba01/ORADATA/u03/users01. NAME -----------------------------------------------/u01/home/dba01/ORADATA/u01/system01. NAME --------DBA01 SELECT instance FROM v$thread. .dbf /u01/home/dba01/ORADATA/u02/undotbs. INSTANCE --------dba01 SELECT value FROM v$parameter WHERE name='db_block_size'. V$THREAD et V$PARAMETER. Utiliser SQL*Plus Worksheet . Indice : Interrogez les vues dynamiques des performances V$DATABASE. Indice : Interrogez la vue dynamique des performances V$DATAFILE.Sélectionnez Execute.dbf /u01/home/dba01/ORADATA/u01/querydata01. . Utiliser SQL*Plus Worksheet . Oracle9i Database Administration I D-20 .Exercice 5 (suite) 8 Identifiez le nom de la base de données. SELECT name FROM v$datafile.dbf /u01/home/dba01/ORADATA/u02/sample01.Entrez la commande SQL.dbf /u01/home/dba01/ORADATA/u03/index01. Sélectionnez Execute. SELECT file_name FROM dba_data_files WHERE tablespace_name = 'SYSTEM'. .Interrogez la vue DBA_SEGMENTS du dictionnaire de données pour afficher la quantité d'espace utilisé. Utiliser SQL*Plus Worksheet .dbf 11 Quel est le volume d'espace libre disponible et le volume d'espace utilisé dans la base de données ? Indices . free space in KB ---------------42700 SELECT sum(bytes)/1024 "used space in KB“ FROM dba_segments. used space in KB ---------------131992 Oracle9i Database Administration I D-21 . .Exercice 5 (suite) 10 Identifiez le fichier de données qui constitue le tablespace SYSTEM. Indice : Interrogez la vue DBA_DATA_FILES du dictionnaire de données pour identifier le fichier de données qui constituent le tablespace SYSTEM. SELECT sum(bytes)/1024 "free space in KB" FROM dba_free_space.Entrez la commande SQL.Sélectionnez Execute après chaque commande. Utiliser SQL*Plus Worksheet .Interrogez la vue DBA_FREE_SPACE du dictionnaire de données pour afficher la quantité d'espace disponible dans la base de données. FILE_NAME --------------------------------------/u01/home/dba01/ORADATA/u01/system01. .Entrez la commande SQL. Exercice 5 (suite) 12 Répertoriez le nom et la date de création des utilisateurs de la base de données. . Indice : Interrogez la vue DBA_USERS du dictionnaire de base de données pour obtenir la liste des noms et des dates de création des utilisateurs de la base de données. SELECT username.Sélectionnez Execute.--------- Oracle9i Database Administration I D-22 . created FROM dba_users. CREATED 07-JUN-01 07-JUN-01 07-JUN-01 07-JUN-01 07-JUN-01 07-JUN-01 07-JUN-01 07-JUN-01 07-JUN-01 -----------------------------. Utiliser SQL*Plus Worksheet .Entrez la commande SQL. USERNAME SYS SYSTEM ORDPLUGINS OUTLN DBSNMP ORDSYS MDSYS HR OE 9 rows selected. Utiliser SQL*Plus Worksheet .-------------------------------------- Utiliser la console OEM .ctl v$controlfile. .Sélectionnez Storage > Controlfile. .Entrez la commande SQL.Sélectionnez Execute.Exercice 6 1 Où se trouve le fichier de contrôle existant et quel est son nom ? Indice : Interrogez la vue dynamique des performances V$CONTROLFILE. COL name FORMAT a50 SELECT * FROM STATUS NAME /u01/home/dba01/ORADATA/u01/ctrl01. ------.Les fichiers de contrôle s'affichent dans la fenêtre de droite. Oracle9i Database Administration I D-23 . Remarque : Vous pouvez également utiliser la vue V$PARAMETER ou exécuter la commande SHOW PARAMETER pour afficher le nom et l'emplacement du fichier de contrôle. Database dismounted. Utiliser la ligne de commande du système d'exploitation $ cp $HOME/ORADATA/u01/ctrl01.Connectez-vous sous l'ID utilisateur SYS.ctl $HOME/ORADATA/u01/ctrl01.ctl en lui affectant l'extension . données Remarque : Pour les besoins de cet exercice réalisé en salle. Utiliser SQL*Plus SQL> CONNECT / AS SYSDBA Connected.Fermez la base de données à l'aide de l'option IMMEDIATE.Supprimez le fichier de contrôle . .bak $ rm $HOME/ORADATA/u01/ctrl01. . Que se passe-t-il ? Indices .Utilisez la ligne de commande du système d'exploitation pour copier le fichier de contrôle .Exercice 6 2 a Tentez de démarrer la base de données sans fichier de contrôle.bak.ctl Utiliser SQL*Plus SQL> STARTUP ORACLE instance started. . check alert log for more info Oracle9i Database Administration I D-24 .ctl. ORACLE instance shut down. fermez la base de à l'aide de SQL*Plus. modifiez le nom du fichier de contrôle dans le fichier de paramètres ou renommez-le. SQL> SHUTDOWN IMMEDIATE Database closed.Démarrez la base de données. . Total System Global Area 21790412 bytes Fixed Size 278220 bytes Variable Size 16777216 bytes Database Buffers 4194304 bytes Redo Buffers 540672 bytes ORA-00205: error in identifying controlfile. Pour simuler cette opération. ctl Utiliser SQL*Plus SQL> STARTUP ORACLE instance started. renommez la copie du fichier de contrôle de façon appropriée. Remarque : Pour les besoins de ce cours. fermez la base de données à l'aide de SQL*Plus. arrêtez la base de données.bak $HOME/ORADATA/u01/ctrl01.Exercice 6 2 b Pour remédier à cet incident. Oracle9i Database Administration I D-25 . puis démarrez la base de données. Utiliser la ligne de commande du système d'exploitation cp $HOME/ORADATA/u01/ctrl01. Utiliser SQL*Plus SQL> SHUTDOWN IMMEDIATE ORA-01507: database not mounted ORACLE instance shut down. cette situation n'est présentée que pour les besoins du cours. .ctl' SCOPE=SPFILE.Sélectionnez Execute. par exemple. les droits sur le fichier restent inchangés . Assurez-vous que le serveur Oracle a accès en écriture à ce nouveau fichier en utilisant. utilisez la commande chmod 660.Lorsque vous vous connectez. Sous Unix. que de Utiliser SQL*Plus Worksheet . SQL> SHUTDOWN IMMEDIATE Database closed.Avant d'arrêter la base de données.ctl'. Database dismounted. vous devez préciser le nom de service dans la chaîne connexion. fermez la base de données à l'aide de SQL*Plus. Oracle9i Database Administration I D-26 . ORACLE instance shut down.Exercice 6 (suite) 3 Multiplexez le fichier de contrôle existant en utilisant le répertoire u02. modifiez le fichier SPFILE (SCOPE=SPILE) pour ajouter le nouveau fichier de contrôle au fichier d'initialisation.ctl que vous placerez dans le répertoire u02. puis copiez le fichier de contrôle existant dans un nouveau fichier nommé ctrl02. Normalement. . CONNECT SYS/ORACLE[service name] AS SYSDBA Connected. Vérifiez que les deux fichiers de contrôle sont utilisés. Démarrez la base de données. ALTER SYSTEM SET control_files = '$HOME/ORADATA/u01/ctrl01. ou utilisez la commande SHOW PARAMETER pour confirmer les deux fichiers de contrôle sont utilisés. Arrêtez la base de données. Interrogez la vue dynamique des performances V$CONTROLFILE ou V$PARAMETER. puis nommez le nouveau fichier ctrl02.Entrez la commande SQL. System altered. Indices .ctl. '$HOME/ORADATA/u02/ctrl02. Utiliser SQL*Plus Remarque : Pour les besoins de ce cours. la commande chmod 660 sous UNIX. .Entrez la commande SQL. fermez la base de données à l'aide de SQL*Plus. SQL> STARTUP ORACLE instance started. Utiliser SQL*Plus Worksheet .Sélectionnez Execute. NAME -------------------------------------/u01/home/dba01/ORADATA/u01/ctrl01.ctl $ chmod 660 $HOME/ORADATA/u02/ctrl02.ctl $HOME/ORADATA/u02/ctrl02. SELECT name FROM v$controlfile. Database opened. Database mounted.ctl Oracle9i Database Administration I D-27 .Exercice 6 (suite) 3 (suite) Utiliser la ligne de commande du système d'exploitation $ cp $HOME/ORADATA/u01/ctrl01.ctl /u01/home/dba01/ORADATA/u02/ctrl02.ctl Utiliser SQL*Plus Remarque : Pour les besoins de ce cours. Entrez la commande SQL. Utiliser SQL*Plus Worksheet .Sélectionnez Execute. .Exercice 6 (suite) 4 Quelle est la taille initiale de la section de fichier de données dans le fichier de contrôle ? Indice : Interrogez la vue dynamique des performances V$CONTROLFILE_RECORD_SECTION. SELECT records_total FROM WHERE v$controlfile_record_section type = 'DATAFILE'. RECORDS_TOTAL ------------40 Oracle9i Database Administration I D-28 . Interrogez la vue dynamique des performances V$LOGFILE. GROUP# 1 2 MEMBERS 1 1 ---------. Indices .Entrez la commande SQL. Oracle9i Database Administration I D-29 . members FROM v$log. Utiliser SQL*Plus Worksheet . .rdo SELECT group#.Sélectionnez Execute. MEMBER ------------------------------------/u01/home/dba01/ORADATA/u03/log02a.---------- Utiliser la console OEM .Sélectionnez Storage > Redo Log Groups.Développez l'arborescence du dossier Redo Log Groups pour visualiser le nombre de groupes. . SELECT member FROM v$logfile.Sélectionnez un groupe pour visualiser le nombre de membres qu'il contient et connaître leur emplacement.rdo /u01/home/dba01/ORADATA/u03/log01a. . Utilisez la vue dynamique des performances V$LOG.Exercice 7 1 Répertoriez le nombre et l'emplacement des fichiers journaux existants et affichez le nombre de groupes de fichiers de journalisation et de membres que contient votre base de données. Exercice 7 2 Dans quel mode la base de données est-elle configurée ? L'archivage est-il activé ? Indices . .Interrogez la vue dynamique des performances V$DATABASE.Sélectionnez ALL INITIALIZATION PARAMETERS.Entrez la commande SQL.Sélectionnez Execute. Interrogez la vue dynamique des performances V$INSTANCE. Oracle9i Database Administration I D-30 . le paramètre LOG_ARCHIVE_START indique si l'archivage est activé. ARCHIVE ------STOPPED Utiliser la console OEM . Utiliser SQL*Plus Worksheet . .Sélectionnez Instance > Archive Log Mode: NOARCHIVELOG. SELECT log_mode FROM v$database. LOG_MODE -----------NOARCHIVELOG SELECT archiver FROM v$instance. rdo Utiliser la console OEM 2 INVALID ONLINE .Exécutez la commande ALTER DATABASE ADD LOGFILE MEMBER pour ajouter un membre à chaque groupe de fichiers de journalisation.rdo Ajoutez un membre au groupe 2 : log02b.rdo' to Group 2.Sélectionnez Execute.Entrez la commande SQL.Sélectionnez un groupe de fichiers de journalisation et ajoutezlui un nouveau membre dans la feuille de calcul affichée dans la fenêtre de droite : File Name et File Directory.------. Oracle9i Database Administration I D-31 .rdo Sélectionnez Storage > Redo Log Groups.-----. Indices . '$HOME/ORADATA/u04/log02b./u01/home/dba01/ORADATA/u04/log02b.rdo' to Group 1. ajoutez un membre à chaque groupe de fichiers de journalisation de la base de données stockée sur u04 : Ajoutez un membre au groupe 1 : log01b.rdo Vérifiez le résultat obtenu. Utiliser SQL*Plus Worksheet .Exercice 7 (suite) 3 En respectant les conventions d'appellation suivantes. Database altered. GROUP# STATUS TYPE MEMBER -----.Interrogez la vue dynamique des performances V$LOGFILE pour vérifier le résultat.Cliquez sur Apply.rdo 1 INVALID ONLINE /u01/home/dba01/ORADATA/u04/log01b. COLUMN GROUP# FORMAT 99 COLUMN MEMBER FORMAT a40 SELECT * FROM v$logfile. . . ALTER DATABASE ADD LOGFILE MEMBER '$HOME/ORADATA/u04/log01b.------------------------------------2 ONLINE /u01/home/dba01/ORADATA/u03/log02a. .rdo 1 STALE ONLINE /u01/home/dba01/ORADATA/u03/log01a. . GROUP# STATUS TYPE MEMBER -----.rdo 1 INVALID ONLINE /u01/home/dba01/ORADATA/u04/log01b.Entrez la commande SQL.rdo 2 INVALID ONLINE /u01/home/dba01/ORADATA/u04/log02b.-----------------------------------2 ONLINE /u01/home/dba01/ORADATA/u03/log02a. Oracle9i Database Administration I D-32 . members FROM v$log.Interrogez la vue dynamique des performances V$LOGFILE pour afficher le nom des nouveaux membres du nouveau groupe. . COLUMN GROUP# FORMAT 99 COLUMN MEMBER FORMAT a40 SELECT * FROM v$logfile.rdo 3 ONLINE /u01/home/dba01/ORADATA/u03/log03a. ajoutez un groupe de fichiers de journalisation et placez deux membres sur u03 et u04.------.Sélectionnez Create 2 2 dans le menu accessible par le bouton droit de la souris pour entrer 3 le nom et l'emplacement des membres du fichier de journalisation.Sélectionnez Execute.------. . ALTER DATABASE ADD LOGFILE GROUP 3('$HOME/ORADATA/u03/log03a. '$HOME/ORADATA/u04/log03b.rdo') SIZE 1024K. GROUP# MEMBERS Utiliser la console OEM --------------.rdo 1 STALE ONLINE /u01/home/dba01/ORADATA/u03/log01a.rdo'. Database altered.Exécutez la commande ALTER DATABASE ADD LOGFILE pour créer un groupe. Vérifiez le résultat. SELECT group#. Ajoutez le groupe 3 : log03a. .rdo Indices .rdo 6 rows selected.Interrogez la vue dynamique des performances V$LOG pour afficher le nombre de groupes de fichiers de journalisation et de membres. 2 - Cliquez sur Create. Utiliser SQL*Plus Worksheet .Sélectionnez Storage 1 2 > Redo Log Groups.rdo 3 ONLINE /u01/home/dba01/ORADATA/u04/log03b.rdo et log03b. .Exercice 7 (suite) 4 En respectant les conventions d'appellation suivantes. Utilisez ALTER SYSTEM SWITCH LOGFILE si les fichiers journaux sont actifs. Exécutez la commande ALTER DATABASE DROP LOGFILE GROUP pour supprimer le groupe de fichiers de journalisation. ALTER SYSTEM SWITCH LOGFILE. System altered. Sélectionnez le groupe 3. accessible par le bouton droit de la souris.Entrez la commande SQL. Le nombre de changements de fichier varie. .---------1 2 2 2 3 2 Utiliser la console OEM . . Interrogez la vue dynamique des performances V$LOG pour vérifier le résultat. ALTER SYSTEM SWITCH LOGFILE. puis Remove dans le menu accessible par le bouton droit Utiliser la ligne de commande du système d'exploitation $ rm $HOME/ORADATA/u03/log03a. Indices . ALTER DATABASE DROP LOGFILE GROUP 3.rdo $ rm $HOME/ORADATA/u04/log03b. Remarque : Interrogez la base de données pour consulter les fichiers journaux actifs. GROUP# MEMBERS -----. Déterminez ensuite le nombre de fois que vous devez exécuter la commande ALTER SYSTEM SWITCH LOGFILE. Supprimez du groupe les fichiers du système d'exploitation.Si le groupe 3 est actif. sélectionnez le groupe. ALTER SYSTEM SWITCH LOGFILE. Utiliser SQL*Plus Worksheet . System altered. members FROM v$log. SELECT group#. puis Switch Logfile dans le menu de la souris Supprimez les fichiers du système d'exploitation du groupe (voir ci-dessous).Exercice 7 (suite) 5 Supprimez le groupe de fichiers de journalisation créé à l'étape 4.rdo Oracle9i Database Administration I D-33 . System altered. Database altered.Sélectionnez Storage > Redo Log Groups.Sélectionnez Execute. status FROM v$log. . Le nombre de changements de fichier requis varie. Interrogez la vue dynamique des performances V$LOG pour vérifier le résultat. Exécutez la commande ALTER DATABASE ADD LOGFILE GROUP pour deux nouveaux groupes d'une taille de 1024 Ko.rdo'.continued - Oracle9i Database Administration I D-34 . Il est impossible de redimensionner des fichiers journaux. Déterminez ensuite le nombre fois que vous devez exécuter la commande ALTER SYSTEM SWITCH Exécutez la commande ALTER DATABASE DROP LOGFILE pour supprimer groupes inactifs. les - Utiliser SQL*Plus Worksheet . Database altered.Entrez la commande SQL. vous devez en ajouter de nouveaux et supprimer les anciens. '$HOME/ORADATA/u04/log04b. Indices ajouter actif. SELECT group#. GROUP# -----1 2 3 4 STATUS ---------------ACTIVE CURRENT UNUSED UNUSED .Exercice 7 (suite) 6 Redimensionnez tous les fichiers de journalisation en ligne (online redo log files) à la taille de 1024 Ko. Remarque : Interrogez la base de données pour consulter les fichiers journaux actifs. ALTER DATABASE ADD LOGFILE GROUP 3( '$HOME/ORADATA/u03/log03a.Sélectionnez Execute.rdo'. '$HOME/ORADATA/u04/log03b. GROUP 4( '$HOME/ORADATA/u03/log04a.rdo‘ ) SIZE 1024K. Par conséquent. Interrogez la vue dynamique des performances V$LOG pour vérifier le groupe de LOGFILE.rdo‘ ) SIZE 1024K. Exécutez la commande ALTER SYSTEM SWITCH LOGFILE pour forcer les changements de fichier de journalisation et attribuer au groupe le statut inactif. bytes FROM v$log. GROUP 2. . ALTER DATABASE DROP LOGFILE GROUP 1. System altered. System altered.Utilisez Remove dans le menu accessible par le bouton droit de la souris pour supprimer les groupes 1 et 2. ALTER SYSTEM SWITCH LOGFILE. ALTER SYSTEM SWITCH LOGFILE.Sélectionnez Storage > Redo Log Groups. System altered. .---------- Utiliser la console OEM .Supprimez les fichiers du système d'exploitation du groupe (voir ci-dessous). . Database altered. GROUP# 3 4 BYTES 1048576 1048576 -----.Exercice 7 (suite) 6 (suite) . Oracle9i Database Administration I D-35 . SELECT group#. .continued ALTER SYSTEM SWITCH LOGFILE.Utilisez la commande Create dans le menu accessible par le bouton droit de la souris pour ajouter les deux groupes de fichiers de journalisation.Utilisez Switch Logfile dans le menu accessible par le bouton droit de la souris jusqu'à ce que les groupes 1 et 2 deviennent inactifs. . CREATE TABLESPACE data02 DATAFILE '$HOME/ORADATA/u03/data02. géré localement avec des extents de taille uniforme (assurez-vous que les tailles des extents utilisés dans le tablespace sont des multiples de 100 Ko).dbf' SIZE 1M AUTOEXTEND ON NEXT 500K MAXSIZE 2M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4K.Exercice 8 1 Créez des tablespaces permanents associés aux noms et aux paramètres de stockage suivants : Utiliser SQL*Plus Worksheet .Sélectionnez Execute. gérécreated. d Tablespace RONLY pour les tables en lecture seule avec le stockage par défaut.Sélectionnez Storage > Tablespaces. a DATA01. c Tablespace INDX01. Tablespace created. b DATA02. CREATE TABLESPACE data01 DATAFILE '$HOME/ORADATA/u04/data01. Utiliser la console O . Tablespace created. géré au moyen du dictionnaire de données.dbf' SIZE 1M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100K. Oracle9i Database Administration I D-36 . PAS CREATE TABLESPACE ronly DATAFILE '$HOME/ORADATA/u01/ronly01.Utilisez la commande Create dans le menu accessible par le bouton droit de la souris pour ajouter le tablespace. NE METTEZ le tablespace en lecture seule à ce stade.dbf' SIZE 1M.dbf' SIZE 2M EXTENT MANAGEMENT DICTIONARY.Entrez la commande SQL. CREATE TABLESPACE index01 DATAFILE '$HOME/ORADATA/u02/index01. . created. localement avec des extents d'une taille uniforme de 4 Ko (activez l'extension automatique de 500 Ko lorsque des extents supplémentaires d'une taille maximale de 2 Mo sont requis). L'option Tablespaces permet d'afficher tous les tablespaces dans la fenêtre de droite.Sélectionnez Storage > Tablespaces.Sélectionnez Execute.DBA_TABLESPACES . utilisez l'une des interrogations suivantes : . Oracle9i Database Administration I D-37 .Exercice 8 e Affichez les informations à partir du dictionnaire de données. . TABLESPACE_NAME ----------------------SYSTEM TEMP USERS INDX SAMPLE DATA01 DATA02 DATA03 UNDO2 INDEX01 10 rows selected.V$DATAFILE Utiliser SQL*Plus Worksheet . Utiliser la console OEM . . SELECT tablespace_name FROM dba_tablespaces.V$TABLESPACE .Entrez la commande SQL. Indice : Pour obtenir des informations sur les tablespaces. dbf' RESIZE 1500K. indiquez une taille de fichier de 1500 Ko.Entrez la commande SQL. .Dans l'onglet General.Cliquez sur Apply. create_bytes FROM WHERE NAME v$datafile name LIKE '%data02%‘. Database altered. . . bytes.------.Sélectionnez Execute. BYTES CREATE_BYTES ------------------------------------.dbf 1536000 1048576 Utiliser la console OEM .Exercice 8 (suite) 2 Allouez 500 Ko d'espace disque supplémentaires au tablespace DATA02 et vérifiez le résultat.Sélectionnez Storage > Tablespaces > DATA02 > Datafiles. ALTER DATABASE DATAFILE '$HOME/ORADATA/u03/data02. Utiliser SQL*Plus Worksheet . COLUMN name FORMAT a40 SELECT name. Oracle9i Database Administration I D-38 .-----------/u01/home/db02/ORADATA/u03/data02. Entrez la commande SQL. ALTER TABLESPACE index01 OFFLINE.dbf /u01/home/dba01/ORADATA/u03/data02.Mettez le tablespace INDEX01 hors ligne. Mettez le tablespace INDEX01 en ligne. Vérifiez l'emplacement et le statut de INDEX01. SELECT name.Exercice 8 (suite) 3 Déplacez le tablespace INDEX01 vers le sous-répertoire u06. STATUS SYSTEM ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE OFFLINE ONLINE -------------------------------------------------. NAME /u01/home/dba01/ORADATA/u01/system01.dbf 10 rows selected.dbf /u01/home/dba01/ORADATA/u03/users01. .------- Oracle9i Database Administration I D-39 . Utilisez la commande ALTER TABLESPACE pour redéplacer le tablespace.dbf /u01/home/dba01/ORADATA/u02/undotbs.dbf /u01/home/dba01/ORADATA/u01/querydata01. Indices . Tablespace altered. Utilisez V$DATAFILE pour vérifier le statut.dbf /u01/home/dba01/ORADATA/u03/indx.dbf /u01/home/dba01/ORADATA/u02/index01. status FROM v$datafile.dbf /u01/home/dba01/ORADATA/u02/sample01.Sélectionnez Execute. Utilisez V$DATAFILE pour vérifier le statut. Utilisez la commande de système d'exploitation pour déplacer le tablespace vers Utiliser SQL*Plus Worksheet . u06.dbf /u01/home/dba01/ORADATA/u04/data01.dbf /u01/home/dba01/ORADATA/u01/ronly01. Exercice 8 (suite) 3 (suite) Utiliser la ligne de commande du système d'exploitation $ mv $HOME/ORADATA/u02/index01.------/u01/home/dba01/ORADATA/u01/system01.dbf ONLINE /u01/home/dba01/ORADATA/u01/ronly01. NAME STATUS -------------------------------------------------. Oracle9i Database Administration I D-40 .dbf ONLINE /u01/home/dba01/ORADATA/u02/sample01.dbf ONLINE /u01/home/dba01/ORADATA/u06/index01.dbf Utiliser SQL*Plus Worksheet . SELECT name. ALTER TABLESPACE index01 RENAME DATAFILE '$HOME/ORADATA/u02/index01.dbf ONLINE /u01/home/dba01/ORADATA/u03/users01.dbf SYSTEM /u01/home/dba01/ORADATA/u02/undotbs. Tablespace altered.dbf ONLINE 10 rows selected.Sélectionnez Execute.dbf' TO '$HOME/ORADATA/u06/index01. Tablespace altered.dbf ONLINE /u01/home/dba01/ORADATA/u03/indx.dbf ONLINE /u01/home/dba01/ORADATA/u01/querydata01.Entrez la commande SQL. status FROM v$datafile.dbf ONLINE /u01/home/dba01/ORADATA/u03/data02. .dbf'. ALTER TABLESPACE index01 ONLINE.dbf $HOME/ORADATA/u06/index01.dbf ONLINE /u01/home/dba01/ORADATA/u04/data01. par Cliquez sur le bouton Offline dans l'onglet General. Remarque : Vous pouvez également le renommer en procédant comme suit : .Sélectionnez Storage > Datafiles. Cliquez sur Apply.Sélectionnez Storage > Tablespaces > INDEX01.Exercice 8 (suite) 3 (suite) Utiliser la console OEM . Connectez-vous au serveur et déplacez le fichier de données (voir ci-dessous). Cliquez sur Yes dans la boîte de dialogue. Cliquez sur Apply ou sélectionnez Offline > Normal dans le menu accessible le bouton droit de la souris. Revenez à l'onglet General de INDEX01 et sélectionnez le répertoire u06. Oracle9i Database Administration I D-41 . Cliquez sur le bouton Online dans l'onglet General. Cliquez sur Apply. puis le fichier associé au tablespace INDEX01. Vérifiez dans la page General que le tablespace est en mode lecture seule. ALTER TABLESPACE ronly READ ONLY.dbf ONLINE /u01/home/dba01/ORADATA/u03/indx.dbf READ ONLY ONLINE /u01/home/dba01/ORADATA/u04/data01.dbf ONLINE Utiliser la console OEM READ WRITE . /u01/home/dba01/ORADATA/u06/index01.dbf ONLINE /u01/home/dba01/ORADATA/u02/example01. .Dans l'onglet General. .dbf ONLINE READ WRITE READ WRITE READ WRITE READ WRITE READ WRITE /u01/home/dba01/ORADATA/u01/querydata01.Entrez la commande SQL. Table created.Sélectionnez Execute.10 Sélectionnez Make Read-Only dans le menu accessible par le bouton droit de la rows selected. Tablespace altered.Exercice 8 : gérer les tablespaces et les fichiers de données 4 a Créez une table dans le tablespace RONLY.---------.dbf ONLINE READ WRITE Oracle9i Database Administration I D-42 .ONLINE Sélectionnez Create dans le menu accessible par le bouton droit de la souris. puis exécutez une interrogation pour vérifier. Mettez le tablespace RONLY en lecture seule.dbf SYSTEM /u01/home/dba01/ORADATA/u02/undotbs./u01/home/dba01/ORADATA/u03/data02. . souris. CREATE TABLE table1 ( x CHAR(1)) TABLESPACE ronly. . . enabled. NAME STATUS ENABLED ------------------------------------------. indiquez les informations nécessaires à la création de la table.Sélectionnez Yes dans la boîte de dialogue.----/u01/home/dba01/ORADATA/u01/system01. .dbf ONLINE /u01/home/dba01/ORADATA/u03/users01.dbf Mettez le tablespace en lecture seule à l'aide de Storage > Tablespace > ONLINE RONLY./u01/home/dba01/ORADATA/u01/ronly01. READ WRITE .dbf Créez une table à l'aide de Schema > Table.Cliquez sur Create. READ ONLY . Utiliser SQL*Plus Worksheet . status FROM v$datafile. SELECT name. Exercice 8 : gérer les tablespaces et les fichiers de données 4 b Essayez de créer une autre table TABLE2. . Que se passe-t-il ? Utiliser SQL*Plus Worksheet . Oracle9i Database Administration I D-43 . CREATE TABLE table2 ( y CHAR(1)) TABLESPACE ronly. cannot allocate space in it DROP TABLE table1.Entrez la commande SQL.Sélectionnez la table dans le répertoire Table. Utiliser la console OEM . . . indiquez les informations nécessaires à la création de la table. puis utilisez Remove dans le menu accessible par le bouton droit de la souris pour supprimer la table.Créez une seconde table à l'aide de Schema > Table. . CREATE TABLE table2 ( y CHAR(1)) * ERROR at line 1: ORA-01647: tablespace 'RONLY' is read only.Sélectionnez Create dans le menu accessible par le bouton droit de la souris. TABLE1.Cliquez sur Create.Dans la page General. .Sélectionnez Execute. Supprimez la première table créée. Table dropped. dbf Utiliser la console OEM .Entrez la commande SQL. puis vérifiez le résultat.Vérifiez sa suppression en sélectionnant Tablespaces dans l'arborescence.Exercice 8 (suite) 5 Supprimez le tablespace RONLY et le fichier de données associé. Oracle9i Database Administration I D-44 . Tablespace dropped. puis Remove dans le menu accessible par le bouton droit de la souris. Utiliser SQL*Plus Worksheet . SELECT * FROM v$tablespace.ctl /u01/home/dba01/ORADATA/u01/system01. TS# NAME 0 SYSTEM 1 UNDOTBS 3 USERS 4 INDX 5 SAMPLE 2 TEMP 6 QUERY_DATA 7 DATA01 8 DATA02 9 INDEX01 10 rows selected.--- Utiliser la ligne de commande du système d'exploitation ls $HOME/ORADATA/u01/* /u01/home/dba01/ORADATA/u01/ctrl01.Storage > Tablespaces.dbf /u01/home/dba01/ORADATA/u01/ctrl01.dbf.Sélectionnez le tablespace RONLY.Supprimez le fichier du système d'exploitation : $rm $HOME/ORADATA/u01/RONLY. DROP TABLESPACE ronly INCLUDING CONTENTS AND DATAFILES. INC YES YES YES YES YES YES YES YES YES YES ------.Sélectionnez Execute. . .bak /u01/home/dba01/ORADATA/u01/querydata01.------------. . . Exercice 8 (suite) 6 Affectez la valeur $HOME/ORADATA/u05 au paramètre DB_CREATE_FILE_DEST uniquement dans la mémoire.Entrez la commande SQL. puis affectez-lui la valeur u05. Une boîte de dialogue indiquant la modification des paramètres s'affiche. Cliquez sur OK. Utilisez SQL*Plus Worksheet plutôt que la console OEM pour créer le tablespace. Cliquez sur OK. Sélectionnez ALL INITIALIZATION PARAMETERS. Vérifiez la création du fichier de données. SELECT * FROM v$tablespace. Créez un tablespace DATA03 de 5 Mo. Oracle pourra ainsi indiquer l'emplacement et le nom d'Oracle-Managed File. Oracle9i Database Administration I D-45 . Utiliser la ligne de commande du système d'exploitation ls $HOME/ORADATA/u05 Utiliser la console OEM ora_data03_xg17n9nd.Sélectionnez Execute. TS# NAME INC ------. Ne définissez pas d'emplacement de fichier. Vérifiez la sélection du bouton radio Running. . ALTER SYSTEM SET DB_CREATE_FILE_DEST='$HOME/ORADATA/u05‘ SCOPE=MEMORY.------------. CREATE TABLESPACE data03 DATAFILE SIZE 5M. Tablespace created.dbf - Sélectionnez Instance > Configuration. Utiliser SQL*Plus Worksheet . System altered.--0 SYSTEM YES 1 UNDOTBS YES 3 USERS YES 4 INDX YES 5 SAMPLE YES 2 TEMP YES 6 QUERY_DATA YES 7 DATA01 YES 8 DATA02 YES 9 INDEX01 YES 11 DATA03 YES 11 rows selected. Accédez à DB_CREAT_FILE_DEST. Entrez la commande SQL.sql.Exercice 9 1 Connectez-vous sous l'ID utilisateur SYSTEM. .Sélectionnez Open. .Sélectionnez Execute. .Sélectionnez Execute.sql pour créer des tables et des index. Le texte du script est placé dans la fenêtre SQL*Plus Worksheet.Mettez à jour la première ligne afin d'inclure le nom de service dans la chaîne de connexion. Utiliser SQL*Plus Worksheet . puis exécutez le script lab09_01.Sélectionnez File > Open dans le menu principal. Oracle9i Database Administration I D-46 . .Sélectionnez le script lab09_01. SEGMENT_TYPE -----------------CACHE CLUSTER INDEX INDEX PARTITION LOBINDEX LOBSEGMENT NESTED TABLE ROLLBACK TABLE TABLE PARTITION TYPE2 UNDO 11 rows selected. . SELECT DISTINCT segment_type FROM dba_segments. 2 Identifiez les différents types de segment de la base de données. Utiliser SQL*Plus Worksheet . segment_type. Ne tenez pas compte du segment de bootstrap.--------------. Utiliser SQL*Plus Worksheet . max_extents. .file_id=f.file_name FROM WHERE AND dba_extents e.file_id.dba_data_files f e.segment_name='EMP' e. extents FROM dba_segments WHERE AND extents+5 > max_extents segment_type<>'CACHE'.--------EMP TABLE 10 4 Quels 8 fichiers disposent d'un espace alloué pour la table EMP ? Utiliser SQL*Plus Worksheet . SELECT DISTINCT f.Entrez la commande SQL.----------. Cette interrogation est utile pour identifier les segments susceptibles de générer des erreurs lors de futurs chargements de données. SEGMENT_TYPE MAX_EXTENTS SEGMENT_NAME EXTENTS -------------------.Entrez la commande SQL. . COLUMN segment_name FORMAT a20 COLUMN segment_type FORMAT a15 SELECT segment_name.dbf Oracle9i Database Administration I D-47 . FILE_NAME ------------------------------------/u01/home/dba01/ORADATA/u04/data01.Exercice 9 (suite) 3 Ecrivez une interrogation permettant de vérifier les segments associés à une valeur inférieure de cinq extents au nombre maximal d'extents.Sélectionnez Execute.Sélectionnez Execute. Sélectionnez Open. L'interrogation doit afficher le nombre de fragments. TABLESPACE_NAME DATA01 DATA02 DATA03 SAMPLE INDX INDEX01 QUERY_DATA SYSTEM UNDOTBS USERS 10 rows selected.Mettez à jour la première ligne afin d'inclure le nom de service dans la chaîne de connexion. CONNECT SYS/ORACLE@[service name] AS SYSDBA. SUM(bytes) AS total. l'espace libre total et le plus grand extent libre de chaque tablespace.Sélectionnez Execute.Exercice 9 (suite) 5 Exécutez le script lab09_05.sql. Utiliser SQL*Plus Worksheet . . 6 Répertoriez l'espace libre disponible par tablespace. vous devez préciser le nom de service dans la chaîne connexion. Le texte du script est placé dans la fenêtre SQL*Plus Worksheet. Connected.Sélectionnez File > Open dans le menu principal. . SELECT tablespace_name. Utiliser SQL*Plus Worksheet .COUNT(*) AS fragments.Sélectionnez le script lab09_05. .Lorsque vous vous connectez. .Entrez la commande SQL.---------- de Oracle9i Database Administration I D-48 . . FRAGMENTS 3 1 1 1 1 1 1 1 15 1 TOTAL -----147456 1433600 5177344 2555904 5120000 917504 983040 4943872 24903680 5177344 LARGEST --------126976 1433600 5177344 2555904 5120000 917504 983040 4943872 6750208 5177344 ----------------------.sql. MAX(bytes) AS largest FROM dba_free_space GROUP BY tablespace_name. next_extent FROM WHERE dba_segments s NOT EXISTS ( SELECT 1 FROM dba_free_space f WHERE s.Sélectionnez Execute.tablespace_name=f. s. en raison d'un espace insuffisant.--------------.tablespace_name HAVING max(f. .Entrez la commande SQL.----------BIG_EMP TABLE DATA01 1048576 Oracle9i Database Administration I D-49 .tablespace_name. SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME NEXT_EXTENT -----------.next_extent ) .segment_type.segment_name. SELECT s. s. Utiliser SQL*Plus Worksheet .Exercice 9 (suite) 7 Répertoriez les segments qui généreront des erreurs lors de la tentative d'allocation d'un extent supplémentaire.bytes) > s.-----------. s. Utiliser SQL*Plus Worksheet . dba_rollback_segs tablespace_name = 'UNDOTBS'.Lorsque vous vous connectez. .Exercice 10 1 Connectez-vous en tant que SYSTEM/MANAGER et répertoriez les segments d'annulation du tablespace UNDOTBS.Entrez la commande SQL. . de Oracle9i Database Administration I D-50 . vous devez préciser le nom de service dans la chaîne connexion.Sélectionnez Execute. CONNECT SYSTEM/MANAGER@[service name] Connected. SELECT segment_name FROM WHERE SEGMENT_NAME -------------------_SYSSMU1$ _SYSSMU2$ _SYSSMU3$ _SYSSMU4$ _SYSSMU5$ _SYSSMU6$ _SYSSMU7$ _SYSSMU8$ 8 rows selected. . Utiliser SQL*Plus Worksheet .Entrez la commande SQL. Répertoriez les segments d'annulation du tablespace UNDO2.Sélectionnez le type de tablespace Undo. SELECT segment_name FROM WHERE dba_rollback_segs tablespace_name = 'UNDO2'.Exercice 10 2 Créez le tablespace d'annulation UNDO2 d'une taille de 15 Mo et placez-le dans le répertoire $HOME/oradata/u03. . SEGMENT_NAME -------------------_SYSSMU9$ _SYSSMU10$ _SYSSMU11$ _SYSSMU12$ _SYSSMU13$ _SYSSMU14$ _SYSSMU15$ _SYSSMU16$ 8 rows selected. CREATE UNDO TABLESPACE undo2 DATAFILE '$HOME/ORADATA/u03/undo2.dbf' size 15M.Sélectionnez Execute. .Sélectionnez Create dans le menu accessible par le bouton droit de la souris. puis cliquez sur Create. . Oracle9i Database Administration I D-51 . Utiliser la console OEM .Utilisez la page General pour créer le tablespace UNDO2.Sélectionnez Storage > Tablespace. Tablespace created. Utiliser SQL*Plus Worksheet . Utiliser SQL*Plus Worksheet .Sélectionnez Execute. .Sélectionnez le script lab10_03. .sql. 5 Sous l'ID utilisateur SYS.Sélectionnez File > Open dans le menu principal. Que se passe-t-il ? Utiliser SQL*Plus Worksheet .Entrez la commande SQL. passez du tablespace d'annulation UNDOTBS à UNDO2 à l'aide de la commande ALTER SYSTEM. ni annuler.Mettez à jour la première ligne afin d'inclure le nom de service dans la chaîne de connexion. . supprimez le tablespace UNDOTBS. ni quitter la session. ALTER SYSTEM SET undo_tablespace='UNDO2' SCOPE=BOTH. System altered. DROP TABLESPACE undotbs INCLUDING CONTENTS AND DATAFILES * ERROR at line 1: ORA-30013: undo tablespace 'UNDOTBS' is currently in use Oracle9i Database Administration I D-52 .Sélectionnez Execute. . démarrez SQL*Plus et connectez-vous sous l'ID utilisateur HR. .Sélectionnez Open. Le texte du script est placé dans la fenêtre SQL*Plus Worksheet. Vous ne devez ni valider. DROP TABLESPACE undotbs INCLUDING CONTENTS AND DATAFILES.sql pour insérer une ligne dans la table DEPARTMENTS. Exécutez le script lab10_03.Entrez la commande SQL. 4 Dans la session que vous avez ouverte sous l'ID SYS. .Sélectionnez Execute.Exercice 10 (suite) 3 Dans une nouvelle session Telnet. usn = b.Entrez la commande SQL.name. USN NAME 2 _SYSSMU2$ STATUS PENDING OFFLINE ----. SELECT a. SELECT segment_name FROM WHERE dba_rollback_segs tablespace_name = 'UNDOTBS'. v$rollstat b WHERE a.status FROM v$rollname a. Comparez cette liste à celle établie à l'étape 1.usn.usn. .a.-----------. SEGMENT_NAME -------------------_SYSSMU1$ _SYSSMU2$ _SYSSMU3$ _SYSSMU4$ _SYSSMU5$ _SYSSMU6$ _SYSSMU7$ _SYSSMU8$ 8 rows selected.Sélectionnez Execute.b.--------------- Oracle9i Database Administration I D-53 . Utiliser SQL*Plus Worksheet .Exercice 10 (suite) 6 Répertoriez les segments d'annulation du tablespace UNDOTBS et leur statut.name IN ( SELECT segment_name FROM WHERE dba_segments tablespace_name = 'UNDOTBS‘ ) AND a. supprimez le tablespace UNDOTBS. EXIT. supprimez le tablespace UNDOTBS. DROP TABLESPACE undotbs INCLUDING CONTENTS AND DATAFILES. ALTER SYSTEM SET undo_retention=0 SCOPE=MEMORY. Que se passe-t-il ? Remarque : La suppression du tablespace peut prendre du temps. Rollback complete. Oracle9i Database Administration I D-54 . System altered. ROLLBACK. Tablespace dropped. A présent. exécutez la commande suivante : ALTER SYSTEM SET undo_retention=0 SCOPE=memory. DROP TABLESPACE undotbs * ERROR at line 1: ORA-30013: undo tablespace 'UNDOTBS' is currently in use 9 Sous l'ID utilisateur SYS. 8 Dans la session que vous avez ouverte sous l'ID utilisateur SYS. annulez la transaction et quittez cette session.Exercice 10 (suite) 7 Dans la session que vous avez ouverte sous l'ID utilisateur HR. Que se passe-t-il ? DROP TABLESPACE undotbs. vous devez préciser le nom de service dans la chaîne connexion. cust_code VARCHAR2(3). Utilisez le tablespace USERS et conservez. veillez à affecter des valeurs NULL à la colonne DATE_OF_DELY. CREATE TABLE customers ( cust_code VARCHAR2(3). créez les tables et les colonnes suivantes pour l'application de gestion des commandes que vous implémentez.Exercice 11 1 En tant qu'utilisateur SYSTEM. name VARCHAR2(50). si vous le souhaitez.Sélectionnez Execute. date_of_dely DATE ) TABLESPACE users. CREATE TABLE orders ( ord_id NUMBER(3). Remarque : Si vous utilisez OEM. Utiliser SQL*Plus Worksheet . Table CUSTOMERS Colonne CUST_CODE NAME REGION Type et taille des données VARCHAR2(3) VARCHAR2(50) VARCHAR2(5) NUMBER(3) DATE VARCHAR2(3) DATE ORDERS ORD_ID ORD_DATE CUST_CODE DATE_OF_DELY Vous savez que des lignes seront insérées dans la table ORDERS sans valeur pour DATE_OF_DELY et que la table sera mise à jour une fois la commande effectuée. Table created.Lorsque vous vous connectez. ord_date DATE. Table created. region VARCHAR2(5) ) TABLESPACE users.Entrez la commande SQL. . de CONNECT system/manager@[service name] Connected. les paramètres de stockage par défaut. . Oracle9i Database Administration I D-55 . Sélectionnez Execute.---------. indiquez les informations nécessaires à la création de la table CUSTOMERS. .Répétez la procédure pour créer la table ORDERS.Sélectionnez le script lab11_02. . .Entrez la commande SQL. . block_id.Dans la page General. . 3 Identifiez les fichiers et les blocs qui contiennent les lignes destinées à la table ORDERS. Le texte du script est placé dans la fenêtre SQL*Plus Worksheet.Cliquez sur Create. .Sélectionnez Execute.Mettez à jour la première ligne afin d'inclure le nom de service dans la chaîne de connexion. .---------- Oracle9i Database Administration I D-56 . Utiliser SQL*Plus Wor .Sélectionnez Open.Sélectionnez File > Open dans le menu principal.sql pour insérer des lignes dans les tables. SELECT file_id. BLOCK_ID 25 BLOCKS 8 FILE_ID 3 ---------. .Exercice 11 1 (suite) Utiliser la console OEM .sql. Utiliser SQL*Plus Worksheet .Sélectionnez Create dans le menu accessible par le bouton droit de la souris. 2 Exécutez le script lab11_02. Indice : Interrogez la vue DBA_EXTENTS du dictionnaire de données. blocks FROM WHERE AND AND dba_extents owner = 'SYSTEM' segment_name = 'ORDERS' segment_type = 'TABLE'.Créez des tables à l'aide de Schema > Table > SYSTEM. . SELECT count(*) FROM WHERE AND dba_extents segment_name='ORDERS' owner='SYSTEM'.Sélectionnez Execute.Entrez la commande SQL. Table altered. Utiliser SQL*Plus Worksheet . COUNT(*) ---------1 5 Allouez manuellement à la table ORDERS un extent possédant la taille par défaut. . puis vérifiez que l'opération a abouti.Entrez la commande SQL. ALTER TABLE orders ALLOCATE EXTENT. Utiliser SQL*Plus Worksheet . SELECT count(*) FROM WHERE AND dba_extents segment_name='ORDERS' owner='SYSTEM'.Sélectionnez Execute.Exercice 11 (suite) 4 Vérifiez le nombre d'extents utilisés par la table ORDERS. COUNT(*) ---------2 Oracle9i Database Administration I D-57 . . Exercice 11 (suite) 6 Créez une autre table, ORDERS2, à partir de la table ORDERS, mais avec le paramètre MINEXTENTS=10. Vérifiez que la table a bien été créée avec le nombre d'extents indiqué. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. CREATE TABLE orders2 TABLESPACE users STORAGE(MINEXTENTS 10) AS SELECT * FROM orders; Table created. SELECT count(*) FROM WHERE AND dba_extents segment_name='ORDERS2' owner='SYSTEM'; COUNT(*) ---------10 Utiliser la console OEM de Créez des tables à l'aide de Schema > Table > SYSTEM. Sélectionnez Create dans le menu accessible par le bouton droit de la souris. Dans la page General, renseignez les champs NAME, SCHEMA, TABLESPACE. Sélectionnez le bouton radio Define Query et entrez l'interrogation dans la boîte dialogue. SELECT * FROM ORDERS; Dans la page Storage, identifiez MINEXTENTS sous Minimum Number: 10. Cliquez sur Create. Remarque : Vous devez vous connecter à la console OEM en tant que SYSTEM pour ne pas générer d'erreur. Oracle9i Database Administration I D-58 Exercice 11 (suite) 7 Videz la table ORDERS sans libérer d'espace, puis contrôlez le nombre d'extents afin de vérifier qu'ils n'ont pas été libérés. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. TRUNCATE TABLE orders REUSE STORAGE; Table truncated. SELECT count(*) FROM WHERE AND dba_extents segment_name='ORDERS' owner='SYSTEM'; COUNT(*) ---------2 8 Videz la table ORDERS2 en libérant de l'espace. Combien d'extents la table comporte-telle à présent ? Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. TRUNCATE TABLE orders2; Table truncated. SELECT count(*) FROM WHERE AND dba_extents segment_name='ORDERS2' owner='SYSTEM'; COUNT(*) ---------10 Oracle9i Database Administration I D-59 Exercice 11 (suite) 9 Exécutez le script lab11_09.sql pour insérer des lignes dans la table ORDERS2. Utiliser SQL*Plus Worksheet - Sélectionnez File > Open dans le menu principal. - Sélectionnez le script lab11_09.sql. - Sélectionnez Open. Le texte du script est placé dans la fenêtre SQL*Plus Worksheet. - Mettez à jour la première ligne afin d'inclure le nom de service dans la chaîne de connexion. - Sélectionnez Execute. 10 Affichez les colonnes de la table ORDERS2. Marquez la colonne DATE_OF_DELY comme UNUSED. Affichez à nouveau les colonnes de cette table. Que se passe-t-il ? Utiliser SQL*Plus Worksheet Entrez la commande SQL. Sélectionnez Execute. DESCRIBE orders2; Name ORD_ID ORD_DATE CUST_CODE DATE_OF_DELY Null? Type NUMBER(3) DATE VARCHAR2(3) DATE -------------------------- -------- ------------------ ALTER TABLE orders2 SET UNUSED COLUMN date_of_dely CASCADE CONSTRAINTS; Table altered. DESCRIBE orders2; Name ORD_ID ORD_DATE CUST_CODE Null? NUMBER(3) DATE VARCHAR2(3) Type -------------------------- -------- ------------------ Utiliser la console OEM - Sélectionnez Schema > Table > SYSTEM. des l'icône de Cliquez deux fois sur la table ORDERS2 dans la colonne de droite pour obtenir une vue colonnes. Dans la page General, sélectionnez la colonne DATE_OF_DELY, puis cliquez sur Drop Column située dans la partie inférieure gauche de la page General. Sélectionnez Mark selected columns as unused dans la zone Operations la boîte de dialogue Drop Columns. Oracle9i Database Administration I D-60 Exercice 11 (suite) 11 Supprimez la colonne non utilisée DATE_OF_DELY. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. ALTER TABLE orders2 DROP UNUSED COLUMNS; Table altered. Utiliser la console OEM - Sélectionnez Schema > Table > SYSTEM > ORDERS2. Sélectionnez la colonne DATE_OF_DELY de la page General. Cliquez sur l'icône Drop Columns dans la partie inférieure gauche de la page General. La boîte de dialogue Drop Columns s'affiche. Choisissez de supprimer la colonne inutilisée. 12 Supprimez la table ORDERS2. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. DROP TABLE orders2; Table dropped. Utiliser la console OEM - Sélectionnez Schema > Table > SYSTEM > ORDERS2. Sélectionnez Remove dans le menu accessible par le bouton droit de la souris. Sélectionnez Yes pour confirmer la suppression de la table. Oracle9i Database Administration I D-61 Exercice 12 1 Vous envisagez de créer des index sur les colonnes NAME et REGION de la table CUSTOMERS. Quels sont les types d'index appropriés pour ces deux colonnes ? Créez ces index (nommez-les respectivement CUST_NAME_IDX et CUST_REGION_IDX), puis placez-les dans le tablespace INDX01). Indice : Les index B-Tree sont adaptés aux colonnes qui contiennent de nombreuses valeurs distinctes tandis que les index bitmap conviennent plutôt aux colonnes qui contiennent peu de valeurs distinctes. La table CUSTOMERS se trouve dans le schéma SYSTEM. Utiliser SQL*Plus Worksheet - Lorsque vous vous connectez, vous devez préciser le nom de service dans la chaîne connexion. - Entrez la commande SQL. - Sélectionnez Execute. de CONNECT system/manager@[service name] Connected. CREATE INDEX cust_name_idx ON customers(name) TABLESPACE index01; Index created. CREATE BITMAP INDEX cust_region_idx ON system.customers(region) TABLESPACE index01; Index created. Utiliser la console OEM - Sélectionnez Schema > INDEX. - Sélectionnez Create dans le menu accessible par le bouton droit de la souris. - Dans la page General, indiquez les informations nécessaires à la création de l'index. - Sélectionnez la colonne sur laquelle vous souhaitez créer l'index. La valeur 1 est placée dans la colonne Order. index Remarque : Cliquez sur le bouton radio Bitmap pour créer l'index bitmap, sinon un B*tree est créé par défaut. Oracle9i Database Administration I D-62 Exercice 12 2 Transférez l'index CUST_REGION_IDX vers un autre tablespace. Indice : Vous pouvez reconstruire l'index en indiquant un autre tablespace. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. ALTER INDEX cust_region_idx REBUILD TABLESPACE indx; Index altered. 3 Notez les fichiers et les blocs utilisés par les extents dans l'index CUST_REGION_IDX. Indice : Accédez à ces informations par la vue DBA_EXTENTS. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. SELECT file_id, block_id, blocks FROM WHERE AND dba_extents segment_name='CUST_REGION_IDX' owner='SYSTEM'; BLOCK_ID 17 BLOCKS 125 FILE_ID 4 ---------- ---------- ---------- Oracle9i Database Administration I D-63 Exercice 12 4 Recréez l'index CUST_REGION_IDX sans le supprimer au préalable et conservez-le dans le même tablespace. Le nouvel index réutilise-t-il les mêmes blocs qu'auparavant ? Indice : Reconstruisez l'index. effet, l'index Remarque : Le nouvel index ne réutilise pas le même espace après reconstruction. En le serveur Oracle construit un index temporaire, supprime l'ancien, puis renomme temporaire. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. ALTER INDEX cust_region_idx REBUILD; Index altered. SELECT file_id, block_id, blocks 2 3 4 FROM WHERE AND FILE_ID 4 dba_extents segment_name='CUST_REGION_IDX' owner='SYSTEM'; BLOCK_ID 142 BLOCKS 125 ---------- ---------- ---------- 5 a Sous l'ID utilisateur SYSTEM, exécutez le script lab12_05a.sql pour créer la table NUMBERS et l'alimenter. Utiliser SQL*Plus Worksheet - Sélectionnez File > Open dans le menu principal. - Sélectionnez le script lab12_05a.sql. - Sélectionnez Open. Le texte du script est placé dans la fenêtre SQL*Plus Worksheet. - Mettez à jour la première ligne afin d'inclure le nom de service dans la chaîne de connexion. - Sélectionnez Execute. Oracle9i Database Administration I D-64 Exercice 12 (suite) 5 b Interrogez la table NUMBERS pour déterminer le nombre de valeurs distinctes dans les deux colonnes de la table. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. SELECT count(DISTINCT no) NO, count(DISTINCT odd_even) OE FROM numbers; NO 10000 OE 2 ---------- ---------- c En utilisant des tailles d'extent uniformes de 4 Ko, créez les index B-Tree NUMB_OE_IDX et NUMB_NO_IDX, respectivement sur les colonnes ODD_EVEN et NO de la table NUMBERS. Placez ces index dans le tablespace INDEX01. Vérifiez la taille totale des index et écrivez ci-dessous le nombre de blocs. Indice : Utilisez une valeur PCTINCREASE égale à zéro pour créer des extents de taille identique. Vérifiez dans DBA_SEGMENTS le nombre total de blocs alloués aux extents. Index NUMB_OE_IDX NUMB_NO_IDX Colonne ODD_EVEN NON Blocs Oracle9i Database Administration I D-65 Exercice 12 (suite) 5 c (suite) Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. CREATE INDEX numb_oe_idx ON numbers(odd_even) TABLESPACE index01; Index created. CREATE INDEX numb_no_idx ON numbers(no) TABLESPACE index01; Index created. COLUMN segment_name FORMAT a15 SELECT segment_name, blocks FROM WHERE AND dba_segments segment_name LIKE 'NUMB%' segment_type='INDEX'; BLOCKS 40 46 SEGMENT_NAME NUMB_OE_IDX NUMB_NO_IDX --------------- ---------- Utiliser la console OEM Pour créer des index B*Tree, procédez comme suit : placée Sélectionnez Create dans le menu accessible par le bouton droit de la souris. Dans la page General and Storage, indiquez les informations nécessaires à la création de l'index. Sélectionnez la colonne sur laquelle vous souhaitez créer l'index. La valeur 1 est dans la colonne Order. Répétez la procédure pour le second index. Oracle9i Database Administration I D-66 Exercice 12 (suite) 5 d Après avoir enregistré les blocs ci-dessus, vous devez supprimer les index NUMB_OE_IDX et NUMB_NO_IDX. En utilisant des tailles d'extent uniformes de 4 Ko, créez les index bitmap NUMB_OE_IDX et NUMB_NO_IDX, respectivement sur les colonnes ODD_EVEN et NO de la table NUMBERS. Placez ces index dans le tablespace INDEX01. Réexécutez l'interrogation dans DBA_SEGMENTS pour vérifier le nombre total de blocs alloués aux extents. Vérifiez la taille totale des index et écrivez ci-dessous le nombre de blocs. Index NUMB_OE_IDX NUMB_NO_IDX Colonne ODD_EVEN NON Blocs Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. DROP INDEX numb_oe_idx; Index dropped. DROP INDEX numb_no_idx; Index dropped. CREATE BITMAP INDEX numb_oe_idx ON numbers(odd_even) TABLESPACE index01; Index created. CREATE BITMAP INDEX numb_no_idx ON numbers(no) TABLESPACE index01; Index created. SELECT segment_name, blocks FROM WHERE AND dba_segments segment_name LIKE 'NUMB%' segment_type='INDEX'; BLOCKS 2 72 SEGMENT_NAME NUMB_OE_IDX NUMB_NO_IDX --------------- ---------- Oracle9i Database Administration I D-67 Exercice 12 (suite) 5 d (suite) Que pouvez-vous conclure de la relation entre la cardinalité et la taille des deux index ? Réponse : Les résultats révèlent que les index bitmap et B-tree sont compacts, respectivement pour une colonne de faible cardinalité et pour une colonne de forte cardinalité. Utiliser la console OEM Pour supprimer les index, procédez comme suit : Sélectionnez Schema > INDEX. Sélectionnez l'index dans la colonne de droite, puis Remove dans le menu accessible par le bouton droit de la souris. Répétez la procédure pour le second index. Schema > INDEX Pour créer des index bitmap, procédez comme suit : placée Sélectionnez Create dans le menu accessible par le bouton droit de la souris. Dans la page General and Storage, indiquez les informations nécessaires à la création de l'index. Sélectionnez la colonne sur laquelle vous souhaitez créer l'index. La valeur 1 est dans la colonne Order. Répétez la procédure pour le second index. Remarque : La table NUMBERS se trouve dans le schéma SYSTEM. Oracle9i Database Administration I D-68 Exercice 13 1 Consultez le script lab13_01.sql. Exécutez-le pour créer les contraintes. Utiliser SQL*Plus Worksheet - Sélectionnez File > Open dans le menu principal. - Sélectionnez le script lab13_01.sql. - Sélectionnez Open. Le texte du script est placé dans la fenêtre SQL*Plus Worksheet. - Mettez à jour la première ligne afin d'inclure le nom de service dans la chaîne de connexion. - Sélectionnez Execute. 2 Interrogez le dictionnaire de données pour effectuer les opérations suivantes : a Vérifier la présence de contraintes et déterminer leur statut et si elles peuvent être différées. Indice : Utilisez la vue DBA_CONSTRAINTS pour obtenir ces informations. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. COLUMN constraint_name FORMAT a25 COLUMN table_name COLUMN deferrable COLUMN status FORMAT a10 FORMAT a15 FORMAT a10 COLUMN constraint_type FORMAT a1 SELECT constraint_name, table_name, constraint_type, deferrable, status FROM WHERE dba_constraints table_name IN ('PRODUCTS','ORDERS','CUSTOMERS') TABLE_NAME C DEFERRABLE STATUS AND owner='SYSTEM'; CONSTRAINT_NAME ------------------------- ---------- - --------------- ------CUSTOMERS_REGION_CK ENABLED CUSTOMERS_CUST_CODE_PK ENABLED ORDERS_CUST_CODE_FK ENABLED ORDERS_DATE_OF_DELY_CK ENABLED ORDERS_ORD_ID_PK ENABLED PRODUCTS_PROD_CODE_UK DISABLED CUSTOMERS CUSTOMERS ORDERS ORDERS ORDERS PRODUCTS C NOT DEFERRABLE P DEFERRABLE R DEFERRABLE C NOT DEFERRABLE P NOT DEFERRABLE U DEFERRABLE 6 rows selected. Oracle9i Database Administration I D-69 Exercice 13 (suite) 2 b Vérifier le nom et le type des index créés pour valider les contraintes. Indice : Les index ne sont créés que pour les contraintes de clé primaire et de clé unique. Ils portent le même nom que ces contraintes. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. SELECT index_name,table_name,uniqueness FROM WHERE FROM WHERE AND AND dba_indexes index_name in dba_constraints table_name IN ('PRODUCTS', 'ORDERS', 'CUSTOMERS') owner='SYSTEM' constraint_type in ('P','U') ) ; TABLE_NAME UNIQUENES CUSTOMERS ORDERS NONUNIQUE UNIQUE ( SELECT constraint_name INDEX_NAME CUSTOMERS_CUST_CODE_PK ORDERS_ORD_ID_PK ------------------------------ ---------- --------- 3 Sous l'ID utilisateur SYSTEM, exécutez le script lab13_03.sql afin d'insérer deux enregistrements dans la table PRODUCTS. Utiliser SQL*Plus Worksheet - Sélectionnez File > Open dans le menu principal. - Sélectionnez le script lab13_03.sql. - Sélectionnez Open. Le texte du script est placé dans la fenêtre SQL*Plus Worksheet. - Mettez à jour la première ligne afin d'inclure le nom de service dans la chaîne de connexion. - Sélectionnez Execute. Oracle9i Database Administration I D-70 Exercice 13 (suite) 4 Activez la contrainte UNIQUE dans la table PRODUCT. L'opération a-t-elle abouti ? Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. ALTER TABLE system.products ENABLE CONSTRAINT products_prod_code_uk; ALTER TABLE system.products * ERROR at line 1: ORA-02299: cannot validate (SYSTEM.PRODUCTS_PROD_CODE_UK) - duplicate keys found 5 a Assurez-vous que les nouvelles lignes ajoutées à la table ne violent pas la contrainte portant sur la table PRODUCT. Indice : Pour ce faire, activez la contrainte NOVALIDATE. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. ALTER TABLE system.products ENABLE NOVALIDATE CONSTRAINT products_prod_code_uk; Table altered. b Interrogez le dictionnaire de données afin de vérifier l'impact de cette modification. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. SELECT constraint_name, table_name, constraint_type, validated, status FROM dba_constraints WHERE table_name = 'PRODUCTS‘ AND owner='SYSTEM'; CONSTRAINT_NAME STATUS ---------------------PRODUCTS_PROD_CODE_UK ENABLED TABLE_NAME C VALIDATED ---------- - ------------- ----PRODUCTS U NOT VALIDATED Oracle9i Database Administration I D-71 Exercice 13 (suite) 5 c Pour vérifier que la contrainte rejette les insertions en infraction, ajoutez une ligne contenant les valeurs suivantes : PRODUCT_I D PRODUCT_DESCRIPTION LIST_PRICE 4000 Monitor 3000 Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. INSERT INTO system.products VALUES(4000,'Monitor',3000); INSERT INTO system.products * ERROR at line 1: ORA-00001: unique constraint (SYSTEM.PRODUCTS_PROD_CODE_UK) violated 6 Effectuez les opérations requises pour identifier les cas de violation de contrainte détectés dans la table PRODUCTS, modifiez les codes produit (PRODUCT_ID) en conséquence, puis assurez-vous que toutes les données, nouvelles ou existantes, sont conformes à la contrainte (considérez que la table comporte plusieurs milliers de lignes et qu'il est bien trop long de vérifier chacune d'elles manuellement). Indice : Procédez comme suit : a Créez la table EXCEPTIONS. Remarque : Cette tâche doit être réalisée à l'aide de SQL*Plus ou de la ligne de commande du système d'exploitation. Utiliser SQL*Plus SQL> CONNECT system/manager Connected. SQL> @?/rdbms/admin/utlexcpt Oracle9i Database Administration I D-72 Exercice 13 (suite) 6 b Exécutez la commande pour activer la contrainte et intercepter les exceptions. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. ALTER TABLE system.products ENABLE CONSTRAINT products_prod_code_uk EXCEPTIONS INTO system.exceptions; ALTER TABLE system.products * ERROR at line 1: ORA-02299: cannot validate (SYSTEM.PRODUCTS_PROD_CODE_UK) - duplicate keys found c Utilisez les ROWID dans la table EXCEPTIONS pour afficher les lignes de la table PRODUCTS qui violent la contrainte (ne demandez pas l'affichage des colonnes LOB). Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. SELECT rowid, prod_code, description FROM system.products WHERE rowid IN ( SELECT row_id FROM WHERE ROWID exceptions table_name='PRODUCTS‘ ) ; PROD_CODE DESCRIPTION ------------------ ---------- ----------------------------AAABSgAAIAAAAASAAA AAABSgAAIAAAAASAAB 4000 UNIX Monitor 4000 NT Monitor Oracle9i Database Administration I D-73 Exercice 13 (suite) 6 d Corrigez les erreurs. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. UPDATE system.products SET prod_code='4001' WHERE rowid = ( SELECT max(row_id) FROM exceptions WHERE table_name='PRODUCTS‘ ) ; 1 row updated. e Activez la contrainte. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. ALTER TABLE system.products ENABLE CONSTRAINT products_prod_code_uk EXCEPTIONS INTO system.exceptions; Table altered. 7 Exécutez le script lab13_07.sql pour insérer des lignes dans la table. Les insertions ontelles réussi ? Annulez les modifications. Utiliser SQL*Plus Worksheet - Sélectionnez File > Open dans le menu principal. - Sélectionnez le script lab13_07.sql. - Sélectionnez Open. Le texte du script est placé dans la fenêtre SQL*Plus Worksheet. - Mettez à jour la première ligne afin d'inclure le nom de service dans la chaîne de connexion. - Sélectionnez Execute. Oracle9i Database Administration I D-74 Exercice 13 (suite) 8 A présent, consultez le script lab13_08. Ce script effectue également les insertions dans le même ordre. Exécutez le script, puis vérifiez que son exécution se déroule correctement. Utiliser SQL*Plus Worksheet - Sélectionnez File > Open dans le menu principal. - Sélectionnez le script lab13_08.sql. - Sélectionnez Open. Le texte du script est placé dans la fenêtre SQL*Plus Worksheet. - Mettez à jour la première ligne afin d'inclure le nom de service dans la chaîne de connexion. - Sélectionnez Execute. 9 Videz la table CUSTOMERS. L'opération a-t-elle abouti ? Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. TRUNCATE TABLE system.customers; TRUNCATE TABLE system.customers * ERROR at line 1: ORA-02266: unique/primary keys in table referenced by enabled foreign keys Oracle9i Database Administration I D-75 Exercice 14 1 Exécutez le script lab14_01.sql pour créer l'utilisateur Jeff, puis le script @$ORACLE_HOME/rdbms/admin/utlpwdmg.sql pour activer la gestion des mots de passe. Utiliser SQL*Plus Worksheet - Sélectionnez File > Open dans le menu principal. - Sélectionnez le script lab14_01.sql. - Sélectionnez Open. Le texte du script est placé dans la fenêtre SQL*Plus Worksheet. - Mettez à jour la première ligne afin d'inclure le nom de service dans la chaîne de connexion. - Sélectionnez Execute. Utiliser SQL*Plus SQL> @$ORACLE_HOME/rdbms/admin/utlpwdmg.sql 2 Tentez de remplacer le mot de passe de l'utilisateur Jeff par Jeff. Que se passe-t-il ? Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. ALTER USER jeff IDENTIFIED BY jeff; ALTER USER jeff IDENTIFIED BY jeff * ERROR at line 1: ORA-28003: password verification for the specified password failed ORA-20001: Password same as or similar to user Utiliser la console OEM - Sélectionnez Security > Users > Jeff. - Dans la page General, renseignez les champs Enter Password et Confirm Password. - Cliquez sur Apply. Oracle9i Database Administration I D-76 Exercice 14 3 Essayez de remplacer le mot de passe de Jeff pour qu'il respecte le format de gestion mots de passe. Indice : Le mot de passe doit contenir au moins un chiffre, un caractère et un signe de ponctuation. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. ALTER USER jeff IDENTIFIED BY super1$; User altered. des Utiliser la console OEM - Sélectionnez Security > Users > Jeff. - Dans la page General, renseignez les champs Enter Password et Confirm Password. - Cliquez sur Apply. 4 Modifiez le profil DEFAULT pour que les paramètres suivants s'appliquent aux utilisateurs possédant ce profil : le compte doit être verrouillé après deux tentatives de connexion, le mot de passe doit expirer après un délai de 30 jours, le même mot de passe ne doit pas être réutilisé pendant au moins une minute, - le compte doit bénéficier d'une période de grâce de cinq jours pour la modification d'un mot de passe qui a expiré. Assurez-vous que ces exigences sont satisfaites. Indices Modifiez les limites du profil par défaut à l'aide de la commande ALTER PROFILE. Interrogez la vue DBA_PROFILES du dictionnaire de données pour vérifier les résultats. Oracle9i Database Administration I D-77 Exercice 14 (suite) 4 (suite) Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. ALTER PROFILE default LIMIT FAILED_LOGIN_ATTEMPTS 2 PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_TIME 1/1440 PASSWORD_GRACE_TIME 5; Profile altered. SELECT resource_name, limit FROM RESOURCE_NAME FAILED_LOGIN_ATTEMPTS PASSWORD_LIFE_TIME PASSWORD_REUSE_TIME PASSWORD_REUSE_MAX PASSWORD_VERIFY_FUNCTION PASSWORD_LOCK_TIME PASSWORD_GRACE_TIME 7 rows selected. dba_profiles LIMIT 2 30 .0006 UNLIMITED VERIFY_FUNCTION .0006 5 WHERE profile='DEFAULT‘ AND resource_type='PASSWORD'; ----------------------------- ------------------- Utiliser la console OEM - Sélectionnez Security > Profiles > Default. - Modifiez le profil dans la page Password. - Cliquez sur Apply. Oracle9i Database Administration I D-78 Exercice 14 (suite) 5 Connectez-vous sous l'ID de l'utilisateur Jeff en entrant un mot de passe non valide. Après deux tentatives, connectez-vous avec le mot de passe correct. Que se passe-t-il ? Utiliser SQL*Plus Worksheet - Lorsque vous vous connectez, vous devez préciser le nom de service dans la chaîne connexion. - Entrez la commande SQL. - Sélectionnez Execute. CONNECT jeff/superman@[service name] ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE. CONNECT jeff/super@[service name] ERROR: ORA-01017: invalid username/password; logon denied CONNECT jeff/super1$@[service name] ERROR: ORA-28000: the account is locked de Oracle9i Database Administration I D-79 Exercice 14 (suite) 6 Utilisez la vue DBA_USERS du dictionnaire de données pour vérifier que l'utilisateur Jeff est verrouillé. Déverrouillez le compte utilisateur Jeff. Connectez-vous ensuite sous l'ID Jeff. Indice : Déverrouillez le compte à l'aide de la commande ALTER USER. Utiliser SQL*Plus Worksheet - Lorsque vous vous connectez, vous devez préciser le nom de service dans la chaîne connexion. - Entrez la commande SQL. - Sélectionnez Execute. de CONNECT SYS/ORACLE@[service name] AS SYSDBA Connected. SELECT username, account_status FROM dba_users; USERNAME ACCOUNT_STATUS --------------- --------------SYS OPEN SYSTEM OPEN OUTLN OPEN ORDSYS OPEN MDSYS OPEN OE OPEN HR OPEN ORDPLUGINS OPEN DBSNMP OPEN JEFF LOCKED(TIMED) 10 rows selected. ALTER USER jeff ACCOUNT UNLOCK; User altered. CONNECT jeff/super1$ Connected. Utiliser la console OEM - Sélectionnez Security > Users > Jeff. - Vous pouvez vérifier le statut du compte utilisateur dans la page General. - Pour le déverrouiller, utilisez le bouton radio Unlocked, puis cliquez sur Apply. Oracle9i Database Administration I D-80 Exercice 14 (suite) 7 Désactivez les vérifications de mots de passe pour le profil DEFAULT. Indice : Utilisez la commande ALTER PROFILE. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. ALTER PROFILE default LIMIT FAILED_LOGIN_ATTEMPTS PASSWORD_LIFE_TIME PASSWORD_REUSE_TIME PASSWORD_REUSE_MAX PASSWORD_VERIFY_FUNCTION PASSWORD_LOCK_TIME PASSWORD_GRACE_TIME Profile altered. UNLIMITED UNLIMITED UNLIMITED UNLIMITED NULL UNLIMITED UNLIMITED; Utiliser la console OEM - Sélectionnez Security > Profiles > Default. - Modifiez le profil dans la page Password. - Cliquez sur Apply. Oracle9i Database Administration I D-81 Exercice 14 (suite) 8 Connectez-vous sous l'ID Jeff en entrant un mot de passe non valide. Après deux tentatives, connectez-vous avec le mot de passe correct. Que se passe-t-il ? Pourquoi ? Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Sélectionnez Execute. CONNECT jeff/superman@[service name] ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE. CONNECT jeff/super@[service name] ERROR: ORA-01017: invalid username/password; logon denied CONNECT jeff/super1$@[service name] Connected. Réponse : Le compte ne se verrouille pas si vous vous connectez avec le mot de passe correct à la troisième tentative (voir étape 5). En effet, lorsque vous avez affecté la valeur NULL à la fonction PASSWORD_VERIFY_FUNCTION, celle-ci a été désactivée à l'étape 7. Oracle9i Database Administration I D-82 Exercice 15 1 Créez l'utilisateur Bob associé au mot de passe CRUSADER. Assurez-vous que les objets et les segments temporaires créés par Bob ne sont pas ajoutés au tablespace SYSTEM. Vérifiez également que Bob peut se connecter et créer dans les tablespaces USERS et INDX des objets dont la taille peut atteindre un mégaoctet. Utilisez le script lab15_01.sql pour accorder à Bob le droit de créer des sessions. Indice : Affectez à Bob le tablespace par défaut USERS et le tablespace temporaire TEMP. Utiliser SQL*Plus Worksheet - Lorsque vous vous connectez, vous devez préciser le nom de service dans la chaîne connexion. - Entrez la commande SQL. - Sélectionnez Execute. CONNECT system/manager@[service name] Connected. CREATE USER bob IDENTIFIED BY crusader DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE temp QUOTA 1M ON USERS QUOTA 1M ON INDX; User created. de Utiliser SQL*Plus Worksheet Pour ouvrir un script, procédez comme suit : - Sélectionnez File > Open dans le menu principal. - Sélectionnez le script lab15_01.sql. - Sélectionnez Open. Le texte du script est placé dans la fenêtre SQL*Plus Worksheet. - Mettez à jour la première ligne afin d'inclure le nom de service dans la chaîne de connexion. - Sélectionnez Execute. Utiliser la console OEM - Sélectionnez Security > Users. - Sélectionnez Create dans le menu accessible par le bouton droit de la souris. La boîte de dialogue Create User s'affiche. - Utilisez la page General pour identifier l'utilisateur et affecter les tablespaces TEMPORARY et par défaut. - Utilisez la page Quota pour définir le quota des tablespaces USERS et INDX. - Cliquez sur Create. Oracle9i Database Administration I D-83 . . Utiliser la console OEM . CREATE USER emi IDENTIFIED BY mary DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp.Sélectionnez Security > Users. .Sélectionnez Create dans le menu accessible par le bouton droit de la souris. TEMPORARY_TABLE TEMP TEMP USERNAME EMI BOB DEFAULT_TABLESPACE USERS USERS ---------.Entrez la commande SQL. Assurez-vous que les objets et les segments de tri créés par Emi ne sont pas ajoutés au tablespace SYSTEM. Utiliser SQL*Plus Worksheet .Entrez la commande SQL. . User created. Indice : Vous pouvez interroger la vue DBA_USERS. SELECT username.Sélectionnez Execute.Cliquez sur Create. Utiliser SQL*Plus Worksheet .-------------------. La boîte de dialogue Create User s'affiche. default_tablespace.Utilisez la page General pour identifier l'utilisateur et affecter les tablespaces TEMPORARY et par défaut.Exercice 15 2 Créez l'utilisateur Emi associé au mot de passe Mary. 'EMI').Sélectionnez Execute. temporary_tablespace FROM dba_users WHERE username IN ('BOB'. . 3 Affichez les informations sur Bob et Emi à partir du dictionnaire de données.--------------- Oracle9i Database Administration I D-84 . Entrez la commande SQL.Sélectionnez Execute. affichez les informations sur la quantité d'espace que Bob peut utiliser dans les tablespaces. Oracle9i Database Administration I D-85 . connect bob/crusade@[service name] Connected. COLUMN tablespace_name FORMAT a15 COLUMN user FORMAT a10 SELECT * FROM dba_ts_quotas WHERE username = 'BOB'.Entrez la commande SQL.Lorsque vous vous connectez. utilisez SQL*Plus Worksheet dans cette étape afin de recevoir l'erreur générée lorsque vous vous connectez sous l'ID utilisateur Bob. Utiliser SQL*Plus Worksheet . TABLESPACE_NAME USERNAME BYTES MAX_BLOCKS MAX_BYTES BLOCKS --------------.---------. Que se passe-tBOB 0 1048576 0 il ? 256 Utiliser SQL*Plus Worksheet . vous devez préciser le nom de service dans la chaîne de connexion. .----. Indice : Vous pouvez interroger la vue DBA_TS_QUOTAS. .-----.Exercice 15 (suite) 4 A partir du dictionnaire de données. ALTER USER bob * ERROR at line 1: ORA-01031: insufficient privileges Utiliser la console OEM Bien que la console OEM puisse être utilisée pour modifier le tablespace TEMPORARY de Bob.-------.Sélectionnez Execute. modifiez le tablespace temporaire de Bob. ALTER USER bob TEMPORARY TABLESPACE users.--------INDX 256 BOB 0 1048576 0 5 a USERS Sous l'ID utilisateur Bob . . Utilisez la page Quota pour supprimer le quota de Bob de son tablespace par défaut. User la altered. CONNECT bob/crusader@[service name] Connected. . . . de CONNECT system/manager@[service name] Connected. . ALTER USER bob IDENTIFIED BY sam. de Utiliser la console OEM Bien que la console OEM puisse être utilisée pour modifier le mode de passe de Bob.Sélectionnez Execute. supprimez le quota de Bob sur son tablespace par défaut. ALTER USER bob QUOTA 0 ON users. User altered. remplacez le mot de passe de Bob par Sam. . Utiliser console OEM .Lorsque vous vous connectez. vous devez préciser le nom de service dans la chaîne connexion. Oracle9i Database Administration I D-86 . Utiliser SQL*Plus Worksheet .Lorsque vous vous connectez.Sélectionnez Security > Users > Bob.Sélectionnez Execute.Cliquez sur Apply. 6 Sous l'ID utilisateur SYSTEM.Entrez la commande SQL. Utiliser SQL*Plus Worksheet .Entrez la commande SQL. . utilisez SQL*Plus Worksheet dans cette étape afin de montrer qu'aucune erreur ne peut être générée puisque Bob peut modifier son mot de passe.Exercice 15 (suite) 5 b Sous l'ID utilisateur Bob. vous devez préciser le nom de service dans la chaîne connexion. Entrez la commande SQL. . User dropped.Sélectionnez Expire Password Now.Sélectionnez Execute.Exercice 15 (suite) 7 Supprimez le compte d'Emi de la base de données. Utiliser SQL*Plus Worksheet . Utiliser la console OEM .Entrez la commande SQL. Cliquez sur Yes pour confirmer la suppression de l'utilisateur Emi. ALTER USER bob IDENTIFIED BY olink PASSWORD EXPIRE. User altered. Utiliser SQL*Plus Worksheet . . DROP USER emi. Sélectionnez Remove dans le menu accessible par le bouton droit de la souris. Affectez à Bob le mot de passe OLINK et demandez-lui le modifier lors de sa prochaine connexion. .Utilisez la page General pour modifier le mot de passe.Cliquez sur Apply. de 8 Bob a oublié son mot de passe.Sélectionnez Execute.Sélectionnez Security > Users > Bob. . Utiliser la console OEM Sélectionnez Security > Users > Emi. . Oracle9i Database Administration I D-87 . .sql.Utilisez la page Quota pour identifier 1M sur DATA01. .Sélectionnez Security > Users.Sélectionnez Execute. . Grant succeeded. .Utilisez la page General pour identifier l'utilisateur et affecter les tablespaces TEMPORARY et par défaut. vous devez préciser le nom de service dans la chaîne connexion. Utiliser SQL*Plus Worksheet .Sélectionnez Create dans le menu accessible par le bouton droit de la souris. .Entrez la commande SQL. La boîte de dialogue Create User s'affiche. . Utiliser SQL*Plus Worksheet .Lorsque vous vous connectez. Affectez-lui le tablespace par défaut DATA01. create table TO emi. Le texte du script est placé dans la fenêtre SQL*Plus Worksheet.sql pour vous connecter en tant qu'Emi et créez les tables CUSTOMERS1 et ORDERS1.Sélectionnez Execute. . . . GRANT create session. de CONNECT system/manager@[service name] Connected. User created. .Sélectionnez Open.Sélectionnez File > Open dans le menu principal. puis créez l'utilisateur Emi et autorisez-le à se connecter à la base de données et à créer des objets dans son schéma. Utiliser la console OEM . 2 a Exécutez le script lab16_02a. CREATE USER emi IDENTIFIED BY "abcd12" DEFAULT TABLESPACE data01 TEMPORARY TABLESPACE temp QUOTA 1M ON data01. Oracle9i Database Administration I D-88 .Mettez à jour la première ligne afin d'inclure le nom de service dans la chaîne de connexion.Exercice 16 1 Connectez-vous en tant que SYSTEM.Cliquez sur Create. le tablespace temporaire TEMP et un quota de tablespace de 1 Mo sur DATA01.Sélectionnez le script lab16_02a. customers1.Entrez la commande SQL. Oracle9i Database Administration I D-89 . . puis copiez les données de SYSTEM. SELECT * FROM emi. 9 rows created.customers. .Lorsque vous vous connectez. INSERT INTO emi. Utiliser SQL*Plus Worksheet .Exercice 16 (suite) 2 b Connectez-vous en tant que SYSTEM.---------------------------------------A01 A02 A03 A04 A05 A06 A07 A08 J01 TKB SPORT SHOP VOLLYRITE JUST TENNIS EVERY MOUNTAIN SHAPE UP SHAPE UP WOMENS SPORTS NORTH WOODS HEALTH Sports Store ----West North North South South West South East East de 9 rows selected. CONNECT system/manager@[service name] Connected. Vérifiez que les enregistrements ont bien été insérés.Sélectionnez Execute.customers1 SELECT * FROM system. vous devez préciser le nom de service dans la chaîne connexion. CUS_CODE NAME REGION -------.CUSTOMERS vers la table CUSOMTERS d'Emi. Sélectionnez Apply.Sélectionnez la page Object Privileges. . Le privilège apparaît dans la fenêtre Granted. CONNECT system/manager@[service name] Connected. . .Exercice 16 (suite) 2 c Connectez-vous en tant que SYSTEM. puis autorisez Bob à sélectionner des données dans la table CUSTOMERS1 d'Emi.Accordez à Bob ce privilège en cliquant deux fois sur SELECT dans la fenêtre Available Privileges de la page Privileges.Sélectionnez Execute. . Remarque : Vous recevez une erreur indiquant que votre privilège est insuffisant. .Entrez la commande SQL.customers1 TO bob. Que se passe-t-il ? Utiliser SQL*Plus Worksheet .Sélectionnez Emi > Tables > CUSTOMERS1. GRANT select ON emi.Sélectionnez Security > Users > Bob. vous devez préciser le nom de service dans la chaîne connexion. Oracle9i Database Administration I D-90 .Lorsque vous vous connectez. .customers1 TO bob * ERROR at line 1: ORA-01031: insufficient privileges de Utiliser la console OEM . GRANT select ON emi. Indice : Utilisez la vue DBA_TAB_PRIVS. Utiliser SQL*Plus Worksheet . puis autorisez Bob à sélectionner des données dans la table CUSTOMERS1 d'Emi Autorisez-le également à octroyer ce droit à d'autres utilisateurs. Grant succeeded. CONNECT system/manager@[service name] Connected. GRANTEE OWNER TABLE_NAME GRANTOR BOB EMI CUSTOMERS1 EMI ------. COLUMN grantee COLUMN owner COLUMN grantor COLUMN privilege COLUMN grantable COLUMN hierarchy FORMAT a8 FORMAT a8 FORMAT a8 FORMAT a10 FORMAT a3 FORMAT a3 PRIVILEGE SELECT GRANT HIERARCHY YES NO de COLUMN table_name FORMAT a10 SELECT * FROM dba_tab_privs WHERE grantee='BOB'.Lorsque vous vous connectez. Le privilège apparaît dans la fenêtre Granted. En tant qu'utilisateur SYSTEM.---------. CONNECT emi/abcd12@[service name] Connected. . .---------.-------.Sélectionnez Execute. . .Exercice 16 (suite) 3 Reconnectez-vous en tant qu'Emi. GRANT select ON customers1 TO bob WITH GRANT OPTION.Sélectionnez Emi > Tables > CUSTOMERS1.--------- Utiliser la console OEM .Cliquez sur Grant Option dans la fenêtre Granted. . .Sélectionnez la page Object Privileges.Entrez la commande SQL. Oracle9i Database Administration I D-91 . consultez les vues du dictionnaire de données qui enregistrent ces actions.----. vous devez préciser le nom de service dans la chaîne connexion.Sélectionnez Security > Users > Bob. .----.Accordez à Bob ce privilège en cliquant deux fois sur SELECT dans la fenêtre Available Privileges de la page Privileges.Sélectionnez Apply. 2. . Utiliser SQL*Plus Worksheet .Entrez la commande SQL. La boîte de dialogue Create User s'affiche.Sélectionnez Execute. Sélectionnez Create dans le menu accessible par le bouton droit de la souris. vous devez préciser le nom de service dans la chaîne connexion. 4. CONNECT system/manager Connected. Utilisez la page General pour créer l'utilisateur. Sélectionnez Security > Users. 3. Oracle9i Database Administration I D-92 . puis autorisez-le à se connecter à la base de données. User created.Lorsque vous vous connectez. Grant succeeded. Utilisez la page System Privileges pour sélectionner le privilège CREATE SESSION. de Utiliser la console OEM 1. CREATE USER trevor IDENTIFIED BY “diamond1$". 5. GRANT create session TO trevor. Cliquez sur Create.Exercice 16 (suite) 4 Créez l'utilisateur Trevor identifié par le mot de passe diamond1$. . autorisez Trevor à accéder à la table CUSTOMERS1 d'Emi. opérations aaron$1.Sélectionnez la page Object Privileges. Remarque : Le message A password has expired va s'afficher en raison des effectuées à l'étape 8 de l'exercice 15.customers1 TO trevor.Accordez à Trevor ce privilège en cliquant deux fois sur SELECT dans la fenêtre Available Privileges de la page Privileges. Le privilège apparaît dans la fenêtre Granted.Sélectionnez Emi > Tables > CUSTOMERS1. Oracle9i Database Administration I D-93 . GRANT select ON emi. .Exercice 16 (suite) 5 a En tant que Bob. . .Sélectionnez Security > Users > Trevor. . . Grant succeeded. Utiliser la console OEM .Lorsque vous vous connectez. . vous devez préciser le nom de service dans la chaîne connexion.Sélectionnez Execute.Entrez la commande SQL. Remplacez le mot de passe de Bob par de Utiliser SQL*Plus Worksheet .Sélectionnez Apply. CONNECT bob/olink@[service name] ERROR: ORA-28001: the password has expired Changing password for bob New password: aaron1$ Retype new password: aaron1$ Password changed Connected. Sélectionnez le privilège SELECT dans la fenêtre Granted. CONNECT emi/abcd12@[service name] Connected.Entrez la commande SQL. .Sélectionnez Apply. SELECT * FROM emi.Cliquez sur la flèche vers le haut située au-dessus de la fenêtre Granted. FROM emi. Le privilège est supprimé.Lorsque vous vous connectez.Sélectionnez la page Object Privileges. .customers1 * ERROR at line 2: ORA-00942: table or view does not exist Oracle9i Database Administration I D-94 .Sélectionnez Emi > Tables > CUSTOMERS1. . puis interrogez la table CUSTOMERS1 d'Emi.customers1.Sélectionnez Execute. . puis retirez à Bob le privilège de lecture de la table CUSTOMERS1 d'Emi.Sélectionnez Security > Users > Bob.Entrez la commande SQL. . . de Utiliser la console OEM .Exercice 16 (suite) 5 b Connectez-vous en tant qu'Emi. . Revoke succeeded. vous devez préciser le nom de service dans la chaîne connexion. . Que se passe-t-il ? Utiliser SQL*Plus Worksheet . REVOKE select ON customers1 FROM bob.Sélectionnez Execute.Lorsque vous vous connectez. vous devez préciser le nom de service dans la chaîne connexion. c Connectez-vous en tant que Trevor. Utiliser SQL*Plus Worksheet . . de CONNECT trevor/diamond1$@[service name] Connected. . de Utiliser la console OEM .Sélectionnez la page System Privileges. .Sélectionnez Security > Users > Emi. mais pas à en créer une nouvelle. Le privilège apparaît dans la fenêtre Granted. Utiliser SQL*Plus Worksheet . Oracle9i Database Administration I D-95 .Lorsque vous vous connectez. vous devez préciser le nom de service dans la chaîne connexion.Cliquez deux fois sur le privilège SYSOPER dans la fenêtre disponible. .Sélectionnez Execute.Sélectionnez Apply.Exercice 16 (suite) 6 Autorisez Emi à démarrer et arrêter la base de données. . . CONNECT SYS/oracle@[service name] AS SYSDBA Connected. GRANT sysoper TO emi.Entrez la commande SQL. Grant succeeded. -------------------. . COLUMN privilege FORMAT a20 COLUMN grantee GRANTEE RESOURCE RESOURCE RESOURCE RESOURCE RESOURCE RESOURCE RESOURCE RESOURCE FORMAT a10 ADM NO NO NO NO NO NO NO NO SELECT * FROM dba_sys_privs WHERE grantee = 'RESOURCE'.Sélectionnez Execute.Sélectionnez Security > Roles > Resource.Exercice 17 1 Examinez la vue du dictionnaire de données et répertoriez les privilèges système du rôle RESOURCE. Oracle9i Database Administration I D-96 . . CONNECT system/manager@[service name] Connected. .--- 8 rows selected.Lorsque vous vous connectez.Entrez la commande SQL.Utilisez la page System Privileges pour afficher la liste des privilèges système affectés au rôle Resource. Utiliser SQL*Plus Worksheet . Utiliser la console OEM . PRIVILEGE CREATE CLUSTER CREATE INDEXTYPE CREATE OPERATOR CREATE PROCEDURE CREATE SEQUENCE CREATE TABLE CREATE TRIGGER CREATE TYPE ---------. vous devez préciser le nom de service dans la chaîne de connexion. . . .Sélectionnez Create dans le menu accessible par le bouton droit de la souris. Oracle9i Database Administration I D-97 .Sélectionnez la page Object Privileges. . Grant succeeded. Role created. GRANT select ON customers1 TO dev.Utilisez la page System Privileges pour accorder les privilèges CREATE TABLE et CREATE VIEW.Sélectionnez Execute. Utiliser SQL*Plus Worksheet .Sélectionnez Security > Roles.Utilisez la page General pour identifier le rôle. .Sélectionnez Apply.Sélectionnez Create. .Exercice 17 2 Créez le rôle DEV qui permettra à un utilisateur de créer une table ou une vue et de sélectionner des données dans la table CUSTOMERS1 d'Emi. Accordez à DEV le privilège SELECT sur CUSTOMERS1. create view TO dev. CREATE ROLE dev. CONNECT emi/abcd12@[service name] Connected. . Utiliser la console OEM Créez le rôle DEV : . Grant succeeded. . Remarque : Lorsque vous utilisez la console OEM.Sélectionnez Emi > Tables > CUSTOMERS1 .Sélectionnez le privilège SELECT dans la fenêtre Granted. ne vous connectez pas sous l'ID utilisateur Emi. GRANT create table.Entrez la commande SQL. ALTER USER bob DEFAULT ROLE resource.Cliquez sur Apply. Grant succeeded.Entrez la commande SQL.Sélectionnez Security > Users > Bob. La case Default est cochée. en précisant que seul le rôle RESOURCE doit être automatiquement activé à la connexion. User altered. Utiliser la console OEM .Sélectionnez Default dans la fenêtre Granted pour le rôle RESOURCE.Lorsque vous vous connectez. . vous devez préciser le nom de service dans la chaîne de connexion. .Utilisez la page Role pour accorder le rôle SELECT_CATALOG_ROLE. CONNECT system/manager@[service name] Connected. GRANT dev.Lorsque vous vous connectez.Cliquez sur Apply. . CONNECT system/manager@[service name] Connected. .Exercice 17 (suite) 3 a Affectez les rôles RESOURCE et DEV à Bob. Grant succeeded. Utiliser SQL*Plus Worksheet . Oracle9i Database Administration I D-98 .Sélectionnez Execute.Entrez la commande SQL.Utilisez la page Role pour affecter les rôles RESOURCE et DEV. Utiliser SQL*Plus Worksheet . . . resource TO bob. Utiliser la console OEM . . .Sélectionnez Security > Users > Bob. GRANT select_catalog_role TO bob.Sélectionnez Execute. b Donnez à Bob la possibilité de lire toutes les informations du dictionnaire de données. . vous devez préciser le nom de service dans la chaîne de connexion. vous devez préciser le nom de service dans la chaîne de connexion. SELECT segment_name FROM WHERE status='ONLINE'. dba_rollback_segs Oracle9i Database Administration I D-99 . Utiliser SQL*Plus Worksheet . Role set.Exercice 17 (suite) 4 Bob a besoin de vérifier les segments d'annulation actuellement utilisés par l'instance. SET ROLE select_catalog_role.Entrez la commande SQL.Lorsque vous vous connectez. . . Connectez-vous sous l'ID utilisateur Bob et répertoriez les segments d'annulation utilisés. Indice : Utilisez SET ROLE SELECT_CATALOG_ROLE. CONNECT bob/aaron1$@[service name] Connected. SEGMENT_NAME --------------SYSTEM _SYSSMU9$ _SYSSMU10$ _SYSSMU11$ _SYSSMU12$ _SYSSMU13$ _SYSSMU14$ _SYSSMU15$ _SYSSMU16$ 9 rows selected.Sélectionnez Execute. Lorsque vous vous connectez. Oracle9i Database Administration I D-100 .Sélectionnez Execute. Remarque : Vous recevez une erreur ORA-01031. le schéma SYSTEM et le texte de l'interrogation AS SELECT. vous devez préciser le nom de service dans la chaîne de connexion. vous ne possédez pas les privilèges suffisants pour réaliser cette opération.customers * ERROR at line 3: ORA-01031: insufficient privileges Utiliser la console OEM .Exercice 17 (suite) 5 Sous l'ID utilisateur SYSTEM. FROM emi. La boîte de dialogue Create View s'affiche. . . Que se passe-t-il ? Utiliser SQL*Plus Worksheet . . tentez de créer la vue CUST_VIEW dans la table CUSTOMERS d'Emi.Sélectionnez Create. .customers.Entrez la commande SQL. CREATE VIEW cust_view AS SELECT * FROM emi. . car en tant que SYSTEM. CONNECT system/manager@[service name] Connected.Sélectionnez Create dans le menu accessible par le bouton droit de la souris.Sélectionnez Schema > View.Utilisez la page General pour identifier le nom de la vue. Oracle9i Database Administration I D-101 . accordez à SYSTEM le privilège SELECT sur CUSTOMERS1.customers. Que se passe-t-il ? Utiliser SQL*Plus Worksheet . . Grant succeeded. CREATE VIEW cust_view AS SELECT * FROM emi. En tant que SYSTEM.Entrez la commande SQL. vous devez préciser le nom de service dans la chaîne de connexion. View created. GRANT select ON customers TO system.Sélectionnez Execute. .Lorsque vous vous connectez. tentez ensuite de créer la vue CUST_VIEW dans la table CUSTOMERS1 d'Emi. CONNECT system/manager@[service name] Connected.Exercice 17 (suite) 6 Sous l'ID utilisateur Emi. CONNECT emi/abcd12@[service name] Connected. ctl. . Oracle9i Database Administration I D-102 . Le texte du script est placé dans la fenêtre SQL*Plus Worksheet.sql pour créer la table DEPARTMENTS2. Utiliser SQL*Plus Worksheet .ctl. . observez les fichiers suivants : OEMsqlcase1.Sélectionnez Open. . OEMsqlcase2. exécutez le script lab19_01.ctl et lcase2.Sélectionnez File > Open dans le menu principal. b En tant que HR.lcase2.Exercice 19 : solutions OEM 1 a Observez les fichiers de données à utiliser dans le chargement afin de vous familiariser avec les formats de fichier de contrôle et de fichier de données. .sql.Sélectionnez le script lab19_01.Sélectionnez Execute. observez les fichiers suivants : lcase1. • • Si vous utilisez SQL*Plus.ctl et OEMsqlcase2.Mettez à jour la première ligne afin d'inclure le nom de service dans la chaîne de connexion.dat Si vous utilisez Oracle Enterprise Manager. ctl.Une boîte de dialogue indiquant que le travail a été correctement soumis s'affiche. Remarque : Il s'exécute en utilisant un fichier de contrôle contenant les données en entrée. Remarque : Un fichier journal est créé pour répertorier les problèmes rencontrés lors du chargement.Dans la page Control File. . . sélectionnez Schema > Table > HR > DEPARTMENTS2. . Remarque : Un fichier journal est créé pour énumérer les actions réalisées pour le chargement.Sélectionnez Next dans la page Load Wizard Introduction. Cliquez sur OK pour poursuivre.Sélectionnez Data Management > Load dans le menu accessible par le bouton droit de la souris. indiquez le chemin complet et le nom du fichier OEMsqlcase1.Dans la page Data File. . . . indiquez le nom du travail LoadOEMsqlcase1. Oracle9i Database Administration I D-103 . Parcourez les informations. sélectionnez le bouton radio Conventional Path. puis sélectionnez le bouton radio Submit the job now et cochez la case Override Preferred Credentials: Username: HR Password: HR Connect As: SYSDBA.ctl Les fichiers sont situés dans le répertoire LABS.Dans la page Job Information. (répertoire LABS fourni par le formateur) Remarque : Respectez la casse lorsque vous entrez le chemin et le nom. sélectionnez le bouton radio The data file is specified in the control file. . . sélectionnez le bouton radio Immediately pour exécuter le travail. Cliquez ensuite sur Finish. . Dans la fenêtre de droite.Dans la page Schedule. puis Next.Sélectionnez Jobs dans l'arborescence. Utilisez le fichier de contrôle suivant : • Dans SQL*Plus : lcase1. L'indication Completed précise que le travail s'est déroulé sans problème. sélectionnez l'onglet History. puis sélectionnez Next.ctl • Dans Oracle Enterprise Manager : OEMsqlcase1.Dans l'arborescence de la base de données. . puis cliquez sur OK pour poursuivre.Une page récapitulative de tous les détails du chargement s'affiche. Utiliser la console OEM . Cochez le champ Status de LOAD OEMsqlcase1. Une liste de travaux s'affiche.Exercice 19 : solutions OEM 2 a Exécutez SQL*Loader en mode de chargement des données par chemin conventionnel pour charger des données dans la table DEPARTMENTS2. puis Next.Dans la page Load Method. Entrez la commande SQL.------------------10 Administration 20 Marketing 30 Purchasing 40 Human Resources 50 Shipping 60 IT 70 Public Relations … 27 rows selected 3 Supprimez tous les enregistrements de la table DEPTARTMENTS2. Table truncated. DEPT_ID DEPT_NAME ------. . TRUNCATE TABLE departments2.log -. Utiliser SQL*Plus Worksheet .Sélectionnez Execute.Sélectionnez Execute. Oracle9i Database Administration I D-104 . SELECT * FROM DEPTARTMENTS2.Entrez la commande SQL. Utiliser la ligne de commande du système d'exploitation $ more lcase1.Exercice 19 : solutions OEM 2 b Utilisez la commande appropriée du système d'exploitation pour observer le fichier journal. .Note: Path used: Conventional c Interrogez la table DEPARTMENTS2 pour vérifier les données. Utiliser SQL*Plus Worksheet . puis sélectionnez le bouton radio Submit the job now et cochez la case Override Preferred Credentials: Username: HR Password: Connect As: SYSDBA. Parcourez les informations. sélectionnez le bouton radio Immediately pour exécuter travail. sur OK pour poursuivre. Next. sélectionnez l'onglet History. Utilisez les fichiers de contrôle suivants : • Dans SQL*Plus : lcase2. Une page récapitulative de tous les détails du chargement s'affiche. L'indication Completed précise que le travail s'est déroulé sans problème.dat.Sélectionnez Jobs dans l'arborescence. puis cliquez sur OK pour poursuivre. sélectionnez le bouton radio Direct Path. Remarque : Respectez la casse. puis sélectionnez Next. puis Next.ctl 4 • Dans Oracle Enterprise Manager : OEMsqlcase2.Exercice 19 : solutions OEM a Exécutez SQL*Loader en mode de chargement des données par chemin direct pour charger des données dans la table DEPARTMENTS2. Remarque : Un fichier journal pour énumérer les actions réalisées pour le chargement. Sélectionnez Next dans la page Load Wizard Introduction. puis sélectionnez Next. Dans la page Job Information. Dans la page Control File. Oracle9i Database Administration I D-105 . Dans la fenêtre de droite. Utiliser la console OEM . Remarque : Il s'exécute en utilisant un fichier de données en entrée qui charge les données. sélectionnez le bouton radio Provide the full and name on the database server machine. Cochez le champ Status de LOAD OEMsqlcase2. Une liste de travaux s'affiche.ctl (répertoire LABS fourni par le formateur). Dans la page Data File.Entrez le chemin d'accès du fichier de données OEMsqlcase2. Dans la page Load Method. le HR est créé Cliquez Dans la page Schedule. indiquez le chemin complet et le nom du fichier OEMsqlcase2. sélectionnez Schema > Table > HR DEPARTMENTS2. > path . Cliquez ensuite sur Finish.Dans l'arborescence de la base de données. droit Sélectionnez Data Management > Load dans le menu accessible par le bouton de la souris. Remarque : Les majuscules sont différenciées des minuscules. Une boîte de dialogue indiquant que le travail a été correctement soumis s'affiche. puis .ctl Les fichiers sont situés dans le répertoire LABS. indiquez le nom du travail LoadOEMsqlcase2. . Oracle9i Database Administration I D-106 . Utiliser la ligne de commande du système d'exploitation $ more lcase2.Entrez la commande SQL. Utiliser SQL*Plus Worksheet .Sélectionnez Execute.------------------10 Administration 20 Marketing 30 Purchasing 40 Human Resources 50 Shipping 60 IT 70 Public Relations 80 Sales 90 Executive … 27 rows selected.Note: Path used: Direct c Interrogez la table DEPARTMENTS2 pour vérifier les données.log -.Exercice 19 4 b Utilisez la commande appropriée du système d'exploitation pour observer le fichier journal. DEPT_ID DEPT_NAME ------. SELECT * FROM DEPARTMENTS2. SELECT * FROM employees2. Videz la table. COMMIT.Exercice 19 5 a En tant qu'utilisateur HR. Utiliser SQL*Plus Worksheet . Table truncated. CONNECT hr/hr@[service name] CREATE TABLE employees2 AS SELECT * FROM employees. INSERT /*+ append */ INTO employees2 NOLOGGING SELECT * from employees. créez une table EMPLOYEES2 à partir de la table EMPLOYEES. Effectuez ensuite une sélection dans la table EMPLOYEES2 pour vérifier qu'elle ne contient aucune donnée. no rows selected b Effectuez un chargement par chemin direct de la table EMPLOYEES vers la table EMPLOYEES2 et interrogez cette dernière pour vérifier le chargement. 107 rows created. SELECT employee_id. TRUNCATE TABLE employees2. vous devez préciser le nom de service dans la chaîne de connexion. last_name FROM employees2.------------------------- Oracle9i Database Administration I D-107 .Lorsque vous vous connectez. . .Sélectionnez Execute.Entrez la commande SQL. John Joshua Trenna Curtis Seo Patel Rajs Davies LAST_NAME ---------.Entrez la commande SQL. . first_name. Table created.----------------. EMPLOYEE_ID FIRST_NAME 139 140 141 142 … 107 rows selected. Utiliser SQL*Plus Worksheet .Sélectionnez Execute. first_name.2) */ INTO employees2 NOLOGGING SELECT * FROM employees. no rows selected b Restaurez les données à l'aide d'un chargement par chemin direct en parallèle depuis la table EMPLOYEES. EMPLOYEE_ID FIRST_NAME 139 140 141 142 … 107 rows selected.----------------. Définissez un degré de parallélisme de deux. SELECT employee_id. TRUHCATE TABLE employees2.Exercice 19 6 a Videz à nouveau la table EMPLOYEES2.------------------------- Oracle9i Database Administration I D-108 . Session altered INSERT /*+ parallel(employees2. . SELECT * FROM employees2. Vérifiez les données. Utiliser SQL*Plus Worksheet . Commit complete. last_name FROM employees2. Effectuez ensuite une sélection dans la table EMPLOYEES2 pour vérifier qu'elle ne contient aucune donnée. .Entrez la commande SQL. 107 rows created. Table truncated.Entrez la commande SQL.Sélectionnez Execute. ALTER SESSION ENABLE PARALLEL DML.Sélectionnez Execute. Utiliser SQL*Plus Worksheet . John Joshua Trenna Curtis Seo Patel Rajs Davies LAST_NAME ---------. COMMIT. SELECT parameter. SELECT value FROM v$nls_valid_values WHERE parameter = 'CHARACTERSET‘ ORDER BY value. . VALUE ------------------AL16UTF16 AL24UTFFSS AL32UTF8 AR8ADOS710 AR8ADOS710T AR8ADOS720 AR8ADOS720T . . . de CONNECT sys/oracle@[service name] AS SYSDBA Connected. vous devez préciser le nom de service dans la chaîne connexion.Entrez la commande SQL.Entrez la commande SQL. Oracle9i Database Administration I D-109 .Lorsque vous vous connectez.Exercice 20 1 Vérifiez le jeu de caractères de la base de données et le jeu de caractères nationaux Utiliser SQL*Plus Worksheet . PARAMETER ----------------------NLS_CHARACTERSET NLS_NCHAR_CHARACTERSET VALUE -----------WE8ISO8859P1 AL16UTF16 2 Quelles sont les valeurs valides pour le jeu de caractères de la base de données ? Utiliser SQL*Plus Worksheet . .Sélectionnez Execute.Sélectionnez Execute. . value FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%'. Lorsque vous vous connectez.Exercice 20 (suite) les 3 Assurez-vous que toutes les dates affichées dans la session utilisent quatre chiffres pour années. Session modifiée. Session altered. Modifiez NLS_LANGUAGE en FRENCH. ALTER SESSION SET nls_language = FRENCH. sélectionnez sysdate.Sélectionnez Execute. vous devez préciser le nom de service dans la chaîne connexion. ALTER SESSION SET nls_date_format = 'DD-MON-YYYY'. . SELECT sysdate FROM dual. SYSDATE ----------07-OCT-2001 de Oracle9i Database Administration I D-110 . . Dans DUAL.Entrez la commande SQL. Utiliser SQL*Plus Worksheet . <Course title here> Sommaire Préface I Introduction Objectifs du cours I-2 Oracle9i Enterprise Edition I-3 Tâches de l'administrateur de base de données I-4 1 Composants de l'architecture Oracle Objectifs 1-2 Présentation des principaux composants 1-3 Serveur Oracle 1-5 Instance Oracle 1-6 Etablir une connexion et créer une session 1-7 Base de données Oracle 1-9 Structure physique 1-10 Structure mémoire 1-11 Mémoire SGA 1-12 Zone de mémoire partagée 1-15 Cache "library" 1-16 Cache du dictionnaire de données 1-17 Cache de tampons de la base de données 1-18 Tampon de journalisation 1-21 Zone de mémoire LARGE POOL 1-22 Zone de mémoire Java 1-24 Mémoire PGA 1-25 Structure de processus 1-28 Processus utilisateur 1-29 Processus serveur 1-30 Processus d'arrière-plan 1-31 Processus database writer (DBWn) 1-32 Processus LGWR (Log Writer) 1-33 Processus SMON (System Monitor) 1-34 Processus PMON (Process Monitor) 1-35 Processus CKPT (Checkpoint) 1-36 Processus ARCn (processus d'archivage) 1-38 Structure logique 1-40 Traiter les instructions SQL 1-43 Synthèse 1-45 Présentation de l'exercice 1 1-46 iii <Lesson title here> 1-1 . ora 3-9 Créer un fichier SPFILE 3-10 Exemple de fichier SPFILE 3-13 Fonctionnement de la commande STARTUP 3-14 Modifier des paramètres du fichier SPFILE 3-15 Démarrer une base de données en mode NOMOUNT 3-19 Démarrer une base de données en mode MOUNT 3-20 Démarrer une base de données en mode OPEN 3-21 Commande STARTUP 3-22 Commande ALTER DATABASE 3-25 Ouvrir une base de données en mode d'accès restreint 3-26 Ouvrir une base de données en mode lecture seule 3-29 Arrêter la base de données 3-31 Options d'arrêt 3-32 Surveiller une instance à l'aide de fichiers de diagnostic 3-36 Fichier d'alertes 3-37 Fichiers trace de processus en arrière-plan 3-39 Fichier trace utilisateur 3-40 3 iv <Lesson title here> 1-2 .ora 3-6 Créer un fichier PFILE 3-7 Exemple de fichier PFILE 3-8 Fichier SPFILE spfileSID.<Course title here> 2 Initiation à Oracle Server Objectifs 2-2 Outils d'administration de base de données 2-3 Oracle Universal Installer 2-4 Démarrer Universal Installer 2-5 Installation non-interactive à l'aide de fichiers de réponses 2-6 Oracle Database Configuration Assistant 2-9 Administrateurs de base de données 2-10 SQL*Plus 2-11 Oracle Enterprise Manager 2-12 Architecture d'Oracle Enterprise Manager 2-13 Console 2-15 Synthèse 2-17 Présentation de l'exercice 2 2-18 Gérer une instance Oracle Objectifs 3-2 Fichiers de paramètres d'initialisation 3-3 Fichier PFILE initSID. . 4-28 Synthèse 4-29 Présentation de l'exercice 4 4-30 4-7 5 Utiliser les vues du dictionnaire de données et les vues dynamiques des performances Objectifs 5-2 Objets de base de données intégrés 5-3 Dictionnaire de données 5-4 Tables de base et vues du dictionnaire de données 5-5 Créer des vues du dictionnaire de données 5-6 Contenu du dictionnaire de données 5-7 Utilisation du dictionnaire de données 5-8 Catégories de vues du dictionnaire de données 5-9 Exemples de vues du dictionnaire de données 5-11 Tables dynamiques des performances 5-12 Exemples de tables dynamiques des performances 5-13 Conventions d'appellation des scripts d'administration 5-15 Synthèse 5-46 Présentation de l'exercice 5 5-17 v <Lesson title here> 1-3 ..<Course title here> Activer ou désactiver la fonction de trace utilisateur 3-41 Synthèse 3-43 Présentation de l'exercice 3 3-44 4 Créer une base de données Objectifs 4-2 Gérer et organiser une base de données 4-3 Architecture OFA 4-4 Logiciel Oracle et emplacements des fichiers 4-5 Conditions préalables à la création d'une base de données 4-6 Méthodes d'authentification utilisées par les administrateurs de base de données Utiliser l'authentification par le fichier de mots de passe 4-8 Créer une base de données 4-10 Environnement du système d'exploitation 4-11 Database Configuration Assistant 4-12 Créer une base de données à l'aide de Database Configuration Assistant 4-13 Créer manuellement une base de données 4-17 Créer la base de données 4-20 Créer une base de données à l'aide d'Oracle-Managed Files 4-23 Résoudre les problèmes 4-27 Une fois la base de données créée. <Course title here> 6 Gérer le fichier de contrôle Objectifs 6-2 Fichier de contrôle 6-3 Contenu du fichier de contrôle 6-5 Multiplexer le fichier de contrôle 6-7 Multiplexer le fichier de contrôle lorsqu'un fichier SPFILE est utilisé 6-8 Multiplexer le fichier de contrôle lorsqu'un fichier PFILE est utilisé 6-9 Gérer les fichiers de contrôle à l'aide d'OMF 6-10 Obtenir des informations sur les fichiers de contrôle 6-11 Synthèse 6-14 Présentation de l'exercice 6 6-15 Gérer les fichiers de journalisation Objectifs 7-2 Utiliser des fichiers de journalisation 7-3 Structure des fichiers de journalisation 7-4 Mode de fonctionnement des fichiers de journalisation 7-6 Imposer des changements de fichier de journalisation et des points de reprise 7-8 Ajouter des groupes de fichiers de journalisation en ligne 7-9 Ajouter des membres à des fichiers de journalisation en ligne 7-10 Supprimer des groupes de fichiers de journalisation en ligne 7-12 Supprimer des membres de fichiers de journalisation en ligne 7-13 Transférer ou renommer des fichiers de journalisation en ligne 7-15 Configuration des fichiers de journalisation en ligne 7-17 Gérer des fichiers de journalisation en ligne à l'aide d'OMF 7-19 Obtenir des informations sur les groupes et les membres 7-20 Fichiers de journalisation archivés 7-22 Synthèse 7-26 Présentation de l'exercice 7 7-27 Gérer les tablespaces et les fichiers de données Objectifs 8-2 Tablespaces et fichiers de données 8-3 Types de tablespace 8-4 Créer des tablespaces 8-5 Gestion de l'espace dans les tablespaces 8-9 Tablespaces gérés localement 8-10 Tablespaces gérés au moyen du dictionnaire 8-12 Tablespace d'annulation 8-13 Tablespaces TEMPORARY 8-14 7 8 vi <Lesson title here> 1-4 . <Course title here> Tablespace TEMPORARY par défaut 8-17 Créer un tablespace TEMPORARY par défaut 8-18 Restrictions relatives au tablespace TEMPORARY par défaut 8-21 Tablespaces accessibles en lecture seule 8-22 Mettre un tablespace hors ligne 8-25 Modifier les paramètres de stockage 8-28 Redimensionner un tablespace 8-30 Activer l'extension automatique des fichiers de données 8-31 Redimensionner manuellement un fichier de données 8-34 Ajouter des fichiers de données à un tablespace 8-35 Méthodes de déplacement des fichiers de données 8-37 Supprimer des tablespaces 8-40 Gérer des tablespaces à l'aide d'OMF 8-43 Obtenir des informations sur les tablespaces 8-45 Synthèse 8-46 Présentation de l'exercice 8 8-47 9 Structure de stockage et relations Objectifs 9-2 Structure de stockage et relations 9-3 Types de segment 9-4 Priorité des clauses de stockage 9-8 Allocation et libération d'extents 9-9 Extents utilisés et extents libres 9-10 Bloc de base de données 9-11 Support de plusieurs tailles de bloc 9-12 Taille de bloc standard 9-13 Tailles de bloc non standard 9-14 Créer des tablespaces de taille de bloc non standard 9-16 Règles relatives à l'utilisation de plusieurs tailles de bloc 9-18 Contenu d'un bloc de base de données 9-19 Paramètres d'utilisation de l'espace de bloc 9-20 Gestion des blocs de données 9-22 Gestion automatique de l'espace de segment 9-23 Configurer la gestion automatique de l'espace de segment 9-25 Gestion manuelle des blocs de données 9-26 Utilisation de l'espace de bloc 9-27 Obtenir des informations sur le stockage 9-29 Synthèse 9-32 Présentation de l'exercice 9 9-33 vii <Lesson title here> 1-5 . <Course title here> 10 Gérer les données d'annulation Objectifs 10-2 Gérer les données d'annulation 10-3 Segment d'annulation 10-4 Fonction des segments d'annulation 10-5 Cohérence en lecture 10-6 Types de segment d'annulation 10-7 Concepts de la gestion automatique des annulations 10-9 Configuration de la gestion automatique des annulations 10-10 Paramètres d'initialisation de la gestion automatique des annulations 10-11 Gestion automatique des annulations : tablespace d'annulation (UNDO) 10-12 Gestion automatique des annulations : modifier un tablespace d'annulation (UNDO) 10-14 Gestion automatique des annulations : changer de tablespace d'annulation (UNDO) 10-16 Gestion automatique des annulations : supprimer un tablespace d'annulation (UNDO) 10-18 Autres paramètres de gestion automatique des annulations 10-21 Statistiques relatives aux données d'annulation 10-23 Gestion automatique des annulations : dimensionner un tablespace d'annulation 10-24 Gestion automatique des annulations : quota d'annulation 10-26 Obtenir des informations sur les segments d'annulation 10-27 Synthèse 10-29 Présentation de l'exercice 10 10-30 11 Gérer les tables Objectifs 11-2 Stocker des données utilisateur 11-3 Types de données internes Oracle 11-6 Format de ROWID 11-10 Structure d'une ligne 11-12 Créer une table 11-13 Règles de création d'une table 11-17 Créer des tables temporaires 11-18 Définir PCTFREE et PCTUSED 11-19 Migration et chaînage de lignes 11-20 Modifier les paramètres d'utilisation de blocs et de stockage 11-21 Allouer manuellement des extents 11-24 Réorganisation d'une table non partitionnée 11-25 Vider une table 11-26 Supprimer une table 11-27 Supprimer une colonne 11-29 Utiliser l'option UNUSED 11-31 viii <Lesson title here> 1-6 . <Course title here> Obtenir des informations sur les tables 11-33 Synthèse 11-35 Présentation de l'exercice 11 11-36 12 Gérer les index Objectifs 12-2 Classification des index 12-3 Index B-Tree 12-5 Index bitmap 12-7 Comparer les index B-Tree et les index bitmap 12-9 Créer des index B-Tree normaux 12-10 Règles de création des index 12-13 Créer des index bitmap 12-15 Modifier les paramètres de stockage des index 12-18 Allouer et libérer de l'espace d'indexation 12-20 Reconstruire un index 12-21 Reconstruire un index en ligne 12-23 Fusionner les index 12-24 Vérifier les index et leur validité 12-25 Supprimer des index 12-27 Identifier les index non utilisés 12-29 Obtenir des informations sur les index 12-30 Synthèse 12-31 Présentation de l'exercice 12 12-32 13 Gérer l'intégrité des données Objectifs 13-2 Intégrité des données 13-3 Types de contrainte 13-5 Etats des contraintes 13-6 Vérification des contraintes 13-8 Définir des contraintes immédiates ou différées 13-9 Application des contraintes UNIQUE et de clé primaire 13-10 Remarques sur la clé étrangère 13-11 Définir des contraintes lors de la création d'une table 13-13 Instructions de définition des contraintes 13-17 Activer les contraintes 13-18 Utiliser la table EXCEPTIONS 13-23 Obtenir des informations sur les contraintes 13-26 Synthèse 13-29 Présentation de l'exercice 13 13-30 ix <Lesson title here> 1-7 . <Course title here> 14 Gérer la sécurité des mots de passe et les ressources Objectifs 14-2 Profils 14-3 Gestion des mots de passe 14-5 Activer la gestion des mots de passe 14-6 Verrouillage d'un compte 14-7 Durée de vie et expiration des mots de passe 14-8 Historique des mots de passe 14-9 Vérifier les mots de passe 14-10 Fonction de mot de passe fournie par l'utilisateur 14-11 Fonction de vérification de mot de passe VERIFY_FUNCTION 14-12 Créer un profil : paramètres de mot de passe 14-13 Modifier un profil : paramètres de mot de passe 14-17 Supprimer un profil : paramètres de mot de passe 14-19 Gestion des ressources 14-21 Activer les limites relatives aux ressources 14-22 Définir des limites relatives aux ressources au niveau session 14-23 Définir des limites relatives aux ressources au niveau appel 14-24 Créer un profil : limites relatives aux ressources 14-25 Gérer les ressources à l'aide de Database Resource Manager 14-28 Directives du plan d'allocation de ressources 14-31 Obtenir des informations sur les limites relatives aux mots de passe et aux ressources 14-33 Synthèse 14-35 Présentation de l'exercice 14 14-36 15 Gérer les utilisateurs Objectifs 15-2 Utilisateurs et sécurité 15-3 Schéma de base de données 15-5 Liste de contrôle pour la création d'utilisateurs 15-6 Créer un utilisateur : authentification par la base de données 15-7 Créer un utilisateur : authentification par le système d'exploitation 15-10 Modifier les quotas de tablespace d'un utilisateur 15-12 Supprimer un utilisateur 15-14 Obtenir des informations sur les utilisateurs 15-16 Synthèse 15-17 Présentation de l'exercice 15 15-18 x <Lesson title here> 1-8 . <Course title here> 16 Gérer les privilèges Objectifs 16-2 Gérer les privilèges 16-3 Privilèges système 16-4 Privilèges système : exemples 16-5 Accorder des privilèges système 16-6 Privilèges SYSDBA et SYSOPER 16-8 Restrictions relatives aux privilèges système 16-9 Révoquer des privilèges système 16-10 Révoquer des privilèges système accordés avec l'option ADMIN OPTION 16-12 Privilèges objet 16-13 Accorder des privilèges objet 16-14 Révoquer des privilèges objet 16-17 Révoquer les privilèges objet accordés avec l'option WITH GRANT OPTION 16-20 Obtenir des informations sur les privilèges 16-21 Synthèse 16-22 Présentation de l'exercice 16 16-23 17 Gérer les rôles Objectifs 17-2 Rôles 17-3 Avantages des rôles 17-4 Créer des rôles 17-5 Rôles prédéfinis 17-7 Modifier des rôles 17-8 Accorder des rôles 17-10 Etablir des rôles par défaut 17-13 Rôles d'application 17-15 Activer et désactiver les rôles 17-16 Révoquer des rôles accordés à des utilisateurs 17-19 Supprimer des rôles 17-21 Instructions relatives à la création de rôles 17-23 Règles d'utilisation des mots de passe et des rôles par défaut 17-24 Obtenir des informations sur les rôles 17-25 Synthèse 17-26 Présentation de l'exercice 17 17-27 18 Fonction d'audit Objectifs 18-2 Fonction d'audit 18-3 Instructions relatives à l'audit 18-4 xi <Lesson title here> 1-9 . <Course title here> Catégories d'audit 18-6 Audit d'une base de données 18-8 Options d'audit 18-10 Obtenir des informations sur l'audit 18-12 Obtenir des informations sur les enregistrements d'audit 18-13 Synthèse 18-14 Présentation de l'exercice 18 18-15 19 Charger des données dans une base Objectifs 19-2 Méthodes de chargement des données 19-3 Chargement des données par chemin direct 19-4 Chargement des données par chemin direct en série 19-6 Chargement des données par chemin direct en parallèle 19-7 SQL*Loader 19-9 Utiliser SQL*Loader 19-11 Fichier de contrôle de SQL*Loader 19-13 Remarques sur la syntaxe du fichier de contrôle 19-17 Données et fichiers de données en entrée 19-18 Enregistrements logiques 19-22 Méthodes de chargement des données 19-24 Comparer les chargements de données par chemin direct et par chemin conventionnel 19-27 Chargement des données par chemin direct en parallèle 19-29 Conversion des données 19-31 Enregistrements de rebut ou refusés 19-32 Contenu des fichiers journaux 19-36 Règles d'utilisation de SQL*Loader 19-38 Synthèse 19-39 Présentation de l'exercice 19 19-40 20 Utiliser la prise en charge de la globalisation Objectifs 20-2 Caractéristiques de la prise en charge de la globalisation 20-3 Encodages 20-5 Jeux de caractères de la base de données et jeux de caractères nationaux 20-8 Règles de sélection d'un jeu de caractères de la base Oracle 20-9 Règles de sélection d'un jeu de caractères nationaux Oracle 20-11 Choisir une solution Unicode : base de données Unicode 20-12 Choisir une solution Unicode : type de données Unicode 20-13 xii <Lesson title here> 1-10 . <Course title here> Définir l'environnement dépendant de la langue 20-14 Définir le comportement dépendant de la langue pour le serveur 20-15 Valeurs par défaut dépendantes de la langue et du territoire 20-16 Définir l'environnement dépendant de la langue pour la session 20-18 Jeux de caractères dans l'architecture client-serveur 20-19 Définir l'environnement dépendant de la langue pour la session 20-21 Tri linguistique 20-22 Tri NLS 20-23 Utiliser des paramètres NLS dans des fonctions SQL 20-26 Support d'indexation linguistique 20-30 Import et chargement de données avec le support NLS 20-31 Obtenir des informations sur les jeux de caractères 20-32 Obtenir des informations sur les paramètres NLS 20-33 Utiliser des paramètres NLS dans des fonctions SQL 20-37 Synthèse 20-38 Présentation de l'exercice 20 20-39 A Créer une base de données Oracle9i dans un environnement UNIX B Gérer manuellement les données d'annulation (segments d'annulation) C Solutions des exercices pour SQL*Plus D Solutions des exercices pour Oracle Enterprise Manager xiii <Lesson title here> 1-11 .
Copyright © 2024 DOKUMEN.SITE Inc.