Systèmes de Gestion Des Bases de Données Dr Mohamed Salah
Transcription
Systèmes de Gestion Des Bases de Données Dr Mohamed Salah
Systèmes de Gestion des Bases de Données : ORACLE Institut Supérieur d’Education et de Formation Continue Systèmes de Gestion Des Bases de Données Dr Mohamed Salah GOUIDER Dr Mohamed Salah GOUIDER Page 1 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Table des matières 1. COMPOSANTS DE L ARCHITECTURE ORACLE 1.1. INTRODUCTION AU SERVEUR ORACLE 1.1.1. Tâches de l’administrateur de base de données 1.2. CONNEXION A UN SERVEUR ORACLE 1.2.1. Processus utilisateur 1.2.2. Processus serveur 1.3. INSTANCE ORACLE ET BASE DE DONN ES 1.3.1. System Global Area (SGA) 1.3.2. SGA dynamique. 1.3.3. Processus d'arrière plan 1.3.4. Fichiers de la base de données 1.3.5. Fichiers relatant à la Base de données 1.4. TRAITEMENT DE REQUETES 1.4.1. Etapes lors du traitement d'une requête 1.4.2. Pool partagé (Shared Pool) 1.4.3. Buffer de Cache de la base de données (Database Buffer Cache) 1.4.4. Buffer de Redo Log 1.4.5. Program Global Area (PGA) 1.5. TRAITEMENT DE REQU TES DML 1.5.1. Phases d'exécution d'un requête DML 1.5.2. Segments de Rollback 1.5.3. Database Writer (DBWn) 1.5.4. Log Writer (LGWR) 1.6. TRAITEMENT D’UN COMMIT 1.6.1. Numéro de changement du système (SCN) 1.6.2. Traitement d'un COMMIT : Etapes 2. OUTILS D'ADMINISTRATION 2.1. UTILITAIRES ADMINISTRATIFS 2.1.1. Utilitaires d'administration de base de données 2.1.2. Optimal Flexible Architecture (OFA) 2.2. ORACLE ENTREPRISE MANAGER (OEM) 2.2.1. Architecture d'OEM : Vue d'ensemble 2.2.2. Composants de la console OEM. 2.2.3. Services communs d'OEM. 2.2.4. Configurer OEM 2.3. PACKAGE D'ADMINISTRATION. 2.3.1. Pack de management DBA 2.3.2. Packs de management supplémentaires Dr Mohamed Salah GOUIDER Page 2 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 3. GERER UNE INSTANCE ORACLE 3.1. AUTHENTIFICATION ET PRIVILEGES 3.2. FICHIERS DE PARAMETRES 3.2.1. Paramètres présents dans le fichier de paramètre 3.2.2. Le PFILE (initSID.ora) 3.2.3. Le SPFILE (spfileSID.ora) 3.2.4. Règles pour les valeurs de paramètre 3.2.5. Paramètres essentiels 3.2.6. Paramètres communément modifiés 3.3. DEMARRAGE ET ARRET D'UNE INSTANCE. 3.3.1. Etapes de démarrage d’une instance 3.3.2.. Changer la disponibilité de la Base de données 3.3.3. Etapes d'arrêt d'une instance 3.3.4. Modes d'arrêts 3.4. VUE DYNAMIQUE DES PERFORMANCES 3.4.1. Caractéristiques des vues dynamiques de performance 3.4.2. Descriptions des vues dynamiques de performance 4. PROCEDURE DE CREATION D UNE BASE DE DONN ES 4.1. PREREQUIS NECESSAIRES A LA CREATION 4.1.1. Gérer et sauvegarder les fichiers d’une base de données 4.1.2. Créer une base de données 4.2. ENVIRONNEMENT DU SYSTEME D’EXPLOITATION 4.2.1. Création de fichiers de mots de passe 4.3. CREER UNE BASE DE DONNEES 4.3.1. Assistant de configuration de base de données 4.3.2. Les options de la commande CREATE DATABASE 4.3.3. Créer une base de données en mode commande. 4.3.4. Les conditions d'erreur lors de la création d'une base de données 4.3.5. Le contenu d'une base de données après sa création 5. UTILISATION ET CONTENU DU DICTIONNAIRE DE DONNEES 5.1. STRUCTURE DU DICTIONNAIRE DE DONN ES 5.1.1. Présentation du dictionnaire de données 5.1.2. Création et catégories des vues du dictionnaire de données 5.1.3. Informations contenues dans le dictionnaire de données. 5.2. SCRIPTS DU DICTIONNAIRE DE DONNREES 5.2.1. Création de fonctions PL/SQL 5.2.2. Scripts administratifs Dr Mohamed Salah GOUIDER Page 3 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 6. GESTION DES FICHIERS DE CONTROLE ET DE REDO LOG 6.1. FICHIER DE CONTROLE 6.1.1. Contenu des fichiers de contrôle 6.1.2. Multiplexage des fichiers de contrôle 6.1.3. Récupérer les informations des fichiers de contrôle 6.2. LES FICHIERS DE REDO LOG 6.2.1. Utiliser les fichiers de redo log 6.2.2. Structure des fichiers de redo log 6.2.3. Paramètres des fichiers de redo log. 6.3. GERER LES GROUPES DE REDO 6.3.1. Fonctionnement des fichiers de redo log. 6.3.2. Forcer un basculement de fichiers log et un point de synchronisation 6.3.3. Ajout de groupe de fichiers redo log online 6.3.4. Ajout des membres redo log online 6.3.5. Relocalisation des fichiers redo log online 6.3.6. Suppression de groupes de fichiers redo log online 6.3.7. Suppression des membres redo log online 6.3.8. Réinitialisation des fichiers redo log online 6.4. PLANIFICATION DES FICHIERS REDO LOG ONLINE 3.4.1. Nombre de fichiers redo log online 6.4.2. Emplacement des fichiers redo log online 6.4.3. Dimensionnement des fichiers redo log online 6.4.4. Gérer les redo log online with OMF 6.4.5. Obtenir des informations sur les groupes 6.4.6. Archivage de fichiers de redo log 7. GERER LES TABLESPACES ET LES FICHIERS DE DONNEES 7.1. ARCHITECTURE D'UNE BASE DE DONNEES 7.1.1. Vue d'ensemble de la structure d'une base de données 7.1.2. Relations. Création de base de données 7.1.3. Caractéristiques d'un tablespace 7.1.4. Utilisations d'un tablespace 7.1.5. Caractéristiques d'un fichier de données 7.2. CREER DES TABLESPACES 7.2.1. Types de tablespaces 7.2.2. Création d’un tablespace 7.2.3. Gestion de l’espace dans les tablespaces 7.2.4. Locally Managed tablespaces 7.2.5. Dictionary Managed Tablespaces 7.2.6. Paramètres de stockage 7.2.7. Les Undo Tablespaces 7.3. TABLESPACE TEMPORAIRE Dr Mohamed Salah GOUIDER Page 4 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 7.3.1. Tablespace temporaire 7.3.2. Tablespace temporaire par défaut 7.3.3. Restrictions sur les Tablespace temporaire par défaut 7.4. MANIPULATION DE TABLESPACE. 7.4.1.Offline Status 7.4.2. Tablespace en lecture seul 7.4.3. Tablespaces en lecture seul sur des supports en lecture seul 7.4.4. Supprimer un Tablespace 7.4.5. Conséquences de la suppression de tablespaces 7.5. FICHIERS DE MANIPULATION DES DONNNES 7.5.1. Mettre en place l’extension automatique des fichiers de données 7.5.2. Changer la taille des fichiers de données manuellement 7.5.3. Ajouter un fichier de données à un Tablespace 7.5.4. Déplacer un fichier de données : ALTER TABLESPACE 7.6. AUTRES OPTIONS SUR LES TABLESPACES 7.6.1. Configurer OMF pour la création de Tablespace 7.6.2. Créer des Tablespaces avec OMF 7.6.3. Récupérer des informations sur les Tablespaces. Dr Mohamed Salah GOUIDER Page 5 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 1. Composants de l architecture Oracle 1.1. Introduction au serveur Oracle Tâches de l administrateur de base de données L'administrateur de base de données (appelé DBA) est responsable du contrôle et de la configuration du système et des utilisateurs. De nombreuses taches vont être effectuées par celui-ci : • Installer le serveur Oracle et les outils applicatifs, créer les bases de données. • Assurer la maintenance et la disponibilité de la base de données. • Créer la structure logique de stockage, c'est à dire les tablespaces, les tables, les vues et les indexes. • Manager la structure physique de stockage, comprenant les fichiers de données, les fichiers de contrôle et les fichiers de redo log. • Allouer et prévoir l'espace disque système de stockage nécessaire aux spécifications de la base de données. • Maintenir, contrôler et monitorer les accès des utilisateurs. • Assurer la sécurité du système. • Monitorer les performances de la base de données. • Créer un plan de sauvegarde et de récupération. 1.2. Connexion a un serveur Oracle Pour travailler et consulter les données, les utilisateurs doivent tout d'abord se connecter à un Serveur Oracle. Il existe trois types de connexions grâce auxquelles un utilisateur peut accéder à un Serveur Oracle : Connexion locale : Selon cette méthode, un utilisateur est directement connecté sur la machine faisant office de Serveur Oracle. Connexion Deux Tiers : Ce type de connexion est couramment nommé "Connexion Client Serveur", un utilisateur se connecte à partir d'une machine directement connectée à un Serveur Oracle. Par exemple, lorsque qu'un utilisateur lance un Oracle Forms (Front End pour consulter des bases de données Oracle à travers des formulaires.) sur un poste client sous Windows pour accéder à un Serveur Oracle résident sur une machine Windows NT Serveur. Connexion Multi Tiers : Dans une architecture multi tiers, la machine de l'utilisateur se connecte à un Serveur applicatif (Par exemple un Serveur Web) qui Dr Mohamed Salah GOUIDER Page 6 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE lui même va se connecter au serveur Oracle pour récupérer les données issues de la base de données. Lorsque qu'un utilisateur est connecté à une machine sur laquelle réside un Serveur Oracle, deux process sont invoqués : Le process utilisateur et le process serveur. Un process utilisateur est créé lorsque tout outil client allant communiquer avec le serveur Oracle est lancé (Un outil d'administration, une application, SQL*Plus, une application Oracle Forms). Un process utilisateur est un mécanisme qui va exécuter le code d'une application ou d'un outil Oracle. Un process serveur est créé lorsque un utilisateur va se loguer sur le serveur en spécifiant un nom d'utilisateur, un mot de passe et un nom de base de données. Le process Serveur est créé sur le serveur Oracle. Le process serveur va permettre l'interaction entre le process utilisateur et le serveur Oracle en récupérant les requêtes et en les exécutant sur les serveurs Oracle. Le lien entre le process utilisateur et le process serveur est appelé une connexion. • Si l'utilisateur se connecte localement sur le serveur, le chemin de communication est établi via un mécanisme de communication inter process. • Si l'utilisateur se connecte via une machine cliente, un logiciel réseau est utilisé. Une connexion spécifique entre un utilisateur et un serveur Oracle est appelé une Session. La session démarre lorsque la connexion de l'utilisateur est validée par le serveur Oracle et se termine lorsqu'il se déconnecte ou lorsqu'une fin de connexion prématurée se produit. De nombreuses sessions concurrentes d'un même utilisateur ou de plusieurs peuvent s'exécuter sur le serveur Oracle. Dr Mohamed Salah GOUIDER Page 7 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 1.2.1. Processus utilisateur Pour faire fonctionner un outil application tel que SQL*Plus ou des applicatifs Oracle Forms, Oracle crée un process utilisateur (Client). L'UPI (User Program Interface) est un mécanisme standardisé utilisé par un process utilisateur pour communiquer avec un process serveur. C'est l'UPI qui génère l'appel au serveur Oracle. 1.2.2. Processus serveur Le process serveur a les caractéristiques suivantes : Il traite les requêtes du process utilisateur et retourne le statut et le résultat de cette requête. Le DBA à la responsabilité de l'administration de ces process serveurs. Chaque process serveur utilise une zone de mémoire appelée la PGA (Program Global Area). Cette zone est créée au démarrage du process serveur. Le process serveur inclus l'OPI (Oracle Program Interface) qui est utilisé pour communiquer avec la base de données Oracle. 1.3. Instance Oracle et Base de données 1.3.1. System Global Area (SGA) Un serveur Oracle est constitué d'une instance Oracle et d'une base de données Oracle. L'instance Oracle comprend une région de la mémoire appelée La SGA (System Global Area), ainsi que les processus d’arrière plan utilisé pour gérer la base de données. La SGA contient des données et des informations de contrôle sur le serveur Oracle. La mémoire est allouée à la SGA lors du démarrage d'une instance et dés allouée lors de son arrêt. Cette zone mémoire est partagée et réside dans la mémoire vive qui n'est pas swappée ni paginée pour des raisons de performances. La SGA se compose de plusieurs structures de groupe de mémoire, les trois principales étant : Le pool partagé (Shared Pool) : Contient les requêtes SQL le plus récemment exécuté et l'information du dictionnaire de données la plus récemment utilisée. Le buffer de cache de la base de données (Database Buffer Cache) : Cette structure stocke les données utilisatrices les plus récentes tirées des tables. Le buffer de redo Log (Redo Log Buffer) : Ce buffer est utilisé pour enregistrer les modifications effectuées sur la base de données. On trouve aussi dans la SGA : Le pool large (Large Pool) : Le large pool est une zone mémoire optionnel de la SGA configurée uniquement dans un environnement serveur partagé. Quand un utilisateur se connecte à un serveur partagé, Oracle a besoin d’allouer de l’espace supplémentaire dans les shared pool pour stocker les informations de connexions entre les différents process. Le pool large permet donc d’alléger certaines zones Dr Mohamed Salah GOUIDER Page 8 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE mémoires de la SGA. En effet, il n’a pas besoin de diminuer la mémoire allouée aux arbres de parcours au profit des informations de sessions, d’entrées/sortie, de sauvegarde et des processus de récupérations. Le gain de performance vient de la réduction de la charge occasionnée par l'augmentation ou la réduction de la mémoire cache partagée. Recover Manager (RMAN), utilise le large pool pour restaurer les données en cas de défaillance. Le pool Java (Java Pool) : Sa taille par défaut est de 24Mo et doit être utilisé en cas d’utilisation du langage Java. 1.3.2. SGA dynamique Une SGA dynamique implémente une infrastructure qui permet de modifier la taille dynamiquement de la SGA sans éteindre l’instance. La taille de la SGA va augmentée par l’intermédiaire du data buffer cache, du shared pool, et du pool large sans jamais dépasser le SGA_MAX_SIZE. Les Paramètres qui affectent la taille de la SGA sont : DB_CACHE_SIZE : La taille de cache des blocs standard. LOG_BUFFER : Le nombre de bit pour le redo log buffer cache. SHARED_POOL_SIZE : La taille en bit du shared pool. LARGE_POOL_SIZE : La taille du large pool, par défaut 0. Dr Mohamed Salah GOUIDER Page 9 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 1.3.3. Processus d'arrière plan Une instance Oracle comprend, en plus de la SGA, un ensemble de process d'arrière plan qui sont au niveau du système d'exploitation. Oracle 9i comprend cinq process d'arrière plan obligatoire pour une instance : Database Writer (DBWn) : Il écrit les données changées du buffer de cache de base de données vers les fichiers de données. Log Writer (LGWR) : Il enregistre les changements qui sont instanciés dans le buffer de redo log vers les fichiers de redo log. (Ces changements sont référencés comme les données du redo log) System Monitor (SMON) : Il exécute une récupération de l'instance lors de son démarrage, il nettoie les segments temporaires qui ne sont plus utilisés et annule les transaction qui n'avaient pas été validées lors d'un plantage du système. Il défragmente l'espace disponible dans les fichiers de données. Process Monitor (PMON) : Il récupère les process lorsque qu'un process utilisateur échoue. Il est responsable du nettoyage du cache et de déverrouiller les ressources système bloquées par un process utilisateur. Check point (CKPT) : il met à jour les statuts d'information sur la base de données tels que les entêtes des fichiers de base de données. Ceci est fait lors d'un événement de check point tel qu'une rotation des logs. Les changements dans le buffer de cache de la base de données sont alors écrits de manière permanente dans les fichiers de données. En plus de ces process obligatoires, on trouve un ensemble de process optionnels : Recoverer (RECO) Archiver (ARCn) Lock (LCKn) Dispatcher (Dnnn) Shared Server (Snnn) Parallel Query Slaves (Pnnn) Dr Mohamed Salah GOUIDER Page 10 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 1.3.4. Fichiers de la base de données Une base de données Oracle a une structure logique et physique. Entendons par structure physique que les fichiers contenu dans la base de données ont une réelle existence (ex : fichiers de données). Pour sa part, la base de données Oracle est constituée de trois types de fichiers : • Les fichiers de données contenant les données des blocs de données qui sont modifiées par les transactions courantes, le dictionnaire de données, les objets utilisateurs. • Les fichiers de redo log contenant un enregistrement des changements qui ont été fait sur la base de données, pour avoir la possibilité de revenir en arrière en cas de dysfonctionnement. Une base Oracle contient au moins deux groupes de redo log chacun contenant au moins un fichier de redo log. Pour renforcer leur tolérance à une panne de disque dur, Oracle supporte les fichiers de redo log multiplexés. On peut ainsi maintenir une ou plusieurs copies de fichiers de redo log sur différents disques (On parle de fichiers mirrorés). • Les fichiers de contrôles contenant les informations nécessaires pour maintenir et vérifier l’intégrité des données de la base. Une base de données Oracle nécessite au moins un fichier de contrôle, il est toutefois possible de les mirrorer sur plusieurs disques dur. 1.3.5. Fichiers relatant à la Base de données Ce sont les fichiers qui ne font pas partie de la base de données mais qui sont utilisés par le serveur Oracle pour des opérations telles que le démarrage d'une instance ou l'authentification des utilisateurs. Il existe trois types de fichiers : • Les fichiers de paramètre (Parameter File) : Il va définir les caractéristiques de l'instance. Lors du démarrage d'une instance, le serveur Oracle va lire les paramètres d'initialisation du fichier de paramètres. On retrouve des informations telles que le nom de la base de données, la taille de la mémoire à allouer, le nom des fichiers de contrôle ainsi que les autres paramètres système. • Le fichier de mots de passe (Password File) : Il est utilisé pour authentifier les utilisateurs privilégiés. • Les fichiers de redo log archivés (Archived Redo Log Files) : Ils contiennent des copies off line des fichiers de redo log. Ils sont utilisés lors d'une récupération suite à une défaillance d'un média. Les fichiers de redo log sont sauvés lorsqu'ils sont pleins, cette fonctionnalité n'est utilisée que lorsque la base de données est en mode "ARCHIVELOG". Dr Mohamed Salah GOUIDER Page 11 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 1.4. Traitement de requêtes 1.4.1. Etapes lors du traitement d'une requête Lorsqu'un utilisateur lance une déclaration ou une requête SQL, le process utilisateur l'envoie au process serveur qui la traite. Ce traitement est découpé en trois étapes : Parcours (Parse) : Le process serveur reçoit la requête, analyse la syntaxe et vérifie les privilèges de l'utilisateur pour les objets référencés à accéder. La section de mémoire du pool partagé de la SGA est utilisée pour compiler la requête et créer un arbre de parcours. Le statut de réussite ou non de l'analyse est renvoyé au process utilisateur. Exécution (Exécution) : Préparation de la récupération des données. Si l'ordre SQL est un UPDATE ou un DELETE, les lignes affectées sont verrouillées par le process serveur pour être rendues non accessibles aux autres utilisateurs. Récupération des données (Fetch) : Les données sont récupérées et envoyées au process utilisateur. Selon la quantité de mémoire disponible, un ou plusieurs fetch peuvent être nécessaires. 1.4.2. Pool partagé (Shared Pool) Le pool partagé est une zone mémoire faisant parti de la SGA et dont la taille doit être définie par le DBA. Le Shared Pool peut être retaillée dynamiquement avec la commande : ALTER SYSTEM SET SHARED_POOL_SIZE = 128M; Nous allons ici voir les différentes composantes de cette zone utilisée par le process serveur pour traiter les requêtes. On trouve dans le pool partagé : Le cache de librairie (Library Cache) : Contient les informations sur les requêtes SQL et/ou PL/SQL récemment utilisées. Le plan d’exécution de ces requêtes est également stocké ainsi que l’arbre de parcours et le texte des requêtes. Les verrous et les handles sur le cache de librairie sont également consignés. Le cache de librairie est composé de deux structures : la zone partagée SQL et la zone partagée PL/SQL Le cache du dictionnaire de données (Data Dictionary Cache) : Dr Mohamed Salah GOUIDER Page 12 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Contient des informations les plus récemment utilisées sur le dictionnaire de données, les objets de la base de données, sa structure et la définition des colonnes. On trouve également les utilisateurs valides, leur mot de passe et leurs privilèges. Les informations du dictionnaire de données sont mises en cache lorsque elles sont demandées par la base de données. Ceci permet d’augmenter la rapidité d’accès aux données. 1.4.3. Buffer de Cache de la base de données (Database Buffer Cache) Lorsqu’une requête est exécutée, le process serveur consulte le database buffer cache (Compris dans la SGA) pour les blocs de données requis par la requête. Le DBA doit configurer la taille de cette zone mémoire. Le buffer de cache est composé de trois caches indépendants : • DB_CACHE_SIZE : Ne peut être mis à 0. Gère la taille du buffer par défaut • DB_KEEP_CACHE_SIZE : Gère la taille du keep buffer cache, utilisé pour stocker les blocs dans la mémoire susceptible d’être réutilisés. • DB_RECYCLE_CACHE_SIZE : Gère le taille du recycle buffer cache, employé pour supprimer les blocs de mémoire réutilisé qui ont subit peu de changement. • DB_CACHE_ADVICE (ON, OFF, READY) : Permet d’activer les statistiques qui prédisent le comportement de la base lorsqu’on modifie la taille du cache. Les résultats sont consultables à l’aide de la vue V$DB_CACHE_ADVISE. Le database buffer cache contient des blocs de données lus dans les fichiers de données. Cela permet au process serveur d’accéder plus rapidement aux données, cette zone comporte les caractéristiques suivantes : Le database buffer cache contient les données les plus récemment et fréquemment utilisées. Il contient des blocs de données modifiées et non modifiées datés selon un algorithme Oracle (LRU) pour mettre à jour le buffer. La taille de chaque buffer du buffer cache est égale à la taille d’un bloc Oracle et spécifié par le paramètre DB_BLOCK_SIZE. 1.4.4. Buffer de Redo Log Le buffer de redo log enregistre les changements faits lors d’une requête DML. Ces caractéristiques sont les suivantes : • Il fait parti de la SGA. • Sa taille est définie par le paramètre LOG_BUFFER et doit être définie par le DBA. Dr Mohamed Salah GOUIDER Page 13 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE • Il se compose d’entrées qui contiennent les blocs changés, la position du changement et la nouvelle valeur. • Il n’identifie pas le bloc où les changements sont faits, c'est-à-dire qu’il traite de manière similaire les blocs de données, d’index ou de segments de ROLLBACK. • Son utilisation est séquentielle et circulaire. Il est renouvelé lorsqu’il est plein et que les entrées ont été enregistrées dans les fichiers de redo log online. 1.4.5. Program Global Area (PGA) Lorsque qu’un process serveur est créé, ou un process d’arrière plan, la base de données Oracle alloue une zone globale de programme (PGA Program Global Area ou bien Process Global Area) dans la mémoire. C’est un buffer mémoire qui contient les données et les informations de contrôle pour ce process serveur. Elle contient pour un serveur dédié : Une zone de tri (Sort area) : Utilisé pour stocker, si nécessaire, les résultats intermédiaires lors du tri. Des informations de session : Contient les privilèges utilisateurs pour la session en cours. Un état de curseur (Cursor State) : Etat de l’étape dans l’exécution des éventuels curseurs de la session. Un curseur est un pointeur sur la mémoire associé à une requête SQL donnée. C’est une zone de travail utilisé pour stocker le résultat de la requête. Un espace de pile (Stack Space) : Contient les variables de session et les arrays. Dans la version 9i, de nouveaux paramètres dynamiques de gestion de la PGA sont apparus. Par exemple, PGA_AGGREGATE_TARGET définit la taille maximale que peut atteindre la PGA totale allouée à toute une instance. La taille total de la PGA est inférieur au PGA_AGGREGATE_TARGET en mode auto de WORKAREA_SIZE_POLICY. 1.5. Traitement de requêtes DML 1.5.1. Phases d'exécution d'un requête DML Les requêtes de manipulations de données (DML), tel que les UPDATE, DELETE ou INSERT, sont utilisées pour manipuler les données. Comprendre leur exécution permet de créer le data buffer cache et les segments de ROLLBACK appropriés. Le traitement d’une requête DML se compose de deux phases : Parcours (Parse) : Contrôle des erreurs et placement dans une mémoire partagée SQL. Dr Mohamed Salah GOUIDER Page 14 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Exécution : Si la phase de parcours s’est effectuée avec succès, l’exécution se fait en plusieurs étapes. • Lecture des blocs de données et de ROLLBACK dans le database buffer cache. • Mise en place de verrous sur les données qui vont être changées. • Ecriture de l’image avant dans les segments de roll back et enregistrement des changements du buffer cache dans le redo log buffer pour protéger l’image avant en cas de défaillance. • Finalement, les données sont enregistrées dans le buffer cache et les changements sont également enregistrés dans le redo log buffer protégeant ainsi l’image après. Les blocs de données altérées dans le buffer cache sont marqués comme "sales (Dirty)", c'est-à-dire qu’ils ne correspondent plus aux blocs dans les fichiers de données. 1.5.2. Segments de Rollback Les segments de Rollback sont utilisés pour sauver les données lors d’une requête DML afin de les restaurer en cas d'annulation de la transaction ainsi que pour empêcher à d’autres transactions de voir les données en cours de modification. Ces segments ne sont pas visibles par un utilisateur. Une base de données contient un ou plusieurs segments de Rollback. Le serveur Oracle assigne un segment de Rollback à chaque transaction. Les segments de Rollback peuvent permettre de récupérer des données non commitées (validées) Dr Mohamed Salah GOUIDER Page 15 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE lors d’une transaction. Ils permettent également de récupérer un état consistant de la base de données en cas de défaillance système. Les segments de Rollback sont contenus dans les fichiers de données et sont lus dans le database buffer cache si nécessaire. 1.5.3. Database Writer (DBWn) Ce process d’arrière plan écrit les données du database buffer cache vers les fichiers de données sur le disque. Ces blocs de données sont écrits lorsque certains évènements se produisent tel que: • L’écriture a lieu lorsque le nombre de buffers « sales » atteint un seuil, cela permet de libérer des buffers dans le database buffer cache. • L’écriture se produit lorsque qu’un process serveur ne trouve plus de buffer libre après avoir recherché un certain nombre de buffers. • L’écriture s’effectue lors d’un timeout, par exemple lorsque le DBWn reste inactif plus de trois secondes. Le DBWn recherche alors des buffers «sales» selon l’algorithme LRU ou bien écrit la totalité si la base de données est inactive. • Le DBWn se déclenche lorsqu’un check point est atteint, cela se produit par exemple lors de l’arrêt de la base de données. • Lorsqu’un tablespace temporaire ou normal est mis offline. • Lorsqu’un tablespace est mis en lecture seule. • Lorsqu’une table est tronquée ou supprimée. • Lors d’un timeout. Dr Mohamed Salah GOUIDER Page 16 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 1.5.4. Log Writer (LGWR) Le Log Writer écrit séquentiellement des entrées du redo log buffer vers les fichiers de redo log. Le process LGWR écrit lorsque l’un des quatre événements suivants se produit : • Lorsque le buffer de redo log est plein à un tiers de sa capacité. • Lorsqu’un timeout se produit, par exemple lors d’une inactivité de plus de trois secondes. • Avant que le process DBWn écrive les données du database buffer cache vers les fichiers de données. • Lorsqu’une transaction utilisateur est commitée. • Toutes les 3secondes. LGWR peut demander à DBWn d’écrire dans les fichiers de données. 1.6. Traitement d un commit 1.6.1. Numéro de changement du système (SCN) La base de données Oracle assigne un SCN (System Change Number) à chaque transaction qui est commitée dans le but de l’identifier de manière unique. Ce numéro unique est enregistré dans les segments de Rollback ainsi que dans les fichiers de redo log. Il est également utilisé comme une marque temporelle (Timestamp) pour permettre à la base de données de synchroniser les données. Les événements sont organisés dans un ordre temporel au sein d’une instance et entre instances. Dr Mohamed Salah GOUIDER Page 17 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Il permet au serveur Oracle de lire les données de manière consistante en faisant abstraction de la date système du système d’exploitation lors de la restauration de la base de données. 1.6.2. Traitement d'un COMMIT : Etapes Une transaction doit être écrite de manière permanente après le traitement de celleci. Pour cela un COMMIT est réalisé. Nous allons voir les étapes qui constitue cette action de commit : • Un process serveur enregistre une ligne COMMIT accompagnée de son SCN dans le buffer de redo log. • Le process LGWR écrit les entrées du buffer de redo log dans les fichiers de redo log en commençant par la ligne de COMMIT (LGWR confirme la réussite du commit seulement après que les buffer de redo log soit écrit sur le disque.). • Le process serveur enregistre les informations indiquant que la transaction est terminée. Les ressources verrouillées dans les tables et les enregistrements sont alors libérées. • Le process serveur informe le process utilisateur de la fin du COMMIT. Un commit réalisant ces étapes est appelé un commit rapide (Fast Commit), on remarquera que seul le buffer de redo log est écrit sur le disque. Les buffers sales sont écrits dans le fichier de données de manière indépendante par le process DBWn. Une seule écriture sur le disque est donc nécessaire pour réaliser un COMMIT. Si plusieurs process utilisateurs réalisent un commit simultanément, le serveur Oracle rassemble les commits et n’écrit qu’une seule fois. Dr Mohamed Salah GOUIDER Page 18 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 2. Outils d'administration 2.1. Utilitaires administratifs 2.1.1. Utilitaires d'administration de base de données Oracle Universal Installer : L’installateur Universel est un installateur Java utilisé pour installer Oracle9i, les outils Oracle et les utilitaires. Il peut installer des logiciels à partir d’un CDROM ou d’Internet, détecter les dépendances entre les différents composants. Il détecte le langage courant du système d’exploitation ou bien utilise le langage par défaut. Il est possible de spécifier différents répertoires principaux (Le ORACLE_HOME) pour permettre d’installer plusieurs versions d’un même produit. L’installation peut être guidé par des assistants ou permet d’utiliser des packages standard nécessitant un minimum de réponses. Il est également possible de le lancer en mode silencieux, dans ce cas, un fichier de réponse est utilisé pour remplacer les réponses aux différentes questions lors de l’installation. Le mode silencieux est utilisé lorsqu’il n’y a pas de terminal graphique ou lorsque l’on veut que l’utilisateur n’a rien à faire pour l’installation. La syntaxe de lancement de la commande varie en fonction du système d’exploitation. Un fichier de log est créé lors de l’installation et contient l’ensemble des étapes et les résultats. Une liste des produits installés est maintenue en cas de désinstallation de l’un d’entre eux. Les outils de post-installation sont également lancés si besoin est. Par exemple, après l’installation d’OEM (Oracle Enterprise Manager), l’assistant de configuration de base de données est lancé. Oracle Database Configuration Assistant : Cet assistant permet de créer une base de données, configurer les options de la base de données, supprimer une base de données, gérer les templates. Outils pour la création des fichiers de mots de passe : La commande orapwd permet de créer un fichier de mot de passe. Dr Mohamed Salah GOUIDER Page 19 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Ensuite, il suffit de mettre REMOTE_LOGIN_PASSWORDFILE à EXLUSIVE dans le fichier de paramètre. Puis, ajouter les utilisateurs au fichier de mot de passe et de leur attribuer des privilèges. SQL* Plus : SQL* Plus est un outils Oracle qui permet de manipuler et interagir avec la base de données. Une présentation plus complète de SQL* Plus est disponible dans le module SQLP. Oracle Enterprise Manager : C’est un outil important permettant, via une interface graphique, d’administrer, de contrôler et de tuner une ou plusieurs bases de données localisées sur un ou plusieurs serveurs. 2.1.2. Optimal Flexible Architecture (OFA) OFA est l’architecture standard qu’il est recommandé d’utiliser dans une base de données Oracle. Les trois règles importantes pour respecter cette architecture sont : • Etablir une structure de répertoires, où n’importe quel fichier de base de données peut être enregistré sur n’importe quel espace disque. • Séparer les objets avec un comportement différent sur différents tablespaces. • Augmenter les performances de la base de données en séparant les composants de la base de données sur des disques différents. OFA organise donc la base de données en fonction des types de fichiers et de leurs utilisations. Les fichiers binaires, de contrôles, de logs et administratifs peuvent être séparés sur des disques différents. L’administration en sera simplifié et les performances grandement améliorées. L’arborescence ci-dessus montre une structure de stockage selon le modèle OFA. Dr Mohamed Salah GOUIDER Page 20 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 2.2. Oracle Entreprise Manager (OEM) 2.2.1. Architecture d'OEM : Vue d'ensemble Oracle Entreprise Manager fournit un outil graphique de configuration système pour administrer une ou plusieurs bases de données. OEM se présente sous la forme d’une architecture trois tiers, elle comprend : • La console est un outil graphique, utilisés par les DBA pour administrer une ou plusieurs bases de données à partir d’une même console. La console OEM comporte des menus, des barres d’outils et elle peut intégrer des outils provenant d’autres fabricants. Elle permet d’accéder à un ensemble d’outils tel que la planification de taches, la gestion des évènements, la recherche de services sur le réseau et la sécurité. • Les composants OMS forment le second tiers, les données de ces composants sont en effet stockées dans le repository OEM. Le repository OEM est un jeu de tables dans la base de données contenant les données système, les données applicatives et l’état des n uds administrés sur l’environnement Oracle. La base de données stockant le repository OEM doit être accessible à la console OEM. Un repository est associé à des utilisateurs et non à une machine, ainsi, il devient indépendant de sa localité et peut être accédé de partout. Un repository OEM distinct peut être associé à chaque utilisateur OMS peut donc effectuer toutes les taches administratives, et ce de manière distribuée, de plus, plusieurs OMS peuvent être mis en place et agir en load balancing, ce qui augmente la tolérance de panne Dr Mohamed Salah GOUIDER Page 21 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE • Les Noeuds constituent la troisième couche de l’architecture qu’un utilisateur va chercher à administrer. Ces noeuds sont contrôlés par les « intelligent agents ». Un « intelligent agent » est un process qui s’exécute sur le noeud distant du réseau et qui permet de l’administrer à distance. 2.2.2. Composants de la console OEM La console OEM est l’interface graphique utilisateur de l’application OEM, elle contient un ensemble de composants qui permettent à un ensemble de DBA d’administrer une ou plusieurs base de données dans un environnement Oracle. Elle se compose de menus permettant de lancer des applications d’administrations, des outils d’accès et de services et l’accès à l’ensemble des fonctionnalités de la console OEM. Elle contient un ensemble d’icônes présentant sous forme de palettes les différents outils, et donnant un accès similaire aux éléments des menus de manière plus rapide. Une fenêtre de navigation apporte une vue hiérarchique des différents noeuds du réseau, elle permet de visualiser l’ensemble des services Oracle à travers le réseau ainsi que les objets qu’ils contiennent. Les objets réseaux sont également représentés sur une carte graphique qui permet de les situer géographiquement. La console OEM comprend également la gestion des taches planifiées (Job) qui permettent de lancer à distance des taches concernant les « listeners », les bases de données ou bien les hôtes. Un historique et un suivi de l’état des jobs sont également disponibles. On peut également consulter les évènements systèmes sur les différents noeuds et selon les critères que l’on souhaite. Le DBA peut alors être contacté par email ou autres. Certains évènements peuvent faire l’objet de jobs correctifs qui seront lancés au déclanchement de celui-ci. 2.2.3. Services communs d'OEM OEM comporte un ensemble de services permettant au DBA d’administrer les serveurs Oracle et leurs bases de données. Les principaux services fournis par les OMS sont les suivants : Le service de taches panifiées (Job Service) : Il gère les jobs programmés et permet donc d’automatiser des taches répétitives. Le service de gestion des évènements (Event Service) : Il permet de contrôler les évènements systèmes survenant sur l’ensemble des serveurs Oracle du réseau, il permet de contrôler des limites applicatives et Dr Mohamed Salah GOUIDER Page 22 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE systèmes tel que l’espace occupé par les fichiers de données, la charge CPU ou bien des pertes de disponibilité d’un service. Il peut, lors d’un événement donné, déclencher des jobs de récupération ou autres. Le service de découverte (Discovery Service) : C’est un assistant permettant de découvrir sur le réseau les différents services tel que les bases de données, les serveurs Web, les listeners, les machines, les « parallel Servers » et les serveurs de vidéo. Le service de sécurité (Security Service) : Il permet de contrôler l’accès aux services Oracle ainsi qu’aux noeuds du réseau. Un super administrateur peut également gérer les différents administrateurs et leurs privilèges. Les authentifications sont encodées dans le repository OEM et les utilisateurs doivent spécifier leur identité pour accéder à chaque ressource à travers la console OEM. 2.2.4. Configurer OEM Cette section présente la configuration d’OEM, lors de son installation, installateur universel lance l’assistant de configuration d’OEM, mais il est également possible de le lancer à nouveau lors de la création d’un repository supplémentaire. Les étapes se découpent comme suit : Création du repository OEM : L’assistant de configuration demande l’hôte, le port, et le SID du lieu ou va être installé le repository. Lancement du service OMS : La seconde étape consiste à lancer le service OMS, il démarre automatiquement au démarrage de Windows ou bien il peut être démarré manuellement. Lancement de la console OEM : La console OEM peut être lancé via le menu « Démarrer ». Il est alors possible de se connecter au repository OEM et de découvrir automatiquement (Ceux ou l’intelligent agent est lancé) ou manuellement les différents noeuds et services présents sur le réseau. Configuration de la sécurité : La sécurité appropriée doit être mise en place pour contrôler l’accès aux différents noeuds et services du réseau. L’authentification pour un utilisateur doit être configurée pour chaque objet à accéder. Travail sur une base de données : La dernière étape consiste à choisir une base de données via l’explorateur et s’authentifier pour pouvoir l’administrer. 2.3. Package d'administration Dr Mohamed Salah GOUIDER Page 23 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 2.3.1. Pack de management DBA Le pack de management DBA est un ensemble d’outils utilisés pour l’administration des bases de données. Il se compose de cinq applications et de deux jeux d’utilitaires et d’assistants : • Instance Manager : Cet outil permet de monter, fermer et surveiller une base de donnée • Security Manager : Il permet de contrôler l’accès aux services Oracle ainsi qu’aux noeuds du réseau. Un super administrateur peut également gérer les différents administrateurs et leurs privilèges. • Storage Manager : Permet de surveiller les tablespaces, fichiers de données, segments de rollback. • Schema Manager : Il permet de créer et maintenir des objets comme les tables, indexes et vues. • SQL* Plus Worksheet : C’est une application en ligne de commandes permettant de lancer des requêtes SQL, du code PL/SQL ou encore des commandes SQL*Plus. Les outils et les assistants de sauvegarde Oracle : Ils permettent de sauvegarder, restaurer ou bien recouvrer une base de données. On peut également gérer les fichiers de redo log grâce à ces outils. On lance ces outils à partir de la console ou du Gestionnaire de Schéma. Les outils et assistants de gestion des données : Ils aident au chargement et l’organisation des données dans les bases de données. Ils permettent également le transfert des données à partir et vers une base de données Oracle. On lance ces outils à partir de la console ou du Gestionnaire de Stockage. 2.3.2. Packs de management supplémentaires OEM peut intégrer dans sa console trois outils administratifs supplémentaires : Le Pack de Diagnostic : Il fournit des utilitaires d’audit et de monitoring des bases de données, il devient possible de collecter et d’inspecter des performances spécifiques selon des statistiques aidant au paramétrage fin d’une base de données. Le Gestionnaire de Performances Oracle permet de réaliser cela en temps réel et fournit des vues graphiques sur la performance de la base de données et du système. Oracle TopSessions permet de lister l’ensemble des sessions connectées au serveur Oracle. On peut également voir les détails d’une session et y mettre fin. Dr Mohamed Salah GOUIDER Page 24 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Le planificateur de capacité permet de collecter des données et de stocker un historique des informations sur la base de données pour parer à l’augmentation de la capacité requise. Le Visualisateur de données de trace Oracle permet de suivre et de programmer les informations de traçages de la base de données et de Net8. Le Pack de Tuning : Il se compose d’un ensemble d’outils visant à améliorer les performances d’une base de données. L’analyseur SQL permet d’analyser et d’éditer des requêtes SQL pour augmenter leurs performances. Le Gestionnaire de Tablespace permet de monitorer et contrôler l’espace de stockage. Il fournit un ensemble d’informations sur les tablespaces et leurs segments. On peut défragmenter l’espace occupé et réorganiser les données. Oracle Expert permet de tuner et d’optimiser le système de manière très fine. Le Pack de Gestion du Changement : Il se compose d’utilitaires utilisés pour contrôler le changement de la définition des objets de la base de données. L’application de Capture permet de capturer l’image d’un objet à un instant donné. L’application de Différentiel permet de comparer les différences entre la définition d’objet pour deux base de données ou selon un modèle. Les Objet de Changement rapide et de modification permettent de propager des changements aux objets d’une ou plusieurs bases de données. L’application de Gestion des Plans permet de centraliser l’accès à tous ces outils. Dr Mohamed Salah GOUIDER Page 25 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 3. Gérer une Instance Oracle 3.1. Authentification et privilèges Les utilisateurs administrateurs de la base de données sont responsables de la gestion et de l’administration du serveur Oracle. Des privilèges particuliers sont requis pour permettre de faire ces taches. Deux comptes utilisateur DBA son créés automatiquement et ont le rôle DBA : Le compte SYS : Créé lors de l’installation d’Oracle avec tous les privilèges systèmes. Mot de passe par défaut : change_on_install, à changer après l’installation. Le schéma de SYS stocke toutes les tables et les vues du dictionnaire de base de données. Aucun utilisateur ne peut modifier ou créer de table dans ce schéma. Le compte SYSTEM : Créé lors de l’installation d’Oracle avec tous les privilèges systèmes. Mot de passe par défaut : manager à changer après l’installation. Le schéma de SYSTEM stocke les tables et les vues administratives ainsi que des informations administratives propres à certains produits Oracle supplémentaires. 3.2. Fichiers de paramètres 3.2.1. Paramètres présents dans le fichier de paramètre Une base de données Oracle devient accessible aux utilisateurs lorsque le DBA démarre l’instance et ouvre la base de données. Pour démarrer une instance, Oracle lit le fichier d’initialisation. Ces fichiers sont au nombre de deux (le dernier est une nouveauté de la 9i) : le PFILE et le SPFILE. Le PFILE fait communément référence au fichier init<SID>.ora et le SPFILE (fichier binaire) fait référence au fichier spfile<SID>.ora où SID est le nom de l’instance. Le fichier de paramètre est un fichier texte contenant la liste des paramètres de démarrage de l’instance. 3.2.2. Le PFILE (initSID.ora) Sous Windows NT, ce fichier se trouve par défaut dans le répertoire %ORACLE_HOME%\database et contient un paramètre IFILE qui fait référence à un fichier plus complexe situé dans le répertoire %ORACLE_HOME%\admin\<SID>\pfile. Sous UNIX, on peut le trouver dans le répertoire $ORACLE_HOME/dbs. Dr Mohamed Salah GOUIDER Page 26 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Ce fichier est lu lors du démarrage de l’instance, on peut l’éditer avec n’importe quel éditeur de texte et le redémarrage de l’instance est nécessaire pour que les changements prennent effet. Il est préférable de faire une copie de ce fichier sur l’ordinateur où se trouve OEM s’il en existe un. Parmi les paramètres du fichier de paramètre, on trouve le nom de la base de données pour laquelle l’instance est démarrée. Les paramètres contrôlent les performances de la base de données ainsi que la quantité de mémoire utilisée par les différentes composantes de la SGA. On peut également définir certains attributs physiques de la base de données au moment de sa création telle que la taille des blocs de données. On trouve également dans ce fichier le nom et le chemin des fichiers de contrôle, des fichiers de log archivés et des fichiers de trace de la base de données. 3.2.3. Le SPFILE (spfileSID.ora) Le spfile est un fichier binaire de paramètres dynamiques qui est géré par le serveur Oracle. Il se situe dans le même répertoire que le initSID.ora et contient aussi les mêmes données. Si le fichier spfileSID.ora existe, il est prioritaire par rapport au PFile. En effet, au démarrage de l’instance le serveur essayera de lire le spfile plutôt que le pfile, le pfile sera lu seulement en cas d’échec de la lecture du spfile. Dr Mohamed Salah GOUIDER Page 27 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Remarque : Le contenu du spfile est visible dans la vu dynamique V$SPPARAMETER et non pas V$PARAMETER qui est utilisé par le pfile. 3.2.4. Règles pour les valeurs de paramètre Un ensemble de règles régissent les paramètres compris dans le fichier de paramètre : • La plupart des paramètres sont optionnels. • Leur ordre n’est pas important. • Le format pour définir un paramètre est de la forme nom_de_paramètre = valeur et s’écrit sur une ligne. • La plupart des paramètres ont une valeur par défaut. • Si un paramètre comprend des espaces ou des tabulations, il doit être mis entre doubles quotes. • Certain paramètres tel que CONTROL_FILE peuvent prendre plusieurs valeurs, elles doivent être mises entre parenthèses et séparées par des virgules. • Des lignes de commentaires peuvent être incluses dans le fichier et doivent commencer par le symbole #. • Le mot clé IFILE est utilisé pour inclure d’autres fichiers à un fichier de paramètre. • Si le système d’exploitation est sensible à la casse, le fichier de paramètre le devient également. 3.2.5. Paramètres essentiels La plupart des paramètres sont optionnels, cependant certains paramètres sont au contraire essentiels pour l’instance Oracle. La liste suivante les présente : DB_NAME : Identifiant de la base de données. DB_CACHE_SIZE : Ne peut être mis à 0. Gère la taille du buffer par défaut. DB_KEEP_CACHE_SIZE : Gère la taille du keep buffer cache, utilisé pour stocker les blocks dans la mémoire susceptible d’être réutilisés. DB_RECYCLE_CACHE_SIZE : Gère le taille du recycle buffer cache, employé pour supprimer les blocs de mémoire réutilisé qui ont subit peu de changement. DB_BLOCK_SIZE : Taille d’un bloc de données spécifié lors de la création de la base de données. Ne peut être changé après la création. COMPATIBLE : Version du serveur avec laquelle l’instance pourra être compatible. CONTROL_FILES : Spécifie le nom des fichiers de contrôle de la base de données. SHARED_POOL_SIZE : Spécifie la taille du pool partagé en bytes. Dr Mohamed Salah GOUIDER Page 28 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE BACKGROUND_DUMP_DEST : Spécifie le répertoire ou le process de fond de taches écrit les fichiers de trace et les fichiers de log d’alertes. USER_DUMP_DEST : Spécifie le lieu où les fichiers de trace utilisateurs sont crées. 3.2.6. Paramètres communément modifiés Les paramètres le plus souvent modifiés par le DBA pour une instance donnée sont les suivants : IFILE : Permet d’inclure un autre fichier de paramètres dans le fichier courant. Peut être utilisé jusqu’à trois niveaux. LOG_BUFFER : Spécifie le nombre de bytes qui sont alloués pour le buffer de redo log dans la SGA. MAX_DUMP_FILE_SIZE : Spécifie la taille maximale en bloc des fichiers de trace. PROCESSES : Définit le nombre maximum de process du système d’exploitation pouvant être simultanément connecté à l’instance. SQL_TRACE : Permet d’activer ou non l’utilitaire de trace SQL pour toutes les sessions utilisateurs. TIMED_STATISTICS : Permet d’activer ou non la datation des événements dans les fichiers de trace et les écrans de monitoring. 3.3. Démarrage et arrêt d'une instance 3.3.1. Etapes de démarrage d une instance Le démarrage d’une instance se fait en plusieurs étapes. Elles sont au nombre de trois et se présentent tel que suit : • Le démarrage de l’instance, • Le montage de la base de données • Et l’ouverture de la base de données. Le démarrage de l’instance est la première étape, on parle de mode NOMOUNT. On démarre ce mode lors de la création de la base de données ou la régénération des fichiers de contrôle. C’est à ce moment que le serveur va essayer de lire les fichiers de paramètres dans l’ordre suivant : • le spfileSID.ora. Si il n’est pas trouvé alors, • le spfile.ora (fichier de paramètres crée automatiquement avec une base de données). Sinon, • le initSID.ora Dr Mohamed Salah GOUIDER Page 29 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE La SGA est allouée et les process démarrés. Les fichiers de trace et d’alertes sont également ouverts. La seconde étape consiste à monter la base de données. C’est le mode MOUNT. La base de données n’est pas encore ouverte et donc non accessible. Ce mode est utilisé pour certaines taches de maintenance de la base de données. A ce moment, la base de données est associée à une instance démarrée, le serveur Oracle localise les fichiers de contrôle et les ouvre.. Ces fichiers sont alors lus pour obtenir le nom et le statut des fichiers de données et de redo log. La troisième étape de démarrage est l’ouverture de la base de données. On l’appelle également le mode OPEN ou mode normal de la base de données. A ce moment, un utilisateur valide de la base de données peut se connecter et accéder aux données. Lors de cette étape finale, le serveur Oracle vérifie que les fichiers de données et de redo log puissent être ouverts. Si l’ouverture de l’un d’entre eux échoue, une erreur est renvoyée et la base de données n’est pas ouverte. La consistance de la base de données est également vérifiée pour s’assurer que les fichiers de données soient bien synchronisés. Si nécessaire, le process d’arrière plan SMON lance la restauration d’instance. Les derniers checkpoints sont identifiés, les fichiers de Rollback et les données utilisateurs sont mises à jour, les transactions non commitées font l’objet d’un rollback 3.3.2. Changer la disponibilité de la Base de données Un DBA peut démarrer une instance Oracle dans l’un des trois modes NOMOUNT, MOUNT et OPEN. Ce mode peut être changé de l’un à l’autre lorsque l’instance à été lancée (de NOMOUT vers MOUNT puis VERS OPEN). Il est possible de le changer soit grâce à la commande ALTER DATABASE ou grâce au Manager d’Instance Oracle. En ligne de commande et en mode NOMOUT, il est possible de taper ceci : ALTER DATABASE [MOUNT| OPEN] Il est possible d’agir sur le mode de la base de données à l’aide du Manager d’Instance Oracle. On peut par exemple changer l’état de la base de données de NOMOUNT à MOUNT. Cela se fait à l’aide du menu Base de données. Dr Mohamed Salah GOUIDER Page 30 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 3.3.3. Etapes d'arrêt d'une instance Il y a trois étapes dans le process d’arrêt d’une instance et de la base de données : La base de données est d abord fermée : Lors de cette étape, le serveur Oracle écrit tous les changements des buffers caches dans les fichiers de données. Tous les buffers de redo log sont écrits dans les fichiers de redo log en ligne. Ces mêmes fichiers sont ensuite fermés. La base de données devient indisponible aux utilisateurs mais les fichiers de contrôle restent ouverts. Elle est ensuite démontée : La base de données est ensuite démontée de son instance. Les fichiers de contrôle sont fermés à leur tour. instance est finalement arrêtée : Les fichiers de traçage et d’alerte sont fermés. La SGA est désallouée de la mémoire et les process de tâche de fond sont terminés. 3.3.4. Modes d'arrêts Un DBA peut fermer une base de données dans l’un des quatre différents mode disponibles. Ces modes sont : normal, transactionnel, immédiat et abandon. Le mode normal est le mode par défaut, les connexions à la base de données deviennent impossibles, toutefois, le serveur Oracle attend que les utilisateurs connectés se déconnectent de la base de données. Une fois tous les utilisateurs déconnectés, le serveur Oracle démonte et ferme la base de données puis l’instance. Dans ce mode de fermeture, une restauration de l’instance ne sera pas nécessaire au redémarrage. Dans le mode transactionnel, les clients ne peuvent perdre leur travail. Lors de l’utilisation de ce mode, aucun utilisateur ne peut lancer une nouvelle transaction. Les clients sont déconnectés lorsque leurs transactions en cours se terminent. La base de données est ensuite immédiatement fermée. La restauration d’instance ne sera pas nécessaire dans ce mode également. Le mode d arrêt immédiat entraîne l’arrêt immédiat des requêtes SQL en cours, les utilisateurs sont déconnectés sans attente. Le serveur Oracle rollback annule les transactions actives. Une restauration de l’instance ne sera pas nécessaire. Le mode abandon (ABORT) est utilisé seulement lorsque les autres modes ne peuvent fonctionner. (Ce mode est exécuté lorsque la commande STARTUP FORCE est utilisée). Les requêtes SQL sont terminées et les utilisateurs déconnectés, les transactions non commitées ne font pas l’objet d’un rollback. Le prochain démarrage de l’instance nécessitera une restauration de l’instance par SMON. En mode abandon, les fichiers ne sont pas fermés. SHUTDOWN [NORMAL| TRANSACTIONAL | IMMEDIATE | ABORT] Dr Mohamed Salah GOUIDER Page 31 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 3.4. Vue dynamique des performances 3.4.1. Caractéristiques des vues dynamiques de performance Le serveur Oracle maintient un jeu de tables virtuelles qui enregistre l’activité courante de la base de données. Ces tables sont appelées les tables de performances dynamiques. Elles sont visibles pour les utilisateurs via les vues dynamiques de performances. Ces tables appartiennent au DBA et ne sont pas accessibles à la plupart des utilisateurs. Les vues sont également accessibles au DBA qui peut donner le droit d’accès à d’autres utilisateurs. Ces vues sont identifiées avec le préfixe V_$ mais le serveur Oracle créé un synonyme public avec le préfixe V$. Les tables sous-jacentes à ces vues sont constamment mises à jour lorsque la base de données est en cours d’utilisation. Les informations les plus à jours deviennent alors disponibles à travers ces vues. Ces vues sont utilisées pour fournir des données relatives aux performances telles que des informations sur les fichiers de données et les structures de la mémoire. Lorsqu’une instance est démarrée en mode NOMOUNT, seul les vues lisant des données de la mémoire sont accessibles. Lorsque la base de données est en mode MOUNT, les vues lisant les données des fichiers de contrôle sont alors accessibles. La vue V$FIXED_TABLE montre les vues dynamiques de performance. 3.4.2. Descriptions des vues dynamiques de performance Les principales vues accessibles en mode NOMOUNT lisent des données de la mémoire et sont les suivantes : V$PARAMETER: Liste les informations sur les paramètres d’initialisation avec leur nom, leur nombre, leur valeur et leur type. V$SPPARAMETER : Liste les informations sur les paramètres d’initialisation du serveur avec leur nom, leur nombre, leur valeur et leur type. V$SGA : Donne des informations récapitulatives sur la SGA. V$OPTION : Liste les options installées avec le serveur Oracle. V$PROCESS : Contient des informations sur les process actifs. V$SESSION : Donne les informations sur la session courante. V$VERSION : Liste le numéro de version et les composants du serveur Oracle. V$INSTANCE : Donne l’état de l’instance courante. Les vues lisant les données des fichiers de contrôle sont accessibles seulement lorsque la base de données est montée. Les principales vues sont les suivantes : V$THREAD : Présente les informations sur les threads des fichiers de contrôle tel que les informations sur les groupes de redo log. Dr Mohamed Salah GOUIDER Page 32 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE V$CONTROLFILE : Fournit les noms des fichiers de contrôle. V$DATABASE : Contient des informations sur la base de données tel que le nom ou la date de création. V$DATAFILE : Donne les informations sur les fichiers de données tel que leur nom, leur statut et d’autres détails. V$DATAFILE_HEADER : Donne des informations sur les en-têtes des fichiers de contrôle. V$LOGFILE : Contient des informations sur les fichiers de redo log en ligne Dr Mohamed Salah GOUIDER Page 33 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 4. Procédure de création d une base de Données La création de la base de données est la première étape dans l’organisation et la gestion d’un système de base de données. La création d’une base de données permet à un ensemble de fichiers du système d'exploitation de fonctionner en tant que base de base de données Oracle. Indépendamment du nombre de fichiers de données et du nombre d'instances qui accèdent à la base de données, une base de données ne peut être créée qu'une seule fois. Une base de données initiale peut être créée lors de l’installation d’Oracle. Cette base de données peut être utilisée comme base de données initiale, ou une nouvelle base de données peut être créée. Pour créer une nouvelle base de données, il faut tenir compte de la taille des fichiers de données, des blocs, des tables et des index. L’emplacement des fichiers de contrôle doit être aussi planifié. Lors de la création d'une nouvelle base de données, il faut également tenir compte du jeu de caractères que la base de données utilisera. Une fois la base de données créée, le jeu de caractères spécifié ne peut plus être changé, sauf si la base de données est recréée. 4.1. Pré requis nécessaires à la création Une base de données est créée et gérée par un DBA (Database Administrator). Si le DBA connaît les conditions préalables à la création d'une base de données, il pourra créer efficacement une base de données. • Pour créer une base de données, un DBA doit posséder un compte privilégié authentifié par le système d'exploitation ou par un fichier de mots de passe. Un compte privilégié d’un utilisateur défini les actions que cet utilisateur peut effectuer sur la base de données ou les objets de la base de données. • Il doit y avoir suffisamment de mémoire pour démarrer une instance. Ce qui signifie qu’il doit y avoir suffisamment de mémoire pour que la zone mémoire global du système (System Global Area SGA), les fichiers exécutables et les autres processus en arrière plan s'exécutent normalement. La taille minimale de la SGA des petites bases de données est de 6,5 MB. • L’espace disque disponible sur la machine doit être suffisant pour recevoir la base de données planifiée. Le disque doit comporter suffisamment d'espace de stockage pour stocker les fichiers de contrôle, les fichiers de données et les fichiers redo log online de la base de données. Dr Mohamed Salah GOUIDER Page 34 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 4.1.1. Gérer et sauvegarder les fichiers d une base de données Une base de données peut présenter une taille relativement importante et comporter un grand nombre d'utilisateurs. Aussi, un DBA doit planifier correctement la structure physique d'une base de données de telle façon que l’échec d’un disque ne provoque pas l’arrêt de l’instance de la base de données. • Créer au moins deux fichiers de contrôle et les stocker sur des disques différents. Si un fichier de contrôle ou un disque sur lequel est stocké un fichier de contrôle est corrompu, la base de données pourra toujours accéder à l’autre fichier de contrôle. • Les fichiers redo log online doivent être organisés en groupes multiplexés. Un groupe de fichier redo log est constitué des copies identiques des fichiers redo log. Le multiplexage des groupes de fichiers redo log online permet au processus Log Writer (LGWR) de continuer d’écrire des entrées log des membres disponibles dans un groupe si un membre de ce groupe est indisponible ou corrompu. Le processus LOGWR est un processus d’arrière plan qui écrit les entrées du cache redo log (redo log buffer) sur le disque. • Les membres d’un groupe de redo log doivent également être stockés sur des disques différents. Ainsi si un disque est corrompu, le LGWR et l’instance de la base de données n’échoueront pas. • Les fichiers de données contenant des objets de la base de données avec des durées de vie différentes, telles que les données d’une application et les données temporaires, doivent être séparés afin de minimiser la fragmentation. • Les fichiers de données dont les données participent à la contention sur le disque doivent être séparé sur différents disques. • Les fichiers de données qui contiennent des données avec des caractéristiques d'administration, différentes doivent être séparés. Par exemple, les objets avec des besoins d’entrées/sorties concurrents, tels que les tables et les index, doivent être séparés. Cette séparation garantit au DBA un bon équilibrage des charges d’entrée/sortie. 4.1.2. Créer une base de données Il est possible de créer une base de données à la main avec un script SQL qui utilise la commande CREATE DATABASE ou tout simplement avec Oracle Database Configuration Assistant. Attention : Pendant l’installation d’Oracle Server, le DBCA (interface graphique utilisateur qui interagit avec Oracle Universal Installer) est lancé par OUI (Oracle Dr Mohamed Salah GOUIDER Page 35 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Universal Installer) et permet de réer une base de données par défaut. Il est possible pour l’utilisateur de ne pas lancer cette option. Si la structure de la base de données initiale ne remplie pas les besoins, une nouvelle base de données peut être créée. Voici les étapes dans la création manuelle d'une base de données : • Décider d’un nom unique pour l’instance et pour la base de données. Le nom de l’instance sert à identifier les instances associées à la base de données, et le nom de la base de données sert à identifier une base de données spécifique. • Indiquer le jeu de caractères que la base de données doit utiliser. Ce choix est très important car une fois configuré, le jeu de caractères ne peut être changé pour cette base de données. • Définir les variables du système d'exploitation. Les variables du système d'exploitation sont définies dans la base de registre. Leur définition détermine l’instance par défaut, le jeu de caractères de la base de données et les autres paramètres nécessaires au bon fonctionnement de la base de données. • Créer un fichier de paramètres. Ce fichier est nécessaire pour créer et démarrer une instance. Pour créer un fichier de paramètres, il faut spécifier la taille des composants de la zone mémoire globale du système (SGA), le nom de la base de données, les fichiers de contrôle de la base de données et la taille des blocs de données de la base de données. • Créer les services Oracle. Quand une base de données est créée, les services d’Oracle, tel que le service OraHomeTNSListener81 en environnement Windows NT, sont également créés. Les services d’Oracle préparent une base de données en vue de son utilisation. Le service OraHomeTNSListener81 identifie et accepte les demandes de connexion provenant des applications cliente. • Créer un fichier de mots de passe. La création d’une base de données implique la création d’un fichier de mots de passe. Le fichier de mots de passe contient les mots de passe pour authentifier des utilisateurs privilégiés autorisés à effectuer des opérations telles que le démarrage et l’arrêt de la base de données. • Démarrer une instance sans monter la base de données. Lorsqu'une instance est démarrée, la SGA est allouée à l’instance indiquée et les processus d’arrière plan sont démarrés en vue de la création de la base de données. • Créer la base de données à l’aide de la commande SQL CREATE DATABASE et en définissant les paramètres facultatifs de la commande. Ces paramètres servent à spécifier le nombre maximal de fichier, leurs tailles et le mode de fonctionnement de ces fichiers. Dr Mohamed Salah GOUIDER Page 36 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE • Exécuter les scripts qui génèrent les vues du dictionnaire de données. Un dictionnaire de données est un ensemble de tables qui fournissent des informations sur la base de données à laquelle elles sont associées. 4.2. Environnement du système d exploitation Oracle utilise des paramètres de configuration pour localiser des fichiers et spécifier les informations d’exécution de tous les produits Oracle. Ces informations de configuration sont stockées dans la base de registre du système d'exploitation. Pour qu’une instance Oracle fonctionne proprement dans un environnement Windows NT, il est essentiel de stocker les informations de configuration adéquates dans la base de registre. La base de registre Windows NT est une base de données hiérarchique et centralisée qui stocke les informations de configuration du matérielle et logicielle d'une machine locale. Les paramètres de la plupart des produits Oracle sont stockés dans la sous-clé HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE de la base de registre Windows NT. Les cinq variables de la base de registre sont : • Pour qu’une instance Oracle fonctionne proprement, il faut préciser dans la base de registres le chemin d'accès du répertoire racine où Oracle a été installé. Ce chemin est indiqué dans la variable ORACLE_HOME. • Le SID (identificateur du système Oracle) de l’instance, à laquelle un utilisateur se connecte si la chaîne de connexion n’est pas spécifiée, est stocké dans la variable de la base de registre ORACLE_SID. Le nom de l'instance doit être unique pour chaque instance qui s'exécute sur une même machine. La valeur de la variable ORACLE_SID doit comporter un maximum de quatre caractères sous Windows NT et huit caractères sous UNIX. Par exemple, si le nom par défaut de l’instance est ORCL, la variable ORACLE_SID prendra la valeur ORCL. • Si un jeu de caractères, autre que le jeu de caractères par défaut US7ASCII, est utilisé pour la création d'une base de données, le nom d’un répertoire contenant les informations de conversion pour le jeu de caractère choisi est stocké dans la variable ORA_NLS33. Si la variable ORA_NLS33 n’est pas définie et qu’une base de données est démarrée avec un jeu de caractères autres que celui par défaut, le jeu ne sera pas reconnu par la base de données. • Pour qu’une instance d’Oracle fonctionne proprement, la variable PATH doit stocker le chemin d'un fichier spécifique. • La dernière variable est LD_LIBRARY_PATH, elle contient les chemins pour les dossiers du système d’exploitation et des fichiers de la librairie Oracle. Par exemple : ORACLE_HOME/lib. Dr Mohamed Salah GOUIDER Page 37 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 4.2.1. Création de fichiers de mots de passe Les opérations telles que l’arrêt et le démarrage de la base de données doivent être effectuées par des utilisateurs autorisés à administrer une base de données. L'exécution de telles opérations par des utilisateurs de base de données non autorisés peut entraîner la perte de données. Par exemple, si un utilisateur arrête une base de données en mode Abort, les données non validées risquent d'être perdues. Le problème des utilisateurs non autorisés à effectuer des opérations critiques spécifiques peut se résoudre en utilisant un fichier de mots de passe permettant d'authentifier les utilisateurs qui administrent la base de données. L'exécutable ORAPWD.exe permet d'exécuter l’utilitaire ORAPWD. 4.3. Créer une base de données 4.3.1. Assistant de configuration de base de données Il existe deux méthodes pour créer une base de données. Soit en utilisant l’assistant de configuration de base de données, soit en utilisant le commande CREATE DATABASE. L’assistant de configuration de base de données est un utilitaire qui se lance sous linux avec la commande dbca et qui permet : • Créer une base de données : Option qui permet de créer une nouvelle base de données ou un template, qui permet de choisir avec fichiers de données ou sans fichiers de données. • Configurer les options de base de données : Cette option permet d’ajouter des options à la base de données qui n’ont pas été configurées initialement. Par exemple : JVM, interMedia, Oracle OLAP Services… • Supprimer une base de données : Option qui permet de supprimer une base de données. • Gérer les templates : Il existe trois moyens de créer un template. Soit à partir d’un template déjà existant, soit à partir d’une base de données, soit à partir d’un template prédéfini. Il existe deux types de templates de base de données. Ceux qui contiennent seulement la structure physique de la base de données (options, tablespaces, datafiles…), ou les templates contenant la structure ainsi que les données contenues dans la base. Dr Mohamed Salah GOUIDER Page 38 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Lors de la création d’une base de données avec l’assistant de configuration, il vous sera demandé de choisir parmi l’un des quatre types de base de données suivant : • Installation typique ou personnalisée : L’installation typique est pour une base de données avec un faible trafic. Le mode personnalisé permet de choisir parmi l’un des environnements suivant : • OLTP (OnLine Transaction Processing) : Cet environnement est utilisé pour les grandes bases de données devant gérer des milliers de transactions (lecture, écriture, suppression) par jour. Les performances pour ce type d’environnement sont définit en terme de disponibilité des données. • Data Warehousing : Cet environnement est utilisé avec des base de données qui sont souvent interrogées mais peut modifiées. Les performances de ce type d’environnement sont définit en terme de temps de réponse. • Mixed : Environnement supportant à la fois OLTP et Data Warehousing. Mode par défaut pour l’installation d’une base de données. 4.3.2. Les options de la commande CREATE DATABASE Le DBA peut créer une base de données en utilisant la commande CREATE DATABASE. La connaissance des fonctions des options de la commande CREATE DATABASE permettra au DBA d'identifier celles qu'il doit spécifier pour créer une base de données adaptée. CREATE DATABASE <database> [MAXLOGFILES integer] Spécifie le nombre maximum de groupes de fichier log qui peuvent être créé pour la base de données. La valeur de cette option affecte la taille du fichier de contrôle. [MAXLOGMEMBERS integer] Spécifie le nombre maximum de fichiers redo log membres d’un groupe de fichiers redo log. La valeur de cette option affecte la taille du fichier de contrôle. [MAXLOGHISTORY integer] Spécifie le nombre maximum de redo log archivés qui peuvent être utilisés pour la récupération automatique physique du serveur Oracle Parallel. La valeur de cette option affecte la taille du fichier de contrôle. [MAXDATAFILES integer] Spécifie le nombre maximum de fichiers de données qui peuvent être créés pour la base de données. La valeur de cette option affecte la taille du fichier de contrôle. [MAXINSTANCES integer] Dr Mohamed Salah GOUIDER Page 39 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Spécifie le nombre maximum d’instances pouvant monter et ouvrir la base de données simultanément. La valeur de cette option affecte la taille du fichier de contrôle. [ARCHIVELOG | NOARCHIVELOG] Spécifie que les redo log doivent être archivés avant d’être réutilisés. L’option NOARCHIVELOG spécifie que les fichiers redo log peuvent être réutilisés sans archiver leur contenu. La valeur de cette option affecte la taille du fichier de contrôle. [CHARACTER SET charset] Spécifie le jeu de caractères utilisé par la base de données pour stocker les données. Si cette option n’est pas précisée, le jeu de caractère par défaut US7ASCII sera utilisé. [DATAFILE filespec [, filespec]…] Spécifie le fichier de données à créer pour le tablespace SYSTEM. Cette option est reliée à la clause autoextend_clause par la relation : filespec :== ‘filename [SIZE n [K|M] ] [REUSE] [autoextend_clause] autoextend_clause :== AUTOEXTEND {OFF|ON [NEXT integer [K|M] ] [MAXSIZE integer [K|M] } active ou désactive l’extension automatique d’un fichier de données. [CONTROLFILE REUSE] Spécifie que les fichiers de contrôle identifiés dans le fichier de paramètre peuvent être écrasés si ils existent déjà. [NATIONAL CHARACTER SET charset] Spécifie le jeu de caractères national utilise pour stocker les données dans des colonnes de type NCHAR, NCLOB ou NVARCHAR2. [LOGFILE [GROUP integer] filespec [, [GROUP integer] filespec] ] Spécifie les fichiers log utilises pour la base de données et les groupes auxquels ces fichiers appartiennent. [Defaut Temporary Tablespace] Création d’un tablespace par défaut, chaque utilisateur ne spécifiant pas un tablespace par défaut sera automatiquement assigné au tablespace par défaut. [SET TIME_ZONE] Fuseau horaire à utiliser pour la base de données. 4.3.3. Créer une base de données en mode commande La principale responsabilité d'un DBA est de créer et de gérer une ou plusieurs bases de données. Dans ces bases de données peut être stocké un très grand nombre de données qui peuvent être récupérées et analysées. Le script utilisé pour créer une base de Dr Mohamed Salah GOUIDER Page 40 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE données doit être écrit dans un fichier texte. Le script est ensuite exécuté en utilisant SQL*Plus (par exemple). Exemple de script permettant de créer une base de données : 4.3.4. Les conditions d'erreur lors de la création d'une base de données Il existe plusieurs situations lors de la création d’une base de données avec la commande CREATE DATABASE qui peuvent provoquer un échec. La connaissance de ces situations permet au DBA d'identifier les erreurs faites lors de la création d'une base de données. • Des erreurs de syntaxe dans le script SQL • Les fichiers que la commande CREATE DATABASE doit créer existent déjà. Cette erreur apparaît lorsque l’option REUSE n’a pas été spécifiée ou lorsque la taille des fichiers ne correspond pas. • Une erreur se produit au niveau du système, telles que des permissions de fichier et de répertoire non valides. • Il n’y a pas assez d’espace disque pour créer les fichiers spécifiés dans la commande CREATE DATABASE. Dans tous les cas d’échec, il faut arrêter l’instance. Il faut ensuite modifier la commande, redémarrer l’instance en mode NOMOUNT et créer à nouveau la base de données. Dr Mohamed Salah GOUIDER Page 41 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 4.3.5. Le contenu d'une base de données après sa création Oracle crée automatiquement plusieurs fichiers, segments et tables dans une base de données. La connaissance des éléments qui constituent une base de données permet au DBA d'identifier et de gérer les objets des bases de données. Lors de la création de la base de données, le tablespace SYSTEM est créé. Le tablespace SYSTEM est un ensemble de fichiers de données spécifiés dans la commande CREATE DATABASE. Il contient le dictionnaire de données. Les tables du dictionnaire de données sont créées durant la création de la base de données. Les tables du dictionnaire de données contiennent les informations sur la structure de la base de données, sur les utilisateurs de la base de données et sur l’allocation de l'espace. Les vues du dictionnaire de données ne sont pas créées automatiquement lors de la création de la base de données. Les vues du dictionnaire de données sont des vues sur les tables du dictionnaire de données. Les fichiers de contrôle et les fichiers redo log sont créés à la création de la base de données. Les fichiers de contrôle contiennent le nom de la base de données et le chemin d'accès de tous les fichiers de données et fichiers redo log. Lors de la création de la base de données, les fichiers redo log sont vides ; ils enregistrent ensuite tous les modifications apportées aux données de la base de données. Les deux utilisateurs par défaut SYS et SYSTEM sont créés à la création de la base de données. SYS et SYSTEM ont respectivement les mots de passe par défaut « change_on_install » et « manager ». Les utilisateurs SYS et SYSTEM possèdent tous les privilèges système sur la base de données. Enfin, lorsque la base de données est créée, le segment de rollback SYSTEM est créé dans le tablespace SYSTEM. Le segment de rollback SYSTEM est utilisé pour enregistrer les modifications apportées dans le tablespace SYSTEM. Dr Mohamed Salah GOUIDER Page 42 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 5. Utilisation et contenu du dictionnaire de données 5.1. Structure du dictionnaire de données 5.1.1. Présentation du dictionnaire de données Les utilisateurs des bases de données, les développeurs d'applications, les administrateurs de bases de données et le serveur Oracle utilisent le dictionnaire de données comme une source centrale d’information associée à une base de données. Le dictionnaire de données est un ensemble de tables et de vues qui est utilisé comme une référence fournissant de l’information à jour concernant la base de données. Le dictionnaire de données est automatiquement mis à jour par Oracle lorsque des commandes de langage de définition des données ou des commandes de manipulation des données, débouchant sur l'extension d'une table, sont exécutées. Le dictionnaire de données stocke les informations sur : • La structure logique de la base de données Par exemple, les informations sur les tablespaces, les blocs de données, les extents et les segments d'une base de données. • La structure physique de la base de données Notamment les informations sur les fichiers de contrôle, les fichiers redo log et les fichiers de données. • Les noms et les définitions des objets Tels que les tables, les vues, les index, les clusters, les séquences, les triggers (ou déclencheurs), les fonctions, les procédures et les packages mais aussi les informations sur les espaces alloués et l’espace actuellement utilisé par les objets. • Les contraintes d’intégrité définies pour les tables d'une base de données. • Les noms des utilisateurs valides de la base de données et les privilèges et les rôles attribués à chaque utilisateur de la base de données. • Les privilèges définissent les opérations qu’un utilisateur peut effectuer dans la base de données. Un rôle est constitué d’un ensemble de privilèges. • L'audit sur une base de données. Par exemple, le dictionnaire de données fournit les informations sur les utilisateurs qui ont accédé à des objets ou les ont mis à jour. L’audit correspond à l’enregistrement d’opérations spécifiques en fonction d'un utilisateur, d'un objet ou d'un privilège. Dr Mohamed Salah GOUIDER Page 43 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Le dictionnaire de données possède deux composants : • les tables de base • les vues du dictionnaire de données Les tables de base sont les tables réelles d'Oracle qui stockent les informations sur une base de données. Ces tables sont créées avec le script sql.bsq. Ce script est stocké dans le répertoire orant\rdbms\admin. Les informations stockées dans les tables de base sont lues et écrites par le serveur Oracle. Ces informations sont rarement accédées directement par les utilisateurs car ces informations sont normalisées et stockées sous une forme encodée. Les utilisateurs ou administrateurs de bases de données ne doivent pas utiliser de commandes DML, telles que INSERT, UPDATE et DELETE, pour mettre à jour les tables de base directement, à l'exception de la table de trace d'audit lorsque la fonctionnalité d'audit est utilisée. Les vues du dictionnaire de données sont des vues sur les tables de base. Elles sont crées par le script catalog.sql. Les vues du dictionnaire de données simplifient et résument les informations contenues dans les tables de base. Les vues du dictionnaire stockent également ces informations sous une forme que les utilisateurs de la base de données peuvent lire facilement. Ces vues permettent au DBA de gérer et tuner la base de données. 5.1.2. Création et catégories des vues du dictionnaire de données La création des vues du dictionnaire de données se fait à partir du script catalog.sql, stocké dans ORACLE_HOME\rdbms\admin. Une fois la base de donnée ouverte il suffit seulement d’exécuter ce script. Il faut tenir compte que l’exécution de ce script est relativement longue. Il existe trois principales catégories du dictionnaire de données : • USER_<vues> : Vues pouvant être accédées par les utilisateurs de la base de données. USER_<vues>se réfère au schéma d’un utilisateur de la base de données. Un schéma est un domaine logique appartenant à un utilisateur où les objets créés par cet utilisateur peuvent être stockés. USER_<vues> affiche les informations sur les objets appartenant à un utilisateur spécifique. Par exemple, la vue USER_TABLES contient les informations sur les tables appartenant à un utilisateur. USER_<vues> affiche les informations sur les privilèges et les rôles attribués par un utilisateur sur des objets créés par cet utilisateur. Les informations fournies par USER_<vues> font partie d'un sous-ensemble des informations fournies par ALL_<vues>. Dr Mohamed Salah GOUIDER Page 44 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE • ALL_<vues>: Vues affichant les informations sur des objets auxquels l’utilisateur peut accéder à travers l’obtention publique ou explicite de rôles et de privilèges. Le contenu de ALL_<vues> est un sous-ensemble de DBA_<vues>. • DBA_<vues>: Vues fournissant des informations sur tous les objets de la base de données. Ces vues sont généralement interrogées par les DBA ou les utilisateurs qui possèdent le privilège système SELECT ANY TABLE. Ce privilège permet aux utilisateurs d’interroger toutes les tables de la base de données. 5.1.3. Informations contenues dans le dictionnaire de données Le dictionnaire de données possède des vues variées qui fournissent différents types d’informations. Vues dictionary dict_columns Description Vues générales dba_tables dba_objects dba_lobs dba_tab_columns dba_constraints Informations sur les objets, tels que les tables, les contraintes, les gros objets et les colonnes dba_users dba_sys_privs dba_roles Dr Mohamed Salah GOUIDER Informations sur les privilèges et les rôles des utilisateurs Page 45 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE dba_extents dba_free_space dba_segments dba_rollback_segs dba_data_files dba_tablespaces Allocation d’espace pour les objets de la base de données Structures générales de la base de données dba_audit_trail dba_audit_objects Informations d’audit dba_audit_obj_opts La vue DICTIONARY du dictionnaire de données fournit une vue d’ensemble de toutes les données du dictionnaire de données. L’interrogation de la vue DICTIONARY évite d'avoir à se souvenir de toutes les vues et des informations fournis par chacune de ces vues. La vue DICTIONARY possède deux colonnes : TABLE_NAME et COMMENT. Ces colonnes indiquent la vue qui devra ensuite être interrogée pour extraire des informations. Par exemple, pour récupérer les informations concernant les tables accessibles à un utilisateur, il faut interroger la vue ALL_CATALOG. Exemple : L’objectif est de récupérer les noms des segments de rollback de la base de données en interrogeant la vue DICTIONARY. SELECT * FROM dictionary WHERE table_name LIKE UPPER( %ROLLBACK% ); TABLE_NAME -----------------------------DBA_ROLLBACK_SEGS 1 row selected. COMMENTS ------------------------------------Description of rollback segments Cette requête affiche le nom des vues qui contiennent des informations sur les segments de rollback. Pour afficher les noms des segments de rollback : SELECT segment_name FROM dba_rollback_segs; SEGMENT_NAME ------------------------------ Dr Mohamed Salah GOUIDER Page 46 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE SYSTEM RB_TEMP RB1 RB2 RB3 ... Pour afficher la liste des colonnes d’une vue, il faut utiliser le mot clé : DESCRIBE V$INSTANCE 5.2. Scripts du dictionnaire de données 5.2.1. Création de fonctions PL/SQL Pour qu’un serveur Oracle fonctionne efficacement et de façon optimale, la base de données doit supporter les fonctionnalités PL/SQL. Le script catproc.sql est utilisé pour ajouter des fonctionnalités PL/SQL à une base de données. Ce script lance tous les scripts utilisés ou nécessaires avec PL/SQL. Il créé également des packages PL/SQL qui étendent les fonctionnalités du SGBDR et des vues supplémentaires de gestion des files d'attente de messages et de restauration des tablespaces. Catproc.sql est stocké sous le répertoire ora92\rdbms\admin. Pour l’exécuter, il suffit d’ouvrir une session SQL*Plus et de lancer l’exécution du script avec la commande : @<chemin complet du script>. 5.2.2. Scripts administratifs Pour gérer une base, il peut être nécessaire au DBA de créer des structures supplémentaires, telles que des tables, des vues et des packages. Les scripts administratifs sont séparés en quatre catégories de fichiers se trouvant dans le répertoire : • Les scripts utl*.sql : Ils créent des vues et des tables additionnelles pour les utilitaires de la base de données. Par exemple, le script utlsampl.sql crée et remplit les tables d’exemple EMP, DEPT, SALGRADE et BONUS de l’utilisateur SCOTT. • Les scripts cat*.sql : Ils créent des vues du dictionnaire de données et des tables de base du dictionnaire de données. Par exemple, catalog.sql crée des vues du dictionnaire pour une base de données, catman.sql crée des tables de base pour la récupération et des vues pour l’utilitaire Recovery Manager. • Les scripts dbms*.sql : Dr Mohamed Salah GOUIDER Page 47 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Ils créent des spécifications de package de base de données. Par exemple, le script dbmspool.sql crée la spécification d’un package qui permet d’afficher la taille des objets présent dans la shared pool. • Les scripts prvt*.plb : Ils créent le corps de package. Dr Mohamed Salah GOUIDER Page 48 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 6. Gestion des fichiers de contrôle et de redo log 6.1. Fichier de contrôle Le fichier de contrôle file est un petit fichier binaire, nécessaire pour démarrer et maintenir une base de données. Le fichier de contrôle doit être disponible chaque fois que la base de données est montée ou ouverte. Lorsqu'une instance monte la base de données, elle lit le fichier de contrôle pour localiser les fichiers de données et les fichiers redo log online. Une des fonctions du fichier de contrôle est de fournir les informations les plus récentes sur la base de données à l’instance Oracle mise à jour en permanence pendant l'utilisation de la base de données. Le fichier de contrôle fournit également des informations sur la cohérence de la base de données. Ces informations sont utilisées lors de la restauration de la base de données. Si le fichier de contrôle utilisé par la base de données devient indisponible, la base de données ne peut pas fonctionner proprement. Le fichier de contrôle peut devenir indisponible pour un grand nombre de raisons telles que la défaillance du disque ou la corruption du fichier. Certains mots-clés utilisés pendant la création d’une base de données, affectent la taille du fichier de contrôle. Ceci est surtout visible quand les paramètres ont de très grandes valeurs. Les paramètres suivants affectent la taille du fichier de contrôle : • • • • • MAXLOGFILES MAXLOGMEMBERS MAXLOGHISTORY MAXDATAFILES MAXINSTANCES 6.1.1. Contenu des fichiers de contrôle Le fichier de contrôle stocke des informations permettant à la base de données de fonctionner correctement. Le fichier de contrôle stocke : • Le nom et l’identifiant de la base de données • Les noms et les emplacements des fichiers de données et des fichiers redo log en ligne. Ces informations permettent au serveur Oracle de localiser les fichiers de la base de données sur le disque. • Le nom des tablespaces Dr Mohamed Salah GOUIDER Page 49 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE • La date et l'heure de création de la base de données. • Le numéro de séquence de log actuel. Cette information permet de synchroniser tous les fichiers appartenant à la base de données. • Les informations sur les points de synchronisation. Cette information est utilisée par le serveur Oracle lors de la restauration de l’instance. • L’historique des fichiers log • Les informations de sauvegarde de l’utilitaire Recovery Manager. • Le début et à la fin des segments de undo. Le fichier de contrôle se divise en deux parties : • Réutilisable, qui stocke les informations du Recovery Manager, comme les fichiers de sauvegarde de redo log et les fichiers de sauvegarde de données. Ces fichiers ne sont réutilisables que par le Recovery Manager. • Non réutilisable. 6.1.2. Multiplexage des fichiers de contrôle Dans le but de prévenir une erreur dans un fichier de contrôle, il est fortement recommandé de multiplexer les fichiers de contrôles et de les stocker séparément sur des disques différents. Si un fichier de contrôle est perdu, une copie du fichier de contrôle peut être utilisé pour redémarrer l’instance. On peut multiplexer jusqu’à 8 fichiers de contrôles. 6.1.3. Récupérer les informations des fichiers de contrôle Pour récupérer l’emplacement et les noms des fichiers de contrôles, il est nécessaire d’interroger la vue dynamique V$CONTROFILE. SELECT name FROM V$CONTROLFILE ; NAME ------------------------------D:\ORACLE\ORADATA\IASDB\CONTROL01.CTL D:\ORACLE\ORADATA\IASDB\CONTROL02.CTL D:\ORACLE\ORADATA\IASDB\CONTROL03.CTL 3 rows selected. D’autres vues peuvent être utilisées comme V$PARAMETER qui contient toutes les informations sur tous les paramètres, V$CONTROLFILE_RECORD_SECTION qui contient les informations sur les Dr Mohamed Salah GOUIDER Page 50 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE sections d’enregistrement des fichiers de contrôles, et la commande SHOW PARAMETERS CONTROL_FILES qui liste le nom, l’état et l’emplacement des fichiers de contrôles. 6.2. Les fichiers de redo log 6.2.1. Utiliser les fichiers de redo log Les fichiers de redo log permettent d’enregistrer tous les changements effectués par des transactions sur les données et fournissent un mécanisme de récupération des données en cas de dysfonctionnement du système ou d’un disque. Les fichiers redo log stockent toutes les modifications apportées aux données du buffer cache. L’organisation des fichiers de redo log s’effectue en groupe (au minimum 2) contenant un ou plusieurs fichiers de redo log. Chaque fichier de redo log appartenant à un groupe est appelé un membre. Tous les membres redo log online présentent tous des numéros de séquence log identiques. Le numéro de séquence log est affecté chaque fois que le serveur Oracle commence à écrire dans un groupe de fichiers redo log online. Ces numéros sont utilisés pour identifier de façon unique chaque membre redo log online. Le numéro de séquence log courant est stocké dans le fichier de contrôle ainsi que dans l'entête de tous les fichiers de données. Ce numéro est utilisé lors de la récupération de la base de données. Les membres redo log online ont tous la même taille. Un groupe de redo log en ligne sert également à restaurer des données validées qui n'ont pas été écrites dans les fichiers de données. Une telle situation peut se produire après l'échec d'une instance. 6.2.2. Structure des fichiers de redo log La charge de maintenir et gérer plusieurs fichiers de redo log appartient au DBA, pour éviter qu’un seul dysfonctionnement d’un fichier fasse perdre des informations à la base de données. Les mêmes informations sur les modifications apportées aux données sont enregistrées dans tous fichiers redo log online d'un groupe de redo log online. Donc tous les fichiers redo log d'un groupe redo log en ligne possèdent exactement les mêmes informations. Ce travail est effectué pas le processus d'arrière plan LGWR. Dr Mohamed Salah GOUIDER Page 51 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 6.2.3. Paramètres des fichiers de redo log Les performances d'une base de données sont affectées par le nombre et la taille des fichiers et des groupes redo log online. Le numéro initial et la taille des fichiers redo log en ligne et des groupes sont déterminés pas des paramètres d'initialisation : • MAXLOGFILES spécifie le nombre maximal de groupes de fichiers redo log online. La limite de MAXLOGFILES est de 255. • MAXLOGMEMBERS détermine le nombre maximal de membres redo log online pour chaque groupe de redo log online. Le nombre total de membres redo log online est un multiple du nombre de fichiers redo log. • LOG_FILES spécifie le nombre maximal actuel de groupes de fichiers redo log online pour la durée de vie de l'instance courante. Par défaut, la valeur de LOG_FILES est plus petite ou égale au nombre total de membres redo log en ligne (MAXLOGMEMBERS * MAXLOGFILES). Les fichiers redo log en ligne sont créés durant la création de la base de données. Le serveur Oracle enregistre séquentiellement tous les changements fait sur la base de données dans le buffer de redo log. Ensuite, les données contenues dans le redo buffer sont écrites grâce au process LGWR dans le fichier de redo log online. LGWR déclenche le processus d’écriture lors d’un des évènements suivants : • Une transaction est comité. • Quand le buffer de redo log est plein au tiers. • Quand le buffer de redo log contient plus de 1Mo d’enregistrements changés. • Avant que le process DBWn écrivent les blocs modifiés du database buffer cache dans les fichiers de données. 6.3. Gérer les groupes de redo 6.3.1. Fonctionnement des fichiers de redo log Basculement de fichiers log (Log Switches) : Toutes les modifications apportées à la base de données sont stockées séquentiellement dans le buffer redo log avant le remplissage des groupes de fichiers redo log online. Le serveur Oracle écrit ensuite le contenu du redo log buffer dans les groupes de redo log online. Le redo log buffer est utilisé de façon circulaire. Dans certains cas, les entrées du redo log buffer sont écrites dans un des groupes de redo log online par le processus d'arrière plan LGWR. Ce groupe est appelé le groupe courant de redo log online. Dr Mohamed Salah GOUIDER Page 52 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Le LGWR écrit séquentiellement dans les fichiers redo log online. Il commence à écrire dans le groupe suivant une fois que le groupe courant est plein. Lorsque le dernier fichier redo log online disponible est plein, le LGWR revient au premier groupe et écrase son contenu avec les nouvelles entrées. L'événement durant lequel LGWR arrête d'écrire dans un groupe et commence à écrire dans un autre, est appelé basculement de fichier log ("log switch"). L'événement basculement de fichier log amorce un événement point de Dr Mohamed Salah GOUIDER Page 53 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE synchronisation ("checkpoint"), qui entraîne l'écriture des buffers modifiés ("dirty blocks") du buffer cache dans les fichiers de données. Un basculement de fichier log apparaît lorsque : • le groupe courant de fichiers redo log online est plein • l'administrateur force le basculement de fichier log. Ces situations provoquent les événements qui permettent au serveur Oracle de conserver les données les plus récentes dans les fichiers de données. Chaque fois qu'un basculement de fichier log se produit et que le LGWR commence l'écriture dans un nouveau groupe de fichiers redo log online, le serveur Oracle assigne un numéro appelé le numéro de séquence log. Ce numéro identifie l'ensemble des entrées redo log. Points de synchronisation (Checkpoints) : L'événement d’arrière plan du serveur Oracle qui met à jour les fichiers de données est le point de synchronisation. Les points de synchronisation peuvent concerner tous les fichiers de données de la base de données ou seulement certains fichiers de données spécifiques. Lors d'un point de synchronisation, tous les buffers modifiés ("dirty blocks") sont écrits dans les fichiers de données par le processus DBWR. Le nombre de buffers qui sont écrit par le process DBWn est déterminé par le paramètre FAST_START_MTTR_TARGET. Si le point de synchronisation s'est achevé correctement, le processus d'arrièreplan CKPT met à jour les entêtes de tous les fichiers de données et fichiers de contrôle. Un point de synchronisation se produit dans plusieurs situations : • durant un basculement de fichier log. • Lorsqu'une instance s'arrête en mode normal, transactional ou immediate Dr Mohamed Salah GOUIDER Page 54 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE • Selon la configuration des paramètres d'initialisation LOG_CHECKPOINT_INTERVAL et LOG_CHECKPOINT_TIMEOUT • lorsqu'il est imposé par l'administrateur • lorsqu'un tablespace devient offline ou en lecture seule Ces situations entraînent l'événement checkpoint. Ainsi les fichiers de données dans la base de données sont mis à jour à intervalles réguliers. Les informations à propos de chaque checkpoint sont enregistrées dans le fichier alert<SID>.log si le paramètre LOG_CHECKPOINTS_TO_ALERT est initialisé à TRUE. Sa valeur par défaut est à FALSE. 6.3.2. Forcer le basculement de fichiers log et un point de synchronisation Log switch : Comme vu dans le point précédent, le basculement de fichiers log et les checkpoints sont fait automatiquement. Pourtant en cas de nécessité le DBA peut décider de forcer l’exécution d’un log switch ou d’un checkpoint. Un log switch peut être forcé avec la commande SQL suivante : ALTER SYSTEM SWITCH LOGFILE ; Outre la commande SQL, Oracle offre une interface graphique appelée Oracle Backup Manager permettant d'imposer un basculement de fichier log. Un basculement de fichier log peut être forcé même si aucune sauvegarde n'est prévue dans l'immédiat. Point de synchronisation : L'administrateur procède souvent à des sauvegardes permanentes (dite "à chaud") de tablespaces. Pour s'assurer que les fichiers de données contiennent les données les plus récentes, l'administrateur doit forcer un point de synchronisation avant de procéder à une sauvegarde. La syntaxe suivante permet de forcer un point de synchronisation: ALTER SYSTEM CHECKPOINT; Outre la commande SQL, Oracle offre une interface graphique, Oracle Backup Manager qui permet de forcer un point de synchronisation. Il est possible de forcer un checkpoint en utilisant le paramètre FAST_START_MTTR_TARGET. Par exemple FAST_START_MTTR_TARGET = 600 signifie que la restauration d’une instance après un crash ne doit pas prendre plus de 600 secondes, et la base de données doit ajuster les autres paramètres pour arriver à ce résultat. Dr Mohamed Salah GOUIDER Page 55 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 6.3.3. Ajout de groupe de fichiers redo log online Si la base de données est en mode ARCHIVELOG et que le fichier redo log online est gros, l'archivage peut prendre beaucoup de temps. Donc, un fichier redo log online peut ne pas être disponible pour les écritures effectuées par le buffer redo log. Dans ce cas, le processus LGWR est contraint d'attendre. Si le processus LGWR doit attendre, le DBWR attend et le système ralentit. Pour éviter les attentes et les ralentissements, l'addition de groupes redo log en ligne peut être nécessaire. Il existe deux méthodes pour ajouter un groupe redo log en ligne : avec une commande SQL ou avec l'outil Oracle Storage Manager. Des groupes de fichiers redo log en ligne peuvent être créés à l'aide de la commande ALTER DATABASE : ALTER DATABASE [database] ADD LOGFILE [GROUP integer] 'filename' [SIZE n[K|M]] [REUSE] [,[GROUP integer] 'filename' [SIZE n[K|M]] [REUSE] ]...; La valeur du paramètre GROUP peut être choisie pour chaque groupe de fichier redo log. Si ce paramètre est omis, Oracle lui génère automatiquement une valeur. Exemple : ALTER DATABASE ADD LOGFILE GROUP 3 ('c:\orant\database\logorcl3.ora') SIZE 1000K; Database altered. Cette commande crée un nouveau groupe de fichiers redo log portant le numéro 3. Ce groupe est constitué d'un membre redo log nommé logorcl3.ora d'une taille de 1000 Ko. 6.3.4. Ajout des membres redo log online Des membres redo log en ligne peuvent être ajoutés à un groupe afin d'éviter des défaillances isolées. En effet, l'ajout de membres redo log permet de placer les Dr Mohamed Salah GOUIDER Page 56 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE fichiers redo log en miroir. Des membres redo log peuvent être ajoutés grâce à la commande SQL suivante : ALTER DATABASE [database] ADD LOGFILE MEMBER 'filename' [REUSE] TO GROUP n; Le chemin complet des membres doit être spécifié. Si le chemin complet n'est pas spécifié, les fichiers seront créés dans le répertoire par défaut du serveur de base de données. Si le fichier existe déjà, il doit avoir la même taille que le nouveau fichier redo log online et l'option de la commande REUSE doit être utilisé. Le groupe cible peut être identifier en spécifiant le numéro du groupe soit un ou plusieurs membres du groupe. Exemple : ALTER DATABASE ADD LOGFILE MEMBER 'e:\orant\database\log7borcl.ora' TO GROUP 7; Database altered. Cette commande ajoute un nouveau membre redo log nommé log7borcl.ora au groupe redo log 7. Ce nouveau membre sera stocké dans le répertoire e:\orant\database. 6.3.5. Relocalisation des fichiers redo log online En raison de contraintes système, telles que l'insuffisance d'espace disque, les fichiers redo log online peuvent avoir besoin d'être relocalisés. Etapes à suivre pour relocaliser un fichier redo log online : • Arrêter la base de données, • Copier le fichier redo log online vers la nouvelle destination, • Monter la base de données, • Changer le nom du fichier redo log online à l'aide d'une commande SQL : ALTER DATABASE [database] RENAME FILE 'old filename' TO 'new filename'; Avant de changer le nom du fichier, il faut s'assurer que le nouveau fichier existe bien à l'emplacement prévu. Le serveur Oracle change seulement le Dr Mohamed Salah GOUIDER Page 57 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE pointeur dans le fichier de contrôle, mais il ne renomme pas physiquement ni ne crée de fichier. • Ouvrir la base de données. 6.3.6. Suppression de groupes de fichiers redo log online Pour améliorer les performances de la base de données, il peut s'avérer nécessaire d'augmenter ou de diminuer la taille des groupes de fichiers redo log online. Pour changer la taille d'un groupe de fichiers redo log online, il faut créer un nouveau groupe de fichiers redo log online et ensuite supprimer le vieux groupe de fichiers redo log online. Pour supprimer un groupe de fichiers redo log online, il faut utiliser la commande SQL suivante : ALTER DATABASE [database] DROP LOGFILE GROUP n; Cependant un certain nombre de restrictions sont à prendre en compte lors de la suppression de groupes redo log online : • L'instance doit avoir au moins deux groupes de fichiers redo log online. Un groupe de fichiers redo log online ne pourra pas être supprimé si il n'existe que deux groupes. Pour supprimer un groupe, il doit en rester au moins trois. • Un groupe redo log online actif ne peut pas être supprimé. • Si la base de données tourne en mode ARHIVELOG, un groupe de fichiers redo log online non archivé ne peut pas être supprimé. Quand un groupe redo log est supprimé, les fichiers du système d'exploitation ne sont pas supprimés automatiquement. Il est donc nécessaire de supprimer manuellement les fichiers redo log online afin de garder un espace disque propre. 6.3.7. Suppression des membres redo log online Pour obtenir les meilleures performances d'une base de données Oracle, il est nécessaire de vérifier régulièrement le statut des fichiers redo log online. Parfois, un fichier redo log online peut devenir invalide à cause d'événements tels qu'une défaillance du support. Ce qui rend les fichiers inaccessibles. Dans ce cas, il faut supprimer ces fichiers redo log online. La commande SQL qui permet de supprimer un membre redo log en ligne est la suivante : Dr Mohamed Salah GOUIDER Page 58 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE ALTER DATABASE [database] DROP LOGFILE MEMBER 'filename'; Exemple : Le fichier redo log online nommé log5borcl.ora dans le groupe 5 est devenu invalide. Ce fichier est stocké dans le répertoire e:\orant\oradata\orcl. ALTER DATABASE DROP LOGFILE MEMBER 'e:\orant\oradata\orcl\log5borcl.ora'; Database altered. Cette commande supprime le fichier redo log online invalide log5borcl.ora. Cependant un certain nombre de restrictions sont à prendre en compte lors de la suppression de membres redo log en ligne : • Le dernier membre redo log online valide d'un groupe ne peut pas être supprimé. • Un basculement de fichier log doit être effectué avant de supprimer un membre redo log online actif. • Si la base de données tourne en mode ARCHIVELOG, alors un membre redo log online appartenant à un groupe non archivé ne peut pas être supprimé 6.3.8. Réinitialisation des fichiers redo log online Lors de l'utilisation de la base de données, il est possible que tous les membres d'un groupe de fichiers redo log online soient corrompus. Pour faire face à ce problème, il faut réinitialiser les fichiers redo log online. Les commandes SQL pour réinitialiser les fichiers redo log en ligne sont les suivantes : ALTER DATABASE [database] CLEAR [UNARCHIVED] LOGFILE GROUP n; Ou ALTER DATABASE [database] CLEAR [UNARCHIVED] LOGFILE 'filename'; L'utilisation de ces commandes revient à ajouter et supprimer un fichier redo log online. Cependant ces commandes peuvent être effectuées même si il y seulement Dr Mohamed Salah GOUIDER Page 59 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE deux groupes de fichiers redo log online avec un membre chacun. Ces commandes peuvent également être effectuées même si un groupe de fichiers redo log online réinitialisé est disponible mais pas archivé. Exemple : Le fichier redo log online redo04.log dans le groupe 1 est corrompu. ALTER DATABASE CLEAR LOGFILE 'e:\orant\oradata\orcl\redo04.log'; Database altered. Le fichier redo log online redo04.log a été réinitialisé. Ce fichier est désormais prêt et disponible pour utilisation. Un fichier redo log online peut être réinitialisé qu'il ait été archivé ou non. Si le fichier à réinitialiser n'a pas été archivé, il faut inclure le mot clé UNARCHIVED dans la commande SQL. Cependant, l'utilisation du mot clé UNARCHIVED aboutit à des sauvegardes inutilisables si le fichier redo log en ligne est nécessaire pour la récupération. 6.4. Planification des fichiers redo log online 6.4.1. Nombre de fichiers redo log online Pour minimiser la perte de données causée par une défaillance, le serveur Oracle fournit des groupes de fichiers redo log online. Cependant le nombre et la taille des groupes de fichiers redo log online qui peuvent être créés dépendent d'un certain nombre de facteurs : • le nombre de transactions effectuées sur la base de données. Quand le nombre de transaction est limité, une instance de base de données ne peut avoir besoin que de deux groupes. Quand le nombre de transactions est très grand, une instance de base de données peut avoir besoin de groupes additionnels pour garantir la disponibilité des groupes de fichiers redo log online au processus LGWR. • La taille du buffer redo log. Si des messages dans le fichier trace LGWR ou dans le fichier ALERT indiquent que le processus LGWR attend fréquemment pour écrire dans un groupe de fichiers redo log online, il faut ajouter des groupes de fichiers redo log online. Le processus LGWR peut attendre à cause d'un point de Dr Mohamed Salah GOUIDER Page 60 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE synchronisation pas terminé ou d'un groupe de fichiers redo log online pas encore archivé. • La stabilité des gros fichiers du système d'exploitation. Le système d'exploitation peut devenir instable en traitant de gros fichiers, il est donc préférable de maintenir des fichiers de petite taille, donc d'augmenter le nombre de fichiers redo log online. Bien que le nombre de membres dans des groupes multiplexés puisse être différent, il est très conseillé de mettre en place une configuration symétrique. Une configuration asymétrique peut être utilisée seulement temporairement dans une situation inutilisable telle qu'une défaillance du support. 6.4.2. Emplacement des fichiers redo log online La disponibilité des fichiers redo log online détermine la performance d'une base de données Oracle. Pour améliorer la performance de la base de données, les membres des groupes de fichiers redo log online, les fichiers log archivés et les fichiers de données doivent être stockés sur des disques séparés. L'avantage de stocker les fichiers redo log online sur des disques séparés est que l'instance ne s'arrêtera pas même si un des membres n'est pas disponible. Un autre avantage de stocker les fichiers redo log online et les fichiers log archivés sur des disques différents est que la contention entre les processus ARCH et LGWR est réduite. De plus, les fichiers de données placés sur différents disques permettent également de réduire la contention entre les processus LGWR et DBWR. Le stockage des fichiers redo log et des fichiers de données sur différents disques permet de réduire de façon substantielle le risque de perdre à la fois les fichiers de données et les fichiers redo log online lors d'une défaillance du support. 6.4.3. Dimensionnement des fichiers redo log online Les performances d'une base de données Oracle dépendent de la disponibilité des fichiers redo log online. Donc, la taille des fichiers redo log online est une décision importante. La taille minimale d'un fichier redo log en ligne est de 50 Ko, et la taille maximale est spécifique au système d'exploitation. Cependant, il existe des situations qui influencent la taille des fichiers redo log online : Dr Mohamed Salah GOUIDER Page 61 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE • Le nombre de basculements de fichiers log et de points de synchronisation. Si les fichiers redo log online sont de petite taille, un grand nombre de basculements de fichiers log aura lieu ce qui réduit l'efficacité de la base de données. • Le nombre et la quantité d'entrées redo. Si le nombre d'entrées redo est élevé, les fichiers redo log online seront remplis rapidement ce qui débouche sur la génération d'un grand nombre de basculement de fichiers log. • L'espace disponible sur le support de stockage. Si le support de stockage ne présente pas la capacité suffisante pour stocker le fichier redo log online en une seule entité, l'administrateur de la base de données est contraint d'utiliser un fichier redo log online plus petit ou plusieurs fichiers. Ces fichiers sont stockés sur plusieurs disques. Les membres des groupes différents peuvent présenter des tailles différentes. Cependant, il n'est pas souhaitable d'avoir des groupes de tailles différentes. Les groupes de tailles différentes ne sont nécessaires que provisoirement lors de la modification de la taille des membres des groupes de fichiers redo log online. 6.4.4. Gérer les redo log online with OMF Pour créer un nouveau groupe de fichiers de redo log sans spécifications, le DBA utilise la commande : ALTER DATABASE ADD LOGFILE ; Cette commande ajoute un fichier de log avec un membre dans DB_CREATE_ONLINE_LOG_DEST_1 et un membre dans DB_CREATE_ONLINE_LOG_DEST_2. Les noms des fichiers uniques des fichiers de redo log sont générés automatiquement. Il est bien évidemment possible d’utiliser la clause GROUP pour supprimer un fichier de log. Dans l’exemple précédent, le fichier du système d’exploitation associé à chaque fichier de log membre OMF est automatiquement supprimé. Les fichiers archivés de redo log ne peuvent être des fichiers OMF. Un emplacement système pour les fichiers de log archivés peut être spécifié avec le paramètre d’initialisation LOG_ARCHIVE_DEST_n 6.4.5. Obtenir des informations sur les groupes Dr Mohamed Salah GOUIDER Page 62 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Il est possible d’obtenir des informations sur les groupes et les membres en interrogeant le dictionnaire de données. La requête suivante retourne des informations sur le fichier de redo log online du fichier de contrôle. SELECT group#, sequence#, bytes, members, status FROM V$LOG ; GROUP# -----1 2 3 SEQUENCE# --------1985 1986 1984 BYTES ----1048576 1048576 1048576 MEMBERS ------1 1 1 STATUS -----INACTIVE CURRENT INACTIVE INACTIVE signifie que le groupe de fichier de redo n’est plus nécessaire pour la restauration d’instance. CURRENT, indique le groupe courrant de redo log. C’est ce groupe là qui est actif. UNUSED, signifie que le groupe de redo vient juste d’être ajouté et qu’il n’a jamais été écrit. Pour connaître tous les noms des membres d’un groupe, il faut interroger la vue V$LOGFILE. SELECT member FROM V$LOGFILE ; MEMBER -------------------------------D:\ORACLE\ORADATA\IASDB\REDO03.LOG D:\ORACLE\ORADATA\IASDB\REDO02.LOG D:\ORACLE\ORADATA\IASDB\REDO01.LOG La valeur du statut de la colonne peut être INVALID (fichier inaccessible), STALE (le contenu du fichier est incomplet), DELETED (le fichier n’est plus utilisé). 6.4.6. Archivage de fichiers de redo log Une des décisions importantes qu’un DBA doit prendre est configurer la base de données dans le mode ARCHIVELOG ou NOARCHIVELOG. NOARCHIVELOG : Dr Mohamed Salah GOUIDER Page 63 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE En mode, NOARCHIVELOG, les fichiers de redo log online sont réécrits à chaque fois qu’un fichier de redo log online est rempli et qu’un log switch est lancé. LGWR ne réécrit pas sur un groupe de fichier de redo log tant que le checkpoint pour ce groupe n’est pas terminé. ARCHIVELOG : Si la base de données est configurée dans le mode ARCHIVELOG, alors les groupes de redo remplis doivent être archivé. Comme toutes les modifications faites sur la base de données sont enregistrées dans les fichiers de redo log online, le DBA peut utiliser la sauvegarde présente sur le disque dur et les fichiers de redo log archivés pour restaurer la base de données sans perdre aucune donnée comité. On peut archiver les fichiers de redo log : • Manuellement. • Automatiquement : Méthode recommandée. Le paramètre d’initialisation LOG_ARCHIVE_START, lorsqu’il est à TRUE indique que l’archivage se fait automatiquement. A FALSE, indique que le DBA le fait manuellement. En mode automatique, l’archivage se fait grâce au process ARCn, et manuellement avec des requêtes SQL. Dr Mohamed Salah GOUIDER Page 64 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 7. Gérer les Tablespaces et les fichiers de données 7.1. Architecture d'une base de données 7.1.1. Vue d'ensemble de la structure d'une base de données Les performances d'une base de données dépendent en grande partie de la gestion efficace des ressources du système, telles que l'espace du disque dur. Afin d'obtenir les performances optimales pour la base de données, Oracle facilite un contrôle poussé de la gestion de l'espace disque en divisant la base de données en structures logiques et physiques. Les structures logiques et physiques qui constituent la base de données Oracle sont elles-mêmes constituées d'autres composants. La structure physique est constituée de fichiers de contrôle, de fichiers redo log online et de fichiers de données. Les composants de la structure logique d'une base de données sont les tablespaces, les segments, les extents et les blocs de données. Lorsque les composants de la structure logique sont créés par Oracle, l'espace est alloué dans la base de données en fonction de paramètres prédéfinis. L'administrateur de la base de données peut remplacer ou configurer ces paramètres afin d'optimiser l'utilisation de l'espace. 7.1.2. Relations La séparation des structures logique et physique d'une base de données Oracle facilite le contrôle poussé de la gestion de l'espace disque. L'administrateur peut configurer les paramètres d'allocation d'espace aux composants physiques et logiques de la base de données. Pour utiliser efficacement l'espace du disque dur, il est important de connaître les relations entre les composants physiques et logiques de la base de données. Il est important également de savoir comment l'espace est alloué dans la base de données. La première entité est la base de données Oracle. Elle est divisée en structures logique et physique. La base de données est divisée en zones d'espace logiques plus petites, appelées tablespaces. Chaque tablespace d'une base de données Oracle est constitué d'un ou plusieurs fichiers appelés fichiers de données. Il s'agit de structures physiques conformes au système d'exploitation sur lequel le serveur Oracle fonctionne. Dr Mohamed Salah GOUIDER Page 65 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Un tablespace est constitué de segments. Un segment est l'espace alloué pour un type spécifique de structure de stockage logique dans un tablespace. Les segments d'index, segments temporaires, rollback segments et segments de données représentent quelques exemples de segments. Un segment, tel qu'un segment de données, peut être réparti sur plusieurs fichiers appartenant au même tablespace. Le niveau suivant de la structure logique d'une base de données est l'extent. Un extent est un ensemble de blocs contigus. Chaque segment est constitué d'un ou plusieurs extents. Le DBA peut ajouter des extents à un segment manuellement. Un extent ne peut pas être réparti sur plusieurs fichiers de données. Les blocs de données constituent le dernier niveau de granularité. Les données d'une base de données Oracle sont stockées dans les blocs de données. Un bloc de données correspond à un ou plusieurs blocs de fichiers physiques alloués à partir de fichier de données existant. 7.1.3. Caractéristiques d'un tablespace La structure de stockage logique la plus importante d'une base de données est le tablespace. Caractéristiques d'un tablespace : • Un tablespace ne peut appartenir qu'à une seule base de données • Un tablespace est constitué d'un ou plusieurs fichiers du système d'exploitation. Dr Mohamed Salah GOUIDER Page 66 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE • Les tablespace peuvent être mis offline lorsque la base de données fonctionne. Cette fonctionnalité permet à l'administrateur de contrôler les données sans arrêter la base de données. • Tous les tablespaces, à l'exception du tablespace SYSTEM ou d'un tablespace avec un undo segment actif, peuvent être mis offline. Dans ce cas, la base de données continue de fonctionner. L'administrateur peut ainsi assurer la gestion des données sans que la base de données ne soit indisponible. • L'état d'un tablespace peut être basculé entre lecture écriture et lecture seule. Cette fonctionnalité permet d'empêcher les utilisateurs de modifier des données stockées et inversement. 7.1.4. Utilisations d'un tablespace Le tablespace présente plusieurs utilisations possibles permettant la gestion efficace de l'espace disque. Utilisations d'un tablespace : • Aider les serveurs Oracle pour le contrôle de l'allocation de l'espace et l'attribution de quotas d'espace aux utilisateurs. • Contrôler la disponibilité des données. Ce contrôle est effectué par la mise online ou offline des tablespaces individuels. • Améliorer les performances E/S et réduire les contentions E/S grâce à la répartition du stockage des données sur plusieurs périphériques. • Utiliser lors des opérations de sauvegardes et de restaurations partielles. • Utiliser pour stocker de grandes quantités de données statiques sur des périphériques en lecture seule. 7.1.5. Caractéristiques d'un fichier de données Un tablespace est la structure de stockage logique la plus importante d'une base de données. Les données du tablespace sont stockées dans les structures de stockage physiques appelées fichiers de données. Chaque tablespace d'une base de données Oracle est constitué d'un ou plusieurs fichiers de données. Les fichiers de données sont les structures physiques conformes au système d'exploitation sur lequel le serveur Oracle est installé. Caractéristiques d'un fichier de données : • Un fichier de données ne peut appartenir qu'à un seul tablespace. Ceci permet à un administrateur de base de données de procéder à une Dr Mohamed Salah GOUIDER Page 67 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE sauvegarde du fichier de données sans affecter la disponibilité de tout autre tablespace. • Un fichier de données est créé par le serveur Oracle. Cependant, la quantité disque à occuper par le fichier de données est spécifiée par l'administrateur de la base de données. Le serveur Oracle crée le fichier de données avec la quantité spécifiée d'espace disque plus un léger dépassement. • Un fichier de données peut être modifié par l'administrateur de la base de données après sa création. L'administrateur peut également spécifier que la taille d'un fichier de données doit augmenter de façon dynamique, tout comme le nombre d'objets du tablespace. Cette caractéristique permet à l'administrateur de la base de données de contourner la limitation du paramètre MAXDATAFILES et permet à la base de données d'être constituée de moins de fichiers de données pour chaque tablespace. Elle évite également que les utilisateurs et les applications ne subissent des erreurs dues au manque d'espace libre dans un tablespace. 7.2. Créer des Tablespaces 7.2.1. Types de tablespaces Lorsque l'administrateur crée une base de données, un tablespace appelé SYSTEM est créé par défaut. Tous les autres tablespaces, appelés tablespaces non-SYSTEM, sont créés par l'administrateur de la base de données. L'administrateur créé un tablespace non-SYSTEM pour gérer facilement la base de données et permettre aux utilisateurs de l'utiliser de façon efficace. Le tablespace SYSTEM est indispensable pour le bon fonctionnement de toute base de données. Le tablespace non-SYSTEM n'est pas obligatoire. Le tablespace SYSTEM contient les informations du dictionnaire de données, les définitions des procédures stockées, des packages et des triggers base de données, les undo segments SYSTEM. D'autre part, les tablespaces non-SYSTEM peuvent contenir les segments de données, les segments d'index, les segments temporaires et les undo segments. Ils séparent aussi les données dynamiques et statiques Le tablespace SYSTEM contient le rollback segment SYSTEM, tandis qu'un tablespace non-SYSTEM peut contenir tout autre rollback segment. Dr Mohamed Salah GOUIDER Page 68 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Il n'est pas souhaitable de stocker les données utilisateur dans le tablespace SYSTEM. Si le tablespace SYSTEM contient des données utilisateur, vous ne pouvez pas procéder à des sauvegardes offline des données sans arrêter la base de données. 7.2.2. Création d un tablespace L'administrateur est responsable de la gestion des données des bases de données. Un moyen efficace de gestion des données consiste à créer des tablespaces pour différents groupes d'utilisateurs, en créant, par exemple, un tablespace marketing pour le personnel du service marketing. Syntaxe de création d'un tablespace : CREATE TABLESPACE tablespace [DATAFILE clause] [MINIMUM EXTENT integer[K|M]] [BLOCKSIZE integer [K]] [LOGGING|NOLOGGING] [DEFAULT storage_clause ] [ONLINE|OFFLINE] [PERMANENT|TEMPORARY] • DATAFILE spécifie le ou les fichiers de données liés au tablespace. M spécifie la taille en Mo ou Kbits. • LOGGING option par défaut qui spécifie que toutes les tables, indexes et partitions dans le tablespace génèrent des infos de redo log. • DEFAULT définit les paramètres de stockage par défaut pour tous les objets créés dans le tablespace. • OFFLINE rend le tablespace indisponible immédiatement après la création. • PERMANENT spécifie que le tablespace peut être utilisé pour contenir des objets permanents. • TEMPORARY cette clause est utilisée pour les objets temporaires. storage_clause := ( [INITIAL integer [K|M]] [NEXT integer [K|M]] [MINEXTENTS integer ] [MAXENTENTS {integer | UNLIMITED}] [PCTINCREASE integer ]) Dr Mohamed Salah GOUIDER Page 69 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Exemple : Créez un tablespace nommé ACCOUNTS. Le nom du fichier de données est accts01.dbf et sa taille est de 10 Mo. Nom du tablespace : ACCOUNTS Nom du fichier de données : accts01.dbf Taille du fichier de données : 10 Mo Emplacement : c:\oracle\oradata\database Se connecter à la base de données avec les privilèges adéquates : CREATE TABLESPACE accounts DATAFILE 'c:\oracle\oradata\database\accts01.dbf' SIZE 10M; Tablespace created. Cette commande est relativement complexe, Oracle offre une interface graphique, appelée Oracle Storage Manager, pour créer un tablespace. Lors de la création de tablespaces, le nombre maximal de tablespaces pouvant être affectés à chaque base de données est de 64 000 et le nombre maximal de fichiers de données pouvant être affectés à chaque tablespace est de 1 023. 7.2.3. Gestion de l espace dans les tablespaces Les tablespaces peuvent être gérés avec les tables du dictionnaire de données ou des tables binaires d’allocations (bitmaps). L’une de ces méthodes doit être choisie lorsque l’on crée un tablespace et ne pourra être changée par la suite. Locally Managed Tablespaces Un tablespace qui gère ses propres extents garde un bitmap dans chaque fichier de données pour garder une trace des blocs libres ou utilisés dans ces fichiers de données. Chaque bitmap correspond à un bloc ou un groupe de blocs. Lorsqu’un extent est alloué ou prêt à être réutilisé, le serveur Oracle change la valeur du bitmap pour mettre à jour le nouveau statut des blocs. Dictionary-Managed Tablespaces Pour un tablespace qui utilise le dictionnaire de données pour gérer les extents, le serveur Oracle met à jour les tables appropriées dans le dictionnaire de données dès qu’un extent est alloué ou désalloué. 7.2.4. Locally Managed tablespaces L’option LOCAL de la clause EXTENT MANAGEMENT spécifie qu’un tablespace est géré localement. Cette option est par défaut. Dr Mohamed Salah GOUIDER Page 70 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE extent_management_clause :== [ EXTENT MANAGEMENT [ DICTIONARY | LOCAL [ AUTOALLOCATE | UNIFORM [SIZE integer[K|M]] ] ] ] • DICTIONARY signifie que le tablespace est géré grâce aux tables du dictionnaire. • LOCAL signifie que le tablespace est géré localement avec un bitmap. Si c’est clause est utilisé, on ne peut utiliser DEFAULT storage_clause, MINIMUM EXTENT, ou TEMPORARY. • AUTOALLOCATE est l’option par défaut. Les utilisateurs ne peuvent spécifier une taille d’extent. • UNIFORM signifie que le tablespace est géré avec des extents de tailles uniformes de SIZE bytes. CREATE TABLESPACE userdata DATAFILE ‘u01/oradate/userdata01.dbf’ SIZE 500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256k; Les avantages des tablespaces gérés localement sont les suivants : • Pas de contention en mise a jour au niveau du dictionnaire. • Par conséquence pas d'utilisation de Rollback segment pour ces transactions. • Pas de soucis de gestion de l'espace (calcul d'un espace de stockage adéquat). • "coalesce" automatique (fusion des espaces libres contigus pour optimiser l'espace libre). 7.2.5. Dictionary Managed Tablespaces Ce genre de tablespace a une gestion du stockage customisé, ceci est beaucoup plus flexible que les tablespaces gérés localement mais bien moins efficace. CREATE TABLESPACE userdata DATAFILE ‘/u01/oradate/userdata01.dbf’ SIZE 500M EXTENT MANAGEMENT DICTIONARY DEFAULT STORAGE (initial 1M NEXT 1M) ; 7.2.6. Paramètres de stockage Dr Mohamed Salah GOUIDER Page 71 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE L'efficacité d'un tablespace dépend de la quantité d'espace utilisée par un segment. Ainsi, il est important de connaître les paramètres qui influent sur la quantité d'espace utilisée par un segment. Cinq paramètres déterminent et contrôlent la quantité d'espace utilisée par un segment. Il s'agit des paramètres INITIAL, NEXT, MAXEXTENTS, MINEXTENTS et PCTINCREASE. La taille du premier extent de tout segment est définie par le paramètre INITIAL. La taille minimale du premier extent est de deux blocs ou de 2*DB_BLOCK_SIZE. La taille par défaut est de cinq blocs ou de 5*DB_BLOCK_SIZE. Le paramètre NEXT fait référence à la taille du deuxième extent. La taille minimale de l'extent suivant est d'un bloc et la taille par défaut est de cinq blocs ou de 5*DB_BLOCK_SIZE. La valeur du paramètre MINEXTENTS détermine le nombre d'extent alloués lors de la création du segment. Par défaut, la valeur minimale est de un. Le PCTINCREASE est le pourcentage d'augmentation de la taille de NEXT. Par exemple, NEXT est défini sur 200 Ko et PCTINCREASE est défini sur 50%. Dans une telle situation, le deuxième extent présente une taille de 200 Ko, le troisième extent une taille de 300 Ko et le quatrième extent une taille de 450 Ko. La valeur minimale du paramètre PCTINCREASE est de zéro et sa valeur par défaut est de 50. La valeur calculée est arrondie à la valeur immédiatement supérieure de 5*DB_BLOCK_SIZE. Dr Mohamed Salah GOUIDER Page 72 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Le paramètre MAXEXTENTS détermine le nombre maximum d'extents qu'un segment peut contenir. La valeur minimale est de un. La valeur maximale par défaut dépend de la taille des blocs de données. La taille maximale peut également être spécifiée par le mot clé UNLIMITED, équivalent à une valeur de 2 147 483 645. Il est important de garder à l'esprit que les valeurs de ces paramètres doivent représenter un objet typique qui sera créé dans le tablespace. Cependant, ces paramètres de stockage peuvent être rejetés de la création de segments individuels. Il est possible d’utiliser la commande ALTER TABLESPACE pour modifier les paramètres par défaut. Par exemple : ALTER TABLESPACE userdata MINIMUM EXTENT 2M; Ou : ALTER TABLESPACE userdata DEFAULT STORAGE ( INITIAL 2M NEXT 2M MAXEXTENTS 999); 7.2.7. Les Undo Tablespaces Les tablespaces de undo sont une nouveauté de Oracle 9i. Ils peuvent remplacer les rollback segments qui doivent être gérés de manière manuelle et servent au stockage de segments d’images avant modification des données pour des annulations éventuelles. Ils sont utilisés uniquement pour stocker les segments de undo. La gestion des segments de undo se fait grâce aux paramètres du fichier d’initialisation : • UNDO_MANAGEMENT : MANUAL (rollback segments) ou AUTO (géré par l’instance donc undo tablespaces). • UNDO_TABLESPACE : Nom du tablespace de undo. • UNDO_SUPRESS_ERRORS : Si positionné à TRUE, cela supprime les messages d’erreurs affichés, lorsqu’on est en mode AUTO et qu’une opération manuelle est exécutée (telle que ALTER ROLLBACK SEGMENT). • UNDO_RETENTION : Durée pendant laquelle la donnée modifiée est gardée. Pour créer un tablespace de undo : Dr Mohamed Salah GOUIDER Page 73 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE CREATE UNDO TABLESPACE undo1 DATAFILE ‘u01/oradate/undo101.dbf’ SIZE 40M; Les informations d’utilisation des segments de UNDO sont stockées dans la vue V$UNDOSTAT. 7.3. Tablespace temporaire 7.3.1. Tablespace temporaire Ces tablespaces sont apparus avec la 9i et remplacent les segments temporaires qui étaient placés dans les tablespaces standard. Il est nécessaire de créer une tablespace temporaire par défaut autre que SYSTEM, où seront stockées uniquement les données temporaires (création d’index, jointures, tris, etc...). Un segment temporaire permet d’avoir un gain de performance lorsque, par exemple, plusieurs tris occupent trop de place pour la mémoire et doivent être stockés sur le disque dur temporairement. Ainsi la taille du segment de tris va augmenter en allouant des extents jusqu’à ce que la taille du segment soit suffisante pour stocker toutes les données que calculent les opérations de tris de l’instance. La commande pour créer un tablespace temporaire est la suivante : CREATE TEMPORARY TABLESPACE temp TEMPFILE ‘u01/oradate/temp01.dbf’ SIZE 500m EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M; Les tablespaces temporaires gérés localement ont des fichiers de données temporaires (tempfiles) qui sont identiques aux fichiers de données ordinaires. Mais certaines différences existent. Tout d’abord, les tempfiles sont toujours en mode NOLOGGING, ils ne peuvent être en lecture seule ou renommés. On ne peut créer de tempfile avec la commande ALTER DATABASE. 7.3.2. Tablespace temporaire par défaut Lorsque une base de données est crée sans tablespace temporaire par défaut, le tablespace qui est assigné aux utilisateurs créés sans la clause TEMPORARY TABLESPACE est le tablespace SYSTEM. Pour éviter que le tablespace système soit utilisé comme tablespace temporaire, il est nécessaire de créer un tablespace temporaire et de modifier la base de données avec la commande : ALTER DATABASE Dr Mohamed Salah GOUIDER Page 74 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE DEFAULT TEMPORARY TABLESPACE temp; Après cela, tous les utilisateurs qui n’étaient pas assignés à un tablespace temporaire seront affectés directement à temp. 7.3.3. Restrictions sur les Tablespace temporaire par défaut Les tablespaces temporaires ne peuvent être mis offline et ne peuvent être supprimés tant qu’un nouveau tablespace par défaut soit crée. D’autre part, un tablespace temporaire ne peut devenir un tablespace permanent. 7.4. Manipulation de Tablespace 7.4.1. Offline Status L'administrateur doit assurer la gestion de bases de données. Dans le cadre des tâches de maintenance, telles que la relocalisation d'un fichier de données, l'administrateur peut être amené à rendre indisponible un tablespace tout en autorisant l'accès normal au reste de la base de données. Pour cela, il peut mettre offline des tablespaces individuels. La commande SQL permettant de mettre offline un tablespace est la suivante : ALTER TABLESPACE tablespace { ONLINE | OFFLINE [ NORMAL | TEMPORARY | IMMEDIATE ] } ; Mettez le tablespace ACCOUNTS offline. ALTER TABLESPACE accounts OFFLINE NORMAL; Tablespace altered Oracle offre également une interface graphique, appelée Oracle Storage Manager, pour mettre un tablespace offline. Le tablespace SYSTEM, et les tablespaces avec des segments de undo ou temporaires actifs ne peuvent être mis offline. 7.4.2. Tablespace en lecture seul Pour répondre aux exigences en matière d'organisation, il se peut que l'administrateur dispose de tablespaces destinés à contenir des données de nature Dr Mohamed Salah GOUIDER Page 75 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE statique. Afin d'éviter d'avoir à procéder à des opérations de sauvegarde et de restauration de telles données statiques, l'administrateur peut mettre ces tablespaces en lecture seule. Ceci permet également de garantir qu'aucune opération d'écriture ne sera effectuée sur les données. Les fichiers de données peuvent être stockés sur des supports en lecture seule, tels que des CD-ROM ou des disques WORM, car le serveur Oracle ne met jamais à jour les fichiers d'un tablespace en lecture seule. La commande SQL permettant de mettre un tablespace en mode lecture seule est la suivante : ALTER TABLESPACE tablespace READ { ONLY | WRITE } ; Exemple : Mettez le tablespace ACCOUNTS en lecture seule. ALTER TABLESPACE accounts READ ONLY ; Tablespace altered. Outre la commande SQL, Oracle offre une interface graphique nommée Oracle Storage Manager permettant de mettre un tablespace en mode lecture seule. Il est possible de supprimer des objets comme des index ou des tables dans un tablespace en lecture seul. En effet, la commande DROP met à jour seulement le dictionnaire de données mais pas les fichiers physiques qui constituent le tablespace. Cependant, plusieurs conditions doivent être remplies pour pouvoir mettre un tablespace en mode lecture seule : • le tablespace doit être online, • aucune transaction active ne doit être en cours d'exécution sur ce tablespace • le tablespace ne doit contenir aucun rollback segment actif et ne doit pas être actuellement impliqué dans une sauvegarde online. Le moyen recommandé de se conformer à ces restrictions consiste à démarrer l'instance en mode restreint. En outre, la mise en lecture seule des tablespaces provoque un point de synchronisation sur les fichiers de données. Dr Mohamed Salah GOUIDER Page 76 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE 7.4.3. Tablespaces en lecture seul sur des supports en lecture seul L'administrateur de bases de données souhaite diminuer le temps passé sur les sauvegardes de données. Un moyen de diminuer ce temps consiste à stocker les données statiques dans des tablespaces en lecture seule, puis à les stocker sur des supports en lecture seule. Le stockage des données en lecture seule se déroule en trois étapes : • mettre le tablespace en lecture seule, • copier tous les fichiers de données du tablespace sur des supports en lecture seule, • renommer les fichiers de données afin qu'ils pointent vers le nouvel emplacement. 7.4.4. Supprimer un Tablespace En raison d'une modification des besoins des utilisateurs, il se peut que certains tablespaces ne soient plus nécessaires. La présence de ces tablespaces constitue un gaspillage d'espace disque. Pour résoudre ce problème, Oracle permet de supprimer de tels tablespaces. La commande SQL permettant de supprimer de tels tablespaces est la suivante : DROP TABLESPACE tablespace [INCLUDING CONTENTS [CASCADE CONSTRAINTS] ]; CASCADE CONSTRAINTS supprime les contraintes d'intégrité référentielle des tables se trouvant en dehors du tablespace. Il s'agit des contraintes qui font référence aux clés primaires et uniques des tables du tablespace supprimé. Exemple : Supprimez le tablespace ACCOUNTS DROP TABLESPACE accounts INCLUDING CONTENTS CASCADE CONSTRAINTS ; Tablespace dropped. Outre la commande SQL, Oracle offre une interface graphique, Oracle Storage Manager, permettant de supprimer un tablespace. Il est important de suivre un certain nombre de règles lors de la suppression d'un tablespace. Dr Mohamed Salah GOUIDER Page 77 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE • Il faut s'assurer que les transactions n'accèdent à aucun des segments du tablespace. Le meilleur moyen de garantir cela consiste à mettre d'abord le tablespace offline. • Si le tablespace est supprimé avec la commande SQL, il est important de se souvenir qu'un tablespace contenant encore des données ne peut pas être supprimé sans l'option INCLUDING CONTENTS. Lorsque le tablespace contient de nombreux objets, l'utilisation de l'option INCLUDING CONTENTS peut générer un grand nombre de rollback. Une alternative consiste à utiliser un script pour supprimer un par un les objets du tablespace, puis à supprimer le tablespace. 7.4.5. Conséquences de la suppression de tablespaces Pour économiser de l'espace disque, l'administrateur supprime les tablespaces qui ne sont plus nécessaires. Voici les conséquences de la suppression d'un tablespace : • Les données du tablespace supprimé ne sont plus disponibles, elles ne peuvent donc plus être interrogées. • Lors de la suppression d'un tablespace, seuls les pointeurs de fichiers dans le fichier de contrôle de la base de données associée sont supprimés. Pour récupérer l'espace disque utilisé par le tablespace, il faut supprimer explicitement les fichiers de données au niveau du système d'exploitation. • Si un tablespace en lecture seule est supprimé, les segments qu'il contient sont également supprimés. Dans ce cas, seuls le dictionnaire de données et les fichiers de données doivent être mis à jour. 7.5. Fichiers de manipulation des données 7.5.1. Mettre en place l extension automatique des fichiers de données La clause AUTOEXTEND permet d’autoriser ou non l’extension automatique des fichiers de données. Les commandes suivantes peuvent être utilisées pour spécifier l’extension automatique. • CREATE DATABASE • CREATE TABLESPACE … DATAFILE • ALTER TABLESPACE … ADD DATAFILE Dr Mohamed Salah GOUIDER Page 78 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Exemple : ALTER DATABASE DATAFILE ‘u01/oradata/userdata02.dbf’ SIZE 200m AUTOEXTEND ON NEXT 10M MAXSIZE 500M ; 7.5.2. Changer la taille des fichiers de données manuellement L'administrateur doit estimer les besoins d'espace d'une base de données. Cependant, lorsque l'administrateur utilise réellement la base de données, il se peut qu'il se rende compte que son estimation des besoins d'espace est erronée. Pour faire face à ce problème, Oracle permet de redimensionner les fichiers de données. La commande SQL permettant de redimensionner les fichiers de données d'un tablespace est la suivante : ALTER DATABASE [database] DATAFILE 'filename' [,'filename'] RESIZE integer [ K | M ]; Exemple : Affectez au fichier de données accts01.dbf du répertoire c:\ora92\database la nouvelle taille de 3 Mo à l'aide SQL*Plus : ALTER DATABASE DATAFILE 'c:\ora92\database\accts01.dbf' RESIZE 3M ; statement processed 4.5.3. Ajouter un fichier de données à un Tablespace Lorsque les tables sont remplies avec des objets pendant une période donnée, l'espace disponible dans les fichiers de données s'épuise. Pour faire face à cette situation, Oracle vous permet d'ajouter des fichiers de données aux tablespaces. Cette opération alloue davantage d'espace disque aux objets de la base de données. La commande SQL permettant d'ajouter un fichier de données à un tablespace est affichée à l'écran. ALTER TABLESPACE tablespace ADD DATAFILE 'filespec' [auto_extend_clause]; Dr Mohamed Salah GOUIDER Page 79 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Exemple : Ajoutez un fichier de données nommé accts02.dbf de 1 000 Ko situé dans le répertoire c:\ora92\database au tablespace ACCOUNTS. ALTER TABLESPACE accounts ADD DATAFILE 'c:\ora92\database\accts02.dbf' SIZE 1000K; tablespace altered. Outre la commande SQL, Oracle offre une interface graphique appelée Oracle Storage Manager afin de permettre d'ajouter un fichier de données à un tablespace. 4.5.4. Déplacer un fichier de données : ALTER TABLESPACE Fichier de données non-SYSTEM : Avec l'augmentation du nombre d'enregistrements de la base de données, la taille du fichier de données augmente également. Par conséquent, il peut arriver que le support de stockage du fichier de données ne dispose plus de suffisamment d'espace. Pour faire face à ce problème, Oracle permet de déplacer les fichiers de données vers un nouvel emplacement. ALTER TABLESPACE tablespace RENAME DATAFILE 'filename' [,'filename']... TO 'filename' [,'filename']... ; Exemple : Déplacez le fichier de données accts01.dbf du tablespace ACCOUNTS du répertoire c:\ora92\database. • Mettre offline le tablespace ACCOUNTS en mode normal ALTER TABLESPACE accounts OFFLINE NORMAL; Tablespace altered • Déplacez le fichier de données avec les commandes du système d'exploitation copy c:\ora92\database\accts01.dbf Dr Mohamed Salah GOUIDER Page 80 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE d:\ ora92\database\accts01.dbf 1 file(s) copied • Modifier le chemin d'accès du fichier de données ALTER TABLESPACE accounts RENAME DATAFILE 'c:\ora92\database\accts01.dbf' TO 'd:\ ora92\database\accts01.dbf' ; Tablespace altered. • Mettez online le tablespace ACCOUNTS ALTER TABLESPACE accounts ONLINE ; Tablespace altered • Supprimez le fichier d'origine dans le répertoire c:\ora92\database. Oracle Storage Manager peut déplacer les fichiers de données appartenant aux seuls tablespaces non-SYSTEM et ne contenant aucun rollback segment ou segment temporaire actif. Fichier de données SYSTEM : Le tablespace SYSTEM est nécessaire pour que la base de données fonctionne correctement. Cependant, dans certaines situations, telles que le remplacement du disque dur sur lequel les fichiers de données du tablespace SYSTEM sont actuellement stockés, l'administrateur doit déplacer les fichiers de données du tablespace SYSTEM vers un nouvel emplacement. Oracle permet de déplacer un fichier de données du tablespace SYSTEM vers un nouvel emplacement. Voici les étapes à suivre : • Arrêter la base de données • Utiliser une commande du système d'exploitation pour déplacer les fichiers de données vers le nouvel emplacement. • Monter la base de données • Déplacer le fichier de données du tablespace SYSTEM • Ouvrir la base de données Il faut toujours fournir les noms complets des fichiers accompagnés de leur chemin d'accès pour identifier les anciens et les nouveaux fichiers de données. Exemple : Dr Mohamed Salah GOUIDER Page 81 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE Déplacez le fichier de données SYS1ORCL.ORA du répertoire c:\ora92\database appartenant au tablespace SYSTEM vers le répertoire d:\orclbackup. • Montez la base de données • Copiez le fichier dans le répertoire d:\orclbackup avec les commandes du système d'exploitation • Déplacer les fichiers de données dans la base de données : ALTER DATABASE RENAME FILE 'c:\ora92\database\sys1orcl.ora' TO 'd:\orclbackup\sys1orcl.ora'; • Ouvrir la base de données 7.6. Autres options sur les Tablespaces 7.6.1. Configurer OMF pour la création de Tablespace Lorsque l’on configure OMF pour créer un tablespace, un paramètre d’initialisation est spécifié : DB_CREATE_FILE_DEST. Ce paramètre stocke le chemin par défaut des fichiers de données. Il existe deux moyens de le configurer, soit directement dans le fichier d’initialisation soit avec la commande suivante : ALTER SYSTEM SET db_create_file_dest = ‘u01/oradate/db01’; 7.6.2. Créer des Tablespaces avec OMF Lorsque l’on crée un tablespace avec OMF, la clause DATAFILE n’est pas obligatoire. Par défaut les fichiers ont une taille de 100M, paramétrés à autoextend et de taille maximale illimitée. CREATE TABLESPACE apps2_data DATAFILE SIZE 20M; 7.6.3. Récupérer des informations sur les Tablespaces L'organisation des données dans le tablespaces présente plusieurs avantages. Avantages liés à l'utilisation de plusieurs tablespaces : • L'utilisation de plusieurs tablespaces garantit que les données utilisateur et les données du dictionnaire de données peuvent être conservées Dr Mohamed Salah GOUIDER Page 82 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE • • • • • • séparément. Ceci permet une souplesse des opérations sur la base de données. Les données des différentes applications peuvent être stockées dans des tablespaces distincts. Ceci permet de garantir une bonne disponibilité des données. La réduction des contentions constitue un autre avantage de l'utilisation de plusieurs tablespaces. Les contentions E/S sont réduites grâce au stockage des fichiers de données de différents tablespaces sur des disques durs distincts. L'utilisation de plusieurs tablespaces constitue une protection contre la perte définitive de données. Cette protection est assurée par la séparation des rollback segments et des segments de données. L'utilisation de plusieurs tablespaces offre un degré élevé de flexibilité dans l'administration des données, car les tablespaces individuels peuvent être mis offline. Ceci permet également de garantir une bonne disponibilité des données. L'utilisation de plusieurs tablespaces permet également la sauvegarde des tablespaces individuels. L'utilisation de plusieurs tablespaces permet de réserver des tablespaces pour un type particulier d'activité sur la base de données, tel que des activités de mise à jour, des opérations en lecture seule et le stockage temporaire de segments. Ceci permet d'améliorer l'efficacité de la base de données. L'administrateur a besoin d'informations sur les tablespaces afin d'assurer une gestion efficace de la base de données. Oracle offre des vues du dictionnaire de données et des vues dynamiques sur les performances, qui vous permettent de rassembler des informations sur les tablespaces. Les noms des vues dynamiques sur les performances et des vues du dictionnaire de données sont les suivantes : • DBA_TABLESPACES Cette vue contient des informations sur les noms, les paramètres de stockage par défaut, les types et la disponibilité de tous les tablespaces. Exemple : Pour assurer une gestion efficace de la base de données, l'administrateur souhaite obtenir l'emplacement et les paramètres de stockage par défaut de tous les tablespaces. Dr Mohamed Salah GOUIDER Page 83 29/06/2006 Systèmes de Gestion des Bases de Données : ORACLE SELECT * FROM dba_tablespaces ; • DBA_DATA_FILES Cette vue contient des informations sur les fichiers de données appartenant à un tablespace spécifique ainsi que sur leurs paramètres AUTOEXTEND Exemple : L'administrateur souhaite afficher les tablespaces auxquels les fichiers de données appartiennent, ainsi que la valeur de l'option AUTOEXTEND. SELECT * FROM dba_data_files; • V$DATAFILE Cette vue dynamique contient des informations sur le nom du fichier de données, la taille, la disponibilité et les noms des tablespaces auxquels les fichiers de données appartiennent. • V$TEMPFILE Cette vue contient des informations sur les tablespaces temporaires. Dr Mohamed Salah GOUIDER Page 84 29/06/2006