Académique Documents
Professionnel Documents
Culture Documents
Administration Workshop I
D17090FR30
Edition 3.0
Mai 2006
D42058
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Auteurs Copyright © 2005, Oracle. Tous droits réservés.
M.J. Billings Cette documentation contient des informations qui sont la propriété d'Oracle Corporation
et sont protégées par les lois relatives aux droits d'auteur et à la propriété intellectuelle.
Vous ne pouvez copier et imprimer ce document qu'à des fins d'utilisation personnelle
Révisions et lors de la participation à une formation dispensée par Oracle. Le document ne peut être
contributions techniques modifié ou altéré en aucune manière. A l'exception des cas où l'utilisation faite du
document s'inscrit dans le respect des lois relatives aux droits d'auteur, vous ne pouvez
Anthony Woodell pas utiliser, partager, télécharger, copier, imprimer, afficher, exécuter, reproduire, publier,
Barry Trute breveter, diffuser, transmettre ou distribuer ce document, en partie ou en totalité, sans
l'autorisation expresse d'Oracle.
Celia Antonio
Les informations fournies dans ce document sont susceptibles de modification sans
Christine Jeal préavis. Par ailleurs, Oracle Corporation ne garantit pas qu'elles soient exemptes
Donna Keesling d'erreurs et vous invite, le cas échéant, à lui en faire part par écrit à l'adresse suivante :
Oracle University, 500 Oracle Parkway, Redwood Shores, California 94065 USA.
Howard Bradley
James Spiller Restrictions applicables au gouvernement américain :
Restricted Rights Notice
Janet Stern
If this documentation is delivered to the United States Government or anyone using the
Jean-Francois Verrier documentation on behalf of the United States Government, the following notice is
Joel Goodman applicable:
John Hibbard U.S. GOVERNMENT RIGHTS
Larry Baumann The U.S. Government’s rights to use, modify, reproduce, release, perform, display, or
disclose these training materials are restricted by the terms of the applicable Oracle
Magnus Isaksson license agreement and/or the applicable U.S. Government contract.
M.J. Bryksa
Marques
Paul Needham
Oracle, JD Edwards et PeopleSoft sont des marques déposées d'Oracle Corporation
Pierre Labrousse et/ou de ses filiales. Tout autre nom de produit ou de société peut être une marque de
Raza Siddiqui son propriétaire.
Sandra Cheevers
Stefan Lindblad
Stella Kister
Steve Friedberg
Steven Karam
Sushma Jagannath
Tammy Bednar
Rédacteurs
Navratan Singh
Nita Pavitran
Raj Kumar
Concepteur graphique
Satish Bettegowda
Steve Elwood
Editeur
Joseph Fernandez
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Table des matières
Préface
1 Introduction
Objectifs du cours 1-2
Planification recommandée 1-3
Objectifs du chapitre 1-4
Produits et services Oracle 1-5
Oracle Database 10g : "g" signifie "grid" 1-6
Architecture de base de données Oracle 1-9
Structures de base de données 1-10
Structures mémoire Oracle 1-11
Structures de processus 1-13
Gestion des instances Oracle 1-14
Processus serveur et cache de tampons de base de données 1-15
Structure de base de données physique 1-16
Tablespaces et fichiers de données 1-18
Tablespaces SYSTEM et SYSAUX 1-19
Segments, extents et blocs 1-20
Structures de base de données logiques et physiques 1-21
Exemples du cours : Le schéma HR 1-23
Architecture de la base de données : Récapitulatif des
composants structurels 1-24
Synthèse 1-25
iii
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
3 Créer une base de données Oracle
Objectifs 3-2
Planification de la base de données 3-3
Bases de données : Exemples 3-4
Assistant Database Configuration Assistant (DBCA) 3-5
Utiliser l'assistant DBCA pour créer une base de données 3-6
Gestion des mots de passé 3-12
Créer un modèle de conception de base de données 3-13
Utiliser l'assistant DBCA pour supprimer une base de données 3-14
Synthèse 3-16
Présentation de l'exercice : Utiliser l'assistant DBCA 3-17
iv
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Vues dynamiques des performances : Exemples d'utilisation 4-33
Vues dynamiques des performances : Considérations 4-34
Synthèse 4-35
Présentation de l'exercice : Gérer l'instance Oracle 4-36
5 Gérer les structures de stockage de base de données
Objectifs 5-2
Structures de stockage 5-3
Mode de stockage des données d’une table 5-4
Anatomie d'un bloc de base de données 5-5
Tablespaces et fichiers de données 5-6
Oracle Managed Files (OMF) 5-7
Gestion de l'espace dans les tablespaces 5-8
Explorer la structure de stockage 5-9
Créer un tablespace 5-10
Gestion du stockage dans les tablespaces gérés localement 5-12
Tablespaces de la base de données préconfigurée 5-14
Modifier un tablespace 5-16
Actions sur les tablespaces 5-19
Supprimer des tablespaces 5-21
Afficher les informations relatives aux tablespaces 5-22
Collecter des informations sur les tablespaces 5-23
Afficher le contenu d'un tablespace 5-24
Etendre la base de données 5-25
Automatic Storage Management : Présentation 5-26
ASM : Fonctionnalités clés et principaux avantages 5-27
ASM : Concepts 5-28
Synthèse 5-29
Présentation de l'exercice : Gérer les structures de stockage
de base de données 5-30
6 Administrer la sécurité utilisateur
Objectifs 6-2
Comptes utilisateur de base de données 6-3
Comptes prédéfinis : SYS et SYSTEM 6-5
Créer un utilisateur 6-6
Authentification des utilisateurs 6-7
Authentification de l'administrateur 6-9
Déverrouiller un compte utilisateur et redéfinir le mot de passe 6-10
Privilèges 6-11
Privilèges système 6-12
Privilèges objet 6-14
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Révoquer des privilèges système accordés avec ADMIN OPTION 6-15
Révoquer des privilèges objet accordés avec GRANT OPTION 6-16
Avantages des rôles 6-17
Affecter des privilèges à des rôles et des rôles à des utilisateurs 6-18
Rôles prédéfinis 6-19
Créer un rôle 6-20
Rôles sécurisés 6-21
Affecter des rôles aux utilisateurs 6-22
Profils et utilisateurs 6-23
Implémenter des fonctionnalités de sécurité utilisant des mots de passe 6-25
Créer un profil de mot de passe 6-27
Fonction de vérification des mots de passe fournie : VERIFY_FUNCTION 6-28
Affecter des quotas aux utilisateurs 6-29
Synthèse 6-31
Présentation de l'exercice : Administrer les utilisateurs 6-32
vi
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Qu'est-ce qu'une vue ? 7-35
Créer des vues 7-36
Séquences 7-37
Créer une séquence 7-38
Utiliser une séquence 7-40
Tables temporaires 7-41
Tables temporaires : Utilisation 7-43
Dictionnaire de données : Présentation 7-44
Vues du dictionnaire de données 7-45
Dictionnaire de données : Exemples d'utilisation 7-47
Synthèse 7-48
Présentation de l'exercice : Administrer les objets de schéma 7-49
vii
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Résoudre les conflits de verrouillage à l'aide d'instructions SQL 8-31
"Verrous mortels" 8-32
Synthèse 8-33
Présentation de l'exercice : Gérer le données et la simultanéité
d'accès aux données 8-34
9 Gérer les données d'annulation
Objectifs 9-2
Manipulation des données 9-3
Données d'annulation 9-4
Transactions et données d'annulation 9-6
Stockage des informations d'annulation 9-7
Données d'annulation et données de journalisation 9-8
Surveiller les informations d'annulation 9-9
Administrer les informations d'annulation 9-11
Configurer la période de conservation des informations d'annulation 9-12
Garantir la période de conservation des informations d'annulation 9-14
Dimensionner le tablespace d'annulation 9-15
Utiliser Undo Advisor 9-16
Synthèse 9-17
Présentation de l'exercice : Gérer les segments d'annulation 9-18
viii
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Gérer la trace d'audit 10-27
Mises à jour de sécurité 10-28
Appliquer des patches de sécurité 10-29
Synthèse 10-30
Présentation de l'exercice : Implémenter la sécurité
de la base de données Oracle 10-31
11 Configurer l'environnement réseau Oracle
Objectifs 11-2
Services Oracle Net 11-3
Processus d'écoute Oracle Net 11-4
Etablir des connexions réseau 11-5
Etablir une connexion 11-6
Sessions utilisateur 11-7
Outils de configuration et de gestion de l'environnement réseau Oracle 11-9
Utilitaire de contrôle du processus d'écoute 11-10
Syntaxe de l'utilitaire de contrôle du processus d'écoute 11-11
Page d'accueil Listener 11-13
Pages Net Services Administration 11-14
Créer un processus d'écoute 11-15
Ajouter des adresses de processus d'écoute 11-16
Enregistrement d'un service de base de données 11-17
Méthodes de résolution de noms 11-18
Easy Connect 11-19
Résolution locale de noms 11-20
Résolution de noms d'annuaire 11-21
Méthode de résolution de noms externes 11-22
Configurer des alias de service 11-23
Options de connexion avancées 11-24
Tester la connectivité Oracle Net 11-26
Sessions utilisateur : Serveurs dédiés 11-27
Sessions utilisateur : Serveurs partagés 11-28
Mémoire SGA et mémoire PGA 11-29
Serveur partagé : Concentration des connexions 11-30
Dans quel cas ne pas utiliser de serveur partagé ? 11-31
Synthèse 11-32
Présentation de l'exercice : Utiliser les composants réseau Oracle 11-33
12 Maintenance proactive
Objectifs 12-2
Maintenance proactive 12-3
Terminologie 12-4
ix
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Statistiques destinées à l'optimiseur 12-5
Utiliser la page Manage Optimizer Statistics 12-7
Niveaux de statistiques 12-9
Référentiel AWR (Automatic Workload Repository) 12-10
Infrastructure du référentiel AWR 12-11
Jeux de clichés AWR 12-12
Enterprise Manager et référentiel AWR 12-13
Gérer le référentiel AWR 12-14
Moniteur ADDM (Automatic Database Diagnostic Monitor) 12-15
Résultats ADDM 12-16
Recommandations ADDM 12-17
Infrastructure de conseil 12-18
Enterprise Manager et les fonctions de conseil 12-20
Package DBMS_ADVISOR 12-21
Alertes générées par le serveur 12-22
Alertes par défaut générées par le serveur 12-23
Définir des seuils 12-24
Créer et tester une alerte 12-25
Notification des alertes 12-26
Réagir aux alertes 12-28
Types d'alerte et effacement des alertes 12-29
Tâches de maintenance automatisées 12-30
Synthèse 12-31
Présentation de l'exercice : Maintenance proactive 12-32
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Utiliser Memory Advisor 13-21
Statistiques dynamiques de performances 13-22
Vues de résolution des problèmes et de réglage 13-24
Options non valides et inutilisables 13-25
Synthèse 13-27
Présentation de l'exercice : Surveiller et améliorer les performances 13-28
14 Concepts de sauvegarde et de récupération
Objectifs 14-2
Partie de votre travail 14-3
Catégories de panne 14-4
Echec d'une instruction 14-5
Echec d'un processus utilisateur 14-6
Défaillance réseau 14-7
Erreur utilisateur 14-8
Echec d'une instance 14-10
Processus en arrière-plan et récupération : Point de reprise (CKPT) 14-11
Processus en arrière-plan et récupération : Fichiers de journalisation
et LogWriter 14-13
Processus en arrière-plan et récupération : Processus d'archivage (ARCn) 14-14
Récupération d'instance 14-15
Phases de la récuperation d'instance 14-16
Régler la récupération d'instance 14-17
Utiliser MTTR Advisor 14-18
Défaillance physique 14-19
Configurer la base de données afin d'optimiser la possibilité
de récupération 14-20
Fichiers de contrôle 14-22
Fichiers de journalisation 14-23
Multiplexer le fichier de journalisation 14-24
Fichiers de journalisation archivés 14-25
Fichier de journalisation archivé : Appellation et destinations 14-26
Mode ARCHIVELOG 14-28
Synthèse 14-29
Présentation de l'exercice : Configurer la base de données afin d'optimiser
la possibilité de récupération 14-30
15 Procéder à des sauvegardes de la base de données
Objectifs 15-2
Solutions de sauvegarde : Présentation 15-3
Oracle Secure Backup 15-4
Sauvegarde gérée par l'utilisateur 15-5
Terminologie 15-6
Recovery Manager (RMAN) 15-8
xi
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Configurer les paramètres de sauvegarde 15-9
Planifier des sauvegardes : Stratégie 15-11
Planifier des sauvegardes : Options 15-12
Planifier des sauvegardes : Paramètres 15-13
Planifier des sauvegardes : Planification 15-14
Planifier des sauvegardes : Récapitulatif 15-15
Sauvegarder le fichier de contrôle dans un fichier trace 15-16
Gérer les sauvegardes 15-18
Zone de récupération rapide 15-19
Synthèse 15-20
Présentation de l'exercice : Créer des sauvegardes
de la base de données 15-21
16 Procéder à une récupération de la base de données
Objectifs 16-2
Ouvrir une base de données 16-3
Modifier le statut d'une instance 16-5
Maintenir une base de données ouverte 16-6
Perte d'un fichier de contrôle 16-7
Perte d'un fichier de journalisation 16-8
Perte d'un fichier de données en mode NOARCHIVELOG 16-9
Perte d'un fichier de données non essentiel en mode ARCHIVELOG 16-10
Perte d'un fichier de données essentiel pour le système
en mode ARCHIVELOG 16-11
Synthèse 16-12
Présentation de l'exercice : Procéder à une récupération
de la base de données 16-13
17 Procéder à un flashback de la base de données
Objectifs 17-2
Avantages de la technologie Flashback 17-3
Dans quel cas utiliser la technologie Flashback ? 17-4
Procéder à un flashback suite à une erreur 17-5
Flashback Database : Présentation 17-6
Flashback Database : Réduction de la durée de restauration 17-7
Flashback Database : Eléments à prendre en compte 17-8
Flashback Database : Limitations 17-9
Activer Flashback Database 17-10
Flashback Table : Présentation 17-11
Flashback Table 17-12
Activer le déplacement de lignes (row movement) dans une table 17-13
Procéder au flashback d'une table 17-14
Flashback Table : Eléments à prendre en compte 17-16
Flashback Drop : Présentation 17-17
xii
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Procéder à un flashback de tables supprimées via Enterprise Manager 17-18
Flashback Drop : Eléments à prendre en compte 17-19
Navigation temporelle grâce aux fonctionnalités Flashback 17-20
Flashback Query : Présentation 17-21
Flashback Query : Exemple 17-22
Flashback Versions Query : Présentation 17-23
Flashback Versions Query via Enterprise Manager 17-24
Flashback Versions Query : Eléments à prendre en compte 17-25
Flashback Transaction Query : Présentation 17-26
Flashback Transaction Query via Enterprise Manager 17-27
Flashback Transaction Query : Eléments à prendre en compte 17-28
Synthèse 17-29
Présentation de l'exercice : Utiliser Flashback 17-30
xiii
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Utiliser des tables externes 18-34
Remplissage d'une table externe avec ORACLE_DATAPUMP 18-35
Remplissage d'une table externe avec ORACLE_LOADER 18-36
Dictionnaires de données 18-37
Synthèse 18-38
Présentation de l'exercice : Déplacer des données 18-39
Annexe A : Exercices
Annexe B : Solutions
Index
xiv
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Préface
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Préface-2
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Profil
Avant de commencer
Avant de commencer ce cours, vous devez disposer des connaissances suivantes :
• Connaissance du langage SQL
Organisation du cours
OracleAS 10g : Administration Workshop I est un cours en salle comprenant un exposé théorique et
des exercices pratiques. Les démonstrations en ligne et les sessions d'exercices écrits permettent de
renforcer les concepts et les techniques présentés.
Préface-3
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Documentation
Documentation Oracle
Titre Référence
Oracle Database 2 Day DBA 10g Release 2 (10.2) B14196-01
Oracle Database Administrator's Guide 10g Release 2 (10.2) B14231-01
Oracle Database Backup and Recovery Basics 10g Release 2 (10.2) B14192-01
Oracle Database Concepts 10g Release 2 (10.2) B14220-01
Oracle Database Licensing Information 10g Release 2 (10.2) B14199-01
Oracle Database Net Services Administrator's Guide 10g Release 2 (10.2) B14212-01
Oracle Database Net Services Reference 10g Release 2 (10.2) B14213-01
Oracle Database New Features Guide 10g Release 2 (10.2) B14214-01
Oracle Database Performance Tuning Guide 10g Release 2 (10.2) B14211-01
Oracle Database PL/SQL Packages and Types Reference 10g Release 2 (10.2) B14258-01
Oracle Database PL/SQL User's Guide and Reference 10g Release 2 (10.2) B14261-01
Oracle Database Recovery Manager Quick Start Guide 10g Release 2 (10.2) B14193-01
Oracle Database Recovery Manager Reference 10g Release 2 (10.2) B14194-01
Oracle Database Security Guide 10g Release 2 (10.2) B14266-01
Oracle Database SQL Quick Reference 10g Release 2 (10.2) B14195-01
Oracle Database SQL Reference 10g Release 2 (10.2) B14200-01
Autre documentation
• System release bulletins (bulletins techniques)
• Guides d'installation et guides de l'utilisateur
• Fichiers readme
• Articles du groupe IOUG (International Oracle Users' Group)
• Oracle Magazine
Préface-4
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Conventions typographiques
Conventions typographiques concernant le texte
Convention Elément Exemple
Gras Locutions et mots mis en Pour naviguer dans cette application, ne cliquez
évidence, contenu Web pas sur les boutons Back (page précédente) et
uniquement Forward.(page suivante).
Gras italique Terme du glossaire Cet algorithme insère la nouvelle clé.
(s'il y a un glossaire)
Crochets Noms de touche Appuyez sur [Entrée].
Majuscules et Déclencheurs Attribuez un déclencheur When-Validate-Item au
minuscules bloc ORD.
Crochets droits Chemins de menu Sélectionnez Fichier > Sauvegarder.
Virgules Séquences de touches Appuyez sur les touches suivantes l'une après
l'autre : [Alt], [F], [D]
Courier new, Résultat de code, noms Résultat de code : debug.set ('I', 300);
respect de répertoire, Répertoire : bin (DOS), $FMHOME (UNIX)
majuscules/ noms de fichier,
minuscules mots de passe, Nom de fichier : Localisez le fichier init.ora.
(minuscules noms de chemin, Mot de passe : Utilisez tiger comme mot de
par défaut) URL, entrée utilisateur, passe.
noms d'utilisateur
Nom de chemin : Ouvrez
c:\my_docs\projects
Entrée utilisateur : Saisissez 300.
Nom d'utilisateur : Connectez-vous en tant que HR.
Initiale en Boutons, cases à cocher, Cliquez sur le bouton Exécutable
majuscule fenêtres, libellés de Sélectionnez la case à cocher Impossible
pour le premier graphique (sauf s'il s'agit de supprimer la fiche
terme d'une de noms propres)
expression Ouvrez la fenêtre Programme directeur
Adresse client (mais Oracle Payables)
Italiques Locutions et mots mis en N'enregistrez pas les modifications dans la base
évidence, titres de de données.
manuel et de cours, Pour en savoir plus, voir Oracle7 Server SQL
variables Language Reference Manual.
Entrez user_id@us.oracle.com,
où user_id correspond au nom de l'utilisateur
Préface-5
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Conventions typographiques (suite)
Conventions typographiques concernant le texte (suite)
Convention Elément Exemple
Guillemets Eléments d'interface Sélectionnez "Inclure un composant modulaire
dont les noms longs réutilisable", puis cliquez sur Terminer.
ne comportent des
majuscules Ce sujet est traité dans la section II, chapitre 3, "Gérer
qu'au début ; les objets"
titres de cours et
de chapitre cités
en référence
Majuscules Noms de colonne Utilisez la commande SELECT pour visualiser les
SQL, commandes, informations stockées dans la colonne LAST_NAME de
fonctions, schémas, la table EMP.
noms de table
Préface-6
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Conventions typographiques (suite)
Conventions typographiques concernant les chemins de navigation
Ce cours utilise des chemins de navigation simplifiés, comme dans l'exemple suivant, pour vous
orienter dans Oracle Applications.
Exemple :
Préface-7
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Préface-8
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Introduction
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Objectifs du cours
Objectifs du cours
Dans ce cours, vous allez installer le logiciel Oracle Database 10g Enterprise Edition, créer
une base de données et apprendre à l'administrer.
Vous allez également configurer la base de données afin de prendre en charge une
application, et effectuer des opérations telles que la création d'utilisateurs, la définition de
structures de stockage et la configuration de la sécurité. Ce cours utilise une application
fictive. Vous effectuerez cependant toutes les tâches fondamentales nécessaires à une
application réelle.
L'administration d'une base de données ne se limite pas à sa seule configuration. Vous
apprendrez également à protéger votre base de données grâce à l'élaboration d'une stratégie de
sauvegarde et de récupération, et à la surveiller afin de vous assurer de son bon
fonctionnement.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-2
Planification recommandée
1. Introduction 13. Performances
2. Installation 14. Concepts de sauvegarde
3. Création de base de données et de récupération
4. Instance 15. Sauvegarde
9. Annulation
10. Sécurité
11. Réseau
12. Maintenance proactive
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-3
Objectifs du chapitre
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-4
Produits et services Oracle
Produits Oracle
• Bases de données Oracle : La base de données Oracle est la première base de données
conçue pour le grid computing (calcul distribué) d'entreprise, à savoir le moyen le plus
flexible et le moins coûteux de gérer les informations et les applications.
• Oracle Application Server : Le serveur Oracle certifié J2EE (Java 2 Platform, Enterprise
Edition) intègre tous les éléments nécessaires au développement et au déploiement des
applications basées sur le Web. Le serveur d'applications déploie les portails e-business, les
services Web et les applications transactionnelles, telles que les applications PL/SQL,
Oracle Forms et J2EE.
• Oracle Applications : Oracle E-Business Suite est un ensemble complet d'applications
métier pour la gestion et l'automatisation des processus au sein d'une organisation.
• Oracle Collaboration Suite : Oracle Collaboration Suite est un système intégré unique
pour toutes les données de communication d'une organisation (voix, email, fax, sans fil,
informations calendaires et fichiers).
• Oracle Developer Suite : Oracle Developer Suite est un environnement complet et intégré
qui associe des outils de développement d'applications et des outils décisionnels.
• Services Oracle : Les services tels qu'Oracle Consulting et Oracle University vous
fournissent l'expertise dont vous avez besoin pour vos projets Oracle. Pour obtenir un
ensemble de liens qui pointent vers différentes ressources utiles, reportez-vous à l'annexe
"Etapes suivantes : Poursuivre la formation".
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-5
Oracle Database 10g :
"g" signifie "grid"
• Global Grid Forum (GGF)
• Infrastructure de grid d'Oracle :
– Coût faible
– Qualité de service élevée
– Facilité de gestion
Grid de Grid de base Grid Grid
stockage de données d'application Control
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-6
Oracle Database 10g : "g" signifie "grid" (suite)
Automatic Storage Management (ASM) propage les données de base de données sur
tous les disques, crée et gère un grid de stockage, et fournit un débit d'E/S optimal pour un
coût de gestion minimal. Lors de l'ajout ou de la suppression de disques, ASM redistribue
automatiquement les données. (Il est inutile d'utiliser un gestionnaire de volumes logiques
pour gérer le système de fichiers.) La disponibilité des données augmente avec la fonction
de mise en miroir facultative, et vous pouvez ajouter ou supprimer des disques en ligne.
Pour plus d'informations, reportez-vous au chapitre intitulé "Gérer les structures de
stockage de la base de données".
L'application Real Application Clusters (RAC) d'Oracle exécute et répartit toutes les
charges globales d'application sur un cluster de serveurs. Elle offre également les
fonctionnalités suivantes :
• Clusterware intégré : Il inclut notamment les fonctions de connectivité des clusters,
d'envoi de messages et de verrouillage, de contrôle des clusters et de récupération.
Cette fonctionnalité est disponible sur toutes les plates-formes prises en charge par
Oracle Database 10g.
• Gestion automatique de la charge globale : Vous pouvez définir des règles afin
d'allouer automatiquement des ressources de traitement à chaque service, à la fois au
cours des opérations standard et en réponse à des échecs. Ces règles peuvent être
modifiées de manière dynamique afin de répondre aux besoins professionnels en
constante évolution. Cette fonction d'allocation de ressources dynamique au sein
d'un grid de base de données est propre à Oracle RAC.
• Notification automatique des événements auprès du niveau intermédiaire
(middle tier) : Lors de la modification de la configuration des clusters, le niveau
intermédiaire (middle tier) peut opérer sur le champ un changement d'instance suite
à une panne ou la mise à disposition d'une nouvelle instance. Ainsi, lorsqu'un
incident survient dans une instance, les utilisateurs finals peuvent poursuivre leurs
tâches, sans avoir à subir les délais d'attente réseau habituels. Lorsqu'une nouvelle
instance est disponible, le niveau intermédiaire (middle tier) peut lancer
immédiatement l'équilibrage de charge des connexions sur cette instance. Les pilotes
JDBC (Java Database Connectivity) Oracle Database 10g sont dotés de la fonction
FCF (Fast Connection Failover) qui peut être activée automatiquement afin de gérer
ce type d'événement.
Oracle Streams fournit une structure unifiée de partage d'informations. Il réunit au sein
d'une même technologie les fonctions de file d'attente de messages, de réplication des
données, de notification des événements, de chargement des data warehouses, ainsi que
les opérations de publication et d'abonnement. Oracle Streams peut assurer la
synchronisation d'au moins deux copies de données source lorsque des mises à jour sont
effectuées sur l'un ou l'autre des sites. Il peut capturer automatiquement les modifications
apportées aux bases de données, les propager vers les noeuds abonnés, les appliquer, et
détecter et résoudre les conflits de mise à jour des données. Oracle Streams peut être
utilisé directement par les applications en tant que fonction de workflow ou de mise en file
d'attente des messages. Il permet ainsi la communication entre les différentes applications
du grid.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-7
Oracle Database 10g : "g" signifie "grid" (suite)
Enterprise Manager Grid Control gère les opérations réalisées au niveau du grid. Il
assure notamment la gestion de l'ensemble du logiciel, l'approvisionnement d'utilisateurs,
le clonage des bases de données et la gestion des patches. Grâce à lui, vous pouvez
surveiller les performances de toutes les applications en vous plaçant du point de vue de
l'utilisateur final. Grid Control affiche les performances et la disponibilité de
l'infrastructure de grid. Pour cela, il considère l'infrastructure comme une entité et non
comme un ensemble d'unités de stockage, de bases de données et de serveurs
d'applications distincts. Vous pouvez regrouper les serveurs d'applications, les bases de
données et les noeuds matériels dans des entités logiques uniques et gérer un groupe de
cibles comme s'il s'agissait d'une seule et même unité.
Remarque : Dans ce cours, nous utilisons Enterprise Manager Database Console pour
gérer une base de données à la fois.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-8
Architecture de base de données Oracle
Un serveur Oracle :
• est un système de gestion de base de données
qui fournit une approche intégrée, complète
et ouverte de la gestion des informations
• se compose d'une instance Oracle et d'une base
de données Oracle
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-9
Structures de
Structures de base de données base de données
- Mémoire
- Processus
- Stockage
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-10
Structures mémoire Oracle . Structures de base
de données
> Mémoire
Processus
Stockage
Processus Processus
Mémoire Mémoire Processus en Mémoire
serveur serveur
PGA PGA arrière-plan PGA
1 2
Mémoire SGA
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-11
Structures mémoire Oracle (suite)
• Zone de mémoire Java : utilisée pour l'ensemble du code Java et des données
propres à la session, dans la JVM (Java Virtual Machine).
• Zone de mémoire Streams : utilisée par Oracle Streams.
Lorsque vous démarrez l'instance via Enterprise Manager ou SQL*Plus, la quantité de
mémoire allouée pour la mémoire SGA s'affiche.
Une mémoire PGA (Program Global Area) est une zone de mémoire contenant des
données et des informations de contrôle pour chaque processus serveur. Un processus
serveur Oracle traite les demandes d'un client. Chaque processus serveur dispose de sa
propre mémoire PGA privée, qui est créée lors du démarrage du processus serveur.
L'accès à la mémoire PGA est exclusivement réservé à ce processus serveur, qui peut lire
le contenu de la mémoire et écrire dans celle-ci par l'intermédiaire du code Oracle.
Avec l'infrastructure dynamique de la mémoire SGA, la taille du cache de tampons de la
base de données, de la zone de mémoire partagée, de la zone de mémoire LARGE POOL,
de la zone de mémoire Java et de la zone de mémoire Streams peut être modifiée sans
arrêter l'instance.
La base de données Oracle utilise les paramètres d'initialisation pour créer et configurer
les structures mémoire. Le paramètre SGA_TARGET, par exemple, indique la quantité
totale d'espace disponible pour la mémoire SGA. Si vous attribuez à ce paramètre la
valeur 0, la fonction de gestion automatique de la mémoire partagée (Automatic Shared
Memory Management) est désactivée.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-12
Structures de processus Structures de
base de données
Mémoire
> Processus
Stockage
Mémoire Instance
PGA Mémoire SGA
Processus
utilisateur Processus
serveur
Processus
en arrière-plan
Structures de processus
Lorsque vous appelez une application ou un outil Oracle tel qu'Enterprise Manager, le serveur
Oracle crée un processus serveur afin d'exécuter les commandes émises par l'application. Le
serveur Oracle crée également pour une instance un ensemble de processus en arrière-plan qui
interagissent les uns avec les autres d'une part, et avec le système d'exploitation d'autre part,
pour gérer les structures mémoire, effectuer des opérations d'E/S asynchrones afin d'écrire des
données sur le disque, ainsi que pour réaliser d'autres tâches nécessaires. Les processus en
arrière-plan qui sont disponibles dépendent des fonctionnalités utilisées dans la base de
données.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-13
Gestion des instances Oracle
Mémoire SGA
Cache de
Zone de mémoire Tampon de
tampons de la
Java journalisation
base de données
Processus
Processus Processus Processus Fichiers de
Log Writer
SMON PMON DBWn journalisation
(LGWR) archivés
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-14
Processus serveur et cache de
tampons de base de données
Fichiers de données
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-16
Structure de base de données physique (suite)
• Fichiers de journalisation archivés : contiennent un historique des modifications
des données (informations de journalisation) générées par l'instance. A l'aide de ces
fichiers et d'une sauvegarde de la base de données, vous pouvez récupérer un fichier
de données perdu. Autrement dit, les fichiers de journalisation archivés permettent la
récupération des fichiers de données restaurés.
• Fichiers trace : Chaque processus serveur et processus en arrière-plan peut écrire
dans un fichier trace associé. Lorsqu'un processus détecte une erreur interne, il
réalise dans son fichier trace un dump des informations relatives à cette erreur.
Certaines informations écrites dans un fichier trace sont destinées à l'administrateur
de base de données, et d'autres au support technique Oracle.
• Fichiers d'alertes : Il s'agit de fichiers trace spéciaux, dans lesquels sont consignées
les alertes. Le fichier d'alertes d'une base de données est un journal chronologique
des messages et des erreurs. Oracle recommande de consulter ces fichiers.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-17
Tablespaces et fichiers de données
Fichier de Fichier de
données 1 données 2
Tablespace USERS
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-18
Tablespaces SYSTEM et SYSAUX
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-19
Segments, extents et blocs
Base de données
Fichier de
Schéma Tablespace
données
Segment
Extent
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-21
Structures de base de données logiques et physiques (suite)
Schémas
Un schéma est un ensemble d'objets de base de données appartenant à un utilisateur de la base. Les
objets de schéma correspondent aux structures logiques qui font directement référence aux données
de la base. Ils incluent des structures telles que des tables, des vues, des séquences, des procédures
stockées, des synonymes, des index, des clusters et des liens de base de données. En règle générale,
les objets de schéma comprennent tous les éléments que votre application crée dans la base de
données.
Blocs de données
Au niveau de détail le plus élevé, les données d'une base Oracle sont stockées dans les blocs de
données. Un bloc de données correspond à un nombre d'octets précis d'espace de base de données
physique sur le disque. La taille des blocs de données est définie lors de la création de chaque
tablespace. Une base de données utilise et alloue de l'espace de base de données disponible dans les
blocs de données Oracle.
Extents
Le terme extent (ensemble de blocs contigus) désigne le niveau suivant d'espace de base de données
logique. Un extent consiste en un nombre précis de blocs de données contigus (obtenus dans une
allocation unique) qui permettent de stocker un type d'information particulier.
Segments
On appelle segment le niveau de stockage de base de données logique venant immédiatement au-
dessus d'un extent. Un segment est constitué d'un ensemble d'extents alloués à une structure logique
donnée. On rencontre notamment les types de segment suivants :
• Segments de données : Chaque table non clusterisée et non organisée en index comporte un
segment de données. L'ensemble des données de la table sont stockées dans les extents du
segment de données correspondant. Dans le cas d'une table partitionnée, chaque partition est
dotée d'un segment de données. Chaque cluster dispose, quant à lui, d'un segment de données.
Les données de toutes les tables incluses dans le cluster sont stockées dans le segment de
données du cluster.
• Segments d'index : Chaque index comporte un segment d'index dans lequel sont stockées
toutes ses données. Dans le cas d'un index partitionné, chaque partition est dotée d'un segment
d'index.
• Segments d'annulation : L'administrateur de base de données crée un tablespace d'annulation
(UNDO) afin de stocker de manière temporaire les informations d'annulation. Les informations
contenues dans un segment d'annulation permettent de générer des informations de base de
données cohérentes en lecture et, lors d'une récupération de base de données, d'annuler
(rollback) des transactions non validées pour les utilisateurs.
• Segments temporaires : Les segments temporaires sont créés par la base de données Oracle
lorsque l'exécution d'une instruction SQL requiert une zone de travail temporaire. Une fois
l'instruction exécutée, les extents du segment temporaire sont renvoyés à l'instance en vue
d'une utilisation ultérieure. Indiquez un tablespace temporaire par défaut pour chaque
utilisateur ou un qui sera appliqué au niveau de la base de données.
La base de données Oracle alloue de l'espace de manière dynamique. Lorsque les extents existants
d'un segment sont pleins, d'autres sont ajoutés. Les extents sont alloués en fonction des besoins. Par
conséquent, les extents d'un segment peuvent ne pas être contigus sur le disque.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-22
Exemples du cours : Le schéma HR
REGIONS
REGION_ID (PK)
REGION_NAME
JOBS
COUNTRIES JOB_ID (PK)
COUNTRY_ID (PK) JOB_TITLE
COUNTRY_NAME MIN_SALARY
JOB_HISTORY
REGION_ID (FK) MAX_SALARY EMPLOYEE_ID (PK)
START_DATE (PK)
END_DATE
JOB_ID (FK)
LOCATIONS EMPLOYEES DEPARTMENT_ID (FK)
LOCATION_ID (PK) EMPLOYEE_ID (PK)
STREET_ADDRESS FIRST_NAME
POSTAL_CODE LAST_NAME
CITY EMAIL
STATE_PROVINCE PHONE_NUMBER
COUNTRY_ID (FK) HIRE_DATE
JOB_ID (FK)
SALARY
COMMISION_PCT
DEPARTMENTS MANAGER_ID (FK)
DEPARTMENT_ID (PK) DEPARTMENT_ID (FK)
DEPARTMENT_NAME
MANAGER_ID
LOCATION_ID (FK)
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-24
Synthèse
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 1-25
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Installer le logiciel de
base de données Oracle
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Objectifs
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 2-2
Tâches d'un administrateur de base
de données Oracle
L'approche générale adoptée pour la conception,
l'implémentation et la maintenance d'une base de données
Oracle comprend différentes tâches :
1. Evaluer le matériel du serveur de base de données
2. Installer le logiciel Oracle
3. Elaborer une stratégie de base de données et de sécurité
4. Créer, migrer et ouvrir la base de données
5. Sauvegarder la base de données
6. Inscrire les utilisateurs système et définir
leur accès Oracle Network
7. Implémenter la conception de la base
de données
8. Récupérer la base de données suite
à une panne
9. Surveiller les performances de la base de données
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 2-3
Outils utilisés pour administrer
une base de données Oracle
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 2-4
Outils utilisés pour administrer une base de données Oracle (suite)
Les outils suivants vous permettent de gérer l'instance et la base de données Oracle :
• Oracle Enterprise Manager (EM) : Enterprise Manager associe une console graphique,
des agents, des services communs et des outils, et fournit ainsi une plate-forme de gestion
système complète et intégrée pour la gestion des produits Oracle. Une fois le logiciel
Oracle installé, la base de données créée ou mise à niveau, et le réseau configuré, vous
pouvez utiliser Enterprise Manager comme interface unique pour la gestion de votre base
de données. En plus de son interface utilisateur Web qui permet d'exécuter les
commandes SQL, Enterprise Manager fournit une interface transparente avec les autres
composants Oracle entrant en jeu dans l'administration de votre base de données
(Recovery Manager et Scheduler, par exemple).
Enterprise Manager offre trois principaux outils pour l'administration des bases de
données Oracle :
- Enterprise Manager Database Console : permet d'administrer une base de données
- Enterprise Manager Grid Control : permet d'administrer simultanément plusieurs
bases de données
- Java Enterprise Manager Console : permet d'accéder aux outils qui ne sont pas
compatibles avec la technologie Web
• SQL*Plus : SQL*Plus est l'interface de ligne de commande standard qui permet de gérer
votre base de données.
• iSQL*Plus : iSQL*Plus est une interface Web avec une base de données Oracle.
• Recovery Manager (RMAN) : RMAN est un outil Oracle qui fournit une solution
complète pour les opérations de sauvegarde, de restauration et de récupération appliquées
à l'ensemble de la base de données ou à des fichiers de bases de données particuliers.
• Oracle Secure Backup fournit une fonction de gestion de sauvegarde sur bande pour le
système Oracle, notamment :
- une protection de la base de données Oracle sur bande grâce à l'intégration avec
Recovery Manager,
- une prise en charge transparente d'Oracle Real Application Clusters (RAC),
- une administration centrale des serveurs de média et des clients distribués, y
compris : Oracle Application Servers, Oracle Collaboration Suites, répertoires
d'origine Oracle Home et fichiers binaires.
• Data Pump : Data Pump permet le transfert à haut débit des données d'une base de
données vers une autre. Vous pouvez, par exemple, exporter une table et l'importer dans
une autre base de données.
• SQL*Loader : L'utilitaire SQL*Loader permet de charger des données dans une base
Oracle à partir d'un fichier externe. Il s'agit de l'un des utilitaires Oracle dont vous pouvez
vous servir pour charger des données dans les tables de la base.
• Outil en mode ligne de commande :
- Pour administrer Enterprise Manager, utilisez :
emctl start | status | set | stop
- Pour arrêter et démarrer iSQL*Plus, utilisez :
isqlplusctl start | stop
- Pour administrer le processus d'écoute (listener), utilisez :
lsnrctl help | start | status | stop
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 2-5
Installation : Configuration système requise
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 2-6
Vérifier la configuration système requise
• Espace temporaire
approprié
• 64 bits ou 32 bits
• Vérifications relatives au système d'exploitation
• Niveau de patch du système d'exploitation
• Packages système
• Paramètres système et paramètres du noyau
• Permissions liées à XServer
• Swap suffisant
• Répertoire d'origine ORACLE_HOME non vide
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 2-8
Utiliser l'architecture OFA
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 2-10
Définir les variables d'environnement
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 2-11
Définir les variables d'environnement (suite)
• NLS_LANG : indique les paramètres NLS (National Language Support) d'une
session, sous la forme language_territory.character set. Prenons, par
exemple, la valeur suivante :
AMERICAN_DENMARK.WE8MSWIN1252
Elle configure la session de manière à utiliser la langue AMERICAN pour les
messages Oracle, la séquence de tri alphabétique, ainsi que le nom des jours et des
mois. Le territoire étant DENMARK, le format de date et d'heure, ainsi que les
conventions numériques et monétaires, sont définis en conséquence. Le jeu de
caractères WE8MSWIN1252 indique à Oracle Net de convertir les informations
textuelles dans ce jeu de caractères. Il s'agit d'une variable d'environnement sous
UNIX et d'une clé de registre sous Windows. Vous pouvez interroger la valeur des
paramètres NLS de la session en cours via l'instruction suivante :
select * from nls_session_parameters;
Pour plus d'informations sur les langues, territoires et jeux de caractères valides,
ainsi que sur la prise en charge des langues, reportez-vous au manuel Globalization
Support Guide.
Remarque : Une installation sous Windows définit des valeurs NLS_LANG par
défaut dans le registre (la partie language provient de la langue configurée pour le
clavier). Autrement dit, l'installation par défaut sous Windows avec un clavier non
américain entraîne l'affectation de la valeur correspondante au paramètre
NLS_LANG. La variable de session NLS_SORT prend à son tour une valeur par
défaut différente de "binary", ce qui rend difficile pour l'optimiseur d'utiliser des
index basés sur les caractères pour les sessions démarrées à partir de ce noeud.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 2-12
Oracle Universal Installer (OUI)
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 2-14
Options de configuration
de la base de données
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 2-15
Exécuter des scripts de configuration
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 2-16
Terminer l'installation
Terminer l'installation
10. Lorsque le processus d'installation touche à sa fin, relevez les différentes URL en vue
d'une utilisation ultérieure.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 2-17
Options d'installation avancées
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 2-20
Présentation de l'exercice :
Installer le logiciel Oracle
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 2-21
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Créer une base de données Oracle
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Objectifs
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-2
Planification de la base de données
En tant qu'administrateur de base de données,
vous devez planifier les éléments suivants :
• La structure de stockage logique de la base
et son implémentation physique :
– De combien de disques disposez-vous pour cela ?
– De combien de fichiers de données aurez-vous
besoin ? (prévoir l'expansion de la base de données)
– Combien de tablespaces utiliserez-vous ?
– Quel type d'information sera stocké ?
– Etes-vous confronté à des exigences de stockage
particulières en termes de type ou de taille ?
• La conception globale de la base de données
• Une stratégie de sauvegarde de la base
de données
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-3
Bases de données : Exemples
• Data warehouse :
– Recherche et marketing
– Impôts et taxes
– Listes de professionnels agréés
(médecins, infirmières, etc.)
• Traitement des transactions
(Transaction Processing) :
– Système de caisse enregistreuse
– Transactions des guichets automatiques
• Bases de données généralistes (General Purpose) :
– Système de facturation, par exemple, d'une société
de services et d'ingénierie informatique ou d'une crèche
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-4
Assistant Database Configuration
Assistant (DBCA)
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-5
Utiliser l'assistant DBCA pour
créer une base de données
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-6
Utiliser l'assistant DBCA pour
créer une base de données
3
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-7
Utiliser l'assistant DBCA pour
créer une base de données
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-8
Utiliser l'assistant DBCA pour
créer une base de données
8
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-9
Utiliser l'assistant DBCA pour
créer une base de données
10
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-10
Utiliser l'assistant DBCA pour
créer une base de données
11
12
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-11
Gérer les mots de passe
A
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-12
Créer un modèle de conception
de base de données
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-13
Utiliser l'assistant DBCA pour supprimer
une base de données
1
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-14
Utiliser l'assistant DBCA pour supprimer une base de données (suite)
Lorsque vous supprimez une base de données, vous supprimez également ses fichiers de
données, ses fichiers de journalisation (fichiers redo log), ses fichiers de contrôle et ses
fichiers de paramètres d'initialisation. En effet, l'instruction DROP DATABASE supprime
tous les fichiers de contrôle, ainsi que tous les autres fichiers de base de données
répertoriés dans les fichiers de contrôle. Pour que l'instruction DROP DATABASE
s'exécute avec succès, l'ensemble des conditions suivantes doivent être satisfaites :
• La base de données doit être montée et fermée.
• La base de données doit être montée en mode exclusif et non en mode partagé.
• La base de données doit être montée en mode RESTRICTED.
Voici un exemple d'instruction :
DROP DATABASE;
L'instruction DROP DATABASE n'a aucune incidence sur les fichiers de journalisation
archivés, ni sur les copies ou les sauvegardes de la base de données. Il est préférable
d'utiliser Recovery Manager (RMAN) pour supprimer ce type de fichier. Si la base de
données se trouve sur des disks raws, les fichiers spéciaux des disks raw réels ne sont pas
supprimés.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-15
Synthèse
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-16
Présentation de l'exercice :
Utiliser l'assistant DBCA
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 3-17
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Gérer l'instance Oracle
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Objectifs
A la fin de ce chapitre, vous pourrez :
• démarrer et arrêter la base de données et
les composants Oracle
• utiliser Enterprise Manager (EM)
• accéder à une base de données à l'aide de SQL*Plus
et d'iSQL*Plus
• modifier les paramètres d'initialisation de base
de données
• décrire les étapes du démarrage d'une base
de données
• décrire les options d'arrêt d'une base de données
• afficher le fichier d'alertes
• accéder aux vues dynamiques des performances
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-2
Structure de gestion > Composants
SQL*Plus
Param. d'init.
Démarrage BdD
Arrêt BdD
Les trois composants de la structure de gestion Fichier d'alertes
d'Oracle Database 10g sont les suivants : Vues de perf.
Agent de -ou-
gestion
Database Processus
Control d'écoute
Interface de gestion
Structure de gestion
Les trois principaux composants de la structure de gestion de base de données Oracle sont les
suivants :
• l'instance de base de données gérée,
• un processus d'écoute (listener) permettant les connexions à la base de données,
• l'interface de gestion. Il peut s'agir soit d'un agent de gestion qui s'exécute sur le serveur
de base de données (et le connecte à Oracle Enterprise Manager Grid Control), soit de
l'interface Oracle Enterprise Manager Database Control autonome. Cette interface est
également appelée "Database Console".
Chacun de ces composants doit être démarré explicitement si vous souhaitez pouvoir utiliser
les services du composant. Ils doivent être fermés correctement lors de l'arrêt du serveur qui
héberge Oracle Database 10g.
Le premier composant à démarrer est l'interface de gestion. Dès lors qu'elle est activée,
l'interface de gestion peut être utilisée pour démarrer les autres composants.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-3
Démarrer et arrêter Database Control
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-4
Oracle Enterprise Manager
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-5
Accéder à Oracle Enterprise Manager
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-6
Page d'accueil de la base de données
Pages de propriétés
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-7
Utiliser SQL*Plus et iSQL*Plus Composants
> SQL*Plus
pour accéder à la base de données Param. d'init.
Démarrage BdD
Arrêt BdD
Fichier d'alertes
Grâce aux interfaces supplémentaires Vues de perf.
que SQL*Plus et iSQL*Plus fournissent
à votre base de données, vous pouvez :
• effectuer des opérations de gestion de base
de données
• exécuter des commandes SQL pour interroger
la base de données, ou insérer, mettre à jour
et supprimer des données dans la base
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-8
Utiliser iSQL*Plus
Utiliser iSQL*Plus
iSQL*Plus est une interface Web vers une base de données Oracle. Il s'agit d'un composant de
SQL*Plus. Il possède un processus d'écoute (listener) côté serveur qui doit être démarré avant
toute connexion via un navigateur. Pour démarrer ce processus serveur, utilisez :
isqlplusctl start
Une fois le processus serveur démarré, connectez-vous à lui en entrant l'URL suivante dans un
navigateur :
http://host name:port/isqlplus
Le numéro de port utilisé par iSQL*Plus est généralement 5560, sauf si Oracle Universal
Installer (OUI) détecte que ce port est déjà utilisé. Consultez le fichier
$ORACLE_HOME/install/portlist.ini afin de déterminer le port utilisé par
iSQL*Plus.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-9
Configurer iSQL*Plus
pour des accès SYSDBA et SYSOPER
Pour qu'un utilisateur puisse se connecter à iSQL*Plus
en tant que SYSDBA ou SYSOPER, vous devez le définir
dans le gestionnaire d'utilisateurs OC4J. Pour ce faire,
procédez comme suit :
1. Créez un utilisateur.
2. Affectez-lui le rôle webDba.
$ cd $ORACLE_HOME/oc4j/j2ee/isqlplus/\
> application-deployments/isqlplus
$JAVA_HOME/bin/java \
> -Djava.security.properties=\
> $ORACLE_HOME/oc4j/j2ee/home/config/jazn.security.props \
> -jar $ORACLE_HOME/oc4j/j2ee/home/jazn.jar \
> -user "iSQL*Plus DBA/admin" -password welcome -shell
JAZN> adduser "iSQL*Plus DBA" username password
JAZN> grantrole webDba "iSQL*Plus DBA" username
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-10
Configurer iSQL*Plus pour des accès SYSDBA et SYSOPER (suite)
3. Créez un utilisateur en indiquant un nom utilisateur et un mot de passe :
JAZN> adduser "iSQL*Plus DBA" username password
4. Affectez le rôle webDba à l'utilisateur :
JAZN> grantrole webDba "iSQL*Plus DBA" username
5. Quittez le shell JAZN :
JAZN> exit
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-11
Utiliser SQL*Plus
SQL*Plus est :
• un outil en mode ligne de commande
• utilisé en mode interactif ou en mode batch
$ sqlplus hr/hr
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
LAST_NAME
-------------------------
Abel
Ande
Atkinson
Utiliser SQL*Plus
Vous pouvez utiliser l'interface de ligne de commande vers SQL*Plus afin d'écrire des
commandes SQL*Plus, SQL et PL/SQL pour réaliser diverses opérations :
• Entrer, modifier, exécuter, stocker, extraire et enregistrer des commandes SQL et des
blocs PL/SQL
• Mettre en forme, calculer, stocker et afficher les résultats des interrogations
• Répertorier les définitions des colonnes d'une table
• Envoyer des messages à un utilisateur final et accepter les réponses de cet utilisateur
• Procéder à l'administration de la base de données
Pour démarrer SQL*Plus, procédez comme suit :
1. Ouvrez une fenêtre de terminal.
2. A l'invite de commande, entrez la commande SQL*Plus suivante :
$ sqlplus /nolog
3. Entrez connect, suivi de l'utilisateur sous le nom duquel vous souhaitez vous
connecter.
4. Lorsque vous y êtes invité, entrez le mot de passe de l'utilisateur.
SQL*Plus démarre et établit une connexion à la base de données par défaut.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-12
Appeler SQL*Plus à partir d'un script shell
$ ./batch_sqlplus.sh
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-13
Appeler un script SQL à partir de SQL*Plus
Sortie
$ sqlplus hr/hr @script.sql
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-14
Fichiers de paramètres d'initialisation Composants
SQL*Plus
> Param. d'init.
Démarrage BdD
Arrêt BdD
Fichier d'alertes
Vues de perf.
spfileorcl.ora
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-15
Paramètres d'initialisation simplifiés
CONTROL_FILES DB_CACHE_SIZE
DB_BLOCK_SIZE DB_FILE_MULTIBLOCK
PROCESSES _READ_COUNT
UNDO_MANAGEMENT SHARED_POOL_SIZE
… …
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-16
Paramètres d'initialisation simplifiés (suite)
Paramètres d'initialisation : Exemples (suite)
Le paramètre DB_BLOCK_SIZE détermine la taille (en octets) d'un bloc de base de données
Oracle. Cette valeur est définie lors de la création de la base de données et ne peut pas être
modifiée ultérieurement. Plage de valeurs : 1024 – 65536 (en fonction du système
d'exploitation). Valeur par défaut : 8 ko (selon le système d'exploitation).
Le paramètre DB_CACHE_SIZE définit la taille du cache de tampons de bloc standard. Plage
de valeurs : au moins 16 Mo. Valeur par défaut : 48 Mo.
Le paramètre DB_FILE_MULTIBLOCK_READ_COUNT concerne le nombre maximal de blocs
lus au cours d'une opération d'entrée/sortie (E/S) impliquant une analyse séquentielle complète.
Plage de valeurs : dépend du système d'exploitation. Valeur par défaut : 8.
Le paramètre DB_FILES définit le nombre maximal de fichiers de base de données qui peuvent
être ouverts pour cette base de données. Plage de valeurs : MAXDATAFILES (varie en fonction
du système d'exploitation). Valeur par défaut : varie en fonction du système d'exploitation (200
sous Solaris).
Le paramètre PGA_AGGREGATE_TARGET indique la quantité de mémoire PGA (Program
Global Area) allouée à tous les processus serveur liés à l'instance. Attribuez une valeur positive
à ce paramètre avant d'activer la définition automatique des zones de travail. Cette mémoire ne
réside pas dans la mémoire SGA (System Global Area). La base de données utilise ce paramètre
pour définir la quantité cible de mémoire PGA à utiliser. Lors de la définition du paramètre,
soustrayez la mémoire SGA de la quantité de mémoire totale du système disponible pour
l'instance Oracle. Vous pouvez affecter la quantité de mémoire restante à
PGA_AGGREGATE_MEMORY. Plage de valeurs : nombres entiers plus la lettre K, M ou G pour
indiquer cette limite en kilo-octets, mégaoctets ou gigaoctets. La valeur minimale est 10M et la
valeur maximale, 400G. Valeur par défaut : "Not Specified", ce qui signifie que le réglage
(tuning) automatique des zones de travail est entièrement désactivé.
Le paramètre PROCESSES définit le nombre maximal de processus utilisateur du système
d'exploitation qui peuvent se connecter simultanément à un serveur Oracle. Cette valeur doit
être suffisante pour tous les processus en arrière-plan. Plage de valeurs : entre 6 et une valeur
variant en fonction du système d'exploitation. Valeur par défaut : dépend du paramètre
PARALLEL_MAX_SERVERS.
Le paramètre SHARED_POOL_SIZE définit la taille, en octets, de la zone de mémoire
partagée. La zone de mémoire partagée contient des objets tels que les curseurs partagés, les
procédures stockées, les structures de contrôle et les mémoires tampon des messages d'exécution
parallèle. Des valeurs plus élevées peuvent améliorer les performances des systèmes
multiutilisateurs. Plage de valeurs : 300 ko (en fonction du système d'exploitation). Valeur par
défaut : avec un système 64 bits, 64 Mo, sinon 16 Mo.
Le paramètre UNDO_MANAGEMENT détermine le mode de gestion du volume d'annulation que
le système doit utiliser. Si ce paramètre se voit attribuer la valeur AUTO, l'instance est démarrée
en mode SMU (system managed undo). Sinon, elle est démarrée en mode RBU (rollback undo).
En mode RBU, le volume d'annulation est alloué de manière externe sous forme de segments
d'annulation (rollback segments). En mode SMU, le volume d'annulation est alloué de manière
externe sous forme de tablespaces d'annulation. Plage de valeurs : AUTO ou MANUAL. Valeur
par défaut : Si le paramètre UNDO_MANAGEMENT est ignoré lors du démarrage de la première
instance, la valeur par défaut MANUAL est utilisée et l'instance est démarrée en mode RBU. S'il
ne s'agit pas de la première instance, l'instance est démarrée dans le même mode d'annulation
que toutes les autres instances existantes.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-17
Afficher et modifier
les paramètres d'initialisation
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-18
Composants
Démarrer et arrêter SQL*Plus
Param. d'init.
la base de données > Démarrage BdD
Arrêt BdD
Fichier d'alertes
Vues de perf.
ou
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-19
Démarrer une instance de base
de données Oracle
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-20
Démarrer une instance de base
de données Oracle : NOMOUNT
OPEN
STARTUP
MOUNT
NOMOUNT
Instance
démarrée
SHUTDOWN
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-21
Démarrer une instance
de base de données Oracle :
MOUNT
OPEN
STARTUP
MOUNT
Fichier de
contrôle ouvert
NOMOUNT pour cette
instance
Instance
démarrée
SHUTDOWN
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-22
Démarrer une instance
de base de données Oracle :
OPEN
OPEN
STARTUP Tous les fichiers sont
ouverts, conformément à la
MOUNT description du fichier de
contrôle pour cette instance
Fichier de
contrôle ouvert
NOMOUNT pour cette
instance
Instance
démarrée
SHUTDOWN
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-23
Arrêter une instance Composants
SQL*Plus
de base de données Oracle Param. d'init.
Démarrage BdD
> Arrêt BdD
Fichier d'alertes
Vues de perf.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-24
Modes d'arrêt
Mode d'arrêt A I T N
Autorise les nouvelles connexions Non Non Non Non
Attend la fin des sessions en cours Non Non Non Oui
Attend la fin des transactions en cours Non Non Oui Oui
Force un point de reprise (checkpoint) Non Oui Oui Oui
et ferme les fichiers
Mode d'arrêt :
• A = ABORT
• I = IMMEDIATE
• T = TRANSACTIONAL
• N = NORMAL
Modes d'arrêt
Les modes d'arrêt ci-dessous sont indiqués dans leur ordre d'adaptation à l'activité en cours
(du moins adapté au plus adapté) :
• ABORT : effectue des tâches minimales avant l'arrêt. Ce mode requiert une opération de
récupération avant le démarrage, par conséquent, utilisez-le uniquement lorsque cela
s'avère nécessaire. Ce mode est généralement utilisé lorsqu'aucun autre mode d'arrêt ne
fonctionne, lorsque le démarrage de l'instance se révèle problématique, ou lorsque vous
avez besoin d'arrêter l'instance immédiatement en raison d'un événement imminent, tel
que l'annonce d'une coupure de courant dans les secondes qui suivent.
• IMMEDIATE : option utilisée le plus fréquemment. Les transactions non validées sont
annulées (rollback).
• TRANSACTIONAL : laisse le temps de terminer les transactions.
• NORMAL : attend la déconnexion des sessions.
Du point de vue du temps nécessaire pour effectuer l'arrêt, ABORT est le mode le plus rapide
et NORMAL, le plus lent.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-25
Options SHUTDOWN
Options SHUTDOWN
SHUTDOWN NORMAL
Le mode "normal" est le mode d'arrêt par défaut. Un arrêt "normal" de la base de données a
lieu dans les conditions suivantes :
• Aucune nouvelle connexion ne peut être établie.
• Le serveur Oracle attend que tous les utilisateurs se déconnectent avant de procéder
complètement à l'arrêt.
• Les tampons de la base de données et les tampons de journalisation (redo log buffers)
sont écrits sur le disque.
• Les processus en arrière-plan sont arrêtés et la mémoire SGA est libérée.
• Le serveur Oracle ferme et démonte la base de données avant d'arrêter l'instance.
• Le démarrage suivant ne nécessite pas de récupération d'instance.
SHUTDOWN TRANSACTIONAL
Un arrêt de type "transactional" évite aux clients de perdre des données, notamment le résultat
des activités en cours. Un arrêt "transactional" de la base de données a lieu dans les conditions
suivantes :
• Aucun client ne peut démarrer de nouvelle transaction sur cette instance particulière.
• Un client est déconnecté lorsqu'il termine la transaction en cours.
• Lorsque toutes les transactions sont terminées, l'arrêt a lieu immédiatement.
• Le démarrage suivant ne nécessite pas de récupération d'instance.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-26
Options SHUTDOWN (suite)
SHUTDOWN IMMEDIATE
Un arrêt en mode "immediate" de la base de données a lieu dans les conditions suivantes :
• Les instructions SQL en cours de traitement par la base de données Oracle ne sont pas
terminées.
• Le serveur Oracle n'attend pas que les utilisateurs actuellement connectés à la base de
données se déconnectent.
• Le serveur Oracle annule (rollback) les transactions actives et déconnecte tous les
utilisateurs connectés.
• Le serveur Oracle ferme et démonte la base de données avant d'arrêter l'instance.
• Le démarrage suivant ne nécessite pas de récupération d'instance.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-27
Options SHUTDOWN
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-28
Utiliser SQL*Plus pour les opérations
de démarrage et d'arrêt
Vous pouvez ainsi inclure des opérations de démarrage et d'arrêt dans un script ou dans un
processus en mode batch qui effectue des tâches sur la base de données, et pour lequel la base
de données doit se trouver dans un état particulier.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-29
Afficher le fichier d'alertes Composants
SQL*Plus
Param. d'init.
Démarrage BdD
Arrêt BdD
Page d'accueil de la base de données > > Fichiers d'alerte
Vues de perf.
Région Related Links > Alert Log Content
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-31
Vues dynamiques des performances Composants
SQL*Plus
Param. d'init.
Les vues dynamiques des Démarrage BdD
Arrêt BdD
performances permettent Fichiers d'alerte
d'accéder aux informations > Vues de perf.
Instance Oracle
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-32
Vues dynamiques des performances :
Exemples d'utilisation
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-33
Vues dynamiques des performances :
Considérations
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-34
Synthèse
Ce chapitre vous a permis d'apprendre à :
• démarrer et arrêter la base de données
et les composants Oracle
• utiliser Enterprise Manager et décrire
ses fonctionnalités de haut niveau
• accéder à une base de données à l'aide de SQL*Plus
et d'iSQL*Plus
• modifier les paramètres d'initialisation de base
de données
• décrire les étapes du démarrage d'une base
de données
• décrire les options d'arrêt d'une base de données
• afficher le fichier d'alertes
• accéder aux vues dynamiques des performances
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-35
Présentation de l'exercice :
Gérer l'instance Oracle
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 4-36
Gérer les structures de stockage
de la base de données
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Objectifs
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-2
Structures de stockage
Structure logique Structure physique
Base de données
Fichier du système
Tablespace
d'exploitation
Segment
Extent
Structures de stockage
Une base de données est divisée en unités de stockage logiques appelées tablespaces. Chaque
tablespace comporte plusieurs blocs de données Oracle logiques. Le paramètre
DB_BLOCK_SIZE définit la taille d'un bloc logique. La taille d'un bloc logique peut être
comprise entre 2 ko et 32 ko. La valeur par défaut est de 8 ko. Un nombre donné de blocs
logiques contigus constitue un extent. Un ensemble d'extents alloué à une certaine structure
logique forme à son tour un segment. Un bloc de données Oracle est la plus petite unité d'E/S
logique.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-3
Mode de stockage des données d'une table
Colonnes Blocs
Table A Table B
Lignes
Segment Segment
Table
Tablespace
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-4
Anatomie d'un bloc de base de données
En-tête du bloc
Croissance
Espace libre
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-5
Tablespaces et fichiers de données
D'un point de vue logique, les données sont stockées
par la base Oracle dans des tablespaces. D'un point
de vue physique, elles sont stockées dans des fichiers
de données.
• Les tablespaces :
– ne peuvent appartenir qu'à une seule base de données
– sont constitués d'un ou plusieurs fichiers de données
– sont divisés en unités de stockage logiques
• Les fichiers de données :
Base de données
– ne peuvent appartenir qu'à un seul
tablespace et à une seule base Tablespace
de données
– servent de référentiels pour
les données des objets de schéma Fichiers de données
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-6
Oracle Managed Files (OMF)
Permet de définir les opérations sur les fichiers
en termes d'objets de base de données plutôt
qu'en termes de noms de fichier.
Paramètre Description
Exemple :
SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST = '/u01/oradata';
SQL> CREATE TABLESPACE tbs_1;
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-7
Gestion de l'espace dans les tablespaces
• Tablespace géré localement :
– Les extents libres sont gérés dans le tablespace.
– Un bitmap est utilisé pour enregistrer les extents libres.
– Chaque bit correspond à un bloc ou à un groupe
de blocs.
– La valeur du bit indique si les extents sont libres
ou utilisés.
– Il est recommandé d'utiliser des tablespaces gérés
localement.
• Tablespace géré au moyen du dictionnaire :
– Les extents libres sont gérés par le dictionnaire
de données.
– Les tables appropriées sont mises à jour lorsque
des extents sont alloués ou libérés.
– Ces tablespaces ne restent pris en charge que pour
des raisons de compatibilité descendante.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-8
Explorer la structure de stockage
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-9
Créer un tablespace
Créer un tablespace
Pour créer un tablespace, procédez de la manière suivante :
1. Cliquez sur l'onglet Administration, puis sur Tablespaces sous l'en-tête Storage.
2. Cliquez sur Create.
Remarque : Si vous souhaitez créer un tablespace semblable à un tablespace existant,
sélectionnez le tablespace existant de votre choix, puis cliquez sur Create Like dans le
menu Actions. Cliquez sur Go.
La page Create Tablespace apparaît.
3. Saisissez le nom du tablespace.
4. Sous l'en-tête Extent Management, sélectionnez Locally Managed. Les extents
(ensembles de blocs contigus) d'un tablespace administré localement sont gérés plus
efficacement par le serveur de base de données Oracle. Dans le cas d'un tablespace géré
au moyen du dictionnaire, vous êtes plus sollicité pour la gestion des extents, et vous
devez disposer d'un accès au dictionnaire de données pour le suivi. Les tablespaces
gérés au moyen du dictionnaire sont en phase d'abandon. Oracle déconseille leur
utilisation.
5. Sous l'en-tête Type, sélectionnez Permanent. Les tablespaces permanents contiennent
les objets de base de données permanents créés par le système ou par les utilisateurs.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-10
Créer un tablespace (suite)
6. Sous l'en-tête Status, sélectionnez Read Write. Ce statut indique que les utilisateurs
disposent d'un droit d'accès en lecture et en écriture sur le tablespace, une fois ce
dernier créé. Il s'agit de l'option par défaut.
7. Dans la région Datafiles de la page, cliquez sur Add afin d'ajouter des fichiers de
données au tablespace. Un tablespace doit comporter au moins un fichier de
données. Les tablespaces bigfile sont utilisés avec les bases de données très
volumineuses, pour lesquelles la fonctionnalité Automatic Storage Management
(ASM) Oracle ou d'autres gestionnaires de volumes logiques assurent la prise en
charge du striping ou de la technologie RAID, ainsi que des volumes logiques
extensibles de manière dynamique.
8. Dans la page Add Datafiles, entrez un nom de fichier. Acceptez la valeur par défaut
de File Directory, puis indiquez la taille de fichier.
9. Dans la région Storage, vous pouvez sélectionner l'option "Automatically extend
datafile when full (AUTOEXTEND)" et indiquer une valeur dans le champ
Increment. Cela permet au fichier de données de croître automatiquement chaque
fois qu'il manque d'espace. La taille du fichier est toutefois limitée par le support
physique sur lequel réside le fichier. Conservez la valeur Unlimited du champ
Maximum File Size. Cliquez sur OK. Vous revenez à la page Create Tablespace.
10. Cliquez sur l'onglet Storage. La page Edit Tablespace apparaît.
11. Acceptez toutes les valeurs par défaut de la page Storage.
Remarque : La procédure qui précède permet de créer rapidement un tablespace dans la
plupart des situations. Vous pouvez être amené à modifier certaines options en fonction
d'exigences particulières.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-11
Gestion du stockage dans les tablespaces
gérés localement
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-12
Gestion du stockage dans les tablespaces gérés localement (suite)
• Manual : Sélectionnez ce mode lorsque vous souhaitez utiliser des listes de blocs libres (free
lists) pour la gestion de l'espace libre dans les segments. Les listes de blocs libres sont des
listes de blocs de données qui contiennent de l'espace disponible pour l'insertion de lignes.
Cette forme de gestion est appelée gestion manuelle de l'espace dans les segments, en raison
de la nécessité de définir et de régler les paramètres de stockage PCTUSED, FREELISTS et
FREELIST GROUPS pour les objets de schéma créés dans le tablespace. Ce mode de gestion
reste pris en charge à des fins de compatibilité descendante. Il est recommandé d'utiliser la
gestion automatique de l'espace dans les segments.
Avantages des tablespaces gérés localement
Les tablespaces gérés localement présentent les avantages suivants par rapport aux tablespaces
gérés au moyen du dictionnaire :
• La gestion locale évite les opérations récursives de gestion de l'espace. Celles-ci se produisent
dans les tablespaces gérés au moyen du dictionnaire lorsque la consommation ou la libération
d'espace dans un extent (ensemble de blocs contigus) entraîne une autre opération qui
consomme ou libère de l'espace dans un segment d'annulation ou dans une table du
dictionnaire de données.
• Etant donné que les tablespaces gérés localement n'enregistrent pas l'espace libre dans les
tables du dictionnaire de données, la contention sur ces tables est réduite.
• La gestion locale des extents procède automatiquement au suivi de l'espace libre adjacent, ce
qui rend inutile la fusion des extents libres.
• La taille des extents gérés localement peut être déterminée automatiquement par le système.
• Les modifications apportées aux bitmaps d'extent ne génèrent pas d'informations d'annulation,
car elles ne mettent pas à jour les tables du dictionnaire de données (sauf dans des cas
particuliers, tels que les informations relatives au quota de tablespace).
Remarque : Si vous administrez une base de données dans laquelle vous souhaitez convertir les
tablespaces gérés au moyen du dictionnaire en tablespaces gérés localement, utilisez la procédure
DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL. Pour plus d'informations sur
l'utilisation de cette procédure, reportez-vous aux manuels PL/SQL Packages and Types Reference
et Database Administrator’s Guide.
Journalisation
Les modifications apportées aux objets contenus dans le tablespace sont consignées dans le fichier
de journalisation (redo log). Lorsque la journalisation n'est pas activée, les créations d'objets et les
chargements de données par chemin direct effectués ensuite ne sont pas consignées dans le fichier
de journalisation. Les objets ne peuvent donc pas être récupérés en cas de pertes de données. Par
conséquent, lorsque vous créez un objet alors que la journalisation est désactivée, vous devez
sauvegarder cet objet pour qu'il puisse être récupéré ultérieurement.
Pour plus d'informations sur la clause de journalisation, reportez-vous au manuel Oracle Database
SQL Reference.
Informations sur les blocs
La région Block Information indique la taille de bloc utilisée pour le tablespace en cours de
création. Il s'agit d'une valeur en lecture seule. Toutefois, si vous avez défini d'autres paramètres
d'initialisation de la taille de bloc (DB_nK_CACHE_SIZE), les valeurs correspondantes sont
proposées en option. Pour plus d'informations sur la définition d'autres tailles de bloc, reportez-vous
au manuel Database Administrator’s Guide.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-13
Tablespaces de la base de données
préconfigurée
• SYSTEM • UNDOTBS1
• SYSAUX • USERS
• TEMP • EXAMPLE
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-14
Tablespaces de la base de données préconfigurée (suite)
• TEMP : Le tablespace temporaire est utilisé lorsque vous exécutez une instruction
SQL qui requiert la création de segments temporaires (par exemple une opération de
tri volumineuse ou la création d'un index). Un tablespace par défaut est affecté à
chaque utilisateur pour le stockage des objets de données créés. De même, chaque
utilisateur se voit attribuer un tablespace temporaire. Il est recommandé de définir
un tablespace temporaire par défaut pour la base de données. Sauf indication
contraire, ce tablespace est affecté à chaque utilisateur nouvellement créé. Dans la
base de données préconfigurée, le tablespace TEMP est désigné comme tablespace
temporaire par défaut. Si, lors de la création d'un compte, aucun tablespace
temporaire n'est désigné, la base de données Oracle affecte le tablespace TEMP à
l'utilisateur.
• UNDOTBS1 : Il s'agit du tablespace d'annulation utilisé par le serveur de base de
données pour le stockage des informations d'annulation (undo). Si une base de
données utilise la gestion automatique des annulations (AUM), elle doit comporter à
tout moment un seul et unique tablespace d'annulation actif. Ce tablespace est créé
en même temps que la base de données.
• USERS : Ce tablespace est utilisé pour le stockage des données et objets utilisateur
permanents. Dans la base de données préconfigurée, le tablespace USERS est le
tablespace par défaut pour tous les objets créés par les utilisateurs autres que les
utilisateurs système. Pour les utilisateurs SYS et SYSTEM (les utilisateurs système),
le tablespace permanent par défaut reste SYSTEM.
• EXAMPLE : Ce tablespace contient les exemples de schéma pouvant être installés
lors de la création de la base de données. Ceux-ci fournissent une plate-forme
commune pour les exemples. La documentation et les cours Oracle contiennent des
exemples basés sur ces schémas.
Remarque : Pour simplifier l'administration, il est fréquent de réserver un tablespace pour
les seuls index.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-15
Modifier un tablespace
Modifier un tablespace
Une fois créé, un tablespace peut être modifié de différentes façons, en fonction de l'évolution
du système.
Modification du nom : Entrez un nouveau nom pour le tablespace et cliquez sur Apply.
Modification du statut : Un tablespace peut présenter trois statuts (ou états) différents. La
disponibilité de ces statuts dépend du type du tablespace :
• Read Write : Le tablespace est en ligne (online) et peut faire l'objet de lectures et
d'écritures.
• Read Only : Cette option place le tablespace en mode lecture seule. Les transactions
existantes peuvent être terminées au moyen d'une validation (commit) ou d'une
annulation (roll back), mais aucune autre opération LMD (langage de manipulation de
données) n'est autorisée sur les objets du tablespace. Le tablespace est en ligne tout en
étant en mode lecture seule. Vous ne pouvez pas affecter ce mode aux tablespaces
SYSTEM et SYSAUX.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-16
Modifier un tablespace (suite)
• Offline : Vous pouvez mettre hors ligne (offline) un tablespace qui est en ligne
(online), de sorte que cette partie de la base de données soit temporairement
indisponible pour une utilisation générale. Le reste de la base est ouvert et permet
aux utilisateurs d'accéder aux données. Lorsque vous placez un tablespace hors
ligne, vous disposez des options suivantes :
- Normal : Un tablespace peut être mis hors ligne en mode normal s'il n'existe
aucune condition d'erreur pour aucun de ses fichiers de données. La base de
données Oracle veille à ce que toutes les données soient écrites sur le disque.
Elle définit pour cela un point de reprise (checkpoint) pour tous les fichiers de
données du tablespace à mesure qu'elle les met hors ligne.
- Temporary : Un tablespace peut être mis hors ligne temporairement, même
s'il existe des conditions d'erreur pour un ou plusieurs de ses fichiers. La base
Oracle met hors ligne les fichiers de données (ceux qui ne le sont pas déjà), en
créant un point de reprise sur chacun d'eux. Si vous sélectionnez le mode
Temporary alors qu'aucun fichier n'est hors ligne, il est inutile de recourir à une
restauration physique pour remettre le tablespace en ligne. En revanche, si un
ou plusieurs fichiers du tablespace sont hors ligne suite à des erreurs d'écriture
et que vous placez temporairement le tablespace hors ligne, ce dernier
nécessite une récupération avant d'être remis en ligne.
- Immediate : Un tablespace peut être mis hors ligne immédiatement, sans que
la base de données Oracle crée de point de reprise sur ses fichiers de données.
Lorsque vous indiquez le mode Immediate, la restauration physique du
tablespace est nécessaire pour sa remise en ligne. Vous ne pouvez pas mettre
un tablespace hors ligne en mode Immediate si la base de données fonctionne
en mode NOARCHIVELOG.
- For Recover : Le mode FOR RECOVER est en phase d'abandon. Il reste
toutefois pris en charge pour des raisons de compatibilité descendante.
Modification de la taille : Vous pouvez ajouter de l'espace à un tablespace existant en
ajoutant des fichiers de données ou en modifiant la taille d'un fichier de données existant.
• Pour ajouter un nouveau fichier de données au tablespace, cliquez sur Add, puis
indiquez les informations concernant le fichier de données dans la page Add
Datafile.
• Pour modifier la taille d'un fichier de données existant, cliquez sur le nom du fichier
dans la région Datafiles de la page Edit Tablespace, ou sélectionnez le fichier et
cliquez sur Edit. Dans la page Edit Datafile, vous pouvez alors modifier la taille du
fichier de données. Il est possible d'augmenter ou de réduire la taille du tablespace.
En revanche, vous ne pouvez pas réduire la taille d'un fichier de données en deçà de
l'espace utilisé dans le fichier. Si vous tentez cette opération, vous recevez l'erreur
suivante :
ORA-03297: file contains used data beyond requested
RESIZE value
Options de stockage : Cliquez sur Storage pour modifier les options de journalisation du
tablespace.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-17
Modifier un tablespace (suite)
Seuils : Cliquez sur Thresholds pour modifier les pourcentages d'utilisation du tablespace
correspondant au niveau d'avertissement et au niveau critique. Vous avez le choix entre
trois options :
• Use Database Default Thresholds : Sélectionnez cette option pour utiliser les
valeurs par défaut prédéfinies, que vous pouvez modifier.
• Specify Thresholds : Cette option vous permet de définir des seuils spécifiques pour
le tablespace.
• Disable Thresholds : Cette option désactive les alertes relatives à d'utilisation de
l'espace du tablespace.
Remarque : L'enregistrement d'une alerte avec seuil peut prendre quelques minutes.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-18
Actions sur les tablespaces
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-19
Actions sur les tablespaces (suite)
• Place Online : Remet en ligne (online) un tablespace actuellement hors ligne
(offline).
• Reorganize : Démarre l'assistant Reorganization Wizard, qui permet de déplacer des
objets dans le tablespace afin de récupérer de l'espace inutilisé. Cette tâche doit être
réalisée à un moment où les objets du tablespace sont peu utilisés.
• Run Segment Advisor : Démarre Segment Advisor, qui vous aide à déterminer si
un objet comporte de l'espace disponible pouvant être récupéré, en fonction du
niveau de fragmentation de l'espace dans l'objet. Au niveau tablespace, un conseil est
généré pour chaque segment.
• Show Dependencies : Affiche les objets dont dépend le tablespace, ou les objets qui
dépendent du tablespace.
• Show Tablespace Contents : Affiche des informations relatives à l'ensemble des
segments du tablespace, notamment une représentation graphique de tous les extents
(ensembles de blocs contigus).
• Take Offline : Rend inaccessible un tablespace actuellement en ligne. Le tablespace
n'est toutefois pas supprimé.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-20
Supprimer des tablespaces
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-21
Afficher les informations relatives
aux tablespaces
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-22
Collecter des informations
sur les tablespaces
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-23
Afficher le contenu d'un tablespace
12061_1_sel_ts_3
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-24
Etendre la base de données
Vous pouvez étendre la base de données de différentes façons :
• En créant un tablespace
• En ajoutant un fichier de données à un tablespace existant
• En augmentant la taille d'un fichier de données
• En permettant la croissance dynamique d'un fichier
de données
Base de données
Tablespace Tablespace
SYSTEM INVENTORY
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-25
Automatic Storage Management :
Présentation
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-26
ASM : Fonctionnalités clés
et principaux avantages
ASM
• répartit les fichiers mais pas les volumes logiques
• fournit un rééquilibrage dynamique et une
reconfiguration de disque en ligne
• permet de régler la vitesse de rééquilibrage
• fournit une fonction de redondance par fichier
• ne prend en charge que les fichiers de base
de données Oracle
• prend en charge les clusters
• est installé automatiquement
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-27
ASM : Concepts
Groupe de
Base de données
disques ASM
Fichier de
Tablespace Fichier ASM
données
ASM : Concepts
ASM ne supprime aucune des fonctionnalités de base de données existantes. Les bases de
données existantes continent de fonctionner comme avant. Vous pouvez créer les nouveaux
fichiers en tant que fichiers ASM et conserver l'ancienne méthode d'administration pour les
fichiers existants, ou migrer ces derniers vers ASM.
Le schéma de la diapositive ci-dessus illustre les relations qui existent entre les différents
composants de stockage d'une base de données utilisant ASM. Les liens entre la partie gauche et
la partie centrale du schéma illustrent les relations qui existaient dans les versions antérieures. La
partie de droite représente les nouveaux concepts introduits par ASM.
Les fichiers de base de données peuvent être stockés en tant que fichiers ASM. Au sommet de la
nouvelle hiérarchie se trouvent les groupes de disques ASM. Un fichier ASM donné n'est contenu
que dans un seul groupe de disques. En revanche, un groupe de disques peut comporter des
fichiers qui appartiennent à plusieurs bases de données, et une même base de données peut
utiliser l'espace de stockage de plusieurs groupes de disques. Comme vous pouvez le constater,
un groupe de disques est composé de plusieurs disques ASM, qui appartiennent chacun à un seul
groupe de disques. Les fichiers ASM sont toujours répartis entre tous les disques ASM du
groupe. Les disques ASM sont partitionnés en unités d'allocation d'un mégaoctet chacune. Une
unité d'allocation constitue le plus petit espace disque contigu alloué par ASM. ASM n'autorise
pas la division d'un bloc Oracle en plusieurs unités d'allocation.
Remarque : Le schéma ci-dessus ne traite que d'un seul type de fichier ASM, à savoir le fichier
de données. ASM peut toutefois être utilisé pour stocker d'autres types de fichier de base de
données.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-28
Synthèse
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-29
Présentation de l'exercice :
Gérer les structures de stockage
de base de données
Cet exercice porte sur les points suivants :
• créer des tablespaces
• collecter des informations sur les tablespaces
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 5-30
Administrer la sécurité utilisateur
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Objectifs
Objectifs
Les termes suivants, qui ont trait à l'administration des utilisateurs de base de données, vous
aideront à comprendre les objectifs du chapitre :
Un compte utilisateur de base de données constitue un moyen d'organiser l'appartenance
des objets de base de données et l'accès à ces objets.
Un mot de passe est un mode d'authentification par la base de données Oracle.
On nomme privilège le droit d'exécuter un type particulier d'instruction SQL ou d'accéder à
l'objet d'un autre utilisateur.
Un rôle est un groupe nommé de privilèges liés qui sont accordés à des utilisateurs ou à
d'autres rôles.
Les profils imposent un ensemble nommé de limites concernant l'utilisation de la base de
données et les ressources des instances.
Un quota est une allocation d'espace dans un tablespace donné. Il constitue l'un des moyens
permettant de contrôler l'utilisation des ressources par les utilisateurs.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-2
> Utilisateur
Comptes utilisateur Authentification
Privilège
de base de données Rôle
Profil
Mot de passe
Quota
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-3
Comptes utilisateur de base de données (suite)
• Un tablespace temporaire : Il s'agit de l'emplacement dans lequel l'utilisateur peut
créer des objets temporaires, tels que des tris et des tables temporaires.
• Un profil utilisateur : Il s'agit d'un ensemble de restrictions concernant les
ressources et les mots de passe qui est affecté à l'utilisateur.
• Un groupe de consommateurs de ressources : Il est utilisé par le gestionnaire de
ressources.
• Un statut de verrouillage : Les utilisateurs n'ont accès qu'aux comptes
"déverrouillés".
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-4
Comptes prédéfinis : SYS et SYSTEM
• Le compte SYS :
– reçoit le rôle d'administrateur de base de données (DBA)
– dispose de tous les privilèges associés à ADMIN OPTION
– est requis pour les opérations de démarrage et d'arrêt,
ainsi que pour certaines commandes de maintenance
– est le propriétaire du dictionnaire de données
– est le propriétaire du référentiel AWR (Automatic
Workload Repository)
• Le compte SYSTEM a le rôle d'administrateur de base
de données (DBA).
• Ces comptes ne sont pas utilisés pour les opérations
de routine.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-5
Créer un utilisateur
Créer un utilisateur
Dans Enterprise Manager, vous pouvez gérer la liste des utilisateurs de base de données
autorisés à accéder à la base actuelle, via la page Users. Dans cette page, vous pouvez créer,
supprimer et modifier les paramètres d'un utilisateur.
Pour créer un utilisateur de base de données, procédez de la manière suivante :
1. Dans Enterprise Manager Database Control, sélectionnez Administration > Schema >
Users & Privileges > Users.
2. Cliquez sur le bouton Create.
Fournissez les informations requises. Les éléments obligatoires, tels que le champ Name, sont
signalés par une étoile.
Les pages suivantes vous fournissent davantage d'informations sur l'authentification. Les
profils sont traités plus loin dans ce chapitre.
Affectez un tablespace par défaut et un tablespace temporaire à chaque utilisateur. Cette
opération vous permet de contrôler l'emplacement dans lequel les objets d'un utilisateur sont
créés si ce dernier n'indique pas de tablespace.
Si vous ne choisissez pas de tablespace par défaut, le tablespace permanent par défaut défini
par le système est utilisé. Il en va de même pour le tablespace temporaire. Si vous ne le
définissez pas, le tablespace temporaire défini par le système est utilisé.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-6
Authentification des utilisateurs Utilisateur
> Authentification
Privilège
Rôle
Profil
Mot de passe
• Password Quota
• External
• Global
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-7
Authentification des utilisateurs (suite)
External : Ce mode est appelé authentification par le système d'exploitation. Les
utilisateurs peuvent se connecter à la base de données Oracle sans fournir de nom
utilisateur ou de mot de passe. Avec l'authentification externe, la base de données utilise
le système d'exploitation sous-jacent ou le service d'authentification réseau pour limiter
l'accès aux comptes de base de données. Aucun mot de passe de base de données n'est
utilisé pour ce type de connexion. Si le système d'exploitation ou le service réseau le
permet, vous pouvez le configurer pour l'authentification des utilisateurs. Dans ce cas,
définissez le paramètre d'initialisation OS_AUTHENT_PREFIX et utilisez ce préfixe
dans les noms utilisateur Oracle. Le paramètre OS_AUTHENT_PREFIX définit un
préfixe qui est ajouté par la base de données Oracle au début du nom de compte du
système d'exploitation de chaque utilisateur. La valeur par défaut de ce paramètre est
OPS$ (pour des raisons de compatibilité descendante avec les versions antérieures du
logiciel Oracle). Lorsqu'un utilisateur tente de se connecter, la base de données Oracle
compare le nom utilisateur doté du préfixe avec les noms utilisateur Oracle de la base
de données. Par exemple, supposons que le paramètre OS_AUTHENT_PREFIX soit
défini comme suit :
OS_AUTHENT_PREFIX=OPS$
Si un utilisateur doté d'un compte de système d'exploitation nommé tsmith doit se
connecter à une base de données Oracle et être authentifié par le système d'exploitation,
la base vérifie s'il existe un utilisateur de base de données OPS$tsmith correspondant
et, si tel est le cas, elle autorise l'utilisateur à se connecter. Toutes les références à un
utilisateur authentifié par le système d'exploitation doivent inclure le préfixe, comme
dans OPS$tsmith.
Remarque : Dans certains systèmes d'exploitation, le texte du paramètre d'initialisation
OS_AUTHENT_PREFIX distingue les majuscules des minuscules. Reportez-vous à la
documentation Oracle propre à votre système d'exploitation pour plus d'informations
sur ce paramètre d'initialisation.
Global : Associée à l'option Oracle Advanced Security, l'authentification globale (qui
est une authentification forte) permet l'identification des utilisateurs via la biométrie, les
certificats x509, les systèmes tiers et Oracle Internet Directory. Pour plus d'informations
sur les méthodes d'authentification avancées, reportez-vous au cours Oracle Enterprise
Identity Management.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-8
Authentification de l'administrateur
Sécurité au niveau du système d'exploitation
• Les administrateurs de base de données doivent disposer
des privilèges de création et de suppression de fichiers au niveau
du système d'exploitation.
• Les utilisateurs de base de données ne bénéficient normalement pas
des privilèges de création ou de suppression de fichiers de base
de données au niveau du système d'exploitation.
Sécurité au niveau de l'administrateur
• Les connexions SYSBA et SYSOPER sont autorisées via le fichier
de mots de passe ou le système d'exploitation.
– L'authentification par fichier de mots de passe enregistre
l'utilisateur DBA par son nom.
– L'authentification par le système d'exploitation n'enregistre
pas l'utilisateur.
– L'authentification par le système d'exploitation est prioritaire sur
l'authentification par fichier de mots de passe pour les privilèges
SYSDBA et SYSOPER.
Authentification de l'administrateur
Sécurité au niveau du système d'exploitation : Sous UNIX et Linux, les administrateurs de
base de données (DBA) appartiennent par défaut au groupe install du système
d'exploitation, qui bénéficie des privilèges requis pour la création et la suppression des fichiers
de base de données.
Sécurité au niveau de l'administrateur : Les connexions SYSBA et SYSOPER ne sont
autorisées qu'après une vérification basée sur le fichier de mots de passe, ou les privilèges et
permissions définis au niveau du système d'exploitation. Lorsque vous employez
l'authentification par le système d'exploitation, la base de données n'utilise pas le nom
utilisateur et le mot de passe fournis. Ce type d'authentification est appliqué dans les cas
suivants : si aucun fichier de mots de passe n'est présent, si le nom utilisateur et le mot de passe
fournis ne figurent pas dans le fichier de mots de passe, ou si aucun nom utilisateur ni mot de
passe n'est fourni.
Quoi qu'il en soit, si l'authentification par le biais du fichier de mots de passe réussit, la
connexion est établie via le nom utilisateur. Si c'est l'authentification par le biais du système
d'exploitation qui aboutit, une connexion CONNECT / est établie et cette dernière n'enregistre
pas l'utilisateur concerné.
Remarque : L'authentification par le système d'exploitation est prioritaire sur l'authentification
par fichier de mots de passe. Plus particulièrement, si vous êtes membre du groupe OSDBA ou
OSOPER propre au système d'exploitation, et que vous vous connectez en tant que SYSDBA ou
SYSOPER, vous êtes connecté avec les privilèges d'administration associés, quels que soient le
nom utilisateur et le mot de passe indiqués.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-9
Déverrouiller un compte utilisateur
et redéfinir le mot de passe
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-10
Utilisateur
Authentification
Privilèges > Privilège
Rôle
Profil
Mot de passe
Il existe deux types de privilège utilisateur : Quota
HR_DBA
Privilèges
On nomme privilège le droit d'exécuter un type particulier d'instruction SQL ou d'accéder à
l'objet d'un autre utilisateur. La base de données Oracle vous permet de contrôler les
opérations que les utilisateurs peuvent effectuer ou non au sein de la base. Les privilèges sont
répartis en deux catégories :
• Privilèges système : Chaque privilège système autorise un utilisateur à effectuer une
certaine opération de base de données ou une certaine classe d'opérations. Par exemple,
le privilège permettant de créer des tablespaces est un privilège système. Les privilèges
système peuvent être accordés par l'administrateur ou par quelqu'un à qui la permission
d'administrer le privilège a été accordée explicitement. Il existe plus d'une centaine de
privilèges système différents. Un grand nombre d'entre eux contiennent la clause ANY.
• Privilèges objet : Les privilèges objet permettent à un utilisateur d'effectuer une action
particulière sur un objet spécifique, tel qu'une table, une vue, une séquence, une
procédure, une fonction ou un package. Sans permission spécifique, les utilisateurs ne
peuvent accéder qu'à leurs propres objets. Les privilèges objet peuvent être octroyés par
le propriétaire d'un objet, par l'administrateur, ou par un utilisateur auquel la permission
d'accorder des privilèges sur l'objet a été attribuée explicitement.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-11
Privilèges système
Privilèges système
Pour accorder des privilèges système, cliquez sur l'onglet Systems Privileges de la page Edit
User. Sélectionnez les privilèges appropriés dans la liste des privilèges disponibles, puis
déplacez-les vers la liste Selected System Privileges en cliquant sur le bouton Move.
Les privilèges contenant la clause ANY s'étendent au-delà des limites du schéma. Par exemple,
le privilège CREATE TABLE vous permet de créer une table, mais uniquement dans votre
propre schéma. Le privilège SELECT ANY TABLE vous permet, quant à lui, d'effectuer une
opération SELECT dans des tables appartenant à d'autres utilisateurs.
Cochez la case Admin Option pour pouvoir administrer le privilège système considéré et
l'accorder à d'autres utilisateurs.
Tenez bien compte des exigences de sécurité avant d'octroyer des permissions système.
Certains privilèges système sont généralement accordés uniquement aux administrateurs :
• RESTRICTED SESSION : Ce privilège vous autorise à vous connecter même si la base
de données a été ouverte en mode d'accès restreint.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-12
Privilèges système (suite)
• SYSDBA et SYSOPER : Ces privilèges vous autorisent à arrêter et à démarrer la base de
données, ainsi qu'à effectuer des opérations de récupération et d'autres tâches
d'administration. SYSOPER vous permet d'effectuer des tâches opérationnelles de base,
mais ne vous autorise pas à voir les données utilisateur. Il inclut les privilèges système
suivants :
- STARTUP et SHUTDOWN
- CREATE SPFILE
- ALTER DATABASE OPEN/MOUNT/BACKUP
- ALTER DATABASE ARCHIVELOG
- ALTER DATABASE RECOVER (Récupération complète uniquement. Pour toute
forme de récupération incomplète, telle que
UNTIL TIME|CHANGE|CANCEL|CONTROLFILE, vous devez vous connecter
en tant que SYSDBA.)
- RESTRICTED SESSION
Le privilège système SYSDBA autorise également les opérations de récupération
incomplète et la suppression d'une base de données. En fait, il autorise un utilisateur à se
connecter en tant qu'utilisateur SYS.
• DROP ANY object : Le privilège DROP ANY vous permet de supprimer des objets qui
appartiennent à d'autres utilisateurs du schéma.
• CREATE, MANAGE, DROP et ALTER TABLESPACE : Ces privilèges permettent les
opérations d'administration des tablespaces, notamment la création, la suppression et la
modification des attributs.
• CREATE ANY DIRECTORY : La base de données Oracle autorise les développeurs à
appeler du code externe (par exemple une bibliothèque C) à partir de code PL/SQL. Pour
des raisons de sécurité, le répertoire du système d'exploitation dans lequel réside le code
doit être lié à un objet de répertoire Oracle virtuel. Avec le privilège CREATE ANY
DIRECTORY, vous pouvez potentiellement appeler des objets de code non sécurisés.
Le privilège CREATE ANY DIRECTORY permet à un utilisateur de créer un objet
répertoire (Directory) avec un accès en lecture et en écriture pour tous les répertoires
auxquels le propriétaire du logiciel Oracle a accès. Cela signifie que l'utilisateur peut
accéder aux procédures externes figurant dans ces répertoires. Il peut tenter d'effectuer
des opérations de lecture et d'écriture directement dans un fichier de base de données
(fichier de données, fichier de journalisation (redo log) et journal d'audit, par exemple).
Assurez-vous que votre organisation dispose d'une stratégie de sécurité qui évite toute
mauvaise utilisation de privilèges puissants tels que celui-ci.
• GRANT ANY OBJECT PRIVILEGE : Ce privilège vous autorise à accorder des
permissions sur des objets qui ne vous appartiennent pas.
• ALTER DATABASE et ALTER SYSTEM : Très puissants, ces privilèges vous autorisent à
modifier la base de données et l'instance Oracle. Vous pouvez, par exemple, renommer
un fichier de données ou vider le cache de tampons (buffer cache).
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-13
Privilèges objet
Privilèges objet
Pour accorder des privilèges objet, cliquez sur l'onglet Object Privileges de la page Edit User.
Sélectionnez le type d'objet pour lequel vous voulez octroyer des privilèges, puis cliquez sur
le bouton Add. Indiquez les objets concernés sous la forme
<nom_utilisateur.nom_objet> ou sélectionnez-les dans la liste.
Sélectionnez ensuite les privilèges appropriés dans la liste Available Privileges, puis cliquez
sur le bouton Move. Une fois les privilèges sélectionnés, cliquez sur OK.
Dans la page Edit User, cochez la case Grant si l'utilisateur est autorisé à octroyer le même
accès aux autres utilisateurs.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-14
Révoquer des privilèges système
accordés avec ADMIN OPTION
DBA Jeff Emi
Utilisateur
GRANT
Privilège
Objet
REVOKE CREATE
TABLE FROM jeff;
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-15
Révoquer des privilèges objet
accordés avec GRANT OPTION
Bob Jeff Emi
GRANT
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-16
Avantages des rôles Utilisateur
Authentification
Privilège
> Rôle
Profil
Mot de passe
Quota
• Gestion plus facile des privilèges
• Gestion dynamique des privilèges
• Disponibilité sélective des privilèges
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-17
Affecter des privilèges à des rôles
et des rôles à des utilisateurs
Utilisateurs
Jenny David Rachel
Insérer des
employés
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-18
Rôles prédéfinis
Rôles prédéfinis
Il existe plusieurs rôles qui sont définis automatiquement pour les bases de données Oracle
lorsque vous exécutez les scripts de création de la base. Le rôle CONNECT est accordé
automatiquement à tout utilisateur créé avec Enterprise Manager. Dans les versions
antérieures de la base de données (avant Oracle Database 10g Release 2), le rôle CONNECT
incluait davantage de privilèges, tels que CREATE TABLE et CREATE DATABASE LINK.
Ces privilèges ont été supprimés pour des raisons de sécurité.
Remarque : Lorsque vous octroyez le rôle RESOURCE, vous devez accorder également le
privilège UNLIMITED TABLESPACE.
Rôles fonctionnels
D'autres rôles permettant l'administration de fonctions spéciales sont créés lors de
l'installation des fonctions correspondantes. Par exemple, le rôle XDBADMIN dispose des
privilèges requis pour administrer XML Database si cette fonctionnalité est installée. Le rôle
AQ_ADMINISTRATOR_ROLE fournit les privilèges permettant d'administrer Advanced
Queuing. Le rôle HS_ADMIN_ROLE inclut les privilèges requis pour administrer les services
hétérogènes (Heterogeneous Services). Vous ne devez pas modifier les privilèges accordés à
ces rôles fonctionnels sans l'assistance du support technique Oracle, car vous risqueriez de
désactiver par inadvertance des fonctionnalités nécessaires.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-19
Créer un rôle
Sélectionnez Administration > Schema > Users & Privileges > Roles.
Créer un rôle
Un rôle est un groupe nommé de privilèges liés qui sont accordés à des utilisateurs ou à
d'autres rôles. Un administrateur de base de données (DBA) gère les privilèges via des rôles.
Pour créer un rôle, procédez de la manière suivante :
1. Dans Enterprise Manager Database Control, sélectionnez Administration > Schema >
Users & Privileges > Roles.
2. Cliquez sur le bouton Create.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-20
Rôles sécurisés
• Les rôles peuvent ne pas être activés par défaut.
SET ROLE vacationdba;
Rôles sécurisés
Les rôles sont généralement activés par défaut, ce qui signifie que si un rôle est accordé à un
utilisateur, cet utilisateur peut exercer les privilèges accordés à ce rôle. Vous pouvez effectuer
les opérations suivantes :
• Rendre un rôle inactif par défaut. Lorsque le rôle est affecté à un utilisateur,
désélectionnez la case DEFAULT. L'utilisateur doit à présent activer explicitement le
rôle pour pouvoir exercer les privilèges correspondants.
• Configurer un rôle afin qu'il nécessite une authentification. L'authentification par défaut
d'un rôle est None, mais il est possible de configurer le rôle afin qu'il ne puisse être
activé qu'après authentification.
• Créer des rôles applicatifs sécurisés qui ne peuvent être activés que via l'exécution d'une
procédure PL/SQL. La procédure PL/SQL peut vérifier des éléments tels que l'adresse
réseau de l'utilisateur, le programme exécuté par l'utilisateur, l'heure ou tout autre
élément nécessaire pour sécuriser correctement un groupe de permissions.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-21
Affecter des rôles aux utilisateurs
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-22
Profils et utilisateurs Utilisateur
Authentification
Privilège
Rôle
> Profil
Mot de passe
Quota
Un seul profil
est affecté à
un utilisateur à
un instant donné.
Les profils :
• contrôlent la
consommation
des ressources
• gèrent le statut
des comptes et
l'expiration des
mots de passe
Profils et utilisateurs
Les profils imposent un ensemble nommé de limites concernant l'utilisation de la base de
données et les ressources des instances. Les profils gèrent également le statut des comptes et
imposent des restrictions sur les mots de passe des utilisateurs (longueur, délai d'expiration,
etc.). Chaque utilisateur se voit affecter un profil et ne peut appartenir qu'à un seul profil à la
fois. Si des utilisateurs sont connectés lorsque vous modifiez leur profil, le changement ne
prend effet que lors de leur prochaine connexion.
Le profil par défaut sert de base pour tous les autres profils. Comme l'illustre la diapositive ci-
dessus, les limitations associées à un profil peuvent être définies implicitement
(CPU/Session), être illimitées (CPU/Call) ou faire référence à un paramètre du profil par
défaut (Connect Time).
Les profils ne peuvent imposer des limitations de ressources aux utilisateurs que si la valeur
TRUE est affectée au paramètre d'initialisation RESOURCE_LIMIT. Avec la valeur par
défaut (FALSE) de RESOURCE_LIMIT, les limitations des profils sont ignorées.
Les profils permettent à l'administrateur de contrôler les ressources système suivantes :
• CPU : Les ressources CPU peuvent être limitées par session ou par appel. Avec une
limite CPU/Session de 1 000, une session qui utilise ce profil et qui consomme plus de
10 secondes de temps CPU (les limites de temps CPU étant exprimées en centièmes de
seconde) reçoit une erreur et est déconnectée :
ORA-02392: exceeded session limit on CPU usage, you are
being logged off
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-23
Profils et utilisateurs (suite)
Une limitation par appel a le même effet, mais au lieu de limiter la session globale
de l'utilisateur, elle empêche chaque commande de consommer trop de temps CPU.
Si une limite CPU/Call est définie et que l'utilisateur la dépasse, la commande
s'arrête et l'utilisateur reçoit un message d'erreur semblable à ce qui suit :
ORA-02393: exceeded call limit on CPU usage
• Network/Memory : Chaque session de base de données consomme des ressources
mémoire du système et (si la session est ouverte par un utilisateur qui ne se trouve
pas en local sur le serveur) des ressources réseau. Vous pouvez définir les éléments
suivants :
- Connect Time : Indique le nombre de minutes pendant lesquelles un utilisateur
peut rester connecté avant d'être automatiquement déconnecté.
- Idle Time : Définit le nombre de minutes pendant lesquelles la session d'un
utilisateur peut rester inactive avant d'être automatiquement déconnectée. Le
temps d'inactivité est calculé pour le processus serveur uniquement. Il ne tient
pas compte de l'activité des applications. La limite IDLE_TIME n'est pas
affectée par les interrogations longues et les autres opérations.
- Concurrent Sessions : Indique le nombre de sessions simultanées pouvant être
créées à l'aide d'un compte utilisateur de base de données.
- Private SGA : Limite la quantité d'espace consommé dans la mémoire SGA
(System Global Area) pour le tri, la fusion de bitmaps, etc. Cette restriction ne
prend effet que si la session utilise un serveur partagé. (Les serveurs partagés
sont traités dans le chapitre intitulé "Configurer l'environnement réseau
Oracle".)
• Disk I/O : Cette option limite la quantité de données qu'un utilisateur peut lire, par
session ou par appel. Les options Reads/Session et Reads/Call limitent le nombre
total de lectures réalisées à partir de la mémoire et du disque. Elles permettent de
s'assurer, par exemple, qu'aucune instruction consommant beaucoup d'E/S n'utilise
trop intensément la mémoire et les disques.
Les profils autorisent également une limite composite. Les limites composites sont basées
sur une combinaison pondérée des limites CPU/Session, Reads/Session, Connect Time et
Private SGA. Elles sont étudiées plus en détail dans le manuel Oracle Database Security
Guide.
Pour créer un profil, sélectionnez Administration > Schema > Users & Privileges >
Profiles, puis cliquez sur le bouton Create.
Remarque : Vous pouvez également utiliser Resource Manager à la place de la plupart
des paramètres de profil. Pour plus d'informations sur Resource Manager, reportez-vous
au manuel Oracle Database Administrator’s Guide.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-24
Implémenter des fonctionnalités de Utilisateur
Authentification
sécurité utilisant des mots de passe Privilège
Rôle
Profil
> Mot de passe
Quota
Vérification de la
Historique des complexité des
mots de passe mots de passe
Utilisateur Configuration
des profils
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-26
Créer un profil de mot de passe
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-27
Fonction de vérification des mots
de passe fournie : VERIFY_FUNCTION
La fonction de vérification des mots de passe fournie
applique les restrictions suivantes :
• La longueur minimale est de quatre caractères.
• Le mot de passe doit être différent du nom utilisateur.
• Le mot de passe doit comporter au moins un caractère
alphabétique, un chiffre et un caractère spécial.
• Le mot de passe doit comporter au moins trois lettres
différentes du précédent mot de passe.
Conseil : Utilisez cette fonction comme modèle
pour la création d'une fonction personnalisée
de vérification des mots de passe.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-28
Utilisateur
Affecter des quotas aux utilisateurs Authentification
Privilège
Rôle
Profil
Mot de passe
> Quota
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-29
Affecter des quotas aux utilisateurs (suite)
• Quand l'instance Oracle utilise-t-elle des quotas ?
Les quotas sont employés lorsqu'un utilisateur crée ou étend un segment.
• Quelles activités n'ont pas d'incidence sur les quotas ?
Les activités qui n'utilisent pas l'espace disponible dans le tablespace désigné
n'affectent pas les quotas. Il s'agit, par exemple, de la création de vues ou de
l'utilisation du tablespace temporaire.
• Quand le quota est-il renouvelé ?
Le quota est renouvelé lorsque les objets dont l'utilisateur est le propriétaire sont
supprimés à l'aide de la clause PURGE ou lorsque les objets contenus dans la
corbeille sont purgés automatiquement.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-30
Synthèse
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-31
Présentation de l'exercice :
Administrer les utilisateurs
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 6-32
Gérer les objets de schéma
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Objectifs
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-2
> Schéma
Qu'est-ce qu'un schéma ? Contraintes
Index
Vues
Séquences
Tables temp.
Dict. de données
possède
Schéma HR
Utilisateur HR
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-3
Qu'est-ce qu'un schéma ? (suite)
Lorsque vous créez la base de données, plusieurs schémas sont créés automatiquement.
Deux d'entre eux sont particulièrement importants :
• Schéma SYS : Il contient le dictionnaire de données, comme indiqué dans le
chapitre intitulé "Administrer la sécurité utilisateur".
• Schéma SYSTEM : Il contient des tables et des vues supplémentaires dans lesquelles
sont stockées des informations d'administration. Il est décrit dans le chapitre
"Administrer la sécurité utilisateur".
Lors de l'installation complète d'une base de données Oracle, différents exemples de
schémas liés entre eux sont installés automatiquement. Les exemples présentés dans la
documentation et dans les supports de formation Oracle utilisent ainsi une plate-forme
commune. Ces exemples peuvent avoir différents niveaux de complexité. Les schémas
fournis sont les suivants :
• HR : Le schéma Human Resources est un schéma simple utilisé pour présenter les
notions de base de ce cours. Une extension de ce schéma permet les démonstrations
relatives à Oracle Internet Directory (OID).
• OE : Le schéma Order Entry permet de traiter de sujets présentant une complexité
moyenne. Une multitude de types de données y sont disponibles. Le sous-schéma OC
(Online Catalog) est un ensemble d'objets de base de données relationnelle objet créé
dans le schéma OE.
• PM : Le schéma Product Media est dédié aux types de données multimédias.
• QS : Le schéma Queued Shipping contient un ensemble de schémas utilisés pour
illustrer les fonctionnalités d'Oracle Advanced Queuing.
• SH : Le schéma Sales History permet les démonstrations impliquant des quantités
importantes de données. Une extension de ce schéma fournit la prise en charge du
traitement analytique avancé.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-4
Accéder aux objets de schéma
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-5
Nommer les objets de base de données
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-6
Nommer les objets de base de données (suite)
Les identificateurs qui ne sont pas inclus entre guillemets peuvent uniquement contenir
des caractères alphanumériques issus du jeu de caractères de la base de données, ainsi que
le caractère de soulignement (_), le symbole dollar ($) et le symbole dièse (#). Les liens de
base de données peuvent en outre contenir des points (.) et le symbole "arobas" (@). Il est
vivement déconseillé d'utiliser les symboles $ et # dans les identificateurs qui ne sont pas
inclus entre guillemets.
Les identificateurs inclus entre guillemets peuvent contenir n'importe quel caractère ou
signe de ponctuation, ainsi que des espaces. Toutefois, ni les identificateurs qui sont inclus
entre guillemets, ni ceux qui ne le sont pas ne peuvent contenir de guillemets.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-7
Définir des types de données pour les tables
Types de données courants :
• CHAR(size [BYTE|CHAR]) : chaîne de caractères
de longueur fixe, dont la taille est de size octets
ou caractères
• VARCHAR2(size [BYTE|CHAR]) : chaîne de
caractères de longueur variable, dont la taille
maximale est de size octets ou caractères
• DATE : date valide comprise entre le 1er janvier 4712
avant J.C. et le 31 décembre 9999 après J.C.
• NUMBER(p,s) : nombre dont la précision est p
et l'échelle s
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-8
Définir des types de données pour les tables (suite)
• BINARY_FLOAT : nombre en virgule flottante sur 32 bits. Ce type de données
requiert 5 octets, en comptant l'octet de longueur.
• BINARY_DOUBLE : nombre en virgule flottante sur 64 bits. Ce type de données
requiert 9 octets.
• FLOAT(p) : type de données ANSI (American National Standards Institute). Le
type de données FLOAT est un nombre en virgule flottante dont la précision binaire
est p. La précision par défaut de ce type de données est de 126 en binaire, soit 38 en
décimal.
• INTEGER : type de données équivalent au type NUMBER(p,0).
• NCHAR(length) : type de données Unicode exclusivement. Lorsque vous créez
une table comportant une colonne NCHAR, vous définissez la longueur de la colonne
en nombre de caractères. Vous définissez le jeu de caractères nationaux lors de la
création de la base de données. La longueur maximale d'une colonne est déterminée
par la définition du jeu de caractères nationaux. Les spécifications de largeur du type
de données NCHAR font référence au nombre de caractères. La taille maximale
autorisée pour une colonne est de 2000 octets. Si vous insérez une valeur dont la
longueur est inférieure à celle de la colonne, la base de données Oracle lui ajoute des
espaces pour qu'elle atteigne la longueur totale de la colonne. Vous ne pouvez pas
insérer une valeur CHAR dans une colonne NCHAR, ni insérer une valeur NCHAR
dans une colonne CHAR.
• NVARCHAR2(size [BYTE|CHAR]) : type de données Unicode exclusivement.
Il est semblable au type de données NCHAR, à ceci près que sa longueur maximale
est de 4 000 octets et que le serveur Oracle n'ajoute pas d'espaces pour compléter la
longueur.
• LONG : données alphanumériques de longueur variable (longueur maximale de
2 gigaoctets ou 231 –1 octets). Le type de données LONG est obsolète. Utilisez à sa
place le type LOB (Large Object).
• LONG RAW : données binaires raw de longueur variable (longueur maximale de
2 gigaoctets).
• RAW(size) : données binaires raw, dont la longueur est de size octets. La taille
maximale est de 2 000 octets. Vous devez obligatoirement définir la taille d'une
valeur RAW.
• ROWID : chaîne en base 64, représentant l'adresse unique d'une ligne dans la table.
Ce type de données est destiné essentiellement aux valeurs renvoyées par la pseudo-
colonne ROWID.
• UROWID : chaîne en base 64, représentant l'adresse logique d'une ligne d'une table
organisée en index. La taille (facultative) est celle d'une colonne de type UROWID.
La taille maximale (valeur par défaut) est de 4000 octets.
• BLOB : objet binaire de grande taille.
• CLOB : objet de type caractère de grande taille, contenant des caractères mono-
octets ou multi-octets. Les jeux de caractères de longueur fixe et de longueur
variable sont pris en charge. Ils utilisent tous le jeu de caractères CHAR de la base de
données.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-9
Définir des types de données pour les tables (suite)
• NCLOB : objet de type caractère de grande taille, contenant des caractères Unicode. Les
jeux de caractères de longueur fixe et de longueur variable sont pris en charge. Ils utilisent
tous le jeu de caractères NCHAR de la base de données. Ce type d'objet contient des données
utilisant le jeu de caractères nationaux.
Remarque : La taille maximale de tous les types de données LOB (BLOB, CLOB et
NCLOB) est la suivante : (4 gigaoctets – 1) * (valeur de CHUNK).
CHUNK est un attribut facultatif que vous pouvez définir en même temps qu'un objet LOB
(Large Object). Il indique le nombre d'octets à allouer pour la manipulation des objets LOB.
Si la taille n'est pas un multiple de la taille de bloc de la base de données, la base arrondit la
taille en octets au multiple suivant. Par exemple, si la taille de bloc de la base de données
est de 2048 et que la taille de CHUNK est de 2050, la base de données alloue 4 096 octets
(2 blocs). La valeur maximale est de 32768 (32 ko), c'est-à-dire la taille de bloc maximale
autorisée par la base de données Oracle. La taille de CHUNK par défaut correspond à un bloc
de base de données Oracle.
• BFILE : type de données contenant un pointeur vers un fichier binaire de grande taille
stocké en-dehors de la base. Il permet un accès d'E/S de type flux d'octets aux objets LOB
externes résidant sur le serveur de base de données. La taille maximale est de 4 gigaoctets.
• TIMESTAMP(fractional_seconds_precision) : type de données permettant
d'indiquer les valeurs année/mois/jour de la date, ainsi que les valeurs heure/minute/seconde
de l'heure, où fractional_seconds_precision correspond au nombre de chiffres
avec lesquels sont exprimées les fractions de seconde. Les valeurs acceptées sont comprises
entre 0 et 9 (la valeur par défaut étant 6).
Pour obtenir la liste complète des types de données intégrés et des types définis par l'utilisateur,
reportez-vous au manuel Oracle Database SQL Reference.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-10
Créer et modifier des tables
Indiquez le nom
de la table et le
schéma.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-11
Créer et modifier des tables (suite)
7. Entrez le nom du tablespace dans le champ Tablespace, ou cliquez sur l'icône
représentant une torche afin d'appeler la fonction de recherche.
8. Dans la région Columns, entrez le nom et le type de données des colonnes.
9. Cliquez sur OK. Un message de mise à jour apparaît, indiquant que la table a été
créée avec succès.
Modifier une table
Vous pouvez modifier une table avec Enterprise Manager, en suivant la procédure ci-
dessous. Dans l'exemple considéré, une colonne est ajoutée à une table.
1. Dans la page Tables, sélectionnez la table dans la liste des résultats, puis cliquez sur
Edit.
2. Dans la page Edit Table, cliquez sur le bouton Add 5 Table Columns. Une liste
modifiable de colonnes apparaît.
3. Entrez le nom, le type de données et la taille de la nouvelle colonne.
4. Cliquez sur Apply. Un message de mise à jour apparaît, indiquant que la table a été
modifiée avec succès.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-12
Schéma
Comprendre l'intégrité des données > Contraintes
Index
Vues
Séquences
Tables temp.
Dict. de données
REGIONS
REGION_ID (PK)
REGION_NAME
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-13
Comprendre l'intégrité des données (suite)
L'implémentation de la contrainte d'intégrité PRIMARY KEY par le serveur Oracle
garantit que les deux conditions suivantes sont vraies :
- Deux lignes d'une table ne comportent pas de valeurs en double dans la
colonne ou l'ensemble de colonnes désigné.
- Les colonnes de clé primaire n'autorisent pas les valeurs NULL. Autrement dit,
une valeur doit être présente dans les colonnes de clé primaire de chaque ligne.
En règle générale, la base de données applique les contraintes PRIMARY KEY par le
biais d'index. La contrainte de clé primaire créée pour la colonne DEPARTMENT_ID
de la table DEPARTMENTS est mise en oeuvre par la création implicite des éléments
suivants :
- un index unique sur cette colonne,
- une contrainte NOT NULL pour cette colonne.
• Contraintes d'intégrité référentielle : Différentes tables d'une base de données
relationnelle peuvent être liées par l'intermédiaire de colonnes communes. Les règles
qui régissent les relations entre les colonnes doivent être respectées. Les règles
d'intégrité référentielle garantissent que ces relations sont préservées.
Une contrainte d'intégrité référentielle impose que pour chaque ligne d'une table, la
valeur de la clé étrangère corresponde à une valeur d'une clé parent.
Par exemple, une clé étrangère est définie sur la colonne DEPARTMENT_ID de la
table EMPLOYEES. Elle permet de s'assurer que chaque valeur de cette colonne
correspond à une valeur de la clé primaire de la table DEPARTMENTS. Par
conséquent, il ne peut exister aucun numéro de département erroné dans la colonne
DEPARTMENT_ID de la table DEPARTMENTS.
Il existe un autre type de contrainte d'intégrité référentielle, appelé contrainte
d'intégrité auto-référentielle. Ce type de clé étrangère fait référence à une clé parent
qui se trouve dans la même table.
• Contraintes CHECK : Une contrainte d'intégrité CHECK appliquée sur une colonne
ou un ensemble de colonnes impose qu'une condition particulière soit vraie ou
inconnue pour chaque ligne de la table. Si une instruction LMD (Langage de
manipulation de données) entraîne une valeur false pour l'évaluation de la
contrainte CHECK, l'instruction est annulée (rollback).
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-14
Définir des contraintes
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-15
Violations de contrainte
Violations de contrainte
Une violation de contrainte se produit lors de l'exécution d'une instruction LMD (Langage de
manipulation de données) qui ne respecte pas la contrainte. Les violations de contrainte
peuvent revêtir diverses formes. Elles concernent notamment les points suivants :
• Unicité : Un utilisateur tente d'inclure des valeurs en double dans une colonne à laquelle
est appliquée une contrainte UNIQUE (lorsqu'une colonne constitue la clé primaire ou
lorsqu'elle est associée à u index unique).
• Intégrité référentielle : La règle imposant que toutes les lignes enfant aient une ligne
parent est enfreinte.
• CHECK : Un utilisateur tente de stocker dans une colonne une valeur qui n'est pas
conforme aux règles appliquées à cette colonne. Par exemple, une contrainte CHECK
imposant un nombre positif est appliquée à une colonne AGE.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-16
Etats possibles d'une contrainte
Pas
d'instruction
LMD
Nouvelles données
Données existantes
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-17
Etats possibles d'une contrainte (suite)
DISABLE NOVALIDATE : Les données ne sont pas vérifiées, qu'elles soient nouvelles ou
existantes. Elles peuvent ne pas être conformes à la contrainte. Cet état est souvent utilisé
lorsque les données proviennent d'une source déjà validée et que la table est en lecture
seule (aucune nouvelle donnée n'est entrée dans la table).
DISABLE VALIDATE : Lorsqu'une contrainte se trouve dans cet état, il n'est pas possible
de modifier les colonnes auxquelles elle s'applique. En effet, il serait illogique d'avoir
validé les données existantes, puis d'autoriser la saisie de données non vérifiées dans la
table. Cet état est souvent utilisé lorsque les données existantes doivent faire l'objet d'une
validation mais ne seront pas modifiées ultérieurement, et que le recours à l'index n'est pas
nécessaire pour assurer de bonnes performances.
ENABLE NOVALIDATE : Les nouvelles données doivent être conformes à la contrainte
mais les données existantes se trouvent dans un état inconnu. Cet état est fréquemment
utilisé pour permettre la correction des violations de contrainte existantes tout en
empêchant de nouvelles violations de se produire dans le système.
ENABLE VALIDATE : Toutes les données doivent être conformes à la contrainte, qu'elles
soient nouvelles ou existantes. Il s'agit de l'état standard d'une contrainte (état par défaut).
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-18
Vérification des contraintes
La vérification des contraintes s'effectue :
• lors de l'exécution de l'instruction pour les contraintes
immédiates
• lors de l'exécution de la commande COMMIT pour les
contraintes différées
Instruction LMD, suivie par la commande COMMIT
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-19
Créer des contraintes via des
instructions SQL : Exemples
ALTER TABLE countries
a
ADD (UNIQUE(country_name) ENABLE NOVALIDATE);
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-20
Afficher les colonnes d'une table
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-21
Afficher le contenu d'une table
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-22
Actions sur les tables
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-23
Supprimer une table
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-24
Vider une table
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-25
Schéma
Index Contraintes
> Index
Vues
Séquences
Tables temp.
Dict. de données
… WHERE key = 22
Pointeur
Clé de ligne
22
22
Index Table
Index
Les index sont des structures facultatives associées aux tables. Ils peuvent être créés afin
d'améliorer les performances de mise à jour et d'extraction des données. Un index Oracle
fournit un chemin d'accès direct vers une ligne de données.
Les index peuvent être créés sur une ou plusieurs colonnes d'une table. Dès lors qu'un index
créé, il est automatiquement tenu à jour et utilisé par le serveur Oracle. Les mises à jour des
données d'une table, telles que l'ajout, la mise à jour ou la suppression de lignes, sont
automatiquement propagées vers tous les index concernés, de manière totalement transparente
pour l'utilisateur.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-26
Types d'index
Types d'index
Les types d'index les plus courants sont les suivants :
• B-tree
• Bitmap
Les valeurs de clé d'un index B-tree sont stockées dans une arborescence équilibrée (Balanced
tree - B-tree), ce qui permet d'effectuer des recherches binaires rapides.
Un index bitmap inclut un bitmap pour chaque valeur de clé indexée. Chaque bit du bitmap
correspond à une ligne de la table indexée. Cela permet d'effectuer des recherches rapides
lorsqu'il existe un nombre restreint de valeurs distinctes (on dit que la colonne indexée
présente une faible cardinalité). Prenons comme exemple l'indicateur du sexe d'une personne.
Cet indicateur ne peut comporter que les valeurs "M" et "F". La recherche ne porte donc que
sur deux bitmaps. En revanche, supposons qu'un index bitmap soit utilisé pour une colonne
phone_number. Il faudrait gérer et explorer un si grand nombre de bitmaps que l'opération
deviendrait totalement inefficace. Par conséquent, n'utilisez les index bitmap que pour les
colonnes de faible cardinalité.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-27
Index B-Tree
Entrée d'index
Racine
Branche
Index B-Tree
Structure d'un index B-tree
Au sommet de l'index se trouve la racine, qui contient les entrées pointant vers le niveau
suivant de l'index. Le niveau suivant comprend les blocs branche, qui pointent vers les blocs
du niveau suivant de l'index. Au plus bas niveau se trouvent les noeuds feuille, qui
contiennent les entrées d'index pointant vers les lignes de la table. Les blocs feuille font l'objet
d'une liaison double, afin de faciliter le balayage de l'index dans l'ordre croissant ou
décroissant des valeurs de clé.
Format des entrées d'index
Une entrée d'index est composée des éléments suivants :
• Un en-tête, dans lequel sont stockés le nombre de colonnes et les informations de
verrouillage.
• Des paires longueur-valeur qui définissent la taille d'une colonne de clé suivie de la
valeur de la colonne (le nombre de paires de ce type ne doit pas excéder le nombre de
colonnes présentes dans l'index).
• Le ROWID d'une ligne qui contient les valeurs de clé.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-28
Index B-Tree (suite)
Caractéristiques des entrées d'index
Dans un index B-tree généré sur une table non partitionnée :
• Les valeurs de clé sont répétées si plusieurs lignes comportent la même valeur de
clé, à moins que l'index ne soit compressé.
• Aucune entrée d'index ne correspond à une ligne dont les colonnes de clé comportent
toutes la valeur NULL. Par conséquent, une clause WHERE stipulant la valeur NULL
entraîne toujours un balayage complet de table (full table scan).
• Le ROWID restreint est utilisé pour pointer vers les lignes de la table car toutes les
lignes appartiennent au même segment.
Effet des opérations LMD sur un index
Le serveur Oracle tient à jour l'ensemble des index lorsque des opérations LMD (Langage
de manipulation de données) sont effectuées sur la table. Les commandes LMD agissent
de la façon suivante sur un index :
• Les opérations d'insertion entraînent l'insertion d'une entrée d'index dans le bloc
approprié.
• La suppression d'une ligne ne cause que la suppression logique de l'entrée d'index.
L'espace utilisé par la ligne supprimée n'est pas disponible pour les nouvelles entrées
tant que toutes les entrées du bloc n'ont pas été supprimées.
• Les mises à jour effectuées dans les colonnes de clé provoquent une suppression
logique et une insertion dans l'index. Le paramètre PCTFREE n'a aucune incidence
sur l'index, sauf lors de la phase de création. Il est possible d'ajouter une nouvelle
entrée à un bloc d'index, et ce même si ce dernier dispose d'une quantité d'espace
inférieure à celle indiquée par PCTFREE.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-29
Index bitmap
Table Fichier 3
Bloc 10
Bloc 11
Index Bloc 12
ROWID ROWID
Clé de début de fin 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>
Index bitmap
Il est plus judicieux d'utiliser des index bitmap que des index B-tree dans les cas suivants :
• Lorsqu'une table contient des millions de lignes et que les colonnes de clé présentent
une faible cardinalité (c'est-à-dire que chaque colonne de clé contient un nombre très
restreint de valeurs distinctes). Par exemple, les index bitmap peuvent être préférables
aux index B-tree pour les colonnes concernant le sexe des personnes et leur situation
familiale dans une table qui contient des enregistrements de passeports.
• Lorsque les interrogations utilisent souvent une combinaison de plusieurs conditions
WHERE incluant l'opérateur OR.
• Lorsque les colonnes de clé ne sont utilisées qu'en lecture ou font rarement l'objet de
mises à jour.
Structure d'un index bitmap
Un index bitmap est organisé comme un index B-tree, à ceci près que les noeuds feuille
stockent un bitmap pour chaque valeur de clé et non une liste de ROWID. Chaque bit du
bitmap correspond à un ROWID possible. Le bit a la valeur 1 lorsque la ligne correspondante
contient la valeur de clé.
Comme l'illustre le diagramme de la diapositive, un noeud feuille d'un index bitmap contient
les éléments suivants :
• Un en-tête, qui contient le nombre de colonnes et les informations de verrouillage.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-30
Index bitmap (suite)
Structure d'un index bitmap (suite)
• Des valeurs de clé consistant en des paires longueur-valeur pour chaque colonne de
clé. Dans l'exemple de la diapositive, la clé est une colonne unique, et la première
entrée comporte la valeur de clé Blue.
• Un ROWID de début. Dans l'exemple considéré, il correspond au numéro de bloc dix,
au numéro de ligne zéro et au numéro de fichier trois.
• Un ROWID de fin. Dans l'exemple, il correspond au numéro de bloc douze, au
numéro de ligne huit et au numéro de fichier trois.
• Un segment bitmap composé d'une chaîne de bits. (Un bit est égal à 1 lorsque la
ligne correspondante contient la valeur de clé. Sinon, il est égal à 0. Le serveur
Oracle utilise une technique de compression brevetée pour le stockage des segments
bitmap.)
Le ROWID de début est le ROWID de la première ligne vers laquelle pointe le segment
bitmap. Autrement dit, le premier bit du bitmap correspond à ce ROWID, le deuxième bit
correspond à la ligne suivante du bloc et le ROWID de fin pointe vers la dernière ligne de
la table incluse dans le segment bitmap. Les index bitmap utilisent des ROWID restreints.
Utilisation d'un index bitmap
La structure B-tree est utilisée pour repérer les noeuds feuille qui contiennent les segments
bitmap pour une valeur donnée de la clé. Le ROWID de début et les segments bitmap
permettent de repérer les lignes qui contiennent la valeur de clé.
Lorsque la colonne de clé de la table est modifiée, les bitmaps doivent également être
modifiés. Cette opération entraîne le verrouillage des segments bitmap concernés. Les
verrous externes (locks) sont appliqués à l'ensemble du segment bitmap. Par conséquent,
une ligne comprise dans le bitmap ne peut pas être mise à jour par d'autres transactions
tant que la première transaction n'est pas terminée.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-31
Options relatives aux index
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-32
Options relatives aux index (suite)
Un index basé sur une fonction procède à l'indexation de la valeur renvoyée par une
fonction. Il peut s'agir d'une fonction SQL intégrée, d'une fonction PL/SQL fournie ou
d'une fonction définie par l'utilisateur. Ainsi, le serveur n'a pas besoin d'appeler la
fonction pour chaque valeur de clé lorsqu'il effectue une recherche sur l'expression
indexée. L'exemple suivant permet de baser l'index sur le volume renvoyé par la
fonction pour chaque arbre selon le type (species), la hauteur (height) et la
circonférence (circumference), qui correspondent à des colonnes de la table
TREES :
CREATE INDEX tree_vol_ix ON
TREES(volume(species,height,circumference));
Par conséquent, toute interrogation dont la clause WHERE contient l'expression
volume(species,height,circumference) peut utiliser cet index. Cela
réduit considérablement son temps d'exécution puisque le calcul de volume est déjà
effectué pour chaque arbre. Les index basés sur une fonction sont tenus à jour
automatiquement, comme tout autre index standard.
Vous pouvez utiliser un index compressé pour réduire la consommation d'espace disque
lors de la phase d'exécution. Les valeurs de clé répétées étant supprimées, une même
quantité d'espace disque peut contenir davantage d'entrées d'index. Le système peut
ainsi lire un plus grand nombre d'entrées sur le disque dans un même laps de temps.
Une compression et une décompression doivent être effectuées respectivement pour les
opérations d'écriture et de lecture de l'index.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-33
Créer des index
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-34
Schéma
Qu'est-ce qu'une vue ? Contraintes
Index
> Vues
Table LOCATION …
Table COUNTRY
Vue
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-35
Créer des vues
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-36
Schéma
Séquences Contraintes
Index
Vues
> Séquences
Une séquence est un mécanisme de génération Tables temp.
automatique de nombres entiers selon Dict. de données
un modèle spécifique.
• Une séquence comporte un nom, 1
2
qui est utilisé pour la demande de 3
4
la valeur suivante. 5
• Une séquence n'est associée à
aucune table ou colonne particulière.
• La progression peut s'effectuer de manière
croissante ou décroissante.
• L'intervalle entre les numéros peut être de n'importe
quelle taille.
• Une séquence peut effectuer une boucle lorsqu'une
limite est atteinte.
Copyright © 2005, Oracle. Tous droits réservés.
Séquences
Pour obtenir la valeur suivante d'une séquence, vous devez référencer celle-ci par son nom.
En effet, il n'existe aucune association entre une séquence et une table ou une colonne.
Un numéro fourni par une séquence n'est jamais émis de nouveau, sauf si la séquence est
définie comme étant cyclique. Une application demande parfois une valeur qu'elle n'utilise
jamais ou qu'elle ne stocke jamais dans la base de données. Il peut ainsi y avoir des décalages
entre les numéros figurant dans la table de stockage.
La mise en mémoire cache des numéros de séquence améliore les performances du système
car un ensemble de numéros est préalloué et conservé en mémoire afin de garantir un accès
rapide. En cas d'échec de l'instance, les numéros de séquence mis en mémoire cache ne sont
pas utilisés, ce qui génère des décalages.
Remarque : Si une application interdit les décalages, elle doit implémenter un générateur de
numéros personnalisé. Cette méthode risque toutefois de réduire considérablement les
performances du système. Si vous utilisez une table pour stocker une valeur, et que vous
incrémentez cette valeur et mettez à jour la table pour chaque demande, vous générez un
goulet d'étranglement au niveau du système tout entier. En effet, chaque session doit attendre
que le mécanisme soit disponible, et ce dernier ne peut traiter qu'une demande à la fois afin de
garantir qu'aucune valeur n'est en double ou manquante.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-37
Créer une séquence
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-38
Créer une séquence (suite)
• Interval : Indiquez l'intervalle entre les numéros de séquence. Cette valeur entière
peut être un entier positif ou négatif quelconque, différent de zéro. Elle peut
comporter 28 chiffres au plus. La valeur par défaut est de un.
• Initial : Indiquez le premier numéro de séquence à générer. Une séquence croissante
générera des numéros supérieurs à cette valeur, tandis qu'une séquence décroissante
générera des numéros inférieurs.
• Cycle Values : Lorsqu'une séquence croissante atteint sa valeur maximale, elle
poursuit en générant à nouveau sa valeur minimale. Lorsqu'une séquence
décroissante atteint sa valeur minimale, elle poursuit en générant à nouveau sa
valeur maximale. Lorsque vous ne choisissez pas l'option Cycle Values, une erreur
est renvoyée si vous tentez d'obtenir un numéro alors que toutes les valeurs possibles
pour la séquence sont épuisées.
• Order Values : Cette option garantit que les numéros de séquence sont générés dans
l'ordre dans lequel ils sont demandés. Cette clause s'avère utile si vous utilisez les
numéros de séquence comme valeurs d'horodatage. Il n'est généralement pas
essentiel d'assurer l'ordre des numéros lorsqu'une séquence est utilisée pour générer
des clés primaires. Cette option n'est nécessaire que pour garantir l'ordre de
génération si vous utilisez la base de données Oracle avec Real Application Clusters.
• Cache Options : Indiquez le nombre de numéros de séquence que la base de
données Oracle préalloue et conserve en mémoire pour un accès plus rapide. Cette
valeur entière peut comporter 28 chiffres au plus. La valeur minimale de ce
paramètre est 2. Pour les séquences cycliques, cette valeur doit être inférieure au
nombre de valeurs du cycle. Vous ne pouvez pas mettre en cache plus de valeurs que
n'en comporte un cycle donné de numéros de séquence.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-39
Utiliser une séquence
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-40
Schéma
Tables temporaires Contraintes
Index
Vues
Séquences
> Tables temp.
Une table temporaire : Dict. de données
Tables temporaires
Vous pouvez utiliser des tables temporaires lorsque vous avez besoin de stocker des données
de manière privée pour la réalisation d'une tâche, et que vous souhaitez supprimer ces
données une fois la tâche terminée, à la fin d'une transaction ou d'une session. Les tables
temporaires vous évitent d'avoir à masquer vos données pour les autres sessions et à
supprimer les données générées lorsque vous avez terminé. Les seules données d'une table
temporaire visibles par une session sont celles que la session a insérées.
Une table temporaire peut être propre à une transaction ou à une session. Dans le cas des
tables temporaires propres à une transaction, les données sont présentes pendant toute la durée
de la transaction. Pour les tables temporaires propres à une session, elles sont présentes
pendant toute la durée de la session. Dans les deux cas, les données insérées par une session
sont réservées à la session. Une session ne peut afficher et modifier que les données qui lui
sont propres. Par conséquent, aucun verrou LMD n'est appliqué aux données d'une table
temporaire. Les clauses suivantes contrôlent la durée de vie des lignes :
• ON COMMIT DELETE ROWS : Indique que la durée de vie des lignes insérées
correspond à la durée de la transaction uniquement.
• ON COMMIT PRESERVE ROWS : Indique que la durée de vie des lignes insérées
correspond à la durée de la session.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-41
Tables temporaires (suite)
L'instruction CREATE GLOBAL TEMPORARY TABLE permet de créer une table
temporaire. Vous pouvez créer des index, des vues et des déclencheurs (triggers) sur des
tables temporaires. Vous pouvez également recourir aux utilitaires d'export et d'import ou
à Data Pump 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.
Les données des tables temporaires sont supprimées suite aux événements mentionnés
précédemment. Il est aussi possible de forcer la suppression des données à l'aide de la
commande TRUNCATE TABLE. Cette opération supprime toutes les données que vous
avez insérées. Elle s'avère plus efficace que la commande DELETE.
Vous pouvez créer des index, des vues et des déclencheurs sur les tables temporaires.
Pour créer des tables temporaires à l'aide d'Enterprise Manager, cliquez sur l'option
Temporary, dans la page Create Table: Table Organization. Cliquez sur Continue. La page
qui apparaît vous permet de préciser si la table temporaire est propre à la session ou à une
transaction. Le champ Tablespace est désactivé car une table temporaire est toujours créée
dans le tablespace temporaire de l'utilisateur. Aucun autre tablespace ne peut être indiqué.
Remarque : Le mot-clé GLOBAL suit la terminologie définie par la norme ISO
(International Organization for Standardization) pour le code SQL.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-42
Tables temporaires : Utilisation
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-43
Schéma
Dictionnaire de données : Contraintes
Index
Présentation Vues
Séquences
Tables temp.
> Dict. de données
Tables
Index
Vues
Utilisateurs
Schémas
Procédures
etc.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-44
Vues du dictionnaire de données
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-45
Vues du dictionnaire de données (suite)
D'une manière générale, chaque ensemble de vues est un sous-ensemble de l'ensemble
de vues nécessitant des privilèges supérieurs, au niveau des lignes et des colonnes.
Toutefois, les vues d'un ensemble donné n'ont pas toutes leur pendant dans les autres
ensembles de vues. Cela dépend de la nature des informations contenues dans la vue.
Par exemple, il existe une vue DBA_LOCK mais pas de vue ALL_LOCK. En effet, seul
un administrateur de base de données (DBA) est intéressé par les données relatives aux
verrous externes (locks). Assurez-vous de choisir l'ensemble de vues adapté à vos
besoins. Même si vous êtes autorisé à accéder aux vues DBA, vous pouvez parfois
interroger la version USER d'une vue lorsque vous souhaitez visualiser les objets dont
vous êtes le propriétaire sans inclure d'autres objets dans l'ensemble de résultats.
Les vues DBA_ peuvent être interrogées par les utilisateurs disposant du privilège
SYSDBA ou SELECT ANY DICTIONARY.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-46
Dictionnaire de données :
Exemples d’utilisation
a
SELECT table_name, tablespace_name FROM
user_tables;
d DESCRIBE dba_indexes;
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-47
Synthèse
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-48
Présentation de l'exercice :
Administrer les objets de schéma
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 7-49
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Gérer les données et la simultanéité
d'accès aux données
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Objectifs
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-2
> SQL
Manipuler les données par PL/SQL
Verrous
l'intermédiaire du langage SQL . externes
1 row created.
1 row updated.
1 row deleted.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-3
Commande INSERT
Commande INSERT
L'instruction INSERT de base crée une ligne à la fois. Via l'utilisation d'une sous-
interrogation SELECT, vous pouvez faire en sorte que la commande INSERT copie des
lignes d'une table vers une autre. Cette méthode est également appelée instruction INSERT
SELECT. L'exemple de la diapositive ci-dessus utilise la commande INSERT suivante :
insert into dept_80 (select * from employees
where department_id = 80);
Dans cet exemple, la table dept_80 présente exactement la même structure que la table
employees. Si tel n'est pas le cas, vous pouvez nommer les colonnes de chaque table. Les
valeurs sélectionnées dans l'instruction SELECT sont associées respectivement aux colonnes
de la table dans laquelle elles sont insérées. La correspondance des valeurs des colonnes suit
l'ordre dans lequel les colonnes sont nommées dans les instructions INSERT et SELECT. Il
suffit que les types de données correspondent. Par exemple :
insert into just_names (first, last)
(select first_name, last_name from employees);
Dans cet exemple, la table just_names ne comporte que deux colonnes qui présentent le
même type de données que les colonnes first_name et last_name de la table
employees.
La méthode INSERT SELECT permet de charger en masse des données d'une ou de plusieurs
tables vers une autre table.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-4
Commande UPDATE
Commande UPDATE
La commande UPDATE est utilisée pour modifier les lignes existantes d'une table. Le nombre
de lignes modifiées par la commande UPDATE dépend de la condition WHERE. Si la clause
WHERE est omise, toutes les lignes sont modifiées. Si aucune ligne ne satisfait à la condition
WHERE, aucune ligne n'est modifiée.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-5
Commande DELETE
Commande DELETE
La commande DELETE est utilisée pour supprimer des lignes existantes d'une table. Le
nombre de lignes supprimées par la commande DELETE dépend de la condition WHERE. Si la
clause WHERE est omise, toutes les lignes sont supprimées. Si aucune ligne ne satisfait à la
condition WHERE, aucune ligne n'est supprimée. Comme le montre l'exemple de la diapositive
ci-dessus, lorsqu'aucune ligne n'est supprimée, aucune erreur n'est générée. Le message
renvoyé indique simplement qu'aucune ligne n'a été supprimée de la table.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-6
Commande MERGE
Commande MERGE
La commande MERGE réunit en une commande unique les opérations de mise à jour
(UPDATE) et d'insertion (INSERT). Elle permet de fusionner les données d'une source avec
celles d'une autre source, et éventuellement d'insérer de nouvelles lignes ou de mettre à jour
certaines colonnes d'une ligne existante.
Considérons l'exemple de la diapositive. Certaines des données de la table JOBS sont
semblables à ce qui suit :
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-7
Commande MERGE (suite)
La table JOBS_ACQUISITION contient les données suivantes :
La commande MERGE insère dans la table JOBS toute ligne qui comporte une nouvelle
valeur JOB_ID, et met à jour la ligne JOBS existante avec les données JOB_TITLE si
l'ID JOB_ID existe déjà. Ainsi, le poste "President" est remplacé par "VP", et les
nouveaux postes "SA" et "DBA" sont ajoutés.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-8
Commandes COMMIT et ROLLBACK
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-9
Langage PL/SQL SQL
> PL/SQL
Verrous
externes
Langage PL/SQL
Le langage PL/SQL est un langage de programmation Oracle de quatrième génération, qui
fournit des extensions procédurales du langage SQL. Il offre un environnement de
programmation commun pour les bases de données et les applications Oracle, quel que soit le
système d'exploitation ou la plate-forme matérielle.
Grâce au langage PL/SQL, vous pouvez manipuler les données à l'aide d'instructions SQL et
contrôler le flux des programmes par le biais de structures procédurales telles que IF-THEN,
CASE et LOOP. Vous pouvez également déclarer des constantes et des variables, définir des
procédures et des fonctions, utiliser des ensembles et des types d'objet, ou encore intercepter les
erreurs lors de l'exécution. Un programme PL/SQL peut également appeler des programmes
écrits dans d'autres langages, tels que C, C++ et Java.
Le langage PL/SQL permet par ailleurs de protéger les données. Pour pouvoir effectuer un appel,
l'appelant n'a pas besoin de connaître les structures de données lues ou manipulées. Il n'est pas
non plus obligé de disposer de droits d'accès pour ces objets. Il lui suffit d'être autorisé à exécuter
le programme PL/SQL. Il existe également un autre mode de permission pour appeler un
programme PL/SQL : l'appelant doit être autorisé à réaliser toutes les instructions exécutées par
le programme appelé.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-10
Langage PL/SQL (suite)
Etant donné qu'il s'exécute dans la base de données, le code PL/SQL est très efficace pour
les opérations impliquant des volumes importants de données et limite le trafic réseau des
applications.
Pour plus d'informations sur les structures procédurales et les utilisations du langage
PL/SQL, reportez-vous au manuel PL/SQL User’s Guide and Reference.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-11
Administrer les objets PL/SQL
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-12
Objets PL/SQL
Objets PL/SQL
• Package : Un package est un ensemble de procédures et de fonctions liées de façon
logique. Cette partie d'un package est également appelée spécification et constitue
l'interface avec les applications. Elle déclare les types, variables, constantes, exceptions,
curseurs et sous-programmes pouvant être utilisés.
• Corps du package : Le corps définit de manière complète les curseurs et les sous-
programmes, implémentant ainsi la spécification. Il contient les détails de
l'implémentation et les déclarations privées, lesquels sont masqués pour l'appelant.
• Corps du type : Il s'agit de l'ensemble de méthodes (procédures et fonctions) associées
à des types de données définis par l'utilisateur. Pour plus d'informations sur les types de
données définis par l'utilisateur, reportez-vous au manuel Oracle Database Application
Developer’s Guide—Object Relational Features.
• Procédure : Une procédure est un bloc PL/SQL qui effectue une opération spécifique.
• Fonction : Une fonction est un bloc PL/SQL qui renvoie une valeur unique à l'aide de la
commande PL/SQL RETURN. Il s'agit d'une procédure qui comporte une valeur
renvoyée.
• Déclencheur : Un déclencheur (trigger) est un bloc PL/SQL exécuté lorsqu'un
événement particulier se produit dans la base de données. Ces événements peuvent être
basés sur une table, par exemple lorsqu'une ligne est insérée dans la table. Il peut
également s'agir d'événements de base de données (lorsqu'un utilisateur se connecte à la
base de données, par exemple).
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-13
Fonctions
Fonctions
Les fonctions PL/SQL sont généralement utilisées pour calculer une valeur. Il existe de
nombreuses fonctions intégrées, telles que SYSDATE, SUM, AVG et TO_DATE. Les
développeurs créent également leurs propres fonctions lors de l'écriture d'applications. Le
code d'une fonction PL/SQL doit contenir une instruction RETURN. Pour créer des fonctions
PL/SQL, vous devez entrer un nom, un schéma et un code source, comme l'indique la
diapositive ci-dessus.
La fonction compute_tax présentée dans la diapositive est créée à l'aide de la commande
SQL suivante :
CREATE OR REPLACE FUNCTION compute_tax (salary NUMBER)
RETURN NUMBER
AS
BEGIN
IF salary<5000 THEN
RETURN salary*.15;
ELSE
RETURN salary*.33;
END IF;
END;
/
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-14
Procédures
Procédures
Les procédures PL/SQL effectuent une action spécifique. A l'instar des fonctions, les
procédures peuvent accepter des valeurs en entrée et exécuter des instructions conditionnelles
telles que IF-THEN, CASE et LOOP.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-15
Packages
Spécification du package
Packages
Les packages sont des regroupements de fonctions et de procédures. Le regroupement de
fonctions et de procédures dans un même package présente des avantages en termes de
performances et de maintenance. Chaque package doit être constitué de deux objets de base
de données compilés séparément :
• Spécification du package : Cet objet (parfois appelé en-tête du package) est de type
PACKAGE et contient uniquement la définition des procédures, des fonctions et des
variables du package.
• Corps du package : Cet objet est de type PACKAGE BODY et contient le code
proprement dit des sous-programmes définis dans la spécification du package.
Les procédures et fonctions appelées à partir d'un package sont appelées par l'intermédiaire
d'une notation à points :
nom_package.nom_procédure ou nom_function
Pour le package présenté dans la diapositive ci-dessus, les sous-programmes peuvent être
appelés de la manière suivante :
SQL> SELECT money.compute_tax(salary) FROM hr.employees
WHERE employee_id=107;
SQL> EXECUTE money.give_raise_to_all;
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-16
Spécification et corps d'un package
Corps du package
Le corps du package présente les caractéristiques suivantes :
• Il est distinct de la spécification du package. Par conséquent, le code du corps peut être
modifié et recompilé sans que les autres objets qui dépendent de la spécification soient
marqués comme non valides.
• Il contient le code des sous-programmes définis dans la spécification du package. C'est à
ce stade qu'a lieu le travail. La spécification indique comment appeler les sous-
programmes dans le package. Le corps constitue la section de code.
• Il ne peut pas être compilé tant que la spécification du package n'a pas été compilée.
Vous pouvez créer une spécification sans corps, mais vous ne pouvez pas créer un corps
sans spécification.
• Il peut être encapsulé afin de masquer les détails du code. Wrap est un programme
autonome qui crypte le code source PL/SQL afin que vous puissiez fournir des
applications PL/SQL sans exposer le code source. Pour plus d'informations sur
l'utilisation de wrap, reportez-vous au manuel PL/SQL User’s Guide and Reference.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-17
Packages intégrés
Packages intégrés
Les packages PL/SQL intégrés fournis avec la base Oracle permettent l'accès à des fonctionnalités
de base de données étendues, telles que Advanced Queuing, les fonctions de cryptage et les
entrées/sorties (E/S) de fichiers. Ils comprennent également de nombreux utilitaires
d'administration et de maintenance.
Les packages utilisés par un administrateur dépendent du type d'application que la base de données
exécute. Voici quelques-uns des packages d'administration et de maintenance les plus courants :
• DBMS_STATS : Collecte, affichage et modification des statistiques destinées à l'optimiseur.
• DBMS_OUTPUT : Génération d'une sortie à partir d'un programme PL/SQL.
• DBMS_SESSION : Accès PL/SQL aux instructions ALTER SESSION et SET ROLE.
• DBMS_RANDOM : Génération de nombres aléatoires.
• DBMS_UTILITY : Obtention d'informations relatives à l'heure, au temps CPU et à la version.
Calcul d'une valeur de hachage (hash value) et réalisation de nombreuses autres
fonctionnalités.
• DBMS_SCHEDULER : Fonctions et procédures de planification pouvant être appelées à partir
de n'importe quel programme PL/SQL.
• DBMS_CRYPTO : Cryptage et décryptage des données de la base.
• UTL_FILE : Opérations de lecture et d'écriture dans les fichiers du système d'exploitation à
partir d'un programme PL/SQL.
Remarque : Pour plus d'informations sur ces packages intégrés ou sur d'autres packages, reportez-
vous au manuel PL/SQL Packages and Types Reference.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-18
Déclencheurs
Déclencheurs
Les déclencheurs (triggers) sont des objets de code PL/SQL stockés dans la base de données,
qui s'exécutent automatiquement lorsqu'un événement se produit. La base de données Oracle
permet d'utiliser de nombreuses actions comme événement déclencheur, par exemple
l'insertion dans une table, la connexion d'un utilisateur à la base, ou bien encore la tentative de
suppression d'une table ou de modification des paramètres d'audit.
Les déclencheurs peuvent appeler d'autres procédures ou fonctions. Il est préférable que le
code d'un déclencheur soit très court. Placez dans un package distinct tout élément qui
nécessite davantage de code.
Les administrateurs de base de données utilisent des déclencheurs pour faciliter l'audit basé
sur les données (ce qui sera étudié dans le chapitre "Implémenter la sécurité de la base de
données Oracle"), pour appliquer des contraintes complexes et pour automatiser de
nombreuses tâches. Par exemple, le déclencheur SECURE_EMPLOYEES illustré dans la
diapositive ci-dessus enregistre toutes les instructions LMD exécutées sur une table.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-19
Evénements déclencheurs
Evénements déclencheurs
De nombreux événements peuvent servir de déclencheur (trigger). Ils sont répartis en trois
catégories.
• Les déclencheurs de type événement LMD s'exécutent lorsque les instructions modifient
des données.
• Les déclencheurs de type événement LDD s'exécutent lorsque les instructions créent un
objet ou modifient un objet de quelque manière que ce soit.
• Les déclencheurs de type événement de base de données s'exécutent lorsque certaines
actions se produisent dans la base de données.
Pour la plupart des déclencheurs, vous pouvez indiquer si l'exécution doit avoir lieu avant ou
après l'événement. Un déclencheur LMD peut être conçu de manière à s'exécuter une seule
fois pour l'instruction, ou pour chaque ligne modifiée.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-20
Verrous externes SQL
PL/SQL
> Verrous
externes
• Les verrous externes empêchent plusieurs
sessions de modifier les mêmes données
en même temps.
• Ils sont obtenus automatiquement au niveau
le plus bas possible pour une instruction donnée.
• Ils n'y a pas d'escalade des verrous.
Transaction 1 Transaction 2
Verrous externes
Avant que la base de données n'autorise une session à modifier des données, la session doit
d'abord verrouiller ces données. Un verrou externe (lock) accorde à la session le contrôle
exclusif des données, de sorte qu'aucune autre transaction ne puisse modifier les données
verrouillées jusqu'à la libération du verrou.
Les transactions peuvent verrouiller certaines lignes de données, plusieurs lignes ou même
des tables entières. Oracle Database 10g prend en charge le verrouillage manuel et le
verrouillage automatique. Les verrous obtenus automatiquement choisissent toujours le
niveau de verrouillage le plus bas possible, afin de limiter les conflits potentiels avec d'autres
transactions.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-21
Mécanisme de verrouillage
• Haut niveau de simultanéité des données :
– Verrous au niveau ligne pour les insertions,
les mises à jour et les suppressions
– Aucun verrou externe nécessaire pour
les interrogations
• Gestion automatique des files d'attente
• Verrous détenus jusqu'à la fin de la transaction
(avec l'opération COMMIT ou ROLLBACK)
Transaction 1 Transaction 2
Mécanisme de verrouillage
Le mécanisme de verrouillage est conçu pour fournir le degré maximal de simultanéité
d'accès aux données dans la base. Les transactions qui modifient des données acquièrent des
verrous externes (locks) au niveau ligne plutôt qu'au niveau bloc ou table. Les modifications
apportées aux objets (telles que les déplacements de tables) obtiennent des verrous externes
au niveau objet, plutôt qu'au niveau de la base de données complète ou du schéma.
Les interrogations de données ne nécessitent pas de verrous externes et une interrogation
réussit même si quelqu'un a verrouillé les données (en effet, c'est toujours la valeur originale
avant verrouillage qui est affichée, reconstruite à partir des informations d'annulation).
Lorsque plusieurs transactions doivent verrouiller la même ressource, la première transaction
qui demande le verrou externe l'obtient. Les autres transactions attendent jusqu'à la fin de la
première transaction. Le mécanisme de mise en file d'attente est automatique et ne nécessite
aucune intervention de l'administrateur.
Tous les verrous externes sont libérés à la fin d'une transaction. Les transactions sont
terminées lorsqu'une opération de validation (COMMIT) ou d'annulation (ROLLBACK) est
exécutée. En cas d'échec d'une transaction, le processus en arrière-plan qui annule
automatiquement les modifications apportées par la transaction libère également tous les
verrous détenus par cette transaction.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-22
Simultanéité d'accès aux données
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-24
Verrous LMD
Transaction 1 Transaction 2
SQL> UPDATE employees SQL> UPDATE employees
2 SET salary=salary*1.1 2 SET salary=salary*1.1
3 WHERE employee_id= 107; 3 WHERE employee_id= 106;
1 row updated. 1 row updated.
Verrous LMD
Chaque transaction LMD acquiert deux verrous :
• Un verrou sur ligne de type EXCLUSIVE pour les lignes mises à jour.
• Un verrou sur table de type ROW EXCLUSIVE pour la table mise à jour. Ce verrou
permet d'empêcher une autre session de verrouiller la table entière (par exemple pour la
supprimer ou la vider) pendant que la modification est apportée.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-25
Mécanisme de mise en file d'attente
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-26
Conflits de verrouillage
Transaction 1 Heure Transaction 2
UPDATE employees SET 9:00:00 UPDATE employees SET
salary=salary+100 WHERE salary=salary+100 WHERE
employee_id=100; employee_id=101;
1 row updated. 1 row updated.
UPDATE employees SET 9:00:05 SELECT sum(salary) FROM
COMMISION_PCT=2 WHERE employees;
employee_id=101; SUM(SALARY)
La session patiente en file -----------
d'attente en raison d'un conflit 692634
de verrouillage.
La session est toujours en Nombreuses opérations de
attente. 16:30:00 sélection, d'insertion, de mise à
jour et de suppression au cours
des dernières 7,5 heures, mais
pas de validation ni d'annulation.
1 row updated. 16:30:01 commit;
La session se poursuit.
Conflits de verrouillage
Les conflits de verrouillage sont fréquents, mais ils sont généralement résolus avec le temps
ou via le mécanisme de mise en file d'attente. Dans de rares cas, un conflit de verrouillage
peut nécessiter l'intervention de l'administrateur. Dans l'exemple de la diapositive ci-dessus, la
transaction 2 obtient un verrou externe (lock)sur une ligne unique à 9:00:00 et l'utilisateur
oublie de valider (commit) la transaction, laissant ainsi le verrou en place. A 9:00:05, la
transaction 1 tente de mettre à jour la table entière, opération qui nécessite un verrou sur
toutes les lignes. La transaction 1 est bloquée par la transaction 2 jusqu'à la validation de cette
dernière, à 16:30:01.
L'utilisateur qui tente d'effectuer la transaction 1 est amené à demander l'aide de
l'administrateur, qui doit détecter et résoudre le conflit.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-27
Causes possibles des conflits
de verrouillage
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-28
Détecter les conflits de verrouillage
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-29
Résoudre les conflits de verrouillage
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-30
Résoudre les conflits de verrouillage
à l'aide d'instructions SQL
Résultat :
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-31
"Verrous mortels"
Transaction 1 Transaction 2
"Verrous mortels"
Un "verrou mortel" (deadlock) est un type particulier de conflit de verrouillage. Un "verrou
mortel" apparaît lorsque plusieurs sessions attendent des données verrouillées par l'une d'elles.
Etant donné que chacune attend l'autre, aucune d'entre elles ne peut terminer la transaction
afin de résoudre le conflit.
La base de données Oracle détecte automatiquement les "verrous mortels" et met fin à
l'instruction en générant une erreur. En réponse à cette erreur, il convient de réaliser une
opération de validation (commit) ou d'annulation (rollback), ce qui a pour effet de libérer
touts les verrous de la session et de permettre à l'autre session de poursuivre sa transaction.
Dans la Transaction 1 de l'exemple de la diapositive, l'utilisateur doit effectuer une validation
ou une annulation en réponse à l'erreur "deadlock detected". S'il procède à une validation, il
doit soumettre à nouveau la deuxième mise à jour pour terminer sa transaction. S'il effectue
une annulation, il doit soumettre à nouveau les deux instructions pour réaliser la transaction.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-32
Synthèse
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-33
Présentation de l'exercice :
Gérer les données et la simultanéité
d'accès aux données
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 8-34
Gérer les données d'annulation
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Objectifs
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-2
Manipulation des données
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-3
Données d'annulation
Les données d'annulation (undo) :
• sont une copie des données d'origine avant une
modification
• sont capturées pour toute transaction qui modifie
des données
• sont conservées au minimum jusqu'à la fin
de la transaction
• permettent :
– les opérations d'annulation (rollback)
– les interrogations cohérentes en lecture
et les interrogations flashback
– la récupération suite à l'échec
de transactions
Utilisateur
Données d'annulation
La base de données Oracle enregistre les anciennes valeurs (données d'annulation) lorsqu'un
processus modifie des données. Ces données sont stockées telles qu'elles étaient avant la
modification. La capture des données d'annulation permet d'annuler (rollback) les données qui
ne sont pas validées (commit). Les données d'annulation permettent également la prise en
charge des interrogations cohérentes en lecture et des interrogations flashback.
Les interrogations cohérentes en lecture fournissent des résultats qui sont conformes aux
données telles qu'elles apparaissaient au début de l'interrogation. Pour qu'une interrogation
cohérente en lecture réussisse, les informations d'origine doivent être présentes sous forme
d'informations d'annulation. Tant que ces informations sont conservées, la base de données
Oracle peut recréer les données afin de satisfaire aux interrogations cohérentes en lecture.
Les interrogations flashback sont des interrogations qui demandent, dans un but précis, une
version des données telles qu'elles apparaissaient à un instant passé. Tant que les informations
d'annulation correspondant à cet instant sont conservées, les interrogations flashback peuvent
être exécutées.
Les données d'annulation sont également utilisées pour la récupération suite à l'échec de
transactions. Une transaction échoue lorsqu'une session utilisateur se termine de façon
anormale (suite à des erreurs réseau ou à la défaillance de l'ordinateur client, par exemple),
avant que l'utilisateur ait décidé de valider (commit) ou d'annuler (rollback) la transaction.
Les transactions peuvent également échouer suite à une défaillance de l'instance.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-4
Données d'annulation (suite)
En cas d'échec d'une transaction, le comportement le plus sûr est adopté. La base de
données Oracle supprime toutes les modifications effectuées par un utilisateur et restaure
les données d'origine.
Des informations d'annulation sont conservées pour chaque transaction, au moins jusqu'à
la fin de la transaction, qui se produit de l'une des manières suivantes :
• L'utilisateur annule la transaction.
• L'utilisateur termine la transaction (validation).
• La session utilisateur se termine de façon anormale (annulation).
• La session utilisateur se termine de façon normale et l'utilisateur quitte la session
(validation).
La quantité de données d'annulation conservées et leur durée de conservation dépendent
du degré d'activité et de la configuration de la base.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-5
Transactions et données d'annulation
Ancienne
valeur
Table
Segment Nouvelle
d'annulation valeur
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-6
Stockage des informations d'annulation
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-7
Données d'annulation et données
de journalisation
Données Données de
d'annulation journalisation
Enregistrement de Mode d'annulation d'une Mode de reproduction
modification d'une modification
Utilisation pour Annulation (rollback), Réimplémentation
cohérence en lecture des modifications de
la base de données
Stockage dans Segments d'annulation Fichiers de
journalisation
Protection contre Lectures incohérentes Pertes de données
dans les systèmes
multi-utilisateurs
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-8
Surveiller les informations d'annulation
DBA
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-9
Surveiller les informations d'annulation (suite)
Un autre problème auquel l'administrateur peut être confronté concernant les informations
d'annulation se produit lorsqu'une interrogation doit accéder à des informations
d'annulation qui ont déjà été remplacées par d'autres. Cela peut arriver lors de l'exécution
d'une interrogation longue ou d'une interrogation flashback. Lorsqu'une interrogation a
besoin d'un cliché (snapshot) de données à un instant passé et que la reconstruction du
cliché nécessite des données d'annulation qui n'existent plus, l'interrogation renvoie
l'erreur suivante :
ORA-01555: snapshot too old
Un tel cas de figure peut se produire lorsque la base Oracle présente à l'utilisateur une vue
cohérente des données telles qu'elles apparaissaient au début de l'exécution de
l'interrogation. Si une table comportant des modifications non validées fait l'objet d'une
interrogation, la base Oracle lit les données d'annulation afin d'obtenir la version validée
de ces données. C'est ce que l'on appelle la cohérence en lecture. Si l'exécution de
l'interrogation dure longtemps, il se peut que les modifications soient validées entre-temps
et que, par conséquent, les données d'annulation correspondantes soient libérées et
remplacées. Dans ce cas, l'interrogation longue ne peut plus obtenir une vue cohérente des
données telles qu'elles apparaissaient au début de son exécution. C'est pourquoi la période
de conservation des informations d'annulation doit être définie en fonction des
interrogations les plus longues.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-10
Administrer les informations d'annulation
L'administration des informations d'annulation consiste
à éviter les situations suivantes :
• Erreurs liées à une manque d'espace dans un tablespace
d'annulation :
– Dimensionnez correctement le tablespace d'annulation.
– Assurez-vous de la validation périodique des transactions
volumineuses.
• Erreurs "Snapshot too old"
– Configurez une période appropriée de conservation
des informations d'annulation.
– Dimensionnez correctement le tablespace d'annulation.
– Envisagez de garantir la période de conservation
des informations d'annulation.
Utilisation de la gestion automatique des annulations :
UNDO_MANAGEMENT=AUTO
UNDO_TABLESPACE=UNDOTBS1 DBA
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-11
Configurer la période de conservation
des informations d'annulation
DBA
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-12
Configurer la période de conservation des informations d'annulation (suite)
Les informations d'annulation sont divisées en trois catégories :
• Informations d'annulation non validées : Elles correspondent à une transaction en
cours d'exécution. Elles sont nécessaires au cas où l'utilisateur souhaiterait annuler
(rollback) la transaction ou en cas d'échec de celle-ci. Les informations d'annulation
non validées ne sont jamais écrasées par d'autres.
• Informations d'annulation validées : Ces informations ne sont plus nécessaires
pour une transaction en cours d'exécution, mais elles le sont pour la prise en charge
de la période de conservation. Elles sont également appelées informations
d'annulation "non expirées". Les informations d'annulation validées sont conservées
dès lors que cela n'entraîne pas l'échec d'une transaction active en raison d'un
manque d'espace.
• Informations d'annulation expirées : Ces informations ne sont plus nécessaires
pour une transaction en cours d'exécution. Elles sont remplacées lorsque l'espace est
requis par une transaction active.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-13
Garantir la période de conservation
des informations d'annulation
Garantie : 15 minutes
Données d'annulation
Taille actuelle
du tablespace
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-15
Utiliser Undo Advisor
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-16
Synthèse
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-17
Présentation de l'exercice :
Gérer les segments d'annulation
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2009, Oracle and/or its affiliatesฺ
Oracle Database 10g : Administration Workshop I 9-18