oracle dba - architecture & administration vol.1

498
....................................................................................... 30049FR10 Production 1.0 Janvier 2001 D31191 Oracle DBA : Architecture et administration Volume 1 • Manuel du stagiaire

Upload: marcmariehenri

Post on 06-Dec-2015

33 views

Category:

Documents


16 download

DESCRIPTION

Oracle DBA course

TRANSCRIPT

Page 1: Oracle DBA - Architecture & Administration Vol.1

.......................................................................................

30049FR10

Production 1.0

Janvier 2001

D31191

Oracle DBA : Architecture et administration

Volume 1 • Manuel du stagiaire

Page 2: Oracle DBA - Architecture & Administration Vol.1

AuteursBruce Ernst

Hanne Rue Rasmussen

Ulrike Schwinn

Vijay Venkatachalam

Collaborateurs techniques et réviseursDavid Austin

Ben van Balen

Gerry Batista

Doug Bridges

Sandra Cheevers

Ralf Durben

Ari Fyhr

Joel Goodman

Scott Gossett

Lex de Haan

Tony Holbrook

Heike Hundt

Christine Jeal

Dominique Jeunot

Thomas Kerepes

Steven King

Pierre Labrousse

Dean Margolese

Jean-Marie Misztela

Tigger Newman

Howard Ostrow

Hans Proetzl

Gary Purcell

Shankar Raman

Donalyn Selinsky

Roger Simon

James Spiller

Ramonito Te

Sabine Teuber

Jean-Francois Verrier

Norbert Wittje

EditeurSherry Polm

Copyright Oracle Corporation, 1999. Tous droits réservés.

Cette documentation contient des informations qui sont la propriété d'OracleCorporation. Fournie sous accord de licence, elle est soumise à des restrictionsrelatives à l'utilisation et à la publication et est protégée par la loi relative auxdroits d'auteur. Il est interdit de rechercher le secret de fabrication du logiciel.Restrictions applicables au gouvernement américain : If this documentation isdelivered to a U.S. Government Agency of the Department of Defense, then it isdelivered with Restricted Rights and the following legend is applicable:

Restricted Rights LegendUse, duplication or disclosure by the Government is subject to restrictions forcommercial computer software and shall be deemed to be Restricted Rightssoftware under Federal law, as set forth in subparagraph (c) (1) (ii) of DFARS252.227-7013, Rights in Technical Data and Computer Software (October 1988).

If this documentation is delivered to a U.S. Government Agency not within theDepartment of Defense, then it is delivered with "Restricted Rights", as defined inFAR 52.227-14, Rights in Data-General, including Alternate III (June 1987).

Toute reproduction, même partielle, sous quelque forme et par quelque procédéque ce soit, est interdite sans l'autorisation expresse d'Oracle Corporation. Touteautre reproduction sera considérée comme une violation de la loi sur les droitsd'auteur et pourra entraîner des sanctions civiles et pénales.

Les informations fournies dans la documentation sont susceptibles demodification sans préavis. Par ailleurs, Oracle Corporation ne garantit pasqu'elles soient exemptes d'erreurs et vous invite, le cas échéant, à lui en faire partpar écrit.

SQL*Loader, SQL*Net, SQL*Plus, Net8, Oracle Call Interface, Oracle7, Oracle8,Oracle8i, Developer/2000, Developer/2000 Forms, Designer/2000, OracleEnterprise Manager, Oracle Parallel Server, PL/SQL, Pro*C, Pro*C/C++ etTrusted Oracle sont des marques ou des marques déposées d'OracleCorporation.

Tout autre nom de produit ou de société est utilisé à titre indicatif seulement etpeut être une marque de son propriétaire.

Page 3: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration iii

.....................................................................................................................................................Sommaire

Sommaire

Préface Profil xv

Informations complémentaires xvii

Conventions typographiques xviii

Introduction Objectifs I-2

Oracle8i Enterprise Edition I-3

Tâches de l'administrateur de base de données I-5

Agenda du cours I-6

Leçon 1 : Composants de l'architecture OracleObjectifs 1-2

Présentation 1-3

Fichiers de base de données Oracle 1-5

Autres fichiers importants 1-7

Instance de base de données Oracle 1-8

Traiter une instruction SQL 1-10

Se connecter à une base de données 1-11

Traiter une interrogation 1-13

Zone de mémoire partagée 1-15

Cache de tampons de la base de données 1-17

Zone PGA (Program Global Area) 1-18

Traiter une instruction LMD 1-19

Tampon de journalisation 1-21

Segment d'annulation 1-22

Validation : traitement de l'instruction COMMIT 1-23

Processus Log Writer 1-25

Autres processus d'instance de base de données 1-26

Processus Database Writer 1-27

Processus SMON : System Monitor 1-28

Processus PMON : Process Monitor 1-30

Archivage 1-31

Synthèse 1-33

Page 4: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................iv Oracle DBA : Architecture et administration

.....................................................................................................................................................Sommaire

Leçon 2 : Initiation à Oracle ServerObjectifs 2-2

Présentation 2-3

Oracle Universal Installer 2-4

Valider les utilisateurs ayant des privilèges 2-8

Oracle Enterprise Manager 2-15

Synthèse 2-30

Leçon 3 : Gérer une instance de base de données OracleObjectifs 3-2

Présentation 3-3

Etapes des procédures de démarrage et d'arrêt 3-10

Démarrer l'instance 3-13

Modifier la disponibilité de la base de données 3-16

Ouvrir une base de données en mode lecture seule 3-17

Arrêter 3-18

Extraire et définir les valeurs de paramètre 3-22

Gérer les sessions 3-29

Synthèse 3-36

Leçon 4 : Créer une base de donnéesObjectifs 4-2

Présentation 4-3

Préparer le système d'exploitation 4-4

Créer une base de données 4-10

Utiliser Database Configuration Assistant 4-11

Créer manuellement une base de données 4-15

Synthèse 4-30

Leçon 5 : Créer des vues du dictionnaire de données et des packages standard

Objectifs 5-2

Présentation 5-3

Présentation du dictionnaire de données 5-4

Contenu du dictionnaire de données 5-5

Tables de base et vues du dictionnaire de données 5-6

Utiliser le dictionnaire de données 5-7

Catégories de vues du dictionnaire de données 5-8

Exemples de dictionnaire de données 5-10

Page 5: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration v

.....................................................................................................................................................Sommaire

Vues dynamiques des performances 5-11

Programmes stockés 5-12

Programmes PL/SQL stockés 5-14

Packages 5-16

Exécuter un programme PL/SQL 5-17

Spécification et corps du package 5-18

Packages fournis par Oracle 5-19

Obtenir des informations 5-20

Dépannage 5-22

Construire le dictionnaire de données 5-23

Scripts d'administration 5-25

Exemple de package intégré 5-27

Déclencheurs 5-29

Composition d'un déclencheur 5-31

Exemple de déclencheur 5-33

Synthèse 5-34

Leçon 6 : Gérer le fichier de contrôleObjectifs 6-2

Utiliser le fichier de contrôle 6-3

Contenu du fichier de contrôle 6-4

Multiplexer le fichier de contrôle 6-6

Instructions relatives aux fichiers de contrôle 6-8

Obtenir des informations sur les fichiers de contrôle 6-10

Synthèse 6-12

Leçon 7 : Gérer les fichiers de journalisation (redo log)Objectifs 7-2

Présentation 7-3

Utiliser des fichiers de journalisation en ligne 7-4

Processus LGWR, changements de fichier de journalisation et points de reprise 7-6

Archiver les fichiers de journalisation 7-8

Obtenir des informations sur la journalisation et l'archivage 7-11

Gérer les changements de fichier de journalisation et les points de reprise 7-18

Multiplexer et gérer les membres et les groupes 7-21

Changer l'emplacement ou le nom des fichiers de journalisation en ligne (online) 7-24

Page 6: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................vi Oracle DBA : Architecture et administration

.....................................................................................................................................................Sommaire

Supprimer des groupes de fichiers de journalisation en ligne (online) et des membres 7-26

Planifier les fichiers de journalisation en ligne (online) 7-30

Dépannage 7-32

Utiliser LogMiner 7-33

Synthèse 7-40

Leçon 8 : Gérer les tablespaces et les fichiers de donnéesObjectifs 8-2

Présentation 8-3

Hiérarchie de stockage de la base de données 8-4

Tablespaces SYSTEM et non SYSTEM 8-7

Créer des tablespaces 8-8

Gestion de l'espace dans les tablespaces 8-12

Tablespaces gérés localement 8-13

Tablespace temporaire 8-15

Modifier les paramètres de stockage 8-18

Mettre des tablespaces "offline" ou "online" 8-20

Tablespaces accessibles en lecture seule 8-23

Supprimer des tablespaces 8-26

Redimensionner un tablespace 8-29

Activer le redimensionnement automatique des fichiers de données 8-30

Redimensionner manuellement des fichiers de données 8-33

Ajouter des fichiers de données à un tablespace 8-34

Déplacer des fichiers de données 8-36

Informations du dictionnaire de données 8-39

Instructions 8-40

Synthèse 8-42

Leçon 9 : Structure de stockage et relationsObjectifs 9-2

Présentation 9-3

Types de segment 9-4

Priorité des clauses de stockage 9-8

Allouer et libérer des extents 9-9

Extents utilisés et libres 9-10

Utiliser les paramètres d'utilisation de l'espace de bloc 9-11

Obtenir des informations sur les structures de stockage 9-16

Page 7: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration vii

.....................................................................................................................................................Sommaire

Interroger la vue DBA_SEGMENTS 9-17

Interroger la vue DBA_EXTENTS 9-18

Interroger la vue DBA_FREE_SPACE 9-19

Planifier l'emplacement des segments 9-20

Synthèse 9-22

Leçon 10 : Gérer les segments d'annulationObjectifs 10-2

Présentation 10-3

Segments d'annulation 10-4

Utiliser des segments d'annulation avec les transactions 10-8

Créer des segments d'annulation 10-12

Gérer les segments d'annulation 10-18

Obtenir des informations sur les segments d'annulation 10-26

Planifier les segments d'annulation 10-32

Dépannage : problèmes liés aux segments d'annulation 10-34

Synthèse 10-40

Leçon 11 : Gérer les tablesObjectifs 11-2

Présentation 11-3

Types de données Oracle 11-7

Créer une table 11-17

Contrôler l'espace utilisé par les tables 11-25

Extraire les informations relatives à une table 11-41

Synthèse 11-46

Leçon 12 : Gérer les indexObjectifs 12-2

Présentation 12-3

Créer des index 12-12

Réorganiser les index 12-22

Supprimer des index 12-29

Obtenir des informations sur les index 12-31

Synthèse 12-33

Page 8: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................viii Oracle DBA : Architecture et administration

.....................................................................................................................................................Sommaire

Leçon 13 : Gérer l'intégrité des donnéesObjectifs 13-2

Présentation 13-3

Contraintes d'intégrité 13-5

Mettre en œuvre des contraintes 13-14

Gérer les contraintes 13-19

Obtenir des informations sur les contraintes 13-26

Synthèse 13-29

Leçon 14 : Charger les donnéesObjectifs 14-2

Présentation 14-3

Charger des données à l'aide de la méthode d'insertion par chargement direct 14-5

Charger les données à l'aide de l'utilitaire SQL*Loader 14-8

Charger les données par chemin direct 14-29

Synthèse 14-30

Leçon 15 : Réorganiser les donnéesObjectifs 15-2

Présentation 15-3

Tablespaces transportables 15-25

Transporter un tablespace 15-27

Exporter et importer des métadonnées 15-28

Transporter un tablespace 15-30

Utilisation des tablespaces transportables 15-31

Tablespaces transportables et objets de schéma 15-32

Vérifier le jeu de tablespaces à transporter 15-33

Synthèse 15-34

Leçon 16 : Gérer la sécurité des mots de passe et les ressourcesObjectifs 16-2

Présentation 16-3

Gérer les mots de passe 16-5

Modifier et supprimer un profil 16-19

Gérer l'utilisation des ressources 16-23

Afficher des informations sur les limitations de mot de passe et d'utilisation de ressources 16-30

Synthèse 16-32

Page 9: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration ix

.....................................................................................................................................................Sommaire

Leçon 17 : Gérer les utilisateursObjectifs 17-2

Présentation 17-3

Créer des utilisateurs de base de données 17-6

Modifier et supprimer des utilisateurs de la base de données 17-14

Supprimer des utilisateurs 17-17

Surveiller les informations sur les utilisateurs 17-18

Synthèse 17-20

Leçon 18 : Gérer les privilègesObjectifs 18-2

Présentation 18-3

Privilèges système 18-4

Accorder des privilèges système 18-6

Authentification par le fichier de mots de passe 18-9

Afficher les privilèges système 18-11

Révoquer des privilèges système 18-14

Privilèges objet 18-17

Accorder des privilèges objet 18-18

Afficher les privilèges objet 18-20

Révoquer des privilèges objet 18-21

Instructions relatives à l'audit 18-25

Utiliser l'audit de base de données 18-29

Afficher les résultats d'un audit 18-36

Synthèse 18-37

Leçon 19 : Gérer les rôlesObjectifs 19-2

Présentation 19-3

Créer et modifier des rôles 19-5

Accorder des rôles 19-11

Gérer la disponibilité des rôles 19-13

Afficher les informations sur les rôles 19-22

Utiliser le contrôle d'accès de niveau fin 19-23

Synthèse 19-25

Page 10: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................x Oracle DBA : Architecture et administration

.....................................................................................................................................................Sommaire

Leçon 20 : Utiliser le support NLS (National Language Support)Objectifs 20-2

Présentation 20-3

Choisir une base de données et un jeu de caractères nationaux 20-5

Définir l'environnement dépendant de la langue 20-11

Paramètres NLS et fonctions SQL 20-19

Paramètres NLS dans des fonctions SQL 20-22

Support d'indexation linguistique 20-26

Importer et charger des données avec le support NLS 20-27

Obtenir des informations sur les paramètres NLS 20-28

Synthèse 20-33

Annexe A : ExercicesEnvironnement A-2

Exercice 1 : composants de l'architecture Oracle A-3

Exercice 2 : Initiation à Oracle Server A-5

Exercice 3 : gérer une instance Oracle A-6

Exercice 4 : créer une base de données A-8

Exercice 5 : créer des vues du dictionnaire de données etdes packages standard A-9

Exercice 6 : gérer le fichier de contrôle A-10

Exercice 7 : gérer les fichiers de journalisation A-11

Exercice 8 : gérer les tablespaces et les fichiers de données A-12

Exercice 9 : structure de stockage et relations A-13

Exercice 10 : gérer les segments d'annulation A-14

Exercice 11 : gérer les tables A-15

Exercice 12 : gérer les index A-17

Exercice 13 : gérer l'intégrité des données A-19

Exercice 14 : charger des données A-20

Exercice 15 : réorganiser les données A-21

Exercice 16 : gérer la sécurité des mots de passe A-22

Exercice 17 : gérer les utilisateurs A-23

Exercice 18 : gérer les privilèges A-24

Exercice 19 : gérer les rôles A-25

Exercice 20 : utiliser le support NLS (National Language Support) A-26

Page 11: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration xi

.....................................................................................................................................................Sommaire

Annexe B : ConseilsExercice 1 : composants de l'architecture Oracle B-2

Exercice 2 : initiation à Oracle Server B-3

Exercice 3 : gérer une instance Oracle B-4

Exercice 4 : créer une base de données B-7

Exercice 4 : créer une base de données (suite) B-8

Exercice 5 : créer des vues du dictionnaire de données etdes packages standard B-9

Exercice 6 : gérer le fichier de contrôle B-10

Exercice 7 : gérer les fichiers de journalisation B-11

Exercice 8 : gérer les tablespaces et les fichiers de données B-13

Exercice 9 : structure de stockage et relations B-15

Exercice 10 : gérer les segments d'annulation B-17

Exercice 11 : gérer les tables B-19

Exercice 12 : gérer les index B-21

Exercice 13 : gérer l'intégrité des données B-23

Exercice 14 : charger des données B-24

Exercice 15 : réorganiser les données B-25

Exercice 16 : gérer la sécurité des mots de passe B-26

Exercice 17 : gérer les utilisateurs B-27

Exercice 18 : gérer les privilèges B-28

Exercice 19 : gérer les rôles B-29

Exercice 20 : utiliser le support NLS (National Language Support) B-30

Annexe C : Solutions des exercices pour SQL*PlusSolutions de l'exercice 1 C-2

Solutions de l'exercice 2 C-4

Solutions de l'exercice 3 C-7

Solutions de l'exercice 4 C-16

Solutions de l'exercice 5 C-19

Solutions de l'exercice 6 C-23

Solutions de l'exercice 7 C-25

Solutions de l'exercice 8 C-31

Solutions de l'exercice 9 C-37

Solutions de l'exercice 10 C-43

Solutions de l'exercice 11 C-51

Solutions de l'exercice 12 C-56

Solutions de l'exercice 13 C-60

Page 12: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................xii Oracle DBA : Architecture et administration

.....................................................................................................................................................Sommaire

Solutions de l'exercice 14 C-66

Solutions de l'exercice 15 C-71

Solutions de l'exercice 16 C-75

Solutions de l'exercice 17 C-79

Solutions de l'exercice 18 C-82

Solutions de l'exercice 19 C-87

Solutions de l'exercice 20 C-90

Annexe D : Solutions des exercices d'Oracle Enterprise ManagerSolutions de l'exercice 1 D-2

Solutions de l'exercice 2 D-3

Solutions de l'exercice 3 D-4

Solutions de l'exercice 4 D-8

Solutions de l'exercice 5 D-9

Solutions de l'exercice 6 D-10

Solutions de l'exercice 7 D-12

Solutions de l'exercice 8 D-19

Solutions de l'exercice 9 D-25

Solutions de l'exercice 10 D-26

Solutions de l'exercice 11 D-37

Solutions de l'exercice 12 D-42

Solutions de l'exercice 13 D-47

Solutions de l'exercice 14 D-49

Solutions de l'exercice 15 D-51

Solutions de l'exercice 16 D-57

Solutions de l'exercice 17 D-62

Solutions de l'exercice 18 D-69

Solutions de l'exercice 19 D-74

Solutions de l'exercice 20 D-78

Annexe E : Test de certification : Exemples de questionsProgramme OCP (Oracle Certified Professional) : Section Oracle Certified Database Administrator E-2

Administration de bases de données Oracle : exemple de test E-3

Sauvegarde et restauration Oracle : exemple de test E-5

Réponses E-8

Inscription aux tests de certification OCP E-9

Page 13: Oracle DBA - Architecture & Administration Vol.1

.................................

Préface

Page 14: Oracle DBA - Architecture & Administration Vol.1
Page 15: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration xv

.....................................................................................................................................................Profil

ProfilLe présent cours est conçu pour fournir à l'administrateur de base de données (DBA) Oracle des bases solides sur les tâches d'administration de base. Le premier but de ce cours est d'apporter au DBA les connaissances et les compétences nécessaires pour configurer et dépanner une base de données Oracle, ou pour en assurer la maintenance. Ce cours a été conçu pour les administrateurs de base de données, les analystes de support technique, les administrateurs système, les développeurs d'applications, les responsables de système d'information de gestion et les autres utilisateurs de produits Oracle.

Cette préface contient les sections suivantes :

• Avant de commencer ce cours

• Connaissances préalables nécessaires

• Organisation du cours

• Organisation de ce manuel

• Documentation

• Conventions typographiques

Avant de commencer ce coursEn tant que participant, vous devez disposer d'un certain nombre de compétences pour pouvoir tirer le meilleur parti de ce cours, notamment :

• connaître les concepts des bases de données relationnelles,

• avoir une très bonne maîtrise des langages SQL, SQL*Plus et PL/SQL,

• connaître le fonctionnement de base d'un système d'exploitation,

• avoir une expérience de l'environnement Oracle.

Connaissances préalables nécessaires• SQL 1,

• bases de PL/SQL.

Page 16: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................xvi Oracle DBA : Architecture et administration

.....................................................................................................................................................Préface

Organisation du coursOracle DBA : Architecture et administration est un cours en salle dispensé sous forme d'exposés théoriques et d'exercices pratiques. Des démonstrations et des animations en ligne ainsi que des sessions d'exercices écrits permettent de consolider l'acquisition des concepts et des compétences abordés. Le cours est complété par des travaux pratiques destinés à tester les connaissances et comportant des scénarios et de nouveaux exercices pour les utilisateurs NT.

De plus, des bulletins techniques du support technique Oracle, qui traitent les questions les plus fréquemment posées, sont utilisés afin de préparer les participants à des problèmes de dépannage concrets.

Ce cours affiche des objectifs clairement définis : aider à la préparation de l'examen Oracle Certified Professional.

Page 17: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration xvii

.....................................................................................................................................................Informations complémentaires

Informations complémentaires

Documentation Oracle

Sites Web

Oracle Education Student UnionVous pouvez, au sein de l'association Student Union (communauté en ligne de stagiaires Oracle), poursuivre votre apprentissage à travers des groupes de discussion en ligne avec des formateurs Oracle ou en suivant des petits modules de cours en ligne via un système vidéo en temps réel. Vous pouvez également trouver des informations didactiques utiles au niveau du centre de ressources.

Connectez-vous au site d'Oracle Education Student Union http://education.oracle.com.

Consultez l'un des petits chapitres suivants :

• Oracle8i-Managebility Enhancements

• Overview of Oracle8i PL/SQL Features and Positioning

Autre documentation• System release bulletins (bulletins techniques)

• Guides d'installation et de configuration

• Articles du groupe IOUG (International Oracle User's Group)

• Oracle Magazine

Titre Référence

Oracle8i Generic Documentation Set, Release 8.1.5 A69148

Oracle8i Enterprise Edition : Getting Started Release 8.1.5 for Windows NT A68694-02

Oracle8i : Administrator's Reference Release 8.1.5 for SunSPARC Solaris A67456-01

Oracle Press : Oracle8 : DBA Handbook A54760

Oracle Press : Oracle8 : A Beginner's Guide A54756

Oracle Press : Oracle8 : The Complete Reference A54759

Oracle Enterprise Manager Documentation Set A67817

http://www.oracle.com

http://education.oracle.com

http://www.oramag.com

Page 18: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................xviii Oracle DBA : Architecture et administration

.....................................................................................................................................................Préface

Conventions typographiques

Conventions typographiques appliquées dans le texte du coursConvention Elément ExempleGras, italique Terme du glossaire

(le cas échéant)L'algorithme insère la nouvelle clé.

Majuscules et minuscules

Boutons,cases à cocher, déclencheurs,fenêtres

Cliquez sur le bouton Executable.

Cochez la case Can't Delete Card.

Attribuez un déclencheur When-Validate-Item. . .

Ouvrez la fenêtre Master Schedule.Courier new,respect maj/min (par défaut : minuscule)

Sortie de code, noms de répertoire, noms de fichier,mots de passe, chemins d'accès,URL,entrée utilisateur, noms utilisateur

Sortie de code : debug.seti('I',300);

Répertoire : bin (DOS), $FMHOME (UNIX)

Nom de fichier : Localisez le fichier init.ora.

Mot de passe : Utilisez tiger comme mot de passe.

Chemin d'accès : Ouvrez c:\my_docs\projects

URL : Accédez au site http://www.oracle.com

Entrée utilisateur : Entrez 300

Nom utilisateur : Connectez-vous sous l'ID utilisateur scott

Majuscule initiale Libellés de graphique (à moins que le terme ne soit un nom propre)

Adresse client (mais Oracle Payables)

Italiques Mise en évidence de mots, de phrases,de titres d'ouvrageet de cours, de variables

N'enregistrez pas les modifications dans la base de données.

Pour plus d'information, voir Oracle7 Server SQL Language Reference Manual.

Entrez [email protected], où user_id est le nom de l'utilisateur.

Guillemets Eléments d'interface avec des noms longs et dont seules les initiales sont en majuscules, ainsi que les titres de chapitre dans des références croisées

Sélectionnez "Include a reusable module component", puis cliquez sur le bouton Finish.

Ce sujet est traité dans l'unité II, chapitre 3, "Gestion des objets."

Page 19: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration xix

.....................................................................................................................................................Conventions typographiques

Conventions typographiques appliquées dans les exemples de code

Conventions typographiques appliquées dans les chemins de navigationCe cours utilise des chemins de navigation simplifiés pour vous diriger à travers les applications Oracle. Voir l'exemple suivant :

(N) Invoice—>Entry—>Invoice Batches Summary (M) Query—>Find (B) Approve

Ce chemin de navigation simplifié s'interprète comme suit :

1 (N) Depuis la fenêtre du Navigateur, sélectionnez Invoice—>Entry—>Invoice Batches Summary.

2 (M) Dans la barre de menus, sélectionnez Query—>Find.

3 (B) Cliquez sur le bouton Approve.

N = Navigateur, M = Menu, B = Bouton

Majuscules Noms de colonne SQL, commandes, fonctions, schémas, noms de table

Utilisez la commande SELECT pour visualiser les informations stockées dans la colonne LAST_NAME de la table EMP.

Flèche Chemins de menu Sélectionnez File—>Save.Crochets Noms des touche Appuyez sur [Entrée].Virgules Séquences de

touchesAppuyez successivement sur ces touches, puis relâchez-les :[Alt], [F], [D]

Signes plus Combinaisons de touches

Appuyez simultanément sur ces touches et maintenez-les enfoncées :[Ctrl]+[Alt]+[Suppr]

Convention Elément ExempleMajuscules et minuscules

Déclencheurs Oracle Forms

When-Validate-Item

Minuscules Noms de colonne, noms de table

SELECT last_name

FROM s_emp;

Mots de passe DROP USER scott

IDENTIFIED BY tiger;

Objets PL/SQL OG_ACTIVATE_LAYER

(OG_GET_LAYER ('prod_pie_layer'))

Minuscules italiques

Variables CREATE ROLE role

Majuscules Commandes et fonctions SQL

SELECT userid

FROM emp;

Convention Elément Exemple

Page 20: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................xx Oracle DBA : Architecture et administration

.....................................................................................................................................................Préface

Page 21: Oracle DBA - Architecture & Administration Vol.1

................................

I

Introduction

Page 22: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................I-2 Oracle DBA : Architecture et administration

.....................................................................................................................................................Introduction

Objectifs

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Objectifs du cours

A la fin de ce cours, vous pourrez :

• démarrer et arrêter une instance et une basede données Oracle,

• créer une base de données opérationnelle,

• gérer des fichiers de base de données Oracle,

• gérer des tablespaces, des segments, des extents(ensembles de blocs contigus) et des blocs,

• gérer des utilisateurs, des privilèges et desressources,

• utiliser les fonctions NLS (National LanguageSupport).

Page 23: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration I-3

.....................................................................................................................................................Oracle8i Enterprise Edition

Oracle8i Enterprise Edition

Description d'Oracle8i Enterprise EditionOracle8i Enterprise Edition est une base de données relationnelle orientée objet, évolutive et facile à gérer. Le présent cours porte sur l'administration de la version Enterprise Edition de base. Toutefois, les options suivantes offrent des fonctionnalités supplémentaires :

• Partitionnement : fournit des fonctions permettant de mettre en œuvre de grandes applications évolutives. L'option Partitionnement permet de gérer les tables et les index avec un niveau de finesse supérieur à celui de la version de base Enterprise Edition.

• Oracle Parallel Server : améliore l'évolutivité et la disponibilité d'une base de données en permettant à plusieurs instances du logiciel Oracle d'accéder à une base de données.

• Oracle Enterprise Manager Packs : reposent sur Oracle Enterprise Manager. Oracle Enterprise Manager Diagnostics Pack, Tuning Pack et Change Management Pack sont des extensions fournissant aux administrateurs de base de données (DBA) des outils évolués de diagnostic, de contrôle, de réglage (tuning) et de modification de la gestion des environnements Oracle. Oracle Enterprise Manager fournit également DBA Management Pack permettant d'effectuer des tâches d'administration générales, telles que créer des utilisateurs, démarrer une instance, accorder des privilèges, etc.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Oracle8i Enterprise Edition

Sécuritéavancée

Parallel Server

JServer

Partitionnement

Oracle EnterpriseManager Packs

Page 24: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................I-4 Oracle DBA : Architecture et administration

.....................................................................................................................................................Introduction

Description d'Oracle8i Enterprise Edition (suite)• Oracle JServer : permet aux utilisateurs de définir une variété de modèles

de programmation d'application, notamment des procédures stockées et des déclencheurs Java, des méthodes Java de types d'objet relationnel, des objets CORBA, Enterprise JavaBeans, des servlets Java et Java Server Pages. Il prend également en charge divers protocoles standard, tels que les protocoles IIOP (Internet Inter-ORB Protocol) et HTTP (Hypertext Transfer Protocol), en plus de Net8.

• Sécurité avancée : fournit une sécurité client-serveur et serveur-serveur avec cryptage des données et vérification de l'intégrité des données, et prend en charge des services évolués d'authentification des utilisateurs à l'aide de services de sécurité tiers.

Page 25: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration I-5

.....................................................................................................................................................Tâches de l'administrateur de base de données

Tâches de l'administrateur de base de données

Description du coursCe cours est le premier d'une série de quatre cours portant sur les principales tâches d'administration d'une base de données. Les tâches abordées dans ce cours sont les suivantes :

• gestion de la disponibilité d'une base de données,

• planification et création d'une base de données,

• gestion des structures physiques,

• gestion du stockage en fonction de spécifications de conception,

• gestion des utilisateurs de la base de données et contrôle de leurs actions.

Tâches d'administration de base de données traitées dans les autres coursLes tâches suivantes sont étudiées dans d'autres cours :

• Administration du réseau dans Oracle DBA : Administration du réseau

• Sauvegarde et restauration dans Oracle DBA : Sauvegarde et restauration

• Réglage de base de données dans Oracle DBA : Tuning

• Oracle Enterprise Manager dans Oracle Enterprise Manager V2

Copyright Oracle Corporation, 1999. Tous droits réservés.®

• Gestion de la disponibilité des bases de données

• Planification et création des bases de données

• Gestion des structures physiques

• Gestion du stockage en fonction des bases

• Gestion de la sécurité

Tâches de l'administrateurde base de données

• Administration de réseau

• Sauvegarde et restauration

• Réglage des bases de données

Page 26: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................I-6 Oracle DBA : Architecture et administration

.....................................................................................................................................................Introduction

Agenda du cours

Agenda du coursVoici l'agenda recommandé de ce cours :

Premier jourChapitre 1 : Composants de l'architecture Oracle

Chapitre 2 : Initiation à Oracle Server

Chapitre 3 : Gérer une instance de base de données Oracle

Chapitre 4 : Créer une base de données (cours)

Deuxième jourChapitre 4 : Créer une base de données (exercice)

Chapitre 5 : Créer les vues du dictionnaire de données et les packages standard

Chapitre 6 : Gérer le fichier de contrôle

Chapitre 7 : Gérer les fichiers de journalisation

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Programme suggéré

Début

Chapitre 1

Chapitre 4 (exercice)

Chapitre 8

Chapitre 12

Chapitre 16

Jour

1

2

3

4

5

Fin

Chapitre 4

Chapitre 7

Chapitre 11

Chapitre 15

Chapitre 20

Page 27: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration I-7

.....................................................................................................................................................Agenda du cours

Agenda du cours (suite)

Troisième jourChapitre 8 : Gérer les tablespaces et les fichiers de données

Chapitre 9 : Structure de stockage et relations

Chapitre 10 : Gérer les segments d'annulation

Chapitre 11 : Gérer les tables

Quatrième jourChapitre 12 : Gérer les index

Chapitre 13 : Gérer l'intégrité des données

Chapitre 14 : Charger les données

Chapitre 15 : Réorganiser les données

Cinquième jourChapitre 16 : Gérer la sécurité par mots de passe et les ressources

Chapitre 17 : Gérer les utilisateurs

Chapitre 18 : Gérer les privilèges

Chapitre 19 : Gérer les rôles

Chapitre 20 : Utiliser le support NLS (National Language Support)

Page 28: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................I-8 Oracle DBA : Architecture et administration

.....................................................................................................................................................Introduction

Page 29: Oracle DBA - Architecture & Administration Vol.1

.................................

1

Composants del'architecture Oracle

Page 30: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-2 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Objectifs

ObjectifsCe chapitre présente l'architecture du serveur Oracle en examinant les fichiers, les processus et les structures de mémoire nécessaires à l'établissement d'une connexion à une base de données et à l'exécution d'une commande SQL.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Objectifs

A la fin de ce chapitre, vous pourrez :

• décrire l'architecture du serveur Oracle et sesprincipaux composants,

• énumérer les structures intervenant dans laconnexion d'un utilisateur à une instance de basede données Oracle,

• énumérer les étapes du traitement :

– interrogations SQL,

– instructions LMD,

– instructions COMMIT.

Page 31: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-3

.....................................................................................................................................................Présentation

Présentation

Présentation Le serveur Oracle est un système de gestion de base de données relationnelle orientée objet qui offre une méthode de gestion ouverte, complète et intégrée des informations.

Principaux composantsUn serveur Oracle contient plusieurs processus, structures de mémoire et fichiers, mais ces éléments ne sont pas tous utilisés dans le traitement des instructions SQL. Certains de ces éléments améliorent les performances de la base de données, permettent de récupérer son contenu en cas d'incident logiciel ou matériel, ou exécutent d'autres tâches nécessaires à la gestion de la base de données. Le serveur Oracle est constitué d'une instance de base de données Oracle et d'une base de données Oracle.

Instance de base de données Oracle Une instance de base de données Oracle combine les processus d'arrière-plan et les structures de mémoire. Pour accéder aux données de la base de données, vous devez démarrer l'instance de base de données. Chaque fois que vous démarrez une instance de base de données, une zone de mémoire SGA (System Global Area) est allouée et des processus d'arrière-plan Oracle sont lancés.

• La mémoire SGA est une zone de mémoire dans laquelle sont stockées des informations sur la base de données, qui sont partagées par les processus de base de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Base de données

PrésentationInstance

Tampon dejournalisation

Cache detampons

de donnéesCache du dict.de données

Cache"library"

PMON DBW0SMON LGWRCKPT Autres

PGA

Fichiersde

données

Fichiersjournauxarchivés

Fichier deparamètres

Fichier de motsde passe

Processus utilisateur

Processusserveur

Zone de mémoirepartagée

SGA

Fichiersde journa-

lisation

Fichiers de

contrôle

Page 32: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-4 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Principaux composants (suite)

Instance de base de données Oracle (suite)• Les processus d'arrière-plan exécutent des fonctions pour le compte du processus

appelant. Ils regroupent des fonctions qui, autrement, seraient gérées par plusieurs programmes Oracle dédiés à chaque utilisateur. Les processus d'arrière-plan exécutent des opérations d'entrée/sortie et surveillent d'autres processus Oracle afin de permettre un plus grand parallélisme et d'améliorer les performances et la fiabilité.

Autres processus Le processus utilisateur est l'application qui émet les instructions SQL. Le processus serveur exécute les instructions SQL envoyées par le processus utilisateur.

Fichiers de base de données Les fichiers de base de données sont des fichiers du système d'exploitation qui fournissent l'espace de stockage physique réel des données de la base. Ces fichiers permettent de maintenir la cohérence des données et peuvent être récupérés en cas de défaillance de l'instance de base de données.

Autres fichiers Les fichiers qui ne sont pas des fichiers de base de données permettent de configurer l'instance de base de données, d'authentifier les utilisateurs ayant des privilèges et de récupérer la base de données en cas de défaillance du disque.

Traitement d'une instruction SQLLes processus utilisateur et serveur sont les principaux processus intervenant dans l'exécution d'une instruction SQL. Néanmoins, d'autres processus peuvent intervenir dans le traitement de l'instruction SQL par le serveur.

Administrateur de base de données OracleL'administrateur de base de données est responsable de la gestion du serveur Oracle, afin que celui-ci puisse traiter correctement les demandes des utilisateurs. Il doit bien maîtriser l'architecture Oracle pour pouvoir la gérer efficacement.

Ce cours porte principalement sur la création et la gestion d'un serveur Oracle auquel les utilisateurs accèdent en se connectant directement à l'ordinateur qui exécute le serveur ou à l'aide d'un modèle client-serveur.

Page 33: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-5

.....................................................................................................................................................Fichiers de base de données Oracle

Fichiers de base de données Oracle

Fichiers de base de données OracleUne base de données Oracle est un ensemble de données traitées comme une entité unique. En règle générale, une base de données a pour fonction de stocker des informations associées et de permettre leur extraction. Une base de données possède une structure logique et une structure physique. La structure physique correspond aux fichiers du système d'exploitation de la base de données. Une base de données Oracle est constituée de trois types de fichier :

• Les fichiers de données contiennent les données réelles de la base de données. Les données sont stockées dans des tables définies par l'utilisateur, mais les fichiers de données contiennent également le dictionnaire de données, les images avant des données modifiées, des index et d'autres types de structure. Une base de données contient au moins un fichier de données. Les caractéristiques des fichiers de données sont les suivantes :

– Un fichier de données ne peut être associé qu'à une seule base de données.

– Les fichiers de données peuvent présenter des caractéristiques qui leur permettent de s'étendre automatiquement lorsque l'espace disponible est insuffisant dans la base de données.

– Une unité logique de stockage, appelée tablespace, est constituée d'au moins un fichier de données. La structure logique d'une base de données est expliquée dans le chapitre 8, "Gérer les tablespaces et les fichiers de données".

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Fichiers de base de données Oracle

Base de données

Fichiersde données

Fichiersjournauxarchivés

Fichier deparamètres

Fichier de motsde passe

Fichiers dejourna-lisation

Fichiers decontrôle

Page 34: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-6 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Fichiers de base de données Oracle (suite)• Les fichiers de journalisation (redo logs) contiennent un enregistrement des

modifications apportées à la base de données afin de permettre la récupération des données en cas d'incident. Une base de données nécessite au moins deux fichiers de journalisation.

• Les fichiers de contrôle contiennent les informations nécessaires au maintien et à la vérification de l'intégrité de la base de données. Un fichier de contrôle, par exemple, identifie les fichiers de données et les fichiers de journalisation. Une base de données doit posséder au moins un fichier de contrôle.

Page 35: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-7

.....................................................................................................................................................Autres fichiers importants

Autres fichiers importants

Autres fichiers importantsLe serveur Oracle utilise également d'autres fichiers qui ne font pas partie de la base de données :

• Le fichier de paramètres définit les caractéristiques d'une instance de base de données Oracle. Ce fichier contient, par exemple, des paramètres qui définissent la taille de certaines structures de la mémoire SGA.

• Le fichier de mots de passe authentifie les utilisateurs autorisés à démarrer et à arrêter une instance de base de données Oracle.

• Les fichiers de journalisation archivés sont des copies "offline" des fichiers de journalisation qui peuvent être nécessaires à la récupération des données à la suite d'une défaillance physique.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Autres structures physiques importantes

Base de donnéesFichiersjournauxarchivés

Fichier deparamètres

Fichier de motsde passe

Page 36: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-8 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Instance de base de données Oracle

Instance de base de données Oracle Une instance de base de données Oracle est constituée de la structure de mémoire SGA et des processus d'arrière-plan utilisés pour gérer une base de données. Une instance de base de données est identifiée à l'aide de méthodes propres à chaque système d'exploitation. L'instance de base de données ne peut ouvrir et utiliser qu'une seule base de données à la fois.

Mémoire SGA (System Global Area)La mémoire SGA est une zone de mémoire permettant de stocker les informations qui sont partagées par les processus de base de données. Cette zone de mémoire contient des données et des informations de contrôle utilisées par le serveur Oracle. Elle est allouée dans la mémoire virtuelle de l'ordinateur sur lequel réside le serveur Oracle. La mémoire SGA est constituée de plusieurs structures :

• La zone de mémoire partagée permet de stocker les dernières instructions SQL exécutées, ainsi que les dernières données du dictionnaire utilisées. Ces instructions SQL peuvent être soumises par un processus utilisateur ou, dans le cas de procédures stockées, lues dans le dictionnaire de données.

• Le cache de tampons de la base de données (database buffer cache) sert à stocker les dernières données utilisées. Les données sont lues et écrites dans les fichiers de données.

• Le tampon de journalisation (redo log buffer) permet le suivi des modifications apportées à la base de données par le serveur et les processus d'arrière-plan.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Instance de base de données Oracle

Processusd'arrièreplan

Une instance de base de données Oracle :

• permet d'accéder à une base de données Oracle,

• ouvre toujours une seule base de données.

Structures demémoire

Tampon dejournalisation

Cache detampons

de données

PMON DBW0SMON LGWRCKPT Autres

Zone de mémoirepartagée

SGA

Instance

Page 37: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-9

.....................................................................................................................................................Instance de base de données Oracle

Mémoire SGA (System Global Area) (suite)Le rôle de ces structures est expliqué en détail dans les sections suivantes de ce chapitre.

La mémoire SGA contient également deux structures de mémoire optionnelles :

• Zone de mémoire Java : utilisée pour stocker le code Java.

• Zone de mémoire LARGE POOL : utilisée pour stocker de grandes structures de mémoire qui ne sont pas directement associées au traitement des instructions SQL (par exemple, les blocs de données copiés lors d'opérations de sauvegarde et de restauration des données).

Processus d'arrière-planLes processus d'arrière-plan d'une instance de base de données exécutent des fonctions courantes qui permettent de traiter les demandes simultanées des utilisateurs sans affecter l'intégrité et les performances du système. Ces processus regroupent des fonctions qui, autrement, seraient traitées par plusieurs programmes Oracle dédiés à chaque utilisateur. Les processus d'arrière-plan exécutent des opérations d'entrée/sortie et surveillent d'autres processus Oracle afin d'améliorer le parallélisme et donc les performances et la fiabilité.

Selon sa configuration, une instance de base de données Oracle peut contenir plusieurs processus d'arrière-plan parmi lesquels doivent obligatoirement figurer les cinq suivants :

• Le processus DBW0 (Database Writer) écrit dans les fichiers de données les données modifiées qui figurent dans le cache de tampons de la base de données.

• Le processus LGWR (Log Writer) écrit dans les fichiers de journalisation les modifications enregistrées dans le tampon de journalisation.

• Le processus SMON (System Monitor) vérifie la cohérence de la base de données et, si nécessaire, lance la restauration de la base lorsqu'elle est ouverte.

• Le processus PMON (Process Monitor) libère les ressources en cas d'échec de l'un des processus Oracle.

• Le processus CKPT (Checkpoint) met à jour les informations de statut de la base de données dans les fichiers de contrôle et les fichiers de données lorsque les modifications présentes dans le cache de tampons (buffer cache) sont enregistrées définitivement dans la base de données.

Les sections suivantes de ce cours expliquent comment un processus serveur utilise certains composants de l'instance et de la base de données Oracle pour traiter les instructions SQL soumises par un processus utilisateur.

Page 38: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-10 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Traiter une instruction SQL

Composants utilisés pour traiter une instruction SQLLes composants d'une instance de base de données Oracle n'interviennent pas tous dans le traitement d'une instruction SQL.

• Les processus utilisateur et serveur permettent de connecter un utilisateur à une instance de base de données Oracle. Ces processus ne font pas partie de l'instance de base de données Oracle, mais ils sont nécessaires au traitement d'une instruction SQL.

• Certains processus d'arrière-plan, structures de mémoire SGA et fichiers de base de données sont utilisés dans le traitement d'une instruction SQL. Différents composants sont utilisés, selon le type de l'instruction SQL :

– Les interrogations nécessitent un traitement complémentaire pour renvoyer des lignes à l'utilisateur.

– Les instructions LMD (langage de manipulation de données) nécessitent un traitement complémentaire pour consigner les modifications apportées aux données.

– La validation garantit que les données modifiées dans une transaction peuvent être récupérées.

• Certains processus d'arrière-plan indispensables n'interviennent pas directement dans le traitement d'une instruction SQL, mais permettent d'améliorer les performances et de récupérer la base de données.

• Le processus d'arrière-plan optionnel ARC0 permet de garantir la possibilité de récupérer une base de données de production.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Traiter une instruction SQL

• Connexion à une instance de basede données à l'aide :

– d'un processus utilisateur,

– d'un processus serveur.

• Les composants du serveur Oracle utilisésdépendent du type de l'instruction SQL :

– Les interrogations renvoient des lignes.

– Les instructions LMD effectuent des modifications.

– La validation permet de récupérer les transactions.

• Certains composants du serveur Oraclen'interviennent pas dans le traitement desinstructions SQL.

Page 39: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-11

.....................................................................................................................................................Se connecter à une base de données

Se connecter à une base de données

Processus de connexion à une instance de base de donnéesPour pouvoir soumettre des instructions SQL à Oracle, l'utilisateur doit se connecter à une instance de base de données.

• L'utilisateur démarre un outil, par exemple SQL*Plus, ou exécute une application développée à l'aide d'un outil tel qu'Oracle Forms. Cette application ou cet outil est exécuté dans un processus utilisateur.

• Dans la configuration la plus simple, un processus est créé sur l'ordinateur qui exécute le serveur Oracle lorsqu'un utilisateur se connecte au serveur. Ce processus s'appelle un processus serveur. Ce processus communique avec l'instance de base de données Oracle pour le compte du processus utilisateur exécuté sur le client. Le processus serveur exécute les instructions SQL pour le compte de l'utilisateur.

ConnexionUne connexion est un chemin de communication entre un processus utilisateur et un serveur Oracle. L'utilisateur d'une base de données peut se connecter à un serveur Oracle de trois manières :

• Il peut se connecter au système d'exploitation qui exécute l'instance de base de données Oracle et démarrer une application ou un outil qui accède à la base de données du système. Le chemin de communication est établi à l'aide des mécanismes de communication interprocessus du système d'exploitation hôte.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Se connecter à une instance

ServeurUtilisateur

Client

UtilisateurServeur

Serveur Oracle

Serveur

Utilisateur Serveur

Serveurd'applications

Navigateur

Page 40: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-12 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Connexion (suite)• L'utilisateur démarre l'application ou l'outil sur un ordinateur local et se connecte,

via un réseau, à l'ordinateur qui exécute l'instance de base de données Oracle. Dans cette configuration, appelée client-serveur, le logiciel réseau permet à l'utilisateur et au serveur Oracle de communiquer.

• Dans une connexion à trois niveaux (3-tiers), l'ordinateur de l'utilisateur communique, sur le réseau, avec une application ou un serveur réseau. Ce dernier est connecté, via un réseau, à la machine exécutant l'instance de base de données Oracle. Par exemple, l'utilisateur exécute un navigateur sur un ordinateur en réseau pour utiliser une application résidant sur un serveur NT qui extrait les données d'une base de données Oracle s'exécutant sur un hôte UNIX.

SessionsUne session est une connexion spécifique d'un utilisateur à un serveur Oracle. La session démarre lorsque l'utilisateur est authentifié par le serveur Oracle, et elle se termine lorsque l'utilisateur se déconnecte ou lorsqu'un arrêt anormal se produit. Un utilisateur de base de données peut ouvrir plusieurs sessions simultanées s'il se connecte simultanément à partir de plusieurs outils, applications ou terminaux. En règle générale, le serveur Oracle doit être disponible pour que l'on puisse ouvrir une session, sauf si l'ouverture est effectuée par certains outils spéciaux d'administration de base de données.

Remarque : Le type de connexion décrit ici, impliquant une correspondance un à un entre l'utilisateur et le processus serveur, est appelé "connexion serveur dédiée". Dans le cadre d'une configuration de serveur multithread, plusieurs processus utilisateur peuvent partager des processus serveur. Les serveurs multithread sont décrits en détail dans le cours "Oracle DBA : Administration du réseau".

Page 41: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-13

.....................................................................................................................................................Traiter une interrogation

Traiter une interrogation

Etapes du traitement d'une interrogationLes interrogations se distinguent des autres types d'instruction SQL dans la mesure où, lorsqu'elles aboutissent, elles renvoient des données. Contrairement aux autres instructions qui renvoient simplement un code de réussite ou d'échec, une interrogation peut renvoyer une ligne ou des milliers de lignes.

Le traitement d'une interrogation s'effectue selon trois étapes principales :1 l'analyse,

2 l'exécution,

3 l'extraction.

Analyse d'une instruction SQL Lors de l'analyse, l'instruction SQL est transmise par le processus utilisateur au processus serveur, et la représentation analysée de l'instruction SQL est chargée dans une zone SQL partagée.

Au cours de cette étape, le processus serveur :

• recherche une copie de l'instruction SQL dans la zone de mémoire partagée,

• valide l'instruction SQL après avoir vérifié sa syntaxe,

• effectue des recherches dans le dictionnaire de données pour valider les définitions de table et de colonne,

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Traiter une interrogation

• Analyse :

– recherche d'une instruction identique,

– vérification de la syntaxe, du nom des objetset des privilèges,

– verrouillage des objets utilisés pendant l'analyse,

– création et enregistrement du plan d'exécution.

• Exécution : identification des lignes sélectionnées.

• Extraction : renvoi des lignes au processusutilisateur.

Page 42: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-14 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Etapes du traitement d'une interrogation (suite)

Analyse d'une instruction SQL (suite)• obtient des verrous d'analyse sur des objets afin d'empêcher la modification de

leurs définitions au cours de l'analyse de l'instruction,

• vérifie les privilèges d'accès de l'utilisateur aux objets de schéma référencés,

• détermine le plan d'exécution optimal de l'instruction,

• charge l'instruction et le plan d'exécution dans une zone SQL partagée.

L'analyse inclut des opérations de traitement qui doivent généralement être effectuées une seule fois, quel que soit le nombre d'exécutions de l'instruction. En règle générale, le serveur Oracle convertit chaque instruction SQL une seule fois et réexécute l'instruction analysée lorsqu'il y est fait référence ultérieurement. Toutefois, le serveur Oracle vérifie toujours si l'utilisateur dispose des privilèges nécessaires à l'exécution de l'instruction SQL.

Bien que l'analyse valide l'instruction SQL, elle identifie uniquement les erreurs détectables avant l'exécution de l'instruction. En conséquence, l'analyse ne détecte pas certaines erreurs. Par exemple, les erreurs intervenant dans les conversions de données ou dans les données elles-mêmes (tentative d'entrée de valeurs en double dans une clé primaire, par exemple) et les interblocages ne peuvent être détectés et signalés qu'au cours de l'exécution de l'instruction.

Exécution de l'instruction SELECT A ce stade, le serveur Oracle dispose de toutes les informations et ressources nécessaires à l'exécution de l'instruction. Dans le cas des instructions SELECT, le processus serveur se prépare à l'extraction des données.

Extraction des lignes d'une interrogation Lors de l'extraction des données, le serveur sélectionne les lignes, les trie (si nécessaire) et les renvoie à l'utilisateur. Selon le nombre de lignes renvoyées à chaque extraction, plusieurs extractions peuvent être nécessaires pour transférer le résultat final de l'interrogation à l'utilisateur.

Page 43: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-15

.....................................................................................................................................................Zone de mémoire partagée

Zone de mémoire partagée

Composants de la zone de mémoire partagéeAu cours de l'analyse, le processus serveur utilise une zone de la mémoire SGA, appelée zone de mémoire partagée, pour compiler l'instruction SQL. La zone de mémoire partagée est constituée de deux composants principaux :

• le cache "library",

• le cache du dictionnaire de données.

Cache "library" Le cache "library" stocke les informations relatives aux dernières instructions SQL utilisées dans une structure de mémoire appelée zone SQL partagée. Cette zone contient :

• le texte de l'instruction SQL,

• l'arborescence de l'analyse : version compilée de l'instruction,

• le plan d'exécution : étapes d'exécution de l'instruction.

L'optimiseur est la fonction du serveur Oracle qui détermine le plan d'exécution optimal.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Zone de mémoire partagée

• Le cache "library" contient le texte de l'instruction SQL,le code analysé et le plan d'exécution.

• Le cache du dictionnaire de données contient les définitionset les privilèges associés aux tables, aux colonnes et auxautres objets.

• La taille de la zone de mémoire partagée est définie parSHARED_POOL_SIZE.

Cache du dictionnaire de données

Cache"library"

Zone de mémoirepartagée

Page 44: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-16 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Composants de la zone de mémoire partagée (suite)

Cache "library" (suite) Si une instruction SQL est réexécutée et qu'une zone SQL partagée contient déjà le plan d'exécution de l'instruction, le processus serveur n'analyse pas de nouveau l'instruction. Le cache "library" améliore les performances des applications qui réutilisent les instructions SQL en réduisant le temps d'analyse et les besoins en mémoire. Si l'instruction SQL n'est pas réutilisée, elle est finalement exclue du cache "library".

Cache du dictionnaire de donnéesLe cache du dictionnaire de données, également appelé cache du dictionnaire ou cache de ligne, contient les dernières définitions utilisées dans la base de données. Ce cache contient des informations sur les fichiers, les tables, les index, les colonnes, les utilisateurs, les privilèges et d'autres objets de la base de données.

Au cours de l'analyse, le processus serveur recherche les informations dans le cache du dictionnaire pour résoudre les noms d'objets définis dans l'instruction SQL et pour valider les privilèges d'accès. Si nécessaire, le processus serveur charge ces informations à partir des fichiers de données.

Dimensionnement de la zone de mémoire partagéeLa taille de la zone de mémoire partagée est définie par le paramètre d'initialisation SHARED_POOL_SIZE.

Page 45: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-17

.....................................................................................................................................................Cache de tampons de la base de données

Cache de tampons de la base de données

Fonction du cache de tampons de la base de donnéesLors du traitement d'une interrogation, le processus serveur recherche, dans le cache de tampons de la base de données, les blocs dont il a besoin. Si un bloc nécessaire ne s'y trouve pas, il lit le bloc dans le fichier de données, puis il place une copie de ce bloc dans le cache de tampons. Etant donné que les demandes suivantes pour le même bloc peuvent être satisfaites en lisant le bloc dans la mémoire, aucune lecture physique n'est nécessaire. Le serveur Oracle utilise un algorithme d'ancienneté pour exclure les mémoires tampon (buffers) les moins utilisées, libérant ainsi de l'espace pour de nouveaux blocs dans le cache de tampons.

Dimensionnement du cache de tampons de la base de donnéesLa taille de chaque mémoire tampon du cache de tampons, définie à l'aide du paramètre DB_BLOCK_SIZE, est égale à celle d'un bloc Oracle. Le nombre de mémoires tampon est égal à la valeur du paramètre DB_BLOCK_BUFFERS.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Cache de tampons de la base de données

• Enregistrement des derniers blocs utilisés

• Taille d'un tampon en fonction de la valeur deDB_BLOCK_SIZE

• Nombre de tampons défini parDB_BLOCK_BUFFERS

Cache de tampons de la

base de données

Page 46: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-18 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Zone PGA (Program Global Area)

Composants de la zone PGALa zone PGA (Program Global Area ou Process Global Area) est une région de la mémoire qui contient les données et les informations de contrôle d'un seul processus serveur ou d'un seul processus d'arrière-plan. Contrairement à la zone SGA, qui est partagée par plusieurs processus, la zone PGA n'est utilisée que par un seul processus. Dans une configuration de serveur dédié, la zone PGA du serveur inclut les composants suivants :

• une zone de tri utilisée pour effectuer les tris éventuellement nécessaires au traitement de l'instruction SQL,

• des informations de session qui comprennent les privilèges de l'utilisateur et des statistiques sur les performances de la session,

• l'état du curseur qui indique l'étape du traitement des instructions SQL actuellement utilisées par la session,

• l'espace de pile qui contient d'autres variables de session.

La zone PGA est allouée lors de la création d'un processus et désallouée à la fin du processus.

Remarque : Certaines de ces structures sont stockées dans la zone SGA dans une configuration de serveur multithread. Dans une telle configuration, plusieurs processus utilisateur peuvent partager des processus serveur. Les serveurs multithread sont décrits en détail dans le cours "Oracle DBA : Administration du réseau". Si vous créez une zone de mémoire LARGE POOL, les structures y sont stockées. Sinon, elles sont stockées dans la zone de mémoire partagée.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Zone PGA (Program Global Area)

• Non partagée

• Inscriptible uniquement par le processus serveur

• Contient :

– une zone de tri,

– les informations de session,

– l'état du curseur,

– l'espace de pile.

PGA

Processusserveur

Page 47: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-19

.....................................................................................................................................................Traiter une instruction LMD

Traiter une instruction LMD

Etapes du traitement d'une instruction LMDLe traitement d'une instruction LMD (langage de manipulation de données) s'effectue en deux étapes :

• Analyse : cette étape est identique à celle du traitement d'une interrogation.

• Exécution : cette étape nécessite des opérations supplémentaires afin de modifier les données.

Exécution d'une instruction LMDPour exécuter une instruction LMD :

1 Si les blocs de données et les blocs d'annulation ne se trouvent pas déjà dans le cache de tampons, le processus serveur les y copie à partir des fichiers de données.

2 Le processus serveur verrouille les lignes à modifier.

3 Le processus serveur enregistre, dans le tampon de journalisation, les modifications à effectuer sur les blocs d'annulation et de données.

– Les modifications des blocs d'annulation enregistrent les valeurs des données avant qu'elles soient modifiées. Les blocs d'annulation stockent les images avant des données, ce qui permet d'annuler, si nécessaire, les instructions LMD.

– Les modifications des blocs de données enregistrent les nouvelles valeurs des données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

1

1

Traiter une instruction LMD

23

4

UPDATE emp ...UPDATE emp ...

Processus utilisateur

Processus serveur

Tampon dejournalisation

Cache detampons

de données

Zone de mémoirepartagée

SGA

Base de données

Fichiersde

données

Fichiersde journa-

lisation

Fichiers de

contrôle

Page 48: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-20 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Exécution d'une instruction LMD (suite)4 Le processus serveur enregistre l'image avant du bloc d'annulation et met à jour le

bloc de données. Ces deux modifications sont effectuées dans le cache de tampons de la base de données. Les blocs modifiés dans le cache de tampons obtiennent l'attribut de tampon "dirty" (mémoires tampon qui ne sont pas identiques aux blocs correspondants sur le disque).

L'exécution d'une commande DELETE ou INSERT s'effectue selon des étapes similaires. L'image avant d'une commande DELETE contient les valeurs de colonne de la ligne supprimée et celle d'une commande INSERT contient les informations sur l'emplacement de la ligne.

Remarque techniqueLes modifications apportées aux blocs sont enregistrées uniquement dans les structures de mémoire et ne sont pas écrites immédiatement sur le disque. De ce fait, elles peuvent être perdues en cas de défaillance de l'ordinateur entraînant l'effacement des données de la zone SGA.

Page 49: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-21

.....................................................................................................................................................Tampon de journalisation

Tampon de journalisation

Caractéristiques du tampon de journalisationLe processus serveur enregistre la plupart des modifications apportées aux blocs de fichiers de données dans le tampon de journalisation qui fait partie de la zone SGA. Le tampon de journalisation présente les caractéristiques suivantes :

• Sa taille en octets est définie par le paramètre LOG_BUFFER.

• Il enregistre le bloc modifié, l'emplacement de la modification et la nouvelle valeur dans une entrée de journalisation. Une entrée de journalisation ne tient pas compte du type du bloc modifié ; elle indique simplement quels sont les octets modifiés du bloc.

• Le tampon de journalisation est utilisé de manière séquentielle et les modifications effectuées par une transaction peuvent être combinées avec celles effectuées par d'autres transactions.

• Il s'agit d'un tampon circulaire (circular buffer) qui est réutilisé une fois rempli, mais uniquement lorsque toutes les anciennes entrées de journalisation ont été enregistrées dans les fichiers de journalisation.

Remarque : les fichiers de journalisation sont décrits en détail dans le chapitre "Gérer les fichiers de journalisation".

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Tampon de journalisation

• Taille définie par LOG_BUFFER

• Enregistrement des modifications effectuéesvia l'instance de base de données

• Utilisation séquentielle

• Tampon circulaire

Tampon de journalisation

Page 50: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-22 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Segment d'annulation

Segment d'annulationAvant d'effectuer une modification, le processus serveur enregistre l'ancienne valeur des données dans un segment d'annulation. Cette image avant permet :

• d'annuler les modifications si la transaction est annulée,

• de préserver la cohérence des données lues en empêchant les autres transactions de voir les modifications non validées effectuées par l'instruction LMD,

• de récupérer une base de données cohérente en cas d'incident.

Les segments d'annulation, de même que les tables et les index, se trouvent dans des fichiers de données, et les blocs d'annulation sont placés dans le cache de tampons de la base de données selon les besoins.

Les segments d'annulation sont créés par l'administrateur de la base de données.

Les modifications de segments d'annulation sont enregistrées dans le tampon de journalisation.

Pour plus d'informations sur les segments d'annulation, reportez-vous au chapitre "Gérer les segments d'annulation".

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Segment d'annulation

Instruction LMD

Ancienne image

Nouvelleimage

Segmentd'annulation

Table

Page 51: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-23

.....................................................................................................................................................Validation : traitement de l'instruction COMMIT

Validation : traitement de l'instruction COMMIT

Validation rapide Le serveur Oracle utilise un mécanisme de validation rapide qui garantit la récupération des modifications validées en cas de défaillance de l'instance de base de données.

Numéro SCNChaque fois qu'une transaction est validée, le serveur Oracle lui affecte un numéro SCN. Ce numéro est incrémenté chaque fois d'une unité et est unique dans la base de données. Le serveur Oracle l'utilise comme attribut d'horodatage interne pour synchroniser les données et assurer la cohérence de la lecture des données extraites des fichiers de données. Le numéro SCN permet au serveur Oracle de vérifier la cohérence des données sans utiliser la date et l'heure du système d'exploitation.

Etapes du traitement d'une instruction COMMITLe traitement d'une instruction COMMIT s'effectue selon les étapes suivantes :

1 Le processus serveur place un enregistrement de validation et le numéro SCN dans le tampon de journalisation.

2 Le processus LGWR écrit de manière contiguë toutes les entrées du tampon de journalisation jusqu'à (et y compris) l'enregistrement de validation dans les fichiers de journalisation. A ce stade, le serveur Oracle garantit que les modifications ne seront pas perdues, même en cas de défaillance de l'instance de base de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Validation : traitement de l'instruction COMMIT

1

2

34

Processus utilisateur

Processusserveur

Tampon dejournalisation

Cache detampons

de données

Zone de mémoirepartagée

SGA

Base de données

Fichiers de

contrôle

Fichiersde journa-

lisationFichiers

de données

LGWR

Instance

Page 52: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-24 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Etapes du traitement d'une instruction COMMIT (suite) 3 L'utilisateur est averti de la fin du traitement de l'instruction COMMIT.

4 Le processus serveur enregistre des informations qui indiquent que la transaction est terminée et que les verrous des ressources peuvent être libérés.

Le vidage des tampons "dirty" vers le fichier de données est exécuté de manière indépendante par le processus DBW0 et peut être effectué avant ou après la validation.

Avantages de la validation rapideLa validation rapide permet de récupérer les données en écrivant les modifications dans le tampon de journalisation et non dans les fichiers de données. La validation rapide offre les avantages suivants :

• Il est plus rapide d'écrire les données de façon séquentielle dans les fichiers journaux que de les écrire dans différents blocs dans les fichiers de données.

• Seules les informations minimales nécessaires à l'enregistrement des modifications sont écrites dans les fichiers journaux, alors que l'écriture des données dans les fichiers de données implique l'écriture de blocs de données entiers.

• Lorsque plusieurs transactions envoient simultanément des demandes de validation de données, l'instance de base de données écrit en une seule fois les enregistrements de journalisation (redo log records).

• Une seule opération d'écriture synchrone par transaction est nécessaire, à moins que le tampon de journalisation ne soit particulièrement plein. En cas de regroupement des enregistrements, il peut exister moins d'une opération d'écriture synchrone par transaction.

• Du fait que le tampon de journalisation peut être vidé avant la validation, la taille de la transaction n'affecte pas la durée d'exécution de la validation.

Remarque : L'annulation d'une transaction ne déclenche pas d'opération d'écriture sur disque par le processus LGWR. Le serveur Oracle annule toujours les modifications non validées lors de la récupération des données à la suite d'un incident. Lorsque le serveur tombe en panne entre une annulation et l'enregistrement sur disque des entrées d'annulation, l'absence d'un enregistrement de validation suffit à garantir l'annulation des modifications effectuées par la transaction.

Page 53: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-25

.....................................................................................................................................................Processus Log Writer

Processus Log Writer

Processus LOG WriterLe processus LGWR exécute des opérations d'écriture séquentielles à partir du tampon de journalisation vers le fichier de journalisation dans les cas suivants :

• lorsqu'une transaction est validée,

• lorsqu'un tiers du tampon de journalisation est occupé,

• lorsque le tampon de journalisation contient plus d'un mégaoctet de modifications,

• avant que le processus DBW0 n'écrive les blocs modifiés du cache de tampons de la base de données vers les fichiers de données.

Etant donné que la journalisation est nécessaire à la récupération des données, le processus LGWR ne confirme la validation qu'une fois que les données journalisées sont enregistrées sur le disque.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Processus Log Writer (LGWR)

Le processus LGWRécrit les données :

• lorsqu'elles sontvalidées,

• lorsqu'un tiers dutampon de journa-lisation est plein,

• lorsque les donnéesjournaliséesreprésentent plusd'un Mo,

• avant que leprocessus DBW0 neprocède à l'écriture.

Tampon dejournalisation

Cache detampons

de données

Zone de mémoirepartagée

SGA

Base de données

Fichiers de

contrôle

Fichiersde journa-

lisationFichiers

de données

LGWR

Instance

Page 54: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-26 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Autres processus d'instance de base de données

Autres processus indispensablesQuatre autres processus indispensables n'interviennent pas directement dans le traitement des instructions SQL :

• DBW0 (Database Writer),

• PMON (Process Monitor),

• SMON (System Monitor),

• CKPT (Checkpoint).

Le processus de point de reprise (CKPT) permet de synchroniser les fichiers de la base de données. Ce processus est décrit en détail dans le chapitre "Gérer les fichiers de journalisation".

Processus d'archivageTous les autres processus d'arrière-plan sont optionnels, selon la configuration de la base de données. Toutefois, l'un d'entre eux, ARC0, joue un rôle essentiel dans la récupération d'une base de données suite à une défaillance du disque. Le processus ARC0 est généralement créé dans une base de données de production.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Autres processus d'instancede base de données

• Autres processus obligatoires :

– Database Writer (DBW0)

– Process Monitor (PMON)

– System Monitor (SMON)

– Checkpoint (CKPT)

• Le processus d'archivage ARC0 est généralementcréé dans une base de données de production.

Page 55: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-27

.....................................................................................................................................................Processus Database Writer

Processus Database Writer

Processus Database WriterLe processus serveur enregistre les modifications des blocs d'annulation et des blocs de données dans le cache de tampons. Le processus Database Writer (DBW0) écrit les tampons "dirty" du cache de tampons de la base de données vers les fichiers de données. Il garantit qu'un nombre suffisant de mémoires tampon libres (tampons qui peuvent être écrasés lorsque les processus serveur doivent lire des blocs dans les fichiers de données) est disponible dans le cache de tampons de la base de données. Les performances de la base de données sont améliorées puisque les processus serveur n'effectuent les modifications que dans le cache de tampons et que le processus DBW0 diffère l'écriture dans les fichiers de données jusqu'à ce que l'un des événements suivants se produise :

• Le nombre de tampons "dirty" a atteint un certain seuil.

• Un processus balaie un certain nombre de blocs à la recherche de mémoires tampon libres et n'en trouve pas.

• Une temporisation se produit (toutes les trois secondes).

• Un point de reprise est constitué (un point de reprise permet de synchroniser le cache de tampons de la base de données et le fichier de données). Les points de reprise sont décrits en détail dans le chapitre "Gérer les fichiers de journalisation".

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Processus Database Writer (DBW0)

Le processus DBW0écrit les donnéeslorsque :• plusieurs tampons

sont "dirty",

• peu de tamponssont libres,

• des temporisationsse produisent,

• un point de repriseest constitué.

Base de données

Fichiersde

données

Fichiersde journa-

lisation

Fichiers de

contrôle

Tampon dejournalisation

Cache detampons

de données

Zone de mémoirepartagée

SGA

DBW0

Instance

Page 56: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-28 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Processus SMON : System Monitor

Processus SMON : System MonitorEn cas de défaillance de l'instance de base de données Oracle, les informations présentes dans la zone SGA et qui n'ont pas été écrites sur disque sont perdues. La défaillance du système d'exploitation, par exemple, provoque la défaillance de l'instance de base de données. Suite à la perte de l'instance de base de données, le processus d'arrière-plan SMON récupère automatiquement cette dernière lors de la réouverture de la base de données. La récupération d'une instance de base de données consiste à effectuer les opérations suivantes :

1 Réimplémenter les modifications pour récupérer les données non enregistrées dans les fichiers de données, mais enregistrées dans le fichier de journalisation "online" (online redo log). Ces données n'ont pas été enregistrées sur disque du fait de l'effacement de la zone SGA suite à la défaillance de l'instance de base de données. Au cours de ce processus, le processus SMON lit les fichiers de journalisation et applique les modifications qui y sont enregistrées aux blocs de données. Etant donné que toutes les transactions validées ont été enregistrées dans les fichiers de journalisation, ce processus permet de récupérer les transactions dans leur intégralité.

2 Ouvrir la base de données pour permettre aux utilisateurs de s'y connecter. Les données qui ne sont pas verrouillées par des transactions non récupérées sont immédiatement disponibles.

3 Annuler les transactions non validées. Ces transactions sont annulées par le processus SMON ou par les processus serveur lorsqu'ils accèdent aux données verrouillées.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Processus SMON : System Monitor

• Récupère automatiquement l'instancede base de données.

– Il réimplémente les modifications dansles fichiers de journalisation.

– Il ouvre la base de données pour l'accèsutilisateur.

– Il annule les transactions non validées.

• Regroupe les espaces libres.

• Désalloue les segments temporaires.

Page 57: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-29

.....................................................................................................................................................Processus SMON : System Monitor

Processus SMON : System Monitor (suite)Le processus SMON exécute également des fonctions de gestion de l'espace :

• Il combine ou fusionne les espaces libres adjacents dans les fichiers de données.

• Il désalloue les segments temporaires pour les libérer et augmenter ainsi l'espace disponible dans les fichiers de données. Les segments temporaires permettent de stocker les données lors du traitement des instructions SQL.

Page 58: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-30 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Processus PMON : Process Monitor

Fonctionnalité du processus PMONSuite à l'échec de processus, le processus d'arrière-plan PMON exécute des opérations de nettoyage :

• en annulant la transaction en cours de l'utilisateur,

• en libérant tous les verrous des tables ou des lignes,

• en libérant d'autres ressources réservées par l'utilisateur.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Effectue un nettoyage après l'échec de l'undes processus :

• en annulant la transaction,

• en supprimant les verrous,

• en libérant les autres ressources.

Processus PMON : Process Monitor

Page 59: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-31

.....................................................................................................................................................Archivage

Archivagev

Processus d'archivageTous les autres processus d'arrière-plan sont optionnels, selon la configuration de la base de données. Toutefois, l'un d'entre eux, le processus ARC0, est essentiel à la récupération d'une base de données à la suite d'une défaillance du disque. Le serveur Oracle passe d'un fichier de journalisation "online" à l'autre à mesure que ceux-ci se remplissent. Le passage d'un fichier de journalisation à l'autre s'appelle un changement de fichier de journalisation.

Archiver les fichiers de journalisation L'une des principales décisions de l'administrateur consiste à déterminer s'il doit configurer la base de données pour un fonctionnement en mode ARCHIVELOG ou en mode NOARCHIVELOG.

Mode NOARCHIVELOG En mode NOARCHIVELOG, les fichiers de journalisation "online" sont écrasés chaque fois qu'un changement de fichier de journalisation se produit. Le processus LGWR n'écrase pas un groupe de fichiers de journalisation (redo log group) tant que le processus de point de reprise du groupe n'est pas terminé. Ceci garantit la récupération des données validées en cas de défaillance d'une instance de base de données. Dans ce cas, seules les données de la zone SGA sont perdues. Aucune donnée des disques n'est perdue ; seules les données en mémoire le sont. Une défaillance du système d'exploitation, par exemple, provoque la défaillance de l'instance de base de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Archivage

• Mode d'archivage de la base de données :

– NOARCHIVELOG pour les bases de donnéespour lesquelles la récupération n'est pasnécessaire après une défaillance matérielle,

– ARCHIVELOG pour les bases de données deproduction.

• Le processus ARC0 :

– archive automatiquement les fichiers dejournalisation "online",

– conserve l'enregistrement de toutes lesmodifications de la base de données.

Page 60: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-32 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Archiver les fichiers de journalisation (suite)

Mode ARCHIVELOG Si la base de données fonctionne en mode ARCHIVELOG, les groupes inactifs de fichiers de journalisation "online" pleins doivent être archivés pour pouvoir être réutilisés. Etant donné que les modifications de la base de données sont enregistrées dans les fichiers de journalisation "online", l'administrateur de la base de données peut utiliser la sauvegarde physique des fichiers de données et les fichiers de journalisation "online" archivés pour récupérer la base de données sans perdre les données validées en cas d'incident, notamment la perte d'un disque. En règle générale, une base de données de production est configurée pour fonctionner en mode ARCHIVELOG.

Processus ARC0Le processus ARC0 lance la sauvegarde ou l'archivage du groupe de fichiers de journalisation pleins à chaque changement de fichier de journalisation. Il archive automatiquement le fichier de journalisation "online" pour qu'il puisse être réutilisé. Ainsi, toutes les modifications apportées à la base de données sont conservées. Ceci permet à l'administrateur de la base de données de récupérer la base de données à partir du point sur lequel la défaillance s'est produite, même si un disque est endommagé.

Page 61: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 1-33

.....................................................................................................................................................Synthèse

Synthèse

Fichiers Oracle Une base de données Oracle contient les fichiers suivants :

• Fichiers de contrôle : ils contiennent les informations nécessaires à la vérification de l'intégrité de la base de données, notamment le nom des autres fichiers de la base de données (les fichiers de contrôle ont généralement des fichiers miroir).

• Fichiers de données : ils contiennent les données de la base de données, notamment les tables, les index, les segments d'annulation et les segments temporaires.

• Fichiers de journalisation "online" : ils contiennent les modifications apportées aux fichiers de données (les fichiers de journalisation "online" sont utilisés pour récupérer les données et ont généralement des fichiers miroir).

Les autres fichiers couramment utilisés avec la base de données sont les suivants :

• Fichier de paramètres : il définit les caractéristiques d'une instance de base de données Oracle.

• Fichier de mots de passe : il authentifie les utilisateurs disposant de privilèges sur la base de données.

• Fichiers de journalisation archivés (archived redo logs) : ils correspondent aux sauvegardes des fichiers de journalisation "online".

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Synthèse

Ce chapitre vous a permis d'apprendre à décrire :

• les fichiers d'une base de données : fichiers dedonnées, fichiers de contrôle, fichiers dejournalisation "online",

• les structures de mémoire SGA : cache detampons de base de données, zone de mémoirepartagée SQL et tampon de journalisation,

• les principaux processus d'arrière-plan :DBW0, LGWR, CKPT, PMON, SMON et ARC0,

• les étapes du traitement d'une instruction SQL :analyse, exécution, extraction.

Page 62: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................1-34 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 1 : Composants de l'architecture Oracle

Structures de mémoire SGALa zone de mémoire SGA (System Global Area) contient les trois structures principales suivantes :

• Zone de mémoire partagée : elle stocke les dernières instructions SQL exécutées et les dernières données du dictionnaire de données utilisées.

• Cache de tampons de la base de données : il stocke les dernières données utilisées.

• Tampon de journalisation : il enregistre les modifications apportées à la base de données à l'aide de l'instance de base de données.

Processus d'arrière-planUne instance de base de données de production Oracle contient les processus suivants :

• Database Writer (DBW0) : écrit, dans les fichiers de données, les données modifiées.

• Log Writer (LGWR) : enregistre, dans les fichiers de journalisation "online", les modifications apportées aux fichiers de données.

• System Monitor (SMON) : vérifie la cohérence des données et lance la récupération de la base de données lorsque celle-ci est ouverte.

• Process Monitor (PMON) : libère les ressources si l'un des processus échoue.

• Checkpoint (CKPT) : met à jour les informations de statut de la base de données après un point de reprise.

• Archiver (ARC0) : sauvegarde le fichier de journalisation "online" pour permettre la récupération des données en cas de défaillance physique (ce processus est optionnel, mais il est généralement inclus dans une instance de base de données de production).

En fonction de sa configuration, l'instance de base de données peut également inclure d'autres processus.

Etapes du traitement d'une instruction SQLLes étapes du traitement d'une instruction SQL sont les suivantes :

• Analyse : compile l'instruction SQL.

• Exécution : identifie les lignes sélectionnées ou applique les modifications LMD aux données.

• Extraction : renvoie les lignes demandées par l'instruction SELECT.

Page 63: Oracle DBA - Architecture & Administration Vol.1

.................................

2

Initiation à Oracle Server

Page 64: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................2-2 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 2 : Initiation à Oracle Server

Objectifs

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Objectifs

A la fin de ce chapitre, vous pourrez :

• identifier les caractéristiques du programmed'installation Universal Installer,

• configurer l'authentification par le systèmed'exploitation et par les fichiers de mots de passe,

• énumérer les principaux composants d'OracleEnterprise Manager et décrire leurs fonctions.

Page 65: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 2-3

.....................................................................................................................................................Présentation

Présentation

Exemples d'outils classiques d'administration de base de donnéesLe tableau répertorie des exemples d'outils classiques d'administration de base de données, ainsi que les tâches qu'un administrateur de base de données peut exécuter à l'aide de ces outils.

Ces outils sont décrits dans ce cours, mais ils ne représentent qu'une partie des utilitaires fournis par Oracle. Les commandes de démarrage des différents outils dépendent de la plate-forme utilisée.

Ce chapitre décrit l'utilisation des outils suivants, lesquels assistent l'administrateur de base de données dans ses tâches :

• Universal Installer

• Oracle Enterprise Manager

• Oracle Configuration Assistant

Remarque : d'autres utilitaires, notamment Database Configuration Assistant qui permet de créer une base de données Oracle, seront étudiés dans les chapitres "Gérer une instance de base de données Oracle" et "Créer une base de données".

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Outils d'administration de basede données : exemples

Outil

SQL*Plus Line Mode

Oracle Enterprise Manager

SQL*Loader

Utilitaire d'export ou d'import

Utilitaire de fichier de motsde passe

Description

Utilitaire d'exécution de tâchesd'administration, telles que ledémarrage, la fermeture et larestauration d'une base de données

Interface graphique d'administration,de contrôle et de réglage d'une ouplusieurs bases de données

Utilitaire de chargement de donnéesde fichiers externes dans une base dedonnées Oracle

Utilitaire d'export et d'import dedonnées au format Oracle

Utilitaire de création de fichiers demots de passe de base de données

Page 66: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................2-4 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 2 : Initiation à Oracle Server

Oracle Universal Installer

Caractéristiques d'Oracle Universal InstallerL'utilitaire Oracle Universal Installer de type Java offre une solution d'installation pour toutes les plates-formes compatibles Java en proposant une procédure d'installation et une interface communes, indépendantes de la plate-forme.

Le nouveau moteur d'installation détecte automatiquement les dépendances entre les composants et exécute l'installation en conséquence, selon les produits et le type d'installation sélectionné. Les installations de groupes de composants et de suites de produits, c'est-à-dire de groupes de produits prédéfinis ayant un ordre d'installation, sont aisément identifiées grâce à une intervention limitée de l'utilisateur et l'absence de questions répétitives.

Universal Installer peut pointer vers une URL correspondant à un emplacement où une version ou une zone intermédiaire a été définie et installer le logiciel à distance via HTTP.

Les produits de désinstallation installés à l'aide d'Universal Installer sont intégrés au moteur lui-même. Les actions de désinstallation correspondent à "l'annulation" des actions d'installation.

Le programme d'installation Universal Installer répertorie tous les répertoires d'origine Oracle Home sur une machine cible en enregistrant leur nom ainsi que les produits qui y sont installés et leur version.

Le programme détecte la langue du système d'exploitation et exécute l'installation dans cette langue.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Oracle Universal Installer :caractéristiques

• Basé sur un moteur Java

• Résolution automatique des dépendanceset gestion des logiques complexes

• Installation à partir du Web

• Installations de composants et de famillesde composants

• Désinstallation implicite

• Prise en charge de plusieurs répertoiresd'origine Oracle Home

• Support NLS/globalisation

Page 67: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 2-5

.....................................................................................................................................................Oracle Universal Installer

Installation automatique à l'aide de fichiers de réponsesLes fichiers de réponses contiennent des variables fournissant les valeurs que doit généralement entrer l'utilisateur lorsqu'il procède à l'installation manuellement. Pour l'installation d'un composant donné, Universal Installer peut lire ces valeurs dans un fichier de réponses prédéfini. En utilisant ce fichier comme argument supplémentaire, Universal Installer peut limiter le nombre de sessions d'installation manuelle ou créer une session d'installation entièrement automatique.

• Pour Windows NT : le programme d'installation s'appelle setup.exe ; il se trouve dans le répertoire Program Files\Oracle\oui\install.

• Pour UNIX : le programme d'installation s'appelle runInstaller ; il se trouve dans le répertoire INSTALL\install\solaris.

Par exemple, pour exécuter le programme d'installation sur une plate-forme Windows NT à partir d'un CD-ROM se trouvant dans le lecteur D, entrez :

D:\> setup

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Installation automatique à l'aide defichiers de réponses

• Démarrer Universal Installer sous Windows NT :

setup.exe -responsefile nom de fichier [-silent]

[-nowelcome]

setup.exe -responsefile nom de fichier [-silent]

[-nowelcome]

runInstaller -responsefile nom de fichier

[-silent] [-nowelcome]

runInstaller -responsefile nom de fichier

[-silent] [-nowelcome]

• Démarrer Universal Installer sous Solaris :

Page 68: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................2-6 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 2 : Initiation à Oracle Server

Architecture OFA (Optimal Flexible Architecture)L'installation et la configuration sur toutes les plates-formes prises en charge sont désormais conformes à l'architecture OFA (Optimal Flexible Architecture). Cette architecture organise les fichiers de base de données en fonction de leur type et de leur utilisation. Les fichiers binaires, qui contiennent le code de base Oracle, sont installés dans un même répertoire. Les fichiers de contrôle, les fichiers journaux et les fichiers d'administration sont installés dans un second répertoire, et les fichiers de base de données dans un troisième.

L'architecture OFA :

• fournit une méthode structurée pour l'installation des bases de données et des applications Oracle,

• facilite l'administration, notamment les opérations de sauvegarde et de restauration des données, grâce à une présentation mieux structurée des fichiers,

• améliore les performances en diminuant la contention sur les disques pour les fichiers de données, les fichiers binaires et les fichiers d'administration qui résident désormais dans des répertoires ou sur des disques différents,

• facilite l'administration de plusieurs répertoires d'origine Oracle Home sur une même machine en répartissant les fichiers sur des unités de disque et dans des répertoires différents.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Architecture OFA(Optimal Flexible Architecture)

• Organise le logiciel et les données sur le disque.

• Facilite l'exécution des tâches d'administrationcourantes.

• Facilite le passage d'une base de donnéesOracle à une autre.

• Gère et administre l'extension des basesde données.

• Réduit la contention de ressources.

• Est similaire sous NT et UNIX.

Page 69: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 2-7

.....................................................................................................................................................Oracle Universal Installer

Lancer Oracle Universal Installer

2-1 Lancer Universal Installer et afficher la liste des produits installés.

1 Lancez Universal Installer :Start—>Programs—>Oracle Installation Products—>Universal Installer

2 Cliquez sur Installed Products dans la fenêtre de bienvenue pour afficher la liste des produits installés.

3 Développez un répertoire d'origine Oracle Home et vérifiez les produits installés et leur version. Une fois les opérations terminées, cliquez sur Close.

4 Cliquez sur Exit pour quitter Universal Installer. Cliquez sur Yes dans la boîte de dialogue.

2-2 Lancer Universal Installer, mais passer outre la page de bienvenue.

1 Lancez Universal Installer avec l'option -nowelcomeStart—>Run.

2 Entrez "C:\Program Files\Oracle\oui\install\setup.exe"-nowelcome,, puis cliquez sur OK.

3 Cliquez sur Exit pour quitter Universal Installer. Cliquez sur Yes dans la boîte de dialogue.

Page 70: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................2-8 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 2 : Initiation à Oracle Server

Valider les utilisateurs ayant des privilèges

Administrateurs de base de donnéesDes privilèges supplémentaires sont nécessaires pour exécuter des tâches d'administration (création d'utilisateurs, par exemple) sur le serveur Oracle. Ces opérations doivent être réalisées par les administrateurs de base de données.

Les deux comptes utilisateur de base de données SYS et SYSTEM sont créés automatiquement avec la base de données et reçoivent le rôle d'administrateur de base de données, un rôle prédéfini créé systématiquement avec chaque base de données. Ce rôle dispose de tous les privilèges système sur la base de données.

Remarque : ce sujet est traité en détail dans le chapitre "Gérer les privilèges".

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Administrateurs de base de données

Les deux administrateurs de base de donnéespar défaut SYS et SYSTEM

• sont créés automatiquement,

• ont le rôle de DBA.

Page 71: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 2-9

.....................................................................................................................................................Valider les utilisateurs ayant des privilèges

SYS

Lors de la création d'une base de données, l'utilisateur SYS, identifié à l'origine par le mot de passe change_on_install, est créé automatiquement et obtient le rôle d'administrateur de base de données.

Toutes les tables et vues de base du dictionnaire de données sont stockées dans le schéma SYS.

SYSTEM

Lors de la création d'une base de données, l'utilisateur SYSTEM, identifié à l'origine par le mot de passe manager, est également créé automatiquement et reçoit les privilèges du rôle d'administrateur de base de données.

D'autres tables et vues appartenant à l'utilisateur SYSTEM sont également créées. Elles contiennent des informations d'administration utilisées par les outils Oracle.

SYS et SYSTEM sont des utilisateurs standard, stockés dans le dictionnaire de données, qui ne peuvent se connecter que lorsque la base de données est ouverte.

Remarque : vous serez certainement amené à créer au moins un nom d'administrateur supplémentaire pour exécuter les tâches d'administration quotidiennes.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Utilisateurs SYS et SYSTEM

SYS

• Mot de passe :change_on_install

• Propriétaire dudictionnaire dedonnées de la base

SYSTEM

• Mot de passe :manager

• Propriétaire de tableset de vues internessupplémentairesutilisées par lesoutils Oracle

Page 72: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................2-10 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 2 : Initiation à Oracle Server

Se connecter avec des privilèges administrateurDans certains cas, l'administrateur de base de données doit utiliser une méthode d'authentification spéciale lorsque la base de données n'est pas ouverte, notamment pour les opérations d'arrêt et de démarrage.

Selon que vous souhaitez administrer la base de données localement sur la machine sur laquelle cette base est installée ou administrer plusieurs serveurs de base de données à partir d'un client distant, vous pouvez authentifier les administrateurs en utilisant l'authentification par le système d'exploitation ou l'authentification par le fichier de mots de passe.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Administrationde base de

données locale

Oui Oui

Non Non

Utiliserl'authentificationpar le systèmed'exploitation

Utiliser un fichierde mots de

passe

Méthodes d'authentification

Voulez-vous utiliser

l'authentification par le système d'exploitation ?

La connexion est-elle

sécurisée ?

Administrationde base de

données distante

Page 73: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 2-11

.....................................................................................................................................................Valider les utilisateurs ayant des privilèges

Utiliser l'authentification par le système d'exploitationL'authentification d'un utilisateur par le système d'exploitation UNIX est différente de l'authentification d'un utilisateur sur une plate-forme Windows NT.

UNIX1 L'utilisateur doit être membre du groupe UNIX, généralement appelé dba,

qui est créé avant l'installation du serveur Oracle. Le programme d'installation affecte à ce groupe UNIX les privilèges utilisateur et administrateur de base de données Oracle.

2 Affichez les fichiers /etc/group et /etc/passwd afin d'identifier les membres du groupe UNIX.

Les lignes suivantes sont extraites du fichier /etc/passwd :user15:x:1064:100::/home/disk3/user15:/bin/ksh

oracle:x:920:100::/export/home/oracle:/bin/ksh

vvijayan:x:1032:100::/users/vvijayan:/bin/ksh

Les lignes suivantes figurent dans le fichier /etc/group :dba::100:root,oracle,estrodac,tigger,jdiianni

3 Vérifiez que le paramètre REMOTE_LOGIN_PASSWORDFILE a pour valeur NONE. La valeur par défaut de ce paramètre est EXCLUSIVE pour la version 8.1.x ou ultérieure. Dans les versions antérieures d'Oracle, la valeur par défaut était NONE.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Authentification parle système d'exploitation

• Définir l'utilisateur devant être authentifiépar le système d'exploitation.

• Affecter la valeur NONE au paramètreREMOTE_LOGIN_PASSWORDFILE.

• Utiliser les commandes suivantes pourla connexion à une base de données :

CONNECT / AS SYSDBA

CONNECT / AS SYSOPER

CONNECT / AS SYSDBA

CONNECT / AS SYSOPER

Page 74: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................2-12 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 2 : Initiation à Oracle Server

UNIX (suite)4 Connectez-vous à la base de données avec le privilège SYSDBA ou SYSOPER.

Ce sont des privilèges d'administration spéciaux. La barre oblique implique que la connexion s'effectue dans le schéma appartenant à SYS :CONNECT / AS {SYSDBA |SYSOPER}

Remarque : l'utilisation des privilèges SYSDBA et SYSOPER est expliquée dans le chapitre "Gérer les privilèges".

Windows NT1 Créez un nouveau groupe local d'utilisateurs Windows NT nommé

ORA_<SID>_DBA et ORA_<SID>_OPER spécifique à une instance, ou ORA_DBA et ORA_OPER non spécifique à une instance.

2 Ajoutez un utilisateur Windows NT au groupe. Lorsque vous accédez à ce domaine, vous êtes automatiquement authentifié comme étant un administrateur de base de données autorisé.

3 Vérifiez que le fichier sqlnet.ora contient la ligne suivante :SQLNET.AUTHENTICATION_SERVICES = (NTS)

4 Affectez la valeur NONE au paramètre REMOTE_LOGIN_PASSWORDFILE.

5 Connectez-vous à la base de données avec le privilège SYSDBA ou SYSOPER :CONNECT / AS {SYSDBA |SYSOPER}

Remarque

• Pour vous connecter à un serveur Windows NT à partir d'un client Windows NT ou Windows 95 local ou distant, installez Net8 sur le client et sur le serveur ; vous pouvez également utiliser une connexion JDBC.

• La commande CONNECT INTERNAL des versions antérieures d'Oracle a été remplacée par la syntaxe suivante :CONNECT INTERNAL/pw AS SYSDBA

La commande CONNECT INTERNAL continue à être prise en charge à des fins de compatibilité descendante uniquement.

Page 75: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 2-13

.....................................................................................................................................................Valider les utilisateurs ayant des privilèges

Utiliser l'authentification par le fichier de mots de passeOracle fournit un utilitaire de gestion des mots de passe permettant de se connecter au serveur Oracle à l'aide d'un nom d'utilisateur et d'un mot de passe standard, mais l'utilitaire connecte l'utilisateur au schéma SYS et non au nom d'utilisateur fourni. L'accès à la base de données à l'aide du fichier de mots de passe est fourni par des commandes GRANT spéciales émises par des utilisateurs disposant de privilèges (voir le chapitre "Gérer les privilèges").

Utiliser un fichier de mots de passe sur un serveur UNIX et sur un serveur Windows NT

1 Créez le fichier de mots de passe à l'aide de l'utilitaire de gestion des mots de passe ORAPWD.orapwd file=fname password=password entries=entries

où :

fname est le nom du fichier de mots de passe,

password est le mot de passe de SYS et INTERNAL,

entries représente le nombre maximal d'administrateurs de base de données différents.

La commande suivante crée un fichier de mots de passe contenant le mot de passe admin pour les utilisateurs SYS et INTERNAL et accepte jusqu'à cinq utilisateurs avec des mots de passe différents :

Sous UNIX : $orapwd file=$ORACLE_HOME/dbs/orapwU15 password=admin entries=10

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Utiliser l'authentification parle fichier de mots de passe

• Créer le fichier de mots de passe à l'aidede l'utilitaire :

$orapwd file=$ORACLE_HOME/dbs/orapwSID

password=admin entries=10

CONNECT INTERNAL/ORACLECONNECT INTERNAL/ORACLE

• Affecter la valeur EXCLUSIVE ou SHARED auparamètre REMOTE_LOGIN_PASSWORDFILE.

• Utiliser la commande suivante pour la connexionà la base de données :

Page 76: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................2-14 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 2 : Initiation à Oracle Server

Utiliser l'authentification par le fichier de mots de passe (suite)

Utiliser un fichier de mots de passe sur un serveur UNIX et sur un serveur Windows NT (suite)

Sous Windows NT : C:\>orapwd file=%ORACLE_HOME%/database/pwdSID password=admin entries=10

2 Affectez la valeur EXCLUSIVE ou SHARED au paramètre REMOTE_LOGIN_PASSWORDFILE.

où :

EXCLUSIVE indique qu'une seule instance peut utiliser le fichier de mots de passe et que ce dernier contient des noms autres que SYS et INTERNAL.

SHARED indique que plusieurs instances peuvent utiliser le fichier de mots de passe (les seuls utilisateurs reconnus par le fichier de mots de passe sont SYS et INTERNAL).

3 Connectez-vous à la base de données comme suit :SQL> CONNECT internal/oracle

Remarque

• Sous UNIX :

Les fichiers de mots de passe sont généralement situés dans le répertoire $ORACLE_HOME/dbs.

• Sous Windows NT :

– Le fichier de mots de passe se trouve généralement dans le répertoire %ORACLE_HOME%\DATABASE. Pour ne pas utiliser l'emplacement par défaut du fichier de mots de passe, définissez la clé ORA_SID_PWFILE dans la base de registres NT.

– Le mot de passe pour INTERNAL est Oracle, si Oracle est installé via l'option Oracle8i Enterprise Edition. Vous pouvez définir le mot de passe lors de l'installation à l'aide de l'option d'installation personnalisée.

Gérer le fichier de mots de passeSous UNIX et Windows NT, utilisez l'utilitaire ORAPWD pour supprimer le fichier de mots de passe existant et en créer un nouveau.

Page 77: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 2-15

.....................................................................................................................................................Oracle Enterprise Manager

Oracle Enterprise Manager

Présentation d'Oracle Enterprise ManagerOracle Enterprise Manager est une structure de gestion unifiée de l'environnement Oracle en entreprise.

La console Oracle Enterprise Manager fournit une vue globale du système. Les objets et leurs relations au sein du système y sont représentés dans une arborescence hiérarchique, ainsi que sous forme graphique.

Des processus Agent Intelligent, résidant sur des nœuds gérés, facilitent la gestion à distance des travaux, des événements et des statuts. Ces agents permettent une gestion autonome et rapide.

Les services standard (services de travaux, d'événements, de repérage (discovery) et de sécurité) complètent la structure Oracle Enterprise Manager en fournissant les fonctionnalités de base de toutes les applications Oracle Enterprise Manager.

Oracle Enterprise Manager comprend également des applications de gestion spécialisées.

• DBA Management Pack : est fourni gratuitement avec la base de données,

• Advanced Management Packs : Tuning Pack, Diagnostics Pack et Change Management Pack,

• Application Management Pack : prise en charge d'Oracle Applications Concurrent Manager, de WebForm Servers et des sous-systèmes Workflow.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

• Système unifié de gestion de l'environnementOracle en entreprise

• Vue centralisée de l'ensemble du système géré

• Services sous-jacents

• DBA Management Pack gratuit

• Performance Pack, Tuning Pack, Diagnostics Packet Change Management Pack

• Application Management Pack

Présentation d'Oracle Enterprise Manager

Page 78: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................2-16 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 2 : Initiation à Oracle Server

Présentation d'Oracle Enterprise Manager (suite)La structure est extensible et fournit un grand nombre d'API permettant d'intégrer n'importe quelle application de gestion, notamment la gestion de l'ensemble des produits Oracle ou de ceux des partenaires ou des clients.

Remarque technique :Application Management Pack n'est pas fourni avec Oracle Enterprise Manager 2.0.4 ; il le sera ultérieurement.

Page 79: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 2-17

.....................................................................................................................................................Oracle Enterprise Manager

Architecture d'Oracle Enterprise ManagerLa version 2 d'Oracle Enterprise Manager étend l'architecture client-serveur de la version 1 pour fournir un modèle hautement évolutif à trois niveaux (3-tiers).

Le premier niveau est constitué d'une console compatible Java et d'applications intégrées pouvant être installées ou exécutées à partir d'un navigateur Web.

Oracle Management ServerLe composant de deuxième niveau de la version 2 d'Oracle Enterprise Manager est Oracle Management Server (OMS). Le serveur OMS a pour principale fonction d'offrir des informations système centralisées ainsi qu'un contrôle distribué entre les clients et les nœuds gérés en traitant et en administrant toutes les tâches système. L'ajout de serveurs OMS permet d'adapter l'architecture à l'augmentation du nombre de systèmes gérés. En outre, les fonctions de gestion automatique des incidents et d'équilibrage de la charge intégrées au serveur OMS améliorent considérablement la fiabilité du traitement des notifications.

Référentiel Oracle Enterprise ManagerLe serveur OMS utilise le référentiel Oracle Enterprise Manager comme emplacement d'administration permanent. Le référentiel (repository) gère les données système, les données des applications et le statut des entités gérées distribuées dans l'ensemble de l'environnement. La version 2 permet à plusieurs utilisateurs d'un système dans lequel les responsabilités sont partagées d'accéder aux données du référentiel et de les partager.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Console et applications de type Java

Console

Référentiel

Oracle Management Server

ServeurOracle

Agent

Oracle Management Server

ServeurOracle

Agent

ServeurOracle

Agent

Page 80: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................2-18 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 2 : Initiation à Oracle Server

Référentiel Oracle Enterprise Manager (suite)Le troisième niveau est composé de cibles, telles que des bases de données, des nœuds ou d'autres services gérés. L'Agent Intelligent exécute les travaux et les événements envoyés par le serveur OMS.

Les connexions client-serveur à la base de données via la console Oracle Enterprise Manager sont toujours prises en charge.

Page 81: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 2-19

.....................................................................................................................................................Oracle Enterprise Manager

Services communsOracle Enterprise Manager fournit des services permettant de gérer les nœuds de l'ensemble du réseau.

Service de repérage Oracle Enterprise Manager repère (localise) automatiquement tous les services et bases de données des nœuds gérés, une fois les nœuds identifiés. Outre les bases de données, ces services comprennent les serveurs Web, les processus d'écoute (listeners), les serveurs parallèles, les serveurs vidéo et divers autres services.

Système de planification des travaux Le système de planification des travaux fournit des fonctions de stockage et d'envoi des travaux permettant d'automatiser les tâches courantes et répétitives. Vous pouvez créer et gérer les travaux, planifier leur exécution, afficher des informations concernant des travaux donnés et partager ces informations avec d'autres administrateurs. Le système peut également vous signaler, ainsi qu'à d'autres administrateurs, la réussite ou l'échec de travaux par courrier électronique ou par pageur.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Services communs du deuxième niveau

Service deplanificationdes travaux

Service degestion desévénements

Service de sécurité

Service derepérage

Référentiel

Serveur OMS (Oracle Management Server)Agent

Page 82: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................2-20 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 2 : Initiation à Oracle Server

Services communs (suite)

Système de gestion des événements Vous pouvez utiliser le système de gestion des événements pour identifier les incidents de fonctionnement (pertes de service), les situations limites (insuffisance d'espace de stockage) et les problèmes de capacité (utilisation intensive de la CPU).

Lorsqu'un événement est détecté, vous ou l'administrateur désigné pouvez en être averti. L'événement peut également déclencher l'exécution d'un travail de correction (fix-it job).

Sécurité Des paramètres de sécurité sont définis pour les services, les objets et les administrateurs. Par exemple, un super-administrateur peut créer de nouveaux administrateurs et définir leurs privilèges.

Page 83: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 2-21

.....................................................................................................................................................Oracle Enterprise Manager

Système multi-utilisateurLa version 2 d'Oracle Enterprise Manager présente un système multi-utilisateur. Chaque administrateur dispose de son propre compte qui lui permet de se connecter à la console. Selon les autorisations définies, l'administrateur peut accéder aux données du référentiel central, un référentiel partagé par tous les administrateurs Oracle Enterprise Manager de l'environnement géré.

Les super-utilisateurs bénéficient d'autorisations avancées et définissent les autorisations des autres administrateurs.

Remarque : lors de l'installation d'Oracle Enterprise Manager, le super-utilisateur par défaut sysman/oem_temp est créé. Un super-utilisateur dispose de tous les privilèges et peut créer des super-utilisateurs ou des utilisateurs standard.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Référentiel partagé

• Partage des informations par les administrateursdans un référentiel central

• Accès administrateur contrôlant :

– les super-utilisateurs

– les utilisateurs standard

• Un super-utilisateur par défaut : sysman/oem_temp

• Gestion des administrateurs à partir de la console

Page 84: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................2-22 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 2 : Initiation à Oracle Server

Démarrer Enterprise Manager Configuration AssistantL'outil Configuration Assistant crée des référentiels partagés et configure le serveur OMS et la console locale. Il est démarré automatiquement par le programme d'installation Universal Installer une fois l'installation terminée, mais vous pouvez le démarrer manuellement depuis :

• le système d'exploitation en exécutant la commande suivante :%emrepmgr

• le menu Start de Windows NT en cliquant sur Start—>Programs—>Oracle - EM Home—> Oracle Enterprise Management—>Enterprise Manager Configuration Assistant.

Remarque techniqueAvant d'utiliser cet assistant, vérifiez que toutes les bases de données qui contiendront un référentiel partagé disposent des tablespaces nécessaires. Il est recommandé de placer chaque référentiel dans un tablespace distinct pour faciliter la gestion.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Configuration Assistant

Page 85: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 2-23

.....................................................................................................................................................Oracle Enterprise Manager

Créer un référentiel

2-3 Configuration Assistant permet de créer ou de supprimer un référentiel Oracle Enterprise Manager. Vous pouvez également l'utiliser pour modifier la connexion d'un référentiel sur un serveur OMS (Oracle Management Server).

Créez un référentiel à l'aide de Configuration Assistant.

1 Lancez Configuration Assistant :Start—>Programs—>Oracle - EMV2 Home—>Oracle Enterprise Management—>Enterprise Manager Configuration Assistant

2 Sélectionnez le bouton d'option "Create a new repository", puis cliquez sur le bouton Next.

3 Entrez le nom d'utilisateur system, le mot de passe manager et le service host:port:sid (JDBC), puis cliquez sur Next.

4 Si un avertissement s'affiche indiquant que le nombre de processus doit être égal à 200, cliquez sur Yes pour continuer.

5 Entrez le nom d'utilisateur Rep_Usernumber et le mot de passe manager, confirmez le mot de passe manager, puis cliquez sur Next.

6 Indiquez le tablespace OEM et le tablespace temporaire TEMP, puis cliquez sur Next.

7 Cliquez sur Finish, puis attendez la fin de la création du référentiel. Cliquez sur Close pour quitter Configuration Assistant.

2-4 Vous devez redémarrer le serveur OMS après avoir créé le référentiel. Sous Windows NT, le serveur doit redémarrer automatiquement lorsque vous démarrez le PC.

Démarrez le service OMS.

1 Démarrez le service OMS :Start—>Settings—>Control Panel

2 Cliquez deux fois sur Services, puis sélectionnez le service OracleEMV2 HomeManagement Server. S'il n'est pas démarré, cliquez sur Start pour le démarrer.

Page 86: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................2-24 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 2 : Initiation à Oracle Server

Console Oracle Enterprise ManagerLa console Oracle Enterprise Manager fournit une vue globale du système. La console affiche les objets du système dans une arborescence hiérarchique et sous forme graphique. Elle présente les fonctionnalités suivantes :

1 Un ensemble de tiroirs appelle d'autres applications pour exécuter des tâches d'administration, ce qui permet d'éviter de recourir au menu.

2 Une vue de type navigateur ou explorateur d'objets offre une vision hiérarchique des services Oracle sur le réseau. Le navigateur permet aux administrateurs de naviguer dans les différents services Oracle, tels que les bases de données, les processus d'écoute, les nœuds et les serveurs de noms, et de modifier les caractéristiques d'objets, tels que les utilisateurs et les tables qu'ils contiennent.

3 Un système Job permet d'exécuter à distance les tâches associées aux processus d'écoute, aux bases de données ou à l'hôte lui-même. Le système Job repose sur le moteur procédural TCL (Tool Control Language).

4 Vous pouvez utiliser un menu pour démarrer d'autres applications d'administration et exécuter diverses tâches.

5 Une carte, ou vue topographique, permet de regrouper les services Oracle en fonction de leurs relations spatiales et/ou de leurs fonctions. Cette vue donne la possibilité aux utilisateurs de se concentrer sur les objets gérés qui les intéressent.

6 Un système Event surveille et signale le statut du système. Le système Event, combiné au système Job, exécute les actions correctives en fonction de critères prédéfinis et peut signaler les événements à l'administrateur, par pageur ou courrier électronique.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Console Oracle Enterprise Manager5 621 3 4

Page 87: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 2-25

.....................................................................................................................................................Oracle Enterprise Manager

Démarrer la console Oracle Enterprise Manager

2-5 Démarrer la console pour afficher une vue générale du système associé au référentiel connecté.

1 Démarrez la console :Start—>Programs—>Oracle - EMV2 Home—>Oracle Enterprise Management—>Enterprise Manager Console

2 Entrez le nom d'administrateur sysman, le mot de passe oem_temp et le serveur de gestion nom du PC hôte, puis cliquez sur OK.

3 Lorsqu'un message vous demande de modifier le mot de passe, entrez manager.

2-6 Pour afficher un service dans l'arborescence du navigateur, le service doit être repéré par l'agent sur le nœud où il réside.

1 Sélectionnez Navigator—>Discover Nodes... dans le menu Console.

2 Entrez le nom de l'hôte du serveur, puis cliquez sur OK. Cliquez sur Close une fois le service repéré. La base de données doit désormais figurer dans l'arborescence du navigateur.

3 Pour le vérifier, développez le dossier Database.

Page 88: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................2-26 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 2 : Initiation à Oracle Server

DBA Management PackOracle Enterprise Manager comprend les applications standard suivantes :

• Instance Manager : permet de contrôler la disponibilité d'une base de données et de définir les paramètres d'initialisation pour préciser les caractéristiques de l'instance.

• Security Manager : gère les utilisateurs et leurs privilèges.

• Storage Manager : organise les fichiers de la base de données et gère les segments d'annulation.

• Schema Manager : crée et gère les objets, tels que les tables, les index et les vues.

• SQL*Plus Worksheet : interface de ligne de commande permettant d'exécuter des commandes SQL, du code PL/SQL, des commandes SQL*Plus et des commandes DBA spéciales, telles que startup et shutdown.

• Outils et assistants de gestion des données : permettent de charger et de réorganiser les données dans les bases de données.

• Outils et assistants de gestion des sauvegardes : permettent de sauvegarder, de restaurer et de récupérer les bases de données et de gérer les fichiers de journalisation (redo log).

Copyright Oracle Corporation, 1999. Tous droits réservés.®

DBA Management Pack

• Instance Manager

• Security Manager

• Storage Manager

• Schema Manager

• SQL*Plus Worksheet

• Outils et assistants de gestionet de sauvegarde des données

Page 89: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 2-27

.....................................................................................................................................................Oracle Enterprise Manager

DBA Management Pack (suite)Remarque :

• Vous pouvez appeler toutes les applications à partir de la console ou directement à partir du système d'exploitation.

• L'utilisation de ces applications pour exécuter des tâches spécifiques est décrite dans les autres chapitres de ce cours.

• L'utilisation des outils et des assistants de gestion des sauvegardes pour sauvegarder, restaurer et récupérer les bases de données est décrite dans le cours Oracle DBA : Sauvegarde et restauration.

Appeler SQL*Plus Worksheet1 Démarrez SQL*Plus Worksheet :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>SQL Plus Worksheet

2 Veillez à vous connecter directement à une base de données. Entrez le nom d'utilisateur system, le mot de passe manager et le nom de service de la base de données de travail, puis cliquez sur OK.

3 Sélectionnez File—>Exit pour fermer la feuille de calcul.

Page 90: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................2-28 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 2 : Initiation à Oracle Server

Management PacksIl existe trois packs de gestion contenant des outils de diagnostic, de réglage et de gestion des modifications d'un environnement de base de données Oracle.

• Diagnostics Pack contient les outils suivants :

– Oracle Trace et Data Viewer : permettent de créer, de planifier, d'administrer et d'afficher les informations de trace collectées à partir de la base de données, de Net8 et d'autres applications.

– Performance Manager : permet de créer, d'afficher et de modifier des graphiques pour surveiller et afficher les informations concernant la base de données.

– Capacity Planner : collecte des statistiques sur les performances de la base de données et du système d'exploitation, enregistre l'historique de la base de données et analyse les données pour planifier les futurs besoins en capacité.

– TopSessions : affiche des informations sur les sessions actuellement connectées à une base de données.

– Advanced Events : fournit d'autres événements Oracle Enterprise Manager pour administrer la base de données de manière proactive.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Diagnostic Pack, Tuning Packet Change Management Pack

Oracle Expert

SQL Analyze

Tablespace Mgr.

Capacity Planner

Performance Mgr.

TopSessions

Trace Data Viewer

Trace Mgr.

DB Alter

DB Capture

DB Diff

DB Propagate

DB Quick Change

Plan Manager

DB Search

Page 91: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 2-29

.....................................................................................................................................................Oracle Enterprise Manager

Management Packs (suite)• Tuning Pack contient les outils suivants :

– Oracle Expert : optimise les performances de la base de données Oracle en collectant des paramètres et des informations sur l'environnement, les applications et la structure de la base de données (les données collectées sont analysées et des recommandations de réglage sont proposées).

– Tablespace Manager : détecte et résout les problèmes de gestion d'espace et réorganise les objets de base de données.

– SQL Analyze : localise, analyse et modifie les instructions SQL pour améliorer les performances des applications.

• Change Management Pack contient les outils suivants :

– Database Capture : saisit des ensembles de définitions d'objets de base de données (lignes de base (baselines)).

– Database Diff : compare les définitions d'objet de deux bases de données (ou lignes de base).

– Database Quick Change : modifie une seule définition d'objet dans une seule base de données.

– Database Alter : modifie une ou plusieurs définitions d'objet dans une ou plusieurs bases de données.

– Database Propagate : sélectionne une ou plusieurs définitions d'objet dans une base de données et les propage dans un autre schéma ou dans une autre base de données.

– Plan Manager : centralise toutes les applications de gestion des modifications.

Remarque : les expressions tablespace, segment, extent (ensemble de blocs contigus) et espace libre sont expliquées dans les chapitres suivants.

Page 92: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................2-30 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 2 : Initiation à Oracle Server

Synthèse

Copyright Oracle Corporation, 1999. Tous droits réservés.®

SynthèseCe chapitre vous a permis d'apprendre :• à décrire les caractéristiques du programme

d'installation Universal Installer– basé sur un moteur Java,– prise en charge de plusieurs emplacements Oracle,– exécution en mode automatique.

• à expliquer l'authentification par le systèmed'exploitation et par le fichier de mots de passe,

• à décrire les principaux composants d'Oracle EnterpriseManager– architecture à trois niveaux,– console et applications de type Java,– système multi-utilisateur avec référentiels partagés,– point de contrôle central.

Page 93: Oracle DBA - Architecture & Administration Vol.1

.................................

3

Gérer une instance debase de données Oracle

Page 94: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-2 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Objectifs

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Objectifs

A la fin de ce chapitre, vous pourrez :

• créer le fichier de paramètres,

• démarrer une instance et ouvrir la basede données,

• fermer la base de données et arrêter l'instance,

• extraire et définir les valeurs de paramètre,

• gérer des sessions,

• surveiller le fichier ALERT et les fichiers trace.

Page 95: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-3

.....................................................................................................................................................Présentation

Présentation

Présentation des procédures de démarrage et d'arrêt d'un serveur OracleUne base de données Oracle ne peut être disponible pour les utilisateurs que si l'administrateur de base de données (DBA) a préalablement ouvert la base de données et démarré une instance.

Au cours du démarrage d'une base de données, les événements suivants se produisent. Chaque événement fait passer la base de données Oracle par différentes étapes :

1 Démarrage d'une instance.

2 Montage de la base de données.

3 Ouverture de la base de données.

Au démarrage d'une instance, Oracle alloue la mémoire SGA (System Global Area) et lance les processus d'arrière-plan à l'aide d'un fichier de paramètres qui contient les paramètres d'initialisation.

Si vous avez démarré une instance ou ouvert une base de données, procédez comme suit pour arrêter la base :

1 Fermez la base de données.

2 Démontez-la.

3 Arrêtez l'instance.

Lorsque la base de données est fermée, les utilisateurs ne peuvent pas y accéder.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Fichier de mots de passe

Fichier de paramètres

Fichierstrace

Fichier ALERT

Présentation

Processusutilisateur

Processusserveur

PGA Mémoire SGA Zone de mémoirepartagée

Fichiers dedonnées

Fichiersde journa-

lisation

Fichiers decontrôle

Instance

Base de données

Page 96: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-4 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Créer et utiliser le fichier de paramètresLe fichier de paramètres, communément appelé fichier initsid.ora, est un fichier texte modifiable à l'aide d'un éditeur standard du système d'exploitation.

Par défaut, il se trouve dans le répertoire $ORACLE_HOME/dbs sous UNIX, et dans le répertoire %ORACLE_HOME%\database sous Windows NT. Dans Oracle8i pour Windows NT, le fichier de paramètres pointe sur le répertoire %ORACLE_HOME%\admin\sid \pfile qui contient le fichier de paramètres réel. Le paramètre IFILE est utilisé à cet effet.

Le fichier de paramètres n'est lu que pendant le démarrage de l'instance. Si vous le modifiez, arrêtez l'instance puis redémarrez-la pour appliquer les nouvelles valeurs de paramètre. Certains paramètres sont dynamiques, c'est-à-dire qu'ils peuvent être modifiés pendant l'exécution de l'instance. Les paramètres dynamiques sont traités plus loin dans ce chapitre.

Oracle Enterprise Manager Console ou Instance Manager permet à l'administrateur de base de données (DBA) de consulter et de modifier les paramètres d'initialisation. Ces paramètres sont conservés dans un fichier de paramètres local ou dans le référentiel (repository) Oracle Enterprise Manager à l'aide de configurations stockées. Si l'administrateur de base de données utilise des configurations stockées, il doit se connecter à un serveur OMS (Oracle Management Server) pour accéder au référentiel. Dans les versions antérieures d'Oracle Enterprise Manager (1.x), les paramètres d'initialisation étaient stockés en local dans la base de registres Windows NT.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

initU15.ora

Fichier de paramètres d'initialisation

SQL> CONNECT / AS SYSDBA

SQL> STARTUP PFILE=/DISK1/initU15.ora

SQL> CONNECT / AS SYSDBA

SQL> STARTUP PFILE=/DISK1/initU15.ora

Zone de mémoirepartagée

Instance

Mémoire SGA

Tampon de journa-

lisation

Cachede tampons de données

SMON DBWR PMON CKPT LGWR ARCH

Cache "library"

Cache du dictionnaire de données

Page 97: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-5

.....................................................................................................................................................Présentation

Créer une configuration stockée

3-1 Lancez Instance Manager et enregistrez une configuration stockée.

1 Lancez la console Oracle Enterprise Manager :Start—>Programs—>Oracle - EMV2 Home—>Oracle Enterprise Management—>Enterprise Manager Console

2 Entrez l'ID administrateur sysman, le mot de passe manager et le nom du serveur de gestion nom du PC hôte, puis cliquez sur OK.

3 Cliquez sur le second tiroir situé à gauche de la console et sélectionnez Instance Manager.

4 Développez le dossier de la base de données de travail et sélectionnez les paramètres d'initialisation dans l'arborescence du navigateur.

5 Ces paramètres doivent s'afficher dans le panneau droit de la fenêtre. Cliquez sur Save et nommez la configuration, puis cliquez sur OK pour l'enregistrer en tant que configuration stockée.

6 Développez le dossier des configurations stockées pour vérifier que les paramètres ont été enregistrés.

Page 98: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-6 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Utiliser les paramètresLes paramètres du fichier initsid.ora peuvent avoir une incidence importante sur les performances de la base de données. Vous devez en modifier certains pour les systèmes de production en procédant comme suit :

• Dimensionnez les composants de la mémoire SGA (System Global Area) pour optimiser les performances.

• Définissez les valeurs par défaut de la base de données et de l'instance.

• Définissez les limites relatives aux utilisateurs ou aux processus.

• Définissez les limites relatives aux ressources de la base de données.

• Définissez (uniquement lors de la création de la base de données) les divers attributs physiques de la base de données, tels que la taille des blocs.

• Indiquez les fichiers de contrôle, les fichiers journaux archivés, le fichier ALERT et l'emplacement des fichiers trace.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Utiliser les paramètres

• Dimensionnez la mémoire SGA.

• Définissez les valeurs par défaut de la basede données et de l'instance.

• Définissez les limites relatives aux utilisateursou aux processus.

• Définissez les limites relatives aux ressourcesde la base de données.

• Définissez les divers attributs physiques de labase de données, tels que la taille des blocs.

• Indiquez l'emplacement des fichiers de contrôle,des fichiers journaux archivés, du fichier ALERTet des fichiers trace.

Page 99: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-7

.....................................................................................................................................................Présentation

Règles applicables à la déclaration des paramètres• Indiquez les valeurs comme suit : keyword=value.

• Tous les paramètres sont facultatifs.

• Le serveur possède une valeur par défaut pour chaque paramètre. En fonction de celui-ci, la valeur peut dépendre du système d'exploitation.

• Les paramètres peuvent être indiqués dans n'importe quel ordre.

• Les lignes de commentaires sont précédées du symbole #.

• Placez les paramètres entre guillemets pour inclure les littéraux de type caractère.

• Vous pouvez ajouter d'autres fichiers à l'aide du mot-clé IFILE.

• Si la distinction majuscules/minuscules est importante pour le système d'exploitation, elle doit également être respectée pour les noms de fichier.

• Les valeurs multiples sont placées entre parenthèses et séparées par des virgules.

Remarque : adoptez une convention d'énumération des paramètres ; énumérez-les par ordre alphabétique ou regroupez-les par fonction.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Exemple de fichier de paramètres# Initialization Parameter File: initU15.ora

db_name = U15

control_files = (/DISK1/control01.con,

/DISK2/control02.con)

db_block_size = 8192

db_block_buffers = 2048

shared_pool_size = 52428800

log_buffer = 64K

processes = 50

db_files = 1024

log_files = 10

max_dump_file_size = 10240

background_dump_dest = (/home/disk3/user15/BDUMP)

user_dump_dest = (/home/disk3/user15/UDUMP)

core_dump_dest = (/home/disk3/user15/CDUMP)

rollback_segments = (r01,r02,r03,r04,r05,r06,r07,r08)

...

Page 100: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-8 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Paramètres à indiquer

Remarque techniqueLes valeurs par défaut dépendent de la version du serveur Oracle.

Paramètre DescriptionBACKGROUND_DUMP_DEST Emplacement utilisé pour l'écriture des fichiers trace

des processus d'arrière-plan (LGWR, DBWn, etc.). C'est également l'emplacement du fichier d'alertes.

COMPATIBLE Version de serveur avec laquelle cette instance est compatible. La valeur par défaut est 8.1.0.

CONTROL_FILES Nom des fichiers de contrôle.DB_BLOCK_BUFFERS Nombre de blocs mis en mémoire cache SGA.DB_NAME Identificateur de base de données pouvant comporter

jusqu'à 8 caractères. C'est le seul paramètre obligatoire lors de la création d'une base de données.

SHARED_POOL_SIZE Taille (en octets) de la zone de mémoire partagée. USER_DUMP_DEST Emplacement dans lequel des fichiers trace de

débogage utilisateur sont créés pour un processus utilisateur.

Page 101: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-9

.....................................................................................................................................................Présentation

Paramètres communément modifiés

Paramètre DescriptionIFILE Nom du fichier de paramètres à imbriquer dans le fichier

de paramètres en cours. Il est possible d'utiliser jusqu'à trois niveaux d'imbrication.

LOG_BUFFER Nombre d'octets alloués au tampon de journalisation (redo log buffer) dans la mémoire SGA.

MAX_DUMP_FILE_SIZE Taille maximale des fichiers trace, exprimée en nombre de blocs du système d'exploitation.

PROCESSES Nombre maximal de processus du système d'exploitation pouvant se connecter simultanément à cette instance.

SQL_TRACE Active ou désactive la fonction trace SQL pour chaque session utilisateur.

TIMED_STATISTICS Active ou désactive le moment de déclenchement dans les fichiers trace et sur les écrans de surveillance.

Page 102: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-10 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Etapes des procédures de démarrage et d'arrêt

Etapes de la procédure de démarrageLorsque vous démarrez une base de données, vous choisissez son état initial.

Les scénarios ci-après décrivent les différentes étapes du démarrage d'une instance.

Démarrer l'instance En général, vous démarrez une instance sans monter de base de données uniquement lors de la création d'une base de données ou de la recréation des fichiers de contrôle.

Le démarrage d'une instance comprend les tâches suivantes :

• lecture du fichier de paramètres initsid.ora,

• affectation de la mémoire SGA,

• démarrage des processus d'arrière-plan,

• ouverture du fichier ALERT et des fichiers trace.

Vous devez nommer la base de données. Pour cela, indiquez le paramètre DB_NAME dans le fichier initSID.ora ou dans la commande STARTUP.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

OUVERTURE

MOUNT

NOMOUNT

ARRET

Ouverture de tous les fichiersconformément au fichier decontrôle de cette instance.

Ouverture dufichier de contrôlede cette instance.

Démarragede l'instance.

Etapes des procéduresde démarrage et d'arrêt

DEMARRAGE

ARRET

Page 103: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-11

.....................................................................................................................................................Etapes des procédures de démarrage et d'arrêt

Etapes de la procédure de démarrage (suite)

Monter la base de données A des fins de maintenance, vous démarrez une instance et montez une base de données sans l'ouvrir.

C'est le cas, par exemple, pour les tâches suivantes :

• attribution d'un nouveau nom à un fichier de données,

• activation ou désactivation des options d'archivage des fichiers de journalisation,

• récupération de toute la base de données.

Le montage d'une base de données comprend les tâches suivantes :

• association d'une base de données à une instance déjà démarrée,

• localisation et ouverture des fichiers de contrôle indiqués dans le fichier de paramètres,

• lecture des fichiers de contrôle pour extraire le nom et le statut des fichiers de données et des fichiers de journalisation (redo log) (toutefois, l'existence des fichiers de données et des fichiers de journalisation en ligne (online) n'est pas vérifiée à ce stade).

Ouvrir la base de données En mode d'exploitation normal, vous démarrez une instance, puis montez et ouvrez la base de données. Ainsi, les utilisateurs autorisés peuvent s'y connecter et accéder aux données.

L'ouverture de la base de données comprend les tâches suivantes :

• ouverture des fichiers de données en ligne,

• ouverture des fichiers de journalisation en ligne.

Si un fichier de données ou de journalisation en ligne est absent lorsque vous tentez d'ouvrir la base de données, le serveur Oracle renvoie une erreur.

Au cours de cette dernière étape, il vérifie que tous les fichiers de données et de journalisation en ligne peuvent être ouverts et contrôle la cohérence de la base de données. Si nécessaire, le processus d'arrière-plan SMON (System Monitor) déclenche la récupération de l'instance.

Récupération de l'instanceIl y a échec de l'instance lorsque celle-ci ne peut plus s'exécuter.

Par exemple, en cas de défaillance du système d'exploitation, le processus d'arrière-plan SMON récupère automatiquement l'instance lors de la réouverture de la base de données. Le fichier de journalisation en ligne permet de récupérer les données validées stockées dans le cache de tampons de la base de données (database buffer cache), mais qui ont été perdues à la suite d'un échec de l'instance.

Page 104: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-12 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Récupération de l'instance (suite)La récupération d'une instance de base de données comprend les étapes suivantes :

1 réimplémentation des modifications pour la récupération des données enregistrées dans le fichier de journalisation en ligne, mais non enregistrés dans les fichiers de données,

2 ouverture de la base de données - et non pas attente de l'annulation de toutes les transactions - pour sa mise à la disposition des utilisateurs (les données non verrouillées par les transactions non récupérées sont immédiatement disponibles),

3 annulation des transactions non validées par le processus SMON ainsi que par les divers processus serveur qui accèdent aux données verrouillées.

Etapes de la procédure d'arrêtLa procédure d'arrêt d'une instance et de la base de données associée comporte trois étapes.

Fermer la base de données Dans la procédure d'arrêt d'une base de données, la première étape consiste à fermer la base. Lors de la fermeture, les modifications stockées dans le cache de tampons (buffer cache) et les entrées figurant dans le cache de tampons de journalisation (redo log buffer cache) sont écrites par le serveur Oracle dans les fichiers de données et dans les fichiers de journalisation en ligne (online). Une fois l'opération d'écriture terminée, le serveur Oracle ferme tous les fichiers de données en ligne et les fichiers de journalisation en ligne. Les fichiers de contrôle restent ouverts lorsque la base de données est fermée mais non démontée.

Démonter la base de données La seconde étape consiste à démonter la base de données à partir d'une instance. Une fois la base de données démontée, seule l'instance reste présente.

Une fois la base de données démontée, le serveur Oracle ferme les fichiers de contrôle.

Arrêter l'instance La dernière étape de la procédure d'arrêt de la base de données consiste à arrêter l'instance. Cette opération entraîne la fermeture du fichier ALERT et des fichiers trace, la désallocation de la mémoire SGA et l'interruption des processus d'arrière-plan.

Page 105: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-13

.....................................................................................................................................................Démarrer l'instance

Démarrer l'instance

DémarrerPour démarrer une instance, exécutez la commande suivante :

STARTUP [FORCE] [RESTRICT] [PFILE=filename]

[OPEN [RECOVER][database]

|MOUNT

|NOMOUNT]

Remarque : cet exemple n'illustre pas la syntaxe complète.

où :

OPEN permet aux utilisateurs d'accéder à la base de données.

MOUNT monte la base de données pour certaines tâches d'administration, mais ne permet pas aux utilisateurs d'y accéder.

NOMOUNT crée la mémoire SGA et lance les processus d'arrière-plan, mais ne permet pas d'accéder à la base de données.

PFILE=parfile permet de configurer l'instance à partir d'un fichier de paramètres personnalisés.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Commande STARTUP

STARTUP PFILE=/DISK1/initU15.oraSTARTUP PFILE=/DISK1/initU15.ora

Démarrez l'instance et ouvrez la base de données :

Page 106: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-14 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Démarrer (suite)FORCE abandonne l'instance en cours, puis exécute

un démarrage normal.

RESTRICT n'autorise l'accès de la base de données qu'aux utilisateurs dotés du privilège RESTRICTED SESSION.

RECOVER lance la procédure de restauration physique lors du démarrage de la base de données.

Remarque techniqueDans Oracle8i, toutes les commandes Server Manager, telles que STARTUP et SHUTDOWN, ont été intégrées à SQL*Plus. Dans ce cours, les exemples de syntaxe utilisent SQL*Plus et non Server Manager.

Server Manager est toujours fourni avec Oracle8i à des fins de compatibilité descendante. Le mode ligne de Server Manager peut être lancé à l'aide de l'exécutable SVRMGRL.

Automatiser le démarrage de la base de données

Sous Windows NT La base de données Oracle pour Windows NT s'exécute en tant que service, ce qui évite d'interrompre les processus lors de la déconnexion des utilisateurs. Tout service doit être enregistré par le sous-système de services de Windows NT.

Pour lancer les services Oracle au démarrage, ouvrez le panneau de configuration de la boîte de dialogue Service et sélectionnez le type de démarrage Automatic.

Versions précédentes d'Oracle8i Pour ouvrir la base de données, lancez les deux services suivants :

• OracleServiceSID : créé pour le SID d'instance de base de données.

• OracleStartSID : démarre la base de données automatiquement par l'exécution du script strtSID.cmd .

Avec Oracle8i Pour ouvrir la base de données, lancez le service suivant :

OracleServiceSID: créé pour le SID d'instance de base de données.

Pour le démarrage automatique de la base de données, assurez-vous que le paramètre ORA_SID_AUTOSTART a pour valeur True dans la base de registres. (Pour plus d'informations, voir le guide d'installation de votre système d'exploitation.)

Sous UNIX Sous UNIX, le démarrage et l'arrêt automatiques de la base de données peuvent être contrôlés par les entrées d'un fichier spécial du système d'exploitation (par exemple, le fichier oratab qui se trouve dans le répertoire /var/opt/oracle). (Pour plus d'informations, voir le guide d'installation de votre système d'exploitation.)

Page 107: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-15

.....................................................................................................................................................Démarrer l'instance

DépannageSi vous tentez de lancer les utilitaires Oracle sans ces services, vous obtiendrez l'un des messages d'erreur suivants :

ORA-12547: TNS: lost contact

ou ORA-09352: Windows 32-bit two-task driver unable to spawn new Oracle task

Page 108: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-16 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Modifier la disponibilité de la base de données

Modifier le statut de la base de donnéesPour faire passer la base de données du statut STARTUP NOMOUNT à MOUNT ou du statut MOUNT à OPEN, exécutez la commande ALTER DATABASE :

ALTER DATABASE { MOUNT | OPEN }

Pour éviter que des transactions utilisateur ne modifient des données, la base de données peut être ouverte en mode lecture seule (READ ONLY).

Pour démarrer une instance, exécutez la commande suivante :ALTER DATABASE OPEN

[READ WRITE| READ ONLY]

où :

READ WRITE ouvre la base de données en mode lecture-écriture et permet de générer des fichiers de journalisation.

READ ONLY limite l'accès aux transactions en mode lecture seule et ne permet pas de générer des informations de journalisation.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Commande ALTER DATABASE

• Faites passer la base de données de l'étatNOMOUNT à MOUNT :

ALTER DATABASE database MOUNT;ALTER DATABASE database MOUNT;

• Ouvrez la base de données en mode lecture seule(READ ONLY) :

ALTER DATABASE database OPEN READ ONLY;ALTER DATABASE database OPEN READ ONLY;

Page 109: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-17

.....................................................................................................................................................Ouvrir une base de données en mode lecture seule

Ouvrir une base de données en mode lecture seule

Caractéristiques d'une base de données en lecture seuleToute base de données peut être ouverte en mode lecture seule, dans la mesure où elle n'est pas déjà ouverte en mode lecture-écriture (READ WRITE). Cette fonctionnalité est particulièrement utile lorsqu'une base de données de secours doit décharger la base de données de production du traitement des interrogations.

Si une interrogation doit employer un tablespace temporaire (par exemple, pour les tris sur disque), l'utilisateur en cours doit disposer d'un tablespace géré en local et affecté en tant que tablespace temporaire par défaut, sinon l'interrogation échoue. L'utilisateur SYS doit disposer d'un tablespace géré en local.

Remarque : les tablespaces gérés en local sont traités dans un autre chapitre.

Le mode lecture seule ne limite ni la fonction de récupération de la base de données ni les opérations qui modifient l'état de celle-ci sans générer de données de journalisation. Ainsi, en mode lecture seule :

• les fichiers de données sont utilisables hors ligne (offline) et en ligne (online),

• les fichiers de données hors ligne et les tablespaces sont récupérables.

Les opérations d'écriture sur disque portant sur d'autres fichiers, tels que les fichiers de contrôle, les informations d'audit du système d'exploitation, les fichiers trace et les fichiers ALERT, peuvent se poursuivre en mode lecture seule.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Ouvrir une base de données en modelecture seule (READ ONLY)

• Toute base de données peut être ouverteen mode lecture seule.

• Dans ce mode, vous pouvez :

– lancer des interrogations,

– effectuer des opérations de tri sur disqueavec des tablespaces gérés en local,

– utiliser des fichiers de données hors ligneet en ligne, et non des tablespaces,

– récupérer des fichiers de données horsligne et des tablespaces.

Page 110: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-18 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Arrêter

Arrêter la base de donnéesArrêtez la base de données pour effectuer la sauvegarde "offline" de toutes les structures physiques et pour modifier des paramètres d'initialisation.

Pour arrêter une instance, exécutez la commande suivante :SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]

Arrêt en mode Normal (SHUTDOWN NORMAL)Le mode d'arrêt par défaut est SHUTDOWN NORMAL. Il s'effectue dans les conditions suivantes :

• aucune nouvelle connexion n'est autorisée,

• le serveur Oracle attend la déconnexion préalable de tous les utilisateurs,

• il ferme et démonte la base de données avant d'arrêter l'instance,

• la récupération de l'instance n'est pas nécessaire lors du démarrage suivant.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Mode d'arrêt :

A Abort I Immediate

T Transactional N Normal

Options d'arrêt

A

x

x

x

x

T

x

x

o

o

I

x

x

x

o

Mode d'arrêt

Permettre de nouvelles connexions

Attendre la fin des sessions en cours

Attendre la fin des transactions en cours

Imposer un point de reprise et fermer les fichiers

N

x

o

o

o

OUI

NONx

o

Page 111: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-19

.....................................................................................................................................................Arrêter

Arrêt en mode Transactional (SHUTDOWN TRANSACTIONAL)L'arrêt en mode Transactional évite aux clients de perdre les travaux en cours. Il s'effectue dans les conditions suivantes :

• aucun client ne peut lancer de nouvelle transaction pour l'instance indiquée,

• le client est déconnecté lorsqu'il termine la transaction en cours,

• une fois toutes les transactions terminées, l'arrêt est immédiat,

• la récupération de l'instance n'est pas nécessaire lors du démarrage suivant.

Arrêt en mode Immediate (SHUTDOWN IMMEDIATE)L'arrêt en mode Immediate s'effectue dans les conditions suivantes :

• les instructions SQL en cours de traitement par Oracle ne sont pas terminées,

• le serveur Oracle n'attend pas la déconnexion des utilisateurs de la base de données,

• il annule les transactions actives et déconnecte tous les utilisateurs en cours,

• il ferme et démonte la base de données avant d'arrêter l'instance,

• la récupération de l'instance n'est pas nécessaire lors du démarrage suivant.

Arrêt en mode Abort (SHUTDOWN ABORT)Si l'arrêt en mode Normal et l'arrêt en mode Immediate échouent, vous pouvez abandonner l'instance de base de données en cours. Cette opération s'effectue dans les conditions suivantes :

• les instructions SQL en cours de traitement par le serveur Oracle sont immédiatement interrompues,

• le serveur Oracle n'attend pas la déconnexion des utilisateurs de la base de données,

• les transactions non validées ne sont pas annulées,

• l'instance est interrompue sans fermeture des fichiers,

• la récupération de l'instance est nécessaire lors du démarrage suivant.

Remarque : dans les versions antérieures à Oracle8i pour Windows NT, vous pouvez fermer la base de données en arrêtant les deux services suivants : OracleServiceSID et OracleStartSID.

L'arrêt du service OracleServiceSID entraîne également l'interruption d'OracleStartSID et l'exécution du script orashut.bat.

Avec Oracle8i pour Windows NT, vous pouvez fermer la base de données en arrêtant le service OracleServiceSID et en affectant la valeur True au paramètre ORA_SID_SHUTDOWN dans la base de registres. (Pour plus d'informations, voir le guide d'installation de votre système d'exploitation.)

Page 112: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-20 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Séquence d'événements pendant les différents types d'arrêt (SHUTDOWN)La diapositive indique la séquence d'événements qui se produit lorsque les différentes commandes SHUTDOWN sont entrées après l'exécution de l'étape 1.

Les étapes 1 à 5 décrivent un transfert de fonds d'un compte bancaire vers un autre.

1 Interrogez les comptes pour vérifier leurs soldes respectifs.

2 A l'aide de la commande INSERT, transférez les fonds vers le nouveau compte bancaire.

3 A l'aide de la commande DELETE, retirez les fonds de l'ancien compte bancaire.

4 A l'aide de la commande COMMIT, terminez la transaction.

5 Déconnectez-vous du serveur Oracle.

En cas d'arrêt en mode Normal, le serveur Oracle attend la déconnexion préalable de tous les utilisateurs.

En cas d'arrêt en mode Immediate, il interrompt la commande SQL en cours à l'étape 2 et annule la transaction active.

En cas d'arrêt en mode Transactional, il attend le traitement de l'étape 4, c'est-à-dire l'exécution de la transaction, puis procède à un arrêt en mode Immediate.

En cas d'arrêt en mode Abort, il interrompt la commande SQL en cours, mais n'annule pas la transaction active.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Différents types d'arrêt

Retrait de fonds del'ancien compte

Validation

Déconnexion

Vérification desoldes

Ajout de nouveauxfonds

Arrêt enmodeNormal

Arrêt enmodeImmediate

Arrêt enmodeTransactional

Arrêt de la base de données

Arrêt de la base de données

Arrêt de la basede données

1

2

3

4

5

Transfertde fonds

Page 113: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-21

.....................................................................................................................................................Arrêter

Démarrer ou arrêter une base de données à l'aide d'Instance ManagerInstance Manager permet de démarrer ou d'arrêter une base de données.

1 Lancez Instance Manager et connectez-vous directement à la base de données :Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Instance Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Sélectionnez l'option correspondant à l'état de base de données voulu, puis cliquez sur Apply.

4 En fonction de l'option sélectionnée, vous devrez peut-être choisir une étape de la procédure puis cliquer sur OK pour exécuter l'opération requise.

Page 114: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-22 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Extraire et définir les valeurs de paramètre

Vues dynamiques des performancesCes vues sont dites dynamiques car elles sont mises à jour en permanence lorsque la base de données est ouverte et est en cours d'utilisation. Elles traitent essentiellement des performances. Elles fournissent des données sur les structures internes de disque et de mémoire et sont accessibles à l'administrateur de base de données.

Elles sont identifiées par le préfixe V_$, mais Oracle comporte des synonymes publics utilisant le préfixe V$.

Une fois l'instance démarrée en phase NOMOUNT, les vues V$ lisibles en mémoire deviennent accessibles. Les vues permettant de lire des données du fichier de contrôle exigent le montage de la base de données.

La vue V$FIXED_TABLE affiche toutes les vues dynamiques des performances.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Vues dynamiques des performances

• Sont gérées par le serveur Oracle et mises à jouren permanence.

• Contiennent des données sur les structures dedisque et de mémoire.

• Contiennent des données utiles pour le réglagedes performances.

• Sont associées à des synonymes publics portantle préfixe V$.

Page 115: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-23

.....................................................................................................................................................Extraire et définir les valeurs de paramètre

Copyright Oracle Corporation, 1999. Tous droits réservés.®

OUVERTURE

MOUNT

NOMOUNT

Dictionnairede données

Afficher les vues dynamiquesdes performances

Lecture des donnéessur disque

Lecture des donnéesen mémoire

ARRET

Page 116: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-24 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Exemple

Vue dynamique des performances(accessible en phase NOMOUNT) DescriptionV$PARAMETER Contient des informations sur les paramètres

d'initialisation.V$SGA Contient des informations de synthèse sur la

mémoire SGA.

V$OPTION Répertorie les options installées avec le serveur Oracle.

V$PROCESS Contient des informations sur les processus en cours.

V$SESSION Répertorie les informations sur la session en cours.

V$VERSION Indique le numéro de version et les composants.

V$INSTANCE Affiche l'état de l'instance en cours.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Exemple

MémoireSGA

V$PARAMETERV$SGAV$OPTIONV$PROCESSV$SESSION V$VERSIONV$INSTANCE

Fichier de contrôle

V$THREADV$CONTROLFILEV$DATABASEV$DATAFILEV$DATAFILE_HEADERV$LOGFILE

Page 117: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-25

.....................................................................................................................................................Extraire et définir les valeurs de paramètre

Exemple (suite)

Vue dynamique des performances(accessible en phase MOUNT) DescriptionV$THREAD Contient des informations sur les threads (par

exemple, sur les groupes de fichiers de journalisation).

V$CONTROLFILE Répertorie les noms de fichier de contrôle (cette vue ne renvoie aucune ligne lorsque la base de données est à l'état NOMOUNT).

V$DATABASE Contient des informations sur la base de données.

V$DATAFILE Contient des informations du fichier de contrôle sur les fichiers de données.

V$DATAFILE_HEADER Affiche les informations du fichier de contrôle sur les en-têtes de fichier de données.

V$LOGFILE Contient des informations sur les fichiers de journalisation en ligne (online).

Page 118: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-26 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Afficher les valeurs de paramètre en coursPour déterminer les valeurs de paramètre d'une base de données démarrée, exécutez la commande SHOW PARAMETER.

Cette commande affiche tous les paramètres dans l'ordre alphabétique avec la valeur en cours correspondante.

Lancez l'instruction SQL suivante pour afficher tous les noms de paramètre comportant la chaîne de texte CONTROL :

SQL> SHOW PARAMETER control

NAME TYPE VALUE

------------------------------- ------- --------------------

control_file_record_keep_time integer 7

control_files string /DISK1/control01.con

Vous pouvez également déterminer les valeurs de paramètre en cours à l'aide de la vue dynamique des performances V$PARAMETER.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Afficher les valeursde paramètre en cours

• Exécutez la commande :

• Interrogez la vue dynamique des performancesV$PARAMETER :

SHOW PARAMETER controlSHOW PARAMETER control

SELECT name FROM v$parameter

WHERE name LIKE '%control%';

SELECT name FROM v$parameter

WHERE name LIKE '%control%';

Page 119: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-27

.....................................................................................................................................................Extraire et définir les valeurs de paramètre

Modifier dynamiquement les paramètres d'initialisationCertains paramètres d'initialisation sont dynamiques, c'est-à-dire qu'ils sont modifiables à l'aide des commandes ALTER SESSION, ALTER SYSTEM ou ALTER SYSTEM DEFERRED pendant l'exécution d'une instance.

ALTER SESSION SET parameter_name = value

ALTER SYSTEM SET parameter_name = value [DEFERRED]

La commande ALTER SESSION modifie la valeur du paramètre indiqué pour la session qui exécute la commande.

La commande ALTER SYSTEM modifie globalement la valeur du paramètre indiquée. La nouvelle valeur reste en vigueur jusqu'à l'opération d'arrêt ou de modification suivante.

La commande ALTER SYSTEM DEFERRED modifie la valeur du paramètre indiqué pour les sessions qui se connecteront ultérieurement à la base de données.

Interrogez la vue V$PARAMETER ou V$SYSTEM_PARAMETER pour répertorier les informations sur le paramètre modifié.

SQL> SELECT isses_modifiable,issys_modifiable,

2 ismodified, name

3 FROM v$system_parameter

4 WHERE ismodified != 'FALSE';

ISSES ISSYS_MOD ISMODIFI NAME

----- --------- -------- --------------------------------------

TRUE IMMEDIATE MODIFIED timed_statistics

1 row selected.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Paramètres d'initialisation dynamiques

ALTER SESSION SET SQL_TRACE=true;ALTER SESSION SET SQL_TRACE=true;

ALTER SYSTEM SET TIMED_STATISTICS=true;ALTER SYSTEM SET TIMED_STATISTICS=true;

ALTER SYSTEM SET SORT_AREA_SIZE=131072 DEFERRED;ALTER SYSTEM SET SORT_AREA_SIZE=131072 DEFERRED;

• Certains paramètres d'initialisation peuvent êtremodifiés pendant l'exécution d'une instance.

Page 120: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-28 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Modifier dynamiquement les paramètres d'initialisation (suite)Les colonnes affichent les informations suivantes :

• ISSES_MODIFIABLE : indique si le paramètre est modifiable par la commande ALTER SESSION.

• ISSYS_MODIFIABLE : indique si le paramètre est modifiable par la commande ALTER SYSTEM.

• ISMODIFIED : indique si les commandes ALTER SESSION et ALTER SYSTEM sont respectivement modifiées par les valeurs MODIFIED et SYS_MODIFIED.

Les vues V$PARAMETER et V$SYSTEM_PARAMETER affichent respectivement les valeurs de session en cours et les valeurs système en cours indépendantes de la session. Par exemple, si vous exécutez la commande ALTER SYSTEM DEFERRED, la colonne ISMODIFIED de la vue V$SYSTEM_PARAMETER contient la valeur MODIFIED, mais la colonne de la vue V$PARAMETER affiche la valeur False dans la même session.

Remarque : la commande ALTER SYSTEM ou ALTER SYSTEM DEFERRED qui modifie un paramètre est enregistrée dans le fichier trace nommé ALERT.

Page 121: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-29

.....................................................................................................................................................Gérer les sessions

Gérer les sessions

Session en mode restreintUne session en mode restreint est utile par exemple lors de la mise à jour des structures ou de l'import/export d'une base de données. Vous pouvez démarrer la base de données en mode restreint pour qu'elle ne soit disponible qu'aux utilisateurs dotés du privilège RESTRICTED SESSION.

Vous pouvez également mettre la base de données en mode restreint par la commande SQL ALTER SYSTEM :

ALTER SYSTEM

{ENABLE|DISABLE}RESTRICTED SESSION

où :

ENABLE RESTRICTED ne permet qu'aux utilisateursSESSION dotés du privilège RESTRICTED

SESSION de se connecter ultérieurement.

DISABLE RESTRICTED désactive RESTRICTED SESSION de sorte queSESSION les utilisateurs non dotés de ce privilège puissen

se connecter.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Activer et désactiver unesession en mode restreint

• Exécutez la commande STARTUP pour restreindrel'accès à une base de données :

• Exécutez la commande ALTER SYSTEM pourmettre une instance en mode restreint :

STARTUP RESTRICTSTARTUP RESTRICT

ALTER SYSTEM ENABLE RESTRICTED SESSION;ALTER SYSTEM ENABLE RESTRICTED SESSION;

Page 122: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-30 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Session en mode restreint (suite)Remarque : la commande ALTER SYSTEM ne déconnecte pas les sessions en cours, mais ne permet qu'aux utilisateurs dotés du privilège RESTRICTED SESSION de se connecter ultérieurement.

La vue dynamique des performances V$INSTANCE contient des informations sur le mode restreint.

SQL> SELECT logins FROM v$instance;

LOGINS

----------

RESTRICTED

1 row selected.

Page 123: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-31

.....................................................................................................................................................Gérer les sessions

Interrompre des sessionsVous avez mis une instance en mode restreint et vous voulez arrêter toutes les sessions utilisateur en cours pour pouvoir effectuer des tâches administratives.

ALTER SYSTEM KILL SESSION 'integer1,integer2'

où : KILL SESSION identifie la session avec les deux valeurs suivantes extraites de la vue V$SESSION :integer1 : valeur de la colonne SID.integer2 : valeur de la colonne SERIAL#.

Remarque : l'ID de session et le numéro de série permettent d'identifier une session de façon unique. Cette unicité permet de s'assurer que la commande ALTER SYSTEM est appliquée à la session appropriée, même si l'utilisateur se déconnecte et qu'une nouvelle session est ouverte sous le même ID de session.

Effets de l'interruption d'une sessionLors de l'exécution de la commande ALTER SYSTEM KILL SESSION, le processus d'arrière-plan PMON effectue les tâches suivantes :

• annulation de la transaction utilisateur en cours,

• libération de tous les verrous de table ou de ligne,

• libération de toutes les ressources réservées par l'utilisateur.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

• Dans la vue dynamique des performancesV$SESSION, identifiez la session à interrompre :

• Exécutez la commande ALTER SYSTEM :

Interrompre des sessions

SELECT sid, serial# FROM v$session WHERE

username='SCOTT';

ALTER SYSTEM KILL SESSION '7,15';ALTER SYSTEM KILL SESSION '7,15';

Page 124: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-32 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Effets de l'interruption d'une session (suite)Vous pouvez interroger la vue V$SESSION pour identifier l'ID de session et le numéro de série des sessions utilisateur.

Interrompre une session active Si un utilisateur envoie un appel SQL au serveur Oracle—la session est donc ACTIVE—lorsque la session est interrompue, la transaction est annulée et l'utilisateur reçoit immédiatement le message suivant :

ORA-00028: your session has been killed

Si la session utilisateur traite des opérations qui ne doivent pas être interrompues, le serveur Oracle attend la fin de leur exécution.

Interrompre une session inactive Si la session est inactive lors de son interruption, le message ORA-00028 n'est pas renvoyé immédiatement, mais la colonne STATUS de la vue V$SESSION est marquée comme étant fermée.

Lorsque l'utilisateur tente de reprendre la session interrompue, le message ORA-00028 est renvoyé et la ligne correspondant à la session interrompue est retirée de la vue V$SESSION.

Remarque : lorsqu'une session est interrompue, le serveur Oracle n'arrête pas les processus du système d'exploitation.

Toutefois, la commande suivante, normalement utilisée dans un environnement Parallel Server, déconnecte une session lorsque la transaction en cours est terminée et interrompt le processus serveur :

ALTER SYSTEM DISCONNECT SESSION 'integer1, integer2' POST_TRANSACTION

Page 125: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-33

.....................................................................................................................................................Gérer les sessions

Fichier ALERT et fichiers traceEn cas d'erreur lors de l'exécution de l'instance de base de données Oracle, les messages correspondants sont écrits dans le fichier ALERT. Lors du démarrage de la base de données, Oracle crée un fichier ALERT s'il n'existe pas.

Le fichier ALERT d'une base de données est le journal chronologique des messages et des erreurs. Oracle peut utiliser le fichier ALERT plutôt que d'afficher ces informations.

Si une erreur est détectée par un processus d'arrière-plan, les informations correspondantes sont vidées (DUMP) dans un fichier trace.

Les fichiers trace peuvent également être générés par les processus serveur à la demande de l'utilisateur.

Vous pouvez activer ou désactiver la fonction trace par le paramètre d'initialisation SQL_TRACE (valeur True ou False).

L'instruction suivante permet d'écrire des données dans un fichier trace pour la session indiquée :

SQL>ALTER SESSION SET sql_trace=TRUE;

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Fichier ALERT et fichiers trace

• Les fichiers trace peuvent être écrits par lesprocessus serveur et les processus d'arrière-plan.

• Le serveur Oracle vide les informations relativesaux erreurs dans des fichiers trace.

• Le fichier ALERT est le journal chronologiquedes messages et des erreurs.

• La fonction trace par processus serveur peutêtre activée ou désactivée par :

– une commande ALTER SESSION,

– le paramètre SQL_TRACE.

Page 126: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-34 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Emplacement du fichier ALERT et des fichiers traceLes paramètres suivants permettent de contrôler l'emplacement et la taille du fichier ALERT et des fichiers trace :

Remarque :

• MAX_DUMP_FILE_SIZE et USER_DUMP_DEST sont des paramètres d'initialisation dynamiques.

• Sous UNIX, le fichier ALERT s'appelle alert_SID.log et se trouve par défaut dans le répertoire $ORACLE_HOME/rdbms/log.

• Sous Windows NT, le fichier ALERT s'appelle SIDalrt.log et se trouve par défaut dans le répertoire %ORACLE_HOME%\RDBMS80\TRACE d'Oracle8. Dans Oracle8i, il figure dans le répertoire %ORACLE_HOME%\ADMIN\SID\BDUMP.

Paramètre d'initialisation DescriptionBACKGROUND_DUMP_DEST Définit l'emplacement du fichier trace de

processus en arrière-plan et du fichier ALERT.

USER_DUMP_DEST Définit l'emplacement dans lequel les fichiers trace seront créés à la demande des utilisateurs.

MAX_DUMP_FILE_SIZE Est précisé dans les blocs OS ; limite la taille des fichiers trace utilisateur, mais pas celle du fichier ALERT ni des fichiers trace de processus en arrière-plan.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Contrôler le fichier ALERTet les fichiers trace

USER_DUMP_DEST BACKGROUND_DUMP_DEST

Fichier ALERT Fichiers traceFichiers trace

Mémoire SGA Zone de mémoirepartagée

Instance

Processusutilisateur

Processusserveur

Page 127: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-35

.....................................................................................................................................................Gérer les sessions

Instructions relatives au fichier ALERTIl est important de vérifier régulièrement le fichier ALERT pour détecter les incidents avant qu'ils ne s'aggravent.

Les informations suivantes sont journalisées dans le fichier ALERT :

• toutes les erreurs internes (ORA-00600) et les erreurs de corruption de bloc, (ORA-01578),

• les opérations qui ont une incidence sur les structures et les paramètres de la base de données, ainsi que des commandes telles que STARTUP, SHUTDOWN, ARCHIVE LOG et RECOVER,

• les valeurs de tous les paramètres d'initialisation définis implicitement par le DBA en vigueur au démarrage de l'instance.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Conseils

Vérifiez régulièrement le fichier ALERT pour :

• détecter les erreurs internes (ORA-600)et les erreurs de corruption de bloc,

• surveiller le fonctionnement de la basede données,

• afficher les paramètres d'initialisationpersonnalisés.

Page 128: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-36 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Synthèse

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Synthèse

Ce chapitre vous a permis d'apprendre :

• à créer le fichier de paramètres,

• à démarrer et arrêter une instance,

• à afficher les vues dynamiques des performances,

• à gérer les sessions,

• à surveiller le fichier ALERT et les fichiers trace.

Page 129: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 3-37

.....................................................................................................................................................Synthèse

Pour référence

Contexte RéférenceParamètres d'initialisation DB_NAME

CONTROL_FILES

SHARED_POOL_SIZE

BACKGROUND_DUMP_DEST

DB_BLOCK_BUFFERS

COMPATIBLE

IFILE

LOG_BUFFER

PROCESSES

SQL_TRACEParamètresd'initialisation dynamiques

USER_DUMP_DEST

MAX_DUMP_FILE_SIZE

TIMED_STATISTICSParamètresd'initialisation dynamiques (DEFERRED)

SORT_AREA_SIZE

Vues dynamiques des performances

V$FIXED_TABLE

V$PARAMETER

V$CONTROLFILE

V$DATABASE

V$DATAFILE

V$DATAFILE_HEADER

V$INSTANCE

V$LOGFILE

V$OPTION

V$PROCESS

V$PWFILE_USERS

V$SESSION

V$SYSTEM_PARAMETER

V$SGA

V$VERSION

Page 130: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................3-38 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 3 : Gérer une instance de base de données Oracle

Contexte RéférenceVues du dictionnaire de données

Aucune

Commandes CONNECT / AS SYSDBA

CONNECT / AS SYSOPER

STARTUP

SHUTDOWN

SHOW PARAMETER

ALTER SYSTEM KILL SESSION

ALTER SYSTEM DISCONNECT SESSION ... POST_TRANSACTION

ALTER SYSTEM ENABLE RESTRICTED SESSION

ALTER SYSTEM DISABLE RESTRICTED SESSION

ALTER SESSION SET

ALTER SYSTEM SET

ALTER SYSTEM SET... DEFERRED

ALTER DATABASE MOUNT

ALTER DATABASE OPEN

ALTER DATABASE OPEN READ ONLY

ALTER DATABASE OPEN READ WRITEProcédure et fonctionsde package

Aucune

Page 131: Oracle DBA - Architecture & Administration Vol.1

.................................

4

Créer une basede données

Page 132: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................4-2 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 4 : Créer une base de données

Objectifs

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Objectifs

A la fin de ce chapitre, vous pourrez :

• préparer le système d'exploitation,

• préparer le fichier de paramètres,

• créer la base de données.

Page 133: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 4-3

.....................................................................................................................................................Présentation

Présentation

Présentation de la gestion et de l'organisation d'une base de donnéesLa création de la base de données constitue la première étape de la procédure de gestion et d'organisation d'un système de base de données.

La création de la base de données consiste à préparer plusieurs fichiers du système d'exploitation. Cette tâche n'est effectuée qu'une seule fois, quel que soit le nombre de fichiers de données stockés dans la base de données. Il s'agit d'une opération très importante, car vous devez choisir des paramètres de base de données, tels que la taille des blocs et le jeu de caractères, que vous ne pourrez plus modifier une fois la base de données créée.

Selon le système d'exploitation, il se peut qu'une base de données ait été créée automatiquement lors de l'installation.

Vous pouvez utiliser cette base de données initiale, ou l'effacer et en créer une manuellement.

Lors de la migration à partir d'une ancienne version d'Oracle, la création d'une base de données n'est nécessaire que si vous avez besoin d'une base entièrement nouvelle. Sinon, vous pouvez utiliser un utilitaire de migration, tel qu'Oracle Data Migration Assistant, pour exécuter la migration à partir d'une ancienne version de la base de données.

Vous pouvez créer une base de données avec de nouveaux fichiers de données ou bien effacer les informations d'une base existante dotée de la même structure physique.

La commande CREATE DATABASE déclenche la création des fichiers de contrôle, des fichiers de journalisation (redo log) et de la structure du dictionnaire de données requise par le serveur Oracle pour accéder à la base de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Présentation

Fichier de mots de passe

Fichier de paramètres

Fichierstrace

Fichier ALERT

Processusutilisateur

Processusserveur

PGA Mémoire SGA Zone de mémoirepartagée

Fichiers dedonnées

Fichiersde journa-

lisation

Fichiers decontrôle

Instance

Base de données

Page 134: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................4-4 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 4 : Créer une base de données

Préparer le système d'exploitation

Avant de créer la base de donnéesVous devez bénéficier de tous les privilèges sur le système d'exploitation ou utiliser l'authentification par le fichier de mots de passe (voir le chapitre "Gérer une instance de base de données Oracle").

Avant de créer la base de données, assurez-vous que vous disposez d'une quantité de mémoire suffisante pour la mémoire SGA, pour l'exécutable Oracle et pour les processus. Pour plus d'informations, consultez les guides d'installation et d'administration de votre système d'exploitation.

Calculez l'espace disque nécessaire pour la base de données, y compris pour les fichiers de journalisation en ligne (online redo log), les fichiers de contrôle et les fichiers de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Eléments requis pour la création

• Un compte disposant de privilèges authentifiéspar l'une des méthodes suivantes :

– par le système d'exploitation

– par un fichier de mots de passe

• De la mémoire pour le démarrage de l'instance

• Un espace disque suffisant pour la basede données prévue

Page 135: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 4-5

.....................................................................................................................................................Préparer le système d'exploitation

Planifier l'emplacement des fichiersPlanifiez le mode de protection de la base de données, y compris celui des fichiers de journalisation en ligne (online redo log), des fichiers de journalisation archivés (archived redo log), des fichiers de contrôle et des fichiers de données. Prévoyez également une stratégie de sauvegarde.

Fichiers de contrôle Par mesure de sécurité, nous vous recommandons de créer au moins deux fichiers de contrôle sur deux disques différents (voir le chapitre "Gérer le fichier de contrôle"). Dans la mesure où les copies de fichier de contrôle doivent toujours être placées sur des disques différents, elles peuvent avoir des noms identiques, tels que control01.ctl sous UNIX ou control.ora sous Windows NT.

Fichiers de journalisation en ligne Les fichiers de journalisation en ligne d'une base de données sont constitués de groupes multiplexés de fichiers de journalisation en ligne. Un groupe de fichiers de journalisation est composé de copies identiques qui doivent être placées sur des disques différents (voir le chapitre "Gérer les fichiers de journalisation").

Pour faire la distinction entre les groupes et leurs membres, utilisez un nom tel que log0101.rdo ou log01a.rdo.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Planifier l'emplacement des fichiersde la base de données

• Conservez au moins deux copies actives d'unfichier de contrôle, stockées sur des unitésdifférentes.

• Multiplexez les fichiers de journalisation et placezles membres du groupe sur des disques différents.

• Séparez les fichiers dont les données :

– participeront à la contention de ressourcessur différents disques physiques,

– ont des durées de vie différentes,

– ont des caractéristiques d'administrationdifférentes.

Page 136: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................4-6 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 4 : Créer une base de données

Planifier l'emplacement des fichiers (suite)

Fichiers de données Affectez aux fichiers de données un nom dont la racine est en rapport avec leur contenu, par exemple system01.dbf, temp01.dbf et users01.dbf sous UNIX , et system01.ora et temp01.ora sous Windows NT.

Avant de déterminer la structure appropriée pour votre base de données, tenez compte des caractéristiques des données à stocker afin de :

• limiter la fragmentation,

• réduire la contention du disque,

• séparer les objets.

Pour limiter la fragmentation de la base de données, nous vous recommandons de séparer les objets de base de données qui n'ont pas la même durée de vie (par exemple, les données d'application et les données temporaires) en les plaçant dans des tablespaces différents.

Pour assurer l'équilibrage de la charge des entrées/sorties, nous vous recommandons de séparer les objets ayant des exigences divergentes en termes d'E/S, tels que les tables et les index, en les plaçant dans des tablespaces différents.

Remarque : ces sujets sont traités en détail dans les chapitres "Gérer les tablespaces et les fichiers de donnés" et "Structure et relations de stockage".

Page 137: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 4-7

.....................................................................................................................................................Préparer le système d'exploitation

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Emplacement du logiciel Oracle

/oracle_base

/product

/admin

/local

/release_number

/8.1.5

/bin

/dbs

/orainst

/sqlplus

...

Sous UNIX

\admin\db_name

\admin\v815

\oradata\db_name

\bin

\database

\oracle_base

\oracle_home

Sous Windows NT

Page 138: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................4-8 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 4 : Créer une base de données

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Fichiers de base de données Oracle

/u02/

oradata/

db01/

system01.dbf

control01.ctl

redo0101.rdo

...

db02/system01.dbf

control01.ctl

redo0101.rdo

...

/u03/

oradata/

db01/

db02/

tools01.dbf

control02.ctl

redo0102.rdo

...

users01.dbf

control02.ctl

redo0102.rdo

...

Page 139: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 4-9

.....................................................................................................................................................Préparer le système d'exploitation

Architecture OFA (Optimal Flexible Architecture)L'installation et la création d'une base de données présentent un autre point important à prendre en compte : l'organisation du système de fichiers en vue de faciliter la gestion de l'évolutivité du système par l'ajout de données à la base existante, l'ajout d'utilisateurs, la création de nouvelles bases de données, l'installation de matériel supplémentaire et la répartition de la charge des entrées/sorties sur un nombre suffisant d'unités.

La norme OFA (Optimal Flexible Architecture) apporte une solution unique à ces questions. Elle a été mise au point par une équipe Oracle chargée d'installer, de régler et de mettre à niveau les systèmes UNIX. L'architecture OFA facilite la configuration de systèmes Oracle complexes tout en simplifiant la maintenance. Lors de l'installation d'un système Oracle, la configuration standard d'OFA est utilisée automatiquement.

Structure OFA :

• ORACLE_BASE : répertoire racine (root).

• ORACLE_HOME : sous-répertoire contenant le logiciel et les données Oracle. Chaque version possède un répertoire d'origine distinct.

• Faites bien la distinction entre les fichiers produit (logiciel et outils du serveur Oracle), les fichiers d'administration (tels que les scripts de création de base de données ou les scripts d'initialisation) et les logiciels locaux utilisés avec le serveur Oracle. Dans l'exemple UNIX, les répertoires product, admin et local répondent à cette exigence.

• Créez un répertoire explicitement destiné au stockage des données du serveur Oracle, au même niveau d'arborescence que chacun des périphériques, par exemple ORACLE_HOME/oradata.

• Dans le répertoire Oracle, créez un sous-répertoire pour chaque base de données du système. Dans cet exemple, les bases de données sont appelées dba01 et db01.

Remarque : la structure de répertoires OFA sous Windows NT est différente de celle sous UNIX en raison des conventions d'appellation et de l'absence de liens symboliques. Pour contourner ce problème, il faut créer des répertoires physiques à la place des liens symboliques, tels que u01 et u02.

Ainsi, plutôt que de créer /u01/oradata/db01/, où u01 représente un point de montage sous UNIX, vous créez le répertoire DISK_3:\ORADATA\DB01\ sous Windows NT.

(Pour plus d'informations, consultez le guide d'installation de votre plate-forme.)

Page 140: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................4-10 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 4 : Créer une base de données

Créer une base de données

Méthodes de création d'une base de donnéesPour créer une base de données, vous pouvez utiliser l'utilitaire Database Configuration Assistant ou créer un script SQL à l'aide de la commande CREATE DATABASE. L'utilitaire Database Configuration Assistant est écrit en Java et peut être lancé à partir de n'importe quelle plate-forme dotée d'un moteur Java.

Lors de l'installation, vous êtes invité à créer une base de données à l'aide de l'utilitaire Database Configuration Assistant. Cet utilitaire peut également être utilisé après l'installation pour créer ou supprimer une base de données.

Remarque techniqueAvant la version 8.1, l'utilitaire Database Configuration Assistant était uniquement disponible sur Windows NT. Pour créer une base de données sous UNIX, le programme d'installation vous demande d'entrer le numéro et l'emplacement des points de montage, le jeu de caractères, le jeu de caractères nationaux, les mots de passe des utilisateurs SYS et SYSTEM, ainsi que le mot de passe de groupe UNIX afin de permettre au système d'exploitation d'effectuer les authentifications.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Créer une base de données

• A l'aide de l'utilitaire Database ConfigurationAssistant

• Manuellement, à l'aide de la commande CREATEDATABASE

Page 141: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 4-11

.....................................................................................................................................................Utiliser Database Configuration Assistant

Utiliser Database Configuration Assistant

Lancer Database Configuration AssistantPour lancer Database Configuration Assistant après l'installation, procédez comme suit :

1 Cliquez sur Start—>Programs—>Oracle -ORACLE_HOME—>Database Administration—>Database Configuration Assistant. Cet utilitaire constitue la méthode la plus simple pour créer une base de données Oracle.

2 Passez au dernier écran de Database Configuration Assistant et terminez la procédure de création.En fonction de l'option choisie, Database Configuration Assistant lance les services associés, modifie les fichiers init.ora, crée une base de données, configure les options ou supprime la base de données et les services associés.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Utiliser Database Configuration Assistant

Page 142: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................4-12 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 4 : Créer une base de données

Sélectionner une base de données préréglée ou personnaliser une base de donnéesDatabase Configuration Assistant vous propose différentes options :

• Typical comporte deux sous-options :

– Copy existing database files from the CD : installe automatiquement une base de données standard avec les paramètres d'initialisation par défaut.

– Create new database files : plusieurs questions vous sont posées sur l'environnement de la base de données avant sa création dynamique.

• Custom permet de personnaliser la création de la base de données. Cette option est réservée aux administrateurs familiarisés avec les procédures avancées de création de bases de données, telles que la personnalisation des éléments suivants :

– paramètres de données, de contrôle et de journalisation,

– taille des tablespaces,

– taille des extents (ensembles de blocs contigus),

– paramètres de mémoire de la base de données,

– formats et destinations d'archivage,

– destination des fichiers trace,

– valeurs de jeu de caractères.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Bases de données préréglées

Page 143: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 4-13

.....................................................................................................................................................Utiliser Database Configuration Assistant

Schémas échantillon prédéfinisVous pouvez préciser le type d'environnement d'exploitation de votre base de données à l'aide de l'option Typical ou Custom :

Des schémas échantillon de base de données OLTP et DSS sont disponibles pour Oracle8i Enterprise Edition.

Environnement DescriptionOLTP (traitement des transactions en ligne)

Les bases de données sous environnements OLTP doivent traiter quotidiennement des milliers, voire des millions de transactions lancées par de nombreux utilisateurs connectés simultanément. Ces transactions consistent à effectuer des opérations de lecture, d'écriture et de suppression de données dans la base. Les utilisateurs doivent pouvoir accéder rapidement aux données les plus récentes. Par conséquent, les performances des bases de données sont définies en termes de débit et de disponibilité des données.

Système d'aide à la décision (DSS, Decision Support System)

Les bases de données sous environnements DSS doivent traiter divers types d'interrogation (le plus souvent en lecture seule), allant de la simple extraction de quelques enregistrements à de nombreuses interrogations complexes impliquant le tri de milliers d'enregistrements provenant de nombreuses tables différentes. Dans ce cas, les performances des bases de données sont définies en termes de temps de réponse.

Hybride Les bases de données hybrides prennent en charge les environnements OLTP et DSS.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Schémas échantillon prédéfinis

Page 144: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................4-14 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 4 : Créer une base de données

Terminer l'exécution de Database Configuration AssistantDatabase Configuration Assistant vous permet de créer la base de données immédiatement ou d'enregistrer les informations dans un fichier séquentiel et de l'exécuter ultérieurement.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Terminer la création d'unebase de données

Page 145: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 4-15

.....................................................................................................................................................Créer manuellement une base de données

Créer manuellement une base de données

Etapes de création manuelle d'une base de donnéesCe chapitre décrit en détail les six premières étapes.

La dernière étape, traitant de la génération du dictionnaire de données est décrite dans le chapitre "Vues du dictionnaire de données et packages standard".

Remarque techniquePour plus d'informations sur la création de bases de données sur votre plate-forme, consultez la documentation Oracle propre à votre système d'exploitation.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Créer une base de donnéesmanuellement

1. Attribuez un nom unique à l'instance et à la basede données et choisissez un jeu de caractèrespour la base de données.

2. Définissez les variables du système d'exploitation.

3. Préparez le fichier de paramètres.

4. Créez un fichier de mots de passe (recommandé).

5. Démarrez l'instance.

6. Créez la base de données.

7. Exécutez les scripts pour générer le dictionnaire dedonnées et effectuer les étapes de post-création.

Page 146: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................4-16 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 4 : Créer une base de données

Définir l'environnement du système d'exploitationAttribuez un nom unique à l'instance et définissez les variables d'environnement suivantes :

Par exemple, définissez l'environnement dans un shell Korn à l'aide de la commande suivante :

$ORACLE_SID=U16; export ORACLE_SID

Dans un shell C, exécutez la commande suivante :$setenv ORACLE_SID U16

Variable DescriptionORACLE_HOME Indique le répertoire dans lequel le logiciel Oracle doit être installé

(par exemple : /u01/app/oracle/product/8.1.5)ORACLE_SID Indique le nom de l'instance, qui doit être unique pour les instances

Oracle s'exécutant sur la même machine.ORACLE_BASE Variable facultative, mais recommandée dans le cadre d'une installation

conforme à l'architecture OFA (par exemple : /u01/app/oracle)ORA_NLS33 Variable obligatoire lors de la création d'une base de données utilisant un

jeu de caractères autre que US7ASCII (par exemple : $ORACLE_HOME/ocommon/nls/admin/data)

PATH Chemin de recherche, devant inclure $ORACLE_HOME/bin.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Environnement du système d'exploitation

Sous UNIX, définissez les variables d'environnementsuivantes :

• ORACLE_HOME

• ORACLE_SID

• ORACLE_BASE

• ORA_NLS33

• PATH

Page 147: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 4-17

.....................................................................................................................................................Créer manuellement une base de données

Remarque technique• Si la variable ORA_NLS n'est pas définie et que la base de données est démarrée

avec des paramètres de langue et de jeu de caractères différents de ceux par défaut, ces paramètres ne seront pas reconnus.

• La valeur du SID peut comporter jusqu'à huit caractères. Avant la version 8.1, elle était limitée à quatre caractères sous Windows NT.

Page 148: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................4-18 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 4 : Créer une base de données

Définir l'environnement du système d'exploitation sous Windows NTSous Windows NT, Oracle utilise des variables de la base de registres, de la même façon qu'Oracle sous UNIX utilise des variables d'environnement shell.

Oracle Installer, l'utilitaire ORADIM et Database Configuration Assistant définissent des variables dans la base de registres et enregistrent l'instance Oracle en tant que service. Vous pouvez modifier manuellement la base de registres à l'aide de l'utilitaire regedit.exe.

Par exemple, les paramètres tels que ORACLE_HOME, ORA_NLS33 et ORACLE_SID (ORCL est utilisé par défaut pour la base de données initiale) sont stockés dans le dossier HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE.

Par conséquent, pour créer une nouvelle base de données, la variable ORACLE_SID doit être configurée à l'aide de la commande suivante :

C:\> set ORACLE_SID=U16

Créez ensuite un nouveau service et, si nécessaire, le nouveau fichier de mots de passe afin d'exécuter la base de données avec l'utilitaire ORADIM :

C:\>ORADIM -NEW -SID sid [-INTPWD internal_pwd][SRVC svrcname] [MAXUSERS number][STARTMODE auto,manual][-PFILE filename]

Remarque : le serveur Oracle enregistre dans le fichier ORACLE_HOME\DATABASE\ORADIM.LOG toutes les opérations exécutées avec l'utilitaire ORADIM.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Environnement du système d'exploitation

Sous Windows NT :

• Définissez la variable ORACLE_SID pour pouvoirutiliser SQL*Plus.

• Créez le service et le fichier de mots de passe enutilisant ORADIM.

C:\> ORADIM -NEW -SID u16 -INTPWD password

-STARTMODE auto

-PFILE ORACLE_HOME\DATABASE\initU16.ora

C:\> ORADIM -NEW -SID u16 -INTPWD password

-STARTMODE auto

-PFILE ORACLE_HOME\DATABASE\initU16.ora

Page 149: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 4-19

.....................................................................................................................................................Créer manuellement une base de données

Copyright Oracle Corporation, 1999. Tous droits réservés.®

• Créez le fichier initSID.ora.

• Modifiez le fichier initU16.ora en éditant sesparamètres.

Préparer le fichier de paramètres

$cp init.ora $ORACLE_HOME/dbs/initU16.ora$cp init.ora $ORACLE_HOME/dbs/initU16.ora

Page 150: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................4-20 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 4 : Créer une base de données

Copyright Oracle Corporation, 1999. Tous droits réservés.®

db_name = U10instance_name = U10service_names = U10db_files = 1024control_files =("C:\ORA815\oradata\U10\control01.ctl","C:\ORA815\oradata\U10\control02.ctl")db_file_multiblock_read_count = 8db_block_buffers = 2048shared_pool_size = 4194304log_checkpoint_interval = 10000log_checkpoint_timeout = 1800processes = 50parallel_max_servers = 5log_buffer = 32768…

Editer le fichier de paramètres

Page 151: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 4-21

.....................................................................................................................................................Créer manuellement une base de données

Préparer le fichier de paramètresLors de la préparation de la nouvelle base de données, copiez le fichier par défaut init.ora sous le nouveau nom initSID.ora.

Modifiez la valeur de certains paramètres ; les autres peuvent conserver leur valeur par défaut.

Avant de démarrer l'instance, précisez au moins les paramètres suivants :

Remarque : le nom de base de données est associé à une base de données au moment de la création et est stocké dans les fichiers de contrôle. Pour modifier le nom d'une base de données existante, exécutez la commande CREATE CONTROLFILE pour recréer le fichier de contrôle (voir le cours Oracle DBA : Sauvegarde et restauration).

Paramètre DescriptionDB_NAME Identificateur de base de données pouvant comporter jusqu'à

8 caractères. C'est le seul paramètre obligatoire lors de la création d'une base de données. Ce paramètre ne doit pas obligatoirement correspondre à la variable ORACLE_SID, mais il doit correspondre au nom utilisé dans l'instruction CREATE DATABASE.

CONTROL_FILES Indique la liste des fichiers de contrôle. Précisez toujours au moins deux fichiers de contrôle, placés sur des disques différents si possible. Il n'est pas nécessaire qu'ils soient présents à ce stade de la procédure. Oracle Server peut générer des fichiers de système d'exploitation lors de la création de la base de données.

DB_BLOCK_SIZE Détermine la taille des blocs de la base de données. Cette valeur ne peut plus être modifiée une fois la base créée.

Page 152: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................4-22 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 4 : Créer une base de données

Démarrer l'instanceConnectez-vous sous l'ID SYSDBA par authentification par le système d'exploitation ou par le fichier de mots de passe, puis démarrez l'instance à l'aide de la commande STARTUP.

Le mot de passe est celui utilisé auparavant pour créer le service avec l'utilitaire ORADIM (Windows NT uniquement) ou ORAPWD.

Si le fichier de paramètres ne se trouve pas à l'emplacement par défaut, vous devrez peut-être indiquer la clause PFILE dans la commande STARTUP. Pour les exemples cités dans ce cours, le fichier de paramètres se trouve dans le répertoire en cours.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Démarrer l'instance

1. Connectez-vous sous l'ID SYSDBA.

2. Démarrez l'instance en phase NOMOUNT.

SQL> STARTUP NOMOUNT PFILE=initU16.ora

ORACLE instance started.

Page 153: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 4-23

.....................................................................................................................................................Créer manuellement une base de données

Commande CREATE DATABASEPour créer une base de données, exécutez la commande SQL suivante :

CREATE DATABASE [database]

[CONTROLFILE REUSE]

[LOGFILE [GROUP integer] filespec

[, [GROUP integer] filespec]...]

[MAXLOGFILES integer]

[MAXLOGMEMBERS integer]

[MAXLOGHISTORY integer]

[MAXDATAFILES integer]

[MAXINSTANCES integer]

[ARCHIVELOG|NOARCHIVELOG]

[CHARACTER SET charset]

[NATIONAL CHARACTER SET charset]

Copyright Oracle Corporation, 1999. Tous droits réservés.®

SPOOL creU16.log

STARTUP NOMOUNT PFILE=initU16.ora

CREATE DATABASE U16

MAXLOGFILES 5

MAXLOGMEMBERS 5

MAXDATAFILES 100

MAXLOGHISTORY 100

LOGFILE

GROUP 1 ('/DISK3/log1a.rdo',/DISK4/log1b.rdo') SIZE 1 M,

GROUP 2 ('/DISK3/log2a.rdo',/DISK4/log2b.rdo') SIZE 1 M

DATAFILE

'/DISK1/system01.dbf' size 50M autoextend on

CHARACTER SET WE8ISO8859P1;

Créer la base de données

Page 154: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................4-24 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 4 : Créer une base de données

Commande CREATE DATABASE (suite)[DATAFILE filespec [autoextend_clause]

[, filespec [autoextend_clause]...]]

filespec :== 'filename' [SIZE integer][K|M] [REUSE]

autoextend_clause :==

[AUTOEXTEND {OFF

|ON [NEXT integer[K|M]]

[MAXSIZE {UNLIMITED|integer[K|M]}]

}

]

où :

database est le nom de la base de données à créer (si ce nom est omis, le paramètre d'initialisationDB_NAME est utilisé par défaut.)

CONTROLFILE REUSE indique qu'un fichier de contrôleexistant identifié dans le fichier deparamètres doit être réutilisé.

LOGFILE GROUP indique les noms de fichier journal à utiliser ainsi que le groupe auquel ilsappartiennent.

MAXLOGFILES indique le nombre maximal degroupes de fichiers de journalisation(redo log) pouvant êtrecréés pour la base de données.

MAXLOGMEMBERS indique le nombre maximal defichiers journaux pouvant appartenir à un groupe de journalisation.

MAXLOGHISTORY indique le nombre maximal defichiers de journalisation archivéspour la restauration physiqueautomatique du serveur OracleParallel Server.

DATAFILE filespec indique les fichiers de donnéesà utiliser.

AUTOEXTEND active ou désactivel'extension automatique d'un fichierde données (voir le chapitre "Gérerles tablespaces et les fichiers dedonnées").

Page 155: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 4-25

.....................................................................................................................................................Créer manuellement une base de données

Commande CREATE DATABASE (suite)MAXDATAFILES indique la taille initiale occupée par la

section fichiers de données du fichier de contrôle lors de l'exécution de la commande CREATE DATABASE ou CREATE CONTROLFILE. Si vous tentez d'ajouter un fichier qui porte le nombre de fichiers à une valeur supérieure à MAXDATAFILES, mais inférieure ou égale à DB_FILES, le fichier de contrôle est automatiquement étendu pour que la section fichiers de données puisse contenir un plus grand nombre de fichiers.

MAXINSTANCES est le nombre maximal d'instances pouvant monter et ouvrir la base de données simultanément.

ARCHIVELOG indique que les fichiers de journalisation doivent être archivés pour pouvoir être réutilisés.

NOARCHIVELOG indique que les fichiers de journalisation peuvent être réutilisés sans archivage préalable de leur contenu.

CHARACTER SET désigne le jeu de caractères que la base de données utilise pour le stockage des données.

NATIONAL CHARACTER SET

définit le jeu de caractères nationaux utilisé pour stocker des données dans les colonnes de type NCHAR, NCLOB ou NVARCHAR2.

Par défaut, le jeu de caractères nationaux est le même que celui de la base de données [voir le chapitre "Utiliser le support NLS (National Language Support)"].

Si vous utilisez REUSE dans la spécification d'un fichier, ce dernier doit exister. Sinon, l'option SIZE doit être indiquée et l'existence du fichier n'est pas nécessaire.

Page 156: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................4-26 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 4 : Créer une base de données

Commande CREATE DATABASE (suite)

ExempleActivez la fonction d'envoi pour traitement différé pour enregistrer les messages et exécutez l'instruction CREATE.

La commande de création génère une base de données nommée U16. Cette base de données comprend deux groupes de fichiers de journalisation en ligne (online), chacun comportant deux membres de 1 Mo et un fichier de données de 50 Mo. Elle utilise un jeu de caractères 8 bits pour le stockage des données.

Remarque :• Le serveur Oracle alloue dans les fichiers de contrôle la quantité d'espace requise

par les paramètres MAXLOGMEMBERS, MAXLOGFILES, MAXDATAFILES, MAXLOGHISTORY et MAXINSTANCES.

Pour modifier la valeur de ces paramètres, recréez le fichier de contrôle à l'aide de la commande CREATE CONTROLFILE. (Voir le cours Oracle DBA : Sauvegarde et restauration.)

• Il n'existe pas de commande DROP DATABASE. Pour supprimer une base de données, vous devez effacer les fichiers de données dans le système d'exploitation. Lancez l'instruction SQL suivante pour afficher la liste des fichiers de données physiques à supprimer manuellement dans le système d'exploitation :SQL> SELECT name FROM v$datafile

2 UNION

3 SELECT name FROM v$controlfile

4 UNION

5 SELECT member FROM v$logfile;

NAME

------------------------------------

C:\ORA815\ORADATA\V815\CONTROL01.CTL

C:\ORA815\ORADATA\V815\CONTROL02.CTL

C:\ORA815\ORADATA\V815\INDX01.DBF

C:\ORA815\ORADATA\V815\OEMREP01.DBF

C:\ORA815\ORADATA\V815\RBS01.DBF

C:\ORA815\ORADATA\V815\REDO01.LOG

C:\ORA815\ORADATA\V815\REDO01A.LOG

C:\ORA815\ORADATA\V815\REDO01B.LOG

C:\ORA815\ORADATA\V815\REDO02.LOG

C:\ORA815\ORADATA\V815\REDO03.LOG

C:\ORA815\ORADATA\V815\SYSTEM01.DBF

C:\ORA815\ORADATA\V815\TEMP01.DBF

C:\ORA815\ORADATA\V815\USERS01.DBF

13 rows selected.

Page 157: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 4-27

.....................................................................................................................................................Créer manuellement une base de données

Commande CREATE DATABASE (suite)Database Configuration Assistant permet de supprimer les services ainsi que les fichiers de données.

• Pour que la nouvelle base de données devienne la base par défaut sous Windows NT, modifiez la valeur de la variable ORACLE_SID dans la base de registres.

• Vous ne pouvez plus modifier le jeu de caractères ou le jeu de caractères nationaux une fois la base créée.

• Sous Windows NT, vous pouvez créer une base de données à l'aide du script build_db.sql qui se trouve dans le répertoire %ORACLE_HOME%\RDBMS\ADMIN.

Page 158: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................4-28 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 4 : Créer une base de données

DépannageSi l'un des trois incidents indiqués sur la diapositive se produit, l'instruction CREATE DATABASE échoue.

Dans tous les cas, arrêtez la base de données, supprimez les fichiers créés par l'instruction CREATE DATABASE, corrigez les erreurs, puis renouvelez la procédure de création.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Dépannage

La création de la base de données échoue lorsque :

• le script SQL contient des erreurs de syntaxe,

• les fichiers à créer existent déjà,

• des erreurs liées au système d'exploitation (tellesque les autorisations d'accès aux fichiers et auxrépertoires) ou à un espace disque insuffisant seproduisent.

Page 159: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 4-29

.....................................................................................................................................................Créer manuellement une base de données

Après la création de la base de donnéesLa base de données créée est ouverte, le script SQL sql.bsq est exécuté et les objets de base de données cités sur la diapositive sont créés.

Vous pouvez consulter les vues dynamiques des performances, telles que V$LOGFILE, V$CONTROLFILE et V$DATAFILE, mais aucune vue du dictionnaire de données n'est créée.

Les chapitres suivants indiquent comment créer les vues du dictionnaire de données pour ajouter des tablespaces, modifier ou ajouter des fichiers de journalisation, ajouter des fichiers de contrôle et exécuter de nombreuses autres tâches.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Après la création de la base de données

La base de données contient :

• des fichiers de données constituant le tablespaceSYSTEM,

• des fichiers de contrôle et des fichiers dejournalisation,

• l'ID utilisateur SYS avec le mot de passeCHANGE_ON_INSTALL,

• l'ID utilisateur SYSTEM avec le mot de passeMANAGER,

• le segment d'annulation SYSTEM,

• des tables internes (mais aucune vuedu dictionnaire de données).

Page 160: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................4-30 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 4 : Créer une base de données

Synthèse

Pour référence

Contexte RéférenceParamètres d'initialisation DB_NAME

CONTROL_FILES

DB_BLOCK_SIZEVues dynamiques des performances

Néant

Vues du dictionnaire de données NéantCommandes CREATE DATABASEProcédures et fonctions de package Néant

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Synthèse

Ce chapitre vous a permis d'apprendre :

• à planifier la structure de la base de données,

• à préparer l'environnement du systèmed'exploitation,

• à créer la base de données.

Page 161: Oracle DBA - Architecture & Administration Vol.1

.................................

5

Créer des vues dudictionnaire de données et

des packages standard

Page 162: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-2 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Objectifs

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Objectifs

A la fin de ce chapitre, vous pourrez :

• créer des vues du dictionnaire de données,

• interroger le dictionnaire de données,

• préparer l'environnement PL/SQL à l'aidedes scripts d'administration,

• administrer les procédures stockéeset les packages,

• énumérer les différents déclencheursd'événements de base de données.

Page 163: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-3

.....................................................................................................................................................Présentation

Présentation

Objets de base de données intégrésLe serveur Oracle crée non seulement les fichiers de base de données, mais aussi des structures dans les fichiers de données.

• Le dictionnaire de données contient la description des objets se trouvant dans la base de données. Il comprend deux types d'objet :

– les tables de base, tables sous-jacentes permettant de stocker la description de la base de données associée,

– les vues du dictionnaire de données, qui affichent la synthèse des informations stockées dans les tables de base.

• Les tables dynamiques des performances contiennent des informations permettant à l'administrateur de base de données (DBA) de surveiller et de régler la base de données et l'instance correspondante.

• Les unités de programme PL/SQL intégrées ajoutent des fonctionnalités à la base de données.

Déclencheurs d'événements de base de donnéesLes déclencheurs sont des procédures qui s'exécutent (sont activées) implicitement lors de la modification d'une table ou d'une vue, ou à la suite d'une action de l'utilisateur ou du système de bases de données.

Ce chapitre traite de la création et de l'utilisation des vues du dictionnaire de données, des packages PL/SQL et des déclencheurs d'événement de base de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Présentation

Autres objets créés avec la basede données :

• Dictionnaire de données

– Tables de base

– Vues

• Tables dynamiques desperformances

• Packages PL/SQL intégrés

Les déclencheurs d'événementsde base de données sontautomatiquement activés parun événement spécifique (parexemple, erreur liée au serveur).

Autresfichiers de

base dedonnées

Base de données

Tablespacesystème

Page 164: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-4 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Présentation du dictionnaire de données

Dictionnaire de donnéesL'un des composants essentiels d'une base de données Oracle est son dictionnaire de données, composé d'un jeu de tables et de vues accessibles en lecture seule, fournissant des informations sur la base de données associée.

Le dictionnaire de données est mis à jour par le serveur Oracle lors de l'exécution d'une commande LDD. En outre, des commandes LMD, telles que celle qui provoque l'extension d'une table, peuvent mettre à jour le dictionnaire de données.

Le dictionnaire de données est non seulement le centre de toute base de données Oracle, mais également une source importante d'informations pour l'ensemble des utilisateurs, de l'utilisateur final au développeur d'applications et à l'administrateur de base de données. Il est accessible par des instructions SQL. Le dictionnaire de données étant accessible en lecture seule, vous ne pouvez exécuter que des interrogations sur les tables et les vues qu'il contient.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Dictionnaire de données• Est l'élément central de toute base de

données Oracle.

• Décrit la base de données et les objetsqu'elle contient.

• Contient des tables et des vues enmode lecture seule.

• Est mis à jour par des commandesSQL :

– LDD,

– certaines LMD.

• Appartient à l'utilisateur SYS.

• Est stocké dans le tablespace SYSTEM.

• Est accessible par des instructions SELECT.

Autresfichiers de

base dedonnées

Base de données

Tablespacesystème

Page 165: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-5

.....................................................................................................................................................Contenu du dictionnaire de données

Contenu du dictionnaire de données

Contenu du dictionnaire de donnéesUn dictionnaire de données contient les éléments suivants :

• la définition des objets de schéma de la base de données (tables, vues, index, clusters, synonymes, séquences, procédures, fonctions, packages, déclencheurs, etc.),

• la quantité d'espace allouée aux objets de schéma et celle qu'ils utilisent,

• les valeurs de colonne par défaut,

• les nformations sur les contraintes d'intégrité,

• le nom des utilisateurs Oracle,

• les rivilèges et les rôles attribués à chaque utilisateur,

• les nformations d'audit (par exemple, sur les utilisateurs qui ont consulté ou mis à jour des objets de schéma),

• d'autres informations générales sur la base de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Contenu du dictionnaire de données

Le dictionnaire de données fournit desinformations sur :

• la structure logique et physique de la base dedonnées,

• les définitions et allocations d'espace relativesaux objets,

• les contraintes d'intégrité,

• les utilisateurs,

• les rôles,

• les privilèges,

• la fonction d'audit,

• l'ensemble de la base de données.

Page 166: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-6 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Tables de base et vues du dictionnaire de données

Tables de baseLes tables de base sont les tables sous-jacentes qui stockent les informations relatives à la base de données associée. Ce sont les premiers objets créés dans toute base de données Oracle. Elles sont automatiquement générées lorsque le serveur Oracle exécute le script sql.bsq lors de la création de la base de données. Seul le serveur Oracle doit écrire dans ces tables. Les utilisateurs y accèdent rarement directement, car la plupart des données sont stockées dans un format difficilement compréhensible.

Ne modifiez jamais directement les tables de base du dictionnaire de données à l'aide des commandes LMD, à l'exception de la table AUD$. La table AUD$ est décrite dans le chapitre "Gérer les privilèges".

La table IND$ constitue un exemple de table de base. Elle contient des informations sur les index de la base de données.

Vues du dictionnaire de donnéesLa plupart des utilisateurs consultent le dictionnaire de données à partir des vues plutôt que des tables de base. Ces vues affichent la synthèse des informations stockées dans les tables de base. Elles décodent leurs données en informations utiles, simplifiées par des jointures et des clauses WHERE. Par exemple, les vues du dictionnaire de données utilisent les noms d'objet, outre les numéros d'objet.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Tables de base et vuesdu dictionnaire de données

Le dictionnaire de données contient deux parties :

• les tables de base :

– normalisées,

– créées avec la base de données à l'aidedu script sql.bsq.

• les vues du dictionnaire de données :

– simplifiant les informations sur les tablesde base,

– accessibles par des synonymes publics,

– créées à l'aide du script catalog.sql.

Page 167: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-7

.....................................................................................................................................................Utiliser le dictionnaire de données

Utiliser le dictionnaire de données

Comment Oracle Server utilise-t-il le dictionnaire de données ?Les données des tables de base contenues dans le dictionnaire de données sont nécessaires au fonctionnement du serveur Oracle. Par conséquent, seul le serveur Oracle doit modifier les informations du dictionnaire de données. Lorsque la base de données est en service, le serveur Oracle lit le dictionnaire de données pour s'assurer que les objets de schéma existent et que les utilisateurs disposent des privilèges appropriés sur ces derniers. Il le met également à jour en permanence pour y répercuter les modifications apportées aux structures de la base de données, aux informations d'audit, aux privilèges accordés et aux structures des données.

Comment les utilisateurs et les administrateurs peuvent-ils exploiter le dictionnaire de données ?Les vues du dictionnaire de données sont utilisées comme référence par tous les utilisateurs de la base de données. Elles sont accessibles par des instructions en langage SQL. Certaines sont mises à la disposition de tous les utilisateurs Oracle, d'autres sont réservées à l'administrateur de base de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Utiliser le dictionnaire de données

Les trois principales fonctions du dictionnairede données sont les suivantes :

• Le serveur Oracle l'utilise pour rechercher desinformations sur :

– les utilisateurs,

– les objets de schéma,

– les structures de stockage.

• Le serveur Oracle le modifie lors de l'exécutiond'une instruction LDD.

• Le dictionnaire de données peut servir deréférence accessible en lecture seule, pour lesutilisateurs et les administrateurs souhaitantobtenir des informations sur la base de données.

Page 168: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-8 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Catégories de vues du dictionnaire de données

Trois catégories de vues du dictionnaire de donnéesLes vues du dictionnaire de données sont réparties en trois catégories différenciées par leur préfixe :

• DBA : vue administrateur de la base de données (affiche le contenu de tous les schémas),

• ALL : vue utilisateur étendue (affiche les éléments accessibles à l'utilisateur),

• USER : vue utilisateur (affiche le contenu du schéma utilisateur).

Toutes les vues sont associées à des synonymes publics.

Toutefois, certaines vues du dictionnaire de données n'utilisent pas cette convention d'appellation.

Vues portant le préfixe DBALes vues portant le préfixe DBA fournissent une présentation globale de toute la base de données. Elles sont conçues pour être interrogées uniquement par les administrateurs de base de données. Toutefois, tout utilisateur doté du privilège système SELECT ANY TABLE peut interroger les vues DBA du dictionnaire de données.

Pour exécuter une interrogation sur tous les objets de la base de données, l'administrateur de base de données peut lancer l'instruction suivante :

SELECT owner, object_name, object_type

FROM dba_objects;

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Catégorie de vuesdu dictionnaire de données

DBA_xxx

USER_xxx

ALL_xxx

Objets détenus par l'utilisateur en cours

Objets accessibles par l'utilisateur en cours

Tous les objets de la base de données

Page 169: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-9

.....................................................................................................................................................Catégories de vues du dictionnaire de données

Vues portant le préfixe ALLLes vues portant le préfixe ALL font référence à la perspective utilisateur générale liée à la base de données. Ces vues renvoient des informations relatives aux objets de schéma accessibles à l'utilisateur doté de privilèges et de rôles accordés publiquement ou explicitement, outre les objets de schéma dont il est propriétaire.

Par exemple, l'interrogation suivante renvoie des informations sur tous les objets auxquels vous avez accès :

SELECT owner, object_name, object_type

FROM all_objects;

Vues portant le préfixe USERLes vues intéressant certainement le plus l'utilisateur d'une base de données sont celles qui portent le préfixe USER. Ces vues :

• font référence à l'environnement privé de l'utilisateur dans la base de données,

• concernent généralement des objets appartenant à l'utilisateur en cours,

• comportent des colonnes identiques à celles d'autres vues, à ceci près que la colonne OWNER désigne implicitement l'utilisateur en cours,

• renvoient un sous-ensemble des informations contenues dans les vues de catégorie ALL_,

• peuvent être associées par commodité à des synonymes PUBLIC abrégés.

Par exemple, l'interrogation suivante renvoie tous les objets contenus dans votre schéma :

SELECT object_name, object_type

FROM user_objects;

Page 170: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-10 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Exemples de dictionnaire de données

Exemples de dictionnaire de données Pour obtenir une présentation du dictionnaire de données et des vues dynamiques des performances, interrogez la vue DICTIONARY ou son synonyme DICT.

SQL>SELECT *

2 FROM dictionary

3 WHERE UPPER(comments) LIKE '%TABLE%';

TABLE_NAME COMMENTS

-------------------- ----------------------------------------

ALL_TABLES Description of relational tables accessible

to the user

ALL_UPDATABLE_COLUMNS Description of updatable columns

...

Pour obtenir une présentation des colonnes du dictionnaire de données et des vues dynamiques des performances, interrogez la vue DICT_COLUMNS.

Remarque : consultez Oracle8i Reference qui fournit la liste complète des vues du dictionnaire de données et des colonnes qu'elles contiennent.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Exemples de dictionnaire de données

• Présentation générale

– DICTIONARY

• Objets de schéma

– DBA_TABLES

– DBA_OBJECTS

• Allocation d'espace

– DBA_ SEGMENTS

– DBA_FREE_SPACE

• Structure de la base de données

– DBA_DATA_FILES

– DBA_ROLLBACK_SEGS

– DBA_TABLESPACES

– DICT_COLUMNS

– DBA_TAB_COLUMNS

– DBA_CONSTRAINTS

– DBA_EXTENTS

Page 171: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-11

.....................................................................................................................................................Vues dynamiques des performances

Vues dynamiques des performances

Vues dynamiques des performancesL'instance Oracle enregistre en permanence l'activité de la base de données dans un ensemble de tables "virtuelles" appelées vues dynamiques des performances.

Il ne s'agit pas réellement de tables et elles ne sont pas accessibles à tous les utilisateurs. Toutefois, l'administrateur de base de données peut lancer des interrogations, accorder le privilège SELECT et créer des vues à partir de celles-ci. Elles sont parfois appelées vues fixes, car elles ne peuvent pas être modifiées ni supprimées par l'administrateur de base de données.

Les tables dynamiques des performances appartiennent à l'utilisateur SYS et portent des noms qui commencent par le préfixe V$. Des vues sont créées à partir de ces tables. Ces vues portent des noms qui commencent par le préfixe V_$ et sont associées à des synonymes publics. Les synonymes commencent également par le préfixe V$.

Remarque : consultez Oracle8i Reference qui fournit la liste complète des vues dynamiques des performances et des colonnes qu'elles contiennent.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Tables dynamiques des performances

• Tables virtuelles.

• Informations accessibles à partir :

– de la mémoire,

– des fichiers de contrôle.

• Synonymes commençant par V$.

• Permettent à l'administrateur de surveilleret de régler la base de données.

• Sont répertoriées dans V$FIXED_TABLE.

• Exemple : V$DATAFILE qui contient desinformations sur les fichiers de données.

Page 172: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-12 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Programmes stockés

Programmes stockésLe serveur Oracle permet d'accéder à des informations relatives à la base de données et de manipuler ces informations à l'aide d'objets de schéma procéduraux appelés programmes stockés. Les programmes stockés constituent un ensemble logique d'instructions en langage SQL et en langage de programmation exécutant une tâche déterminée. Ils peuvent être appelés à partir d'un programme SQL ou PL/SQL.

Programmes PL/SQLPL/SQL est le module Oracle d'extension procédurale du langage SQL. Il permet d'utiliser des instructions SQL avec des structures procédurales.

Programmes JavaL'administrateur de base de données peut installer le composant JServer du serveur Oracle pour exécuter des programmes Java. Pour appeler une méthode Java à partir d'un programme SQL ou PL/SQL, publiez-la à l'aide d'une spécification d'appel. Cette spécification d'appel mappe les noms de méthodes Java, les types de paramètre et de code de retour vers les éléments SQL correspondants.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Programmes stockés• PL/SQL

– Extension procédurale Oracle du langage SQL.

– Sont stockés dans le dictionnaire de données.

• Java

– Sont stockés dans le dictionnaire de données.

– Pour être exécutés, nécessitent la publicationde la spécification d'appel correspondante.

• Procédures externes

– Sont écrites en langage C.

– Sont stockées dans une bibliothèque partagée.

– Pour être exécutées, nécessitent la publicationde la spécification d'appel correspondante.

Page 173: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-13

.....................................................................................................................................................Programmes stockés

Programmes CUne procédure externe est un programme C stocké dans une bibliothèque partagée. Elle peut être appelée à partir d'un programme PL/SQL. Les procédures externes permettent à l'administrateur de base de données d'étendre les fonctions du serveur Oracle. Elles s'exécutent dans un espace d'adressage différent de celui du serveur Oracle. Pour appeler une procédure externe, vous devez publier son nom, ainsi que les types de paramètre et de code de retour associés.

AvantagesLes programmes stockés confèrent les avantages suivants :

• Pour réduire les temps de compilation, le code PL/SQL est précompilé et stocké dans le dictionnaire de données avec le code source.

• Les programmes Java et C peuvent être appelés à partir du code SQL et PL/SQL par la définition de leur spécification d'appel.

• Ils sont stockés dans la zone de mémoire partagée pour réduire les extractions à partir du disque.

• La sécurité des données peut être mise en œuvre en permettant aux utilisateurs d'accéder aux données uniquement via des procédures et des fonctions.

• Lors de l'exécution, plusieurs utilisateurs partagent une même copie du programme.

• Des fonctions stockées peuvent être utilisées dans des expressions SQL, de la même manière que des fonctions Oracle intégrées, telles que UPPER et SUBSTR.

Remarque : cette section présente les procédures stockées permettant d'administrer les programmes stockés. Le développement et la gestion des procédures stockées, des packages et des déclencheurs sont traités de manière approfondie dans le cours Programmes PL/SQL.

Page 174: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-14 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Programmes PL/SQL stockés

Programmes PL/SQL stockésLes programmes PL/SQL stockés sont :

• un ensemble logique d'instructions écrites en langage SQL et dans d'autres langages de programmation PL/SQL pour exécuter une tâche déterminée,

• des procédures, des fonctions, des déclencheurs ou des packages,

• associés à un nom utilisé lors de l'appel du programme,

• créés ou supprimés par les développeurs à l'aide de la commande CREATE ou DROP,

• exécutés à partir d'une application Oracle ou à l'aide d'outils Oracle, tels que SQL*Plus ou Enterprise Manager,

• créés et stockés dans le dictionnaire de données en tant qu'objets de schéma,

• chargés dans la zone de mémoire partagée.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Programmes PL/SQL stockés

• Correspondent à des procédures, des fonctions,des packages ou des déclencheurs.

• Peuvent accepter et renvoyer des paramètres.

• Les fonctions peuvent être appelées par desinstructions SQL.

• Constituent un ensemble de commandes SQLet PL/SQL.

• Sont stockés dans le dictionnaire de données.

• Sont chargés dans la zone de mémoire partagée.

Page 175: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-15

.....................................................................................................................................................Programmes PL/SQL stockés

Procédures stockéesUne procédure stockée est une procédure ou une fonction créée et stockée dans le dictionnaire de données en tant qu'objet de schéma. Elle est composée d'un ensemble de structures PL/SQL et SQL.

Les procédures et les fonctions sont identiques, à ceci près que les fonctions renvoient toujours une valeur unique au demandeur alors que les procédures ne le font pas. Par souci de simplification, le terme "procédure" utilisé dans les pages suivantes de ce chapitre désigne une procédure ou une fonction.

DéclencheursUn déclencheur est un programme PL/SQL que le serveur Oracle exécute implicitement en présence d'un type d'événement déterminé. Un déclencheur n'est jamais appelé ; il est activé par l'exécution d'un événement. Les déclencheurs sont traités de manière plus approfondie dans une autre section.

ParamètresLes procédures et les fonctions fournissent des paramètres IN (entrée uniquement), OUT (sortie uniquement) et IN OUT (entrée et sortie). Le mode par défaut est IN.

Page 176: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-16 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Packages

Packages Un package est un groupe de variables, de constantes, de curseurs, d'exceptions, de procédures et de fonctions associés, regroupés dans la base de données en vue d'être utilisés comme une unité. A l'instar des procédures et des fonctions autonomes, les procédures et les fonctions de package peuvent être appelées explicitement par les applications ou les utilisateurs.

Un package comporte généralement deux parties stockées séparément dans la base de données :

• la spécification, qui communique avec l'application et déclare les types, les variables, les constantes, les exceptions, les curseurs et les sous-programmes pouvant être utilisés hors du package,

• le corps, qui met en œuvre la spécification. Il comprend le code PL/SQL permettant de mettre en oeuvre les spécifications de procédure et de fonction incluses dans la spécification du package. Il peut également contenir des procédures et des fonctions pouvant être appelées uniquement à partir du package.

La fonction d'un package est identique à celle d'une procédure stockée. Une fois écrit et compilé, son contenu peut être partagé par de nombreuses applications. Le principal avantage est que l'ensemble du package est chargé en mémoire lors du premier appel de la structure associée.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Packages PL/SQL stockés

Un package :

• Représente un groupe logique de types,d'éléments et de sous-programmes PL/SQLassociés.

• Comporte deux parties :

– La spécification décrit les composantsqu'il contient.

– Le corps met en œuvre la logique.

• Exemple : DBMS_SESSION.SET_ROLE

– package : DBMS_SESSION,

– procédure : SET_ROLE.

Page 177: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-17

.....................................................................................................................................................Exécuter un programme PL/SQL

Exécuter un programme PL/SQL

Appeler un programme PL/SQLSur la diapositive, la procédure DBMS_SESSION.SET_ROLE est exécutée avec l'outil SQL*Plus. Cette procédure est expliquée dans une autre section.

La commande EXECUTE est une commande SQL*Plus qui appelle une procédure stockée.

Le package est nommé DBMS_SESSION et la procédure SET_ROLE est définie dans ce package. La syntaxe d'appel de la procédure est la suivante :

package_name.procedure_name

Les paramètres sont placés entre les parenthèses.

Exécuter un programme PL/SQLLe processus serveur lit le programme PL/SQL stocké dans la zone de mémoire partagée, puis l'exécute. Lorsqu'un package est référencé, il est lu entièrement dans la zone de mémoire partagée.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Exécuter un programme PL/SQL

SQL> EXECUTE dbms_session.set_role(...)SQL> EXECUTE dbms_session.set_role(...)

Instance

Zone de mémoirepartagée

DBMS_SESSION

SET_ROLEBEGIN...END;

Mémoire SGA

Serveur

Fichiers de contrôle

Fichiers de journa-

lisation

Autres fichiers de

données

Base de données

Tablespace système

Page 178: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-18 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Spécification et corps du package

Définition du package EMP_PKGLa diapositive présente le package EMP_PKG.

• La procédure HIRE peut être appelée hors du package, car elle est déclarée dans la spécification de celui-ci. La définition de la procédure, c'est-à-dire son code PL/SQL et SQL, est incluse dans la définition de la procédure figurant dans le corps du package. Pour exécuter la procédure HIRE à partir de l'outil SQL*Plus, utilisez la commande EXECUTE.

SQL> EXECUTE emp_pkg.hire(100, 'Moira')

PL/SQL procedure successfully completed.

• La variable globale G_EMPNO peut être référencée à partir du package ou hors de celui-ci. Vous pouvez utiliser la commande EXECUTE avec l'outil SQL*Plus pour attribuer la valeur 10 aux variables globales.

SQL> EXEC emp_pkg.g_empno := 10;

PL/SQL procedure successfully completed.

• La variable locale V_NAME peut être référencée uniquement à partir de HIRE.

• La fonction EDIT_EMPNO peut être appelée uniquement à partir du package, car elle n'est pas déclarée dans la spécification de celui-ci.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

PROCEDURE hire ...

FUNCTION edit_empno ...

Spécification du package EMP_PKG

Corps dupackageEMP_PKG

v_ename VARCHAR2(80);...

PROCEDURE hire …

BEGIN ...

Spécification et corps du package

g_empno NUMBER;

Page 179: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-19

.....................................................................................................................................................Packages fournis par Oracle

Packages fournis par Oracle

Packages fournis par OracleLa diapositive répertorie quelques packages fournis par Oracle, ou packages intégrés.

Le tableau répertorie des exemples de procédures contenues dans les packages fournis par Oracle.

Remarque : pour plus d'informations sur les packages fournis par Oracle, consultez les manuels Oracle8i Supplied Packages Reference et Oracle8i PL/SQL User's Guide and Reference.

Package Procédures de packageDBMS_SESSION SET_ROLE

SET_SQL_TRACEDBMS_UTILITY ANALYZE_SCHEMA

COMPILE_SCHEMADB_VERSION

DBMS_ROWID ROWID_INFODBMS_SPACE UNUSED_SPACE

FREE_BLOCKSDBMS_SHARED_POOL KEEP

UNKEEP

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Packages fournis par Oracle

• DBMS_SESSION : génère des commandes SQL(par exemple, ALTER SESSION ou SET ROLE).

• DBMS_UTILITY : comporte divers utilitaires.

• DBMS_SPACE : fournit des informations surla disponibilité des espaces segment.

• DBMS_ROWID : fournit des informations ROWID.

• DBMS_SHARED_POOL : conserve et retire lespackages dans la zone de mémoire partagée.

• DBMS_LOB : contient des routines pourles opérations sur les données de typeBLOB et CLOB.

Page 180: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-20 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Obtenir des informations

DépendancesLe serveur Oracle enregistre automatiquement les relations de dépendance existant entre les objets du dictionnaire de données. Par exemple, une procédure peut être dépendante d'une vue, elle-même dépendante d'une table. Si la table à partir de laquelle la vue est construite est supprimée, le serveur Oracle attribue la valeur INVALID, dans la vue du dictionnaire de données DBA_OBJECTS, à la colonne STATUS correspondante.

Tous les objets de schéma d'une base de données prennent le statut VALID ou INVALID.

• VALID : l'objet a été compilé et peut être immédiatement utilisé une fois référencé.

• INVALID : l'objet doit d'abord être compilé pour pouvoir être utilisé. Dans le cas de procédures, de fonctions et de packages, ce statut implique la compilation de l'objet. Dans le cas d'une vue, celle-ci doit être réanalysée. Si ces objets restent non valides une fois recompilés, des modifications de code peuvent être nécessaires pour pouvoir les exécuter.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Obtenir des informationssur les objets stockés

• Vue du dictionnaire de données DBA_OBJECTS :

– OWNER,

– OBJECT_NAME,

– OBJECT_TYPE,

– STATUS :

– VALID,

– INVALID.

• Commande DESCRIBE :

SQL> DESCRIBE dbms_sessionSQL> DESCRIBE dbms_session

Page 181: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-21

.....................................................................................................................................................Obtenir des informations

Dépendances (suite)Interrogez la vue du dictionnaire de données DBA_OBJECTS pour obtenir des informations sur le propriétaire, le nom, le type et le statut des objets contenus dans la base de données.

SQL> SELECT object_name, object_type, status

2 FROM dba_objects WHERE object_name like 'DBMS_%'

OBJECT_NAME OBJECT_TYPE STATUS

-------------------- --------------- --------

DBMS_ALERT PACKAGE VALID

DBMS_ALERT PACKAGE BODY VALID

DBMS_ALERT_INFO TABLE VALID

DBMS_APPLICATION_INF PACKAGE VALID

DBMS_APPLICATION_INF PACKAGE BODY VALID

DBMS_AQ PACKAGE VALID

DBMS_AQ PACKAGE BODY VALID

...

Exécutez la commande DESCRIBE avec l'outil SQL*Plus pour obtenir les spécifications de toutes les procédures et fonctions d'un package.

SQL> desc dbms_session

...

PROCEDURE SET_NLS

Argument Name Type In/Out Default?

------------- --------- ------ --------

PARAM VARCHAR2 IN

VALUE VARCHAR2 IN

PROCEDURE SET_ROLE

Argument Name Type In/Out Default?

------------- --------- ------ --------

ROLE_CMD VARCHAR2 IN

PROCEDURE SET_SQL_TRACE

Argument Name Type In/Out Default?

------------- --------- ------ --------

SQL_TRACE BOOLEAN IN

...

Page 182: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-22 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Dépannage

DépannageAprès l'exécution de commandes LDD, telles que ALTER TABLE ADD, RENAME, DROP et CREATE OR REPLACE, le statut des objets dépendants devient INVALID.

De même, le chargement de vues et de procédures stockées dépendantes à l'aide de l'utilitaire Import risque de générer un statut d'objet INVALID. En effet, il est possible que l'utilitaire Import ne puisse pas générer les objets dépendants après la création des objets référencés.

L'objet A est dépendant de l'objet B si A référence B. Par exemple, une colonne est ajoutée à la table EMP qui est référencée dans la procédure HIRE_EMP. La procédure HIRE_EMP est marquée INVALID et doit être recompilée pour pouvoir être exécutée.

Le serveur Oracle recompile automatiquement la vue ou le programme PL/SQL non valide lors de sa prochaine utilisation. En outre, l'utilisateur peut, à l'aide de la commande SQL appropriée, obliger le serveur Oracle à recompiler une vue, une procédure stockée ou un package.

Remarque : la recompilation des procédures stockées et des packages est traitée de manière approfondie dans le cours Programmes PL/SQL.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Dépannage

• Le statut des objets dépendants peut être INVALID :

– lorsque des commandes LDD sont exécutéessur des objets référencés,

– après la création d'objets avec l'utilitaireIMPORT,

– lorsqu'un objet dépendant est modifié.

• Dans le cas de programmes avec statut INVALID :

– Le serveur Oracle les recompileautomatiquement.

– L'utilisateur peut les recompiler manuellement.

Page 183: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-23

.....................................................................................................................................................Construire le dictionnaire de données

Construire le dictionnaire de données

Créer le dictionnaire de donnéesLes tables de base du dictionnaire de données sont automatiquement générées lors de la création d'une base de données. Lorsque la base de données est créée à l'aide d'Oracle Universal Installer, les vues du dictionnaire de données et les scripts correspondant aux options du serveur Oracle choisies s'exécutent automatiquement.

Vous devrez peut-être les réexécuter lors d'une mise à niveau vers une nouvelle version du serveur Oracle. Exécutez ces scripts sous l'ID utilisateur SYS. Ils se trouvent dans le répertoire :

• $ORACLE_HOME/rdbms/admin sous UNIX,

• %ORACLE_HOME%\rdbms\admin sous Windows NT.

Les autres scripts d'administration sont stockés dans ces répertoires.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Créer des vues dudictionnaire de données

Script Object

catalog.sql Crée les vues fréquemment utiliséeset leurs synonymes.

catproc.sql Exécute les scripts requis par l'environnement PL/SQL côté serveur.

Page 184: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-24 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Script catalog.sql Le script catalog.sql crée les vues et leurs synonymes à partir des tables de base et des vues dynamiques des performances. Il lance d'autres scripts qui créent des objets pour les éléments suivants :

• l'environnement PL/SQL de base, y compris les déclarations pour PL/SQL :

– les types de données,

– les exceptions prédéfinies,

– les procédures et les fonctions intégrées,

– les opérations SQL,

• la fonction d'audit,

• la fonction d'import/export,

• l'outil SQL*Loader,

• les options installées.

Script catproc.sql Le script catproc.sql définit l'utilisation de la fonction PL/SQL. En outre, il crée plusieurs packages PL/SQL qui permettent d'étendre la fonction du SGBDR. Le script catproc.sql crée également des packages et des vues supplémentaires pour les éléments suivants :

• les alertes,

• les pipes,

• l'utilitaire LogMiner,

• les grands objets,

• les objets,

• la gestion des files d'attente de messages,

• l'option de réplication,

• les autres fonctions intégrées et options.

Remarque : vous pouvez utiliser des scripts supplémentaires pour la prise en charge d'autres fonctions étendues du serveur Oracle (voir section suivante).

• Pour plus d'informations sur les packages intégrés, voir Oracle8i Supplied Packages Reference.

• Pour plus d'informations sur ces scripts, consultez le manuel Oracle8i Administrator's Guide.

Page 185: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-25

.....................................................................................................................................................Scripts d'administration

Scripts d'administration

Catégories de scripts d'administrationLes scripts d'administration peuvent être réparties en quatre catégories en fonction de leur nom de fichier :• cat*.sql

• dbms*.sql

• prvt*.plb

• utl*.sql

Scripts cat*.sql Les scripts cat*.sql créent des vues du dictionnaire de données. Outre les scripts catalog.sql et catproc.sql, il existe des scripts qui génèrent des informations destinées aux utilitaires Oracle.

Par exemple, le script catadt.sql crée des vues du dictionnaire de données permettant d'afficher des métadonnées sur les types d'objet et d'autres caractéristiques objet du SGBDR. Le script catnoadt.sql supprime ces tables et ces vues.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Scripts d'administration :conventions d'appellation

Convention

cat*.sql

dbms*.sql

prvt*.plb

utl*.sql

Description

Informations sur le catalogue et le dictionnaire de données.

Spécifications de package de base de données.

Corps de package de base de données.

Vues et tables pour les utilitaires de base de données.

Page 186: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-26 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Catégories de scripts d'administration (suite)

Scripts dbms*.sql et prvt*.plb Les scripts dbms*.sql et prvt*.plb créent des objets pour les packages Oracle prédéfinis pour l'extension des fonctions du serveur Oracle. Ces programmes facilitent l'administration de la base de données.

La plupart des scripts SQL sont lancés lors de l'exécution du script catproc.sql. Quelques scripts supplémentaires doivent être exécutés par l'administrateur de base de données.

Ainsi, le script dbmspool.sql permet, par exemple, d'afficher la taille des objets de la zone de mémoire partagée. Il permet également de les marquer comme étant à conserver ou à supprimer de la mémoire SGA pour limiter la fragmentation de la zone de mémoire partagée.

Scripts utl*.sql Les scripts utl*.sql doivent être exécutés lorsque la base de données requiert des vues et des tables supplémentaires.

Ainsi, le script utlxplan.sql crée, par exemple, une table permettant d'afficher le plan d'exécution d'une instruction SQL.

Remarque : la plupart de ces scripts doivent être exécutés sous l'ID utilisateur SYS. L'administrateur de base de données doit examiner les scripts pour déterminer le compte utilisateur requis pour leur exécution.

Page 187: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-27

.....................................................................................................................................................Exemple de package intégré

Exemple de package intégré

Exemple DBMS_SESSIONLa spécification de package DBMS_SESSION se trouve dans le script dbmsutil.sql et le corps de package associé figure dans le script prvtutil.plb. L'extension .plb fait référence à des programmes PL/SQL.

Le corps du package a été créé à l'aide de l'utilitaire Oracle Wrapper, lequel masque le code de l'application par le cryptage du code source PL/SQL.

Pour exécuter la procédure de package SET_ROLE avec la valeur de paramètre IN requise, le nom du rôle, dans l'outil SQL*Plus, lancez l'instruction suivante :

SQL> execute DBMS_SESSION.SET_ROLE('APP1');

Statement processed.

Cette instruction génère la commande SET ROLE en ajoutant le texte APP1 à la fin de SET ROLE, puis en l'exécutant comme une commande SQL. Cette commande permet d'activer ou de désactiver les rôles. Elle est traitée de manière approfondie dans le chapitre "Gérer les rôles".

Les deux scripts dbmsutil.sql et prvtutil.plb étant appelés à partir de catproc.sql, ils n'ont pas besoin d'être exécutés par l'administrateur de base de données après l'installation.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Spécificationde packageprovenant de dbmsutil.sql

Corps depackageprovenant deprvtutil.plb

CREATE OR REPLACE PACKAGEdbms_session IS

PROCEDURE set_role(role_cmd VARCHAR2);

Exemple de package intégré

CREATE OR REPLACE PACKAGE BODYdbms_session WRAPPED0abcdabcdabcdabcd ...

Page 188: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-28 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Packages et scriptsLes packages répertoriés dans la diapositive précédente sont créés à partir de leur propre fichier script.

• DBMS_SPACE, DBMS_UTILITY, DBMS_ROWID et DBMS_SESSION sont définis par les scripts dbmsutil.sql et prvtutil.plb. Ces scripts sont appelés à partir de catproc.sql.

• DBMS_LOB est défini par dbmslob.sql et prvtlob.plb.

• DBMS_SHARED_POOL est créé par l'exécution du script dbmspool.sql.

Page 189: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-29

.....................................................................................................................................................Déclencheurs

Déclencheurs

PrésentationLes déclencheurs sont des procédures écrites en langage PL/SQL, Java ou C, qui s'exécutent (sont activées) implicitement lors de la modification d'une table, lors de la création d'un objet ou à la suite d'une action de l'utilisateur ou du système de base de données. Ces procédures peuvent être écrites en langage PL/SQL ou Java et stockées dans la base de données, ou créées en tant que procédures externes.

Les déclencheurs sont identiques aux procédures stockées, mais diffèrent par leur mode d'appel. Une procédure est explicitement exécutée par un utilisateur, une application ou un déclencheur. Un ou plusieurs déclencheurs sont implicitement activés (exécutés) par le serveur Oracle en présence d'un événement de déclenchement, indépendamment de l'utilisateur connecté ou de l'application utilisée.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Déclencheurs• Sont écrits en langage PL/SQL, Java ou C.

• Sont exécutés :

– automatiquement,

– implicitement.

• Sont stockés dans la base de données.

• Sont gérés comme les autres programmes stockés.

• Exemples d'utilisation :

– génération de valeurs de colonnes dérivées,

– mise en œuvre d'éditions complexes,

– journalisation d'événements,

– audit,

– collecte de statistiques.

Page 190: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-30 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Comment les déclencheurs sont-ils utilisés ?Les déclencheurs peuvent compléter les fonctions standard du serveur Oracle, offrant ainsi un système de gestion de base de données (SGBD) fortement personnalisé. Par exemple, les déclencheurs peuvent être utilisés pour :

• générer automatiquement des valeurs de colonne dérivée,

• éviter les transactions non valides,

• mettre en œuvre des autorisations complexes au niveau de la sécurité,

• appliquer l'intégrité référentielle à tous les nœuds d'une base de données distribuée,

• mettre en œuvre des règles de gestion complexes qui ne peuvent pas être codées sous forme de contraintes,

• permettre la journalisation transparente des événements,

• offrir une fonction avancée d'audit,

• assurer la gestion des réplications synchrones de tables,

• obtenir des statistiques sur les accès aux tables,

• modifier les données des tables lorsque des instructions LMD sont lancées sur les vues,

• publier des informations sur les événements de base de données, les événements utilisateur et les instructions SQL pour les applications abonnées.

Page 191: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-31

.....................................................................................................................................................Composition d'un déclencheur

Composition d'un déclencheur

Trois parties d'un déclencheur

Un déclencheur comprend trois parties principales :

• un événement ou une instruction de déclenchement,

• une restriction de déclencheur,

• une action déclencheur.

Evénement ou instruction de déclenchement

Un événement ou une instruction de déclenchement est l'instruction SQL, l'événement de base de données ou l'événement utilisateur qui active le déclencheur. Les événements de déclenchement les plus susceptibles d'être utilisés par l'administrateur de base de données sont les suivants :

• le démarrage ou l'arrêt d'une instance,

• un message d'erreur, spécifique ou non,

• une connexion ou une déconnexion utilisateur,

• une instruction CREATE, ALTER ou DROP sur un schéma.

En outre, les développeurs d'applications peuvent écrire des déclencheurs activés par l'exécution d'une instruction INSERT, UPDATE ou DELETE sur une table ou une vue déterminée.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Composition d'un déclencheur

• Evénement de déclenchement :

– le démarrage ou l'arrêt d'une instance,

– tout message d'erreur,

– une connexion ou déconnexion utilisateur,

– une instruction LMD sur une table ouune vue déterminée,

– une instruction LDD sur un schéma.

• Restriction :

– clause booléenne facultative dans uneinstruction WHEN,

– le déclencheur ne s'exécute que si cetteclause est vraie (TRUE).

• Action : bloc de programmes.

Page 192: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-32 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Restriction de déclencheurUne restriction de déclencheur est une expression booléenne (logique) qui doit être vraie (TRUE) pour que le déclencheur soit activé. L'action déclencheur n'est pas exécutée si la restriction de déclencheur évalue l'expression comme étant fausse (FALSE) ou inconnue (UNKNOWN). La restriction de déclencheur est écrite à l'aide d'une clause WHEN.

Action déclencheurUne action déclencheur est une procédure (bloc PL/SQL, programme Java ou appel de programme externe écrit en C) qui contient les instructions et le code SQL à exécuter en présence d'une instruction de déclenchement évaluée comme étant vraie (TRUE) par la restriction de déclencheur. A l'instar des procédures stockées, une action déclencheur peut contenir des instructions SQL et PL/SQL ou Java, définir des structures de langage PL/SQL (par exemple, des variables, des constantes, des curseurs, des exceptions) ou de langage Java et appeler des procédures stockées.

Page 193: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 5-33

.....................................................................................................................................................Exemple de déclencheur

Exemple de déclencheur

Déclencheur de connexionL'exemple de la diapositive illustre un déclencheur créé ou remplacé à l'aide de la commande CREATE OR REPLACE TRIGGER. Ses caractéristiques sont les suivantes :

• il est appelé LOG_LOGON,

• il est activé par chaque connexion utilisateur à l'instance,

• il ne s'exécute que si l'ID utilisateur est SYS ou commence par le préfixe OPS$,

• lors de son exécution, il insère une ligne dans la table EVENT_LOG pour indiquer qu'un utilisateur s'est connecté à l'instance.

Les informations relatives aux déclencheurs sont stockées dans la vue du dictionnaire de données DBA_TRIGGERS.

La mise en œuvre des déclencheurs est traitée en profondeur dans le cours Programmes PL/SQL stockés.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Exemple de déclencheur

CREATE OR REPLACE TRIGGER log_logon

AFTER LOGON ON DATABASE

WHEN (USER = 'SYS' OR USER LIKE 'OPS$%')

BEGIN

INSERT INTO sys.event_log

VALUES ('Logon ' || USER || ' at '

|| TO_CHAR(sysdate, 'YYYY-MM-DD HH24:MI:SS'));

COMMIT;

END;

/

Page 194: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................5-34 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 5 : Créer des vues du dictionnaire de données et des packages standard

Synthèse

Pour référence

Contexte RéférenceParamètres d'initialisation NéantVues dynamiques des performances

Néant

Vues du dictionnaire de données

DICTIONARY

DICT

DICT_COLUMNS

DBA_OBJECTS

DBA_TRIGGERSCommandes NéantProcédures et fonctions de package

DBMS_SESSION.SET_ROLE

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Synthèse

Ce chapitre vous a permis d'apprendre :

• à obtenir des informations sur la base de donnéeset l'instance à l'aide du dictionnaire de données,

• à obtenir des informations sur les vues dudictionnaire de données à partir de DICTIONARYet de DICT_COLUMNS,

• à créer des vues du dictionnaire de données et àexécuter les packages fournis par Oracle à l'aidede scripts d'administration,

• à obtenir des informations sur les programmesPL/SQL stockés à partir de DBA_SOURCE,

• à utiliser les déclencheurs d'événement de basede données.

Page 195: Oracle DBA - Architecture & Administration Vol.1

.................................

6

Gérer le fichierde contrôle

Page 196: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................6-2 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 6 : Gérer le fichier de contrôle

Objectifs

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Objectifs

A la fin de ce chapitre, vous pourrez :

• expliquer l'utilisation du fichier de contrôle,

• énumérer le contenu du fichier de contrôle,

• multiplexer le fichier de contrôle,

• obtenir des informations du fichier de contrôle.

Page 197: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 6-3

.....................................................................................................................................................Utiliser le fichier de contrôle

Utiliser le fichier de contrôle

Utiliser le fichier de contrôleLe fichier de contrôle d'une base de données est un petit fichier binaire nécessaire au démarrage de la base et à son fonctionnement. Chaque fichier de contrôle est associé à une seule base de données Oracle.

Le fichier de contrôle est mis à jour en permanence par le serveur Oracle pendant l'utilisation de la base de données et il doit donc être disponible pour l'écriture d'informations chaque fois que la base de données est ouverte. Les informations du fichier de contrôle ne peuvent être modifiées que par le serveur Oracle ; ni l'administrateur de la base, ni l'utilisateur final ne peut le modifier.

Si le fichier de contrôle n'est pas accessible, la base de données ne peut pas fonctionner correctement. Si vous perdez toutes les copies des fichiers de contrôle d'une base de données, vous devez restaurer la base pour pouvoir l'ouvrir.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Utiliser le fichier de contrôle

• Petit fichier binaire

• Nécessaire :

– au montage

– au fonctionnement

• Lié à une seule basede données

• Doit être multiplexé

• En cas de perte dufichier de contrôle,la base de donnéesdoit être restaurée

Fichiers de contrôle

Fichiers dedonnées

Fichiersde journa-

lisation

Base de données

Page 198: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................6-4 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 6 : Gérer le fichier de contrôle

Contenu du fichier de contrôle

Contenu du fichier de contrôle

• Le nom de la base de données correspond au nom indiqué par le paramètre d'initialisation DB_NAME ou à celui utilisé dans l'instruction CREATE DATABASE.

• L'identificateur de la base de données est enregistré lors de la création de la base.

• La date et l'heure de création de la base de données sont également enregistrées lors de la création de cette dernière.

• Les noms et les emplacements des fichiers de données et des fichiers de journalisation "online" (online redo logs) associés sont mis à jour lors de l'ajout, du changement de nom ou de la suppression d'un fichier de données ou d'un fichier de journalisation dans la base de données.

• Les informations de tablespace sont mises à jour lors de l'ajout ou de la suppression des tablespaces.

• L'historique de journalisation est enregistré lors des changements de fichiers de journalisation.

• L'emplacement et le statut des journaux archivés sont enregistrés lors de l'archivage.

• L'emplacement et le statut des sauvegardes sont enregistrés par l'utilitaire Recovery Manager.

• Le numéro de séquence de journal en cours est enregistré lors des changements de fichiers de journalisation.

• Les informations de point de reprise (checkpoint) sont enregistrées lorsque des points de reprise sont créés.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Contenu du fichier de contrôle

• Nom et identificateur de la base de données

• Date de création de la base de données

• Emplacement des fichiers de donnéeset de journalisation

• Noms des tablespaces

• Historique de journalisation

• Informations de sauvegarde

• Numéro de séquence du journal en cours

• Informations de points de reprise

Page 199: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 6-5

.....................................................................................................................................................Contenu du fichier de contrôle

Contenu du fichier de contrôle (suite)Le fichier de contrôle contient deux types de section :

• les sections réutilisables,

• les sections non réutilisables.

Les sections réutilisables contiennent les informations de Recovery Manager, telles que les noms des fichiers de données de sauvegarde et ceux des fichiers de journalisation de sauvegarde. Ces sections sont utilisées de manière circulaire et ne peuvent être réutilisées que par Recovery Manager.

Remarque : Recovery Manager est décrit en détail dans le cours Oracle DBA : Sauvegarde et restauration.

Page 200: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................6-6 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 6 : Gérer le fichier de contrôle

Multiplexer le fichier de contrôle

Multiplexer le fichier de contrôleA l'instar des fichiers de journalisation "online", Oracle permet d'ouvrir simultanément plusieurs fichiers de contrôle identiques et d'écrire des données dans ces fichiers. Vous pouvez définir jusqu'à huit noms de fichier à l'aide du paramètre d'initialisation CONTROL_FILES. Le serveur Oracle crée et gère tous les fichiers listés dans ce paramètre lors du démarrage de l'instance.

Vous pouvez multiplexer les fichiers de contrôle :

• en créant plusieurs fichiers de contrôle lors de la création de la base de données,

• en ajoutant un fichier de contrôle une fois la base de données créée.

Créer un fichier de contrôle lors de la création de la base de données La méthode la plus simple pour créer plusieurs fichiers de contrôle consiste à inclure leurs noms dans le paramètre d'initialisation CONTROL_FILES lors de la création de la base :

CONTROL_FILES = (/DISK1/control01.con,/DISK2/control02.con)

Le serveur Oracle crée tous les fichiers de contrôle listés dans le paramètre. Le chemin complet des fichiers doit figurer dans ce paramètre. Les spécifications de nom de fichier sont spécifiques au système d'exploitation.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Multiplexer le fichier de contrôle

control_files=(/DISK1/control01.con,/DISK2/control02.con)

Disque 1

control01.con

Disque 2

control02.con

Page 201: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 6-7

.....................................................................................................................................................Multiplexer le fichier de contrôle

Multiplexer le fichier de contrôle (suite)

Ajouter un fichier de contrôle Pour ajouter un fichier de contrôle ou modifier son numéro ou son emplacement, procédez comme suit :

1 Arrêtez la base de données.

2 Copiez le fichier de contrôle en cours à l'aide de la commande appropriée du système d'exploitation.

3 Ajoutez le nouveau nom de fichier de contrôle au paramètre CONTROL_FILES.

4 Démarrez la base de données.

Page 202: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................6-8 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 6 : Gérer le fichier de contrôle

Instructions relatives aux fichiers de contrôle

Fonction du multiplexagePour vous prémunir contre une défaillance du fichier de contrôle, il est fortement recommandé de le multiplexer en stockant chaque copie sur un disque physique différent.

En cas de perte du fichier de contrôle, utilisez la copie pour redémarrer l'instance.

Si vous avez stocké plusieurs copies du fichier de contrôle en cours sur des disques différents, vous pouvez aisément démarrer l'instance sans avoir à restaurer la base de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Instructions relatives auxfichiers de contrôle

• Vous devez :

– multiplexer le fichier de contrôle,

– inclure le chemin complet dans CONTROL_FILES,

– sauvegarder le fichier de contrôle aprèsmodification de la structure de la base de données.

• Fichiers de contrôle :

– taille définie par les mots-clés de la commandeCREATE DATABASE,

– contiennent une section réutilisable dont la taillepeut augmenter suite aux mises à jour de RecoveryManager.

Page 203: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 6-9

.....................................................................................................................................................Instructions relatives aux fichiers de contrôle

Mots-clés de la commande CREATE DATABASE Les mots-clés indiqués lors de la création de la base de données affectent la taille du fichier de contrôle. Cela est particulièrement notable lorsque les paramètres ont des valeurs élevées. Vous pouvez être amené à recréer le fichier de contrôle pour modifier l'un ou plusieurs des paramètres de limite de la base de données, ce qui peut augmenter ou diminuer la taille du fichier de contrôle.

Les mots-clés suivants de la commande CREATE DATABASE ou CREATE CONTROLFILE ont un impact sur la taille du fichier de contrôle :

• MAXLOGFILES

• MAXLOGMEMBERS

• MAXLOGHISTORY

• MAXDATAFILES

• MAXINSTANCES

Vous devez créer un nouveau fichier de contrôle afin de modifier la taille de l'espace créé par ces mots-clés.

La taille de la section réutilisable peut augmenterLorsque vous utilisez Recovery Manager, la taille de la section réutilisable du fichier de contrôle peut augmenter en fonction des entrées nécessaires à Recovery Manager.

Sauvegarde après une modification de la structure de la base de donnéesDu fait que le fichier de contrôle enregistre la structure physique de la base de données, vous devez immédiatement effectuer une sauvegarde de ce fichier après avoir modifié la structure physique de la base de données.

La sauvegarde et la restauration du fichier de contrôle sont expliquées en détail dans le cours Oracle DBA : Sauvegarde et restauration.

Page 204: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................6-10 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 6 : Gérer le fichier de contrôle

Obtenir des informations sur les fichiers de contrôle

Obtenir des informations sur les fichiers de contrôlePour obtenir l'emplacement et le nom des fichiers de contrôle, utilisez la vue dynamique des performances V$CONTROLFILE.

SQL> SELECT name

2 FROM v$controlfile;

NAME

-----------------------/DISK1/control01.con

/DISK2/control02.con

2 rows selected.

Vous pouvez également utiliser la vue V$PARAMETER, mais la longueur des colonnes peut provoquer la troncature des noms de fichiers de contrôle.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Obtenir des informations

• V$CONTROLFILE

• V$CONTROLFILE_RECORD_SECTION

• Informations des vues des performancesprovenant du fichier de contrôle :

– V$DATAFILE

– V$TEMPFILE

– V$TABLESPACE

– V$LOG

– Autres

Page 205: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 6-11

.....................................................................................................................................................Obtenir des informations sur les fichiers de contrôle

Obtenir des informations sur les fichiers de contrôle (suite)Pour obtenir des informations sur les sections des fichiers de contrôle, interrogez la vue dynamique des performances V$CONTROLFILE_RECORD_SECTION.

SQL>SELECT type, record_size, records_total, records_used

2 FROM v$controlfile_record_section

3 WHERE type='DATAFILE';

TYPE RECORD_SIZ RECORDS_TO RECORDS_US

------------- ---------- ---------- ----------

DATAFILE 180 30 4

1 row selected.

La colonne RECORDS_TO indique le nombre d'enregistrements alloués à une section spéciale. Vous pouvez, par exemple, afficher le nombre maximum de fichiers de données (30, dans notre exemple) qui est déterminé par le paramètre MAXDATAFILES de la commande CREATE DATABASE.

Les informations figurant dans plusieurs des autres vues dynamiques des performances proviennent du fichier de contrôle :

• V$BACKUP

• V$DATAFILE

• V$TEMPFILE

• V$TABLESPACE

• V$ARCHIVE

• V$LOG

• V$LOGFILE

• V$LOGHIST

• V$ARCHIVED_LOG

• V$DATEBASE

• Autres

Page 206: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................6-12 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 6 : Gérer le fichier de contrôle

Synthèse

Pour référence

Contexte RéférenceParamètres d'initialisation CONTROL_FILESVues dynamiques des performances V$CONTROLFILE

V$CONTROLFILE_RECORD_SECTION

V$PARAMETERVues du dictionnaire de données AucuneCommandes AucuneProcédures et fonctions de package Aucune

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Synthèse

Ce chapitre vous a permis d'apprendre :

• que le fichier de contrôle est nécessaire aumontage et au fonctionnement de la base dedonnées,

• à multiplexer le fichier de contrôle pour éviterune défaillance de la base de données,

• à sauvegarder le fichier de contrôle aprèsmodification de la structure physique dela base de données.

Page 207: Oracle DBA - Architecture & Administration Vol.1

.................................

7

Gérer les fichiers dejournalisation (redo log)

Page 208: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-2 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Objectifs

Copyright Oracle Corporation, 1999. Tous droits réservés.®

ObjectifsA la fin de ce chapitre, vous pourrez :

• expliquer l'utilisation des fichiers de journalisationen ligne,

• obtenir des informations de journalisationet d'archivage,

• gérer les changements de fichiers de journalisationet les points de reprise,

• multiplexer et gérer les fichiers de journalisationen ligne,

• planifier les fichiers de journalisation en ligne,

• résoudre les problèmes courants liés aux fichiersde journalisation,

• analyser les fichiers de journalisation en ligneet archivés.

Page 209: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-3

.....................................................................................................................................................Présentation

Présentation

Fonctions des fichiers de journalisationLe serveur Oracle gère des fichiers de journalisation en ligne (online) pour minimiser les pertes de données de la base. Ces fichiers enregistrent toutes les modifications apportées aux données dans le cache de tampons de la base (database buffer cache), sauf dans certains cas, par exemple lorsque les données sont écrites directement dans la base.

Les fichiers de journalisation servent à restaurer les données validées non écrites dans les fichiers de données en cas, par exemple, de défaillance de l'instance. Les fichiers de journalisation ne servent que pour la restauration.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Utiliser des fichiers de journalisation

Fichiers de contrôle

Fichiers dedonnées

Fichiersde journa-

lisation

Base de données

Page 210: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-4 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Utiliser des fichiers de journalisation en ligne

Structure des fichiers de journalisationL'administrateur de base de données peut configurer la base Oracle pour gérer des copies de fichiers de journalisation en ligne (online) afin d'éviter de perdre des données en cas d'incident.

Groupes de fichiers de journalisation en ligne• Un jeu de copies identiques de fichiers de journalisation en ligne s'appelle un

groupe de fichiers de journalisation en ligne.

• Le processus d'arrière-plan LGWR écrit simultanément les mêmes informations dans tous les fichiers de journalisation en ligne du groupe.

• Le serveur Oracle nécessite au moins deux groupes de fichiers de journalisation en ligne pour permettre à la base de données de fonctionner correctement.

Membres d'un groupe de fichiers de journalisation en ligne• Chaque fichier de journalisation en ligne d'un groupe s'appelle un membre.

• Les membres d'un groupe portent tous le même numéro de séquence de journal et ont tous la même taille. Un numéro de séquence de journal, permettant d'identifier de manière unique chaque fichier de journalisation, est attribué chaque fois que le serveur Oracle écrit dans un groupe de fichiers de journalisation. Le numéro de séquence de journal en cours est stocké dans le fichier de contrôle et dans l'en-tête de tous les fichiers de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Groupes et membres de groupe defichiers de journalisation

Groupe 2 Groupe 3Groupe 1

Membre

Disque 1

Disque 2Membre

Membre Membre

MembreMembre

Page 211: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-5

.....................................................................................................................................................Utiliser des fichiers de journalisation en ligne

Créer des fichiers de journalisation initiauxLes groupes de fichiers de journalisation en ligne (online) et les membres initiaux sont créés en même temps que la base de données.

Les paramètres suivants limitent le nombre de fichiers de journalisation en ligne :

• Le paramètre MAXLOGFILES de la commande CREATE DATABASE définit le nombre maximum absolu de groupes de fichiers de journalisation en ligne.

La valeur maximale et la valeur par défaut du paramètre MAXLOGFILES dépendent du système d'exploitation.

• Le paramètre MAXLOGMEMBERS de la commande CREATE DATABASE détermine le nombre maximum de membres par groupe. La valeur maximale et la valeur par défaut du paramètre MAXLOGMEMBERS dépendent du système d'exploitation.

• Le paramètre d'initialisation LOG_FILES définit le nombre maximum actuel de groupes de fichiers de journalisation pouvant être ouverts pendant l'exécution de la base. Ce nombre ne peut être supérieur à la valeur du paramètre MAXLOGFILES.

Remarque techniquePour simplifier l'administration des bases de données, le paramètre LOG_FILES n'est plus utilisé dans la version 8.1.

Page 212: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-6 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Processus LGWR, changements de fichier de journalisation et points de reprise

Tampon de journalisation (redo log buffer) et processus d'arrière-plan LGWRLe serveur Oracle enregistre séquentiellement dans le tampon de journalisation toutes les modifications apportées à la base de données. Le tampon de journalisation est utilisé de manière circulaire. Les entrées de journalisation sont écrites dans l'un des groupes de fichiers de journalisation en ligne (online), appelé groupe de fichiers de journalisation en ligne en cours par le processus LGWR dans les cas suivants :

• lorsqu'une transaction est validée,

• lorsqu'un tiers du tampon de journalisation est occupé,

• lorsque le tampon de journalisation contient plus d'un mégaoctet de modifications,

• en cas de temporisation (toutes les trois secondes),

• avant que le processus DBWn n'écrive les blocs modifiés du cache de tampons de la base dans les fichiers de données.

Changements de fichier de journalisationLe processus LGWR écrit les données séquentiellement dans les fichiers de journalisation en ligne ; lorsque le groupe de fichiers de journalisation en cours est plein, le processus écrit les données dans le groupe suivant. Lorsque le dernier fichier de journalisation en ligne disponible est plein, le processus LGWR utilise de nouveau le premier groupe de fichiers de journalisation en ligne pour y écrire les données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Architecture Oracle

InstanceSGA

Fichiersde journa-

lisation

Base de données

Fichiers journauxarchivés

Fichier de paramètres

Fichier de motsde passe

CKPT

Tampon de journa-

lisation

Cache de tampons

des données

ARCHLGWRDBWR

Fichiers dedonnées

Fichiers decontrôle

Page 213: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-7

.....................................................................................................................................................Processus LGWR, changements de fichier de journalisation et points de reprise

Changements de fichier de journalisation (suite)L'administrateur de base de données peut également imposer le changement de fichier de journalisation (voir les sections suivantes). Chaque fois qu'un changement de fichier de journalisation se produit et que le processus LGWR écrit les données dans un nouveau groupe de fichiers de journalisation, le serveur Oracle affecte un numéro, appelé numéro de séquence du journal, permettant d'identifier l'ensemble d'entrées de journalisation.

Lors d'un changement de fichier de journalisation, un événement appelé point de reprise se produit.

Le changement de fichier de journalisation est l'événement au cours duquel le processus LGWR arrête d'écrire les données dans un groupe de fichiers de journalisation en ligne (online) pour les écrire dans un autre.

Points de repriseAu cours d'un point de reprise :

• Des tampons de base de données "dirty" couverts par le fichier de journalisation associé au point de reprise sont écrits dans les fichiers de données par le processus DBWn. Le nombre de mémoires tampon écrites par le processus DBWn est déterminé par le paramètre FAST_START_IO_TARGET, s'il est défini. Ces opérations sont décrites en détail dans le cours Oracle DBA : Sauvegarde et restauration.

• Le processus d'arrière-plan de point de reprise CKPT met à jour les en-têtes de tous les fichiers de données et de contrôle pour indiquer qu'il s'est exécuté correctement.

Des points de reprise peuvent se produire pour tous les fichiers de données de la base ou pour certains seulement.

Un point de reprise se produit, par exemple, dans les cas suivants :

• à chaque changement de fichier de journalisation,

• lors de l'arrêt d'une instance à l'aide de l'option Normal, Transactional ou Immediate,

• lorsqu'il est imposé par les paramètres d'initialisation LOG_CHECKPOINT_INTERVAL, LOG_CHECKPOINT_TIMEOUT etFAST_START_IO_TARGET (voir les sections suivantes),

• lorsque l'administrateur de base de données le demande manuellement (voir les sections suivantes).

Les informations sur chaque point de reprise sont enregistrées dans le fichier ALERT si le paramètre d'initialisation LOG_CHECKPOINTS_TO_ALERT a la valeur TRUE. La valeur par défaut FALSE de ce paramètre ne permet pas d'enregistrer les points de reprise.

Remarque techniqueLe paramètre FAST_START_IO_TARGET a été ajouté à la version 8.1.

Page 214: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-8 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Archiver les fichiers de journalisation

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Sans archivage

Sauvegarde Défaillancematérielle

101

t1 t2

Fichiers dedonnées

Fichiersde

contrôle

50 51 100

Page 215: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-9

.....................................................................................................................................................Archiver les fichiers de journalisation

Déterminer si l'archivage des fichiers de journalisation doit être activéL'une des principales décisions de l'administrateur consiste à déterminer s'il doit faire fonctionner la base de données en mode ARCHIVELOG ou en mode NOARCHIVELOG.

Mode NOARCHIVELOG En mode NOARCHIVELOG, les données des fichiers de journalisation en ligne (online) sont écrasées chaque fois qu'un fichier de journalisation est plein et qu'un changement de fichier de journalisation se produit. Le processus LGWR n'écrase pas les données d'un groupe de fichiers de journalisation tant que le processus de point de reprise du groupe n'est pas terminé.

Mode ARCHIVELOG Si la base de données fonctionne en mode ARCHIVELOG, les groupes inactifs de fichiers de journalisation pleins doivent être archivés. Dans la mesure où toutes les modifications apportées à la base de données sont enregistrées dans les fichiers de journalisation en ligne, l'administrateur de base de données peut utiliser la sauvegarde physique et les fichiers de journalisation en ligne archivés pour restaurer la base de données sans perdre les données validées.

Vous pouvez archiver les fichiers de journalisation en ligne de deux manières :

• manuellement,

• automatiquement.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Avec archivage

Défaillancematérielle

t2t1

SauvegardeFichiers de

journalisationarchivés

50

99

Fichiers dedonnées

10150 100

Fichiersde

contrôle

51

Page 216: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-10 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Déterminer si l'archivage des fichiers de journalisation doit être activé (suite)Mode ARCHIVELOG (suite)

Le paramètre d'initialisation LOG_ARCHIVE_START indique si l'archivage doit être automatique ou manuel lors du démarrage de l'instance.

• TRUE indique que l'archivage est automatique. ARCn lance l'archivage du groupe de fichiers de journalisation pleins à chaque changement de fichier de journalisation.

• La valeur par défaut FALSE indique que l'administrateur de base de données archive manuellement les fichiers de journalisation pleins. Il doit exécuter une commande manuelle chaque fois qu'il souhaite archiver un fichier de journalisation en ligne (online). Tous les fichiers de journalisation en ligne ou certains d'entre eux peuvent être archivés manuellement.

Remarque : l'archivage est expliqué en détail dans le cours Oracle DBA : Sauvegarde et restauration.

Page 217: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-11

.....................................................................................................................................................Obtenir des informations sur la journalisation et l'archivage

Obtenir des informations sur la journalisation et l'archivage

Obtenir des informations sur l'archivageLa commande SQL suivante affiche le mode de journalisation d'une base de données et indique si l'archivage automatique est activé :

SQL> ARCHIVE LOG LIST

Database log mode No Archive Mode

Automatic archival Disabled

Archive destination ?/dbs/arch

Oldest online log sequence 688

Current log sequence 689

Interrogez les vues dynamiques des performances V$DATABASE et V$INSTANCE pour afficher le mode de journalisation et d'archivage de la base de données.

SQL> SELECT name, log_mode

2 FROM v$database;

NAME LOG_MODE

--------- ---------

U15 NOARCHIVELOG

1 row selected.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

• Commande SQL :

• V$DATABASE :

– NAME

– LOG_MODE

• V$INSTANCE :

ARCHIVER

Obtenir des informationssur l'archivage

ARCHIVE LOG LIST;ARCHIVE LOG LIST;

Page 218: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-12 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Obtenir des informations sur l'archivage (suite)SQL> SELECT archiver

2 FROM v$instance;

ARCHIVE

---------

STOPPED

1 row selected.

Page 219: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-13

.....................................................................................................................................................Obtenir des informations sur la journalisation et l'archivage

Utiliser Instance Manager pour obtenir des informations sur l'archivageLancer Instance Manager et obtenir des informations sur l'archivage.

1 Lancez Instance Manager et connectez-vous directement à la base de données :Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Instance Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez la base de données de travail, puis sélectionnez Database dans l'arborescence du navigateur.

4 Cliquez sur l'onglet Information pour obtenir les informations d'archivage.

Page 220: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-14 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Obtenir des informations sur les groupes de fichiers de journalisationPour afficher le nombre de groupes de fichiers de journalisation en ligne (online), le groupe de fichiers de journalisation en cours et le numéro de séquence, interrogez la vue dynamique des performances V$THREAD. Cette vue présente un intérêt particulier pour les administrateurs de Parallel Server.

SQL> SELECT groups, current_group#, sequence#

2 FROM v$thread;

GROUPS CURRENT_GR SEQUENCE#

---------- ---------- ----------

2 1 689

1 row selected.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Obtenir des informations sur les groupes

V$THREAD :

• GROUPS

• CURRENT_GROUP#

• SEQUENCE#

Page 221: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-15

.....................................................................................................................................................Obtenir des informations sur la journalisation et l'archivage

Obtenir des informations sur les groupes de fichiers de journalisation (suite)L'interrogation suivante renvoie des informations sur le fichier de journalisation en ligne (online) à partir du fichier de contrôle :

SQL> SELECT group#, sequence#, bytes, members, status

2 FROM v$log;

GROUP# SEQUENCE# BYTES MEMBERS STATUS

--------- ---------- -------- --------- ---------

1 688 1048576 1 CURRENT

2 689 1048576 1 INACTIVE

2 rows selected.

Les éléments suivants correspondent aux valeurs les plus courantes de la colonne STATUS :

• UNUSED : indique que le groupe de fichiers de journalisation en ligne n'a jamais été utilisé. Il s'agit du statut d'un fichier de journalisation en ligne qui vient d'être ajouté.

• CURRENT : indique le groupe de fichiers de journalisation en ligne en cours. Cela implique que le groupe de fichiers de journalisation en ligne est actif.

• ACTIVE : indique que le groupe de fichiers de journalisation en ligne est actif, mais qu'il ne s'agit pas du groupe en cours. Il est nécessaire pour la restauration après blocage et peut être utilisé pour la restauration de blocs. Il peut être archivé ou non.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Obtenir des informations surles groupes et les membres

V$LOG :

• GROUP#

• MEMBERS

• STATUS

• SEQUENCE#

• BYTES

Page 222: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-16 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Obtenir des informations sur les groupes de fichiers de journalisation (suite)• CLEARING : indique que le fichier de journalisation est vidé et recréé à la suite de

l'exécution de la commande ALTER DATABASE CLEAR LOGFILE. Une fois le fichier de journalisation vidé, son statut devient UNUSED.

• CLEARING_CURRENT : indique qu'un thread fermé est supprimé du fichier de journalisation en cours. Le fichier de journalisation peut conserver ce statut si une erreur de changement de fichier de journalisation se produit, par exemple une erreur d'entrée/sortie lors de l'écriture de l'en-tête du nouveau fichier de journalisation.

• INACTIVE : indique que le groupe de fichiers de journalisation en ligne (online) n'est plus utile à la récupération de l'instance. Il peut être archivé ou non.

Page 223: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-17

.....................................................................................................................................................Obtenir des informations sur la journalisation et l'archivage

Obtenir des informations sur les membres d'un groupe de journalisationInterrogez la vue dynamique des performances V$LOGFILE pour obtenir le nom de tous les membres d'un groupe.

SQL> SELECT *

2> FROM v$logfile;

GROUP#STATUSMEMBER

----------------- -----------------------------

1 /DISK3/log1a.rdo

2 /DISK4/log2a.rdo

La colonne STATUS peut contenir l'une des valeurs suivantes :

• INVALID : indique que le fichier est inaccessible.

• STALE : indique que le contenu du fichier est incomplet (par exemple, lorsque l'ajout du membre est en cours).

• DELETED : indique que le fichier n'est plus utilisé.

• L'absence de valeur indique que le fichier est utilisé.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Obtenir des informations surles groupes et les membres

V$LOGFILE :

• GROUP#

• STATUS

• MEMBER

Page 224: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-18 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Gérer les changements de fichier de journalisation et les points de reprise

Imposer des changements de fichier de journalisation et des points de repriseUn changement de fichier de journalisation survient lorsque le processus LGWR arrête d'écrire les données dans un groupe de fichiers de journalisation en ligne (online) pour les écrire dans un autre.

Les changements de fichier de journalisation et les points de reprise sont des événements qui se produisent automatiquement, par exemple lorsque le groupe de fichiers de journalisation en ligne en cours est plein. Toutefois, ces événements peuvent être imposés.

Imposer des changements de fichier de journalisationUtilisez la commande SQL suivante pour imposer un changement de fichier de journalisation :

SQL> ALTER SYSTEM SWITCH LOGFILE;

Imposer des points de repriseUtilisez la commande SQL suivante pour imposer manuellement un point de reprise :

SQL> ALTER SYSTEM CHECKPOINT;

Copyright Oracle Corporation, 1999. Tous droits réservés.®

• Imposer des changements de fichier dejournalisation à l'aide de la commande :

• Gérer les points de reprise à l'aide des paramètresd'initialisation :

– LOG_CHECKPOINT_INTERVAL

– LOG_CHECKPOINT_TIMEOUT

– FAST_START_IO_TARGET

Changements de fichier dejournalisation et points de reprise

ALTER SYSTEM SWITCH LOGFILE;ALTER SYSTEM SWITCH LOGFILE;

Page 225: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-19

.....................................................................................................................................................Gérer les changements de fichier de journalisation et les points de reprise

Définir la fréquence des points de reprise d'une base de donnéesLorsque la base de données utilise des fichiers de journalisation en ligne (online) volumineux, vous pouvez indiquer des points de reprise de base de données supplémentaires en définissant les paramètres d'initialisation suivants :

• LOG_CHECKPOINT_INTERVAL

• LOG_CHECKPOINT_TIMEOUT

• FAST_START_IO_TARGET (dans la version 8.1, mais uniquement pour Enterprise Edition)

LOG_CHECKPOINT_INTERVAL Pour les versions antérieures à la version 8.1, un point de reprise se produit dès que le processus LGWR écrit le nombre de blocs définis par le paramètre LOG_CHECKPOINT_INTERVAL.

La valeur de ce paramètre est définie dans des blocs du système d'exploitation et non dans ceux de la base de données Oracle.

Quelle que soit cette valeur, un point de reprise se produit toujours lors d'un changement de fichier de journalisation en ligne.

Si la valeur est supérieure à la taille réelle du fichier de journalisation en ligne, les points de reprise ne se produisent que lors des changements de fichier de journalisation.

Notez que la fréquence 0 peut provoquer la constitution très fréquente de points de reprise, car une nouvelle demande est lancée même si un seul tampon de journalisation (redo log buffer) a été écrit depuis la dernière demande.

Si vous définissez le paramètre LOG_CHECKPOINT_INTERVAL dans la version 8.1, la cible ne peut être décalée par rapport à la fin du fichier de journalisation d'un nombre de blocs de journalisation (redo log block) supérieur à celui défini par ce paramètre. Ainsi, l'instance peut être récupérée sans qu'il soit nécessaire de lire un nombre de blocs de journalisation supérieur au nombre défini.

LOG_CHECKPOINT_TIMEOUT La valeur du paramètre d'initialisation des versions antérieures à la version 8.1 définit le délai maximum entre deux points de reprise. La valeur est définie en secondes. Le délai correspond au nombre de secondes, défini par le paramètre, qui doit s'écouler entre le début d'un point de reprise et l'exécution du point de reprise suivant.

La valeur de temporisation 0 désactive les points de reprise planifiés.

Si vous définissez ce paramètre dans la version 8.1, la distance entre la cible et la fin du fichier de journalisation correspond au nombre de secondes écoulées. Ainsi, la récupération s'effectue en ne lisant que le nombre de blocs de journalisation correspondant au nombre de secondes défini.

Page 226: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-20 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Définir la fréquence des points de reprise d'une base de données (suite)

FAST_START_IO_TARGET Le paramètre FAST_START_IO_TARGET améliore les performances des opérations de restauration après blocage et de récupération d'une instance. Plus la valeur de ce paramètre est faible, meilleures sont les performances, car le nombre de blocs à récupérer est moindre. Si vous définissez le paramètre, le processus DBWn écrit les tampons "dirty" plus rapidement. Le paramètre a été introduit dans la version 8.1.

Remarque techniqueLa procédure de point de reprise rapide est décrite en détail dans le cours Oracle DBA : Sauvegarde et restauration.

Page 227: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-21

.....................................................................................................................................................Multiplexer et gérer les membres et les groupes

Multiplexer et gérer les membres et les groupes

Ajouter des groupes de fichiers de journalisation Dans certains cas, vous pouvez être amené à créer des groupes de fichiers de journalisation supplémentaires. Par exemple, vous pouvez ajouter des groupes pour résoudre les problèmes de disponibilité. Utilisez la commande SQL suivante pour créer un groupe de fichiers de journalisation en ligne (online) :

ALTER DATABASE [database]

ADD LOGFILE [GROUP integer] filespec

[, [GROUP integer] filespec]...]

Définissez le nom et l'emplacement des membres en suivant les spécifications de fichier. Vous pouvez définir la valeur du paramètre GROUP pour chaque groupe de fichiers de journalisation. Si vous ne définissez pas ce paramètre, le serveur Oracle génère la valeur automatiquement.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Ajouter des groupes de fichiersde journalisation en ligne

Groupe 1 Groupe 2 Groupe 3

ALTER DATABASE ADD LOGFILE

('/DISK3/log3a.rdo',

'/DISK4/log3b.rdo') size 1M;

ALTER DATABASE ADD LOGFILE

('/DISK3/log3a.rdo',

'/DISK4/log3b.rdo') size 1M;

log3b.rdolog1b.rdo log2b.rdo

Page 228: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-22 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Ajouter des membres à des groupes de fichiers de journalisationPour ajouter des membres à des groupes de fichiers de journalisation, utilisez la commande ALTER DATABASE LOGFILE MEMBER suivante :

ALTER DATABASE [database]

ADD LOGFILE MEMBER

[ 'filename' [REUSE]

[, 'filename' [REUSE]]...

TO {GROUP integer

|('filename'[, 'filename']...)

}

]...

Utilisez le nom complet des membres pour ne pas créer les fichiers dans un 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, et vous devez indiquer l'option REUSE. Vous pouvez identifier le groupe cible en définissant des membres du groupe ou le numéro du groupe.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Ajouter des membres à des groupesde fichiers de journalisation en ligne

log1b.rdo

ALTER DATABASE ADD LOGFILE MEMBER

'/DISK4/log1b.rdo' TO GROUP 1,

'/DISK4/log2b.rdo' TO GROUP 2;

ALTER DATABASE ADD LOGFILE MEMBER

'/DISK4/log1b.rdo' TO GROUP 1,

'/DISK4/log2b.rdo' TO GROUP 2;

Groupe 1 Groupe 2

log1a.rdo log2b.rdolog2a.rdo

Page 229: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-23

.....................................................................................................................................................Multiplexer et gérer les membres et les groupes

Utiliser Storage Manager pour gérer les groupes et les membresLancer Storage Manager pour gérer les groupes de fichiers de journalisation et leurs membres.

1 Lancez Storage Manager et connectez-vous directement à la base de données :Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez la base de données de travail, puis sélectionnez le dossier Redo Log Groups dans l'arborescence du navigateur. Cliquez avec le bouton droit de la souris et sélectionnez Create.

4 Entrez les informations du groupe de fichiers de journalisation et définissez les membres. Cliquez sur Create.

Page 230: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-24 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Changer l'emplacement ou le nom des fichiers de journalisation en ligne (online)

Changer le nom des fichiers de journalisationVous pouvez changer l'emplacement des fichiers de journalisation en ligne en renommant les fichiers. Avant de renommer les fichiers de journalisation en ligne, assurez-vous que les nouveaux fichiers de journalisation en ligne existent. Le serveur Oracle modifie uniquement les pointeurs dans les fichiers de contrôle, mais ne renomme pas physiquement ou ne crée pas de fichiers de système d'exploitation.

La commande ALTER DATABASE RENAME FILE suivante permet de changer le nom du fichier de journalisation en ligne :

ALTER DATABASE [database]

RENAME FILE 'filename'[, 'filename']...

TO 'filename'[, 'filename']...

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Modifier l'emplacement et le nom desfichiers de journalisation en ligne

1. Copiez les fichiers de journalisation en ligne versun nouvel emplacement.

2. Exécutez la commande ALTER DATABASERENAME FILE.

Page 231: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-25

.....................................................................................................................................................Changer l'emplacement ou le nom des fichiers de journalisation en ligne (online)

Utiliser Storage Manager pour changer l'emplacement ou le nom des membres d'un groupe de fichiers de journalisationLancez Storage Manager pour changer le nom ou l'emplacement des membres d'un groupe de fichiers de journalisation.

1 Lancez Storage Manager et connectez-vous directement à la base de données :Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez la base de données de travail, puis sélectionnez un groupe de fichiers de journalisation.

4 Modifiez les informations sur les membres du groupe de fichiers de journalisation dont vous souhaitez changer le nom ou l'emplacement. Cliquez sur Apply.

Page 232: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-26 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Supprimer des groupes de fichiers de journalisation en ligne (online) et des membres

Supprimer un groupe de fichiers de journalisationPour augmenter ou réduire la taille des groupes de fichiers de journalisation en ligne, ajoutez de nouveaux groupes de fichiers de journalisation en ligne (ayant la nouvelle taille), puis supprimez les anciens.

Utilisez la commande ALTER DATABASE DROP LOGFILE suivante pour supprimer l'ensemble d'un groupe de fichiers de journalisation en ligne :

ALTER DATABASE [database]

DROP LOGFILE

{GROUP integer|('filename'[, 'filename']...)}

[,{GROUP integer|('filename'[, 'filename']...)}]...

Restrictions• Une instance nécessite au moins deux groupes de fichiers de journalisation

en ligne.

• Vous ne pouvez pas supprimer un groupe actif ou en cours.

• Si la base de données fonctionne en mode ARCHIVELOG et que le groupe de fichiers de journalisation n'est pas archivé, vous ne pouvez pas supprimer le groupe.

• Lorsque vous supprimez un groupe de fichiers de journalisation en ligne, les fichiers du système d'exploitation ne sont pas supprimés.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Supprimer des groupes de fichiersde journalisation en ligne

Groupe 1 Groupe 2 Groupe 3

ALTER DATABASE DROP LOGFILE GROUP 3;ALTER DATABASE DROP LOGFILE GROUP 3;

log1b.rdo log1b.rdo

log3a.rdo

log3b.rdolog1b.rdo log2b.rdo

Page 233: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-27

.....................................................................................................................................................Supprimer des groupes de fichiers de journalisation en ligne (online) et des membres

Supprimer un membre d'un groupe de fichiers de journalisationVous pouvez être amené à supprimer un membre d'un groupe de fichier de journalisation en ligne (online) ayant le statut INVALID. Utilisez la commande ALTER DATABASE DROP LOGFILE MEMBER suivante pour supprimer des membres d'un groupe de fichiers de journalisation en ligne :

ALTER DATABASE [database]

DROP LOGFILE MEMBER 'filename'[, 'filename']...

Restrictions• Si le membre à supprimer est le dernier membre valide du groupe, vous ne pouvez

pas le supprimer.

• S'il s'agit du groupe en cours, vous devez imposer un changement de fichier de journalisation pour pouvoir supprimer le membre.

• Si la base de données fonctionne en mode ARCHIVELOG et que le groupe de fichiers de journalisation du membre n'est pas archivé, vous ne pouvez pas supprimer le membre.

• Lorsque vous supprimez un membre d'un groupe de fichiers de journalisation en ligne, le fichier du système d'exploitation n'est pas supprimé.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Supprimer des membres d’un groupe defichiers de journalisation en ligne

Groupe 2

ALTER DATABASE DROP LOGFILE MEMBER

'/DISK4/log2b.dbf';

ALTER DATABASE DROP LOGFILE MEMBER

'/DISK4/log2b.dbf';

Groupe 1

log1b.rdo

log2b.rdo

log1b.rdo

log1b.rdo

Page 234: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-28 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Utiliser Storage Manager pour supprimer des groupes de fichiers de journalisation et des membresLancer Storage Manager pour supprimer des groupes de fichiers de journalisation et des membres.

1 Lancez Storage Manager et connectez-vous directement à la base de données :Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez la base de données de travail, puis sélectionnez le groupe de fichiers de journalisation ou le membre à supprimer.

4 Cliquez sur Object—>Remove dans la barre de menus pour supprimer le groupe de fichiers de journalisation ou le membre.

Page 235: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-29

.....................................................................................................................................................Supprimer des groupes de fichiers de journalisation en ligne (online) et des membres

Effacer des fichiers de journalisation en ligne (online)Si tous les membres sont endommagés, l'administrateur de base de données peut résoudre le problème en réinitialisant les fichiers de journalisation.

Utilisez la commande SQL ALTER DATABASE CLEAR LOGFILE suivante pour réinitialiser les fichiers de journalisation en ligne :

ALTER DATABASE [database]

CLEAR [UNARCHIVED] LOGFILE

{GROUP integer|('filename'[, 'filename']...)}

[,{GROUP integer|('filename'[, 'filename']...)}]...

L'utilisation de cette commande revient à ajouter, puis à effacer un fichier de journalisation en ligne. Toutefois, vous pouvez exécuter cette commande même s'il existe seulement deux groupes de fichiers de journalisation ne contenant qu'un seul membre et que le groupe effacé est disponible mais non archivé.

RestrictionsVous pouvez effacer un fichier de journalisation en ligne, qu'il soit archivé ou non. Toutefois, s'il n'est pas archivé, vous devez inclure le mot-clé UNARCHIVED. Cette opération rend les sauvegardes inutilisables en cas de restauration des données à l'aide du fichier de journalisation en ligne.

Remarque : l'effacement de fichiers de journalisation en ligne est expliqué en détail dans le cours Oracle DBA : Sauvegarde et restauration.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Effacer des fichiers dejournalisation en ligne

ALTER DATABASE CLEAR LOGFILE

'/DISK3/log2a.rdo';

Exemple :

Page 236: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-30 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Planifier les fichiers de journalisation en ligne (online)

Nombre de fichiers de journalisation en lignePour déterminer le nombre de fichiers de journalisation en ligne nécessaires à une instance de base de données, vous devez tester différentes configurations.

Dans certains cas, une instance de base de données peut être limitée à deux groupes. Dans d'autres cas, une instance de base de données peut nécessiter des groupes supplémentaires pour garantir leur disponibilité pour le processus LGWR. Par exemple, si des messages du fichier trace LGWR ou du fichier ALERT indiquent que le processus LGWR doit attendre fréquemment la fin d'un point de reprise ou l'archivage d'un groupe pour accéder à un groupe, vous devez ajouter des groupes.

Bien que le serveur Oracle permette d'utiliser des groupes multiplexés contenant un nombre de membres différent, essayez de créer une configuration symétrique. Une configuration asymétrique ne doit être que temporaire et résulter d'une situation anormale, telle qu'une défaillance du disque.

Définir l'emplacement des fichiers de journalisation en ligneLorsque vous créez des fichiers de journalisation en ligne multiplexés, placez les membres d'un groupe sur différents disques. Ainsi, l'instance ne s'arrête pas lorsqu'un membre n'est pas disponible, alors que d'autres membres le sont.

Répartissez les fichiers de journalisation archivés et les fichiers de journalisation en ligne sur des disques différents afin de réduire la contention entre les processus d'arrière-plan ARCn et LGWR.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Configuration des fichiersde journalisation en ligne

Groupe 1 Groupe 2 Groupe 3

Membre

Membre

Disque 3Disque 2Disque 1

MembreMembre

Membre

Page 237: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-31

.....................................................................................................................................................Planifier les fichiers de journalisation en ligne (online)

Définir l'emplacement des fichiers de journalisation en ligne (online) (suite)Placez les fichiers de données et les fichiers de journalisation en ligne sur des disques différents afin de limiter la contention entre les processus LGWR et DBWn et réduire les risques de perte de fichiers de données et de fichiers de journalisation en ligne en cas de défaillance physique.

Définir la taille des fichiers de journalisation en ligneLa taille minimale d'un fichier de journalisation en ligne est de 50 ko, et sa taille maximale est fonction du système d'exploitation. Les membres des groupes peuvent avoir des tailles différentes. Toutefois, la différence de taille ne procure aucun avantage.

Des groupes de tailles différentes ne doivent exister que temporairement lorsque vous changez la taille des membres des groupes de fichiers de journalisation en ligne. Dans ce cas, vous devez créer de nouveaux fichiers de journalisation en ligne avec la nouvelle taille et supprimer les anciens groupes.

La configuration des fichiers de journalisation en ligne peut être affectée par :

• le nombre de changements de fichier de journalisation et de points de reprise,

• le nombre d'entrées de journalisation et le volume des entrées,

• l'espace de stockage disponible sur le support (une bande, par exemple, si l'archivage est activé).

Page 238: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-32 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Dépannage

Membres d'un groupe de fichiers de journalisation non disponiblesLe processus LGWR réagit différemment lorsque certains membres d'un groupe de fichiers de journalisation en ligne (online) sont indisponibles.

• Si le processus LGWR peut accéder à au moins un membre du groupe, l'écriture des données dans les membres accessibles du groupe s'effectue normalement, et le processus ne prend pas en compte les membres non disponibles. Si le groupe n'était pas actif, c'est-à-dire si le point de reprise n'était pas terminé, il suffit de supprimer un membre du groupe de fichiers de journalisation et d'en ajouter un nouveau pour résoudre le problème. Dans tous les autres cas, vous devez imposer le changement de fichier de journalisation.

• Si le processus LGWR ne peut pas accéder à l'ensemble des membres du groupe suivant lors du changement de fichier de journalisation, l'instance s'arrête. Si le groupe était inactif, il suffit de supprimer un groupe de fichiers de journalisation et d'en ajouter un nouveau pour résoudre le problème. Si tel n'est pas le cas, vous devez effectuer une restauration physique à la suite de la perte d'un fichier de journalisation en ligne.

• Si, subitement, le processus LGWR ne peut plus accéder à aucun membre du groupe en cours lors de l'écriture, l'instance de base de données Oracle s'arrête. Dans ce cas, vous devez effectuer une restauration physique à la suite de la perte d'un fichier de journalisation en ligne.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Erreurs possibles du processus LGWR

• Un membre d'un groupe contenant au moins deuxfichiers de journalisation n'est pas disponible.

• Tous les membres du groupe suivant ne sontpas disponibles.

• Tous les membres du groupe en cours ne sontpas disponibles.

Page 239: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-33

.....................................................................................................................................................Utiliser LogMiner

Utiliser LogMiner

Fonction de LogMinerLogMiner fournit une procédure permettant de traiter les fichiers de journalisation et de convertir leur contenu en instructions SQL représentant les opérations logiques exécutées dans la base de données.

Remarque techniqueLogMiner fonctionne avec la version 8.1 d'Oracle et les versions ultérieures.

Vous pouvez analyser les fichiers de journalisation d'une base de données version 8.0 ou ultérieure.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Analyser les fichiers dejournalisation en ligne

• Suivi des modifications :

– dans la base de données,

– dans une table spécifique,

– relatives à un utilisateur particulier.

• Application de modèles d'accès aux données.

• Annulation des modifications de la basede données.

• Utilisation des données archivées poureffectuer des opérations de réglage etplanifier les capacités.

Page 240: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-34 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Préliminaires à l'utilisation de LogMinerLogMiner s'exécute dans une instance de base de données Oracle montée ou démontée. LogMiner utilise un fichier spécial, appelé fichier de dictionnaire, qui indique la base de données qui a créé le fichier, ainsi que la date de création de ce dernier. Ce fichier de dictionnaire n'est pas obligatoire, mais il est recommandé.

Sans ce fichier, les instructions SQL équivalentes utilisent un ID d'objet interne Oracle comme nom d'objet et présentent les valeurs de colonne sous forme de données hexadécimales.

Créer un fichier de dictionnaire

• Affectez au paramètre d'initialisation UTL_FILE_DIR un répertoire d'entrée/sortie de fichier PL/SQL.

• Exécutez la procédure DBMS_LOGMNR_D.BUILD pour créer le fichier de dictionnaire.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Utiliser LogMiner

• Définir UTL_FILE_DIR.

• Créer un fichier de dictionnaire.

EXECUTE DBMS_LOGMNR_D.BUILD('v815dict.ora',

'C:\ora815\admin\v815\log');

Page 241: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-35

.....................................................................................................................................................Utiliser LogMiner

Configurer la session LogMinerUne fois le fichier de dictionnaire créé, vous pouvez analyser les fichiers de journalisation. La première étape consiste à définir les fichiers de journalisation que vous souhaitez analyser à l'aide de la procédure DBMS_LOGMNR.ADD_LOGFILE.

Utilisez les constantes suivantes :

• DBMS_LOGMNR.NEW : crée une liste et définit le premier fichier de journalisation.

• DBMS_LOGMNR.ADDFILE : ajoute des fichiers de journalisation à la liste.

• DBMS_LOGMNR.REMOVEFILE : supprime des fichiers de journalisation de la liste.

LogMiner peut analyser les fichiers de journalisation en ligne (online) et archivés.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Définir les fichiers dejournalisation à analyser

Configurer la vue V$LOGMNR_CONTENTS :

• Initialisez une nouvelle liste et définissez lepremier fichier de journalisation.

EXECUTE DBMS_LOGMNR.ADD_LOGFILE(

'c:\ora815\oradata\v815\redo01a.log',

DBMS_LOGMNR.NEW);

• Ajoutez des fichiers de journalisation à la liste.

EXECUTE DBMS_LOGMNR.ADD_LOGFILE(

'c:\ora815\oradata\v815\redo02a.log',

DBMS_LOGMNR.ADDFILE);

EXECUTE DBMS_LOGMNR.ADD_LOGFILE(

'c:\ora815\oradata\v815\redo02a.log',

DBMS_LOGMNR.ADDFILE);

Page 242: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-36 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Démarrer une session LogMinerUne fois le fichier de dictionnaire créé et la liste des fichiers de journalisation définie, vous pouvez démarrer LogMiner pour commencer l'analyse. Utilisez les options suivantes pour limiter la recherche au démarrage :

Option DescriptionStartScn Début d'une plage de numéros SCN

EndScn Fin d'une plage de numéros SCN

StartTime Début d'un délai

EndTime Fin d'un délai

DictFileName Nom du fichier de dictionnaire

Options Utilise la correspondance de colonne définie dans le fichier logmnr.opt ; la valeur est USE_COLMAP

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Lancer l'analyse desfichiers de journalisation

Initialiser une session LogMiner :

EXECUTE DBMS_LOGMNR.START_LOGMNR(

DICTFILENAME=>

'c:\ora815\oradata\v815\log\v815dict.ora');

Page 243: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-37

.....................................................................................................................................................Utiliser LogMiner

Identifier les modifications apportées à une tableUtilisez la vue V$LOGMNR_CONTENTS pour identifier les modifications. Vous ne pouvez afficher les informations de journalisation que dans la session ayant effectuée l'analyse. Les informations ne sont pas visibles dans les autres sessions. Pour pouvoir les afficher dans d'autres sessions, stockez les informations dans une autre table.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Identifier les modificationsapportées à une table

Visualiser V$LOGMNR_CONTENTS pour identifierles modifications de la table EMP :

SELECT timestamp, username, sql_redo

FROM v$logmnr_contents

WHERE seg_name = 'EMP';

TIMESTAMP USER SQL_REDO

---------- ----- ----------------------------

14-APR-99 SYS update SCOTT.EMP set sal =..

14-APR-99 SYS update SCOTT.EMP set sal =..

14-APR-99 SYS insert into SCOTT.EMP(…)...

Page 244: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-38 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Arrêter la session LogMinerExécuter la procédure DBMS_LOGMNR.END_LOGMNR pour mettre fin à l'analyse des fichiers de journalisation.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Arrêter l'analyse desfichiers de journalisation

Arrêter la session LogMiner :

EXECUTE DBMS_LOGMNR.END_LOGMNR;EXECUTE DBMS_LOGMNR.END_LOGMNR;

Page 245: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-39

.....................................................................................................................................................Utiliser LogMiner

Afficher le dictionnaire de donnéesUne fois LogMiner démarré, vous disposez des vues du dictionnaire de données suivantes :

Vue DescriptionV$LOGMNR_DICTIONARY Fichier de dictionnaire utilisé

V$LOGMNR_PARAMETERS Valeurs en cours des paramètres LogMiner

V$LOGMNR_CONTENTS Contenu des fichiers de journalisation à analyser

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Obtenir des informations sur lesfichiers de journalisation à analyser

• V$LOGMNR_DICTIONARY

• V$LOGMNR_PARAMETERS

• V$LOGMNR_CONTENTS

Page 246: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-40 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Synthèse

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Synthèse

Ce chapitre vous a permis d'apprendre :

• à expliquer l'utilisation des fichiersde journalisation en ligne,

• à obtenir des informations sur la journalisationet l'archivage,

• à gérer les changements de fichier de journalisationet les points de reprise,

• à multiplexer et gérer les fichiers de journalisationen ligne,

• à planifier les fichiers de journalisation en ligne,

• à résoudre les problèmes courants liés aux fichiersde journalisation,

• à analyser les fichiers de journalisation en ligneet archivés.

Page 247: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 7-41

.....................................................................................................................................................Synthèse

Pour référence

Contexte RéférenceParamètres d'initialisation LOG_FILES (n'existe plus dans la version 8.1)

LOG_CHECKPOINTS_TO_ALERT

UTL_FILE_DIRParamètresd'initialisation dynamique

LOG_CHECKPOINT_TIMEOUT

LOG_CHECKPOINT_INTERVAL

FAST_START_IO_TARGETVues dynamiques des performances

V$THREAD

V$LOG

V$LOGFILE

V$DATABASE

V$LOGMNR_CONTENTS

V$LOGMNR_DICTIONARY

V$LOGMNR_LOGS

V$LOGMNR_PARAMETERSVues du dictionnaire de données

Aucune

Commandes ALTER SYSTEM SWITCH LOGFILE

ALTER SYSTEM CHECKPOINT

ARCHIVE LOG LIST

ALTER DATABASE ADD LOGFILE

ALTER DATABASE ADD LOGFILE MEMBER

ALTER DATABASE RENAME FILE

ALTER DATABASE DROP LOGFILE

ALTER DATABASE DROP LOGFILE MEMBER

ALTER DATABASE CLEAR LOGFILEProcédures et fonctionsde package

DBMS_LOGMNR_D.BUILD

DBMS_LOGMNR.ADD_LOGFILE

DBMS_LOGMNR.START_LOGMNR

DBMS_LOGMNR.END_LOGMNR

Page 248: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................7-42 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 7 : Gérer les fichiers de journalisation (redo log)

Page 249: Oracle DBA - Architecture & Administration Vol.1

.................................

8

Gérer les tablespaces etles fichiers de données

Page 250: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-2 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Objectifs

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Objectifs

A la fin de ce chapitre, vous pourrez :

• décrire la structure logique de la base de données,

• identifier les différents types de segmenttemporaire,

• créer des tablespaces,

• modifier la taille des tablespaces,

• allouer de l'espace aux segments temporaires,

• modifier le statut des tablespaces,

• modifier les paramètres de stockage destablespaces,

• changer l'emplacement des tablespaces.

Page 251: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-3

.....................................................................................................................................................Présentation

Présentation

PrésentationUne petite base de données peut ne nécessiter que le tablespace SYSTEM. Toutefois, Oracle recommande de créer des tablespaces supplémentaires pour stocker les données utilisateur, les index utilisateur, les segments d'annulation et les segments temporaires en dehors du dictionnaire de données. Ceci facilite l'exécution de diverses opérations d'administration de base de données et réduit la contention entre objets de dictionnaire et objets de schéma associés aux mêmes fichiers de données.

L'administrateur de base de données peut créer des tablespaces, modifier la taille des fichiers de données, ajouter des fichiers de données aux tablespaces, définir et modifier les paramètres de stockage par défaut des segments créés dans un tablespace, rendre des tablespaces accessibles en lecture seule ou en lecture-écriture, rendre des tablespace temporaires ou permanents et supprimer des tablespaces.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Présentation

Base de données

Fichiers de contrôle

Fichiers de journa-

lisationFichiersde données

Page 252: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-4 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Hiérarchie de stockage de la base de données

Architecture de la base de donnéesL'architecture d'une base de données Oracle contient les structures logiques et physiques qui constituent la base de données.

• La structure physique comprend les fichiers de contrôle, les fichiers de journalisation en ligne (online redo log) et les fichiers de données qui constituent la base de données.

• La structure logique est composée de tablespaces, de segments, d'extents (ensemble de blocs contigus) et de blocs de données.

Le serveur Oracle permet un contrôle précis de l'utilisation de l'espace disque à l'aide de tablespaces et de structures de stockage logiques constituées de segments, d'extents et de blocs de données.

TablespacesLes données d'une base de données Oracle sont stockées dans des tablespaces.

• Une base de données Oracle peut être divisée en plus petites zones logiques d'espace appelées tablespaces.

• Un tablespace ne peut appartenir qu'à une seule base de données à la fois.

• Chaque tablespace est constitué d'un ou de plusieurs fichiers de système d'exploitation, appelés fichiers de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Base de données

Logique Physique

Hiérarchie de stockagede la base de données

Tablespace Fichier de données

Segment

Extent

Bloc Oracle Bloc OS

Page 253: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-5

.....................................................................................................................................................Hiérarchie de stockage de la base de données

Tablespaces (suite)• Un tablespace peut contenir un ou plusieurs segments.

• Les tablespaces peuvent être disponibles "online" lorsque la base de données est active.

• A l'exception du tablespace SYSTEM ou des tablespaces contenant un segment d'annulation actif, les tablespaces peuvent être mis "offline", en laissant la base de données active.

• Les tablespaces peuvent être accessibles en lecture et écriture ou en lecture seule.

Fichiers de donnéesChaque tablespace d'une base de données Oracle contient des fichiers appelés fichiers de données. Ces fichiers sont des structures physiques correspondant au système d'exploitation sur lequel s'exécute le serveur Oracle.

• Un fichier de données ne peut appartenir qu'à un seul tablespace.

• Un serveur Oracle crée un fichier de données dans un tablespace en allouant l'espace disque défini et un petit espace supplémentaire.

• L'administrateur de base de données peut modifier la taille des fichiers de données après leur création ou indiquer que leur taille peut augmenter de façon dynamique à mesure que celle des objets du tablespace s'accroît.

SegmentsUn segment est un espace alloué à une structure de stockage logique spécifique dans un tablespace. Par exemple, l'ensemble de l'espace de stockage alloué à une table constitue un segment.

• Un tablespace peut contenir un ou plusieurs segments.

• Un segment ne peut être réparti sur plusieurs tablespaces, mais peut s'étendre à plusieurs fichiers de données d'un même tablespace.

• Chaque segment est constitué d'un ou de plusieurs extents.

ExtentsLes extents permettent d'allouer de l'espace à un segment.

• Un segment peut être constitué d'un ou de plusieurs extents.

– Lorsque vous créez un segment, celui-ci contient au moins un extent.

– A mesure que la taille du segment augmente, des extents lui sont ajoutés.

– L'administrateur de base de données peut ajouter manuellement des extents à un segment.

• Un extent est constitué de blocs Oracle contigus.

• Un extent peut ne pas couvrir un fichier de données, mais il doit exister dans un fichier de données.

Page 254: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-6 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Blocs de donnéesLe serveur Oracle gère l'espace de stockage des fichiers de données à l'aide d'unités appelées blocs de données ou blocs Oracle.

• Le degré de finesse maximum est atteint en stockant les données d'une base de données Oracle dans des blocs de données.

• Les blocs de données Oracle représentent la plus petite unité de stockage que le serveur Oracle peut allouer, écrire ou lire.

• Un bloc de données correspond à un ou plusieurs blocs de système d'exploitation alloués à partir d'un fichier de données existant.

• Le paramètre d'initialisation DB_BLOCK_SIZE permet de définir la taille des blocs de données lors de la création d'une base de données Oracle.

• Cette taille doit correspondre à un multiple de la taille des blocs du système d'exploitation afin d'éviter les opérations d'entrée/sortie inutiles.

• La taille maximale d'un bloc de données dépend du système d'exploitation utilisé.

Page 255: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-7

.....................................................................................................................................................Tablespaces SYSTEM et non SYSTEM

Tablespaces SYSTEM et non SYSTEM

Types de tablespaceL'administrateur de base de données crée des tablespaces pour améliorer le contrôle et faciliter la gestion de la base de données. Le serveur Oracle accepte deux types de tablespace : le tablespace SYSTEM et tous les autres tablespaces.

Le tablespace SYSTEM• est créé en même temps que la base de données,

• doit exister dans toutes les bases de données,

• contient le dictionnaire de données, y compris les programmes stockés,

• contient le segment d'annulation SYSTEM,

• ne doit pas contenir de données utilisateur, bien que cela soit possible.

Tablespaces non SYSTEM• facilitent l'administration de la base de données,

• séparent les segments d'annulation, les segments temporaires, les segments de données d'application et les segments d'index d'application,

• séparent les données en fonction des besoins de sauvegarde,

• séparent les données dynamiques des données statiques,

• gèrent l'espace alloué aux objets utilisateur.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Tablespaces SYSTEM et non SYSTEM

• Tablespace SYSTEM :

– créé avec la base de données,

– contient le dictionnaire de données,

– contient le segment d'annulation SYSTEM.

• Tablespaces non SYSTEM :

– séparent les segments,

– facilitent l'administration de l'espace,

– gèrent l'espace alloué à un utilisateur.

Page 256: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-8 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Créer des tablespaces

Commande CREATE TABLESPACEUtilisez la commande CREATE TABLESPACE pour créer des tablespaces :

CREATE TABLESPACE tablespace

DATAFILE datafile_clause]

[, datafile_clause]...

[MINIMUM EXTENT integer[K|M]]

[LOGGING|NOLOGGING]

[DEFAULT storage_clause ]

[ONLINE|OFFLINE]

[PERMANENT|TEMPORARY]

[extent_management_clause]

où tablespace correspond au nom du tablespace à créer,

DATAFILE définit le ou les fichiers de données constituant le tablespace,

MINIMUM EXTENT garantit que la taille de chaque extent du tablespace est un multiple de integer (utilisez K ou M pour définir la taille en kilo-octets ou en mégaoctets),

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Créer des tablespaces

CREATE TABLESPACE app_data

DATAFILE '/DISK4/app_data_01.dbf'

SIZE 100M,

'/DISK5/app data_ 02.dbf'

SIZE 100M

MINIMUM EXTENT 500K

DEFAULT STORAGE ( INITIAL 500K

NEXT 500K

MAXEXTENTS 500

PCTINCREASE 0 );

Page 257: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-9

.....................................................................................................................................................Créer des tablespaces

Commande CREATE TABLESPACE (suite)LOGGING indique que toutes les modifications

effectuées sur les tables, index et partitions du tablespace seront écrites par défaut dans le fichier de journalisation (LOGGING est la valeur par défaut).

NOLOGGING indique que toutes les modifications effectuées dans les tables, index et partitions du tablespace ne seront pas écrites par défaut dans le fichier de journalisation (NOLOGGING n'affecte que certaines commandes LMD et LDD, telles que les chargements directs).

DEFAULT définit les paramètres de stockage par défaut de tous les objets créés dans le tablespace.

ONLINE rend le tablespace disponible dès sa création.

OFFLINE rend le tablespace indisponible dès sa création.

PERMANENT indique que le tablespace peut être utilisé pour stocker des objets permanents.

TEMPORARY indique que le tablespace ne contiendra que des objets temporaires, tels que les segments de tri implicite créés par la clause ORDER BY.

extent_management_clause indique la manière dont les extents du tablespace sont gérés (cette clause est décrite dans l'une des sections suivantes du présent chapitre).

Page 258: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-10 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Commande CREATE TABLESPACE (suite)

datafile_clause :== filename

{SIZE integer[K|M] [REUSE] | REUSE }

[ autoextend_clause ]

où filename est le nom d'un fichier de données du tablespace,

SIZE définit la taille du fichier (utilisez K ou M pour définir la taille en kilo-octets ou en mégaoctets).

REUSE permet au serveur Oracle de réutiliser un fichier existant.

autoextend_clause active ou désactive l'augmentation automatique de la taille du fichier de données (cette clause est décrite dans l'une des sections suivantes du présent chapitre).

Page 259: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-11

.....................................................................................................................................................Créer des tablespaces

Utiliser Oracle Enterprise Manager pour créer un nouveau tablespace1 Lancez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Sélectionnez le dossier Tablespaces, cliquez avec le bouton droit de la souris, puis sélectionnez Create dans le menu.

4 Dans la page General de la fenêtre de propriétés, entrez le nom, puis cliquez sur ADD pour afficher la fenêtre de propriétés Create Data file.

5 Définissez chaque fichier de données dans cette fenêtre.

6 Entrez les informations de stockage dans la page Extents de la fenêtre de propriétés.

7 Cliquez sur Create.

Page 260: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-12 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Gestion de l'espace dans les tablespaces

Choisir la méthode de gestion de l'espaceLes extents d'un tablespace peuvent être gérés à l'aide des tables du dictionnaire de données ou de bitmaps. Lorsque vous créez un tablespace, vous choisissez l'une ou l'autre de ces méthodes de gestion. Vous ne pouvez pas changer la méthode par la suite.

Tablespaces gérés par le dictionnaire de donnéesLorsqu'un tablespace gère ses extents à l'aide du dictionnaire de données, le serveur Oracle met à jour les tables appropriées dans le dictionnaire de données chaque fois qu'un extent est alloué ou libéré.

Il s'agit de la méthode de gestion de l'espace utilisée par défaut dans les tablespaces. C'est la seule méthode disponible dans Oracle 8.0 et les versions antérieures.

Tablespaces gérés localementUn tablespace qui gère ses propres extents conserve un bitmap dans chaque fichier de données pour identifier les blocs disponibles ou utilisés dans le fichier de données. Chaque bit du bitmap correspond à un bloc ou à un groupe de blocs. Lorsqu'un extent est alloué ou libéré pour être réutilisé, le serveur Oracle modifie les valeurs de son bitmap pour indiquer le nouveau statut des blocs.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Gestion de l'espace dans les tablespaces

• Tablespaces gérés par le dictionnaire de données :

– méthode par défaut,

– extents libres enregistrés dans des tablesdu dictionnaire de données.

• Tablespaces gérés localement :

– extents libres enregistrés dans un bitmap,

– chaque bit correspond à un bloc ou à ungroupe de blocs,

– la valeur du bit indique si l'extent est libreou utilisé.

Page 261: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-13

.....................................................................................................................................................Tablespaces gérés localement

Tablespaces gérés localement

SyntaxeL'option LOCAL de la clause EXTENT MANAGEMENT permet d'indiquer qu'un tablespace doit être géré localement.extent_management_clause :==

[ EXTENT MANAGEMENT

{ DICTIONARY | LOCAL

{ AUTOALLOCATE | UNIFORM [SIZE integer[K|M]] } } ]

où DICTIONARY indique que le tablespace est géré à l'aide de tables du dictionnaire de données (méthode par défaut).

LOCAL indique que le tablespace est géré localement à l'aide d'un bitmap.

AUTOALLOCATE indique que le tablespace est géré par le système (les utilisateurs ne peuvent pas définir de taille d'extent).

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Tablespaces gérés localement

• Réduction de la gestion récursive de l'espace

• Réduction de la contention des tablesdu dictionnaire de données

• Aucune information d'annulation générée

• Aucune fusion nécessaire

CREATE TABLESPACE user_data

DATAFILE '/DISK2/user_data_01.dbf'

SIZE 500M

EXTENT MANAGEMENT LOCAL

UNIFORM SIZE 10M;

CREATE TABLESPACE user_data

DATAFILE '/DISK2/user_data_01.dbf'

SIZE 500M

EXTENT MANAGEMENT LOCAL

UNIFORM SIZE 10M;

Page 262: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-14 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Syntaxe (suite)UNIFORM indique que le tablespace est géré à l'aide

d'extents de taille uniforme ayant la valeur SIZE, exprimée en octets. (Utilisez K ou M pour définir la taille d'extent en kilo-octets ou en mégaoctets. La taille par défaut est égale à un 1 Mo. Si vous définissez LOCAL, vous ne pouvez pas définir DEFAULT storage_clause, MINIMUM EXTENT ou TEMPORARY.)

La clause EXTENT MANAGEMENT peut être utilisée dans diverses commandes CREATE :

• Pour un tablespace permanent autre que le tablespace SYSTEM, vous pouvez définir EXTENT MANGEMENT LOCAL dans la commande CREATE TABLESPACE.

• S'il s'agit d'un tablespace temporaire, vous pouvez définir EXTENT MANGEMENT LOCAL dans la commande CREATE TEMPORARY TABLESPACE.

Avantages des tablespaces gérés localementLes tablespaces gérés localement présentent les avantages suivants par rapport aux tablespaces gérés à l'aide du dictionnaire de données :

• La gestion locale permet d'éviter les opérations récursives de gestion d'espace qui peuvent se produire avec les tablespaces gérés à l'aide du dictionnaire de données, lorsque l'utilisation ou la libération d'espace dans un extent provoque l'exécution d'une autre opération qui utilise ou libère l'espace dans un segment d'annulation ou une table du dictionnaire de données.

• Dans la mesure où les tablespaces gérés localement n'enregistrent pas l'espace libre dans des tables du dictionnaire de données, ils réduisent la contention au niveau des tables.

• La gestion locale des extents identifie automatiquement les espaces libres adjacents, ce qui évite d'avoir à fusionner les extents libres.

• Le système peut déterminer automatiquement la taille des extents gérés localement. D'autre part, tous les extents d'un tablespace géré localement peuvent avoir la même taille.

• La modification des bitmaps d'extent ne génère pas d'informations d'annulation, car elle ne met à jour aucune table dans le dictionnaire de données (sauf dans certains cas précis, tels que les informations sur les quotas de tablespace).

Page 263: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-15

.....................................................................................................................................................Tablespace temporaire

Tablespace temporaire

Segments temporairesVous pouvez gérer plus efficacement l'espace pour les opérations de tri en définissant des tablespaces temporaires réservés exclusivement aux segments de tri. Aucun objet de schéma permanent ne peut résider dans un tablespace temporaire.

Un segment de tri ou un segment temporaire est utilisé lorsqu'un segment est partagé par plusieurs opérations de tri. Les tablespaces temporaires améliorent les performances lorsque plusieurs tris ne peuvent tenir dans la mémoire. Le segment de tri d'un tablespace temporaire donné est créé lors de la première opération de tri dans l'instance. La taille du segment de tri augmente par allocation d'extents jusqu'à ce qu'elle soit égale ou supérieure au nombre total des demandes de stockage de tous les tris en cours exécutés dans l'instance.

Commande CREATE TEMPORARY TABLESPACE Bien que vous puissiez utiliser la commande ALTER/CREATE TABLESPACE...TEMPORARY pour créer un tablespace temporaire, il est recommandé d'utiliser la commande CREATE TEMPORARY TABLESPACE.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Tablespace temporaire

• Utilisé pour les opérations de tri

• Ne peut pas contenir d'objets permanents

• Extents gérés localement recommandés

• UNIFORM SIZE = SORT_AREA_SIZE * n

CREATE TEMPORARY TABLESPACE temp

TEMPFILE '/DISK2/temp_01.dbf'

SIZE 500M

EXTENT MANAGEMENT LOCAL

UNIFORM SIZE 10M;

CREATE TEMPORARY TABLESPACE temp

TEMPFILE '/DISK2/temp_01.dbf'

SIZE 500M

EXTENT MANAGEMENT LOCAL

UNIFORM SIZE 10M;

Page 264: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-16 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Commande CREATE TEMPORARY TABLESPACE (suite)Les tablespaces temporaires gérés localement contiennent des fichiers de données temporaires (tempfiles) semblables aux fichiers de données standard, à ceci près que :

• les fichiers temporaires sont toujours en mode NOLOGGING,

• les fichiers temporaires ne peuvent pas être en lecture seule,

• vous ne pouvez pas renommer un fichier temporaire,

• vous ne pouvez pas créer un fichier temporaire à l'aide de la commande ALTER DATABASE,

• la restauration physique ne permet pas de restaurer les fichiers temporaires,

• BACKUP CONTROLFILE ne génère pas d'informations pour les fichiers temporaires,

• CREATE CONTROLFILE ne permet pas de définir des informations sur les fichiers temporaires.

Pour optimiser les performances d'une opération de tri dans un tablespace temporaire, affectez au paramètre UNIFORM SIZE une valeur multiple de celle du paramètre SORT_AREA_SIZE.

Page 265: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-17

.....................................................................................................................................................Tablespace temporaire

Utiliser Oracle Enterprise Manager pour créer un tablespace temporaire1 Lancez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Sélectionnez le dossier Tablespaces, cliquez avec le bouton droit de la souris, puis sélectionnez Create dans le menu.

4 Dans la page General de la fenêtre de propriétés, entrez le nom du tablespace et sélectionnez le bouton d'option TEMPORARY.

5 Cliquez sur ADD pour afficher la fenêtre de propriétés Create Data file.

6 Définissez chaque fichier de données dans cette fenêtre.

7 Cliquez sur Create.

Page 266: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-18 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Modifier les paramètres de stockage

Modifier les paramètres de stockage par défautUtilisez la commande ALTER TABLESPACE pour modifier la définition de stockage par défaut d'un tablespace.

ALTER TABLESPACE tablespace

{ MINIMUM EXTENT integer[K|M]

| DEFAULT storage_clause }

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Modifier les paramètres de stockage

ALTER TABLESPACE app_data

MINIMUM EXTENT 2M;

ALTER TABLESPACE app_data

MINIMUM EXTENT 2M;

ALTER TABLESPACE app_data

DEFAULT STORAGE (

INITIAL 2M

NEXT 2M

MAXEXTENTS 999 );

Page 267: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-19

.....................................................................................................................................................Modifier les paramètres de stockage

Utiliser Oracle Enterprise Manager pour modifier les paramètres de stockage1 Lancez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez le dossier Tablespaces.

4 Sélectionnez le tablespace.

5 Entrez les informations de stockage dans la page Extents de la fenêtre de propriétés.

6 Cliquez sur Apply.

Page 268: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-20 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Mettre des tablespaces "offline" ou "online"

Mettre un tablespace "offline"Un tablespace est généralement "online", ce qui permet aux utilisateurs de la base de données d'accéder aux données qu'il contient. Toutefois, l'administrateur de base de données peut mettre un tablespace "offline" pour :

• rendre une partie de la base de données indisponible tout en permettant l'accès normal au reste de la base,

• sauvegarder un tablespace "offline" (bien qu'il soit possible de sauvegarder un tablespace pendant qu'il est "online" et en cours d'utilisation),

• restaurer un tablespace ou un fichier de données lorsque la base de données est ouverte,

• déplacer un fichier de données lorsque la base de données est ouverte.

Statut "offline" d'un tablespaceLorsque vous mettez un tablespace "offline", le serveur Oracle ne permet pas aux instructions SQL suivantes de faire référence aux objets contenus dans le tablespace. Dans ce cas, les utilisateurs qui tentent d'accéder à ces objets reçoivent un message d'erreur.

Lorsqu'un tablespace passe du statut "offline" au statut "online", ou inversement, l'événement est enregistré dans le dictionnaire de données et dans le fichier de contrôle. Si vous arrêtez la base de données alors qu'un tablespace est "offline", le tablespace reste "online" et n'est pas vérifié lorsque vous remontez et rouvrez la base de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Statut "offline"

• Tablespace "offline" non disponible pour accéderaux données,

• Certains tablespaces doivent être "online" :

– SYSTEM,

– tablespaces contenant des segmentsd'annulation actifs.

• Pour mettre un tablespace "offline" :

• Pour mettre un tablespace "online" :

ALTER TABLESPACE app_data OFFLINE;ALTER TABLESPACE app_data OFFLINE;

ALTER TABLESPACE app_data ONLINE;ALTER TABLESPACE app_data ONLINE;

Page 269: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-21

.....................................................................................................................................................Mettre des tablespaces "offline" ou "online"

Statut "offline" d'un tablespace (suite)L'instance de base de données Oracle met automatiquement "offline" un tablespace "online" lorsque certaines erreurs se produisent (par exemple, lorsque le processus DBW0 (Database Writer) ne parvient pas à plusieurs reprises à écrire dans un fichier de données du tablespace). Ces situations sont décrites en détail dans le cours Oracle DBA : Sauvegarde et restauration.

Mettre un tablespace "offline"Lorsque la base de données est ouverte, l'administrateur de base de données peut mettre n'importe quel tablespace "offline", à l'exception du tablespace SYSTEM ou des tablespaces dans lesquels des segments d'annulation ou des segments temporaires sont actifs. Lorsque vous mettez un tablespace "offline", le serveur Oracle met tous ses fichiers de données "offline".

ALTER TABLESPACE tablespace

{ONLINE

|OFFLINE [NORMAL|TEMPORARY|IMMEDIATE|FOR RECOVER]}

où NORMAL supprime de la mémoire SGA tous les blocs de tous les fichiers de données du tablespace. (Action par défaut ; il n'est pas nécessaire d'effectuer une restauration physique du tablespace avant de le remettre "online". Dans la mesure du possible, utilisez la clause NORMAL.)

TEMPORARY exécute un point de reprise pour tous les fichiers de données "online" du tablespace uniquement (les fichiers "offline" peuvent nécessiter une restauration physique).

IMMEDIATE ne garantit pas que les fichiers du tablespace sont disponibles et n'exécute pas de point de reprise (vous devez effectuer une restauration physique du tablespace avant de le remettre "online").

FOR RECOVER met les tablespaces "offline" pour récupérer les données jusqu'à un point dans le temps.

Page 270: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-22 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Utiliser Oracle Enterprise Manager pour mettre un tablespace "offline"1 Lancez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez le dossier Tablespaces.

4 Sélectionnez le tablespace.

5 Sélectionnez Take Offline—>Mode.

6 Cliquez sur Yes dans la boîte de dialogue.

Page 271: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-23

.....................................................................................................................................................Tablespaces accessibles en lecture seule

Tablespaces accessibles en lecture seule

Commande ALTER TABLESPACE...READ ONLYRendre accessible un tablespace en lecture seule permet d'empêcher les opérations d'écriture dans les fichiers de données du tablespace. En conséquence, les fichiers de données peuvent résider sur des supports accessibles en lecture seule, tels que des CD-ROM ou des lecteurs non réinscriptibles. Les tablespaces accessibles en lecture seule évitent d'avoir à sauvegarder de grandes sections de données statiques d'une base de données. Utilisez la commande SQL ALTER TABLESPACE pour rendre un tablespace accessible en lecture et écriture ou en lecture seule.

ALTER TABLESPACE tablespace READ [ONLY | WRITE]

Pour créer un tablespace accessible en lecture seule sur un lecteur non réinscriptible :

1 Lancez la commande ALTER TABLESPACE...READ ONLY.

2 Utilisez la commande de système d'exploitation appropriée pour transférer les fichiers de données d'un tablespace vers un lecteur accessible en lecture seule.

3 Lancez la commande ALTER TABLESPACE...RENAME DATAFILE.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Tablespaces accessibles en lecture seule

ALTER TABLESPACE app_data READ ONLY;ALTER TABLESPACE app_data READ ONLY;

• Tablespace disponible uniquement pour lesopérations de lecture.

• Impossible de supprimer les objets du tablespace.

• Pour créer un tablespace en lecture seule sur unlecteur non réinscriptible :

– ALTER TABLESPACE…READ ONLY;

– Placez le fichier de données sur le lecteur nonréinscriptible

– ALTER TABLESPACE…RENAME DATAFILE…;

Page 272: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-24 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Utiliser Oracle Enterprise Manager pour rendre un tablespace accessible en lecture seule1 Lancez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez le dossier Tablespaces.

4 Sélectionnez le tablespace.

5 Cliquez avec le bouton droit de la souris, puis sélectionnez Make Read-Only dans le menu.

6 Cliquez sur OK.

Page 273: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-25

.....................................................................................................................................................Tablespaces accessibles en lecture seule

Rendre des tablespaces accessibles en lecture seuleDans Oracle8i, la commande ALTER TABLESPACE ... READ ONLY place le tablespace dans un mode de lecture seule de transition. Ce mode ne permet pas d'effectuer des opérations d'écriture dans le tablespace, sauf pour annuler les transactions existantes qui ont préalablement modifié des blocs du tablespace. Une fois toutes les transactions existantes validées ou annulées, la commande ALTER TABLESPACE ... READ ONLY s'exécute et place le tablespace en lecture seule.

Pour les versions antérieures à Oracle8i, il est conseillé à l'administrateur de base de données de démarrer l'instance en mode restreint lors de la mise en mode lecture seule d'un tablespace, dans la mesure où un tablespace ne peut être mis en lecture seule lorsque des transactions sont en cours.

Vous pouvez supprimer des éléments, tels que des tables et des index, d'un tablespace accessible en lecture seule, car ces commandes n'affectent que le dictionnaire de données. Cela est possible parce que la commande DROP met à jour le dictionnaire de données, mais pas les fichiers physiques qui constituent le tablespace. Pour les tablespaces gérés localement, le segment supprimé est converti en segment temporaire pour éviter la mise à jour du bitmap.

Pour rendre accessible en lecture et écriture un tablespace qui est en lecture seule, tous ses fichiers de données doivent être "online".

La mise en lecture seule d'un tablespace crée un point de reprise dans les fichiers de données du tablespace.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Rendre un tablespaceaccessible en lecture seule

• Le tablespace doit être "online".

• Dans les versions antérieures à Oracle8i, aucunetransaction active n'est autorisée.

• Oracle8i permet d’exécuter les transactionsen cours.

• Le tablespace ne doit pas contenir de segmentsd'annulation actifs.

• Le tablespace ne doit pas être impliqué dansune sauvegarde "online".

Page 274: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-26 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Supprimer des tablespaces

Commande DROP TABLESPACE Vous pouvez supprimer un tablespace de la base de données lorsque le tablespace et son contenu sont devenus inutiles. Pour ce faire, utilisez la commande DROP TABLESPACE :

DROP TABLESPACE tablespace

[INCLUDING CONTENTS [CASCADE CONSTRAINTS]]

où tablespace correspond au nom du tablespace à supprimer.

INCLUDING CONTENTSsupprime tous les segments du tablespace.

CASCADE CONSTRAINTS

supprime les contraintes d'intégrité référentielles des tables en dehors du tablespace qui font référence aux clés primaires et uniques dans les tables du tablespace à supprimer.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Supprimer des tablespaces

DROP TABLESPACE app_data INCLUDING CONTENTS;DROP TABLESPACE app_data INCLUDING CONTENTS;

• Tablespace supprimé du dictionnaire de données.

• Eventuellement, contenu supprimé du dictionnairede données.

• Fichiers de système d'exploitation non supprimés.

Page 275: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-27

.....................................................................................................................................................Supprimer des tablespaces

Instructions• Un tablespace qui contient toujours des données ne peut pas être supprimé sans

l'option INCLUDING CONTENTS. Cette option peut générer un grand nombre d'annulations lorsque le tablespace contient de nombreux objets.

• Une fois le tablespace supprimé, ses données ne figurent plus dans la base de données.

• Lorsque vous supprimez un tablespace, seuls les pointeurs de fichier du fichier de contrôle de la base de données associée sont supprimés. Les fichiers de système d'exploitation existent toujours et doivent être supprimés explicitement à l'aide de la commande de système d'exploitation appropriée.

• Vous pouvez supprimer un tablespace et les segments qu'il contient, même si le tablespace est accessible en lecture seule.

• Il est recommandé de mettre "offline" le tablespace avant de le supprimer, afin d'empêcher d'éventuelles transactions d'accéder à ses segments.

Page 276: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-28 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Utiliser Oracle Enterprise Manager pour supprimer un tablespace1 Lancez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez le dossier Tablespaces, puis sélectionnez le tablespace.

4 Cliquez avec le bouton droit de la souris pour afficher le menu contextuel, puis sélectionnez Remove.

5 Cliquez sur Yes dans la boîte de dialogue pour confirmer la suppression.

Page 277: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-29

.....................................................................................................................................................Redimensionner un tablespace

Redimensionner un tablespace

Augmenter la taille d'un tablespaceVous pouvez augmenter la taille d'un tablespace de deux manières :

• en modifiant la taille d'un fichier de données automatiquement ou manuellement,

• en ajoutant un fichier de données au tablespace.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Redimensionner un tablespace

• Modification de la taille d'un fichier de données :

– automatique,

– manuelle.

• Ajout d'un fichier de données

Tablespace APP_DATA

100M

app_data_02.dbf100M

app_data_01.dbf100M

app_data_03.dbf200M

Page 278: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-30 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Activer le redimensionnement automatique des fichiers de données

Indiquer AUTOEXTEND pour un nouveau fichier de donnéesLa clause AUTOEXTEND active ou désactive l'augmentation automatique de la taille des fichiers de données.

Lors de la création d'un fichier de données, utilisez les commandes SQL suivantes pour activer l'augmentation automatique de la taille du fichier de données :

• CREATE DATABASE

• CREATE TABLESPACE ... DATAFILE

• ALTER TABLESPACE ... ADD DATAFILE

Utilisez la commande ALTER TABLESPACE pour ajouter un fichier de données lorsque l'augmentation automatique de taille de fichier est active.

ALTER TABLESPACE tablespace

ADD DATAFILE filespec [autoextend_clause]

[, filespec [autoextend_clause]]...

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Activer le redimensionnementautomatique des fichiers de données

ALTER TABLESPACE app_data

ADD DATAFILE '/DISK6/app_data_04.dbf'

SIZE 200M

AUTOEXTEND ON

NEXT 10M

MAXSIZE 500M;

Tablespace APP_DATA

app_data_02.dbf100M

app_data_01.dbf100M

app_data_04.dbf200M

app_data_03.dbf200M

Page 279: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-31

.....................................................................................................................................................Activer le redimensionnement automatique des fichiers de données

Indiquer AUTOEXTEND pour un nouveau fichier de données (suite)

autoextend_clause :== [ AUTOEXTEND { OFF|ON[NEXT integer[K|M]][MAXSIZE UNLIMITED | integer[K|M]] } ]

où AUTOEXTEND OFF désactive l'augmentation automatique de la taille du fichier de données.

AUTOEXTEND ON active l'augmentation automatique de la taille du fichier de données.

NEXT définit l'espace disque à allouer au fichier de données lorsque des extents supplémentaires sont nécessaires.

MAXSIZE définit l'espace disque maximum à allouer au fichier de données.

UNLIMITED ne définit aucune limite d'espace disque pour le fichier de données.

Indiquer AUTOEXTEND pour un fichier de données existantUtilisez la commande SQL ALTER DATABASE pour activer ou désactiver l'augmentation automatique de la taille des fichiers de données existants.

ALTER DATABASE [database]

DATAFILE 'filename'[, 'filename']...autoextend_clause

Page 280: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-32 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Utiliser Oracle Enterprise Manager pour activer le redimensionnement automatique1 Lancez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez le dossier Data files.

4 Sélectionnez le fichier de données.

5 Sous l'onglet Auto Extend de la fenêtre de propriétés, cochez la case Enable Auto Extend.

6 Cliquez sur Apply.

Page 281: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-33

.....................................................................................................................................................Redimensionner manuellement des fichiers de données

Redimensionner manuellement des fichiers de données

Commande ALTER DATABASE DATAFILE RESIZEAu lieu d'augmenter l'espace de la base de données en ajoutant des fichiers de données, l'administrateur de base de données peut modifier la taille d'un fichier de données. Utilisez la commande ALTER DATABASE pour augmenter ou diminuer manuellement la taille d'un fichier de données.

ALTER DATABASE [database]

DATAFILE 'filename'[, 'filename']...

RESIZE integer[K|M]

où integer correspond à la taille absolue, en octets, du fichier de données résultant.

S'il existe des objets de base de données ayant une taille supérieure à la taille définie, la taille du fichier de données est diminuée uniquement jusqu'au dernier bloc des derniers objets du fichier de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

ALTER DATABASE

DATAFILE '/DISK5/app_data_02.dbf'

RESIZE 200M;

ALTER DATABASE

DATAFILE '/DISK5/app_data_02.dbf'

RESIZE 200M;

Tablespace APP_DATA

100M

app_data_02.dbf100M

app_data_01.dbf100M

app_data_03.dbf200M

Redimensionner manuellementdes fichiers de données

app_data_04.dbf200M

Page 282: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-34 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Ajouter des fichiers de données à un tablespace

Utiliser la commande ALTER TABLESPACE ADD DATAFILEUtilisez la commande ALTER TABLESPACE ADD DATAFILE pour ajouter des fichiers de données à un tablespace et augmenter l'espace disque total du tablespace.

ALTER TABLESPACE tablespace

ADD DATAFILE filespec [autoextend_clause]

[, filespec [autoextend_clause]]...

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Ajouter des fichiers dedonnées à un tablespace

ALTER TABLESPACE app_data

ADD DATAFILE '/DISK5/app_data_03.dbf'

SIZE 200M;

ALTER TABLESPACE app_data

ADD DATAFILE '/DISK5/app_data_03.dbf'

SIZE 200M;

Tablespace APP_DATA

app_data_02.dbf100M

app_data_01.dbf100M

app_data_03.dbf200M

Page 283: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-35

.....................................................................................................................................................Ajouter des fichiers de données à un tablespace

Utiliser Oracle Enterprise Manager pour ajouter un fichier de données1 Lancez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez le dossier Tablespaces.

4 Sélectionnez Tablespace—>Add Datafile.

5 Entrez les informations relatives au fichier dans la page General de la fenêtre de propriétés.

6 Cliquez sur Create.

Page 284: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-36 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Déplacer des fichiers de données

Méthodes de déplacement des fichiers de donnéesSelon le type de tablespace, l'administrateur de base de données peut déplacer les fichiers de données de deux manières : à l'aide de la commande ALTER TABLESPACE ou de la commande ALTER DATABASE.

Utiliser la commande ALTER TABLESPACELa commande ALTER TABLESPACE suivante ne s'applique qu'aux fichiers de données d'un tablespace non SYSTEM ne contenant pas de segments d'annulation ni de segments temporaires actifs :

ALTER TABLESPACE tablespace

RENAME DATAFILE 'filename'[, 'filename']...

TO 'filename'[, 'filename']...

Pour renommer un fichier de données, procédez comme suit :

1 Mettez le tablespace "offline".

2 Utilisez la commande de système d'exploitation appropriée pour déplacer ou copier les fichiers.

3 Exécutez la commande ALTER TABLESPACE RENAME DATAFILE.

4 Placez le tablespace "online".

5 Utilisez la commande de système d'exploitation appropriée pour supprimer le fichier, si nécessaire.

Les noms de fichier source doivent correspondre à ceux stockés dans le fichier de contrôle.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Déplacer des fichiers de données :ALTER TABLESPACE

• Le tablespace doit être "offline".

• Les fichiers de données cible doivent exister.

ALTER TABLESPACE app_data

RENAME

DATAFILE '/DISK4/app_data_01.dbf'

TO '/DISK5/app_data_01.dbf';

ALTER TABLESPACE app_data

RENAME

DATAFILE '/DISK4/app_data_01.dbf'

TO '/DISK5/app_data_01.dbf';

Page 285: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-37

.....................................................................................................................................................Déplacer des fichiers de données

Utiliser la commande ALTER DATABASEUtilisez la commande ALTER DATABASE (voir le chapitre "Gérer les fichiers de journalisation") pour déplacer n'importe quel type de fichier de données.

ALTER DATABASE [database]

RENAME FILE 'filename'[, 'filename']...

TO 'filename'[, 'filename']...

Dans la mesure où le tablespace SYSTEM ne peut pas être mis "offline", vous devez utiliser cette méthode pour déplacer les fichiers de données du tablespace SYSTEM.

Pour renommer les fichiers des tablespaces qui ne peuvent pas être mis "offline", procédez comme suit :

1 Arrêtez la base de données.

2 Utilisez la commande de système d'exploitation appropriée pour déplacer les fichiers.

3 Montez la base de données.

4 Exécutez la commande ALTER DATABASE RENAME FILE.

5 Ouvrez la base de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Déplacer des fichiers de données : ALTER DATABASE

• La base de données doit être montée.

• Le fichier de données cible doit exister.

ALTER DATABASE

RENAME FILE '/DISK1/system_01.dbf'

TO '/DISK2/system_01.dbf';

ALTER DATABASE

RENAME FILE '/DISK1/system_01.dbf'

TO '/DISK2/system_01.dbf';

Page 286: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-38 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Utiliser Oracle Enterprise Manager pour ajouter un fichier de données1 Lancez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez le dossier Tablespaces et sélectionnez le fichier de données.

4 Mettez à jour les informations relatives au fichier dans la page General de la fenêtre de propriétés.

5 Cliquez sur Apply.

Remarque :

• Ces commandes vérifient l'existence du fichier dans le nouvel emplacement ; elles ne créent ni ne déplacent aucun fichier.

• Indiquez toujours des noms de fichier complet (avec le chemin) pour distinguer les nouveaux fichiers des anciens.

Page 287: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-39

.....................................................................................................................................................Informations du dictionnaire de données

Informations du dictionnaire de données

Joindre les vues du dictionnaire de donnéesLes vues des performances sont créées à partir des informations du fichier de contrôle. Pour joindre la vue V$TABLESPACE et la vue V$DATAFILE ou V$TEMPFILE, joignez les vues dans la colonne TS# (numéro de tablespace).

Pour joindre les vues du dictionnaire de données sur les tablespaces et celles sur les fichiers de données, joignez les tables sur le nom du tablespace.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Obtenir des informationssur les tablespaces

• Informations de tablespace :

– DBA_TABLESPACES

– V$TABLESPACE

• Informations de fichier de données :

– DBA_DATA_FILES

– V$DATAFILE

• Informations de fichier temporaire :

– DBA_TEMP_FILES

– V$TEMPFILE

Page 288: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-40 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Instructions

Utiliser plusieurs tablespacesUtilisez plusieurs tablespaces pour faciliter les opérations de gestion de la base de données.

• Séparez les données utilisateur de celles du dictionnaire de données.

• Séparez les segments de données des segments d'index.

• Séparez les données d'application.

• Stockez les fichiers de données des différents tablespaces sur des disques distincts afin de réduire les problèmes de contention d'entrée/sortie.

• Séparez le segment d'annulation des segments de données pour éviter qu'une défaillance de disque ne provoque la perte définitive des données.

• Placez des tablespaces "offline" et maintenez les autres "online".

• Réservez des tablespaces aux opérations spéciales sur la base de données, telles que les longues mises à jour, les longues opérations en lecture seule ou le stockage des segments temporaires.

• Sauvegardez chaque tablespace.

Définir les paramètres de stockage du tablespacePrécisez les paramètres de stockage par défaut d'un tablespace pour tenir compte de la taille d'un objet type qui sera créé dans le tablespace.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Instructions

• Utiliser plusieurs tablespaces.

• Définir les paramètres par défaut destablespaces.

• Affecter des quotas de tablespaces auxutilisateurs.

• Inclure le chemin du répertoire dans lesnoms de fichier.

• Utiliser MINIMUM EXTENTS.

• Utiliser des extents gérés localement.

• Possibilité de définir jusqu'à 1023 fichiersde données par tablespace.

Page 289: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-41

.....................................................................................................................................................Instructions

Affecter des quotas de tablespace aux utilisateursEn fonction des besoins, affectez des quotas de tablespace aux utilisateurs de la base de données.

Inclure le chemin du répertoire dans les noms de fichierLorsque vous créez ou renommez des fichiers de données, indiquez le nom complet des fichiers, car sinon, le serveur Oracle crée les fichiers de données dans le répertoire par défaut du serveur de bases de données.

Utiliser MINIMUM EXTENTS pour contrôler la fragmentationL'option MINIMUM EXTENT permet à l'administrateur de base de données de contrôler la fragmentation du tablespace. Cette option s'applique uniquement aux tablespaces, non aux objets de stockage.

LimitesLe nombre maximum de tablespaces par base de données correspond à un espace de 64 ko.

Le nombre maximum de fichiers de données que peut contenir un tablespace est égal à 1023 fichiers, mais cette limite varie en fonction du système d'exploitation.

Page 290: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-42 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Synthèse

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Synthèse

Ce chapitre vous a permis d'apprendre :

• à utiliser les tablespaces pour séparerles données,

• à redimensionner les tablespaces :

– en ajoutant des fichiers de données,

– en augmentant la taille des fichiersde données,

• à utiliser des tablespaces gérés localement,

• à utiliser des tablespaces temporaires.

Page 291: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 8-43

.....................................................................................................................................................Synthèse

Pour référence

Contexte RéférenceParamètres d'initialisation DB_FILESVues dynamiques des performances

V$DATAFILE

V$TEMPFILE

V$TABLESPACEVues du dictionnaire de données

DBA_DATA_FILES

DBA_TABLESPACES

DBA_TEMP_FILESCommandes CREATE TABLESPACE ... DATAFILE ...

DEFAULT STORAGE...MINIMUM EXTENT

CREATE TEMPORARY TABLESPACE

CREATE TABLESPACE ... DATAFILE AUTOEXTEND

ALTER TABLESPACE ... ADD DATAFILE ... AUTOEXTEND

ALTER DATABASE DATAFILE ... RESIZE

ALTER TABLESPACE...DEFAULT STORAGE...

MINIMUM EXTENT

ALTER TABLESPACE ... RENAME DATAFILE...

ALTER DATABASE RENAME FILE...

ALTER TABLESPACE ... READ ONLY

ALTER TABLESPACE ... READ WRITE

ALTER TABLESPACE ... OFFLINE

DROP TABLESPACEProcédures et fonctionsde package

Aucune

Page 292: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................8-44 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 8 : Gérer les tablespaces et les fichiers de données

Page 293: Oracle DBA - Architecture & Administration Vol.1

.................................

9

Structure de stockageet relations

Page 294: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................9-2 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 9 : Structure de stockage et relations

Objectifs

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Objectifs

A la fin de ce chapitre, vous pourrez :

• décrire la structure logique de la base de données,

• énumérer les types de segment et expliquer leurfonction,

• énumérer les mots-clés qui contrôlent l'utilisationde l'espace des blocs,

• obtenir des informations sur les structures destockage à partir du dictionnaire de données,

• énumérer les critères de séparation des segments.

Page 295: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 9-3

.....................................................................................................................................................Présentation

Présentation

Architecture de base de donnéesLe chapitre précédent portait sur la structure de stockage d'une base de données, de ses tablespaces et de ses fichiers de données. Ce chapitre prolonge la description de la structure de stockage d'une base de données et aborde plus particulièrement les segments, les extents (ensemble de blocs contigus) et les blocs de données.

Remarque : les commandes et les instructions de gestion des différents types de segment sont expliquées en détail dans le cours Oracle8 for Developers.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Présentation

Base de données

Logique Physique

TablespaceFichier

de données

Segment

Extent

Bloc Oracle Bloc de système d'exploitation

Page 296: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................9-4 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 9 : Structure de stockage et relations

Types de segment

SegmentsLes segments sont des objets qui occupent de l'espace dans une base de données. Ils utilisent de l'espace dans les fichiers de données d'une base de données. Cette section décrit les différents types de segment.

TableLes données d'une base sont généralement stockées dans une table. Un segment de table stocke les données d'une table qui n'est ni incluse dans un cluster, ni partitionnée. Les données d'un segment de table ne sont pas stockées dans un ordre spécifique et l'administrateur de la base de données a un contrôle très limité sur l'emplacement des lignes dans les blocs d'une table. Toutes les données d'un segment de table doivent être stockées dans un seul tablespace.

Partition de tableL'évolutivité et la disponibilité sont des éléments très importants à prendre en compte lorsqu'une table de base de données sera utilisée simultanément par de nombreux utilisateurs. Dans ce cas, les données de la table peuvent être stockées dans plusieurs partitions, chacune se trouvant dans un tablespace différent. Le serveur Oracle prend en charge actuellement le partitionnement à l'aide d'une série de valeurs de clés ou d'un algorithme de hachage. Lorsqu'une table est partitionnée, chacune de ses partitions constitue un segment qui peut être contrôlé de manière indépendante à l'aide de paramètres de stockage. L'utilisation de ce type de segment requiert l'option Partitioning d'Oracle8i Enterprise Edition.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Types de segment

Table

Cluster

Partition de table

Index

Page 297: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 9-5

.....................................................................................................................................................Types de segment

ClusterUn cluster, comme une table, est un type de segment de données. Les lignes d'un cluster sont stockées en fonction des valeurs des colonnes de clés. Un cluster peut contenir une ou plusieurs tables. Les tables d'un cluster appartiennent au même segment et partagent les mêmes caractéristiques de stockage. Les lignes d'une table incluse dans un cluster sont accessibles à l'aide d'un index ou d'un algorithme de hachage.

IndexToutes les entrées d'un index spécifique sont stockées dans un seul segment d'index. Si une table possède trois index, trois segments d'index sont utilisés. Le segment d'index permet de rechercher l'emplacement des lignes dans une table en fonction d'une clé spécifiée.

Page 298: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................9-6 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 9 : Structure de stockage et relations

Table organisée en indexLes données d'une table organisée en index sont stockées dans l'index en fonction de la valeur de clé. Une table organisée en index ne nécessite pas l'exécution d'une opération de recherche, car toutes les données peuvent être extraites directement à partir de l'arborescence d'index.

Partition d'indexUn index peut être partitionné et réparti dans plusieurs tablespaces. Dans ce cas, chaque partition de l'index correspond à un segment et ne peut pas être répartie dans plusieurs tablespaces. Un index partitionné est utilisé principalement pour réduire la contention en répartissant les entrées/sorties d'index. Ce type de segment requiert l'option Partitioning d'Oracle8i Enterprise Edition.

Segment d'annulation (rollback segment)Un segment d'annulation est utilisé par une transaction qui effectue des modifications dans une base de données. Avant toute modification des blocs de données ou d'index, l'ancienne valeur est stockée dans le segment d'annulation pour permettre à l'utilisateur d'annuler les modifications, s'il le souhaite.

Segment temporaireLorsque l'utilisateur exécute des commandes, telles que CREATE INDEX, SELECT DISTINCT et SELECT GROUP BY, le serveur Oracle tente d'effectuer des tris dans la mémoire. Lorsqu'un tri nécessite plus d'espace disponible que n'en contient la mémoire, des résultats intermédiaires sont écrits sur le disque. Les segments temporaires permettent de stocker ces résultats intermédiaires.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Types de segment

Table organiséeen index

Partition d'index

Segmentd'annulation

Segmenttemporaire

Page 299: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 9-7

.....................................................................................................................................................Types de segment

Segment LOBUne ou plusieurs colonnes d'une table peuvent être utilisées pour stocker les objets LOB (Large Object), tels que des documents texte, des images ou des données vidéo. Si la colonne est large, le serveur Oracle enregistre ces valeurs dans des segments distincts appelés segments LOB. La table contient uniquement un pointeur vers l'emplacement des données LOB correspondantes.

Index LOBUn segment d'index LOB est créé implicitement en même temps qu'un segment LOB. L'index LOB permet de rechercher des valeurs de colonne LOB spécifiques.

Table imbriquéeUne colonne d'une table peut être constituée d'une table définie par l'utilisateur, comme dans le cas d'articles d'une commande. Dans ce cas, la table interne, appelée table imbriquée, est stockée sous forme de segment distinct. L'utilisation de tables imbriquées requiert l'option Objects d'Oracle8i Enterprise Edition.

Segment de bootstrapUn segment de bootstrap, appelé également segment de cache, est créé par le script sql.bsq en même temps que la base de données. Ce segment permet d'initialiser le cache du dictionnaire de données à l'ouverture de la base de données par une instance.

Le segment de bootstrap ne peut pas être interrogé, ni mis à jour et ne nécessite aucune opération de maintenance de la part de l'administrateur de la base de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Types de segment

Index LOBSegmentLOB

Segment debootstrap

Tableimbriquée

Page 300: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................9-8 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 9 : Structure de stockage et relations

Priorité des clauses de stockage

Paramètres de stockageUne clause de stockage peut être définie au niveau du segment afin de contrôler le mode d'allocation des extents à un segment.

• Tout paramètre de stockage défini au niveau du segment annule l'option correspondante définie au niveau du tablespace, sauf pour les paramètres de tablespace MINIMUM EXTENT et UNIFORM SIZE.

• Lorsque des paramètres de stockage ne sont pas définis explicitement au niveau du segment, les paramètres définis au niveau du tablespace sont utilisés par défaut.

• Lorsque les paramètres de stockage ne sont pas définis explicitement au niveau du tablespace, les paramètres système du serveur Oracle sont utilisés par défaut.

Autres considérations• Si vous modifiez des paramètres de stockage, les nouvelles valeurs s'appliquent

uniquement aux extents non alloués.

• Certains paramètres ne peuvent pas être définis au niveau du tablespace. Ils doivent l'être au niveau du segment uniquement.

• Si vous avez défini une taille minimum d'extent pour le tablespace, cette taille s'appliquera par la suite à tous les extents alloués à des segments du tablespace.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Priorité des clauses de stockage

Défaut Oracle

Tablespace

Segment

Page 301: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 9-9

.....................................................................................................................................................Allouer et libérer des extents

Allouer et libérer des extents

Redimensionner des segments d'annulationLe redimensionnement des segments d'annulation est expliqué en détail dans le chapitre "Gérer les segments d'annulation".

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Allouer et libérer des extents

• Allocation lorsque le segment est :

– créé,

– étendu,

– modifié.

• Libération lorsque le segment est :

– supprimé,

– modifié,

– tronqué,

– redimensionné automatiquement(segments d'annulation uniquement).

Page 302: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................9-10 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 9 : Structure de stockage et relations

Extents utilisés et libres

ExtentsLorsqu'un tablespace est créé, ses fichiers de données contiennent les éléments suivants :

• un bloc d'en-tête qui est le premier bloc du fichier,

• un extent libre contenant le reste du fichier de données.

Au fur et à mesure que des segments sont créés, de l'espace provenant des extents libres du tablespace leur est alloué. Des espaces contigus utilisés par un segment constituent un extent utilisé. Lorsque des segments libèrent de l'espace, les extents libérés sont ajoutés au pool d'extents libres du tablespace. L'allocation et la libération fréquentes d'extents peuvent provoquer une fragmentation de l'espace dans les fichiers de données du tablespace.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Extents utilisés et libres

Fichier de données

Extent libreExtent utiliséEn-tête de fichier

Page 303: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 9-11

.....................................................................................................................................................Utiliser les paramètres d'utilisation de l'espace de bloc

Utiliser les paramètres d'utilisation de l'espace de bloc

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Bloc de base de données

• Unité minimum d'entrée/sortie

• Constitué d'un ou de plusieurs blocs de systèmed'exploitation

• Défini par DB_BLOCK_SIZE

• Défini lors de la création de la base de données

Page 304: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................9-12 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 9 : Structure de stockage et relations

Blocs de donnéesLes blocs de données Oracle contiennent :

• un en-tête de bloc : l'en-tête contient l'adresse du bloc de données, l'espace des tables, l'espace des lignes et l'espace de transaction utilisé lorsque les transactions modifient des lignes du bloc. La taille des en-têtes de bloc augmente de haut en bas.

• Espace de données : les données de ligne sont insérées dans le bloc de bas en haut.

• Espace libre : l'espace libre d'un bloc se situe au milieu, ce qui permet à l'espace d'en-tête et à l'espace de données de ligne de s'étendre lorsque cela s'avère nécessaire. Au départ, les espaces libres d'un bloc sont contigus. Toutefois, les suppressions et les mises à jour fragmentent l'espace libre d'un bloc. Les espaces libres d'un bloc sont fusionnés par le serveur Oracle en cas de nécessité.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Contenu d'un bloc de base de données

En-tête

Espace libre

Données

Page 305: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 9-13

.....................................................................................................................................................Utiliser les paramètres d'utilisation de l'espace de bloc

Paramètres d'utilisation de l'espace de blocLes paramètres d'utilisation de l'espace de bloc permettent de contrôler l'utilisation de l'espace dans les segments de données et les segments d'index.

Paramètres de contrôle de la simultanéité d'accès aux donnéesLes paramètres INITRANS et MAXTRANS définissent le nombre initial et le nombre maximum d'espaces de transaction d'un bloc d'index ou d'un bloc de données. Les espaces de transaction permettent également stocker des informations sur les transactions qui modifient le bloc à un point dans le temps. Une transaction n'utilise qu'un seul espace de transaction, même si elle modifie plusieurs lignes ou entrées d'index.

Le paramètre INITRANS, dont la valeur par défaut est 1 pour les segments de données et 2, pour les segments d'index, garantit un niveau minimum de simultanéité d'accès aux données. Par exemple, si vous lui affectez la valeur 3, le paramètre INITRANS permet à trois transactions au moins de modifier simultanément le bloc. Si nécessaire, vous pouvez allouer des espaces de transaction supplémentaires en utilisant l'espace libre du bloc afin de permettre à un plus grand nombre de transactions de modifier simultanément des lignes du bloc.

Le paramètre MAXTRANS, dont la valeur par défaut est 255, définit le nombre maximum de transactions pouvant modifier simultanément un bloc de données ou un bloc d'index. Cette valeur limite l'espace utilisé dans le bloc par les espaces de transaction et garantit ainsi un espace disponible suffisant pour les données de ligne et d'index.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Paramètres d'utilisationde l'espace de bloc

INITRANS

MAXTRANS

PCTFREE

PCTUSED

Page 306: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................9-14 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 9 : Structure de stockage et relations

Paramètres de gestion de l'utilisation de l'espace de donnéesLe paramètre PCTFREE d'un segment de données définit, pour chaque bloc de données, le pourcentage d'espace réservé à l'augmentation de la taille du bloc résultant des mises à jour des lignes du bloc. La valeur par défaut du paramètre PCTFREE est 10.

Le paramètre PCTUSED d'un segment de données correspond au pourcentage minimum d'espace utilisé que le serveur Oracle essaie de maintenir pour chaque bloc de données de la table. Un bloc est replacé dans la liste d'espaces libres lorsque la quantité d'espace utilisé qu'il contient est inférieure à la valeur du paramètre PCTUSED. La liste d'espaces libres d'un segment est la liste des blocs qui pourront être utilisés pour des insertions. Par défaut, un segment est créé avec une seule liste d'espaces libres. Vous pouvez définir un plus grand nombre de listes d'espaces libres pour un segment à l'aide du paramètre FREELISTS de la clause de stockage. La valeur par défaut du paramètre PCTUSED est 40.

Les paramètres PCTFREE et PCTUSED représentent le pourcentage d'espace de données disponible, à savoir l'espace restant une fois l'espace d'en-tête déduit de la taille totale du bloc.

Vous ne pouvez définir les paramètres d'utilisation d'espace de bloc que pour les segments et ces paramètres ne peuvent pas être définis au niveau du tablespace.

Remarque : l'utilisation de ces paramètres avec les index est expliquée en détail dans le chapitre "Gérer les index".

La définition du paramètre FREELISTS est expliquée en détail dans le cours Oracle DBA : Tuning.

Page 307: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 9-15

.....................................................................................................................................................Utiliser les paramètres d'utilisation de l'espace de bloc

Utilisation de l'espace de blocLes étapes suivantes expliquent comment l'espace d'un bloc est géré pour un segment de données à l'aide des paramètres PCTFREE=20 et PCTUSED=40 :

1 Des lignes sont insérées dans le bloc jusqu'à ce que l'espace libre du bloc soit égal ou inférieur à 20 %. L'insertion de nouvelles lignes dans le bloc n'est plus possible lorsque les lignes occupent au moins 80 % (100 –PCTFREE) de l'espace de données disponible du bloc.

2 Les 20 % restants peuvent être utilisés lorsque la taille d'une ligne augmente. Par exemple, une colonne NULL au départ est mise à jour par l'affectation d'une valeur. Ainsi, le taux d'utilisation du bloc peut dépasser 80 % à la suite de mises à jour.

3 Si des lignes du bloc sont supprimées ou que leur taille diminue à la suite de mises à jour, le taux d'utilisation du bloc peut passer en dessous de 80 %. Toutefois, aucune ligne n'est insérée dans un bloc tant que le taux d'utilisation de ce dernier n'est pas inférieur à la valeur de PCTUSED, soit 40 %, dans notre exemple.

4 Lorsque le taux d'utilisation est inférieur à la valeur du paramètre PCTUSED, le bloc peut à nouveau recevoir des lignes. Au fur et à mesure que des lignes sont insérées dans le bloc, le taux d'utilisation du bloc augmente et le cycle redémarre à partir de l'étape 1.

Remarque : les instructions de définition des paramètres PCTFREE et PCTUSED sont décrites en détail dans les chapitres relatifs aux tables et index, respectivement "Gérer les tables" et "Gérer les index".

Copyright Oracle Corporation, 1999. All rights reserved.®

Block Space Usage

Inserts

Inserts

Inserts

Inserts

1 2

3 4

PCTFREE=20 PCTUSED=40

80%

80%

40%

Page 308: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................9-16 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 9 : Structure de stockage et relations

Obtenir des informations sur les structures de stockage

Interroger le dictionnaire de donnéesVous pouvez visualiser les relations entre les tablespaces, les fichiers de données, les segments et les extents libres et utilisés en interrogeant le dictionnaire de données.

Lorsque vous créez un tablespace comportant un ou plusieurs fichiers, une ligne est ajoutée à la vue DBA_TABLESPACES. Pour chaque fichier de la base de données, une ligne est ajoutée à la vue DBA_DATA_FILES. A ce stade, l'espace de chaque fichier de données, en-tête exclu, correspond à un seul extent libre dans la vue DBA_FREE_SPACE.

Lors de la création d'un segment, une ligne est visible dans la vue DBA_SEGMENTS. L'espace alloué aux extents de ce segment est visible dans la vue DBA_EXTENTS, tandis que la vue DBA_FREE_SPACE est ajustée afin d'indiquer une quantité d'espace libre moindre dans les fichiers dans lesquels les extents ont été créés pour le segment.

La totalité de l'espace du fichier (en-tête de bloc exclu) doit être prise en compte dans la vue DBA_FREE_SPACE ou DBA_EXTENTS.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Vues du dictionnaire de données

TablespacesDBA_TABLESPACES

SegmentsDBA_SEGMENTS

Fichiers de donnéesDBA_DATA_FILES

Extents libresDBA_FREE_SPACE

Extents utilisésDBA_EXTENTS

Page 309: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 9-17

.....................................................................................................................................................Interroger la vue DBA_SEGMENTS

Interroger la vue DBA_SEGMENTS

DBA_SEGMENTSInterrogez la vue DBA_SEGMENTS afin d'obtenir le nombre d'extents et de blocs alloués à un segment.

SQL> SELECT segment_name,tablespace_name,extents,blocks

2 FROM dba_segments

3 WHERE owner='SCOTT';

SEGMENT_NAME TABLESPACE_NAME EXTENTS BLOCKS

------------ --------------- -------- --------

EMP DATA01 5 55

DEPT DATA01 1 5

BONUS DATA01 1 5

SALGRADE DATA01 1 5

5 rows selected.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Interroger la vue DBA_SEGMENTS

• Informations générales

– OWNER

– SEGMENT_NAME

– SEGMENT_TYPE

– TABLESPACE_NAME

• Taille

– EXTENTS

– BLOCKS

– BYTES

• Paramètres de stockage

– INITIAL_EXTENT

– NEXT_EXTENT

– MIN_EXTENTS

– MAX_EXTENTS

– PCT_INCREASE

• Autres informations

– Emplacement

– Réglage

Page 310: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................9-18 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 9 : Structure de stockage et relations

Interroger la vue DBA_EXTENTS

DBA_EXTENTSInterrogez la vue DBA_EXTENTS afin d'obtenir les extents pour un segment donné.

SQL> SELECT extent_id,file_id,block_id,blocks

2 FROM dba_extents

3 WHERE owner='SCOTT'

4 AND segment_name='EMP';

EXTENT_ID FILE_ID BLOCK_ID BLOCKS

--------- ------- -------- ------

0 4 2 5

1 4 27 5

2 4 32 10

3 4 42 15

4 4 57 20

5 rows selected.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Interroger la vue DBA_EXTENTS

• Identification

– OWNER

– SEGMENT_NAME

– EXTENT_ID

• Taille

– BLOCKS

– BYTES

• Emplacement

– TABLESPACE_NAME

– RELATIVE_FNO

– FILE_ID

– BLOCK_ID

Page 311: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 9-19

.....................................................................................................................................................Interroger la vue DBA_FREE_SPACE

Interroger la vue DBA_FREE_SPACE

DBA_FREE_SPACEInterrogez la vue DBA_FREE_SPACE afin d'obtenir les extents pour un segment donné.

SQL> SELECT tablespace_name, count(*),

2 max(blocks), sum(blocks)

3 FROM dba_free_space

4 GROUP BY tablespace_name;

TABLESPACE_NAME COUNT(*) MAX(BLOCKS SUM(BLOCKS

--------------- -------- ---------- ----------

DATA01 2 1284 1533

RBS 3 2329 2419

SORT 1 1023 1023

SYSTEM 1 5626 5626

TEMP 1 2431 2431

5 rows selected.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Interroger la vue DBA_FREE_SPACE

• Emplacement

– TABLESPACE_NAME

– RELATIVE_FNO

– FILE_ID

– BLOCK_ID

• Taille

– BYTES

– BLOCKS

Page 312: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................9-20 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 9 : Structure de stockage et relations

Planifier l'emplacement des segments

FragmentationLa propension des segments à la fragmentation dépend du type de segment. Il est recommandé de placer les segments dans différents tablespaces afin de réduire l'espace perdu.

Types d'objet et fragmentationLa structure recommandée des tablespaces, leur utilisation et leur propension à la fragmentation sont indiquées dans le tableau ci-dessus. Les différents types d'objet sont classés ci-dessous par ordre croissant de leur propension à la fragmentation :

• Les objets du dictionnaire de données, à l'exception de la table d'audit, ne sont jamais supprimés, ni tronqués. Par conséquent, ils ne sont pas susceptibles de fragmenter le tablespace.

• L'espace utilisé pour les référentiels d'applications, telles qu'Oracle Enterprise Manager et Oracle Designer, n'est libéré que lors de la réorganisation de ces structures. Etant donné que ces tables sont rarement réorganisées, ces objets ont une très faible propension à la fragmentation.

• Les segments de données et d'index utilisés pour les applications écrites par l'utilisateur peuvent nécessiter une réorganisation plus fréquente que les référentiels. Ils ont une plus forte propension à se fragmenter que les référentiels d'applications.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Organiser les tablespaces en fonctionde leur propension à la fragmentation

Tablespace

SYSTEM

TOOLS

DATAn

INDEXn

RBSn

TEMPn

Fragmentation

Zéro

Très faible

Faible

Faible

Elevée

Très élevée*

Utilisation

Dictionnaire de données

Applications

Segments de données

Segments d'index

Segments d'annulation

Segments temporaires

* Uniquement si le tablespace est PERMANENT

Page 313: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 9-21

.....................................................................................................................................................Planifier l'emplacement des segments

Types d'objet et fragmentation (suite)• Etant donné que les segments d'annulation peuvent libérer automatiquement les

extents, ils sont susceptibles de provoquer des fragmentations dans un système dont les données sont fréquemment mises à jour.

• Les segments temporaires des tablespaces permanents peuvent libérer fréquemment de l'espace et doivent donc être placés dans des tablespaces distincts.

Impact de la durée de vie d'un segmentLa durée de vie des segments dans une base de données varie en fonction des segments. Par exemple, dans un environnement de projet, dans une société de développement de logiciels, par exemple, il peut être nécessaire de purger toutes les données associées à une application une fois le développement de l'application terminé. L'utilisation d'un ensemble de tablespaces distinct pour ces segments peut faciliter les opérations de nettoyage. A la fin du projet, l'ensemble des tablespaces peut être sauvegardé et supprimé pour libérer de l'espace pour les autres applications qui utilisent la base de données.

Autres critères d'organisation des tablespaces L'administrateur de la base de données peut également séparer les tablespaces pour :

• gérer l'allocation d'espace et affecter des limites d'utilisation de l'espace aux utilisateurs,

• contrôler la disponibilité des données en plaçant des tablespaces "online" ou "offline",

• répartir le stockage des données entre les unités pour améliorer les performances des opérations d'entrée/sortie et réduire la contention sur un disque unique,

• effectuer des sauvegardes et des restaurations partielles,

• conserver de gros volumes de données statiques sur des unités accessibles en lecture seule.

Page 314: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................9-22 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 9 : Structure de stockage et relations

Synthèse

Pour référence

Contexte RéférenceParamètres d'initialisation DB_BLOCK_SIZEVues dynamiques des performances AucuneVues du dictionnaire de données DBA_TABLESPACES

DBA_DATA_FILES

DBA_SEGMENTS

DBA_EXTENTS

DBA_FREE_SPACE

DBA_FREE_SPACE_COALESCED

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Synthèse

Ce chapitre vous a permis d'apprendre :

• à utiliser les tablespaces pour :

– séparer les segments afin de faciliterl'administration,

– gérer l'allocation d'espace aux utilisateurs.

• à classer les segments en catégories en fonctiondu type d'information qu'ils contiennent,

• à déterminer la taille des extents à l'aide dela clause de stockage,

• à gérer l'utilisation de l'espace des blocs.

Page 315: Oracle DBA - Architecture & Administration Vol.1

.................................

10

Gérer les segmentsd'annulation

Page 316: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-2 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Objectifs

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Objectifs

A la fin de ce chapitre, vous pourrez :

• créer des segments d'annulation en utilisantles paramètres de stockage appropriés,

• gérer les segments d'annulation,

• planifier le nombre de segments d'annulationet leur taille,

• obtenir des informations sur les segmentsd'annulation à partir du dictionnaire de données,

• résoudre les problèmes courants relatifs auxsegments d'annulation.

Page 317: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-3

.....................................................................................................................................................Présentation

Présentation

Présentation du chapitreUn segment d'annulation (rollback segment) permet d'enregistrer l'ancienne valeur lorsqu'un processus modifie les données d'une base de données. Il enregistre l'emplacement des données et les données qui existaient avant la modification.

L'en-tête d'un segment d'annulation contient la table des transactions dans laquelle sont enregistrées les informations sur les transactions en cours associées au segment d'annulation.

Une transaction stocke l'ensemble de ses enregistrements d'annulation dans un seul segment d'annulation.

Plusieurs transactions simultanées peuvent écrire des données dans un même segment d'annulation.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Segment d'annulation

Transactionde mise à jour

Ancienneimage

Nouvelleimage

Segmentd'annulation

Table

Page 318: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-4 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Segments d'annulation

Annuler une transactionLorsqu'une transaction modifie une ligne dans une table, l'ancienne image est enregistrée dans le segment d'annulation. En cas d'annulation de la transaction, le serveur Oracle restaure la valeur d'origine en la réécrivant dans la ligne du segment d'annulation.

Récupérer une transactionSi l'instance échoue lorsque des transactions sont en cours, le serveur Oracle, lors de la réouverture de la base de données, doit annuler les modifications non validées. L'annulation fait partie de la récupération de la transaction. La récupération est possible uniquement dans la mesure où les modifications effectuées dans le segment d'annulation sont également protégées par les fichiers de journalisation (redo log).

Cohérence en lectureLorsque des transactions sont en cours, les autres utilisateurs de la base de données ne doivent pas voir les modifications non validées effectuées par ces transactions. En outre, une instruction ne doit pas voir les modifications validées après le début de son exécution. Les anciennes valeurs des segments d'annulation sont également utilisées pour fournir aux lecteurs une image cohérente d'une instruction donnée.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Segments d'annulation : fonction

Annulationde transaction

Récupérationde transaction

Segmentd'annulation

Cohérenceen lecture

Page 319: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-5

.....................................................................................................................................................Segments d'annulation

Cohérence en lecture (suite)Le serveur Oracle permet à une instruction de voir les données de manière cohérente à un instant donné, même si celles-ci sont modifiées par d'autres transactions.

Lorsque le serveur Oracle commence à exécuter l'instruction SELECT, il détermine le numéro SCN en cours et s'assure que les modifications non validées avant ce numéro ne sont pas traitées par l'instruction. Supposons qu'une longue interrogation soit exécutée alors que plusieurs modifications sont en cours. Si un bloc contient des modifications non validées au début de l'interrogation, le serveur Oracle crée une image cohérente en lecture du bloc en extrayant l'image avant modifications depuis le segment d'annulation et en appliquant les modifications à une copie du bloc en mémoire.

Cohérence en lecture d'une transactionUne instruction SQL est toujours cohérente en lecture. Toutefois, vous pouvez demander la cohérence en lecture d'une transaction en lecture seule en exécutant la commande suivante au début de la transaction :

SET TRANSACTION READ ONLY;

Vous pouvez également demander la cohérence en lecture d'une transaction lançant LMD en exécutant la commande suivante au début de la transaction :

SET TRANSACTION SERIALIZABLE;

Dans les deux cas, le serveur Oracle fournit des données lues de manière cohérente dès le début de la transaction. L'utilisation de la commande SERIALIZABLE peut avoir un impact négatif sur les performances.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Cohérence en lecture

Image au début de l'instruction

Nouvelle image

Table

SELECT * FROM table

Page 320: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-6 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Segment d'annulation SYSTEMLe segment d'annulation SYSTEM est créé dans le tablespace SYSTEM lors de la création de la base de données. Ce segment d'annulation ne peut être utilisé que pour traiter les modifications apportées aux objets du tablespace SYSTEM.

Segments d'annulation non SYSTEMUne base de données disposant de plusieurs tablespaces doit avoir au moins un segment d'annulation non SYSTEM. Un segment d'annulation non SYSTEM, créé par l'administrateur de base de données, peut être utilisé pour traiter les modifications apportées aux objets des tablespaces non SYTEM. Il existe deux types de segment d'annulation non SYSTEM.

Privés Les segments d'annulation privés sont des segments mis "online" par une instance parce qu'ils sont répertoriés dans le fichier des paramètres. Toutefois, vous pouvez les mettre "offline" de façon explicite à l'aide de la commande ALTER ROLLBACK SEGMENT.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Types de segment d'annulation

• SYSTEM : utilisé pour les objets du tablespaceSYSTEM.

• Non SYSTEM : utilisé pour les objets des autrestablespaces

– privé : obtenu par une seule instance,

– public : obtenu par n'importe quelle instance.

• Différé : utilisé lorsque les tablespaces sont mis"offline" avec l'option Immediate.

Page 321: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-7

.....................................................................................................................................................Segments d'annulation

Segments d'annulation non SYSTEM (suite)

Publics Les segments d'annulation publics constituent un pool de segments d'annulation disponibles dans une base de données. Ces segments sont généralement utilisés avec Oracle Parallel Server pour créer un pool de segments d'annulation pouvant être utilisés par n'importe quelle instance Parallel Server.

Remarque : l'utilisation des segments d'annulation publics est expliquée dans le manuel Oracle8i Parallel Server Concepts and Administration.

Segments d'annulation différésDes segments d'annulation différés peuvent être créés lorsqu'un tablespace est mis "offline". Ces segments permettent d'annuler les transactions lorsque le tablespace est remis "online". Ils sont supprimés automatiquement lorsqu'ils ne sont plus nécessaires.

Etant donné que les segments d'annulation différés sont gérés par le serveur Oracle, aucune intervention de l'administrateur de base de données n'est nécessaire.

Page 322: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-8 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Utiliser des segments d'annulation avec les transactions

Allouer un segment d'annulationLorsqu'une transaction commence, un segment d'annulation doit lui être affecté. Exécutez la commande suivante pour affecter un segment d'annulation spécifique à une transaction :

SET TRANSACTION USE ROLLBACK SEGMENT rollback_segment

Si vous n'exécutez pas cette commande, le serveur Oracle utilise le segment d'annulation contenant le moins grand nombre de transactions et l'affecte à la transaction.

Utiliser les extentsLes transactions utilisent des extents (ensembles de blocs contigus) d'un segment d'annulation dans une procédure séquentielle circulaire dans laquelle elles passent d'un extent à l'autre lorsque l'extent en cours est plein. Une transaction écrit une entrée à son emplacement en cours dans le segment d'annulation et avance le pointeur en cours d'une distance équivalente à la taille de l'entrée.

Plusieurs transactions peuvent écrire dans le même extent d'un segment d'annulation, mais un bloc de segment d'annulation ne contient les données que d'une seule et unique transaction.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Transactions et segments d'annulation

Transaction 1

Extent actif Extent inactif

4 3

1 2

Transaction 2

Page 323: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-9

.....................................................................................................................................................Utiliser des segments d'annulation avec les transactions

ExempleDans l'exemple de la diapositive, deux transactions sont associées à un segment d'annulation contenant quatre extents.

1 Lorsque les transactions commencent, elles se mettent à écrire les données dans l'extent 3 du segment d'annulation.

2 A mesure que les deux transactions génèrent d'autres informations d'annulation, elles continuent à écrire dans l'extent 3.

3 Lorsque l'extent 3 est plein, les transactions écrivent les données dans l'extent suivant de l'anneau, à savoir l'extent 4. Lorsque les transactions commencent à écrire les données dans un nouvel extent, l'opération s'appelle un "wrap".

4 Lorsque le dernier extent (4) du segment d'annulation est plein, les transactions peuvent utiliser le premier extent (1) de l'anneau s'il est libre ou inactif. Un extent est libre ou inactif lorsqu'aucune transaction en cours ne l'utilise, c'est-à-dire lorsque toutes les transactions qui écrivent des données dans l'extent sont terminées.

Page 324: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-10 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Augmentation de la taille des segments d'annulationLe pointeur, ou en-tête du segment d'annulation, est transféré vers l'extent suivant lorsque tous les blocs de l'extent en cours sont utilisés et qu'une transaction nécessite un autre bloc supplémentaire. Lorsque le dernier extent est plein, le pointeur est transféré au début du premier extent.

Le pointeur ne peut être transféré vers l'extent suivant que si aucune transaction n'est en cours d'exécution dans cet extent. Le pointeur ne peut pas ignorer un extent. Si l'extent suivant est utilisé, la transaction alloue un extent supplémentaire au segment d'annulation. Cette opération s'appelle une extension.

La taille d'un segment d'annulation peut augmenter de cette manière jusqu'à ce qu'elle atteigne le nombre maximum d'extents défini par le paramètre MAXEXTENTS.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Augmentation de la tailledes segments d'annulation

Extent actif

Extent inactif

1 2

4 3

1 2

3

4

5

Nouvel extent

Page 325: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-11

.....................................................................................................................................................Utiliser des segments d'annulation avec les transactions

Paramètre OPTIMALLe paramètre OPTIMAL définit la taille en octets à laquelle un segment d'annulation doit revenir, si possible. Ce paramètre permet de réduire les pertes d'espace dans un segment d'annulation. Si vous définissez le paramètre OPTIMAL, un segment d'annulation peut libérer de l'espace à la fin des transactions qui ont provoqué l'augmentation de la taille du segment d'annulation.

La libération d'extents n'est pas effectuée dès la fin des transactions. Elle n'est exécutée que lorsque l'en-tête passe d'un extent à l'autre. Les extents sont libérés lorsque les deux conditions suivantes sont vraies :

• la taille en cours du segment d'annulation est supérieure à la valeur du paramètre OPTIMAL,

• il existe des extents contigus inactifs.

Le serveur Oracle tente de libérer des extents jusqu'à ce que la taille du segment d'annulation soit égale à la valeur du paramètre OPTIMAL, mais il arrête l'opération avant si l'extent suivant à libérer est en cours d'utilisation.

Le serveur Oracle libère toujours les extents inactifs les plus anciens, dans la mesure où ils sont peu susceptibles d'être utilisés pour la cohérence en lecture.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Réduction de la tailledes segments d'annulation

Extent actif

Extent inactif

1 2

6 3

1

2

34

5

6

OPTIMAL

Page 326: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-12 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Créer des segments d'annulation

SyntaxeUtilisez la commande suivante pour créer un segment d'annulation :

CREATE [PUBLIC] ROLLBACK SEGMENT rollback_segment

[TABLESPACE tablespace]

[STORAGE ([INITIAL integer[K|M]]

[NEXT integer[K|M]]

[MINEXTENTS integer]

[MAXEXTENTS {integer|UNLIMITED}]

[OPTIMAL {integer[K|M]|NULL}]

)

]

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Créer des segments d'annulation

CREATE ROLLBACK SEGMENT rbs01

TABLESPACE rbs

STORAGE (

INITIAL 100K

NEXT 100K

MINEXTENTS 20

MAXEXTENTS 100

OPTIMAL 2000K );

Page 327: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-13

.....................................................................................................................................................Créer des segments d'annulation

Restrictions• Un segment d'annulation peut être défini comme étant PUBLIC ou PRIVATE

(attribut par défaut) lors de sa création et ne peut pas être modifié.

• Pour un segment d'annulation, le paramètre MINEXTENTS doit avoir la valeur 2 au minimum.

• Le paramètre PCTINCREASE d'un segment d'annulation ne peut pas être défini ; il a toujours la valeur 0.

• La valeur du paramètre OPTIMAL, si vous la définissez, doit être au minimum égale à la taille initiale du segment d'annulation, qui correspond à l'espace utilisé par les extents dont le nombre est défini dans le paramètre MINEXTENTS.

Instructions• Utilisez toujours INITIAL = NEXT pour les segments d'annulation afin que tous

les extents aient la même taille.

• Affectez au paramètre OPTIMAL une valeur permettant de réduire l'allocation et la libération d'extents de segment d'annulation.

• N'affectez pas la valeur UNLIMITED au paramètre MAXEXTENTS. Cette valeur peut provoquer l'extension inutile d'un segment d'annulation et éventuellement des fichiers de données en raison d'une erreur de programme.

• Placez toujours les segments d'annulation dans un tablespace distinct exclusif pour réduire la contention et la fragmentation.

Page 328: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-14 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Utiliser Oracle Enterprise Manager pour créer un nouveau segment d'annulation1 Démarrez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Sélectionnez le dossier Rollback Segments, cliquez avec le bouton droit de la souris, puis sélectionnez Create dans le menu.

4 Dans la page General de la fenêtre de propriétés, entrez le nom, le tablespace et le type. Sélectionnez éventuellement le bouton d'option Online.

5 Dans la page Extents de la fenêtre de propriétés, entrez les informations de stockage.

6 Cliquez sur Create.

Utilisez Rollback—>Create Like pour créer un nouveau segment d'annulation qui utilise le même tablespace et les mêmes paramètres qu'un segment d'annulation existant.

Page 329: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-15

.....................................................................................................................................................Créer des segments d'annulation

Commande ALTER ROLLBACK SEGMENTLorsque vous créez un segment d'annulation, le segment est "offline" et ne peut être utilisé. Pour permettre aux transactions d'accéder au segment d'annulation, utilisez la commande ALTER ROLLBACK SEGMENT et mettez le segment d'annulation "online".

SyntaxeUtilisez la commande suivante pour rendre un segment d'annulation disponible :

ALTER ROLLBACK SEGMENT rollback_segment ONLINE;

Le nombre de segments d'annulation pouvant être mis "online" par une instance est limité par le paramètre MAX_ROLLBACK_SEGMENTS. Affectez à ce paramètre une valeur supérieure d'une unité au nombre de segments d'annulation non SYSTEM nécessaires à l'instance.

Un segment d'annulation n'est "online" que jusqu'à ce que l'instance soit arrêtée. Pour qu'une instance mette toujours un segment d'annulation "online", définissez le nom du segment d'annulation dans le fichier des paramètres, comme indiqué dans l'exemple ci-dessous :

ROLLBACK_SEGMENTS=(rbs01, rbs02)

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Mettre des segmentsd'annulation "online"

• Utilisez la commande suivante pour rendreun segment d'annulation disponible :

• Définissez le paramètre d'initialisation suivantpour mettre les segments d'annulation "online"au démarrage :

ROLLBACK_SEGMENTS=(rbs01, rbs02)ROLLBACK_SEGMENTS=(rbs01, rbs02)

ALTER ROLLBACK SEGMENT rbs01 ONLINE;ALTER ROLLBACK SEGMENT rbs01 ONLINE;

Page 330: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-16 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Utiliser Oracle Enterprise Manager pour mettre un segment d'annulation "online"1 Démarrez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez le dossier Rollback Segments.

4 Sélectionnez le segment d'annulation.

5 Cliquez avec le bouton droit de la souris, puis sélectionnez Place Online.

6 Dans la boîte de dialogue, cliquez sur Yes.

Page 331: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-17

.....................................................................................................................................................Créer des segments d'annulation

Obtention des segments d'annulation par les instancesLes étapes suivantes expliquent comment une instance obtient les segments d'annulation lorsqu'elle ouvre une base de données :

1 L'instance obtient tous les segments d'annulation définis dans le paramètre d'initialisation ROLLBACK_SEGMENTS.

2 La valeur du paramètre TRANSACTIONS init.ora est divisée par celle du paramètre TRANSACTIONS_PER_ROLLBACK_SEGMENT init.ora, et le résultat correspond au nombre de segments d'annulation nécessaires à l'instance. Si cette valeur est supérieure au nombre de segments d'annulation non SYSTEM que l'instance a déjà mis "online", l'instance obtient des segments d'annulation publics supplémentaires pour ajuster le nombre. Si le nombre de segments d'annulation publics est insuffisant, la base de données s'ouvre et est accessible aux utilisateurs. Aucune erreur n'est générée.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Obtention des segmentsd'annulation par les instances

Mise "online" detous les segments

d'annulation obtenus

Obtention desegments

d'annulationprivés

Le nombre de segments d'annulation

est-il suffisant ?

Obtentionde segmentsd'annulation

publics

Calcul dunombre desegments

d'annulationnécessaire

Oui

Non

Page 332: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-18 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Gérer les segments d'annulation

SyntaxePour modifier les paramètres de stockage d'un segment d'annulation, utilisez la commande ALTER ROLLBACK SEGMENT.

ALTER ROLLBACK SEGMENT rollback_segment [STORAGE ( [NEXT integer[K|M]]

[MINEXTENTS integer]

[MAXEXTENTS {integer|UNLIMITED}]

[OPTIMAL {integer[K|M]|NULL}]

)

]

Utilisez cette commande pour redéfinir les paramètres OPTIMAL et MAXEXTENTS.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Changer les paramètres destockage des segments d'annulation

• Utilisez la commande ALTER ROLLBACKSEGMENT.

• Changez la valeur OPTIMAL ou MAXEXTENTS.

ALTER ROLLBACK SEGMENT rbs01

STORAGE( MAXEXTENTS 200 );

Page 333: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-19

.....................................................................................................................................................Gérer les segments d'annulation

Utiliser Oracle Enterprise Manager pour modifier les paramètres de stockage1 Démarrez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez le dossier Rollback Segments.

4 Sélectionnez le segment d'annulation.

5 Sélectionnez l'onglet Storage de la fenêtre de propriétés, puis modifiez les paramètres.

6 Cliquez sur Apply.

Page 334: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-20 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Libérer de l'espace affecté aux segments d'annulationSi vous avez défini le paramètre OPTIMAL d'un segment d'annulation, le serveur Oracle tente de désallouer des extents pour libérer tout l'espace supérieur à la taille optimale.

Libérer manuellement de l'espaceUtilisez la commande suivante pour libérer manuellement de l'espace affecté à un segment d'annulation :

ALTER ROLLBACK SEGMENT rollback_segment

SHRINK [ TO integer [ K|M ]];

Cette commande tente de réduire la taille du segment d'annulation à la taille définie, mais s'arrête aussitôt si un extent ne peut être libéré parce qu'il est actif.

Si integer n'est pas défini, le serveur Oracle tente de libérer les extents jusqu'à ce que la taille du segment d'annulation soit égale à la valeur du paramètre OPTIMAL.

Si la valeur integer est supérieure à la taille actuelle du segment d'annulation, cette commande n'est pas prise en compte.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Libérer de l'espace affectéaux segments d'annulation

• Utilisez la commande ALTER ROLLBACKSEGMENT.

• Si les extents sont actifs, il se peut que la tailledes segments ne soit pas ramenée à la tailledemandée.

ALTER ROLLBACK SEGMENT rbs01

SHRINK TO 4M;

ALTER ROLLBACK SEGMENT rbs01

SHRINK TO 4M;

Page 335: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-21

.....................................................................................................................................................Gérer les segments d'annulation

Utiliser Oracle Enterprise Manager pour réduire la taille d'un segment d'annulation1 Démarrez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez le dossier Rollback Segments.

4 Sélectionnez le segment d'annulation.

5 Cliquez avec le bouton droit de la souris, puis sélectionnez Shrink.

6 Dans la boîte de dialogue Shrink Rollback Segment, sélectionnez Optimal Size pour réduire le segment d'annulation à sa taille optimale. Vous pouvez également sélectionner Size et entrer la taille en kilo-octets ou en mégaoctets.

7 Cliquez sur OK.

Page 336: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-22 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Mettre un segment d'annulation "offline"Mettez un segment d'annulation "offline" :

• pour empêcher de nouvelles transactions d'utiliser un segment d'annulation,

• lorsque vous souhaitez supprimer le segment d'annulation.

SyntaxeUtilisez la commande suivante pour mettre un segment d'annulation "offline" :

ALTER ROLLBACK SEGMENT rollback_segment OFFLINE;

Si des transactions utilisent le segment d'annulation lorsque vous exécutez cette instruction, le statut PENDING OFFLINE est affecté au segment, comme l'indique la vue dynamique des performances V$ROLLSTAT. Le segment est mis "offline" dès la fin des transactions en cours.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Mettre un segmentd'annulation "offline"

• Mettez un segment d'annulation "offline" pourle rendre indisponible.

• Si des transactions utilisent le segmentd'annulation, le statut PENDING OFFLINEest temporairement utilisé.

ALTER ROLLBACK SEGMENT rbs01

OFFLINE;

ALTER ROLLBACK SEGMENT rbs01

OFFLINE;

Page 337: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-23

.....................................................................................................................................................Gérer les segments d'annulation

Utiliser Oracle Enterprise Manager pour réduire la taille d'un segment d'annulation1 Démarrez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez le dossier Rollback Segments.

4 Sélectionnez le segment d'annulation.

5 Cliquez avec le bouton droit de la souris, puis sélectionnez Take Offline.

6 Dans la boîte de dialogue, cliquez sur Yes.

Page 338: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-24 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

SyntaxeUtilisez la commande suivante pour supprimer un segment d'annulation :

DROP ROLLBACK SEGMENT rollback_segment

Supprimez un segment d'annulation lorsqu'il est devenu inutile ou qu'il doit être recréé avec des paramètres de stockage INITIAL, NEXT ou MINEXTENTS différents.

Pour pouvoir supprimer un segment d'annulation, vous devez le mettre "offline".

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Supprimer des segments d'annulation

Vous devez mettre un segment d'annulation "offline"pour pouvoir le supprimer.

DROP ROLLBACK SEGMENT rbs01;

Page 339: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-25

.....................................................................................................................................................Gérer les segments d'annulation

Utiliser Oracle Enterprise Manager pour supprimer un segment d'annulation1 Démarrez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez le dossier Rollback Segments.

4 Sélectionnez le segment d'annulation.

5 Cliquez avec le bouton droit de la souris, puis sélectionnez Remove. L'option de suppression n'est activée que si le segment d'annulation est "offline".

6 Dans la boîte de dialogue, cliquez sur Yes.

Page 340: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-26 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Obtenir des informations sur les segments d'annulation

Obtenir des informations sur les segments d'annulation à partir du dictionnaire de donnéesPour obtenir des informations sur les segments d'annulation de la base de données, interrogez la vue DBA_ROLLBACK_SEGS.

SQL> SELECT segment_name, tablespace_name, owner, status

2 FROM dba_rollback_segs;

SEGMENT_NAME TABLESPACE_NAME OWNER STATUS

-------------- ----------------- ------ ---------------

SYSTEM SYSTEM SYS ONLINE

RBS1 RBS SYS ONLINE

RBS2 RBS SYS ONLINE

RBS3 RBS SYS ONLINE

4 rows selected.

Vous ne pouvez afficher les informations sur les segments d'annulation "offline" que dans la vue DBA_ROLLBACK_SEGS. Les vues dynamiques des performances ne contiennent que les segments d'annulation "online".

La colonne OWNER indique le type du segment d'annulation :

• SYS fait référence à un segment d'annulation privé.

• PUBLIC fait référence à un segment d'annulation public.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Segments d'annulationdans la base de données

DBA_ROLLBACK_SEGS

• Identification :

– SEGMENT_ID

– SEGMENT_NAME

• Emplacement : TABLESPACE_NAME

• Type : OWNER (PUBLIC ou SYS)

• Statut : STATUS (ONLINE ou OFFLINE)

Page 341: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-27

.....................................................................................................................................................Obtenir des informations sur les segments d'annulation

Utiliser Oracle Enterprise Manager pour supprimer un segment d'annulation1 Démarrez Storage Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Storage Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Sélectionnez le noeud Rollback Segments pour afficher le récapitulatif de tous les segments d'annulation de la base de données.

4 Développez le dossier Rollback Segments.

5 Sélectionnez le segment d'annulation pour afficher les informations sur les extents ainsi que le type de segment d'annulation.

Page 342: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-28 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Vues V$ROLLSTAT et V$ROLLNAMEJoignez les vues V$ROLLSTAT et V$ROLLNAME pour obtenir les statistiques sur les segments d'annulation actuellement utilisés par l'instance.

ExempleSQL> SELECT n.name, s.extents, s.rssize, s.optsize,

2 s.hwmsize, s.xacts, s.status

3 FROM v$rollname n, v$rollstat s

4 WHERE n.usn = s.usn;

NAME EXTENTS RSSIZE OPTSIZE HWMSIZE XACTS STATUS

------ ------- -------- -------- -------- ------ --------

SYSTEM 43 2199552 2199552 0 ONLINE

RBS1 20 202752 204800 417792 0 ONLINE

RBS2 4 38912 38912 0 PENDING

OFFLINE

3 rows selected.

Remarque : vous pouvez obtenir la valeur du paramètre OPTIMAL dans la vue V$ROLLSTAT uniquement.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Statistiques sur lessegments d'annulation

V$ROLLNAME USN NAME

V$ROLLNAME USN NAME

V$ROLLSTAT USN

EXTENTSRSSIZE XACTS OPTSIZE HWMSIZE AVEACTIVESTATUS CUREXT CURBLK

V$ROLLSTAT USN

EXTENTSRSSIZE XACTS OPTSIZE HWMSIZE AVEACTIVESTATUS CUREXT CURBLK

Page 343: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-29

.....................................................................................................................................................Obtenir des informations sur les segments d'annulation

Vues V$ROLLSTAT et V$ROLLNAME (suite)La vue V$ROLLSTAT contient les colonnes suivantes :

Remarque : lorsqu'un segment d'annulation attend d'être mis hors ligne (PENDING OFFLINE), son statut indique qu'il est en ligne (ONLINE) dans la vue DBA_ROLLBACK_SEGS.

Colonne Description

USN Numéro du segment d'annulation ; joignez la vue V$ROLLNAME.USN pour obtenir le nom.

EXTENTS Nombre d'extents dans le segment d'annulation.

RSSIZE Taille actuelle du segment, exprimée en octets.

XACTS Nombre de transactions utilisant le segment.

OPTSIZE Valeur du paramètre OPTIMAL du segment d'annulation.

HWMSIZE Repère high-water mark ; indique la taille maximale en octets atteinte par le segment depuis le démarrage.

AVEACTIVE Taille actuelle pondérée des extents actifs.

STATUS Statut du segment d'annulation :

• ONLINE indique que le segment d'annulation peut être utilisé.

• PENDING OFFLINE indique que la commande de mise lors ligne d'un segment d'annulation a été exécutée et que des transactions actives utilisent le segment. Le segment d'annulation sera mis "offline" dès que toutes les transactions qui utilisent ce segment d'annulation seront terminées.

• OFFLINE indique que le segment d'annulation ne peut pas être utilisé.

CUREXT Emplacement actuel de l'en-tête du segment d'annulation : numéro d'extent et de bloc.

CURBLK

Page 344: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-30 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Vues V$SESSION et V$TRANSACTIONPour vérifier l'utilisation d'un segment d'annulation par les transactions en cours, joignez les vues V$TRANSACTION et V$SESSION.

ExempleSQL> SELECT s.username, t.xidusn, t.ubafil,

2 t.ubablk, t.used_ublk

3 FROM v$session s, v$transaction t

4 WHERE s.saddr = t.ses_addr;

USERNAME XIDUSN UBAFIL UBABLK USED_UBLK

----------- ---------- ------ ------- ----------

SYSTEM 2 2 7 1

SCOTT 1 2 163 1

2 rows selected.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Segment d'annulation : activité en cours

V$SESSIONSADDRUSERNAMESIDSERIAL#

V$SESSIONSADDRUSERNAMESIDSERIAL#

V$TRANSACTION SES_ADDRXIDUSN UBAFIL UBABLK UBASQN UBAREC STATUS USED_UBLK USED_UREC

V$TRANSACTION SES_ADDRXIDUSN UBAFIL UBABLK UBASQN UBAREC STATUS USED_UBLK USED_UREC

Page 345: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-31

.....................................................................................................................................................Obtenir des informations sur les segments d'annulation

Vues V$TRANSACTION et V$SESSION (suite)Voici les colonnes pertinentes de la vue V$TRANSACTION, ainsi que leur description :

Colonne Description

SES_ADDR Adresse de la session : peut être jointe à la vue V$SESSION.SADDR.

XIDUSN Numéro du segment d'annulation utilisé par la transaction ; utilisé dans l'ID de la transaction.

UBAFIL Indique l'emplacement actuel du segment d'annulation dans lequel la transaction écrit les données.

UBABLK

UBASQN

UBAREC

USED_UBLK Nombre de blocs d'annulation générés par la transaction.

START_UEXT Extent de segment d'annulation à partir duquel la transaction a commencé à écrire les données.

START_UBAFIL Numéro de fichier du segment d'annulation à partir duquel la transaction a commencé à écrire.

START_UBABLK Numéro de bloc du segment d'annulation à partir duquel la transaction a commencé à écrire.

Page 346: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-32 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Planifier les segments d'annulation

Nombre de segments d'annulationL'en-tête de bloc d'un segment d'annulation contient les entrées de la table des transactions qui définissent l'état de chaque transaction. Chaque transaction qui utilise un segment d'annulation doit mettre à jour fréquemment la table des transactions. Ceci peut provoquer la contention au niveau de l'en-tête, notamment dans les environnements OLTP (Online Transaction Processing). Du fait qu'un environnement OLTP utilise généralement des transactions brèves, il est recommandé d'utiliser de petits segments d'annulation dans ce type d'environnement. Si possible, créez un segment d'annulation pour quatre transactions simultanées.

En général, les environnements batch exécutent moins d'opérations que nécessaire pour effectuer plusieurs modifications. Ces opérations exigent de grands segments d'annulation. En conséquence, dans un environnement batch, vous devez permettre à la taille des segments d'annulation d'augmenter en les créant dans de grands tablespaces.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Planifier les segmentsd'annulation : nombre

• Environnement OLTP

– grand nombre de petits segmentsd'annulation,

– quatre transactions par segment d'annulation,

– jusqu'à dix transactions par segmentd'annulation.

• Environnement batch

– quelques grands segments d'annulation,

– un par transaction.

Page 347: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-33

.....................................................................................................................................................Planifier les segments d'annulation

Taille d'un segment d'annulationLe nombre d'octets nécessaires au stockage des informations permettant d'effectuer une annulation dépend de deux éléments :

• le type de transaction exécutée (insertion, mise à jour, suppression, etc.),

• les données traitées.

En règle générale, l'insertion d'un enregistrement donné dans une table génère moins d'informations d'annulation que la suppression de ce même enregistrement. S'il s'agit d'une insertion, seul l'identificateur de ligne (ROWID) est enregistré, alors que pour une suppression, la ligne entière est enregistrée.

Vous pouvez évaluer la taille du segment d'annulation en exécutant la transaction la plus longue possible et en vérifiant la taille du segment d'annulation ou la quantité d'informations d'annulation générée. Reportez-vous aux cours Oracle DBA : Performance Tuning et Oracle8i : SQL Statement Tuning qui portent sur la surveillance des statistiques.

Nombre d'extentsL'augmentation dynamique de la taille d'un segment d'annulation peut être limitée en créant des segments d'annulation comportant un grand nombre d'extents. Pour limiter la possibilité d'augmentation de la taille d'un segment d'annulation, créez des segments d'annulation avec le paramètre MINEXTENTS=20.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Planifier les segmentsd'annulation : nombre d'extents

0.00

0.10

0.20

0.30

0.40

0.50

0 10 20 30 40

Nombre d'extents

Probabilitéd'extension

Page 348: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-34 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Dépannage : problèmes liés aux segments d'annulation

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Problèmes liés auxsegments d'annulation

• Espace insuffisant pour les transactions

• Erreur de cohérence en lecture

• Session bloquante

• Erreur lors de la mise "offline" du tablespace.

Page 349: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-35

.....................................................................................................................................................Dépannage : problèmes liés aux segments d'annulation

Causes possiblesUne transaction utilise un seul segment d'annulation et peut échouer si le segment d'annulation ne contient pas suffisamment d'espace (ORA-01562). Cette situation peut avoir l'une des origines suivantes :

• Le tablespace ne contient pas l'espace suffisant pour permettre à la taille des segments d'annulation d'augmenter (ORA-01560).

• Le nombre d'extents dans le segment d'annulation défini dans le paramètre MAXEXTENTS a été atteint et des extents supplémentaires ne peuvent pas être ajoutés (ORA-01628).

SolutionSi le tablespace n'a pas d'espace libre, augmentez l'espace disponible en :

• définissant OPTIMAL pour éviter qu'un seul segment d'annulation n'utilise tout l'espace libre du tablespace,

• en ramenant les segments d'annulation à leur taille optimale,

• en augmentant la taille du tablespace.

Si un segment d'annulation ne peut allouer plus d'extents, car la limite imposée par le paramètre MAXEXTENTS a été atteinte :

• augmentez la valeur MAXEXTENTS du segment d'annulation,

• supprimez et recréez le segment d'annulation en utilisant une plus grande taille d'extent pour éviter que le problème ne se reproduise.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Espace insuffisant pour les transactions

• Pas d'espace dans le tablespace :

– étendez les fichiers de données,

– activez l'augmentation automatique de la tailledes fichiers de données,

– ajoutez des fichiers de données.

• Limite MAXEXTENTS du segment atteinte :

– augmentez la valeur MAXEXTENTS,

– recréez les segments en utilisant une plusgrande taille d'extent.

Page 350: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-36 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Causes possiblesPour assurer la cohérence en lecture, le serveur Oracle empêche l'instruction de voir les modifications des autres utilisateurs non validées au début de son exécution ou effectuées après le début de son exécution. Si le serveur Oracle ne peut créer une image des données cohérente en lecture, l'utilisateur reçoit l'erreur ORA-01555 SNAPSHOT TOO OLD. Cette erreur se produit lorsque la transaction qui a effectué la modification a déjà validé les données et que :

• l'espace de transaction de l'en-tête d'annulation a été réutilisé,

• l'image avant, dans le segment d'annulation, a été remplacée par une autre transaction.

SolutionVous pouvez réduire les erreurs de cohérence en lecture en affectant aux segments :

• une valeur MINEXTENTS plus élevée,

• une plus grande taille d'extents,

• une valeur OPTIMAL plus élevée.

Notez que vous ne pouvez pas éviter ces erreurs en augmentant la valeur du paramètre MAXEXTENTS.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Erreur de cohérence en lecture

Image au début de l'instruction

Nouvelle image

TableSELECT * FROM table Bloc réutilisé

Page 351: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-37

.....................................................................................................................................................Dépannage : problèmes liés aux segments d'annulation

Causes possiblesLorsqu'un extent d'un segment d'annulation est plein, le serveur Oracle tente de réutiliser l'extent suivant du segment. Si ce dernier contient une entrée en cours, c'est-à-dire une entrée générée par une transaction qui est toujours active, il ne peut être utilisé. Dans ce cas, un segment d'annulation alloue un extent supplémentaire. La transaction ne peut pas ignorer un extent de l'anneau et poursuit les opérations d'écriture dans un extent suivant. Une transaction n'ayant effectué que quelques modifications et qui est inactive depuis un long moment peut provoquer l'augmentation de la taille des segments d'annulation, même s'il existe un grand nombre d'extents libres. Dans ce cas, un espace considérable est perdu et l'administrateur de base de données peut intervenir pour empêcher l'augmentation excessive de la taille des segments d'annulation.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Session bloquante

Extent 3

Extent existant

Nouvel extent

4 1

3 2

1 2

3

4

5

Session bloquante

Page 352: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-38 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

SolutionInterrogez les vues V$ROLLSTAT, V$SESSION et V$TRANSACTION pour identifier les transactions bloquantes.

ExempleSQL> SELECT s.sid, s.serial#, t.start_time, t.xidusn, s.username

2 FROM v$session s, v$transaction t, v$rollstat r

3 WHERE s.saddr = t.ses_addr

4 AND t.xidusn = r.usn

5 AND ((r.curext = t.start_uext-1) OR

6 ((r.curext = r.extents-1) AND t.start_uext=0));

SID SERIAL# START_TIME XIDUSN USERNAME

--- ------- ----------------- ------ --------

9 27 10/30/97 21:10:41 2 SYSTEM

1 row selected.

Déterminez si l'utilisateur peut arrêter la transaction. S'il ne le peut pas, vous devrez peut-être fermer la session.

Page 353: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-39

.....................................................................................................................................................Dépannage : problèmes liés aux segments d'annulation

Identification et résolution des problèmes

Si un tablespace contient un ou plusieurs segments d'annulation actifs, vous ne pouvez pas le mettre "offline". La session qui exécute l'instruction reçoit le message d'erreur ORA-01546.

SolutionProcédez comme suit :

1 Interrogez la vue DBA_ROLLBACK_SEGS pour identifier les segments d'annulation du tablespace.

2 Mettez "offline" tous les segments d'annulation du tablespace.

3 Dans la vue V$TRANSACTION, recherchez les transactions qui utilisent ces segments d'annulation.

4 Utilisez la vue V$SESSION pour obtenir les informations relatives à l'utilisateur et à la session.

5 Fermez la session ou demandez à l'utilisateur d'arrêter la transaction.

6 Mettez le tablespace "offline".

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Erreur lors de la mise"offline" d'un tablespace

Impossible de mettre "offline" un tablespacecontenant des segments d'annulation actifs :

1. Identifiez les segments d'annulation du tablespace.

2. Mettez tous ces segments d'annulation "offline".

3. Recherchez les transactions actives qui utilisentces segments d'annulation.

4. Recherchez l'ID de session et le numéro de série.

5. Interrompez la session, si nécessaire.

6. Mettez le tablespace "offline".

Page 354: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-40 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Synthèse

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Synthèse

Ce chapitre vous a permis d'apprendre :

• à expliquer l'utilisation des segments d'annulation :

– annulations,

– cohérence en lecture,

– récupération.

• à créer les segments d'annulation appropriés,

• à résoudre les problèmes liés aux segmentsd'annulation.

Page 355: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 10-41

.....................................................................................................................................................Synthèse

Pour référence

Contexte RéférenceParamètres d'initialisation ROLLBACK_SEGMENTS

TRANSACTIONS

TRANSACTIONS_PER_ROLLBACK_SEGMENTS

MAX_ROLLBACK_SEGMENTSVues dynamiques des performances V$ROLLNAME

V$ROLLSTAT

V$TRANSACTION

V$SESSIONVues du dictionnaire de données DBA_ROLLBACK_SEGSCommandes CREATE ROLLBACK SEGMENT

ALTER ROLLBACK SEGMENT ... ONLINE

ALTER ROLLBACK SEGMENT ... STORAGE

ALTER ROLLBACK SEGMENT ... SHRINK

ALTER ROLLBACK SEGMENT ... OFFLINE

DROP ROLLBACK SEGMENT

SET TRANSACTION USE ROLLBACK SEGMENT

Page 356: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................10-42 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 10 : Gérer les segments d'annulation

Page 357: Oracle DBA - Architecture & Administration Vol.1

.................................

11

Gérer les tables

Page 358: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-2 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Objectifs

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Objectifs

A la fin de ce chapitre, vous pourrez :

• créer des tables en utilisant les paramètres destockage appropriés,

• gérer l'espace utilisé par les tables,

• analyser les tables pour vérifier l'intégrité et lamigration,

• extraire des informations sur les tables dudictionnaire de données,

• convertir un identificateur ROWID dans le formatd'un autre identificateur ROWID.

Page 359: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-3

.....................................................................................................................................................Présentation

Présentation

Utiliser différentes méthodes de stockage des données utilisateurDans une base de données Oracle, vous pouvez stocker les données utilisateur de différentes manières. Les données peuvent être stockées dans l'une des tables suivantes :

• tables normales,

• tables partitionnées,

• tables organisées en index,

• tables incluses dans un cluster.

Remarque : les tables partitionnées, les tables organisées en index et les tables incluses dans un cluster sont traitées dans d'autres cours.

Tables normalesUne table normale (appelée en général "table") est l'élément le plus communément utilisé pour stocker les données utilisateur. Il s'agit du type de table par défaut qui constitue le sujet principal de chapitre. Les prérogatives de l'administrateur sur la distribution des lignes d'une table incluse dans un cluster sont très limitées. Les lignes peuvent être stockées dans n'importe quel ordre selon l'activité de la table.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Stocker les données utilisateur

Table normale

Cluster

Tablepartitionnée

Table organiséeen index

Page 360: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-4 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Table partitionnéeUne table partitionnée permet de créer des applications évolutives. Elle présente les caractéristiques suivantes :

• Une table partitionnée contient une ou plusieurs partitions qui stockent chacune les lignes partitionnées à l'aide du partitionnement par plage, par hachage ou composite.

• Chaque partition d'une table partitionnée constitue un segment qui peut se trouver dans un tablespace différent.

• Les partitions trouvent une utilité particulière pour les tables volumineuses qui peuvent être interrogées ou manipulées par plusieurs processus simultanés.

• Des commandes spéciales permettent de gérer les partitions d'une table.

Tables organisées en indexUne table organisée en index est une table normale contenant un index de clé primaire dans une ou plusieurs de ses colonnes. Toutefois, au lieu de gérer deux espaces de stockage distincts pour la table et un index B-Tree, une table organisée en index ne gère qu'un seul B-Tree contenant la clé primaire de la table et d'autres valeurs de colonnes.

Les tables organisées en index accélèrent l'accès par clé aux données des tables dans les interrogations impliquant des recherches de correspondance exacte ou des recherches sur des plages de données.

En outre, les besoins en stockage sont moindres dans la mesure où les colonnes de clé ne sont pas dupliquées dans la table, ni dans l'index. Les colonnes restantes ne contenant pas de clé sont stockées dans l'index si la taille de l'entrée d'index n'augmente pas considérablement. Si tel n'est pas le cas, le serveur Oracle fournit la clause OVERFLOW qui permet de résoudre le problème.

Table incluse dans un clusterUne table incluse dans un cluster permet également de stocker les données dans des tables. Un cluster est constitué de plusieurs tables qui partagent les mêmes blocs de données, regroupés du fait qu'ils partagent des colonnes et souvent utilisés conjointement.

Un cluster présente les caractéristiques suivantes :

• Il dispose d'une clé de cluster qui permet d'identifier les lignes devant être enregistrées ensemble.

• La clé de cluster peut être constituée d'une ou de plusieurs colonnes.

• Les tables d'un cluster contiennent des colonnes correspondant à la clé de cluster.

• La création de cluster est un mécanisme qui est transparent aux applications qui utilisent les tables. Les données d'une table incluse dans un cluster peuvent être manipulées de la même manière que celles d'une table normale.

Page 361: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-5

.....................................................................................................................................................Présentation

Table incluse dans un cluster (suite)• La mise à jour de l'une des colonnes de la clé de cluster peut provoquer

le déplacement physique de la ligne.

• La clé de cluster est indépendante de la clé primaire. Les tables d'un cluster peuvent avoir une clé primaire qui peut correspondre à la clé de cluster ou à un ensemble de colonnes différent.

• Les clusters sont généralement utilisés pour améliorer les performances. L'accès direct aux données d'un cluster peut être plus rapide, mais le balayage complet de tables est généralement plus long.

Page 362: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-6 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Format et longueur de ligneLes données des lignes sont stockées dans des blocs de base de données sous forme d'enregistrements de longueur variable. Les colonnes d'une ligne sont généralement enregistrées selon l'ordre dans lequel elles sont définies, et toutes les colonnes de fin NULL ne sont pas enregistrées. Chaque ligne d'une table peut comporter un nombre de colonnes différent. Chaque ligne d'une table a :

• un en-tête : cet en-tête permet de stocker le nombre de colonnes de la ligne, les informations de chaînage et le statut de verrouillage de la ligne,

• des données de ligne : le serveur Oracle stocke la longueur et la valeur de chaque colonne (un octet est nécessaire pour enregistrer la longueur de colonne si celle-ci ne peut dépasser 250 octets. Une colonne plus longue nécessite 3 octets. La valeur de la colonne est stockée immédiatement après les octets de longueur de colonne).

Aucun espace n'est nécessaire entre les lignes adjacentes. Chaque ligne du bloc est associée à un pointeur dans le répertoire des lignes. Le pointeur pointe vers le début de la ligne.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Structure d'une ligne

Bloc de base dedonnées

En-tête de ligne

Longueur de colonne

Valeur de colonne

Page 363: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-7

.....................................................................................................................................................Types de données Oracle

Types de données Oracle

Types de données internes OracleLe serveur Oracle fournit plusieurs types de données internes pour stocker les données scalaires, les ensembles et les relations.

Types de données scalaires

Données de type caractère Les données de type caractère sont stockées sous forme de chaînes de longueur fixe ou de longueur variable dans la base de données.

Les données de longueur fixe de type caractère, tel que CHAR et NCHAR, sont stockées avec des espaces. NCHAR est un type de données NLS (National Language-Supported) qui permet de stocker des jeux de caractères de longueur fixe ou de longueur variable. La taille maximale est déterminée par le nombre d'octets nécessaires au stockage d'un caractère, avec une limite maximale de 2 000 octets par ligne. La valeur par défaut est de 1 caractère, soit 1 octet, selon le jeu de caractères.

Les données de longueur variable de type caractère utilisent uniquement le nombre d'octets nécessaires au stockage de la valeur de colonne réelle et leur taille peut varier pour chaque ligne et être égale à 4 000 octets au maximum. Les données de type VARCHAR2 et NVARCHAR2, par exemple, sont des données de type caractère de longueur variable.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Types de données Oracle

CHAR(N), NCHAR(N)VARCHAR2(N),NVARCHAR2(N)NUMBER(P,S)DATERAW(N)BLOB, CLOB,NCLOB, BFILELONG, LONG RAWROWID, UROWID

VARRAY

TABLE

REF

Type de données

InterneDéfini par l'utilisateur

Scalaire RelationEnsemble

Page 364: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-8 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Types de données scalaires (suite)

Données numériques Dans les bases de données Oracle, les nombres sont toujours stockés sous forme de données de longueur variable. Ils peuvent comporter jusqu'à 38 chiffres significatifs. Les données numériques nécessitent :

– un octet pour l'exposant,

– un octet tous les deux chiffres significatifs dans la mantisse,

– un octet pour les nombres négatifs si le nombre de chiffres significatifs est inférieur à 38 octets.

Données de type DATE Le serveur Oracle enregistre les dates dans des champs de longueur fixe de sept octets. Une date Oracle contient toujours l'heure.

Données de type DATE Ce type de données permet de stocker de petites données binaires. Le serveur Oracle ne convertit pas le jeu de caractères lorsque des données de type RAW sont transmises entre les machines d'un réseau ou lorsqu'elles sont transférées d'une base de données vers une autre à l'aide d'utilitaires Oracle. Le nombre d'octets nécessaires au stockage de la valeur de colonne réelle varie pour chaque ligne et peut être égal à 2 000 octets au maximum.

Page 365: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-9

.....................................................................................................................................................Types de données Oracle

Types de données scalaires de stockage des objets LOBOracle fournit six types de données pour stocker les objets LOB :

• CLOB et LONG pour les grands caractères de longueur fixe,

• NCLOB pour les jeux de grands caractères nationaux de longueur fixe,

• BLOB et LONG RAW pour stocker les données non structurées,

• BFILE pour stocker les données non structurées dans des fichiers de système d'exploitation.

Les types de données LONG et LONG RAW étaient utilisés auparavant pour les données non structurées, telles que les images binaires, les documents ou les informations géographiques, et sont principalement fournis à des fins de compatibilité descendante. Ces types de données sont remplacés par les types de données LOB. Les données de type LOB sont différentes des données de type LONG et LONG RAW et ne sont pas interchangeables. Les données de type LOB ne prennent pas en charge l'interface API LONG (Application Programming Interface), et vice versa.

Comparer les données de type LONG et LOBLa comparaison entre la fonctionnalité LOB et les anciens types de données peut s'avérer utile. Ci-dessous, LONG fait référence à LONG et LONG RAW, et LOB à toutes les données de type LOB.

Les données de type LOB permettent d'utiliser plusieurs colonnes LOB par table ou plusieurs attributs dans un type d'objet, alors que le type LONG n'en accepte qu'une seule ou qu'un seul.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Types de données de stockagedes objets LOB

LONG, LONG RAW

Une colonne par table

Jusqu'à 2 gigaoctets

SELECT renvoie les données

Données stockées dans le segment

Pas de prise en charge de type d'objet

Accès séquentiel aux segments de données

LOB

Plusieurs colonnes par table

Jusqu'à 4 gigaoctets

SELECT renvoie un pointeur

Données stockées dans le segment ou hors du segment

Prise en charge des types d'objet

Accès direct aux segments de données

Page 366: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-10 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Comparer les données de types LONG et LOB (suite)La taille maximale des données de type LONG est de 2 gigaoctets alors que celle des données de type LOB peut être égale à 4 gigaoctets maximum.

Lors de leur extraction, les types de données LOB renvoient le pointeur alors que les types de données LONG renvoient les données.

Les types de données LOB stockent un pointeur dans la table et les données dans un autre emplacement, sauf si la taille des données de type VARCHAR2 est inférieure à la taille maximale de 4 000 octets. Les types de données LONG stockent toutes les données dans le segment. En outre, les types de données LOB permettent de stocker les données dans un segment et un tablespace distincts ou dans un fichier hôte.

Les données de type LOB prennent en charge les attributs de type d'objet (sauf le type de données NCLOB), contrairement aux données de type LONG.

Les données de type LONG sont stockées sous forme de morceaux de lignes chaînés, un morceau de ligne d'un bloc pointant vers le morceau de ligne suivant d'un autre bloc. En conséquence, l'accès aux segments s'effectue séquentiellement. En revanche, les données de type LOB permettent d'accéder directement aux segments de données via une interface de type fichier.

Page 367: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-11

.....................................................................................................................................................Types de données Oracle

Type de données ROWID et UROWIDROWID est une pseudo-colonne qui peut être interrogée en même temps que les autres colonnes d'une table. Ce type de données présente les caractéristiques suivantes :

• Il identifie de manière unique chaque ligne dans une base de données.

• Il n'est pas enregistré explicitement sous la forme d'une valeur de colonne.

• Bien que le type ROWID ne fournisse pas directement l'adresse physique d'une ligne, il permet de rechercher la ligne.

• Il constitue la méthode la plus rapide pour accéder à une ligne d'une table.

• Les données de type ROWID sont stockées dans des index définissant des lignes ayant des valeurs de clé spécifiques.

La version 8.1 du serveur Oracle fournit un nouveau type de données unique appelé "universale rowid" ou UROWID. Il prend en charge les données de type ROWID des tables étrangères (tables non Oracle) et peut stocker n'importe quelle donnée de ce type. Pour pouvoir utiliser le type de données UROWID, vous devez affecter la valeur 8.1 ou supérieure au paramètre COMPATIBLE.

Format des données de type ROWIDLes données de type ROWID nécessitent 10 octets de stockage sur disque et s'affichent sur 18 caractères. Ces données sont constituées des éléments suivants :

• numéro d'objet de données : affecté à chaque objet de données créé, tel qu'une table ou un index, et unique dans la base de données,

• numéro de fichier relatif : unique pour chaque fichier d'un tablespace,

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Type de données ROWID

OOOOOO BBBBBBFFF RRR

Numéro d'objetde données

Numéro defichier relatif

Numérode ligne

Numérode bloc

Format ROWID

• Identificateur de ligne unique.

• Utilisé pour rechercher une ligne.

Page 368: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-12 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Format des données de type ROWID (suite)• numéro de bloc : indique l'emplacement du bloc contenant la ligne dans le fichier,

• numéro de ligne : indique la position du pointeur du répertoire des lignes dans l'en-tête de bloc.

En interne, le numéro d'objet de données nécessite 32 bits, le numéro de fichier relatif, 10 bits, le numéro de bloc, 22 bits, et le numéro de ligne, 16 bits, soit un total de 80 bits, ou 10 octets.

Les données de type ROWID s'affichent en utilisant un schéma d'encodage en base 64 qui utilise six positions pour le numéro d'objet, trois positions pour le numéro de fichier relatif, six positions pour le numéro de bloc et trois positions pour le numéro de ligne. Ce schéma utilise les caractères "A-Z", "a-z", "0-9", "+" et "/"—, soit un total de 64 caractères, comme dans l'exemple ci-dessous :

SQL> SELECT id, ROWID FROM summit.department;

ID ROWID

--------- ------------------

10 AAADC4AACAAAAMAAAA

31 AAADC4AACAAAAMAAAB

32 AAADC4AACAAAAMAAAC

33 AAADC4AACAAAAMAAAD

34 AAADC4AACAAAAMAAAE

35 AAADC4AACAAAAMAAAF

41 AAADC4AACAAAAMAAAG

42 AAADC4AACAAAAMAAAH

43 AAADC4AACAAAAMAAAI

44 AAADC4AACAAAAMAAAJ

45 AAADC4AACAAAAMAAAK

50 AAADC4AACAAAAMAAAL

Dans cet exemple :

• AAADC4 correspond au numéro d'objet de données.

• AAC représente le numéro de fichier relatif.

• AAAAMA indique le numéro de bloc.

• AAA définit le numéro de ligne du département dont l'ID=10.

Page 369: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-13

.....................................................................................................................................................Types de données Oracle

Rechercher une ligne à l'aide du type de données ROWIDEtant donné qu'un segment ne peut résider que dans un seul tablespace, le serveur Oracle peut identifier le tablespace contenant la ligne en utilisant le numéro d'objet de données.

Le numéro de fichier relatif figurant dans le tablespace identifie le fichier, le numéro de bloc identifie le bloc contenant la ligne, et le numéro de ligne identifie la ligne dans le répertoire des lignes.

L'entrée du répertoire des lignes peut permettre de rechercher le début de la ligne.

Ainsi, le type de données ROWID permet de rechercher n'importe quelle ligne dans une base de données.

Page 370: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-14 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Utiliser un ROWID restreint dans Oracle7 et les versions antérieuresLes versions antérieures du serveur Oracle8 utilisaient le format ROWID restreint. Un ROWID restreint utilisait seulement six octets en interne et ne contenait pas de numéro d'objet de données. Ce format était acceptable dans Oracle7 ou les versions antérieures, car les numéros de fichier étaient uniques dans une base de données. Ainsi, les versions précédentes étaient limitées à 1 022 fichiers de données.

Bien qu'Oracle8 ait supprimé cette limitation en utilisant des numéros de fichier relatifs à des tablespaces, un ROWID restreint est toujours utilisé dans des objets, tels que les index non partitionnés ou les tables non partitionnées, dans lesquels toutes les entrées d'index font référence aux lignes d'un même segment.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

ROWID restreint

• Peut identifier les lignes d'un segment.

• Nécessite moins d'espace.

BBBBBBBB FFFFRRRR

Numérode bloc

Numérode ligne

Numérode fichier

. .

Page 371: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-15

.....................................................................................................................................................Types de données Oracle

Types de données EnsembleDeux types de données Ensemble permettent de stocker les données répétitives d'une ligne d'une table. Dans les versions antérieures du serveur Oracle8i, l'option Objects était nécessaire pour définir et utiliser les ensembles. Ces deux types de données sont décrits brièvement ci-dessous.

Tableaux de taille variable (VARRAY) Ces tableaux permettent de stocker des listes contenant un petit nombre d'éléments, tels que des numéros de téléphone de clients.

Les tableaux VARRAY présentent les caractéristiques suivantes :

• Un tableau contient des données ordonnées.

• Les données d'un tableau ont tous le même type.

• Chaque élément comporte un index qui correspond à un numéro indiquant la position de l'élément dans le tableau.

• Le nombre d'éléments d'un tableau correspond à la taille du tableau.

• Le serveur Oracle permet d'utiliser des tableaux de taille variable, et c'est la raison pour laquelle ils s'appellent VARRAY, mais la taille maximale du tableau doit être définie lors de sa déclaration.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Ensembles

• Les ensembles sont des objets qui contiennentdes objets.

• Les tableaux VARRAY sont des élémentsordonnés contenant un nombre et une limite.

• Les tables imbriquées sont des tables contenantune colonne ou une variante du type de donnéesTABLE.

TableauVARRAY

Tableimbriquée

Page 372: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-16 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Types de données Ensemble (suite)

Tables imbriquées Les tables imbriquées permettent de définir une table sous forme de colonne dans une table. Ces tables peuvent être utilisées pour stocker des ensembles pouvant contenir un grand nombre d'enregistrements, tels que le nombre d'articles d'une commande.

Généralement, les tables imbriquées présentent les caractéristiques suivantes :

• Une table imbriquée est un ensemble non ordonné d'enregistrements ou de lignes.

• Les lignes d'une table imbriquée présentent la même structure.

• Les lignes d'une table imbriquée sont stockées dans une table distincte de la table mère, avec un pointeur vers la ligne correspondante dans la table mère.

• Les caractéristiques de stockage d'une table imbriquée peuvent être définies par l'administrateur de base de données.

• Il n'existe pas de taille maximale prédéfinie pour une table imbriquée.

Types de données Relation (REF)Les types de données Relation servent de pointeurs dans la base de données. L'utilisation de ces types de données fait appel à l'option Objects. Par exemple, chaque élément ordonné peut pointer vers une ligne de la table PRODUCTS ou y faire référence sans avoir à stocker la référence du produit.

Types de données définis par l'utilisateurLe serveur Oracle permet à l'utilisateur de définir des types de données abstraits et de les utiliser dans l'application. L'utilisation de ces types de données fait appel à l'option Objects.

Page 373: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-17

.....................................................................................................................................................Créer une table

Créer une table

SyntaxeUtilisez la commande suivante pour créer une table :

CREATE TABLE [schema.] table

(column datatype [ , column datatype ] ...)

[TABLESPACE tablespace ]

[ PCTFREE integer ]

[ PCTUSED integer ]

[ INITRANS integer ]

[ MAXTRANS integer ]

[ STORAGE storage-clause ]

[LOGGING | NOLOGGING]

[CACHE | NOCACHE] ]

où : schema est le propriétaire de la table,

table est le nom de la table,

column est le nom de la colonne,

data type est le type de données de la colonne,

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Créer une table

CREATE TABLE employee(

id NUMBER(7),

last_name VARCHAR2(25),

dept_id NUMBER(7))

PCTFREE 20 PCTUSED 50

STORAGE(INITIAL 200K NEXT 200K

PCTINCREASE 0 MAXEXTENTS 50)

TABLESPACE data;

Page 374: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-18 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Syntaxe (suite)TABLESPACE indique le tablespace de destination de

la table à créer,

PCTFREE correspond à l'espace réservé dans chaque bloc (sous la forme d'un pourcentage de l'espace total moins l'en-tête de bloc) à l'augmentation de la longueur des lignes,

PCTUSED définit la limite inférieure de l'espace utilisé dans un bloc (après utilisation de l'espace défini par le paramètre PCTFREE) à partir de laquelle d'autres lignes peuvent être insérées,

INITRANS définit le nombre d'entrées de transaction préallouées dans chaque bloc (la valeur par défaut est 1),

MAXTRANS limite le nombre d'entrées de transaction pouvant être allouées à chaque bloc (la valeur par défaut est 255),

STORAGE identifie la clause de stockage qui détermine l'allocation des extents (ensemble de blocs contigus) à la table,

LOGGING indique que la création de la table sera consignée dans le fichier de journalisation (redo log), (indique également que toutes les opérations suivantes effectuées sur la table sont enregistrées ; il s'agit de la valeur par défaut),

NOLOGGING indique que la création de la table et de certains types de chargement de données ne sera pas consignée dans le fichier de journalisation,

CACHE indique que les blocs extraits pour cette table sont placés à l'extrémité la plus récemment utilisée de la liste LRU du cache de tampons (buffer cache), même lorsque la table est balayée en totalité,

NOCACHE indique que les blocs extraits de cette table sont placés à la fin de la liste LRU du cache des tampons, lorsque la table est balayée en totalité.

Page 375: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-19

.....................................................................................................................................................Créer une table

Syntaxe (suite)Remarque :

• En général, les tables doivent être créées avec une clé primaire. La gestion des contraintes est décrite dans le chapitre "Gérer l'intégrité des données".

• Si vous avez défini le paramètre MINIMUM EXTENT du tablespace, la taille des extents de la table est arrondie au multiple suivant le plus proche.

• Si vous omettez la clause [NO]LOGGING, l'attribut de journalisation de la table correspond par défaut à celui du tablespace dans lequel elle réside.

• Si vous affectez au paramètre MINEXTENTS une valeur supérieure à 1 et que le tablespace contient plusieurs fichiers de données, les extents sont répartis dans les différents fichiers du tablespace.

Copier une table existanteUtilisez la commande CREATE TABLE avec une sous-interrogation pour copier une table en totalité ou partiellement.

La syntaxe simplifiée est :CREATE TABLE [schema.]table

[ LOGGING | NOLOGGING ]

...

AS

subquery

Les autres clauses, telles que TABLESPACE, STORAGE et les paramètres d'utilisation des blocs peuvent être définis lors de la création d'une table à partir d'une autre table. Utilisez la clause NOLOGGING pour interdire la génération d'entrées de journalisation (redo log entries) et accélérer la création de la table.

Lorsque vous créez une table en copiant une table, les contraintes, les déclencheurs et les privilèges de table ne sont pas copiés. Si la table d'origine contient une colonne NOT NULL, cette colonne existe également dans la nouvelle table.

Page 376: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-20 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Utiliser Schema Manager pour créer une table

11-11 Démarrez Schema Manager :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Schema Manager

2 Sélectionnez l'option permettant de vous connecter directement à une base de données. Entrez l'administrateur system, le mot de passe manager, le nom de service your working database, puis cliquez sur OK.

3 Sélectionnez Object—>Create dans la barre de menus.

4 Sélectionnez Table dans la liste des objets, sélectionnez l'option Use Wizard, puis cliquez sur Create.

5 Entrez les informations relatives à la table dans l'assistant Table Wizard, telles que le nom, le tablespace, le propriétaire, les colonnes, les types de données et les tailles. Cliquez sur Finish.

6 Développez le dossier Tables pour vérifier si la table a été créée.

Vous pouvez également sélectionner une table existante dans le navigateur et utiliserObject—>Create Like pour créer une table ayant les mêmes caractéristiques de colonne et de stockage que la table sélectionnée.

Autres options Oracle Schema Manager permet également de définir automatiquement les paramètres de stockage et d'utilisation des blocs à partir d'une estimation du volume initial, de la fréquence d'augmentation de la taille de la table et de son activité DML.

Page 377: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-21

.....................................................................................................................................................Créer une table

Tables temporairesOutre les tables permanentes, vous pouvez créer des tables temporaires qui contiennent les données privées des sessions qui n'existent que le temps d'une transaction ou d'une session.

La commande CREATE GLOBAL TEMPORARY TABLE permet de créer une table temporaire spécifique à une transaction ou à une session. Les données d'une table temporaire de transaction et celles d'une table temporaire de session existent respectivement pendant la durée de la transaction et pendant la durée de la session. Les données d'une session sont privées. Chaque session ne peut voir et modifier que ses propres données. Aucun verrou DML n'est placé sur les données d'une table temporaire. Les clauses qui contrôlent la durée de stockage des lignes sont :

• ON COMMIT DELETE ROWS : indique que les lignes sont uniquement visibles dans la transaction,

• ON COMMIT PRESERVE ROWS : indique que les lignes sont visibles pour toute la session.

Vous pouvez créer des index, des vues et des déclencheurs dans les tables temporaires et utiliser également les utilitaires Export et Import pour exporter et importer la définition d'une table temporaire. Toutefois, aucune donnée n'est exportée, même si vous utilisez l'option ROWS. La définition d'une table temporaire est visible dans toutes les sessions.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Tables temporaires

• Les lignes sont réservées à la session.

• Les tables contiennent les données uniquementpendant la durée de la transaction ou de lasession.

• Les verrous LMD ne sont pas placés sur lesdonnées.

• Les LMD ne génèrent pas d'informations dejournalisation.

ON COMMIT PRESERVE ROWS;ON COMMIT PRESERVE ROWS;

CREATE GLOBAL TEMPORARY TABLE employee_temp

AS SELECT * FROM employee;

CREATE GLOBAL TEMPORARY TABLE employee_temp

AS SELECT * FROM employee;

Page 378: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-22 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Instructions de création d'une table• Placez les tables dans des tablespaces distincts et non dans des tablespaces

contenant des segments d'annulation, des segments temporaires et des index.

• Placez les tables dans des tablespaces gérés localement pour éviter la fragmentation.

• Utilisez quelques tailles d'extent standard multiples de 5 × DB_BLOCK_SIZE afin de limiter la fragmentation.

• Pour améliorer les performances du balayage complet de tables, alignez les tailles d'extent à l'aide du paramètre d'initialisation DB_FILE_MULTIBLOCK_READ_COUNT qui définit le nombre de blocs demandés par les processus serveur dans chaque appel de lecture du système d'exploitation lors de la lecture de l'ensemble de la table.

• Utilisez la clause CACHE pour les petites tables de référence pouvant être fréquemment utilisées.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Créer une table : instructions

• Utilisez quelques tailles d'extent standard pour lestables afin de réduire la fragmentation destablespaces.

• Utilisez des tablespaces gérés localement pouréviter la fragmentation.

• Utilisez la clause CACHE pour les petites tablesfréquemment utilisées.

Page 379: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-23

.....................................................................................................................................................Créer une table

Définir le paramètre PCTFREEPlus la valeur du paramètre PCTFREE est élevée, plus l'espace disponible pour la mise à jour d'un bloc d'une base de données est élevé. Définissez une valeur élevée lorsque la table contient :

• des colonnes initialement NULL, puis mises à jour à l'aide d'une valeur,

• des colonnes dont la taille risque d'augmenter à la suite d'une mise à jour.

En affectant une valeur plus élevée au paramètre PCTFREE, vous réduisez la densité de bloc, c'est-à-dire que chaque bloc contiendra moins de lignes.

La formule définie ci-dessus permet au bloc de disposer d'un espace suffisant permettant à la taille de la ligne d'augmenter.

Définir le paramètre PCTUSEDDéfinissez le paramètre PCTUSED pour permettre de renvoyer le bloc dans la liste d'espaces libres uniquement lorsqu'il existe un espace suffisant pour accepter une ligne moyenne. Si un bloc de la liste des espaces libres ne dispose pas de l'espace suffisant pour insérer une ligne, le serveur Oracle consulte le bloc suivant de la liste. Ce balayage linéaire continue jusqu'à ce qu'un bloc disposant de l'espace suffisant soit trouvé ou que la fin de la liste soit atteinte. Cette formule permet de réduire le temps de balayage de la liste d'espaces libres en augmentant la probabilité de trouver un bloc ayant l'espace libre nécessaire.

Remarque : la longueur de ligne moyenne peut être évaluée à l'aide de la commande ANALYZE TABLE, qui est expliquée dans l'une des sections ci-après.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Paramètres PCTFREE et PCTUSED

• Calcul de PCTFREE

(Taille de ligne moyenne - taille de ligne initiale) * 100

Taille de ligne moyenne

• Calcul de PCTUSED

Taille de ligne moyenne * 100100 - PCTFREE -

Espace de données disponible

Page 380: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-24 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Migrer des lignesSi vous affectez une valeur faible au paramètre PCTFREE, le bloc risque de ne pas contenir l'espace suffisant permettant à la longueur de la ligne d'augmenter à la suite d'une mise à jour. Dans ce cas, le serveur Oracle transfère la totalité de la ligne vers un nouveau bloc et conserve le pointeur du bloc d'origine vers le nouveau bloc. Cette opération s'appelle une migration de ligne. Lors de la migration d'une ligne, les performances des E/S sur la ligne diminuent, car le serveur Oracle doit balayer deux blocs de données pour extraire la ligne.

Chaîner des lignesUn chaînage de ligne se produit lorsqu'une ligne ne peut pas tenir dans un bloc. Cette situation peut se produire lorsque la ligne contient des colonnes de très grande taille. Dans ce cas, le serveur Oracle divise la ligne en morceaux de ligne plus petits. Chaque morceau de ligne est stocké dans un bloc avec les pointeurs associés pour extraire et assembler la totalité de la ligne. Le chaînage de lignes peut être limité en définissant une plus grande taille de bloc ou en divisant, si possible, la table en plusieurs tables contenant moins de colonnes.

Remarque : la migration de lignes et le chaînage de lignes sont expliqués en détail dans le cours Oracle DBA : Tuning.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Migrer et chaîner des lignes

Avant la miseà jour

Après la miseà jour

Pointeur

Page 381: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-25

.....................................................................................................................................................Contrôler l'espace utilisé par les tables

Contrôler l'espace utilisé par les tables

Modifier les paramètres d'utilisation de blocs et de stockageVous pouvez modifier certains paramètres de stockage et tous les paramètres d'utilisation des blocs à l'aide de la commande ALTER TABLE.

SyntaxeALTER TABLE [schema.]table

{[ storage-clause ]

[ PCTFREE integer ]

[ PCTUSED integer ]

[ INITRANS integer ]

[ MAXTRANS integer]}

Impact de la modification des paramètres de stockageLes paramètres que vous pouvez modifier et l'effet de leur modification sont les suivants :

• NEXT : lorsque le serveur Oracle alloue un autre extent à la table, la nouvelle valeur est utilisée. La taille des extents suivants augmente de la valeur définie par le paramètre PCTINCREASE.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Modifier les paramètres d'utilisationde blocs et de stockage

ALTER TABLE summit.employee

PCTFREE 30

PCTUSED 50

STORAGE(NEXT 500K

MINEXTENTS 2

MAXEXTENTS 100);

Page 382: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-26 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Impact de la modification des paramètres de stockage (suite)• PCTINCREASE : la modification de la valeur du paramètre PCTINCREASE est

enregistrée dans le dictionnaire de données. La nouvelle valeur est utilisée pour recalculer la valeur du paramètre NEXT lorsque l'extent suivant est alloué par le serveur Oracle. Supposons qu'une table à deux extents comporte les paramètres NEXT=10K et PCTINCREASE=0. Si vous affectez la valeur 100 au paramètre PCTINCREASE, le troisième extent alloué sera de 10 ko, le quatrième de 20 ko, et ainsi de suite.

• MINEXTENTS : vous pouvez affecter au paramètre MINEXTENTS une valeur inférieure ou égale au nombre actuel d'extents de la table. La nouvelle valeur n'entre pas immédiatement en vigueur, mais elle est prise en compte si la table est tronquée.

• MAXEXTENTS : vous pouvez affecter au paramètre MAXEXTENTS une valeur égale ou supérieure au nombre actuel d'extents de la table.

Restrictions Vous ne pouvez pas modifier la valeur du paramètre INITIAL d'une table.

La valeur du paramètre NEXT est arrondie à une valeur multiple de la taille du bloc, égale ou supérieure à la valeur définie.

Paramètres d'utilisation de blocsVous pouvez modifier la valeur des paramètres d'utilisation de blocs pour :

• améliorer l'utilisation de l'espace,

• réduire les possibilités de migration.

La modification des paramètres d'utilisation de blocs a les effets suivantes :

• PCTFREE : la modification du paramètre PCTFREE affecte les insertions suivantes. Les blocs déjà remplis et donc inutilisés pour les insertions (100/PCTFREE) ne sont pas affectés jusqu'à ce qu'ils soient renvoyés dans la liste d'espaces libres. Ils ne peuvent être placés dans la liste d'espaces libres que si leur taux d'utilisation tombe sous la valeur du paramètre PCTUSED.

• PCTUSED : la modification du paramètre PCTUSED affecte tous les blocs de la table. Si une ligne est mise à jour ou supprimée, l'utilisation du bloc contenant la ligne est vérifiée et le bloc est réutilisé pour y insérer des données si son taux d'utilisation est inférieur à la valeur du paramètre PCTUSED.

• INITRANS : la modification du paramètre INITRANS n'affecte que les nouveaux blocs.

• MAXTRANS : la modification du paramètre MAXTRANS affecte tous les blocs de la table.

Page 383: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-27

.....................................................................................................................................................Contrôler l'espace utilisé par les tables

Utiliser Oracle Enterprise Manager pour modifier les paramètres de stockage1 Démarrez Schema Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Schema Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez le dossier Tables.

4 Développez le nom d'utilisateur (ou schéma).

5 Sélectionnez la table.

6 Modifiez les valeurs de l'onglet Storage de la fenêtre de propriétés. Notez que cette méthode ne permet pas de modifier le nombre minimum d'extents, ni le nombre initial de transactions.

7 Cliquez sur Apply.

Page 384: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-28 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Allouer manuellement des extentsVous pouvez être amené à allouer des extents manuellement :

• pour contrôler la distribution des extents d'une table dans les fichiers,

• avant de charger les données en masse pour empêcher l'augmentation dynamique de la taille des tables.

SyntaxeUtilisez la commande suivante pour allouer un extent à une table :

ALTER TABLE [schema.]table

ALLOCATE EXTENT [ ([SIZE integer [K|M]]

[ DATAFILE 'filename' ]) ]

Si vous ne définissez pas le paramètre SIZE, le serveur Oracle utilise la taille d'extent NEXT_EXTENT de DBA_TABLES pour allouer l'extent.

Le fichier défini dans la clause DATAFILE doit appartenir au tablespace contenant la table. Sinon, l'instruction génère une erreur. Si vous n'utilisez pas la clause DATAFILE, le serveur Oracle alloue l'extent dans l'un des fichiers du tablespace contenant la table.

Remarque : la valeur NEXT_EXTENT de DBA_TABLES n'est pas affectée par l'allocation manuelle d'extents. Le serveur Oracle ne recalcule pas la taille de l'extent suivant lorsque cette commande est exécutée.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Allouer manuellement des extents

ALTER TABLE summit.employee

ALLOCATE EXTENT(SIZE 500K

DATAFILE '/DISK3/DATA01.DBF');

Page 385: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-29

.....................................................................................................................................................Contrôler l'espace utilisé par les tables

Transférer ou réorganiser une tableOracle8i permet de déplacer une table non partitionnée sans recourir à l'utilitaire Export ou Import. Cela s'avère utile pour :

• transférer une table d'un tablespace vers un autre,

• réorganiser la table pour supprimer la migration de lignes.

Après avoir transféré une table, vous devez reconstituer les index pour éviter l'erreur suivante :

SQL> select * from employee where id=23;

select * from employee where id=23

*

ERROR at line 1:

ORA-01502: index 'SUMMIT.EMPLOYEE_ID_PK' or partition of such index is in unusable state

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Réorganiser les tables non partitionnées

ALTER TABLE employee

MOVE TABLESPACE data1;

ALTER TABLE employee

MOVE TABLESPACE data1;

• Transfère les données dans un nouveau segment,tout en conservant les index, les contraintes, lesprivilèges, etc. dans la table.

• Utilisé pour transférer une table vers untablespace différent ou pour réorganiser lesextents.

Page 386: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-30 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Description du repère high-water mark• Le repère high-water mark d'une table indique le dernier bloc utilisé de la table.

• Lorsque des données sont insérées dans la table, le repère high-water mark se déplace pour indiquer le dernier bloc utilisé.

• Le repère high-water mark n'est pas réinitialisé lorsque des lignes sont supprimées de la table.

• Le repère high-water mark est stocké dans l'en-tête de segment de la table.

• Lorsque le serveur Oracle effectue des balayages complets de tables, il lit tous les blocs jusqu'au repère high-water mark.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Espace libreaprès suppression

Bloc inutilisé

ID d'extent 0 1 2 3 4

ID d'extent 0 1 2 3 4

Bloc utilisé

Repère high-water mark

Après les insertions :

Après les suppressions :Repère

high-water mark

Page 387: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-31

.....................................................................................................................................................Contrôler l'espace utilisé par les tables

Rechercher le repère high-water markLe package DBMS_SPACE contient une procédure permettant de rechercher le repère high-water mark et le nombre de blocs situés au-dessus du repère. Bien que ces informations puissent être obtenues à partir du dictionnaire de données après l'analyse de la table, le package DBMS_SPACE permet d'accéder plus rapidement aux informations sans affecter les performances.

Syntaxe Vous pouvez utiliser le bloc PL/SQL suivant pour rechercher et afficher le nombre de blocs alloués à une table et le nombre de blocs non utilisés :

SQL> DECLARE

2 v_owner VARCHAR2(30) := 'SUMMIT' ;

3 v_segment_name VARCHAR2(30) := 'EMPLOYEE';

4 v_segment_type VARCHAR2(30) := 'TABLE';

5 v_total_blocks NUMBER;

6 v_total_bytes NUMBER;

7 v_unused_blocks NUMBER;

8 v_unused_bytes NUMBER;

9 v_last_used_extent_file_id NUMBER;

10 v_last_used_extent_block_id NUMBER;

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Rechercher le repère high-water mark :DBMS_SPACE.UNUSED_SPACE

ID d'extent 0 1 2 3 4

Repère high-water markLAST_USED_EXTENT_FILE_ID, LAST_USED_EXTENT_BLOCK_ID

TOTAL_BLOCKS

UNUSED_BLOCKS

Page 388: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-32 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Syntaxe (suite) 11 v_last_used_block NUMBER;

12 BEGIN

13 dbms_space.unused_space(v_owner,

14 v_segment_name,

15 v_segment_type,

16 v_total_blocks,

17 v_total_bytes,

18 v_unused_blocks,

19 v_unused_bytes,

20 v_last_used_extent_file_id,

21 v_last_used_extent_block_id,

22 v_last_used_block

23 );

24 dbms_output.put_line(INITCAP(v_segment_type)||' : '||v_owner||'.'||v_segment_name);

25 dbms_output.put_line('Total Blocks : '||TO_CHAR(v_total_blocks));

26 dbms_output.put_line('Blocks above HWM : '||TO_CHAR(v_unused_blocks));

27 END;

28 /

Statement processed.

Table : SUMMIT.EMPLOYEE

Total Blocks : 25

Blocks above HWM : 23

Remarque : le package DBMS_SPACE est créé lorsque les scripts dbmsutil.sql et prvtutil.plb sont appelés par le script catproc.sql.

Page 389: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-33

.....................................................................................................................................................Contrôler l'espace utilisé par les tables

Libérer l'espace inutiliséSi vous allouez des extents de grande taille à une table et que les extents ne sont pas utilisés en totalité, vous pouvez libérer manuellement de l'espace dans la table. L'espace libéré devient alors disponible pour les autres segments du tablespace.

SyntaxeUtilisez la commande suivante pour libérer de l'espace dans une table :

ALTER TABLE [schema.]table

DEALLOCATE UNUSED [KEEP integer [ K|M ] ]

KEEP définit le nombre d'octets à conserver au-dessus du repère high-water mark.

Si vous ne définissez pas la clause KEEP dans la commande, le serveur Oracle libère tout l'espace inutilisé au-dessus du repère high-water mark. Si le repère high-water mark se trouve à un extent en dessous de la valeur MINEXTENTS, le serveur Oracle libère des extents au-dessus de MINEXTENTS.

Examinons l'exemple de la diapositive. Si la valeur du paramètre MINEXTENTS de la table est égale ou inférieure à quatre, le serveur Oracle libère tous les blocs inutilisés au-dessus du repère high-water mark. Notez que le cinquième extent (avec ID=4) ne contient maintenant que cinq blocs. Si la valeur du paramètre MINEXTENTS de table est égale à cinq, le serveur Oracle ne libère pas d'espace dans le cinquième extent.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Espace libreaprès suppression

Bloc inutilisé

avantdésallocation

Bloc utilisé

Libérer l'espace inutilisé

ALTER TABLE summit.employee

DEALLOCATE UNUSED;

aprèsdésallocation

Repèrehigh-water mark

ID d'extent 43210

43210ID d'extent

Page 390: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-34 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Syntaxe (suite)Remarque :

• Etant donné que la libération d'espace à l'aide de cette commande libère l'espace inutilisé dans un extent, son utilisation fréquente risque de fragmenter l'espace des fichiers de données. Pour éviter ce problème, définissez le paramètre MINIMUM EXTENT du tablespace.

• Pour libérer tout l'espace en dessous du repère high-water mark, même si l'extent que désigne le repère correspond à un nombre d'extents inférieur à la valeur du paramètre MINEXTENTS, utilisez le paramètre KEEP 0.

Page 391: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-35

.....................................................................................................................................................Contrôler l'espace utilisé par les tables

Tronquer une tableLa troncature d'une table supprime toutes les lignes d'une table et libère l'espace inutilisé. Dans l'exemple de la diapositive, la valeur du paramètre MINEXTENTS de la table est égale à 2.

SyntaxeTRUNCATE TABLE [schema.] table

[{DROP | REUSE} STORAGE]

Cette commande a les effets suivants :

• Elle supprime toutes les lignes de la table.

• Aucune donnée d'annulation n'est générée et la commande valide implicitement les données, car la commande TRUNCATE TABLE est une commande LDD.

• Elle tronque les index correspondants.

• Une table référencée par une clé étrangère ne peut être tronquée.

• Les déclencheurs de suppression ne sont pas activés.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Tronquer une table

TRUNCATE TABLE summit.employee;TRUNCATE TABLE summit.employee;

ID d'extent 0 1

Repèrehigh-water mark

Espace libre

Page 392: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-36 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Syntaxe (suite)• Si vous utilisez la clause DROP (clause par défaut) :

– tous les extents, à l'exception de ceux définis par le paramètre MINEXTENTS, sont libérés,

– le repère high-water mark est réinitialisé et pointe vers le premier bloc de la table,

– le paramètre NEXT_EXTENT de la table a pour valeur la taille de l'extent libéré ayant l'ID le plus bas. Par exemple, si la valeur du paramètre MINEXTENTS est égale à 2, la valeur du paramètre NEXT_EXTENT est égale à la taille du troisième extent de la table.

• Vous devez définir la clause REUSE pour conserver tout l'espace inutilisé de la table.

• Les index sont affectés par la clause REUSE ou DROP.

Page 393: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-37

.....................................................................................................................................................Contrôler l'espace utilisé par les tables

Supprimer une tableVous pouvez supprimer une table devenue inutile ou une table que vous souhaitez réorganiser.

SyntaxeUtilisez la commande suivante pour supprimer une table :

DROP TABLE [schema.] table

[CASCADE CONSTRAINTS]

Lorsque vous supprimez une table, vous libérez les extents qu'elle utilise. Si les extents sont contigus, vous pouvez les fusionner automatiquement ou manuellement plus tard.

Remarque : vous devez utiliser l'option CASCADE CONSTRAINTS s'il s'agit de la table mère d'une relation de clé étrangère. Cette option est décrite en détail dans le chapitre "Gérer l'intégrité des données".

Utiliser Oracle Enterprise Manager pour supprimer une table1 Démarrez Schema Manager.

2 Développez le dossier Tables.

3 Développez le nom d'utilisateur (ou schéma).

4 Sélectionnez la table.

5 Sélectionnez Object—>Remove.

6 Sélectionnez Yes dans la boîte de dialogue.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Supprimer une table

DROP TABLE summit.department

CASCADE CONSTRAINTS;

DROP TABLE summit.department

CASCADE CONSTRAINTS;

Page 394: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-38 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Supprimer une colonne d'une tableLes versions antérieures d'Oracle8i ne permettaient pas de supprimer une colonne d'une table. Le serveur 8i d'Oracle permet désormais de supprimer des colonnes à partir des lignes d'une table. La suppression de colonnes permet de nettoyer les colonnes inutilisées et les colonnes ayant besoin d'espace, sans avoir à exporter ou à importer des données ni à recréer les index et les contraintes.

La suppression d'une colonne peut prendre un certain temps, car toutes les données de la colonne sont supprimées de la table.

Utiliser un point de reprise lors de la suppression d'une colonneLa suppression d'une colonne peut prendre un certain temps et nécessiter un espace d'annulation conséquent. Lorsque vous supprimez des colonnes dans des tables volumineuses, vous pouvez définir des points de reprise pour réduire l'espace d'annulation utilisé. Dans l'exemple de la diapositive, un point de reprise se constitue toutes les 1 000 lignes. La table a l'attribut INVALID tant que l'annulation est en cours. Si l'instance connaît un incident pendant l'annulation, la table conserve l'attribut INVALID au démarrage, et l'opération doit être poursuivie.

Utilisez l'instruction suivante pour reprendre une annulation interrompue :SQL> ALTER TABLE orders

DROP COLUMNS CONTINUE;

Cette commande génère une erreur lorsque la table a l'attribut VALID.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Supprimer une colonne

ALTER TABLE employee

DROP COLUMN comments

CASCADE CONSTRAINTS CHECKPOINT 1000;

Supprimer une colonne d'une table

• Cette commande supprime la longueur et lesdonnées de colonne de chaque ligne pour libérerde l'espace dans le bloc de données.

• La suppression d'une colonne d'une tablevolumineuse prend un temps considérable.

Page 395: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-39

.....................................................................................................................................................Contrôler l'espace utilisé par les tables

Marquer une colonne comme n'étant pas utiliséeAu lieu de supprimer une colonne d'une table, vous pouvez marquer la colonne pour indiquer qu'elle n'est pas utilisée, puis la supprimer ultérieurement. Ce marquage a l'avantage d'être relativement rapide dans la mesure où aucun espace disque n'est récupéré du fait qu'aucune donnée n'est supprimée. Vous pouvez supprimer ultérieurement les colonnes inutilisées de la table lorsque l'activité du système est faible.

Les colonnes inutilisées sont considérées comme n'appartenant pas à la table. Les interrogations ne peuvent pas voir les données des colonnes inutilisées. En outre, les noms et les types de données de ces colonnes n'apparaissent pas lorsque la commande DESCRIBE est exécutée. L'utilisateur peut ajouter une colonne en utilisant le nom d'une colonne inutilisée.

Vous pouvez, par exemple, marquer des colonnes comme étant inutilisées pour supprimer deux colonnes d'une même table. Lorsque vous supprimez deux colonnes d'une table, toutes les lignes de la table sont mises à jour deux fois. Si vous marquez des colonnes comme étant inutilisées et les supprimez, les lignes ne sont mises à jour qu'une seule fois.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Utiliser l'option UNUSED

ALTER TABLE orders

SET UNUSED COLUMN comments

CASCADE CONSTRAINTS;

ALTER TABLE orders

SET UNUSED COLUMN comments

CASCADE CONSTRAINTS;

• Supprimer les colonnes inutilisées

ALTER TABLE orders

DROP UNUSED COLUMNS CHECKPOINT 1000;

ALTER TABLE orders

DROP UNUSED COLUMNS CHECKPOINT 1000;

• Marquer une colonne comme n'étant pas utilisée

• Poursuivre l'opération de suppression de colonne

ALTER TABLE orders

DROP COLUMNS CONTINUE CHECKPOINT 1000;

ALTER TABLE orders

DROP COLUMNS CONTINUE CHECKPOINT 1000;

Page 396: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-40 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Identifier les tables contenant des colonnes inutiliséesPour identifier les tables contenant des colonnes inutilisées, interrogez la vue DBA_UNUSED_COL_TABS. Cette vue obtient le nom des tables contenant des colonnes inutilisées et le nombre de colonnes inutilisées qu'elles contiennent. L'interrogation suivante indique que la table ORDERS appartenant à l'utilisateur SUMMIT contient une colonne inutilisée :

SQL> select * from dba_unused_col_tabs;

OWNER TABLE_NAME COUNT

--------------------------- --------------------------- ---------

SUMMIT ORDERS 1

Restrictions relatives à la suppression d'une colonneVous ne pouvez pas :

• supprimer une colonne d'une table de type objet,

• supprimer des colonnes dans des tables imbriquées,

• supprimer toutes les colonnes d'une table,

• supprimer une colonne de clé de partitionnement,

• supprimer une colonne des tables dont SYS est propriétaire,

• supprimer une colonne de clé parent,

• supprimer une colonne d'une table organisée en index si la colonne est une clé primaire.

Page 397: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-41

.....................................................................................................................................................Extraire les informations relatives à une table

Extraire les informations relatives à une table

Obtenir des informations du dictionnaire de donnéesVous pouvez obtenir des informations sur les tables à partir du dictionnaire de données. Pour obtenir le numéro d'objet de données et l'emplacement de l'en-tête de table de toutes les tables appartenant à l'utilisateur SUMMIT, lancez l'interrogation suivante :

SQL> SELECT t.table_name, o.data_object_id,

2 s.header_file, s.header_block

3 FROM dba_tables t, dba_objects o, dba_segments s

4 WHERE t.owner=o.owner

5 AND t.table_name=o.object_name

6 AND t.owner=s.owner

7 AND t.table_name=s.segment_name

8 AND t.owner='SUMMIT';

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Extraire les informations relatives à une table

DBA_OBJECTSOWNEROBJECT_NAMEOBJECT_IDDATA_OBJECT_IDCREATED

DBA_SEGMENTSOWNERSEGMENT_NAMETABLESPACE_NAMEHEADER_FILEHEADER_BLOCK

DBA_TABLESOWNERTABLE_NAMEPCT_FREEPCT_USEDINITIAL_EXTENTNEXT_EXTENTMIN_EXTENTSMAX_EXTENTSPCT_INCREASECACHEBLOCKSEMPTY_BLOCKSCHAIN_CNTTEMPORARYDURATION

Page 398: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-42 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Obtenir des informations du dictionnaire de données (suite)

TABLE_NAME DATA_OBJECT_ID HEADER_FILE HEADER_BLOCK

---------- -------------- ----------- ------------

CUSTOMER 12743 2 902

DEPARTMENT 12745 2 912

EMPLOYEE 12748 2 927

IMAGE 12751 2 942

INVENTORY 12753 2 952

ITEM 12755 2 962

LONG_TEXT 12758 2 977

ORDERS 12760 2 987

PRODUCT 12762 2 997

REGION 12765 2 1012

TITLE 12768 2 1027

WAREHOUSE 12770 2 1037

12 rows selected.

Page 399: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-43

.....................................................................................................................................................Extraire les informations relatives à une table

Distribuer l'espace allouéVous pouvez obtenir le nombre d'extents, leur emplacement et leur taille en interrogeant la vue DBA_EXTENTS. L'exemple ci-dessous indique le nombre d'extents et le nombre total de blocs utilisés par une table dans chacun des fichiers de la base de données :

SQL> SELECT file_id, COUNT(*) AS Extents, SUM(blocks) AS Blocks

2 FROM dba_extents

3 WHERE owner='SUMMIT'

4 AND segment_name='EMPLOYEE'

5 GROUP BY file_id;

FILE_ID EXTENTS BLOCKS

------- ------- ------

3 1 25

1 row selected.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

DBA_EXTENTS

• OWNER

• SEGMENT_NAME

• EXTENT_ID

• FILE_ID

• BLOCK_ID

• BLOCKS

Extraire les informations sur les extents

Page 400: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-44 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Obtenir des informations sur le type de données ROWIDLe serveur Oracle fournit le package DBMS_ROWID, créé à partir du script dbmsutil.sql, lui-même appelé par le script catproc.sql.

Le package contient de nombreuses fonctions permettant d'effectuer des conversions de formats ROWID et de convertir le ROWID en composants individuels. La présente section contient des exemples d'utilisation de ce package.

Obtenir les composants ROWIDLancez l'interrogation suivante pour obtenir l'emplacement physique des lignes dans une table :

SQL> SELECT id, ROWID,

2 DBMS_ROWID.ROWID_OBJECT(ROWID) AS OBJECT,

3 DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) AS "RELATIVE FILE",

4 DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) AS BLOCK

5 FROM summit.department;

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Package DBMS_ROWID

Nom de fonction

ROWID_CREATE

ROWID_OBJECT

ROWID_RELATIVE_FNO

ROWID_BLOCK_NUMBER

ROWID_ROW_NUMBER

ROWID_TO_ABSOLUTE_FNO

ROWID_TO_EXTENDED

ROWID_TO_RESTRICTED

Description

Crée un identificateur ROWID à partir de composants.

Renvoie l'identificateur d'objet d'un ROWID.

Renvoie le numéro de fichier relatif d'un ROWID.

Renvoie le numéro de bloc d'un ROWID.

Renvoie le numéro de ligne d'un ROWID.

Renvoie le numéro de fichier absolu d'un ROWID.

Convertit un ROWID restreint en ROWID étendu.

Convertit un ROWID étendu en ROWID restreint.

Fonctions couramment utilisées :

Page 401: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-45

.....................................................................................................................................................Extraire les informations relatives à une table

Obtenir les composants ROWID (suite)ID ROWID OBJECT RELATIVE FILE BLOCK

-- ------------------ --------- ------------- ---------

10 AAADHJAACAAAAORAAA 12745 2 913

31 AAADHJAACAAAAORAAB 12745 2 913

32 AAADHJAACAAAAORAAC 12745 2 913

33 AAADHJAACAAAAORAAD 12745 2 913

34 AAADHJAACAAAAORAAE 12745 2 913

35 AAADHJAACAAAAORAAF 12745 2 913

41 AAADHJAACAAAAORAAG 12745 2 913

42 AAADHJAACAAAAORAAH 12745 2 913

43 AAADHJAACAAAAORAAI 12745 2 913

44 AAADHJAACAAAAORAAJ 12745 2 913

45 AAADHJAACAAAAORAAK 12745 2 913

50 AAADHJAACAAAAORAAL 12745 2 913

12 rows selected.

Rechercher le numéro de fichier absoluLancez l'interrogation suivante pour obtenir les numéros de fichier absolus des lignes dans SUMMIT.DEPARTMENT :

SQL> SELECT id, ROWID,

2 DBMS_ROWID.ROWID_TO_ABSOLUTE_FNO(ROWID,'SUMMIT','DEPARTMENT')

AS "FILE"

3 FROM summit.department;

ID ROWID FILE

--------- ------------------ ---------

10 AAADHJAACAAAAORAAA 2

31 AAADHJAACAAAAORAAB 2

32 AAADHJAACAAAAORAAC 2

33 AAADHJAACAAAAORAAD 2

34 AAADHJAACAAAAORAAE 2

35 AAADHJAACAAAAORAAF 2

41 AAADHJAACAAAAORAAG 2

42 AAADHJAACAAAAORAAH 2

43 AAADHJAACAAAAORAAI 2

44 AAADHJAACAAAAORAAJ 2

45 AAADHJAACAAAAORAAK 2

50 AAADHJAACAAAAORAAL 2

12 rows selected.

Page 402: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-46 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Synthèse

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Synthèse

Ce chapitre vous a permis d'apprendre :

• à créer une table avec les paramètres de stockageet d'utilisation de blocs appropriés,

• à contrôler le stockage d'une table,

• à utiliser le package DBMS_ROWID.

Page 403: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 11-47

.....................................................................................................................................................Synthèse

Pour référence

Contexte RéférenceParamètres d'initialisation DB_BLOCK_SIZE

Paramètres d'initialisation dynamique

DB_FILE_MULTIBLOCK_READ_COUNT

Vues dynamiques des performances AucuneVues du dictionnaire de données DBA_TABLES

DBA_SEGMENTS

DBA_OBJECTS

DBA_EXTENTSCommandes CREATE TABLE

CREATE GLOBAL TEMPORARY TABLE

ALTER TABLE ... STORAGE

ALTER TABLE ... PCTFREE ... PCTUSED

ALTER TABLE ... ALLOCATE EXTENT

ALTER TABLE ... DEALLOCATE UNUSED

TRUNCATE TABLE

DROP TABLE

ALTER TABLE ... DROP COLUMN

ALTER TABLE ... SET UNUSED COLUMN

ALTER TABLE ... DROP UNUSED COLUMNS

ALTER TABLE ... DROP COLUMNS CONTINUEProcédures et fonctions de package DBMS_SPACE.UNUSED_SPACE

DBMS_ROWID

Page 404: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................11-48 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 11 : Gérer les tables

Page 405: Oracle DBA - Architecture & Administration Vol.1

.................................

12

Gérer les index

Page 406: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-2 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

Objectifs

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Objectifs

A la fin de ce chapitre, vous pourrez :

• énumérer les différents types d'index et expliquerleur utilisation,

• créer des index B-Tree et bitmap,

• réorganiser les index,

• supprimer des index,

• obtenir des informations à partir du dictionnairede données.

Page 407: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-3

.....................................................................................................................................................Présentation

Présentation

Classification des indexUn index est une arborescence qui permet d'accéder directement à une ligne d'une table. Les index peuvent être classés en fonction de leur structure logique ou de leur mise en œuvre physique. La classification logique regroupe les index en fonction de l'application, alors que la classification physique dépend du mode de stockage des index.

Index monocolonne et concaténéLa clé d'un index monocolonne ne contient qu'une seule colonne, comme dans le cas d'un index de colonne contenant les numéros d'employé d'une table d'employés.

Un index concaténé, également appelé index composite, utilise plusieurs colonnes d'une table. Il n'est pas nécessaire que les colonnes d'un index concaténé respectent l'ordre des colonnes de la table et soient adjacentes; par exemple, l'index des colonnes des services et des postes d'une table d'employés.

Un index composite peut contenir jusqu'à 32 colonnes. Toutefois, la taille combinée de toutes les colonnes ne peut dépasser approximativement le tiers de la taille d'un bloc de données.

Index uniques et non uniquesUn index unique permet d'empêcher une colonne d'index de contenir deux valeurs de ligne de table identiques. Une clé d'index unique ne peut pointer que vers une seule ligne d'une table.

Dans un index non unique, une même clé peut être associée à plusieurs lignes.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Classification des index

• Index logiques

– monocolonnes ou concaténés,

– uniques ou non uniques,

– basés sur une fonction.

• Index physiques

– partitionnés ou non partitionnés,

– B-Tree,

– normaux ou à clé inversée,

– bitmap.

Page 408: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-4 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

Index basé sur une fonctionUn index basé sur une fonction est créé lorsque l'utilisateur emploie des fonctions ou des expressions impliquant une ou plusieurs colonnes d'une table à indexer. Un index basé sur une fonction précalcule la valeur de la fonction ou de l'expression et la stocke. Les index basés sur des fonctions peuvent être créés sous forme d'index B-Tree ou d'index bitmap.

Index partitionnés et non partitionnésLes index partitionnés sont utilisés avec les tables volumineuses pour stocker les entrées d'un index dans plusieurs segments. Le partitionnement permet de répartir un index sur un grand nombre de tablespaces, de réduire la contention lors des recherches dans l'index et de faciliter la gestion. Les index partitionnés sont souvent utilisés avec les tables partitionnées pour améliorer l'évolutivité et faciliter la gestion. Une partition d'index peut être créée pour chaque partition d'une table.

Ce chapitre explique comment créer et gérer les index B-Tree et bitmap non partitionnés.

Page 409: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-5

.....................................................................................................................................................Présentation

Stockage des indexBien que tous les index utilisent une structure B-Tree, le terme B-Tree est généralement associé à un index qui stocke une liste d'identificateurs ROWID pour chaque clé.

Structure d'un index B-TreeEn haut de l'index figure la racine contenant les entrées qui pointent vers le niveau suivant de l'index. Le niveau suivant correspond aux blocs de branchement qui pointent vers les blocs du niveau suivant de l'index. Au bas de l'arborescence se trouvent les nœuds feuille qui contiennent les entrées d'index qui pointent vers les lignes de la table. Les blocs feuille comportent deux liens facilitant le balayage de l'index dans l'ordre croissant et décroissant des valeurs de clé.

Format des entrées feuille d'un indexUne entrée d'index est constituée :

• d'un en-tête d'entrée, contenant le nombre de colonnes et les informations de verrouillage,

• de paires de valeurs correspondant à la longueur de la colonne de clé et à la valeur de la colonne, qui définissent la taille de la colonne dans la clé et la valeur de la colonne (le nombre de paires correspond au nombre maximal de colonnes dans l'index),

• de l'identificateur ROWID d'une ligne qui contient les valeurs de la clé.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Index B-Tree

En-tête d'entrée d'index

Longueur de colonne de clé

Valeur de colonne de clé

ROWID

Racine

Branche

Feuille

Entrée d'index

Page 410: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-6 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

Caractéristiques des entrées feuille d'un indexDans l'index B-Tree d'une table non partitionnée :

• Les valeurs de clé se répètent si plusieurs lignes ont la même valeur de clé.

• Il n'existe pas d'entrée d'index pour une ligne dont toutes les colonnes de clé sont NULL.

• L'identificateur ROWID restreint permet de pointer vers les lignes de la table, dans la mesure où toutes les lignes appartiennent au même segment.

Impact des opérations LMD sur un indexLe serveur Oracle gère tous les index lorsque des opérations LMD sont exécutées sur une table. L'impact d'une commande LMD sur un index est décrit ci-dessous :

• Les opérations d'insertion provoquent l'insertion d'une entrée d'index dans le bloc approprié.

• La suppression d'une ligne entraînent uniquement la suppression logique de l'entrée d'index. L'espace libéré par la ligne supprimée ne peut pas être utilisé pour de nouvelles entrées tant que toutes les entrées du bloc ne sont pas supprimées.

• Les mises à jour des colonnes de clé provoquent une suppression logique et une insertion dans l'index. La valeur du paramètre PCTFREE n'a aucun effet sur l'index, sauf lors de la création. Une nouvelle entrée peut être ajoutée à un bloc d'index, même si elle dispose d'un espace inférieur à celui défini par le paramètre PCTFREE.

Page 411: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-7

.....................................................................................................................................................Présentation

Index à clé inverséeContrairement à un index B-Tree standard, un index à clé inversée inverse les octets de chaque colonne indexée (sauf l'identificateur ROWID) tout en conservant l'ordre des colonnes. Lorsque les enregistrements sont insérés dans une clé croissante, telle qu'un numéro d'employé généré par le système, des goulets d'étranglement au niveau des entrées/sorties de l'index peuvent se produire, car toutes les mises à jour de l'index ont lieu dans le même emplacement de l'arborescence d'indexation. Les index à clé inversée répartissent les mises à jour de l'index dans l'ensemble de l'arborescence en inversant la valeur de la clé d'index.

Lors de l'insertion du numéro d'employé 7698 dans la table, par exemple, la valeur de clé 8967 est stockée dans l'index. Lors de l'insertion du numéro d'employé suivant (7782), l'entrée d'index 2877 est créée, ce qui permet de répartir la charge globale sur plusieurs blocs d'indexation.

Les index à entrée inversée sont utiles lors des interrogations contenant des prédicats d'égalité. Les clés adjacentes au niveau lexical n'étant pas stockées les unes à côté des autres dans un index à clé inversée, vous ne pouvez pas utiliser de plage de valeurs pour effectuer des recherches à l'aide de ce type d'index.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

KEY ROWID

ID (BLOCK# ROW# FILE#)----- -------------------1257 0000000F.0002.00012877 0000000F.0006.00014567 0000000F.0004.00016657 0000000F.0003.00018967 0000000F.0005.00019637 0000000F.0001.00019947 0000000F.0000.0001... ...... ...

Index à clé inversée

Indexation surEMPLOYEE (ID)

Table EMPLOYEE

ID FIRST_NAME JOB----- ---------- --------7499 ALLEN SALESMAN7369 SMITH CLERK7521 WARD SALESMAN7566 JONES MANAGER7654 MARTIN SALESMAN7698 BLAKE MANAGER7782 CLARK MANAGER… ... ... ...... ... ... ...

Page 412: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-8 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

Index basés sur une fonctionLes index basés sur une fonction permettent d'évaluer efficacement des instructions dont les clauses WHERE contiennent des fonctions. Vous pouvez créer un index basé sur une fonction pour matérialiser dans l'index les expressions effectuant de nombreux calculs et éviter au serveur Oracle d'avoir à calculer la valeur des expressions lors du traitement des instructions SELECT et DELETE. Toutefois, lors du traitement des instructions INSERT et UPDATE, le serveur Oracle doit toujours évaluer la fonction pour traiter l'instruction.

Les index basés sur une fonction peuvent être créés sous forme d'index B-Tree ou d'index bitmap.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

• Améliorent considérablement les interrogations.

• Les interrogations utilisant des expressionspeuvent utiliser l'index.

Créer des index basés sur une fonction

CREATE INDEX summit.item_quantity_to_deliver_idx

ON summit.item(quantity - quantity_shipped);

CREATE INDEX summit.item_quantity_to_deliver_idx

ON summit.item(quantity - quantity_shipped);

SELECT ord_id, item_id

FROM ITEM

WHERE (quantity - quantity_shipped) > 0;

SELECT ord_id, item_id

FROM ITEM

WHERE (quantity - quantity_shipped) > 0;

Page 413: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-9

.....................................................................................................................................................Présentation

Index bitmapDans certains cas, les index bitmap offrent plus d'avantages que les index B-Tree :

• lorsqu'une table contient des millions de lignes et que les colonnes de clé ont une faible cardinalité, c'est-à-dire qu'elles contiennent peu de valeurs distinctes. Par exemple, il est préférable d'utiliser des index bitmap plutôt que des index B-Tree pour les colonnes Sexe et Situation familiale d'une table contenant des enregistrements de passeport.

• lorsque les interrogations utilisent souvent une combinaison de plusieurs conditions WHERE impliquant l'opérateur OR,

• lorsque les colonnes sont en lecture seule ou qu'elles ne sont pas souvent mises à jour.

Structure d'un index bitmap Un index bitmap comporte également une structure B-Tree, mais le nœud feuille stocke un bitmap de chaque valeur de clé à la place d'une liste d'identificateurs ROWID. Chaque bit du bitmap correspond à un identificateur ROWID possible et, si le bit est défini, cela implique que la ligne ayant le descripteur ROWID correspondant contient la valeur de clé.

Comme le montre le graphique, le nœud feuille d'un index bitmap contient les éléments suivants :

• un en-tête d'entrée, contenant le nombre de colonnes et les informations de verrouillage,

• des valeurs de clé correspondant à la longueur et à la valeur de chaque colonne de clé (dans l'exemple, la clé n'est constituée que d'une seule colonne, et la valeur de la première entrée est Blue),

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Index bitmap

<Blue, 10.0.3, 12.8.3, 1000100100010010100>

<Green, 10.0.3, 12.8.3, 0001010000100100000>

<Red, 10.0.3, 12.8.3, 0100000011000001001>

<Yellow, 10.0.3, 12.8.3, 0010001000001000010>

cléROWIDde début

ROWIDde fin bitmap

Table

Index

Bloc 10

Bloc 11

Bloc 12

Fichier 3

Page 414: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-10 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

Structure d'un index bitmap (suite)• l'identificateur ROWID de début qui, dans l'exemple, contient le numéro de

fichier 3, le numéro de bloc 10 et le numéro de ligne 0,

• l'identificateur ROWID de fin qui, dans l'exemple, contient le numéro de bloc 12 et le numéro de ligne 8,

• un segment bitmap constitué d'une chaîne de bits (le bit est défini lorsque la ligne correspondante contient la valeur de clé, et n'est pas défini lorsque la ligne ne la contient pas. Le serveur Oracle utilise une technique de compression brevetée pour stocker les segments bitmap).

L'identificateur ROWID de début correspond à l'identificateur ROWID de la première ligne vers laquelle pointe le segment bitmap, c'est-à-dire que le premier bit du bitmap correspond à l'identificateur ROWID, le second bit du bitmap correspond à la ligne suivante du bloc, et l'identificateur ROWID de fin pointe vers la dernière ligne de la table couverte par le segment bitmap. Les index bitmap utilisent des identificateurs ROWID restreints.

Utiliser un index bitmapL'index B-Tree permet de rechercher les nœuds feuille qui contiennent les segments bitmap d'une valeur donnée de la clé. L'identificateur ROWID de départ et les segments bitmaps permettent de rechercher les lignes contenant la valeur de la clé.

Lorsque la colonne de clé est modifiée dans la table, les bitmaps doivent être modifiés. Cette opération verrouille les segments bitmap correspondants. Du fait que les verrous sont appliqués sur l'ensemble du segment bitmap, une ligne couverte par le bitmap ne peut pas être mise à jour par d'autres transactions tant que la première transaction n'est pas terminée.

Page 415: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-11

.....................................................................................................................................................Présentation

Comparer les index B-Tree et bitmap Les index bitmap sont plus compacts que les index B-Tree lorsqu'ils sont utilisés avec des colonnes de faible cardinalité.

Les mises à jour des colonnes de clé d'un index bitmap consomment davantage de ressources, car les bitmaps utilisent le verrouillage de niveau segment bitmap, alors que dans les index B-Tree, les verrous se trouvent sur les entrées correspondant à des lignes de la table.

Les index bitmap peuvent être utilisés pour exécuter des opérations telles que Bitmap OR, c'est-à-dire que le serveur Oracle peut utiliser deux segments bitmap pour exécuter une opération OR sur le bit et obtenir le bitmap correspondant. Ceci permet d'utiliser efficacement les bitmaps dans des interrogations qui utilisent le prédicat OR.

En résumé, les index B-Tree peuvent être mieux adaptés à un environnement OLTP pour indexer les tables dynamiques, alors que les index bitmap peuvent être utiles pour les environnements de data warehouse dans lesquels des interrogations complexes sont utilisées dans des tables statiques volumineuses.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Comparer les index B-Treeet bitmap

B-Tree

Pour colonnes de forte cardinalité

Mises à jour des colonnes de cléutilisant relativement peu de ressources

Inefficaces pour les interrogations utilisant des prédicats OR

Utiles pour environnement OLTP

Bitmap

Pour colonnes de faible cardinalité

Mises à jour des colonnes de cléconsommant davantage de ressources

Efficaces pour les interrogationsutilisant des prédicats OR

Utiles pour les data warehouses

Page 416: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-12 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

Créer des index

Créer des index B-Tree normauxVous pouvez créer un index dans le compte de l'utilisateur propriétaire de la table ou dans un compte différent, bien que celui-ci soit généralement créé dans le même compte que celui de la table.

SyntaxeUtilisez la commande suivante pour créer un index B-Tree :

CREATE [ UNIQUE ]INDEX [schema.] index

ON [schema.] table

(column [ ASC | DESC ] [ , column [ASC | DESC ] ] ...)

[ TABLESPACE tablespace ]

[ PCTFREE integer ]

[ INITRANS integer ]

[ MAXTRANS integer ]

[ storage-clause ]

[ LOGGING| NOLOGGING ]

[ NOSORT ]

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Créer des index B-Tree normaux

CREATE INDEX summit.employee_last_name_idx

ON summit.employee(last_name)

PCTFREE 30

STORAGE(INITIAL 200K NEXT 200K

PCTINCREASE 0 MAXEXTENTS 50)

TABLESPACE indx;

Page 417: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-13

.....................................................................................................................................................Créer des index

Syntaxe (suite)où : UNIQUE définit un index unique

(non unique par défaut),

schema correspond au propriétaire de l'index/de la table,

index est le nom de l'index,

table est le nom de la table,

column est le nom de la colonne,

ASC/ DESC est indiqué pour la compatibilité syntaxique avec les autres bases de données,

TABLESPACE définit le tablespace de création de l'index,

PCTFREE indique l'espace réservé dans chaque bloc (pourcentage de l'espace total moins l'en-tête de bloc) au moment de la création pour l'insertion de nouvelles entrées d'index,

INITRANS définit le nombre d'entrées de transaction préallouées dans chaque bloc(la valeur par défaut et minimale est 2),

MAXTRANS limite le nombre d'entrées de transaction pouvant être allouées à chaque bloc(la valeur par défaut est 255),

Storage-clause correspond à la clause qui déterminel'allocation des extents (ensembles de blocs contigus) à l'index,

LOGGING indique que la création de l'index et les opérations suivantes sur l'index sont consignées dans le fichier de journalisation (redo log) (valeur par défaut),

NOLOGGING indique que la création de l'index et certains types de chargement de données ne sont pas consignés dans le fichier de journalisation,

NOSORT indique que les lignes sont stockées dans la base de données en ordre croissant et que le serveur Oracle n'a donc pas à les trier lors de la création de l'index.

Page 418: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-14 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

Syntaxe (suite)Remarque :

• Si le paramètre MINIMUM EXTENT du tablespace est défini, les tailles d'extent de l'index sont arrondies au multiple supérieur.

• Si la clause LOGGING ou NOLOGGING n'est pas définie, l'attribut de journalisation de l'index correspond par défaut à celui du tablespace contenant l'index.

• Le paramètre PCTUSED ne peut pas être défini pour un index. Etant donné que les entrées d'index doivent êtres stockées dans l'ordre exact, l'utilisateur ne peut pas contrôler les insertions dans un bloc d'index.

• Si le mot-clé NOSORT est utilisé lorsque les données ne sont pas triées sur la clé, l'instruction se termine par une erreur. Cette opération est susceptible d'échouer si plusieurs opérations LMD ont été exécutées sur la table.

• Dans la mesure du possible, le serveur Oracle utilise les index existants pour créer un nouvel index. C'est le cas lorsque la clé du nouvel index correspond à la première partie de la clé d'un index existant.

Page 419: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-15

.....................................................................................................................................................Créer des index

Utiliser Oracle Enterprise Manager pour créer un index1 Démarrez Schema Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Schema Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Sélectionnez Object—>Create.

4 Sélectionnez Index dans la liste des valeurs, puis cliquez sur OK.

5 Entrez les informations General, Storage et Options dans la fenêtre de propriétés.

6 Cliquez sur Create.

Schema Manager permet également de définir automatiquement les paramètres de stockage et d'utilisation de bloc en fonction d'une estimation du volume initial, du taux d'augmentation de la taille, des insertions dans la table et de l'ordre d'insertion des lignes.

Page 420: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-16 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

Instructions de création des indexTenez compte des points suivants lors de la création d'un index :

• Les index accélèrent les interrogations et ralentissent les opérations LMD. Utilisez toujours un nombre d'index limité sur les tables volatiles.

• Placez les index dans des tablespaces distincts ; ne les placez pas dans des tablespaces qui contiennent des segments d'annulation, des segments temporaires et des tables.

• Pour limiter la fragmentation, utilisez quelques tailles d'extent standard correspondant à un multiple de 5 × DB_BLOCK_SIZE.

• Vous pouvez améliorer considérablement les performances des index volumineux en ne générant pas d'informations de journalisation. Utilisez la clause NOLOGGING pour créer des index volumineux.

• Les entrées d'index étant plus petites que les lignes qu'elles indexent, les blocs d'index tendent à contenir plus d'entrées. En conséquence, la valeur INITRANS doit généralement être plus élevée pour les index que pour les tables correspondantes.

Index et paramètre PCTFREELe paramètre PCTFREE d'un index fonctionne différemment de celui d'une table. Ce paramètre n'est utilisé que lors de la création de l'index pour réserver de l'espace pour les entrées d'index à insérer dans le même bloc d'index. Les entrées d'index ne sont pas mises à jour. La mise à jour d'une colonne de clé provoque la suppression logique de l'entrée d'index et l'insertion des données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Créer des index : instructions

• Equilibrez les interrogations et les opérations LMD.

• Placez les index dans des tablespaces distincts.

• Utilisez des tailles d'extent uniformes : multiplede cinq blocs ou taille MINIMUM EXTENT pour letablespace.

• N'activez pas la journalisation sur les indexvolumineux (NOLOGGING).

• Définissez une valeur PCTFREE élevée si lesnouvelles valeurs de clé sont susceptibles de setrouver dans la plage en cours.

Page 421: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-17

.....................................................................................................................................................Créer des index

Index et paramètre PCTFREE (suite)Affectez une valeur faible au paramètre PCTFREE pour les index de colonne dont la valeur augmente de manière séquentielle, comme dans le cas d'un numéro de facture généré par le système. Dans ce cas, de nouvelles entrées d'index sont toujours ajoutées aux entrées existantes, et il est inutile d'insérer une nouvelle entrée entre deux entrées d'index existantes.

Lorsque la colonne indexée d'une ligne insérée peut prendre n'importe quelle valeur, c'est-à-dire que la nouvelle valeur peut être comprise dans la plage actuelle des valeurs, affectez une valeur plus élevée au paramètre PCTFREE. Vous pouvez procéder ainsi, par exemple, s'il s'agit d'un index sur la colonne des codes client d'une table de facturation. Dans ce cas, utilisez l'équation suivante pour définir la valeur du paramètre PCTFREE :

La valeur maximale fait référence à une période spécifique, comme par exemple une année.

Maximum number of rows Initial number of rows–Maximum number of rows

---------------------------------------------------------------------------------------------------------------------------- 100×

Page 422: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-18 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

SyntaxeUtilisez la commande suivante pour créer un index à clé inversée :

CREATE [ UNIQUE ]INDEX [schema.] index

ON [schema.] table

(column [ ASC | DESC ] [ , column [ASC | DESC ] ] ...)

[ TABLESPACE tablespace ]

[ PCTFREE integer ]

[ INITRANS integer ]

[ MAXTRANS integer ]

[ storage-clause ]

[ LOGGING| NOLOGGING ]

REVERSE

La commande de création d'un index à clé inversée est similaire à celle d'un index standard, sauf que cette commande utilise le mot-clé REVERSE. Notez que le mot-clé NOSORT ne peut pas être utilisé avec les index à clé inversée.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Créer des index à clé inversée

CREATE UNIQUE INDEX summit.orders_id_idx

ON summit.orders(id) REVERSE

PCTFREE 30

STORAGE(INITIAL 200K NEXT 200K

PCTINCREASE 0 MAXEXTENTS 50)

TABLESPACE indx;

Page 423: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-19

.....................................................................................................................................................Créer des index

SyntaxeUtilisez la commande suivante pour créer un index bitmap :CREATE BITMAP INDEX [schema.] index

ON [schema.] table

(column [ ASC | DESC ] [ , column [ASC | DESC ] ] ...)

[ TABLESPACE tablespace ]

[ PCTFREE integer ]

[ INITRANS integer ]

[ MAXTRANS integer ]

[ storage-clause ]

[ LOGGING| NOLOGGING ]

[ NOSORT ]

Notez qu'un index bitmap ne peut être unique.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Créer des index bitmap

CREATE BITMAP INDEX orders_region_id_idx

ON summit.orders(region_id)

PCTFREE 30

STORAGE(INITIAL 200K NEXT 200K

PCTINCREASE 0 MAXEXTENTS 50)

TABLESPACE indx;

Utilisez le paramètre CREATE_BITMAP_AREA_SIZEpour définir la quantité de mémoire allouée à lacréation du bitmap.

Page 424: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-20 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

CREATE_BITMAP_AREA_SIZELe paramètre d'initialisation CREATE_BITMAP_AREA_SIZE détermine l'espace qui sera utilisé pour stocker les segments bitmap en mémoire. La valeur par défaut est de 8 Mo. Une valeur supérieure peut accélérer la création de l'index. Si le nombre d'éléments par colonne est peu élevé, définissez une valeur faible. Par exemple, si seulement deux éléments sont utilisés, exprimez la valeur en kilo-octets et non en mégaoctets. En règle générale, plus le nombre d'éléments utilisés est élevé, plus la quantité de mémoire nécessaire est importante pour obtenir des performances optimales.

Page 425: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-21

.....................................................................................................................................................Créer des index

Utiliser Oracle Enterprise Manager pour créer un index bitmap1 Démarrez Schema Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Schema Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Sélectionnez Object—>Create.

4 Sélectionnez Index dans la liste des valeurs, puis cliquez sur OK.

5 Entrez les informations General, Storage et Options dans la fenêtre de propriétés et sélectionnez l'option Bitmap sous l'onglet General.

6 Cliquez sur Create.

Page 426: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-22 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

Réorganiser les index

Modifier les paramètres de stockage des indexVous pouvez modifier certains paramètres de stockage et d'utilisation des blocs à l'aide de la commande ALTER INDEX.

SyntaxeALTER INDEX [schema.]index

[ storage-clause ]

[ INITRANS integer ]

[ MAXTRANS integer ]

La modification des paramètres de stockage sur un index a le même impact que sur une table. En règle générale, la modification porte sur l'augmentation du paramètre MAXEXTENTS de l'index.

Vous pouvez modifier les paramètres d'utilisation des blocs pour garantir un niveau plus élevé de simultanéité d'accès aux données des blocs d'un index.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Modifier les paramètresde stockage des index

ALTER INDEX summit.employee_last_name_idx

STORAGE(NEXT 400K

MAXEXTENTS 100);

Page 427: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-23

.....................................................................................................................................................Réorganiser les index

Utiliser Oracle Enterprise Manager pour modifier les paramètres de stockage1 Démarrez Schema Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Schema Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez le dossier Indexes.

4 Développez le nom d'utilisateur (ou schéma).

5 Sélectionnez l'index.

6 Modifiez les valeurs de l'onglet Storage de la fenêtre de propriétés. Notez que cette méthode ne permet pas de modifier le nombre minimal d'extents.

7 Cliquez sur Apply.

Page 428: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-24 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

Allouer manuellement de l'espace à un indexIl peut être nécessaire d'ajouter des extents à un index avant d'effectuer un grand nombre d'insertions dans une table. L'ajout d'extents empêche l'augmentation dynamique de la taille des index qui affecte les performances.

Libérer manuellement de l'espace dans un indexUtilisez la clause DEALLOCATE de la commande ALTER INDEX pour libérer l'espace inutilisé au-dessus du repère high-water mark d'un index.

SyntaxeUtilisez la commande suivante pour allouer de l'espace à un index ou en libérer :

ALTER INDEX [schema.]index

{ALLOCATE EXTENT ([SIZE integer [K|M]]

[ DATAFILE 'filename' ])

| DEALLOCATE UNUSED [KEEP integer [ K|M ] ] }

Les règles d'allocation ou de libération manuelle d'espace à l'aide de ces commandes sont identiques à celle d'une table.

Remarque : l'espace d'indexation est libéré lorsque la table de l'index est tronquée. Lorsqu'une table est tronquée, son index l'est aussi.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Allouer et libérer de l'espacepour les index

ALTER INDEX summit.orders_region_id_idx

ALLOCATE EXTENT (SIZE 200K

DATAFILE '/DISK6/indx01.dbf');

ALTER INDEX summit.orders_region_id_idx

ALLOCATE EXTENT (SIZE 200K

DATAFILE '/DISK6/indx01.dbf');

ALTER INDEX summit.orders_id_idx

DEALLOCATE UNUSED;

ALTER INDEX summit.orders_id_idx

DEALLOCATE UNUSED;

Page 429: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-25

.....................................................................................................................................................Réorganiser les index

Reconstruire un indexLa reconstruction d'un index présente les caractéristiques suivantes :

• L'index est reconstruit en utilisant un index existant comme source de données.

• Aucun tri n'est nécessaire lors de la reconstruction d'un index à partir d'un index existant, ce qui permet d'améliorer les performances.

• L'ancien index est supprimé après la création du nouvel index. Lors de la reconstruction, un espace suffisant doit exister dans le tablespace de l'ancien index et dans celui du nouvel index.

• Le nouvel index ne contient pas d'entrées supprimées. En conséquence, l'index utilise l'espace de manière plus efficace.

• Les interrogations peuvent continuer à utiliser l'index existant pendant que l'index est en cours de reconstruction.

Cas de reconstruction d'index Reconstruisez un index dans les cas suivants :

• L'index existant doit être transféré vers un tablespace différent ; cette opération peut être nécessaire si l'index se trouve dans le même tablespace que la table ou que des objets doivent être redistribués sur les disques.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Reconstruire un index

ALTER INDEX summit.orders_region_id_idx REBUILD

TABLESPACE indx02;

ALTER INDEX summit.orders_region_id_idx REBUILD

TABLESPACE indx02;

Utilisez la commande ALTER INDEX pour :

• placer l'index dans un tablespace différent,

• améliorer l'utilisation de l'espace en retirantles entrées supprimées,

• transformer un index à clé inversée en indexB-Tree normal et réciproquement.

Page 430: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-26 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

Cas de reconstitution d'index (suite)• Un grand nombre d'entrées ont été supprimées de l'index. En règle générale, c'est

le cas des index glissants, tels qu'un index sur les numéros de commande d'une table dans laquelle les commandes exécutées sont supprimées et les nouvelles commandes portant des numéros plus élevés sont ajoutées à la table. Si d'anciennes commandes sont en attente, il peut exister des blocs feuille ne contenant que quelques entrées supprimées.

• Un index normal existant doit être converti en index à clé inversée. Cela peut être le cas lors de la migration d'applications à partir d'une version antérieure du serveur Oracle.

• La table de l'index a été transférée vers un autre tablespace à l'aide de la commande ALTER TABLE ... MOVE TABLESPACE.

SyntaxeUtilisez la commande suivante pour reconstruire un index :

ALTER INDEX [schema.] index REBUILD

[ TABLESPACE tablespace ]

[ PCTFREE integer ]

[ INITRANS integer ]

[ MAXTRANS integer ]

[ storage-clause ]

[ LOGGING| NOLOGGING ]

[ REVERSE | NOREVERSE ]

La commande ALTER INDEX ... REBUILD ne permet pas de convertir un index bitmap en index B-Tree et réciproquement. Le mot-clé REVERSE ou NOREVERSE ne s'applique qu'aux index B-Tree.

Page 431: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-27

.....................................................................................................................................................Réorganiser les index

Reconstruire un index "online"La création ou la reconstruction d'un index peut prendre beaucoup de temps, notamment s'il s'agit d'une table très volumineuse. Avant Oracle8i, il était nécessaire, lors de la création ou de la reconstruction d'un index, de verrouiller la table et d'interdire les opérations LMD simultanées.

Oracle8i permet de créer ou de reconstruire des index sans interdire les opérations simultanées sur la table de base, mais il est recommandé de ne pas exécuter de longues opérations LMD au cours de cette procédure.

Remarque : il existe toujours des verrous LMD, ce qui implique que vous ne pouvez pas exécuter d'autres opérations LDD lors de la reconstruction "online" d'un index.

Restrictions

• Vous ne pouvez pas reconstruire l'index d'une table temporaire.

• Vous ne pouvez pas reconstruire l'ensemble d'un index partitionné. Vous devez reconstruire chaque partition ou sous-partition.

• Vous ne pouvez pas non plus libérer l'espace inutilisé.

• Vous ne pouvez pas modifier la valeur du paramètre PCTFREE de l'index.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Reconstruire les index "online"

Vous pouvez reconstruire les index en limitant leverrouillage de la table.

ALTER INDEX summit.orders_id_idx REBUILD ONLINE;

Page 432: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-28 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

Fusionner les indexLorsqu'un index est fragmenté, vous pouvez reconstruire l'index ou le fusionner. Avant d'effectuer l'une ou l'autre de ces opérations, vous devez en connaître les avantages et les inconvénients et choisir celle qui correspond le mieux à la situation.

S'il existe des blocs feuille d'index B-Tree qui peuvent être libérés pour être réutilisés, vous pouvez fusionner ces blocs feuille à l'aide de la commande SQL suivante :

SQL> ALTER INDEX summit.orders_id_idx COALESCE;

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Fusionner les index

Avant la fusion Après la fusion

ALTER INDEX summit.orders_id_idx COALESCE;ALTER INDEX summit.orders_id_idx COALESCE;

Page 433: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-29

.....................................................................................................................................................Supprimer des index

Supprimer des index

Cas de suppression d'un indexVous pouvez supprimer un index dans les cas suivants :

• lorsque l'index n'est plus utile aux applications,

• avant d'exécuter des chargements en masse. La suppression des index avant des chargements importants de données et leur recréation après les chargements :

– améliorent les performances du chargement,

– permettent d'utiliser plus efficacement l'espace d'indexation.

• lorsque l’index est utilisé périodiquement, il n'est pas nécessaire de le conserver, notamment s'il s'agit d'un index de table volatile (cela s'applique généralement aux systèmes OLTP dans lesquels des interrogations intermédiaires sont générées en fin d'année ou de trimestre pour collecter des informations nécessaires aux bilans),

• lorsque l'index obtient l'attribut INVALID à la suite d'une défaillance de l'instance au cours de certaines opérations, telles que le chargement ; dans ce cas, vous devez supprimer l'index et le recréer,

• lorsque l'index est endommagé.

SyntaxeUtilisez la commande suivante pour supprimer un index :

DROP INDEX [schema.] index

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Supprimer des index

• Supprimez un index avant d'effectuer deschargements en masse et recréez-le.

• Supprimez les index peu utilisés et créez-leslorsque cela est nécessaire.

• Supprimez les index non valides et recréez-les.

DROP INDEX summit.deptartment_name_idx;DROP INDEX summit.deptartment_name_idx;

Page 434: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-30 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

Utiliser Oracle Enterprise Manager pour supprimer un index1 Démarrez Schema Manager et connectez-vous directement à la base de données :

Start—>Programs—>Oracle - EMV2 Home—>DBA Management Pack—>Schema Manager

2 Entrez les informations de connexion, puis cliquez sur OK.

3 Développez le dossier Indexes.

4 Développez le nom d'utilisateur (ou schéma).

5 Sélectionnez l'index.

6 Sélectionnez Object—>Remove.

7 Sélectionnez Yes dans la boîte de dialogue.

Remarque : vous ne pouvez pas supprimer un index s'il sert à mettre en oeuvre une contrainte d'intégrité active. Les contraintes sont expliquées dans le chapitre "Gérer l'intégrité des données".

Page 435: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-31

.....................................................................................................................................................Obtenir des informations sur les index

Obtenir des informations sur les index

Vues pour obtenir des informations sur les indexLes vues DBA_INDEXES et DBA_IND_COLUMNS du dictionnaire de données fournissent des informations sur les index et les colonnes indexées.

Vérifier les index et leur validitéUtilisez la commande suivante pour vérifier le nom, le type et le statut des index de l'utilisateur SUMMIT :

SQL> SELECT index_name, tablespace_name, index_type,

2 uniqueness, status

3 FROM dba_indexes

4 WHERE owner='SUMMIT'

INDEX_NAME TABLESPACE_NAME INDEX_TYPE UNIQUENES STATUS

------------ --------------- ---------- --------- ------

EMPLOYEE_LAST_.. INDX NORMAL NONUNIQUE VALID

ORDERS_ID_IDX INDX NORMAL UNIQUE VALID

ORDERS_REGION_.. INDX02 BITMAP NONUNIQUE VALID

3 rows selected.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Obtenir des informations sur les index

DBA_INDEXESOWNERINDEX_NAMEINDEX_TYPETABLE_OWNERTABLE_NAMEUNIQUENESSTABLESPACE_NAMELOGGINGSTATUS

DBA_IND_COLUMNSINDEX_OWNER INDEX_NAME TABLE_OWNER TABLE_NAME COLUMN_NAME COLUMN_POSITIONCOLUMN_LENGTH

Page 436: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-32 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

Vérifier les index et leur validité (suite)La colonne INDEX_TYPE indique s'il s'agit d'un index bitmap ou d'un index standard.

Lancez l'interrogation suivante pour obtenir la liste de tous les index à clé inversée :SQL> SELECT o.object_name

2 FROM dba_objects o

3 WHERE owner='SUMMIT'

4 AND o.object_id IN (SELECT i.obj#

5 FROM ind$ i

6 WHERE BITAND(i.property,4) = 4);

OBJECT_NAME

-----------------

ORDERS_ID_IDX

1 row selected.

Rechercher des colonnes dans un indexL'interrogation suivante permet d'obtenir la liste de tous les index de l'utilisateur SUMMIT et indique les tables et les colonnes sur lesquels les index sont construits :

SQL> SELECT index_name, table_owner, table_name, column_name

2 FROM dba_ind_columns

3 WHERE index_owner = 'SUMMIT'

4 ORDER BY index_name, column_position;

INDEX_NAME TABLE_OWNER TABLE_NAME COLUMN_NAME

----------------- ------------- --------------- ----------

EMPLOYEE_LAST_NAME.. SUMMIT EMPLOYEE LAST_NAME

ORDERS_ID_IDX SUMMIT ORDERS ID

ORDERS_REGION_ID.. SUMMIT ORDERS REGION_ID

3 rows selected.

Page 437: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 12-33

.....................................................................................................................................................Synthèse

Synthèse

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Synthèse

Ce chapitre vous a permis d'apprendre :

• à créer différents types d'index,

• à réorganiser les index,

• à supprimer des index,

• à obtenir des informations à partir du dictionnairede données.

Page 438: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................12-34 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 12 : Gérer les index

Pour référence

Contexte RéférenceParamètres d'initialisation CREATE_BITMAP_AREA_SIZEVues dynamiques des performances AucuneTables/vues du dictionnaire de données

DBA_INDEXES

DBA_IND_COLUMNS

DBA_OBJECTS

IND$

INDEX_STATSCommandes CREATE INDEX

CREATE UNIQUE INDEX

CREATE BITMAP INDEX

CREATE INDEX ... REVERSE

ALTER INDEX ... STORAGE

ALTER INDEX ... INITRANS ... MAXTRANS

ALTER INDEX ... ALLOCATE EXTENT

ALTER INDEX ... DEALLOCATE UNUSED

ALTER INDEX ... REBUILD

ALTER INDEX ... REBUILD ... REVERSE

ALTER INDEX ... REBUILD ... NOREVERSE

ANALYZE INDEX ... VALIDATE STRUCTURE

DROP INDEXProcédures et fonctions de package Aucune

Page 439: Oracle DBA - Architecture & Administration Vol.1

.................................

13

Gérer l'intégritédes données

Page 440: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................13-2 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 13 : Gérer l'intégrité des données

Objectifs

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Objectifs

A la fin de ce chapitre vous pourrez :

• mettre en œuvre les contraintes d'intégritédes données,

• gérer les contraintes d'intégrité,

• obtenir du dictionnaire de données desinformations sur les contraintes.

Page 441: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 13-3

.....................................................................................................................................................Présentation

Présentation

Méthodes garantissant l'intégrité des donnéesL'intégrité des données garantit que les données d'une base de données respectent certaines règles. Vous disposez de trois méthodes principales pour garantir l'intégrité des données :

• code d'application,

• déclencheurs de base de données,

• contraintes d'intégrité déclaratives.

Le choix de la méthode à utiliser pour appliquer ces règles relève de la conception de la base de données et incombe à son concepteur. L'administrateur de base de données est le premier concerné par la mise en œuvre de la méthode choisie par le concepteur et par l'équilibrage entre le besoin de performances et l'intégrité des données.

Le code d'application peut être mis en œuvre sous forme de procédures stockées dans la base de données ou sous forme d'applications exécutées sur le client. Le présent chapitre porte sur l'utilisation des déclencheurs de base de données et sur les contraintes d'intégrité.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Intégrité des données

Contrainted'intégrité

Déclencheur debase de données

Table

Données

Code d'application

Page 442: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................13-4 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 13 : Gérer l'intégrité des données

Déclencheurs de base de donnéesLes déclencheurs de base de données sont des programmes PL/SQL qui s'exécutent lorsqu'un événement donné, tel que l'insertion ou la mise à jour d'une colonne, se produit sur une table. Vous pouvez activer ou désactiver les déclencheurs, c'est-à-dire que vous pouvez les définir pour qu'ils s'exécutent lorsque l'événement se produit, ou pour qu'ils ne s'exécutent pas, même s'ils sont définis. Les déclencheurs de base de données ne sont généralement créés que pour appliquer une règle complexe ne pouvant être définie sous la forme d'une contrainte d'intégrité.

Remarque : les déclencheurs de base de données sont expliqués dans d'autres cours Oracle.

Contraintes d'intégritéLes contraintes d'intégrité constituent le mécanisme par excellence pour appliquer des règles, car :

• elles améliorent les performances,

• elles sont simples à déclarer et à modifier, dans la mesure où elles nécessitent peu de code,

• elles centralisent les règles,

• elles sont souples (activées ou désactivées),

• elles sont entièrement documentées dans le dictionnaire des données.

Les sections suivantes expliquent le fonctionnement des contraintes d'intégrité et leur mise en œuvre par le serveur Oracle.

Page 443: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 13-5

.....................................................................................................................................................Contraintes d'intégrité

Contraintes d'intégrité

Types de contrainteComme le montre la diapositive, il existe cinq types de contrainte d'intégrité déclarative.

Bien que les contraintes NOT NULL et CHECK ne nécessitent aucune attention particulière de la part de l'administrateur de base de données, les contraintes de clé primaire, de clé unique et de clé étrangère doivent être gérées pour garantir une disponibilité optimale et des performances acceptables.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Types de contrainte

Contrainte

NOT NULL

UNIQUE

PRIMARY KEY

FOREIGN KEY

CHECK

Description

Indique qu'une colonne ne peut conteniraucune valeur NULL.

Définit comme étant unique une colonne ouun groupe de colonnes.

Définit une colonne ou un groupe decolonnes comme clé primaire de la table.

Définit une colonne ou un groupe decolonnes comme clé étrangère dans unecontrainte d'intégrité référentielle.

Définit une condition que chaque ligne de latable doit satisfaire.

Page 444: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................13-6 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 13 : Gérer l'intégrité des données

Etats des contraintesUne contrainte d'intégrité peut avoir l'un des états suivants :

• Disabled Novalidate,

• Disabled Validate,

• Enabled Novalidate ou Enforced,

• Enabled Validate.

Disabled Novalidate Une contrainte ayant l'état Disabled Novalidate n'est pas vérifiée, bien que la définition de la contrainte existe toujours dans le dictionnaire de données. Les données de la table et les nouvelles données entrées ou mises à jour peuvent ne pas être conformes aux règles définies par la contrainte. Il s'agit de l'état normal d'une contrainte de traitement de transaction "online".

Disabled Validate Lorsqu'une contrainte a cet état, la modification des colonnes auxquelles s'applique la contrainte n'est pas autorisée. En outre, l'index de la contrainte est supprimé et la contrainte est désactivée.

Pour une contrainte unique, cet état permet de charger efficacement les données d'une table non partitionnée dans une table partitionnée en utilisant l'option EXCHANGE PARTITION de la commande ALTER TABLE.

Remarque : les tables partitionnées ne sont pas étudiées dans ce cours.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Etats des contraintes

EnabledNovalidate

EnabledValidate

Données existantesNouvellesdonnées

DisabledNovalidate

DisabledValidate

=

=

Page 445: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 13-7

.....................................................................................................................................................Contraintes d'intégrité

Etats des contraintes (suite)

Enabled Novalidate (Enforced) Cet état de contrainte interdit l'entrée des données qui violent les règles de la contrainte. Toutefois, la table peut contenir des données non valides, c'est-à-dire qui violent la contrainte. En général, il s'agit d'un état intermédiaire qui garantit que toutes les nouvelles données ont été vérifiées avant d'être acceptées dans la table.

Enabled Validate Lorsqu'une contrainte a cet état, cela implique que toutes les données de la table sont conformes à la contrainte. En outre, cet état empêche d'entrer des données non valides dans la table. Il s'agit de l'état normal d'une contrainte de traitement de transaction "online".

Lorsqu'une contrainte passe de l'état Disabled à l'état Enabled Validate, la table est verrouillée et la conformité de toutes les données de la table est vérifiée. Cette situation peut provoquer le report de l'exécution d'opérations LMD, telles que le chargement de données. Il est donc conseillé de faire d'abord passer la contrainte de l'état Disabled à l'état Enable Novalidate, puis à l'état Enable Validate.

Page 446: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................13-8 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 13 : Gérer l'intégrité des données

Contraintes différéesVous pouvez définir le point d'une transaction à partir duquel une contrainte sera vérifiée en définissant la contrainte de manière appropriée.

Contraintes non différées ou immédiatesLes contraintes non différées, également appelées contraintes immédiates, sont appliquées à la fin de chaque instruction LMD. Une violation de contrainte annule la transaction. Si une contrainte provoque une action, telle qu'une suppression en cascade, on considère que l'action fait partie de l'instruction qui l'a déclenchée.

Une contrainte définie comme ne pouvant être différée ne peut pas être modifiée pour être appliquée à la fin d'une transaction.

Contraintes différéesLes contraintes différées ne sont vérifiées que lorsqu'une transaction est validée. Si une violation de contrainte est détectée lors de la validation, l'ensemble de la transaction est annulé. Ces contraintes s'avèrent très utiles lorsque les lignes parent et les lignes enfant d'une relation de clé étrangère sont entrées simultanément, comme dans le cas d'un système de traitement des commandes où les articles et la commande sont entrés simultanément.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Contraintes différées

Instruction LMD

Vérification des contraintesnon différées

VALIDATION

Vérification descontraintes différées

Page 447: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 13-9

.....................................................................................................................................................Contraintes d'intégrité

Contraintes différées (suite)Pour qu'une contrainte puisse être différée, elle doit être définie lors de sa création comme pouvant être différée. Une contrainte définie comme pouvant être différée peut être indiquée comme suit :

• Initially immediate : indique qu'il s'agit par défaut d'une contrainte immédiate, sauf indication contraire explicite.

• Initially deferred : indique que, par défaut, la contrainte ne doit être appliquée qu'à la fin de la transaction.

Page 448: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................13-10 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 13 : Gérer l'intégrité des données

Modifier l'application des contraintesBien que le mode d'application par défaut d'une contrainte pouvant être différée soit défini et stocké dans le dictionnaire de données, les applications peuvent modifier la contrainte pour qu'elle fonctionne en différé ou en immédiat. Pour cela, il faut utiliser la commande ALTER SESSION ou SET CONSTRAINT :

ALTER SESSION

SET CONSTRAINT[S] =

{IMMEDIATE|DEFERRED|DEFAULT}

SET CONSTRAINT[S]

{constraint [, constraint ]...

|ALL }

{IMMEDIATE|DEFERRED}

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Définir des contraintes comme étantimmédiates ou différées

ALTER SESSION

SET CONSTRAINT[S] =

{IMMEDIATE|DEFERRED|DEFAULT};

Utilisez la commande ALTER SESSION ou SETCONSTRAINTS pour définir le mode de la contrainte.

Page 449: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 13-11

.....................................................................................................................................................Contraintes d'intégrité

Appliquer des contraintes de clé primaire et de clé uniqueLes contraintes de clé primaire et de clé unique sont appliquées en utilisant des index. Vous pouvez contrôler l'emplacement et le type de l'index utilisé pour appliquer ces contraintes.

Le serveur Oracle utilise la procédure suivante pour mettre en œuvre les contraintes de clé primaire et de clé unique :

• Si la contrainte est désactivée, aucun index n'est nécessaire.

• Si la contrainte est activée et que les colonnes de la contrainte forment la première partie d'un index, l'index est utilisé pour appliquer la contrainte.

• Si la contrainte est activée et que les colonnes de la contrainte ne correspondent pas au début d'un index, un index portant le nom de la contrainte est créé selon les règles suivantes :

– S'il s'agit d'une clé pouvant être différée, un index non unique est créé dans la colonne de la clé.

– S'il s'agit d'une clé ne pouvant pas être différée, un index unique est créé.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Clé primaire et clé unique

Un index est-il disponible ?

Oui

Non

Non

Oui

Oui

Non

Créer un indexnon unique

Créer un indexunique

Ne pas utiliserl'index

Utiliser un index existant

Clé activée ?

La contrainte peut-elle être

différée ?

Page 450: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................13-12 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 13 : Gérer l'intégrité des données

Remarques sur l'utilisation des contraintes de clés étrangèresVous devez tenir compte de plusieurs éléments pour gérer des tables dans une relation de clé étrangère.

LDD impliquant la table mère• La clé étrangère doit être supprimée avant la table mère. Utilisez la commande

suivante pour exécuter les deux actions à l'aide d'une seule instruction :DROP TABLE table CASCADE CONSTRAINTS

• Vous ne pouvez pas tronquer la table mère sans supprimer ou désactiver la clé étrangère.

• Vous devez supprimer la clé étrangère pour pouvoir supprimer le tablespace contenant la table mère. Pour ce faire, utilisez la commande suivante :DROP TABLESPACE tablespace INCLUDING CONTENTS

CASCADE CONSTRAINTS

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Considérations sur les clés étrangères

Action souhaitée

Supprimer la table mère

Tronquer la table mère

Supprimer untablespace contenantla table mère

Eviter de verrouiller latable enfant lorsd'opérations LMD dansla table mère

Exécuter des opérationsLMD dans la table enfant

Solution

Contraintes en cascade

Désactiver ou supprimer laclé étrangère

Utiliser la clause CASCADECONSTRAINTS

Créer un index sur la clé étrangère

Mettre en ligne le tablespacecontenant l'index de la clé parent

Page 451: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 13-13

.....................................................................................................................................................Contraintes d'intégrité

Opérations LMD sur les tables dans une relation de clé étrangèreSi l'option DELETE CASCADE n'est pas utilisée lors de la suppression des lignes de la table mère, le serveur Oracle doit vérifier dans la table enfant qu'il n'y a pas de ligne contenant la clé étrangère correspondante. De même, la clé parent ne peut être mise à jour que si l'ancienne clé ne figure dans aucune ligne enfant. Si la clé étrangère de la table enfant ne contient pas d'index, le serveur Oracle verrouille la table enfant et interdit les modifications pour garantir l'intégrité référentielle. Si la table contient un index, l'intégrité référentielle est conservée en verrouillant les entrées d'index et en évitant d'utiliser des verrous plus restrictifs sur la table enfant. Si les deux tables doivent être mises à jour simultanément par des transactions différentes, créez un index dans les colonnes de la clé étrangère.

Lorsque les données sont insérées ou que la colonne de la clé étrangère de la table enfant est mise à jour, le serveur Oracle vérifie l'index de la table mère utilisée pour appliquer la clé référencée. Par conséquent, l'opération n'aboutit que si le tablespace contenant l'index est "online". Notez que le tablespace contenant la table mère ne doit pas nécessairement être "online" pour exécuter des opérations LMD sur la table enfant.

Remarque : outre les avantages décrits ci-dessus, il est recommandé de créer des index dans les colonnes de la clé étrangère, car cela apporte d'autres avantages en matière de performances.

Page 452: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................13-14 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 13 : Gérer l'intégrité des données

Mettre en œuvre des contraintes

Définir des contraintes lors de la création d'une tableVous pouvez définir une contrainte lorsque vous créez une table ou lorsque vous la modifiez.

Syntaxe : contrainte de colonneLors de la création de la table, vous pouvez créer la contrainte en utilisant la syntaxe suivante pour définir la colonne :

column datatype [CONSTRAINT constraint]

in_line_constraint

[defer_spec]

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Définir les contraintes lors dela création d'une table

CREATE TABLE summit.employee(

id NUMBER(7)

CONSTRAINT employee_id_pk PRIMARY KEY

DEFERRABLE

USING INDEX

STORAGE(INITIAL 100K NEXT 100K)

TABLESPACE indx,

last_name VARCHAR2(25)

CONSTRAINT employee_last_name_nn NOT NULL,

dept_id NUMBER(7))

TABLESPACE data;

Page 453: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 13-15

.....................................................................................................................................................Mettre en œuvre des contraintes

Syntaxe : contrainte de colonne (suite)in_line_constraint :==

{[NOT] NULL

|PRIMARY KEY [USING INDEX index_clause]

|UNIQUE [USING INDEX index_clause]

|REFERENCES [schema.]table [(column)]

[ON DELETE CASCADE]

|CHECK (condition)

}

defer_spec :==

[NOT DEFERRABLE|DEFERRABLE [INITIALLY {IMMEDIATE|DEFERRED}]

]

[DISABLE|ENABLE [VALIDATE|NOVALIDATE]]

où CONSTRAINT identifie la contrainte d'intégrité par le nom constraint stocké dans le dictionnaire de données,

USING INDEX indique que les paramètres définis dans index-clause doivent être utilisés pour l'index auquel fait appel le serveur Oracle afin d'appliquer une contrainte de clé unique ou primaire (l'index porte le même nom que la contrainte),

DEFERRABLE indique que la vérification de la contrainte peut être reportée à la fin de la transaction à l'aide de la commande SET CONSTRAINT(S),

NOT DEFERRABLE indique que la contrainte est vérifiée à la fin de chaque instruction LMD(une contrainte NOT DEFERRABLE ne peut pas être différée par les sessions ou par les transactions. NOT DEFERRABLE est utilisé par défaut).

Page 454: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................13-16 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 13 : Gérer l'intégrité des données

Syntaxe : contrainte de colonne (suite)INITIALLY IMMEDIATE

indique qu'au début de chaque transaction, la contrainte doit, par défaut, être vérifiée à la fin de chaque instruction LMD (si aucune clause INITIALLY n'est définie, INITIALLY IMMEDIATE est utilisé par défaut),

INITIALLY DEFERRED

indique qu'il s'agit d'une contrainte DEFERRABLE et que, par défaut, elle n'est vérifiée qu'à la fin de chaque transaction,

DISABLE désactive la contrainte d'intégrité(lorsqu'une contrainte d'intégrité est désactivée, le serveur Oracle ne l'applique pas).

Page 455: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 13-17

.....................................................................................................................................................Mettre en œuvre des contraintes

Syntaxe : contrainte de tableVous pouvez également créer la contrainte de table à l'aide de la syntaxe suivante :

[CONSTRAINT constraint]

out_of_line_constraint

out_of_line_constraint :==

{PRIMARY KEY (column [, column ]... )

[USING INDEX index_clause]

|UNIQUE (column [, column ]... )

[USING INDEX index_clause]

|FOREIGN KEY (column [, column ]... )

REFERENCES [schema.]table [(column [, column ]... )]

[ON DELETE CASCADE]

|CHECK (condition)

}

[defer_spec]

Remarque :

• Il est recommandé d'adopter une convention d'appellation standard pour les contraintes, notamment avec les contraintes CHECK, puisque vous pouvez créer plusieurs fois la même avec des noms différents.

• Dans les cas suivants, vous devez utiliser des contraintes de table :

– lorsqu'une contrainte s'applique à plusieurs colonnes,

– lorsqu'une table est modifiée pour ajouter des contraintes autres que NOT NULL.

Définir des contraintes après la création d'une table : exempleALTER TABLE summit.employeeADD(CONSTRAINT employee_dept_id_fk FOREIGN KEY(dept_id) REFERENCES summit.department(id) DEFERRABLE INITIALLY DEFERRED);

Remarque : la clause EXCEPTIONS, décrite dans la section "Activer les contraintes" du présent chapitre, peut être utilisée pour identifier les lignes qui violent une contrainte ajoutée à l'aide de la commande ALTER TABLE.

Page 456: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................13-18 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 13 : Gérer l'intégrité des données

Instructions de définition des contraintesTenez compte des points suivants pour définir des contraintes :

• Placez les index utilisés pour appliquer les contraintes de clé primaire et de clé unique dans un tablespace différent de celui de la table. Pour ce faire, vous pouvez soit définir la clause USING INDEX, soit créer la table et l'index, puis modifier la table pour ajouter ou activer la contrainte.

• Si les données sont souvent chargées en masse dans une table, il est préférable de désactiver les contraintes, de charger les données, puis de réactiver les contraintes. Si vous utilisez un index unique pour appliquer une contrainte de clé primaire ou de clé unique, cet index doit être supprimé lorsque vous désactivez la contrainte. Dans une telle situation, vous pouvez améliorer les performances en utilisant un index non unique pour appliquer des contraintes de clé primaire ou de clé unique. Pour ce faire, créez une clé pouvant être différée, ou créez l'index avant de définir ou d'activer la clé.

• Si une table contient une clé étrangère d'autoréférencement, utilisez l'une des méthodes suivantes pour charger les données :

– Définissez ou activez la clé étrangère après le premier chargement de données.

– Définissez la contrainte comme pouvant être différée.

La seconde méthode s'avère très utile lorsque des données sont chargées fréquemment.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Instructions de définition des contraintes

• Contraintes primaires et uniques :

– Placez les index dans des tablespacesdistincts.

– Utilisez des index non uniques si leschargements en masse sont fréquents.

• Clés étrangères d'autoréférencement :

– Définissez ou activez les clés étrangères aprèsle chargement initial.

– Différez la vérification des contraintes.

Page 457: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 13-19

.....................................................................................................................................................Gérer les contraintes

Gérer les contraintes

Activer les contraintesUne contrainte désactivée peut être activée de deux manières : à l'aide de l'option enable NOVALIDATE ou enable VALIDATE.

Enable NOVALIDATEL'activation d'une contrainte de non-validation est beaucoup plus rapide que l'activation d'une contrainte de validation, car si la contrainte peut être différée, il n'y a pas de détection de violation de contrainte sur les données existantes. Si vous utilisez cette option pour activer une contrainte, il n'est pas nécessaire de verrouiller la table. Utilisez cette méthode lorsque de nombreuses opérations LMD sont exécutées sur la table, comme c'est le cas dans un environnement OLTP.

SyntaxeUtilisez la commande suivante pour activer une contrainte de non-validation :

ALTER TABLE [ schema. ] table

ENABLE NOVALIDATE {CONSTRAINT constraint

| PRIMARY KEY

| UNIQUE ( column [, column ] ... ) }

[ USING INDEX index_clause ]

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Activer les contraintes

Enable NOVALIDATE

ALTER TABLE summit.department

ENABLE NOVALIDATE CONSTRAINT dept_pk;

ALTER TABLE summit.department

ENABLE NOVALIDATE CONSTRAINT dept_pk;

• Ne verrouille pas latable.

• Les clés primaires etuniques doivent utiliserdes index non uniques.

Page 458: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................13-20 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 13 : Gérer l'intégrité des données

RestrictionsLa clause USING INDEX ne s'applique qu'aux contraintes de clé primaire ou de clé unique créées comme contraintes pouvant être différées, et seulement si l'une des conditions suivantes est vraie :

• les contraintes n'ont pas été activées lors de leur création,

• les contraintes ont été désactivées et l'index a été supprimé.

Toutefois, si vous devez créer l'index, cette méthode d'activation de contrainte ne procure aucun avantage particulier par rapport à la méthode d'activation de la validation, car le serveur Oracle verrouille la table pour créer l'index.

Remarque : la désactivation des contraintes est décrite dans le cours Introduction to SQL and PL/SQL.

Page 459: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 13-21

.....................................................................................................................................................Gérer les contraintes

Enable VALIDATEL'activation d'une contrainte de validation déclenche une détection de violation de contrainte sur les données existantes. Cette action est effectuée par défaut lorsqu'une contrainte est activée. Si la détection est lancée alors que la contrainte est désactivée, les effets sont les suivants :

• La table est verrouillée et aucune modification n'est appliquée tant que la validation des données existantes n'est pas terminée.

• Le serveur Oracle crée un index s'il n'en existe pas dans les colonnes d'index. Il crée un index unique lors de l'activation d'une contrainte de clé primaire ou de clé unique ne pouvant être différée. Il crée un index non unique pour une contrainte de clé primaire ou de clé unique pouvant être différée.

Si cette commande est exécutée lorsqu'une contrainte est en vigueur, la table n'a pas besoin d'être verrouillée durant la validation. La contrainte appliquée vérifie qu'aucune donnée insérée lors de la validation ne viole ces règles. Les avantages sont les suivants :

• Toutes les contraintes sont activées simultanément.

• Chaque contrainte est exécutée en interne et en parallèle.

• Les opérations simultanées sur la table sont rendues possibles.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Activer les contraintes

Enable VALIDATE

ALTER TABLE summit.employee

ENABLE VALIDATE CONSTRAINT emp_dept_fk;

ALTER TABLE summit.employee

ENABLE VALIDATE CONSTRAINT emp_dept_fk;

• Verrouille la table.

• Peut utiliser des indexuniques ou non uniques.

• Nécessite des donnéesde table valides.

Page 460: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................13-22 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 13 : Gérer l'intégrité des données

SyntaxeUtilisez la commande suivante pour activer une contrainte de validation :

ALTER TABLE [ schema. ] table

ENABLE [ VALIDATE ]{CONSTRAINT constraint

| PRIMARY KEY

| UNIQUE ( column [, column ] ... ) }

[ USING INDEX index_clause ]

[ EXCEPTIONS INTO [ schema. ] table ]

Remarque :

• VALIDATE est l'option par défaut. Il est inutile de la définir pour activer une contrainte désactivée.

• Si des données de la table violent la contrainte, l'instruction est annulée et la contrainte reste désactivée.

• L'utilisation de la clause EXCEPTIONS est décrite dans la section suivante.

Page 461: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 13-23

.....................................................................................................................................................Gérer les contraintes

Identifier une violation de contrainte due aux lignesLa clause EXCEPTIONS permet d'identifier les lignes qui violent une contrainte activée. Pour identifier les violations de contrainte, les rectifier et réactiver une contrainte, procédez comme suit :

1 Si la table d'exceptions n'a pas encore été créée, exécutez le script utlexcpt.sql du répertoire ADMIN :SQL> @?/rdbms/admin/utlexcpt

Statement processed.

SQL> DESCRIBE exceptions

Name Null? Type

-------------------------- ------- ----------------

ROW_ID UNDEFINED

OWNER VARCHAR2(30)

TABLE_NAME VARCHAR2(30)

CONSTRAINT VARCHAR2(30)

Sous Windows NT, ce script se trouve dans le répertoire %ORACLE_HOME%\RDBMS\ADMIN.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Utiliser la table EXCEPTIONS

1. Créez la table EXCEPTIONS (utlexcpt.sql).

2. Exécutez la commande ALTER TABLE avecla clause EXCEPTIONS.

3. Utilisez l'interrogation imbriquée sur la tableEXCEPTIONS pour rechercher les lignescontenant des valeurs non valides.

4. Rectifiez les erreurs.

5. Réexécutez la commande ALTER TABLE pouractiver la contrainte.

Page 462: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................13-24 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 13 : Gérer l'intégrité des données

Identifier une violation de contrainte due aux lignes (suite)2 Exécutez la commande ALTER TABLE en utilisant la clause EXCEPTIONS :

SQL> ALTER TABLE summit.employee

2 ENABLE VALIDATE CONSTRAINT employee_dept_id_fk

3 EXCEPTIONS INTO system.exceptions;

ALTER TABLE summit.employee

*

ORA-02298: cannot enable (summit.EMP_DEPT_FK) - parent keys not found

Si la table d'exceptions n'est pas qualifiée avec le nom du propriétaire, elle doit appartenir au propriétaire de la table en cours de modification.

Des lignes sont insérées dans la table d'exceptions. Si vous réexécutez la commande, tronquez la table d'exceptions pour supprimer toutes les lignes existantes.

3 Identifiez les données non valides en lançant une sous-interrogation sur la table EXCEPTIONS :SQL> SELECT rowid, id, last_name, dept_id

2 FROM summit.employee

3 WHERE ROWID in (SELECT row_id

4 FROM exceptions)

5 FOR UPDATE;

ROWID ID LAST_NAME DEPT_ID

------------------- ----- --------------- --------

AAAAeyAADAAAAA1AAA 1003 Pirie 50

1 row selected.

4 Corrigez les erreurs de données :SQL> UPDATE summit.employee

2 SET id=10

3 WHERE rowid='AAAAeyAADAAAAA1AAA';

1 row processed.

SQL> COMMIT;

Statement processed.

Page 463: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 13-25

.....................................................................................................................................................Gérer les contraintes

Identifier une violation de contrainte due aux lignes (suite)5 Tronquez la table exceptions et réactivez la contrainte :

SQL> TRUNCATE TABLE exceptions;

Statement processed.

SQL> ALTER TABLE summit.employee

2 ENABLE VALIDATE CONSTRAINT employee_dept_id_fk

3 EXCEPTIONS INTO system.exceptions;

Statement processed.

Page 464: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................13-26 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 13 : Gérer l'intégrité des données

Obtenir des informations sur les contraintes

Contraintes et statutLancez l'interrogation suivante pour obtenir le nom, le type et le statut de toutes les contraintes de la table EMPLOYEE de l'utilisateur SUMMIT :

SQL> SELECT constraint_name, constraint_type, deferrable,

2 deferred, validated

3 FROM dba_constraints

4 WHERE owner='SUMMIT'

5 AND table_name='EMPLOYEE';

CONSTRAINT_NAME C DEFERRABLE DEFERRED VALIDATED

---------------- - --------------- ----------- ----------

EMPLOYEE_DEPT.. R DEFERRABLE DEFERRED VALIDATED

EMPLOYEE_ID_PK P DEFERRABLE IMMEDIATE VALIDATED

SYS_C00565 C NOT DEFERRABLE IMMEDIATE VALIDATED

3 rows selected.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Obtenir des informations sur les contraintes

DBA_CONSTRAINTSOWNER CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME SEARCH_CONDITION R_OWNER R_CONSTRAINT_NAMEDELETE_RULE STATUS DEFERRABLE DEFERRED VALIDATED GENERATED BADRELY LAST_CHANGE

DBA_CONS_COLUMNSOWNER CONSTRAINT_NAMETABLE_NAME COLUMN_NAME POSITION

Page 465: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 13-27

.....................................................................................................................................................Obtenir des informations sur les contraintes

Contraintes et statut (suite)Le tableau suivant montre les colonnes non explicites de la vue DBA_CONSTRAINTS.

Colonnes des contraintesPour obtenir les colonnes des contraintes de la table EMPLOYEE de l'utilisateur SUMMIT, lancez l'interrogation suivante :

SQL> SELECT c.constraint_name, c.constraint_type,

2 cc.column_name

3 FROM dba_constraints c, dba_cons_columns cc

4 WHERE c.owner='SUMMIT'

5 AND c.table_name='EMPLOYEE'

6 AND c.owner = cc.owner

7 AND c.constraint_name = cc.constraint_name

8 ORDER BY cc.position;

Nom Description

CONSTRAINT_TYPE Le type de la contrainte est P, U, R ou C selon qu'il s'agit respectivement d'une contrainte de clé primaire, de clé unique, de clé étrangère ou d’une contrainte CHECK. Les contraintes NOT NULL sont stockées sous forme de contraintes CHECK.

SEARCH_CONDITION Indique la condition définie pour une contrainte CHECK.

R_OWNER

R_CONSTRAINT_NAME

Indique le propriétaire et le nom de la contrainte référencée pour les clés étrangères.

GENERATED Indique si le nom de contrainte a été généré par le système (les valeurs acceptées sont "USER NAME" et "GENERATED NAME").

BAD Indique que la contrainte doit être réécrite pour éviter certaines situations, telles que les problèmes de compatibilité avec l'an 2000 (ceci peut arriver, car les versions antérieures d'Oracle autorisaient les années à 2 chiffres dans les contraintes CHECK).

RELY Si cet indicateur est défini, il est utilisé dans l'optimiseur.

LAST_CHANGE Date de la dernière activation ou désactivation de la contrainte.

Page 466: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................13-28 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 13 : Gérer l'intégrité des données

Colonnes des contraintes (suite)CONSTRAINT_NAME C COLUMN_NAME

--------------------- - ---------------

EMPLOYEE_DEPT... R DEPT_ID

EMPLOYEE_ID_PK P ID

SYS_C00565 C LAST_NAME

3 rows selected.

Rechercher les relations entre les clés primaires et les clés étrangèresPour obtenir les clés étrangères de la table EMPLOYEE de l'utilisateur SUMMIT et les contraintes parent, lancez l'interrogation suivante :

SQL> SELECT c.constraint_name AS "Foreign Key",

2 p.constraint_name AS "Referenced Key",

3 p.constraint_type,

4 p.owner,

5 p.table_name

6 FROM dba_constraints c, dba_constraints p

7 WHERE c.owner='SUMMIT'

8 AND c.table_name='EMPLOYEE'

9 AND c.constraint_type='R'

10 AND c.r_owner=p.owner

11 AND c.r_constraint_name = p.constraint_name;

Foreign Key Referenced Key C OWNER TABLE_NAME

------------ -------------- - ---------- -------------

EMPLOYEE_DEPT.. DEPT_PK P SUMMIT DEPARTMENT

1 row selected.

Page 467: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 13-29

.....................................................................................................................................................Synthèse

Synthèse

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Synthèse

Ce chapitre vous a permis d'apprendre :

• à mettre en œuvre l'intégrité des données,

• à utiliser une stratégie appropriée de créationet de gestion des contraintes,

• à obtenir des informations du dictionnaire dedonnées.

Page 468: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................13-30 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 13 : Gérer l'intégrité des données

Pour référence

Contexte RéférenceParamètres d'initialisation AucunVues dynamiques des performances AucuneVues du dictionnaire de données DBA_CONSTRAINTS

DBA_CONS_COLUMNSCommandes CREATE TABLE ... CONSTRAINT

ALTER TABLE ADD CONSTRAINT ... EXCEPTIONS INTO

ALTER TABLE ... DISABLE CONSTRAINT

ALTER TABLE ... ENABLE NOVALIDATE CONSTRAINT

ALTER TABLE ... ENABLE VALIDATE CONSTRAINT ... EXCEPTIONS INTO

Procédures et fonctions de package

Aucune

Page 469: Oracle DBA - Architecture & Administration Vol.1

.................................

14

Charger les données

Page 470: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................14-2 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 14 : Charger les données

Objectifs

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Objectifs

A la fin de ce chapitre vous pourrez :

• charger les données en utilisant l'insertion parchargement direct,

• charger les données dans les tables Oracle à l'aidede l'utilitaire SQL*Loader :

– par chemin conventionnel,

– par chemin direct.

Page 471: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 14-3

.....................................................................................................................................................Présentation

Présentation

Charger les donnéesVous pouvez procéder de différentes manières pour charger les données dans les tables d'une base de données Oracle. Le présent chapitre porte sur les méthodes de chargement suivantes :

• insertion par chargement direct,

• utilitaire SQL*Loader,

• utilitaires Export et Import.

Insertion par chargement directUtilisez la méthode d'insertion par chargement direct pour copier les données d'une table vers une autre au sein d'une même base de données. Cette méthode accélère les opérations d'insertion en passant outre le cache de tampons (buffer cache) et en écrivant directement les données dans les fichiers de données.

Utilitaire SQL*LoaderSQL*Loader est un utilitaire qui permet de charger des données de fichiers externes dans des tables Oracle. Il offre un moyen de migrer des données à partir d'autres systèmes vers la base de données Oracle.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

SQL*Loader

Autresapplications

Présentation

Base dedonnées Oracle

Base dedonnéesOracle

Export

Import

Insertion par chargement direct

Page 472: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................14-4 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 14 : Charger les données

Utilitaires Export et ImportL'utilitaire Export permet aux utilisateurs d'extraire des informations et des données du dictionnaire de données d'une base de données Oracle et de les transférer vers un fichier du système d'exploitation au format binaire Oracle. Les fichiers générés par l'utilitaire Export peuvent être lus par l'utilitaire Import dans la même base de données Oracle ou dans une autre base de données Oracle. Les utilitaires Export et Import sont décrits dans le chapitre suivant.

Page 473: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 14-5

.....................................................................................................................................................Charger des données à l'aide de la méthode d'insertion par chargement direct

Charger des données à l'aide de la méthode d'insertion par chargement direct

SyntaxeL'insertion par chargement direct peut être exécutée en utilisant le conseil (hint) APPEND, comme indiqué dans la commande suivante :

INSERT /*+APPEND */ INTO [ schema. ] table

[ [NO]LOGGING ]

sub-query;

où : schema correspond au propriétaire de la table,

table est le nom de la table,

sub-query est la sous-interrogation qui permet de sélectionner les colonnes et les lignes à insérer.

Les insertions par chargement direct ne sont possibles qu'en utilisant la commande INSERT INTO SELECT. La commande INSERT INTO VALUES ne permet pas de les exécuter. L'insertion par chargement direct peut être utilisée tant dans les tables partitionnées que dans celles non partitionnées. Ce type d'insertion gère les index et applique toutes les contraintes activées. Il permet également à d'autres utilisateurs de modifier simultanément d'autres lignes de la table.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Espace libre après suppression Blocs utilisés par les lignes insérées

Repère high-water markBloc utilisé

Utiliser l'insertion par chargement direct

Table EMP

INSERT /*+APPEND */ INTO scott.emp

NOLOGGING

SELECT * FROM scott.old_emp;

INSERT /*+APPEND */ INTO scott.emp

NOLOGGING

SELECT * FROM scott.old_emp;

Processusserveur

Page 474: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................14-6 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 14 : Charger les données

Mode LOGGINGLorsque vous effectuez une insertion à l'aide de l'option LOGGING (option par défaut), l'opération génère des entrées de journalisation (redo log entries), ce qui permet de récupérer toutes les données en cas d'incident.

Si vous utilisez l'option NOLOGGING, les modifications apportées aux données ne seront pas enregistrées dans le tampon de journalisation (redo log buffer). Toutefois, un nombre minimal d'informations de journalisation est généré lorsque l'opération met à jour le dictionnaire de données. Le mode NOLOGGING est utilisé si l'attribut correspondant a été affecté à la table.

Si plusieurs modifications "online" des données de la table sont susceptibles de se produire simultanément, il est conseillé de définir l'attribut NOLOGGING avant de charger les données et de réinitialiser l'attribut en indiquant LOGGING une fois le chargement des données terminé.

Autres considérationsL'insertion par chargement direct des données permet à d'autres transactions de modifier la table simultanément.

Toutes les données insérées à l'aide de cette méthode sont chargées au-dessus du repère high-water mark. Si la table contient un grand nombre de blocs dont des lignes ont été supprimées, de l'espace peut être perdu et le balayage complet de la table peut être plus long.

Page 475: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 14-7

.....................................................................................................................................................Charger des données à l'aide de la méthode d'insertion par chargement direct

Insertions par chargement direct en parallèleVous pouvez effectuer des insertions par chargement direct en parallèle en procédant de l'une des manières suivantes :

• à l'aide du conseil PARALLEL dans l'instruction INSERT, comme indiqué dans l'exemple,

• en créant la table ou en la modifiant pour définir la clause PARALLEL.

Lorsque vous effectuez des insertions par chargement direct en parallèle, le serveur Oracle utilise plusieurs processus, appelés processus esclaves d'interrogation en parallèle, pour insérer les données dans la table. Des segments temporaires sont alloués pour stocker les données insérées par chaque processus esclave. Lorsque la transaction est validée, les extents (ensembles de blocs contigus) de chaque segment sont intégrés à la table dans laquelle les enregistrements sont insérés.

Remarque :• Vous devez exécuter la commande LMD ALTER SESSION ENABLE

PARALLEL au début de la transaction.

• Un objet modifié par insertion par chargement direct en parallèle ne peut pas être interrogé ou modifié de nouveau dans la même transaction.

Pour plus d'informations sur les insertions par chargement direct en parallèle, reportez-vous à Oracle8i Reference, "Parallel Execution".

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Espace libre après suppression Segments temporaires

Repère high-water markBloc utilisé

Insertions par chargementdirect en parallèle

Table EMP

ALTER SESSION ENABLE PARALLEL DML;

INSERT /*+PARALLEL(scott.emp,2) */

INTO scott.emp NOLOGGING

SELECT * FROM scott.old_emp;

ALTER SESSION ENABLE PARALLEL DML;

INSERT /*+PARALLEL(scott.emp,2) */

INTO scott.emp NOLOGGING

SELECT * FROM scott.old_emp;

Processusesclave

Processusesclave

Page 476: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................14-8 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 14 : Charger les données

Charger les données à l'aide de l'utilitaire SQL*Loader

Fonctions de l'utilitaire SQL*LoaderL'utilitaire SQL*Loader charge les données des fichiers externes dans les tables d'une base de données Oracle. Caractéristiques de l'utilitaire SQL*Loader :

• Un ou plusieurs fichiers en entrée peuvent être utilisés.

• Plusieurs enregistrements en entrée peuvent être combinés pour former un enregistrement de chargement logique.

• Les fichiers en entrée peuvent avoir une longueur fixe ou variable.

• Les données en entrée peuvent avoir n'importe quel format : caractère, binaire, décimal condensé, date et décimal non condensé.

• Les données peuvent être chargées à partir de différents types de support, tels que des disques, des bandes ou des canaux nommés.

• Les données peuvent être chargées simultanément dans plusieurs tables.

• Des options sont disponibles pour ajouter des données aux tables ou remplacer des données existantes.

• Les fonctions SQL peuvent être appliquées aux données en entrée avant le stockage de la ligne dans la base de données.

• Les valeurs de colonne peuvent être générées automatiquement en fonction de règles. Par exemple, une valeur de clé séquentielle peut être générée et stockée dans une colonne.

• Les données peuvent être chargées directement dans la table sans utiliser le cache de tampons de la base de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Fichiers debase de données

Fichiers dedonnées

Fichier decontrôle

SQL*Loader

Fichierjournal

Inséré

Serveur Oracle

Sélectionné

SQL*Loader

Fichier deparamètres(facultatif)

Rejeté

Fichierenreg.

refusés

Rejeté

Sélection d'enregistrementAccepté

Fichierde rebut

(facultatif)

Rebut

Traitement des champs

Page 477: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 14-9

.....................................................................................................................................................Charger les données à l'aide de l'utilitaire SQL*Loader

Fichiers utilisés par l'utilitaire SQL*LoaderL'utilitaire SQL*Loader utilise les fichiers suivants :

• Fichier de contrôle : définit le format d'entrée, les tables de sortie et les conditions facultatives permettant de ne charger qu'une partie des enregistrements de fichiers de données en entrée.

• Fichiers de données : contiennent les données au format défini dans le fichier de contrôle.

• Fichier de paramètres : fichier facultatif permettant de définir les paramètres de ligne de commande du chargement des données.

• Fichier journal : créé par l'utilitaire SQL*Loader et contenant l'enregistrement du chargement des données.

• Fichier des enregistrements refusés : utilisé par l'utilitaire pour écrire les enregistrements rejetés lors du chargement des données (cette situation peut se produire lorsque l'utilitaire valide les enregistrements en entrée ou lorsque le serveur Oracle insère les enregistrements).

• Fichier de rebut : créé, si nécessaire, pour stocker tous les enregistrements qui ne répondent pas aux critères de sélection.

Page 478: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................14-10 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 14 : Charger les données

Méthodes de chargement des donnéesL'utilitaire SQL*Loader permet de charger les données de deux manières :

• par chemin conventionnel,

• par chemin direct.

Charger les données par chemin conventionnelLe chargement des données par chemin conventionnel crée un tableau contenant les lignes à insérer et utilise l'instruction SQL INSERT pour charger les données. Au cours du chargement, les enregistrements en entrée sont analysés en fonction des spécifications de champ, et un tableau d'enregistrements est créé et inséré dans la table définie dans le fichier de contrôle. Les enregistrements qui ne respectent pas les spécifications de champ sont rejetés, ainsi que ceux qui ne correspondent pas aux critères de sélection.

Vous pouvez utiliser le chargement par chemin conventionnel pour charger des données tant dans les tables incluses dans un cluster que dans celles non incluses dans un cluster. La génération des informations de journalisation est contrôlée par l'attribut de journalisation de la table chargée.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Chargement des données par cheminconventionnel et par chemin direct

Conventionnel

Gestion d'extents

Enregistrementdes données

Table

Repère high-water markEspace utilisé uniquement par

le chargement des donnéespar chemin conventionnel

Insertiontableau

Instance

Zone de mémoirepartagée

SGA

Chemin direct

Page 479: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 14-11

.....................................................................................................................................................Charger les données à l'aide de l'utilitaire SQL*Loader

Charger les données par chemin directLe chargement des données par chemin direct crée des blocs de données en mémoire et les enregistre directement dans les extents alloués à la table en cours de chargement. Aucune entrée de journalisation n'est créée si la base de données ne fonctionne pas en mode ARCHIVELOG. Le chargement des données par chemin direct utilise les spécifications de champ pour créer des blocs de données Oracle complets et écrit les blocs directement dans les fichiers de données Oracle. Cette méthode n'utilise pas le cache de tampons de la base de données et accède à la mémoire SGA uniquement pour gérer les extents et ajuster le repère high-water mark.

Le chargement des données par chemin direct est généralement plus rapide que le chargement des données par chemin conventionnel, mais ne convient pas pour toutes les situations. La section suivante présente une comparaison des deux méthodes et contient des exemples décrivant les situations dans lesquelles celles-ci peuvent être utilisées.

Remarque : le script catldr.sql, fourni par Oracle, crée des vues utilisées pour le chargement des données par chemin direct. Ce script est appelé automatiquement lorsque le script catalog.sql est exécuté.

Page 480: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................14-12 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 14 : Charger les données

Méthode d'enregistrement des donnéesLe chargement des données par chemin conventionnel utilise une instruction SQL et des instructions COMMIT sur la base de données pour enregistrer les données. L'insertion d'un tableau d'enregistrements est suivie d'une opération de validation. Chaque chargement de données peut faire appel à plusieurs transactions.

Le chargement des données par chemin direct enregistre les données pour écrire les blocs de données dans les fichiers de données Oracle. Les différences existant entre un enregistrement de données et une validation sont les suivantes :

• Lors d'un enregistrement de données, seuls les blocs de base de données complets sont écrits dans la base de données.

• Les blocs sont écrits après le repère high-water mark de la table.

• Le repère est déplacé après l'enregistrement des données.

• Les ressources internes ne sont pas libérées à la suite de l'enregistrement des données.

• Un enregistrement de données ne met pas fin à la transaction.

• Les index ne sont pas mis à jour à chaque enregistrement de données.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Comparaison du chargement par cheminconventionnel et du chargement par

chemin direct

Chargement par cheminconventionnel

Utilise COMMIT pour rendreles modifications permanentes.

Entrées de journalisationtoujours générées.

Applique toutes les contraintes.

Active les déclencheurs INSERT.

Peut charger les données dans destables incluses dans un cluster.

Les autres utilisateurs peuventmodifier les tables.

Chargement par chemin direct

Utilise les enregistrements de données.

Génère des informations de journalisationuniquement dans certaines conditions.

Utilise les clés primaires, uniques et NON NULL.

N'active pas les déclencheurs INSERT.

Ne peut pas charger les données dansdes tables incluses dans un cluster.

Les autres utilisateurs ne peuvent pasmodifier les tables.

Page 481: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 14-13

.....................................................................................................................................................Charger les données à l'aide de l'utilitaire SQL*Loader

Journaliser les modificationsLe chargement des données par chemin conventionnel génère des entrées de journalisation comme n'importe quelle instruction LMD. Aucune entrée de journalisation du chargement n'est créée si :

• la base de données fonctionne en mode NOARCHIVELOG,

• la base de données fonctionne en mode ARCHIVELOG et que la journalisation est désactivée. Vous pouvez désactiver la journalisation en affectant à la table l'attribut NOLOGGING ou à l'aide de la clause UNRECOVERABLE du fichier de contrôle.

Appliquer les contraintesLors d'un chargement des données par chemin conventionnel, toutes les contraintes activées sont appliquées comme s'il s'agissait d'une opération LMD.

Lors d'un chargement des données par chemin direct, les contraintes sont traitées comme suit :

• Les contraintes NOT NULL sont vérifiées lors de la création des tableaux.

• La clé étrangère et les contraintes CHECK sont désactivées et peuvent être réactivées à la fin du chargement en utilisant les commandes appropriées dans le fichier de contrôle. Les contraintes de clé étrangère sont désactivées, car elles font référence à d'autres lignes ou à d'autres tables ; les contraintes CHECK sont désactivées, car elles peuvent utiliser des fonctions SQL. Si vous ne devez insérer qu'un petit nombre de lignes dans une table volumineuse, utilisez le chargement des données par chemin conventionnel.

• Les contraintes de clé primaire et de clé unique sont vérifiées au cours du chargement et à la fin du chargement, et peuvent être désactivées en cas de violation.

Activer les déclencheurs INSERTLes déclencheurs INSERT sont activés pendant le chargement des données par chemin conventionnel ; en revanche, ils sont désactivés avant l'exécution d'un chargement des données par chemin direct et réactivés à la fin du chargement. Ils peuvent rester désactivés si un objet référencé n'est pas accessible à la fin du chargement. Utilisez le chargement des données par chemin conventionnel pour charger les données dans les tables avec des déclencheurs INSERT.

Charger les données dans une table incluse dans un clusterVous ne pouvez pas utiliser le chargement des données par chemin direct pour charger des lignes dans une table incluse dans un cluster. Vous ne pouvez charger une table incluse dans un cluster qu'avec le chargement des données par chemin conventionnel.

Page 482: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................14-14 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 14 : Charger les données

VerrouillerLorsqu'un chargement des données par chemin direct est en cours, les autres transactions ne peuvent pas modifier les tables en cours de chargement, sauf lorsque plusieurs sessions de chargement des données par chemin direct en parallèle sont utilisées simultanément. Le chargement des données par chemin direct en parallèle est décrit dans la section suivante.

Page 483: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 14-15

.....................................................................................................................................................Charger les données à l'aide de l'utilitaire SQL*Loader

Chargement des données par chemin direct en parallèleLe chargement des données par chemin direct en parallèle permet l'utilisation de plusieurs sessions simultanées pour charger les données dans une même table.

Séquence des opérationsUtilisez différents fichiers de données en entrée pour chaque session de chargement des données par chemin direct en parallèle. Lorsque vous utilisez plusieurs sessions de chargement des données par chemin direct en parallèle, le chargement s'effectue comme suit :

1 Chaque session utilise un segment temporaire pour charger les données à partir des fichiers de données en entrée. Ces segments temporaires sont créés dans le tablespace contenant la table en cours de chargement. Si le tablespace contient plusieurs fichiers de données, l'utilisateur peut, pour chacune des sessions, définir le fichier de données dans lequel le segment temporaire doit être créé. L'utilisateur peut également définir les paramètres de stockage des segments. Par défaut, les segments ont les mêmes attributs que la table en cours de chargement.

2 Le dernier extent de chaque segment temporaire est supprimé pour libérer l'espace inutilisé une fois la session terminée.

3 Tous les segments temporaires sont combinés pour former un seul segment à la fin du chargement.

4 Le segment temporaire résultant est alors ajouté au segment de la table.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Segments temporaires

load1.datload1.ctl

load2.datload2.ctl

load3.datload3.ctl

SQL*Loader

SQL*Loader

SQL*Loader

Chargement des données par chemindirect en parallèle

Table

Repère high-water mark

Page 484: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................14-16 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 14 : Charger les données

RestrictionsLes restrictions suivantes s'appliquent au chargement des données par chemin direct en parallèle :

• Les index ne sont pas gérés par le chargement. Les index sont supprimés avant le chargement en parallèle et recréés à la fin du chargement.

• L'intégrité référentielle, les contraintes CHECK et les déclencheurs doivent être désactivés et réactivés manuellement.

• Les lignes ne peuvent être ajoutées qu'aux données existantes, car les chargements ne sont pas coordonnés. Si des données de la table doivent être remplacées, tronquez manuellement la table avant d'effectuer le chargement en parallèle.

Page 485: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 14-17

.....................................................................................................................................................Charger les données à l'aide de l'utilitaire SQL*Loader

Ligne de commandeUtilisez la commande suivante sous UNIX ou Windows NT pour charger les données :

$sqlldr [keyword=]value [ [ [,] keyword=]value ] ...

où : keyword correspond à l'un des mots-clés décrits dans la section suivante,

value correspond à la valeur du mot-clé.

Remarque :

• Si aucun mot-clé n'est indiqué, les valeurs doivent être définies dans l'ordre approprié. Toutefois, il est préférable d'utiliser les mots-clés.

• Comme le montre la diapositive, vous pouvez définir les premières valeurs sans mot-clé, et les autres valeurs avec des mots-clés.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Utiliser SQL*Loader

$sqlldr scott/tiger \

> control=ulcase6.ctl \

> log=ulcase6.log direct=true

$sqlldr scott/tiger \

> control=ulcase6.ctl \

> log=ulcase6.log direct=true

SQL*Loader

ulcase6.logTable EMP

ulcase6.ctl

Page 486: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................14-18 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 14 : Charger les données

Utiliser Oracle Enterprise Manager pour charger les données1 Démarrez la console Oracle Enterprise Manager :

Start—>Programs—>Oracle - EMV2 Home—>Oracle Enterprise Management —>Enterprise Manager Console

2 Entrez les paramètres Administrator, Password et Management Server. Cliquez sur OK pour vous connecter à la console.

3 Développez le dossier Databases.

4 Sélectionnez la base de données de travail, cliquez avec le bouton droit de la souris pour afficher le menu contextuel, puis sélectionnez Data Management—>Load.

5 Entrez le nom du fichier de contrôle dans la page Control File, puis cliquez sur Next.

6 Entrez le nom des autres fichiers dans la page Data Files, puis cliquez sur Next.

7 Définissez les options de chargement de la page Load Method, puis cliquez sur Next.

8 Définissez une planification dans la page Scheduling, puis cliquez sur Finish.

9 Vérifiez les options de la page Summary, puis cliquez sur OK.

Page 487: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 14-19

.....................................................................................................................................................Charger les données à l'aide de l'utilitaire SQL*Loader

Mots-clés de ligne de commandeUn certain nombre de mots-clés et d'options de chargement couramment utilisés à indiquer dans la page 3 de l'assistant Data Manager Wizard sont décrits ci-dessous.

Mot-clé Signification

USERID Nom utilisateur et mot de passe Oracle. Si le mot de passe n'est pas indiqué, un message s'affiche pour le demander à l'utilisateur.

CONTROL Nom du fichier de contrôle.

LOG Nom du fichier journal de travail ; par défaut, il correspond au nom du fichier de contrôle et porte l'extension log.

BAD Nom du fichier qui stocke les enregistrements rejetés ; par défaut, il correspond au nom du fichier de contrôle et porte l'extension bad.

DATA Nom des fichiers de données en entrée.

DISCARD Nom du fichier de rebut facultatif dans lequel les enregistrements non sélectionnés sont stockés.

DISCARDMAX Nombre maximum d'enregistrements non sélectionnés ; par défaut, contient tous les enregistrements non sélectionnés. Utilisez ce paramètre par mesure de sécurité pour interrompre le chargement si les fichiers en entrée ne sont pas les bons.

SKIP Nombre d'enregistrements à ignorer ; utilisé principalement pour poursuivre un chargement ayant échoué. N'utilisez cette option que si le chargement porte sur une seule table ou pour ignorer le même nombre d'enregistrements pour toutes les tables à charger.

LOAD Définit le nombre d'enregistrements à charger après avoir ignoré les enregistrements définis par le paramètre SKIP.

ERRORS Nombre maximum d'enregistrements refusés.

ROWS Définit le nombre de lignes du tableau à créer avant chaque insertion à l'aide du chargement des données par chemin conventionnel. Pour le chargement des données par chemin direct, ce paramètre définit le nombre approximatif de lectures de lignes en entrée de chaque enregistrement de données. Le chargement des données par chemin direct crée des blocs complets, puis rejette les enregistrements refusés et les lignes non valides avant l'enregistrement des données.

BINDSIZE Définit, pour le chargement des données par chemin conventionnel, le nombre maximum d'octets à utiliser pour créer un tableau de lignes à insérer dans chaque appel de base de données (si vous définissez également le paramètre ROWS, l'utilitaire SQL*Loader crée le nombre de lignes défini par le paramètre ROWS en fonction de la limite imposée par le paramètre BINDSIZE).

Page 488: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................14-20 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 14 : Charger les données

Mots-clés de ligne de commande (suite)

Ce paramètre peut également être défini dans le fichier de contrôle.

Remarque : la présente section ne contient pas tous les paramètres que vous pouvez définir. Pour plus d'informations, reportez-vous à Oracle8i Utilities, "SQL*Loader Command-Line Reference".

Mot-clé Signification

DIRECT L'utilitaire SQL*Loader fait appel au chargement des données par chemin direct si vous affectez la valeur TRUE au paramètre. Sinon, c’est le chargement des données par chemin conventionnel (option par défaut) qui est utilisé.

PARFILE Définit le nom du fichier qui contient tous les paramètres de chargement (les paramètres définis dans la ligne de commande remplacent ceux du fichier de paramètres).

PARALLEL Ce paramètre, qui ne s'applique qu'au chargement des données par chemin direct, indique que plusieurs chargements des données par chemin direct peuvent être exécutés en parallèle.

FILE Définit le fichier dans lequel les segments temporaires du chargement des données par chemin direct en parallèle doivent être créés.

Page 489: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 14-21

.....................................................................................................................................................Charger les données à l'aide de l'utilitaire SQL*Loader

Fichier de paramètresVous pouvez utiliser le fichier de paramètres pour définir les paramètres de chargement. Stockez tous les paramètres couramment utilisés dans un fichier de paramètres. Ce fichier définit les paramètres de la manière suivante :

KEYWORD=VALUE

Fichier de contrôleUn fichier de contrôle contient les éléments suivants :

• le nom des fichiers de données en entrée, à l'aide de la clause INFILE,

• la composition d'un enregistrement logique à partir d'un enregistrement physique dans les fichiers de données en entrée, à l'aide de clauses telles que CONCATENATE et CONTINUEIF,

• les spécifications de champ, y compris leur position, les types de données et les spécifications des délimiteurs, à l'aide de la clause FIELDS,

• les noms de table, à l'aide de la clause INTO TABLE,

• la méthode de chargement : les données peuvent être chargées dans une table vierge, insérées après la suppression ou la troncature des enregistrements existants, ou encore ajoutées aux données existantes,

• les enregistrements à ignorer pour chaque table, à l'aide de la clause CONTINUE_LOAD,

• les conditions à utiliser pour la sélection des enregistrements à charger, à l'aide de la clause WHEN,

• les colonnes à charger,

Copyright Oracle Corporation, 1999. Tous droits réservés.®

• Le fichier de paramètres contient les optionsde chargement.

• Le fichier de données contient lesenregistrements d'entrée.

• Le fichier de contrôle contient les instructionsde chargement.

SQL*Loader : fichiers d'entrée

LOAD DATAINFILE 'ulcase6.dat'INSERT

INTO TABLE emp(empno POSITION(01:04) INTEGER

EXTERNAL NULLIF empno=BLANKS,...)

Page 490: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................14-22 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 14 : Charger les données

Fichier de contrôle (suite)• les règles de génération des valeurs de colonne, à l'aide de clauses telles

que RECNUM et SYSDATE, et de l'application de fonctions SQL,

• les opérations de colonne, telles que la suppression et le remplacement des zéros par des marqueurs NULL,

• les paramètres de chargement, à l'aide de la clause OPTIONS,

• les spécifications de stockage des segments temporaires créés lors d'un chargement des données par chemin direct en parallèle,

• les commentaires précédés de "--",

• d'autres options de chargement des données par chemin direct, telles que :

– SINGLEROW pour gérer les index ligne par ligne,

– REENABLE pour activer à la fin du chargement les contraintes désactivées,

– SORTED_INDEXES pour indiquer si les données doivent être prétriées,

– UNRECOVERABLE pour supprimer la génération de données de journalisation.

Remarque :

• Le mot-clé NOLOGGING de définition de l'attribut NOLOGGING de la table est équivalent à l'option UNRECOVERABLE du fichier de contrôle.

• Vous pouvez également stocker les données dans les fichiers de contrôle en définissant INFILE * et en utilisant BEGINDATA pour marquer le début des données. Si vous utilisez cette option, tous les enregistrements situés après BEGINDATA seront considérés comme des données.

• Le répertoire UNIX $ORACLE_HOME/rdbms/demo et le répertoire Windows NT %ORACLE_HOME%\RDBMS80\LOADER contiennent des exemples d'options de chargement et de fichiers de contrôle. Le chapitre "SQL*Loader Case Studies" du manuel, Oracle8i Utilities, explique ces exemples en détail.

• Les commandes de fichier de contrôle sont décrites en détail dans le chapitre "SQL*Loader Control File Reference" du manuel Oracle8i Utilities.

Fichier de donnéesLe fichier de données contient les enregistrements à traiter au format défini dans le fichier de contrôle.

Page 491: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 14-23

.....................................................................................................................................................Charger les données à l'aide de l'utilitaire SQL*Loader

Fichiers journauxLe fichier journal est obligatoire, et le chargement s'arrête s'il ne peut pas être créé faute de place ou d'autorisation. Le fichier journal contient :

• des informations d'en-tête, telles que la date du chargement et le numéro de version du logiciel,

• des informations générales, telles que :

– le nom de tous les fichiers d'entrée et de sortie,

– les arguments de ligne de commande,

• des informations de table, telles que :

– les noms de table,

– les conditions et la méthode de chargement,

• les informations de champs et de colonnes,

• les informations de fichiers de données indiquant les enregistrements rejetés et refusés, ainsi que la cause,

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Contenu du fichier journal

• Informations d'en-tête

• Informations générales : paramètres etnoms de fichier

• Informations de table : spécifications detable et de colonne

• Informations de fichier de données :enregistrements traités

• Informations de chargement de table :erreurs et refus

• Statistiques récapitulatives

Page 492: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................14-24 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 14 : Charger les données

Fichiers journaux (suite)• des informations de chargement des tables, telles que :

– le nombre de lignes chargées,

– le nombre de lignes qui auraient pu être chargées, mais qui ont été rejetées à la suite d'erreurs de données,

– le nombre de lignes refusées,

– le nombre de lignes dont les champs correspondants sont tous NULL,

• des statistiques récapitulatives indiquant :

– l'espace alloué au tableau,

– les statistiques de chargement de tous les fichiers de données,

– le début et la fin du chargement,

– la durée du chargement,

– le temps CPU total comprenant la durée de toutes les entrées/sorties des fichiers, mais pas le temps CPU des processus d'arrière-plan.

Page 493: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 14-25

.....................................................................................................................................................Charger les données à l'aide de l'utilitaire SQL*Loader

Fichier des enregistrements refusésLe fichier des enregistrements refusés contient les enregistrements qui ont été rejetés lors du traitement pour l'une des raisons suivantes :

• les enregistrements en entrée contiennent des erreurs, telles qu'un nombre insuffisant de champs ou des champs mal formatés,

• certaines lignes n'ont pas pu être insérées à la suite, par exemple, d'une violation de contrainte.

Les enregistrements du fichier des enregistrements refusés ont le même format que les enregistrements en entrée. Après correction des erreurs, vous pouvez utiliser les enregistrements pour recharger les données.

Fichier de rebutLe fichier de rebut contient des données au même format que les fichiers de données en entrée. Il est utile pour charger des données de manière sélective dans des tables de base de données, soit dans différentes bases, soit à différents instants.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

SQL*Loader : autres fichiers de sortie

• Fichier des enregistrements refusés

– enregistrements rejetés,

– format identique à celui des fichiersde données.

• Fichier de rebut

– enregistre les fichiers non conformes,

– format identique à celui des fichiersde données.

Page 494: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................14-26 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 14 : Charger les données

Instructions d'utilisation de l'utilitaire SQL*LoaderLes instructions suivantes vous permettent de réduire le nombre d'erreurs et d'améliorer les performances lorsque vous utilisez l'utilitaire SQL*Loader :

• Faites appel à un fichier de paramètres pour définir les options de ligne de commande couramment utilisées. Par exemple, si vous chargez toutes les semaines les données dans un data warehouse, toutes les options, à l'exception des noms de fichier, peuvent être identiques.

• Séparer le fichier de contrôle du fichier de données permet de réutiliser les fichiers de contrôle pour plusieurs sessions de chargement.

• Préallouer l'espace en fonction du volume de données attendu permet, lors du chargement, d'éviter l'allocation dynamique d'extents et d'améliorer la vitesse du chargement.

• Lorsque vous faites appel au chargement des données par chemin direct, des segments temporaires sont utilisés pour générer des index pour les nouvelles données. Ces index sont fusionnés avec les index existants à la fin du chargement. En triant les données en entrée sur les clés de l'index le plus volumineux, vous pouvez réduire l'espace de tri.

• Avec le chargement des données par chemin direct en parallèle, vous pouvez définir l'emplacement des segments temporaires utilisés pour insérer les données. Pour chaque session de chargement, définissez un fichier de base de données différent pour obtenir des performances optimales.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

SQL*Loader : instructions d'utilisation

• Utilisez un fichier de paramètres pour définir lesoptions de ligne de commande les plus utilisées.

• Placez les données dans le fichier de contrôleuniquement pour un petit chargement nonrépétitif.

• Améliorez les performances :

– en allouant un espace suffisant,

– en triant les données sur l'indexle plus volumineux,

– en définissant des fichiers différentspour les segments temporaires duchargement en parallèle.

Page 495: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 14-27

.....................................................................................................................................................Charger les données à l'aide de l'utilitaire SQL*Loader

Dépannage de l'utilitaire SQL*LoaderLorsqu'un chargement se termine de façon anormale, toutes les données chargées jusqu'à l'apparition de l'incident sont généralement validées. Après avoir résolu le problème, procédez comme suit pour mener à bien le chargement :

• Si les données sont chargées dans une seule table ou que le nombre d'enregistrements traités est identique pour toutes les tables, utilisez le paramètre de ligne de commande SKIP pour poursuivre le chargement.

• Si un grand nombre de tables a été chargé et que le nombre d'enregistrements traités n'est pas identique pour toutes les tables, utilisez l'option CONTINUE_LOAD dans le fichier de contrôle pour définir le nombre d'enregistrements à ignorer pour chaque table.

• Recherchez les index inutilisables. Un index est inutilisable si l'index de la table n'est pas cohérent. Supprimez les index incohérents et recréez-les à la fin du chargement.

Résolution des problèmes• Espace insuffisant : un chargement peut s'arrêter si le serveur Oracle n'est pas

parvenu à allouer un espace suffisant aux tables à charger. Dans ce cas, recherchez l'origine du problème (espace disque insuffisant, fichiers saturés ou limite MAXEXTENTS atteinte) et corrigez le problème.

• Echec de l'instance : recherchez l'origine de l'erreur, corrigez l'erreur, redémarrez l'instance et poursuivez le chargement.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

SQL*Loader : dépannage

• Espace insuffisant pour la table ou l'index.

• Défaillance de l'instance lors du chargement.

• Vous utilisez la clause SORTED INDEXES etles données ne sont pas dans l'ordre défini.

• Détection, lors d'un chargement des donnéespar chemin direct, de clés en double dans unindex unique, dans une clé primaire ou dansune clé unique.

• BINDSIZE doit contenir plusieurs lignes.

• Nombre d'erreurs supérieur à la limite définie.

• Nombre de refus supérieur à la limite définie.

Page 496: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................14-28 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 14 : Charger les données

Résolution des problèmes (suite)• Ordre des données incorrect : les données sont chargées, mais l'index est

inutilisable. Supprimez les index inutilisables et recréez-les.

• Doublon de valeurs dans une clé primaire, dans une colonne unique ou dans un index unique : cette situation n'arrête pas le chargement, mais peut désactiver les contraintes ou rendre les index inutilisables. En cas d'erreurs de contrainte, utilisez une table d'exceptions pour intercepter les erreurs et les corriger. Si un index unique est inutilisable, vous devrez détecter les erreurs : essayez de créer une contrainte unique sur la colonne indexée, interceptez les erreurs dans une table d'exceptions et corrigez-les.

• Valeur BENDSIZE trop faible : utilisez une valeur plus élevée et chargez les données.

• Nombre d'erreurs supérieur à la limite définie : cette erreur se produit lorsque le chargement est interrompu parce que le nombre d'enregistrements non valides est supérieur à la valeur ERRORS. En général, cette erreur se produit lorsque les fichiers de données en entrée que vous utilisez sont incorrects. Vérifiez-les et utilisez les bons fichiers.

• Le nombre d'enregistrements refusés est supérieur au nombre défini : cette erreur se produit lorsqu'un chargement est interrompu parce que le nombre d'enregistrements refusés est supérieur à la valeur DISCARDMAX. En général, cette erreur se produit lorsque les fichiers de données en entrée que vous utilisez sont incorrects. Vérifiez-les et utilisez les bons fichiers.

Remarque : la clause SORTED INDEXES ne s'applique qu'au chargement des données par chemin direct. Pour plus d'informations sur la syntaxe et l'utilisation, reportez-vous au chapitre "SQL*Loader Control File Reference" du manuel Oracle8i Utilities.

Page 497: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................Oracle DBA : Architecture et administration 14-29

.....................................................................................................................................................Charger les données par chemin direct

Charger les données par chemin direct

Charger les données par chemin direct avec l'interface OCI (Oracle Call Interface)L'interface de chargement des données par chemin direct permet à une application OCI (Oracle Call Interface) d'accéder au moteur de chargement des données par chemin direct du serveur de base de données Oracle pour exécuter les fonctions de l'utilitaire Oracle SQL*Loader. Cette fonction permet de charger les données de fichiers externes dans une table Oracle.

L'interface OCI de chargement des données par chemin direct permet de charger plusieurs lignes en chargeant un flux de chemin direct contenant les données de plusieurs lignes.

Une opération de chargement des données par chemin direct nécessite que l'objet à charger soit verrouillé pour empêcher les opérations LMD sur l'objet.

Notez que les interrogations ne sont pas verrouillées et qu'elles peuvent être effectuées lorsque l'objet est en cours de chargement.

L'interface de chargement des données par chemin direct présente les mêmes limitations que l'utilitaire SQL*Loader.

Copyright Oracle Corporation, 1999. Tous droits réservés.®

API de chargement par chemin direct

Formateur de bloc

Données

Appels OCI

Client Serveur

Table

Page 498: Oracle DBA - Architecture & Administration Vol.1

.....................................................................................................................................................14-30 Oracle DBA : Architecture et administration

.....................................................................................................................................................Chapitre 14 : Charger les données

Synthèse

Pour référence

Contexte RéférenceParamètres d'initialisation AucunVues dynamiques des performances Aucune

Vues du dictionnaire de données AucuneCommandes sqlldr ou sqlloadProcédures et fonctions de package Aucune

Copyright Oracle Corporation, 1999. Tous droits réservés.®

Synthèse

Ce chapitre vous a permis d'apprendre :

• à utiliser l'insertion par chargement directpour copier des tables,

• à utiliser SQL*Loader pour charger desdonnées,

• à utiliser le mode de chargement des donnéespar chemin direct lorsque cela est nécessaire.