Vous êtes sur la page 1sur 904

Composants de l'architecture Oracle

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : dcrire l'architecture Oracle et ses principaux composants rpertorier les structures utilises dans la connexion d'un utilisateur une instance Oracle

1-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs Ce chapitre prsente l'architecture du serveur Oracle via l'tude des structures physiques, des structures mmoire, des processus et des structures logiques qui entrent en jeu dans l'tablissement d'une connexion une base de donnes, la cration d'une session et l'excution de commandes SQL.

Oracle9i Database Administration I 1-2

Prsentation des principaux composants


Processus utilisateur Zone de mmoire partage Cache "library" Processus serveur PGA Cache du dictionnaire de donnes

Instance Mmoire SGA


Cache de tampons de la base de donnes Zone de mmoire Java Tampon de journalisation Zone de mmoire LARGE POOL

PMON SMON DBWR LGWR

CKPT

Autres

Fichier de paramtres Fichier de mots de passe

Fichiers de donnes

Fichiers de contrle

Fichiers de journalisation

Fichiers de Journalisation archivs

Base de donnes

1-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation des principaux composants L'architecture Oracle comporte plusieurs composants principaux qui seront prsents plus loin dans ce chapitre. Serveur Oracle : Un serveur Oracle comporte plusieurs fichiers, processus et structures mmoire, mais ces lments ne sont pas tous utiliss dans le traitement des instructions SQL. Certains de ces lments amliorent les performances de la base de donnes, permettent de rcuprer la base en cas d'incident logiciel ou matriel ou excutent d'autres tches ncessaires la gestion de la base. Le serveur Oracle est constitu d'une instance Oracle et d'une base Oracle. Instance Oracle : Une instance Oracle est une combinaison des processus d'arrire-plan et des structures mmoire. Pour accder aux donnes de la base, il est ncessaire de dmarrer l'instance. A chaque dmarrage d'instance, une mmoire SGA (System Global Area) est alloue et des processus d'arrire-plan Oracle sont lancs. Ces processus excutent des fonctions pour le compte du processus appelant. Ils regroupent des fonctions qui, sinon, seraient gres par plusieurs programmes Oracle excuts par chaque utilisateur. Les processus d'arrire-plan effectuent des oprations d'entre/sortie et surveillent d'autres processus Oracle afin de permettre un plus grand paralllisme et d'amliorer les performances et la fiabilit. Base de donnes Oracle : La base Oracle est constitue de fichiers du systme d'exploitation, appels fichiers de base de donnes. Ces fichiers constituent l'espace de stockage physique des donnes de la base. Ils permettent de maintenir la cohrence des donnes et peuvent tre rcuprs en cas d'chec de l'instance.

Oracle9i Database Administration I 1-3

Prsentation des principaux composants (suite) Autres fichiers importants : Les fichiers qui ne sont pas des fichiers de base de donnes permettent de configurer l'instance, d'authentifier les utilisateurs ayant des privilges et de rcuprer la base en cas de dfaillance du disque. Processus utilisateur et serveur : Les processus utilisateur et serveur sont les principaux processus intervenant dans l'excution d'une instruction SQL. Nanmoins, d'autres processus peuvent tre utiliss par le serveur pour le traitement des instructions SQL. Autres processus : Les options telles que Advanced Queuing, Real Application Clusters, Shared Server, Advanced Replication, etc. utilisent d'autres processus. Ces processus sont prsents dans les cours qui traitent de ces options.

Oracle9i Database Administration I 1-4

Serveur Oracle

Un serveur Oracle : est un systme de gestion de base de donnes qui offre une mthode de gestion des informations ouverte, complte et intgre, est constitu d'une instance et d'une base de donnes Oracle.

Serveur Oracle

1-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Serveur Oracle Le serveur de bases de donnes est primordial pour la gestion des informations. En gnral, il doit grer de faon fiable dans un environnement multiutilisateur une quantit importante de donnes pour que de nombreux utilisateurs puissent y accder simultanment, et ce sans affecter les performances. Ce type de serveur doit galement empcher tout accs non autoris et proposer des solutions efficaces de rcupration des donnes aprs incident.

Oracle9i Database Administration I 1-5

Instance Oracle
Une instance Oracle : permet d'accder une base de donnes Oracle, n'ouvre qu'une seule base de donnes, est constitue de structures de processus d'arrireplan et de structures mmoire.
Zone de mmoire partage Cache "library" Cache du dictionnaire de donnes

Instance Mmoire SGA


Cache de tampons de la base de donnes Zone de mmoire Java Tampon de journalisation Zone de mmoire LARGE POOL

Structures mmoire

PMON SMON DBWR LGWR

CKPT

Autres

Structures de processus d'arrire-plan

1-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

Instance Oracle Une instance Oracle est constitue de la mmoire SGA et des processus d'arrire-plan utiliss pour grer une base de donnes. Une instance est identifie l'aide de mthodes propres chaque systme d'exploitation. Elle ne peut ouvrir et utiliser qu'une seule base la fois.

Oracle9i Database Administration I 1-6

Etablir une connexion et crer une session


Se connecter une instance Oracle : Etablir une connexion utilisateur Crer une session
Processus serveur Session cre Serveur Oracle

Connexion tablie Processus utilisateur

Utilisateur de la base de donnes


1-7 Copyright Oracle Corporation, 2001. Tous droits rservs.

Etablir une connexion et crer une session Pour soumettre des instructions SQL une base de donnes Oracle, l'utilisateur doit se connecter une instance. L'utilisateur dmarre un outil, par exemple SQL*Plus, ou excute une application dveloppe l'aide d'un outil tel qu'Oracle Forms. Cette application ou cet outil est excut en tant que processus utilisateur. Dans la configuration la plus simple, lorsqu'un utilisateur se connecte au serveur, un processus appel processus serveur est cr sur l'ordinateur qui excute le serveur Oracle. Ce processus communique avec l'instance Oracle pour le compte du processus utilisateur excut sur le client et il excute des instructions SQL pour le compte de l'utilisateur. Connexion Une connexion est un chemin de communication entre un processus utilisateur et un serveur Oracle. L'utilisateur d'une base de donnes peut se connecter un serveur Oracle de trois manires : Il peut se connecter au systme d'exploitation qui excute l'instance Oracle et dmarrer une application ou un outil qui accde la base de donnes sur ce systme. La communication est tablie l'aide des mcanismes IPC (interprocess communication) du systme d'exploitation hte.

Oracle9i Database Administration I 1-7

Etablir une connexion et crer une session Connexion (suite) Il peut dmarrer une application ou un outil sur un ordinateur local et se connecter, via un rseau, l'ordinateur qui excute l'instance Oracle. Dans cette configuration, appele client-serveur, un logiciel rseau permet l'utilisateur et au serveur Oracle de communiquer. Dans une connexion trois niveaux (three-tier), l'ordinateur de l'utilisateur communique, sur le rseau, avec une application ou un serveur rseau. Ce dernier est lui-mme connect via un rseau la machine qui excute l'instance Oracle. Par exemple, l'utilisateur excute un navigateur sur un ordinateur en rseau pour utiliser une application rsidant sur un serveur NT. Ce serveur extrait les donnes d'une base Oracle s'excutant sur un hte UNIX. Sessions Une session est une connexion spcifique d'un utilisateur un serveur Oracle. La session dmarre lorsque l'utilisateur est authentifi par le serveur Oracle et se termine lorsque l'utilisateur se dconnecte ou en cas de dconnexion anormale. Un utilisateur de la base de donnes peut ouvrir plusieurs sessions en parallle s'il se connecte simultanment partir de plusieurs outils, applications ou terminaux. Le serveur Oracle doit tre disponible pour que l'on puisse ouvrir une session, sauf dans les cas o certains outils spcialiss d'administration de base de donnes sont utiliss. Remarque : Le type de connexion dcrit ici, impliquant une correspondance un un entre l'utilisateur et le processus serveur, est appel connexion serveur ddi. Dans le cadre d'une configuration serveur partag, plusieurs processus utilisateur peuvent partager des processus serveur.

Oracle9i Database Administration I 1-8

Base de donnes Oracle


Une base de donnes Oracle : est un ensemble de donnes traites comme une seule et mme entit, est constitue de trois types de fichier.
Base de donnes Oracle Fichier de paramtres Fichier de mots de passe Fichiers Fichiers Fichiers Fichiers de de de de donnes contrle journa- Journalisation lisation archivs

1-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Base de donnes Oracle En rgle gnrale, une base de donnes a pour fonction de stocker des informations associes et de permettre leur extraction. Une base Oracle possde une structure logique et une structure physique. La structure physique correspond l'ensemble de fichiers du systme d'exploitation constituant la base de donnes. Une base Oracle est compose de trois types de fichier : les fichiers de donnes, qui contiennent les donnes de la base, les fichiers de journalisation (fichiers redo log), qui contiennent un enregistrement des modifications apportes la base afin de permettre la rcupration des donnes en cas de panne, les fichiers de contrle, qui contiennent les informations ncessaires au maintien et la vrification de l'intgrit de la base de donnes. Autres fichiers importants Le serveur Oracle utilise galement d'autres fichiers qui ne font pas partie de la base de donnes : Le fichier de paramtres dfinit les caractristiques d'une instance Oracle. Ce fichier contient, par exemple, des paramtres qui dfinissent la taille de certaines structures de la mmoire SGA. Le fichier de mots de passe authentifie les utilisateurs autoriss dmarrer et arrter une instance Oracle. Les fichiers de journalisation archivs sont des copies hors ligne (offline) des fichiers de journalisation, qui peuvent tre ncessaires la rcupration des donnes suite une dfaillance physique.

Oracle9i Database Administration I 1-9

Structure physique

La structure physique comprend trois types de fichier : Fichiers de contrle Fichiers de donnes Fichiers de journalisation
En-tte Fichiers de Donnes (incluent le dictionnaire de donnes) Fichiers de contrle

Fichiers de journalisation en ligne

1-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Structure physique La structure physique d'une base de donnes Oracle comprend trois types de fichier : fichiers de contrle, fichiers de donnes et fichiers de journalisation.

Oracle9i Database Administration I 1-10

Structure mmoire

La structure mmoire d'Oracle est constitue des deux zones de mmoire suivantes : la mmoire SGA, qui est alloue au dmarrage de l'instance et qui est une composante fondamentale d'une instance Oracle la mmoire PGA, qui est alloue au dmarrage du processus serveur

1-11

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 1-11

Mmoire SGA

La mmoire SGA est constitue de plusieurs structures mmoire :


la zone de mmoire partage, le cache de tampons de la base de donnes, le tampon de journalisation, d'autres structures (gestion des verrous externes (lock) et des verrous internes (latch), donnes statistiques, par exemple).

Deux structures mmoire supplmentaires peuvent galement tre configures dans la mmoire SGA :
la zone de mmoire LARGE POOL, la zone de mmoire Java.

1-12

Copyright Oracle Corporation, 2001. Tous droits rservs.

Mmoire SGA La mmoire SGA est galement appele Shared Global Area. Elle stocke les informations de la base qui sont partages par les processus de base de donnes. Elle contient les donnes et les informations de contrle utilises par le serveur Oracle. Enfin, elle est alloue dans la mmoire virtuelle de l'ordinateur sur lequel est install le serveur Oracle. L'instruction suivante permet d'afficher les allocations de la mmoire SGA : SQL> SHOW SGA: Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers 36437964 6543794 19521536 16777216 73728 bytes bytes bytes bytes bytes

Oracle9i Database Administration I 1-12

Mmoire SGA (suite) Mmoire SGA dynamique A partir d'Oracle9i, une mmoire SGA dynamique met en oeuvre une infrastructure permettant de modifier sa configuration sans qu'il soit ncessaire d'arrter l'instance. Il est donc possible de modifier la taille du cache de tampons (buffer cache) de la base de donnes et de la zone de mmoire partage sans arrter l'instance. En thorie, ces zones peuvent tre sous-configures l'origine. Ensuite, elles augmentent ou diminuent en fonction de leur charge globale respective, jusqu' un maximum de SGA_MAX_SIZE. Dimensionner la mmoire SGA La taille de la mmoire SGA est dfinie par plusieurs paramtres d'initialisation. Les principaux sont les suivants : DB_CACHE_SIZE : Taille du cache des blocs standard. La valeur par dfaut est 48 Mo sous Unix et 52 Mo sous NT. LOG_BUFFER : Nombre d'octets allous au tampon de journalisation (redo log buffer). SHARED_POOL_SIZE : Taille en octets des zones SQL et PL/SQL partages. La valeur par dfaut est 16 Mo. Dans une configuration 64 bits, la taille par dfaut est 64 Mo. LARGE_POOL_SIZE : Taille de la zone mmoire LARGE POOL. La valeur par dfaut est zro (sauf si la valeur TRUE est affecte au paramtre PARALLEL_AUTOMATIC_TUNING d'init.ora, auquel cas la valeur par dfaut est calcule automatiquement). JAVA_POOL_SIZE : Taille de la zone de mmoire Java. La valeur par dfaut est 24 Mo. Par consquent, la taille de la mmoire SGA ne peut pas dpasser SGA_MAX_SIZE DB_CACHE_SIZE - LOG_BUFFER SHARED_POOL_SIZE - LARGE_POOL_SIZE JAVA_POOL_SIZE. Remarque : La mmoire SGA dynamique et son dimensionnement sont prsents en dtail dans le cours Oracle9i Tuning.

Oracle9i Database Administration I 1-13

Mmoire SGA

Dynamique Taille dfinie l'aide du paramtre SGA_MAX_SIZE Allocation et suivi sous forme de granules par les composants de la mmoire SGA
Allocation de mmoire virtuelle contigu Taille des granules dfinie en fonction de la valeur totale estime de SGA_MAX_SIZE

1-14

Copyright Oracle Corporation, 2001. Tous droits rservs.

Mmoire SGA (suite) Unit d'allocation Le granule est une unit d'allocation de mmoire virtuelle contigu. La taille d'un granule dpend de la taille totale estime de la mmoire SGA, qui est calcule en fonction de la valeur du paramtre SGA_MAX_SIZE. 4 Mo si la taille estime de la mmoire SGA est infrieure 128 Mo 16 Mo dans les autres cas Les composants (cache de tampons de la base de donnes et zone de mmoire partage) peuvent augmenter ou diminuer en fonction des limites des granules. Pour chaque composant possdant des granules, la vue V$BUFFER_POOL donne des informations sur le nombre de granules allous, les oprations en cours sur le composant (par exemple, allocation ou libration de granules via ALTER SYSTEM, et auto-rglage correspondant) et sur la taille cible en granules. Au dmarrage de l'instance, le serveur Oracle alloue des entres de granule (une pour chaque granule) pour la prise en charge du nombre d'octets d'espace d'adressage dfini par SGA_MAX_SIZE. Ensuite, chaque composant acquiert le nombre de granules dont il a besoin. La configuration SGA minimale est de trois granules : un pour la mmoire SGA fixe (tampons de journalisation inclus), un pour le cache de tampons de la base de donnes et un pour la zone de mmoire partage.

Oracle9i Database Administration I 1-14

Zone de mmoire partage


Elle permet de stocker :
les dernires instructions SQL excutes, les dernires dfinitions de donnes utilises.

Elle est constitue de deux structures mmoire cls lies aux performances :
Cache "library" Cache du dictionnaire de donnes

Sa taille est dfinie par le paramtre SHARED_POOL_SIZE. Zone de mmoire


partage Cache "library" Cache du dictionnaire de donnes

ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;

1-15

Copyright Oracle Corporation, 2001. Tous droits rservs.

Zone de mmoire partage L'environnement de la zone de mmoire partage est compos de structures fixes et de structures variables. Les structures fixes conservent la mme taille, tandis que les structures variables augmentent et diminuent en fonction des besoins de l'utilisateur et du programme. La taille relle des structures fixes et des structures variables dpend d'un paramtre d'initialisation et du travail d'un algorithme interne d'Oracle Dimensionner la zone de mmoire partage La zone de mmoire partage est utilise pour les objets pouvant tre partags globalement : les plans d'excution SQL rutilisables, les packages, procdures et fonctions PL/SQL et les informations sur les curseurs, par exemple. Elle doit tre dimensionne pour rpondre aux besoins des zones fixes et des zones variables. L'allocation d'espace la zone de mmoire partage est dtermine par le paramtre d'initialisation SHARED_POOL_SIZE. La zone peut tre redimensionne de manire dynamique l'aide de la commande ALTER SYSTEM SET. Aprs l'analyse des performances, il est possible de modifier la taille de cette zone condition que la taille totale de la mmoire SGA ne dpasse pas la valeur dfinie par le paramtre SGA_MAX_SIZE.

Oracle9i Database Administration I 1-15

Cache "library"

Le cache "library" conserve des informations sur les dernires instructions SQL et PL/SQL utilises. Il permet le partage des instructions frquemment utilises. Il est gr par un algorithme LRU. Il est compos de deux structures :
la zone SQL partage, la zone PL/SQL partage.

Sa taille dpend du dimensionnement de la zone de mmoire partage.

1-16

Copyright Oracle Corporation, 2001. Tous droits rservs.

Cache "library" La taille du cache "library" dpend du dimensionnement dfini pour la zone de mmoire partage. La mmoire est alloue lors de l'analyse d'une instruction ou de l'appel d'un programme. Si la taille de la zone de mmoire partage est trop restreinte, les instructions sont sans cesse recharges dans le cache "library" au dtriment des performances. Le cache "library" est gr par un algorithme LRU (Least Recently Used). A mesure que le cache se remplit, les chemins d'excution et les arborescences d'analyse (parse) les plus anciens sont supprims du cache "library" afin de librer de l'espace pour les nouvelles entres. Si les instructions SQL ou PL/SQL ne sont pas rutilises, elles sont finalement retires de la mmoire (sur la base de la liste LRU). Le cache "library" est compos de deux structures : Zone SQL partage : La zone SQL partage stocke et partage le plan d'excution et l'arborescence de l'analyse des instructions SQL excutes dans la base de donnes. Lorsqu'une instruction SQL identique est excute pour la deuxime fois, elle peut utiliser les informations d'analyse disponibles dans la zone SQL partage pour acclrer son excution. Afin que les instructions SQL utilisent une zone de mmoire SQL partage lorsque cela s'avre possible, il est ncessaire que le texte, le schma et les variables attaches (bind variables) soient en tous points identiques. Zone PL/SQL partage : La zone PL/SQL partage stocke et partage les dernires instructions PL/SQL excutes. Les procdures et les programmes analyss et compils (fonctions, dclencheurs (triggers) et packages) sont stocks dans cette zone.

Oracle9i Database Administration I 1-16

Cache du dictionnaire de donnes


Le cache du dictionnaire de donnes contient les dernires dfinitions utilises dans la base. Il contient des informations sur les fichiers, les tables, les index, les colonnes, les utilisateurs, les privilges et d'autres objets de la base de donnes. Au cours de l'analyse, le processus serveur recherche les informations dans le cache du dictionnaire pour rsoudre les noms d'objet et valider l'accs. La mise en mmoire cache des informations du dictionnaire de donnes rduit le temps de rponse aux interrogations et aux instructions LMD. La taille du cache dpend du dimensionnement de la zone de mmoire partage.
1-17 Copyright Oracle Corporation, 2001. Tous droits rservs.

Cache du dictionnaire de donnes Le cache du dictionnaire de donnes est galement appel cache de lignes (row cache). La mise en mmoire cache des informations du dictionnaire dans le cache de tampons de la base de donnes et dans la zone de mmoire partage amliore les performances. Les informations sur la base de donnes (donnes du compte utilisateur, noms des fichiers de donnes, noms des segments, emplacements d'extents, descriptions des tables et privilges utilisateur) sont stockes dans les tables du dictionnaire de donnes. Lorsque le serveur a besoin de ces informations, les tables du dictionnaire sont lues, puis les donnes renvoyes sont places dans le cache de ce dictionnaire. Dimensionner le dictionnaire de donnes La taille totale du dictionnaire de donnes dpend de celle de la zone partage. Elle est gre en interne par la base de donnes. Si le cache du dictionnaire est trop restreint, la base de donnes doit interroger de faon rpte les tables de ce dictionnaire pour obtenir les informations dont le serveur a besoin. Ces interrogations sont des appels rcursifs. Elles sont plus lentes que les interrogations effectues directement dans le cache du dictionnaire de donnes, parce qu'elles n'utilisent pas le langage SQL.

Oracle9i Database Administration I 1-17

Cache de tampons de la base de donnes

Ce cache conserve des copies des blocs de donnes extraits des fichiers de donnes. Il permet des gains de performances considrables lors de l'obtention et de la mise jour de donnes. Il est gr par un algorithme LRU. Le paramtre DB_BLOCK_SIZE dtermine la taille du bloc principal.
Cache de tampons de la base de donnes

1-18

Copyright Oracle Corporation, 2001. Tous droits rservs.

Cache de tampons de la base de donnes Lors du traitement d'une interrogation, le processus serveur Oracle recherche les blocs dont il a besoin dans le cache de tampons de la base. Si un bloc ncessaire ne s'y trouve pas, le processus lit le bloc dans le fichier de donnes, puis place une copie de ce bloc dans le cache de tampons. Etant donn que ce bloc pourra par la suite tre trouv dans la mmoire, les demandes suivantes ne ncessitent pas de lecture physique. Le serveur Oracle utilise un algorithme LRU pour retirer de la mmoire les tampons (buffers) qui n'ont pas t utiliss rcemment, afin de librer de l'espace pour de nouveaux blocs dans le cache de tampons.

Oracle9i Database Administration I 1-18

Cache de tampons de la base de donnes


Ce cache est compos de sous-caches indpendants :
DB_CACHE_SIZE DB_KEEP_CACHE_SIZE DB_RECYCLE_CACHE_SIZE

Il peut tre redimensionn dynamiquement :


ALTER SYSTEM SET DB_CACHE_SIZE = 96M;

Le paramtre DB_CACHE_ADVICE peut tre dfini pour collecter des statistiques permettant de prvoir le comportement du serveur en fonction de diffrentes tailles de cache. La vue V$DB_CACHE_ADVICE affiche les statistiques collectes.
1-19 Copyright Oracle Corporation, 2001. Tous droits rservs.

Cache de tampons de la base de donnes Dimensionner le cache de tampons de la base de donnes La taille de chaque mmoire tampon du cache de tampons de la base de donnes est gale la taille d'un bloc Oracle. Elle est indique par le paramtre DB_BLOCK_SIZE. Le cache de tampons de la base est compos de sous-caches indpendants correspondant des pools de tampons et diffrentes tailles de blocs. Le paramtre DB_BLOCK_SIZE dtermine la taille du bloc principal utilise pour le tablespace SYSTEM. Trois paramtres permettent de dfinir la taille des caches de tampons de la base de donnes : DB_CACHE_SIZE dimensionne uniquement la taille par dfaut du cache de tampons. Il ne peut ni tre omis ni se voir affecter la valeur zro. DB_KEEP_CACHE_SIZE dimensionne le cache de tampons conserver. Il permet de conserver en mmoire les blocs susceptibles d'tre rutiliss. DB_RECYCLE_CACHE_SIZE dimensionne le cache de tampons recycler. Il permet d'liminer de la mmoire des blocs qui ne sont pas susceptibles d'tre rutiliss.

Oracle9i Database Administration I 1-19

Cache de tampons de la base de donnes (suite) Fonction de conseil sur le cache de tampons Cette fonction active et dsactive la collecte de statistiques permettant de prvoir le comportement du serveur en fonction de la taille du cache. Les informations fournies par ces statistiques peuvent vous aider dimensionner le cache de tampons de la base de donnes de manire optimale pour une charge globale donne. Les informations de conseil sur le cache de tampons sont collectes et affiches dans la vue V$DB_CACHE_ADVICE. Le paramtre d'initialisation DB_CACHE_ADVICE active la fonction de conseil sur le cache de tampons. C'est un paramtre dynamique modifiable l'aide de la commande ALTER SYSTEM. Trois valeurs sont disponibles : OFF, ON, READY. Valeurs du paramtre DB_CACHE_ADVICE OFF : La fonction de conseil est dsactive et la mmoire correspondante n'est pas alloue. ON : La fonction de conseil est active et il existe un risque de surcharge de l'UC et de la mmoire. Si vous tentez d'affecter la valeur ON au paramtre alors qu'il a la valeur OFF, l'erreur suivante peut tre gnre : ORA-4031 Inability to allocate from the Shared Pool when the parameter is switched to ON. Si le paramtre a la valeur READY, la valeur ON peut lui tre affecte sans risque d'erreur, car la mmoire est dj alloue. READY : La fonction de conseil est dsactive, mais la mmoire correspondante reste alloue. Allouez la mmoire avant que cette fonction ne soit active pour viter tout risque d'erreur de type ORA-4031. Si le paramtre passe de READY OFF, une erreur ORA-4031 peut survenir.

Oracle9i Database Administration I 1-20

Tampon de journalisation

Il enregistre toutes les modifications apportes aux blocs de donnes de la base. Sa principale fonction est la rcupration de donnes. Les modifications enregistres constituent des entres de journalisation. Les entres de journalisation contiennent des informations permettant de reconstruire des modifications. La taille du tampon est Tampon de dfinie par le paramtre journalisation LOG_BUFFER.

1-21

Copyright Oracle Corporation, 2001. Tous droits rservs.

Tampon de journalisation Le tampon de journalisation est un tampon circulaire qui contient les modifications apportes aux blocs de fichiers de donnes. Ces informations sont stockes dans des entres de journalisation. Ces entres contiennent les informations ncessaires la recration des donnes avant toute modification via les oprations INSERT, UPDATE, DELETE, CREATE, ALTER ou DROP. Dimensionner le tampon de journalisation La taille du tampon de journalisation est dfinie par le paramtre d'initialisation LOG_BUFFER. Remarque : Le dimensionnement du cache du tampon de journalisation est prsent en dtail dans le cours Oracle9i Tuning. Pour plus d'informations sur les fichiers de journalisation, reportez-vous au chapitre Grer les fichiers de journalisation.

Oracle9i Database Administration I 1-21

Zone de mmoire LARGE POOL


Zone facultative de la mmoire SGA Elle rduit la charge de la zone de mmoire partage.
la mmoire alloue par session (UGA) au serveur partag les processus serveur d'E/S les oprations de sauvegarde et de restauration ou RMAN les mmoires tampon des messages d'excution en parallle PARALLEL_AUTOMATIC_TUNING = TRUE

Elle n'utilise pas de liste LRU. Sa taille est dfinie par le paramtre LARGE_POOL_SIZE.
1-22 Copyright Oracle Corporation, 2001. Tous droits rservs.

Zone de mmoire LARGE POOL En allouant au serveur partag, Oracle XA et aux mmoires tampon "Parallel Query" de la mmoire par session partir de la zone LARGE POOL, Oracle peut principalement utiliser la zone de mmoire partage pour la mise en mmoire cache des instructions SQL partages. La charge des zones de la mmoire partage est ainsi rduite. Cette dernire n'a pas besoin de cder de l'espace ncessaire la mise en mmoire cache des arborescences d'analyse du code SQL au profit des informations de session du serveur partag, des E/S et des processus de sauvegarde et de restauration. Le gain de performances provient de la rduction de la surcharge due l'augmentation et la rduction du cache SQL partag. Sauvegarde et restauration Recovery Manager (RMAN) utilise la zone de mmoire LARGE POOL lorsque les paramtres BACKUP_DISK_IO= n et BACKUP_TAPE_IO_SLAVE = TRUE sont dfinis. Si cette zone est configure, mais que sa taille est insuffisante, l'allocation de mmoire depuis cette zone choue. RMAN crit un message d'erreur dans le fichier d'alertes et n'utilise pas de processus esclave d'E/S pour la sauvegarde ou la restauration. Excution en parallle La zone de mmoire LARGE POOL est utilise si le paramtre PARALLEL_AUTOMATIC_TUNING possde la valeur TRUE, sinon ces mmoires tampon sont alloues la zone de mmoire partage.

Oracle9i Database Administration I 1-22

Zone de mmoire LARGE POOL (suite) Dimensionner la zone de mmoire LARGE POOL La taille de la zone de mmoire LARGE POOL est dfinie en octets par le paramtre LARGE_POOL_SIZE qui n'est pas dynamique. Zone de mmoire LARGE POOL et listes LRU La zone de mmoire LARGE POOL ne possde pas de liste LRU. Elle ne correspond pas un espace rserv de la zone de mmoire partage utilisant une liste LRU.

Oracle9i Database Administration I 1-23

Zone de mmoire Java

La zone de mmoire Java rpond aux besoins d'analyse des commandes Java. Elle est ncessaire si Java est install et utilis. Sa taille est dfinie par le paramtre JAVA_POOL_SIZE.

1-24

Copyright Oracle Corporation, 2001. Tous droits rservs.

Zone de mmoire Java La configuration de la zone de mmoire Java est facultative, mais ncessaire si vous installez et utilisez Java. La taille de la zone est dfinie en octets par le paramtre JAVA_POOL_SIZE. Dans Oracle9i, la taille par dfaut de cette zone est de 24 Mo.

Oracle9i Database Administration I 1-24

Mmoire PGA

Mmoire rserve chaque processus utilisateur qui se connecte une base de donnes Oracle. Elle est alloue lorsqu'un processus est cr. Elle est libre la fin du processus. Elle n'est utilise que par un processus.

PGA Processus serveur

Processus utilisateur

1-25

Copyright Oracle Corporation, 2001. Tous droits rservs.

Mmoire PGA La mmoire PGA (Program Global Area ou Process Global Area) est une rgion de la mmoire qui contient les donnes et les informations de contrle d'un seul processus serveur ou d'un seul processus d'arrire-plan. Elle est alloue lors de la cration d'un processus et libre la fin de celui-ci. Contrairement la mmoire SGA, qui est partage par plusieurs processus, la mmoire PGA n'est utilise que par un seul processus. Contenu de la mmoire PGA Le contenu de la mmoire PGA varie selon que l'instance est excute dans une configuration serveur ddi ou serveur partag. Elle inclut gnralement les composants suivants : Zone prive de partage des ordres SQL : Contient des donnes telles que des informations attaches et des structures mmoire d'excution. Chaque session qui met une instruction SQL possde une zone prive de partage des ordres SQL. La zone de chaque utilisateur qui soumet la mme instruction SQL utilise une seule zone SQL partage. La zone prive de partage des ordres SQL d'un curseur est divise en deux sous-zones : La zone persistante, qui contient des informations attaches. Elle n'est libre que lorsque le curseur est ferm. La zone d'excution, qui est cre au tout dbut d'une demande d'excution. En ce qui concerne les commandes INSERT, UPDATE et DELETE, cette zone n'est libre que lorsque l'instruction a t excute. En ce qui concerne les interrogations, elle n'est libre que lorsque toutes les lignes sont extraites ou lorsque l'interrogation est annule.

Oracle9i Database Administration I 1-25

Mmoire PGA (suite) Zone prive de partage des ordres SQL (suite) : l'emplacement de la cette zone dpend du type de connexion tabli pour la session. Dans un environnement serveur ddi, les zones prives de partage des ordres SQL se trouvent dans la mmoire PGA de leur processus serveur. Dans un environnement serveur partag, elles sont situes dans la mmoire SGA. La gestion des zones prives de partage des ordres SQL incombe au processus utilisateur. Le nombre de zones qu'il peut allouer est toujours limit par le paramtre d'initialisation OPEN_CURSORS. Ce paramtre prend par dfaut la valeur 50. Mmoire alloue par session : constitue une mmoire alloue rserve aux variables et aux informations relatives la session. Dans un environnement serveur partag, cette mmoire est partage et non prive. Zones de travail SQL : ces zones sont utilises pour les oprations qui ncessitent une grande quantit de mmoire telles que les tris, les jointures de hachage (hash join) ainsi que la cration et la fusion de bitmaps. La taille de ces zones peut tre contrle et rgle. A partir d'Oracle9i, vous pouvez grer de faon automatique et globale la taille de la zone de travail en affectant la valeur AUTO (valeur par dfaut) au paramtre WORKAREA_SIZE_POLICY et en dfinissant le paramtre d'initialisation PGA_AGGREGATE_TARGET. Ce dernier permet au DBA d'indiquer la quantit agrge cible de mmoire PGA disponible pour l'instance. Ce paramtre peut tre modifi dynamiquement par le DBA au niveau instance. Il accepte des valeurs en octets, kilooctets, mgaoctets et gigaoctets. Lorsque ces paramtres sont dfinis, le dimensionnement des zones de travail est automatique et tous les paramtres *_AREA_SIZE sont ignors pour ces sessions. Dans les versions antrieures Oracle9i, le DBA dfinissait la taille maximale des zones de travail SQL l'aide des paramtres SORT_AREA_SIZE, HASH_AREA_SIZE, BITMAP_MERGE_AREA_SIZE et CREATE_BITMAP_AREA_SIZE. Il peut s'avrer difficile de configurer ces paramtres parce que la taille maximale idale de ces zones dpend du volume de donnes entres et du nombre total de zones de travail actives sur le systme. Ces deux facteurs varient normment d'une zone l'autre et d'un moment l'autre. Il est donc difficile d'optimiser le rglage de ces paramtres.

Oracle9i Database Administration I 1-26

Mmoire PGA (suite) Diffrences d'allocation de mmoire entre le serveur ddi et le serveur partag : Le contenu de la mmoire PGA varie selon que l'instance est excute dans une configuration serveur ddi ou serveur partag. Elle inclut gnralement les composants suivants :

Zone de mmoire
Type de mmoire alloue par session Emplacement de la zone persistante Emplacement de la zone d'excution (SELECT) Emplacement de la zone d'excution (LMD/LDD)

Serveur ddi
Prive Mmoire PGA Mmoire PGA Mmoire PGA

Serveur partag
Partage Mmoire SGA Mmoire SGA Mmoire SGA

Oracle9i Database Administration I 1-27

Structure de processus

Oracle utilise diffrents types de processus : le processus utilisateur, qui est dmarr au moment o un utilisateur de la base de donnes tente de se connecter au serveur Oracle, le processus serveur, qui tablit la connexion l'instance Oracle et dmarre lorsqu'un utilisateur ouvre une session, les processus d'arrire-plan, lancs au dmarrage d'une instance Oracle.

1-28

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 1-28

Processus utilisateur

Programme qui demande une interaction avec le serveur Oracle. Ce processus doit d'abord tablir une connexion. Il n'entre pas directement en interaction avec le serveur Oracle.
Processus serveur Processus utilisateur

Connexion tablie

Utilisateur de la base de donnes

1-29

Copyright Oracle Corporation, 2001. Tous droits rservs.

Processus utilisateur Un utilisateur de base de donnes qui doit demander des informations contenues dans la base doit d'abord tablir une connexion avec le serveur Oracle. La demande de connexion s'effectue via un outil d'interface de base de donnes (SQL*Plus, par exemple) et le lancement du processus utilisateur. Ce dernier n'entre pas directement en interaction avec le serveur Oracle. Il gnre des appels via l'interface UPI (User Program Interface) qui cre une session et dmarre un processus serveur

Oracle9i Database Administration I 1-29

Processus serveur
Programme qui entre directement en interaction avec le serveur Oracle. Il rpond aux appels gnrs et renvoie les rsultats. Il peut s'agir d'un serveur ddi ou d'un serveur partag.
Connexion tablie
Processus utilisateur Processus serveur

Session cre Serveur Oracle

Utilisateur de la base de donnes


1-30

Copyright Oracle Corporation, 2001. Tous droits rservs.

Processus serveur Lorsque l'utilisateur a tabli une connexion, un processus serveur dmarre pour traiter les demandes du processus utilisateur. Un processus serveur peut tre ddi ou partag. Dans un environnement serveur ddi, le processus serveur traite la demande d'un seul processus utilisateur. Le processus serveur prend fin lorsque le processus utilisateur se dconnecte. Dans un environnement serveur partag, le processus serveur traite les demandes de plusieurs processus utilisateur. Le processus serveur communique avec le serveur Oracle l'aide de l'interface OPI (Oracle Program Interface). Remarque : L'allocation du processus serveur dans un environnement serveur ddi par rapport un environnement serveur partag est prsente en dtail dans le cours Oracle9i Tuning.

Oracle9i Database Administration I 1-30

Processus d'arrire-plan

Grent et appliquent les relations entre les structures physiques et les structures mmoire. Processus d'arrire-plan obligatoires
DBWn LGWR ARCn CJQ0 Dnnn LCKn PMON SMON LMDn LMON Pnnn QMNn CKPT

Processus d'arrire-plan facultatifs


RECO Snnn

1-31

Copyright Oracle Corporation, 2001. Tous droits rservs.

Processus d'arrire-plan L'architecture Oracle possde cinq processus d'arrire-plan obligatoires qui seront prsents plus loin dans ce chapitre. Oracle possde, en outre, un certain nombre de processus d'arrireplan facultatifs qui sont dmarrs via l'excution de l'option correspondante. Ces processus ne sont pas dcrits dans ce chapitre, l'exception du processus d'arrire-plan ARCn. La liste suivante contient une partie des processus d'arrire-plan facultatifs : RECO : Processus de rcupration QMNn : Advanced Queuing ARCn : Processus d'archivage LCKn : RAC Lock ManagerVerrous d'instance LMON : RAC DLM MonitorVerrous globaux LMDn : RAC DLM MonitorVerrous distance CJQ0 : Processus d'arrire-plan Coordinator Job Queue Dnnn : Rpartiteur (Dispatcher) Snnn : Serveur partag Pnnn : Processus esclave "Parallel Query"

Oracle9i Database Administration I 1-31

Processus database writer (DBWn)


DBWn crit dans les cas suivants : point de reprise Cache de tampons seuil des tampons "dirty" de la base de donnes atteint aucune mmoire tampon disponible DBWn temps imparti dpass demande de ping RAC tablespace hors ligne Fichiers Fichiers Fichiers tablespace en lecture seule de de de donnes contrle journa- DROP ou TRUNCATE sur une lisation table Base de donnes BEGIN BACKUP sur un tablespace
Instance Mmoire SGA
1-32 Copyright Oracle Corporation, 2001. Tous droits rservs.

Processus database writer (DBWn) Le processus serveur enregistre les modifications des blocs d'annulation et des blocs de donnes dans le cache de tampons de la base de donnes. Le processus DBWn crit les tampons "dirty" du cache de tampons de la base de donnes dans les fichiers de donnes. Il garantit qu'un nombre suffisant de mmoires tampon libres (tampons qui peuvent tre crass lorsque les processus serveur doivent lire des blocs dans les fichiers de donnes) est disponible dans le cache de tampons de la base de donnes. Les performances de la base sont amliores puisque les processus serveur n'effectuent les modifications que dans le cache de tampons de la base de donnes. Le processus DBWn diffre l'criture dans les fichiers de donnes jusqu' ce que l'un des vnements suivants se produise : Point de reprise (checkpoint) normal ou incrmentiel. Le nombre de tampons "dirty" a atteint une valeur seuil. Un processus balaie un certain nombre de blocs la recherche de mmoires tampon libres et n'en trouve pas. Le temps imparti est dpass. Une demande de ping est mise dans l'environnement Real Application Clusters (RAC). Un tablespace normal ou temporaire est mis hors ligne. Un tablespace est mis en lecture seule. Une table est supprime ou vide. ALTER TABLESPACE nom du tablespace BEGIN BACKUP

Oracle9i Database Administration I 1-32

Processus LGWR (Log Writer)


Instance Mmoire SGA
Tampon de journalisation

DBWn LGWR

Fichiers de donnes

Fichiers Fichiers de de contrle journalisation

Base de donnes

LGWR crit dans les cas suivants : validation un tiers du cache est occup la journalisation atteint 1 Mo toutes les trois secondes avant que le processus DBWn ne procde une opration d'criture

1-33

Copyright Oracle Corporation, 2001. Tous droits rservs.

Processus LGWR (Log Writer) Le processus LGWR effectue des oprations d'criture squentielles partir du tampon de journalisation vers le fichier de journalisation dans les cas suivants : Lorsqu'une transaction est valide (commit). Lorsqu'un tiers du tampon de journalisation est occup. Lorsque le tampon de journalisation contient plus d'un mgaoctet de modifications enregistres. Avant que le processus DBWn n'crive les blocs modifis du cache de tampons de la base de donnes vers les fichiers de donnes. Toutes les trois secondes. Etant donn que la journalisation est ncessaire la rcupration des donnes, le processus LGWR ne confirme la validation qu'une fois les donnes journalises enregistres sur le disque. Le processus LGWR peut galement appeler le processus DBWn pour crire dans les fichiers de donnes.

Oracle9i Database Administration I 1-33

Processus SMON (System Monitor)


Instance Mmoire SGA

SMON

Fichiers de donnes

Fichiers Fichiers de de contrle journalisation

Base de donnes

Responsabilits : Rcupration de l'instance : rimplmente des modifications dans les fichiers de journalisation, ouvre la base de donnes pour permettre l'accs aux utilisateurs, annule les transactions non valides. Fusion de l'espace libre Libration des segments temporaires segments

1-34

Copyright Oracle Corporation, 2001. Tous droits rservs.

Processus SMON (System Monitor) En cas d'chec de l'instance Oracle, les informations prsentes dans la mmoire SGA qui n'ont pas t crites sur disque sont perdues. La dfaillance du systme d'exploitation, par exemple, provoque l'chec de l'instance. Lorsqu'une instance a chou, le processus d'arrire-plan SMON la rcupre automatiquement lors de la rouverture de la base de donnes. La rcupration d'une instance implique les tapes suivantes : 1. Rimplmenter les modifications pour rcuprer les donnes non enregistres dans les fichiers de donnes, mais enregistres dans le fichier de journalisation en ligne (online). Ces donnes n'ont pas t enregistres sur disque du fait de l'effacement de la mmoire SGA suite l'chec de l'instance. Lors de cette opration de rimplmentation, le processus SMON lit les fichiers de journalisation et applique aux blocs de donnes les modifications qui y sont enregistres. Etant donn que toutes les transactions valides ont t enregistres dans les fichiers de journalisation, ce processus permet de rcuprer ces transactions dans leur intgralit. 2. Ouvrir la base de donnes pour permettre aux utilisateurs de s'y connecter. Les donnes qui ne sont pas verrouilles par des transactions non rcupres sont immdiatement disponibles. 3. Annuler les transactions non valides. Ces transactions sont annules (rollback) par le processus SMON ou par les processus serveur lorsqu'ils accdent aux donnes verrouilles. Le processus SMON excute galement des fonctions de gestion de l'espace : Il combine ou fusionne les espaces libres adjacents dans les fichiers de donnes. Il libre les segments temporaires et augmente ainsi l'espace disponible dans les fichiers de donnes.

Oracle9i Database Administration I 1-34

Processus PMON (Process Monitor)


Instance Mmoire SGA

PMON

Mmoire PGA

Suite l'chec de processus, PMON excute des oprations de nettoyage : annule la transaction libre des verrous libre d'autres ressources redmarre les rpartiteurs interrompus

1-35

Copyright Oracle Corporation, 2001. Tous droits rservs.

Processus PMON (Process Monitor) Suite l'chec de processus, le processus d'arrire-plan PMON excute des oprations de nettoyage : Il annule la transaction en cours de l'utilisateur Il libre tous les verrous poss sur des tables ou des lignes Il libre d'autres ressources rserves par l'utilisateur Il redmarre les rpartiteurs interrompus Les rpartiteurs sont prsents en dtail dans le cours Oracle9i DBA II.

Oracle9i Database Administration I 1-35

Processus CKPT (Checkpoint)


Ce processus est charg : de signaler DBWn aux points de reprise, de mettre jour les en-ttes de fichiers de donnes avec les DBWn LGWR CKPT informations sur le point de reprise, de mettre jour les Fichiers Fichiers Fichiers fichiers de contrle de de de donnes contrle journaavec les informations lisation sur le point de reprise.
Instance Mmoire SGA Base de donnes

1-36

Copyright Oracle Corporation, 2001. Tous droits rservs.

Processus CKPT (Checkpoint) Le processus de point de reprise CKPT enregistre des donnes dans le fichier de contrle toutes les trois secondes pour identifier l'emplacement de dpart de la rcupration dans le fichier de journalisation. Cette opration est appele point de reprise. Elle vise garantir que toutes les mmoires tampon du cache de tampons de la base de donnes qui ont t modifies avant un point dans le temps ont t crites dans les fichiers de donnes. Ce point dans le temps (position du point de reprise) dtermine le dbut de la rcupration de la base de donnes en cas d'chec d'une instance. Dans ce cas, le processus DBWn a dj crit tout le contenu des mmoires tampon du cache de la base modifies avant ce point dans le temps. Dans les versions antrieures Oracle9i, cette opration s'effectuait en fin de journalisation. En cas de changement de fichier de journalisation, le processus CKPT crit galement ces informations de point de reprise dans les en-ttes des fichiers de donnes. Les points de reprise sont mis en oeuvre pour les raisons suivantes : Pour garantir que les blocs de donnes modifis qui se trouvent en mmoire sont rgulirement crits sur disque afin d'viter une perte des donnes en cas de panne du systme ou de la base de donnes. Pour rduire le temps de rcupration d'une instance. Seules les entres de journalisation postrieures au dernier point de reprise doivent tre traites pour que la rcupration ait lieu. Pour garantir que toutes les donnes valides ont t crites dans les fichiers de donnes lors de l'arrt.

Oracle9i Database Administration I 1-36

Le processus CKPT crit les informations de point de reprise suivantes : la position du point de reprise, le numro SCN (System Change Number), l'emplacement de dpart de la rcupration dans le fichier de journalisation, des informations sur les fichiers de journalisation, etc. Remarque : Le processus CKPT n'crit pas de blocs de donnes sur le disque ou de blocs de journalisation dans les fichiers de journalisation en ligne.

Oracle9i Database Administration I 1-37

Processus ARCn (processus d'archivage)

Processus d'arrire-plan facultatif En mode ARCHIVELOG, il archive automatiquement les fichiers de journalisation en ligne Il enregistre toutes les modifications apportes la base de donnes

Fichiers de donnes

Fichiers Fichiers de de contrle journalisation

ARCn

Fichiers de journalisation archivs

1-38

Copyright Oracle Corporation, 2001. Tous droits rservs.

Processus d'archivage Tous les autres processus d'arrire-plan sont facultatifs, selon la configuration de la base de donnes. Toutefois, l'un d'entre eux, ARCn, joue un rle essentiel dans la rcupration d'une base suite une dfaillance du disque. Le serveur Oracle passe d'un fichier de journalisation en ligne au suivant mesure que ceux-ci se remplissent. Le passage d'un fichier de journalisation un autre est un changement de fichier de journalisation. Le processus ARCn lance la sauvegarde ou l'archivage du groupe de fichiers de journalisation remplis chaque changement de fichier de journalisation. Il archive automatiquement le fichier de journalisation en ligne pour qu'il puisse tre rutilis. Ainsi, toutes les modifications apportes la base sont conserves. Ceci permet au DBA de rcuprer la base de donnes jusqu'au point de panne, mme si un disque est endommag. Archiver les fichiers de journalisation L'une des principales dcisions de l'administrateur consiste dterminer s'il doit configurer la base de donnes pour un fonctionnement en mode ARCHIVELOG ou en mode NOARCHIVELOG. Mode NOARCHIVELOG : Dans ce mode, les fichiers de journalisation en ligne sont crass chaque changement de fichier de journalisation. Le processus LGWR n'crase pas un groupe de fichiers de journalisation tant que le point de reprise du groupe n'est pas termin. Ceci garantit la rcupration des donnes valides en cas d'chec d'une instance. Dans ce cas, seules les donnes de la mmoire SGA sont perdues (aucune donne des disques n'est perdue). Une dfaillance du systme d'exploitation, par exemple, provoque la dfaillance de l'instance.

Oracle9i Database Administration I 1-38

Archiver les fichiers de journalisation (suite) Mode ARCHIVELOG : Si la base de donnes fonctionne en mode ARCHIVELOG, les groupes inactifs de fichiers de journalisation en ligne remplis doivent tre archivs pour pouvoir tre rutiliss. Etant donn que les modifications de la base sont enregistres dans les fichiers de journalisation en ligne, l'administrateur peut utiliser la sauvegarde physique des fichiers de donnes et les fichiers de journalisation en ligne archivs pour rcuprer la base sans perdre les donnes valides en cas de panne en un point unique, notamment de perte d'un disque. En rgle gnrale, une base de donnes de production est configure pour fonctionner en mode ARCHIVELOG. Les modes d'archivage des fichiers sont prsents en dtail dans le cours Oracle9i DBA II.

Oracle9i Database Administration I 1-39

Structure logique

La structure logique dfinit le mode d'utilisation de l'espace physique d'une base de donnes. Cette structure possde une hirarchie compose de tablespaces, de segments, d'extents et de blocs. Tablespace
Fichier de donnes Segment Segment

Extent

Blocs

1-40

Copyright Oracle Corporation, 2001. Tous droits rservs.

Structure logique La hirarchie de la structure logique se prsente comme suit : Une base de donnes Oracle contient au moins un tablespace. Un tablespace comporte un ou plusieurs segments. Un segment est compos d'extents. Un extent est compos de blocs logiques. Un bloc reprsente la plus petite unit sur laquelle portent les oprations de lecture et d'criture. L'architecture d'une base de donnes Oracle contient les structures logiques et physiques qui constituent la base de donnes. La structure physique comprend les fichiers de contrle, les fichiers de journalisation en ligne (online redo log) et les fichiers de donnes qui constituent la base de donnes. La structure logique est compose de tablespaces, de segments, d'extents (ensemble de blocs contigus) et de blocs de donnes. Le serveur Oracle permet un contrle prcis de l'utilisation de l'espace disque l'aide de tablespaces et de structures de stockage logiques constitues de segments, d'extents et de blocs de donnes.

Oracle9i Database Administration I 1-40

Structure logique (suite) Tablespaces Les donnes d'une base de donnes Oracle sont stockes dans des tablespaces. Une base de donnes Oracle peut tre divise en plus petites zones logiques d'espace appeles tablespaces. Un tablespace ne peut appartenir qu' une seule base de donnes la fois. Chaque tablespace est constitu d'un ou de plusieurs fichiers du systme d'exploitation, appels fichiers de donnes. Un tablespace peut contenir un ou plusieurs segments. Les tablespaces peuvent tre mis en ligne lorsque la base de donnes est active. A l'exception du tablespace SYSTEM ou des tablespaces contenant un segment d'annulation actif, les tablespaces peuvent tre mis hors ligne sans interruption de la base de donnes. Les tablespaces peuvent tre accessibles en lecture et criture ou en lecture seule. Fichiers de donnes (structure non logique) Chaque tablespace d'une base de donnes Oracle contient un ou plusieurs fichiers appels fichiers de donnes. Ces fichiers sont des structures physiques conformes au systme d'exploitation sur lequel s'excute le serveur Oracle. Un fichier de donnes ne peut appartenir qu' un seul tablespace. Un serveur Oracle cre un fichier de donnes dans un tablespace en allouant l'espace disque dfini et un petit espace supplmentaire. L'administrateur de base de donnes peut modifier la taille des fichiers de donnes aprs leur cration ou indiquer que leur taille peut augmenter de faon dynamique mesure que celle des objets du tablespace s'accrot. Segments Un segment est un espace allou une structure de stockage logique spcifique d'un tablespace. Un tablespace peut contenir un ou plusieurs segments. Un segment ne peut pas tre rparti sur plusieurs tablespaces, mais peut s'tendre plusieurs fichiers de donnes d'un mme tablespace. Chaque segment est constitu d'un ou de plusieurs extents. Extents Les extents permettent d'allouer de l'espace un segment. Un segment peut tre constitu d'un ou de plusieurs extents. Lorsque vous crez un segment, celui-ci contient au moins un extent. A mesure que la taille du segment augmente, des extents lui sont ajouts. L'administrateur de base de donnes peut ajouter manuellement des extents un segment. Un extent est constitu de blocs Oracle contigus. Un extent ne peut pas s'tendre sur plusieurs fichiers de donnes. Il doit donc appartenir un seul fichier de ce type.

Oracle9i Database Administration I 1-41

Structure logique (suite) Blocs de donnes Le serveur Oracle gre l'espace de stockage des fichiers de donnes l'aide d'units appeles blocs de donnes ou blocs Oracle. Lorsque le degr de dtail maximum est atteint, les donns d'une base Oracle sont stockes dans des blocs de donnes. Les blocs de donnes Oracle reprsentent la plus petite unit de stockage que le serveur Oracle peut allouer, crire ou lire. Un bloc de donnes correspond un ou plusieurs blocs du systme d'exploitation allous partir d'un fichier de donnes existant. Le paramtre d'initialisation DB_BLOCK_SIZE permet de dfinir la taille de bloc standard lors de la cration d'une base de donnes Oracle. La taille des blocs de donnes doit correspondre un multiple de la taille des blocs du systme d'exploitation afin d'viter les oprations d'entre/sortie inutiles. La taille maximale d'un bloc de donnes dpend du systme d'exploitation utilis.

Oracle9i Database Administration I 1-42

Traiter les instructions SQL

Connexion une instance via :


le processus utilisateur, le processus serveur.

Les composants du serveur Oracle utiliss dpendent du type d'instruction SQL :


Les interrogations renvoient des lignes. Les instructions LMD consignent les modifications. La validation garantit la rcupration de la transaction.

Certains composants du serveur Oracle n'interviennent pas dans le traitement des instructions SQL.

1-43

Copyright Oracle Corporation, 2001. Tous droits rservs.

Traiter les instructions SQL Traiter une interrogation Parse (analyse) : Recherche d'instructions identiques Vrification de la syntaxe, des noms d'objet et des privilges Verrouillage des objets utiliss lors de l'analyse Cration et stockage d'un plan d'excution

Bind (affectation de valeurs) : obtention des valeurs des variables Execute (excution) : traitement de l'instruction Fetch (extraction) : renvoi de lignes au processus utilisateur

Oracle9i Database Administration I 1-43

Traiter les instructions SQL (suite) Processing a DML statement: Parse (analyse) : cette tape est identique l'analyse effectue lors du traitement d'une interrogation. Bind (affectation de valeurs) : cette tape est identique l'affectation de valeurs effectue lors du traitement d'une interrogation. Execute (excution) : Si les blocs de donnes et les blocs d'annulation ne se trouvent pas dj dans le cache de tampons de la base de donnes, le processus serveur les lit partir des fichiers de donnes et les place dans le cache. Le processus serveur place des verrous sur les lignes modifier. Le bloc d'annulation stocke l'image avant des donnes, ce qui permet d'annuler, si ncessaire, les instructions LMD. Les blocs de donnes enregistrent les nouvelles valeurs des donnes. Le processus serveur enregistre l'image avant dans le bloc d'annulation et met jour le bloc de donnes. Ces deux modifications sont effectues dans le cache de tampons de la base de donnes. Les blocs modifis dans le cache de tampons sont identifis comme tampons "dirty" (mmoires tampon qui ne sont pas identiques aux blocs correspondants sur le disque). Le traitement d'une commande DELETE ou INSERT s'effectue selon des tapes similaires. L'image avant d'une commande DELETE contient les valeurs de colonne de la ligne supprime et celle d'une commande INSERT contient les informations sur l'emplacement de la ligne.

Traiter une instruction LMD L'excution d'instructions LDD (Langage de dfinition de donnes) diffre de celle d'instructions LMD (Langage de manipulation de donnes) et d'interrogations dans la mesure o, pour aboutir, une instruction LDD requiert un accs en criture au dictionnaire de donnes. L'analyse de ces instructions comprend en fait l'analyse, la consultation du dictionnaire de donnes et l'excution. Les instructions SQL de gestion des transactions, des sessions et du systme sont traites lors des tapes d'analyse et d'excution. Pour les rexcuter, procdez tout simplement une autre excution.

Oracle9i Database Administration I 1-44

Synthse
Ce chapitre vous a prsent : les fichiers de base de donnes : fichiers de donnes, fichiers de contrle, fichiers de journalisation en ligne les structures mmoire SGA : cache de tampons de la base de donnes, zone de mmoire partage et tampon de journalisation les principaux processus d'arrire-plan : DBWn, LGWR, CKPT, PMON et SMON l'utilisation du processus d'arrire-plan ARCn les processus d'arrire-plan facultatifs et conditionnels la hirarchie logique
1-45 Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 1-45

Prsentation de l'exercice 1

Cet exercice porte sur : les composants de l'architecture les structures utilises dans la connexion d'un utilisateur une instance Oracle

1-46

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 1-46

Exercice 1 : composants de l'architecture Oracle 1 Parmi les affirmations suivantes, dterminez laquelle est vraie. a Un serveur Oracle est un ensemble de donnes compos de trois types de fichier. b Pour tablir une connexion avec la base de donnes, l'utilisateur doit dmarrer une instance Oracle. c Une connexion est un chemin de communication entre le serveur Oracle et l'instance Oracle. d Une session dmarre une fois que le serveur Oracle a authentifi l'utilisateur. 2 Parmi les zones mmoire suivantes, laquelle ne fait pas partie de la mmoire SGA ? a le cache de tampons de la base de donnes, b la mmoire PGA, c le tampon de journalisation, d la zone de mmoire partage. 3 Identifiez les deux affirmations correctes se rapportant la zone de mmoire partage. a La zone de mmoire partage est compose du cache "library", du cache du dictionnaire de donnes, de la zone SQL partage, de la zone de mmoire Java et de la zone de mmoire LARGE POOL. b La zone de mmoire partage permet de stocker les dernires instructions SQL excutes. c La zone de mmoire partage est utilise pour un objet pouvant tre partag globalement. d Le cache "library" est compos des zones SQL et PL/SQL partages. 4 Parmi les zones mmoire suivantes, laquelle permet de mettre en mmoire cache les informations du dictionnaire de donnes ? a le cache de tampons de la base de donnes, b la mmoire PGA, c le tampon de journalisation, d la zone de mmoire partage. 5 La tche principale du tampon de journalisation consiste enregistrer toutes les modifications apportes aux blocs de donnes de la base. a Vrai b Faux 6 La mmoire PGA est une rgion de la mmoire qui contient les donnes et les informations de contrle de plusieurs processus serveur ou de plusieurs processus d'arrire-plan. a Vrai b Faux 7 Parmi les processus suivants, lequel ou lesquels sont disponibles au dmarrage d'une instance Oracle ? a le processus utilisateur, b le processus serveur, c les processus d'arrire-plan. 8 Indiquez ci-dessous cinq processus d'arrire-plan obligatoires. ________________________________________ ________________________________________ ________________________________________ ________________________________________ ________________________________________

Oracle9i Database Administration I 1-47

Exercice 1 : composants de l'architecture Oracle (suite) 9 Affectez chaque processus la tche correspondante. a Database Writer E permet l'criture dans les en-ttes des fichiers de donnes. b Log Writer C se charge de la rcupration de l'instance. c System Monitor D excute des oprations de nettoyage suite l'chec de processus. d Process Monitor B enregistre les modifications de la base dedonnes pour permettre la rcupration. e Checkpoint A crit les tampons "dirty" dans les fichiers de donnes. 10 La structure physique d'une base Oracle est compose de fichiers de contrle, de fichiers de donnes et de fichiers de journalisation. a Vrai b Faux 11 Rtablissez la hirarchie des structures suivantes, en commenant par la base de donnes. a Tablespaces b Extent c Segment d Base de donne e Bloc 12 Indiquez les composants d'un serveur Oracle. ________________________________________ ________________________________________ 13 Indiquez les composants d'une instance Oracle. ________________________________________ ________________________________________ 14 Indiquez trois types de fichier composant une base de donnes Oracle. ________________________________________ ________________________________________ ________________________________________

Oracle9i Database Administration I 1-48

Initiation Oracle Server

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : identifier les outils standard d'administration de base de donnes que peut utiliser l'administrateur identifier les fonctions d'Oracle Universal Installer utiliser SQL*Plus pour accder une base de donnes Oracle et la manipuler rpertorier les principaux composants d'Oracle Enterprise Manager

2-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 2-2

Outils d'administration de base de donnes

Outil Oracle Universal Installer (OUI) Oracle Database Configuration Assistant SQL*Plus Oracle Enterprise Manager

Description Permet d'installer, de mettre niveau ou de supprimer des composants logiciels. Outil dot d'une interface graphique qui entre en interaction avec Oracle Universal Installer ou qui peut tre utilis indpendamment afin de crer, supprimer ou modifier une base de donnes. Utilitaire permettant d'accder des donnes d'une base Oracle Interface utilisateur permettant d'administrer, de surveiller et de rgler une ou plusieurs bases de donnes

2-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Exemples d'outils standard d'administration de base de donnes Les outils rpertoris dans la diapositive sont dcrits dans ce cours, mais ils ne reprsentent qu'un sous-ensemble des utilitaires fournis par Oracle.

Oracle9i Database Administration I 2-3

Oracle Universal Installer


Permet d'installer, de mettre niveau ou de supprimer des composants logiciels et de crer une base de donnes. Repose sur un moteur Java. Possde les fonctions suivantes :
rsolution automatique des dpendances, possibilit d'installations bases sur le Web, inventaire des installations de composants et de suites, dsinstallation de composants installs, prise en charge de plusieurs rpertoires d'origine Oracle Home, prise en charge de la technologie de globalisation.
2-4 Copyright Oracle Corporation, 2001. Tous droits rservs.

Fonctions d'Oracle Universal Installer Oracle Universal Installer est un utilitaire bas sur Java, qui offre une solution d'installation pour toutes les plates-formes compatibles Java et propose une procdure d'installation et une interface communes, indpendantes de la plate-forme. Universal Installer dtecte les dpendances entre les composants et effectue l'installation en consquence, peut pointer sur une URL correspondant un emplacement o une version ou une zone intermdiaire a t dfinie, et installer le logiciel distance via HTTP, peut supprimer des produits installs ; les actions de dsinstallation correspondent l'annulation des actions d'installation, conserve un inventaire de tous les rpertoires d'origine Oracle Home sur une machine cible avec leurs noms ainsi que les produits qui y sont installs et la version de ces derniers, dtecte la langue du systme d'exploitation et excute l'installation dans cette langue, peut tre excut en mode interactif ou automatique ; Oracle Universal Installer s'excute en mode automatique (ou non-interactif) l'aide d'un fichier de rponses.

Oracle9i Database Administration I 2-4

Dmarrer Universal Installer

Pour dmarrer Oracle Universal Installer sous UNIX, excutez la commande suivante :
$ ./runInstaller

Pour dmarrer Oracle Universal Installer sous NT, excutez la commande suivante :
D:\> setup

2-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Installation interactive UNIX : Le programme d'installation, nomm runInstaller, se trouve dans le rpertoire INSTALL\install\solaris. Sous Unix, n'excutez pas l'installeur en tant qu'utilisateur root. NT : Le programme d'installation, nomm setup.exe, se trouve dans le rpertoire install/win32. Remarque : Pour plus d'informations sur l'installation d'Oracle Server sur votre plate-forme, consultez la documentation Oracle propre votre systme d'exploitation.

Oracle9i Database Administration I 2-5

Installation non-interactive l'aide de fichiers de rponses


Ce type d'installation ne permet pas d'interaction avec l'utilisateur Fichiers de rponses :
Modles devant tre modifis Fichiers texte contenant des variables et des valeurs Paramtres personnaliss

Pour dmarrer Universal Installer en mode noninteractif, excutez la commande suivante :


./runInstaller -responsefile myrespfile -silent

2-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

Installation non-interactive l'aide de fichiers de rponses L'installation non-interactive s'effectue lorsque aucune action de l'utilisateur n'est prvue ou si des terminaux non-graphiques sont utiliss pour l'installation. Les paramtres d'installation sont personnaliss l'aide d'un fichier de rponses. Il s'agit d'un fichier texte contenant des variables et des valeurs utilises par Oracle Universal Installer lors de l'installation. Ces paramtres incluent, par exemple, les valeurs de ORACLE_HOME et les types d'installation, c'est--dire standard (Typical) ou personnalise (Custom). L'utilisateur doit tout d'abord copier et modifier le fichier de rponses afin de dfinir les composants installer. UNIX : Des modles de fichiers de rponses sont disponibles dans le rpertoire stage/response. ./runInstaller -responsefile filename [-silent] [-nowelcome] NT : Des modles de fichiers de rponses sont disponibles dans le rpertoire Response du CD-ROM. setup.exe responsefile filename [-silent] Remarque : Il ne s'agit pas du mode caractre.

Oracle9i Database Administration I 2-6

Lancer Oracle Universal Installer en mode non-interactif Exemple : Lancez Oracle Universal Installer en mode non-interactif. UNIX : ./runInstaller responsefile FILENAME [-SILENT] [-NOWELCOME] O : FILENAME identifie le fichier de rponses. SILENT excute Oracle Universal Installer en mode automatique. NOWELCOME n'affiche pas de fentre de bienvenue. Si vous utilisez SILENT, ce paramtre n'est pas ncessaire. Exemple de fichier de rponses pour Unix : [General] RESPONSEFILE_VERSION=1.7.0 [Session] UNIX_GROUP_NAME="dba" FROM_LOCATION="/u01/stage/products.jar" ORACLE_HOME="/u01/app/oracle/ora9i" ORACLE_HOME_NAME="Ora9i" TOPLEVEL_COMPONENT={"oracle.server", "9.0.1.1.1"} SHOW_COMPONENT_LOCATIONS_PAGE=false SHOW_SUMMARY_PAGE=false SHOW_INSTALL_PROGRESS_PAGE=false SHOW_REQUIRED_CONFIG_TOOL_PAGE=false SHOW_OPTIONAL_CONFIG_TOOL_PAGE=false SHOW_END_SESSION_PAGE=false NEXT_SESSION=true SHOW_SPLASH_SCREEN=true SHOW_WELCOME_PAGE=false SHOW_ROOTSH_CONFIRMATION=true SHOW_EXIT_CONFIRMATION=true INSTALL_TYPE="Typical s_GlobalDBName="u01.us.oracle.com" s_mountPoint="/u01/app/oracle/ora9i/dbs" s_dbSid="db09" b_createDB=true

Oracle9i Database Administration I 2-7

Lancer Oracle Universal Installer en mode non-interactif Exemple de fichier de rponses (suite) : La section General indique le numro de version du fichier de rponses. La section Sessions rpertorie diverses botes de dialogue d'Universal Installer, dont les suivantes : FROM LOCATION indique l'emplacement de la source des produits installer. ORACLE_HOME, valeur de ORACLE_HOME ORACLE_HOME_NAME, valeur de ORACLE_HOME_NAME SHOW INSTALL PROGRESS correspond la page d'avancement de l'installation qui s'affiche lors de la phase d'installation. SHOW ROOTISH CONFIRMATION prend la valeur TRUE si la bote de dialogue demandant la confirmation de l'excution du script root.sh doit tre affiche. SHOW EXIT CONFIRMATION prend la valeur TRUE si la bote de dialogue demandant la confirmation de la fermeture de l'installeur doit tre affiche. Remarque : Pour plus d'informations sur la configuration d'un fichier de rponses, reportezvous au guide d'installation de votre systme d'exploitation.

Oracle9i Database Administration I 2-8

Oracle Database Configuration Assistant

Oracle Database Configuration Assistant vous permet de : crer une base de donnes configurer des options de base de donnes supprimer une base de donnes grer des modles

2-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle Database Configuration Assistant Le chapitre "Crer une base de donnes" explique comment crer une base l'aide d'Oracle Database Configuration Assistant.

Oracle9i Database Administration I 2-9

Administrateurs de base de donnes


Les utilisateurs SYS et SYSTEM sont crs automatiquement en mme temps que la base de donnes Ils reoivent le rle d'administrateur de base de donnes SYS Mot de passe : change_on_install Propritaire du dictionnaire de donnes de la base SYSTEM Mot de passe : manager Propritaire des tables et vues internes utilises par les outils Oracle
2-10 Copyright Oracle Corporation, 2001. Tous droits rservs.

Administrateurs de base de donnes Des privilges supplmentaires sont ncessaires pour excuter des tches d'administration (cration d'utilisateurs, par exemple) sur le serveur Oracle. A la cration d'une base de donnes, les deux comptes utilisateur SYS et SYSTEM sont crs automatiquement et reoivent le rle prdfini d'administrateur de base de donnes. Ce rle dispose de tous les privilges systme sur la base de donnes. SYS Lors de la cration d'une base de donnes, l'utilisateur SYS, identifi l'origine par le mot de passe change_on_install, est cr et devient propritaire du dictionnaire de donnes, dont les informations sont essentielles. Si vous tentez de vous connecter en tant que SYS sans le privilge SYSDBA ou SYSOPER, vous recevrez le message d'erreur suivant : ORA-28009 connecting to SYS should be SYSDBA or SYSOPER. SYSTEM Lors de la cration d'une base de donnes, l'utilisateur SYSTEM, identifi l'origine par le mot de passe manager, est galement cr automatiquement. Des tables et des vues appartenant l'utilisateur SYSTEM sont cres. Elles contiennent des informations d'administration utilises par les outils Oracle. En fonction du mode de cration de la base de donnes (cration manuelle ou l'aide de Database Creation Assistant), il est possible de crer d'autres utilisateurs. Vous devez crer au moins un nom d'administrateur supplmentaire pour excuter les tches d'administration quotidiennes. Pour des raisons de scurit, il convient de changer les mots de passe par dfaut de SYS et SYSTEM immdiatement aprs la cration de la base de donnes.

Oracle9i Database Administration I 2-10

SQL*Plus
Outil Oracle qui permet :
d'interagir avec la base de donnes et de la manipuler, de dmarrer et d'arrter la base de donnes, de crer et d'excuter des interrogations, d'ajouter des lignes, de modifier des donnes et d'crire des tats personnaliss.

Sous-ensemble du langage SQL standard avec des extensions spcifiques Connexion SQL*Plus
sqlplus /nolog connect / as sysdba
Connected to an idle instance.

2-11

Copyright Oracle Corporation, 2001. Tous droits rservs.

SQL*Plus SQL*Plus est l'outil de ligne de commande d'Oracle qui permet d'excuter la suite de commandes SQL (Structured Query Language) standard. SQL est un langage fonctionnel qui permet aux utilisateurs de communiquer avec Oracle pour ajouter, mettre jour ou modifier des donnes dans la base, ou en extraire des donnes.

Oracle9i Database Administration I 2-11

Oracle Enterprise Manager

Outil de gestion centralise des systmes, destin aux administrateurs de base de donnes Outil permettant d'excuter les tches d'administration, de diagnostic et de rglage sur plusieurs bases de donnes Outil permettant d'administrer plusieurs noeuds de rseau et services partir de plusieurs emplacements Permet de partager des tches avec d'autres administrateurs. Fournit des outils d'administration de serveurs parallles et de bases de donnes de rplication.
2-12 Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle Enterprise Manager Oracle Enterprise Manager est une structure de gestion unifie compose d'une console base Java, d'une suite d'outils et de services et d'un rseau de serveurs de gestion et d'Agents Intelligents. La console affiche les objets du systme et leurs relations dans une arborescence hirarchique et sous forme graphique. Les services standard, qui incluent la gestion et la planification des travaux (Job scheduling), la gestion des vnements, le reprage (discovery) et la gestion des bases de donnes, ainsi que le reprage et la gestion des services, offrent une structure complte pour Oracle Enterprise Manager. En outre, Oracle Enterprise Manager comporte des applications intgres qui permettent de raliser des tches d'administration standard et avances. Ces applications incluent des packs facultatifs tels que Diagnostics Pack, Tuning Pack et Change Management Pack, ainsi que d'autres applications telles qu'Oracle Net Manager, Spatial Index Advisor et Text Manager.

Oracle9i Database Administration I 2-12

Architecture d'Oracle Enterprise Manager

Oracle Management Server Console

Agent Oracle server

Rfrentiel (repository)

Agent Oracle server

Oracle Management Server

Agent

Oracle server

2-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Architecture d'Oracle Enterprise Manager Oracle Enterprise Manager utilise une architecture trois niveaux (three-tier) : Premier niveau : des clients console et des outils intgrs offrent l'interface graphique utilise par les administrateurs. Deuxime niveau : les serveurs OMS (Oracle Management Server) et un rfrentiel (repository) de bases de donnes constituent un niveau intermdiaire (middle tier) volutif pour le traitement des tches de gestion du systme. Troisime niveau : un Agent Intelligent install sur chaque noeud surveille les services du noeud et excute des tches demandes par le serveur de gestion. Etant donn qu'il n'est pas toujours ncessaire d'implmenter Oracle Enterprise Manager en tant que systme trois niveaux (3-tiers), ce produit est galement disponible dans une architecture deux niveaux (2-tiers), avec connexion directe aux bases de donnes. Le lancement de la console en mode autonome permet d'utiliser une ou plusieurs applications sans Oracle Management Server ou l'Agent Intelligent. Vous pouvez utiliser la console en mode autonome pour effectuer des tches administratives de base qui ne requirent pas le systme Job, Event ou Group.

Oracle9i Database Administration I 2-13

Architecture d'Oracle Enterprise Manager (suite) Console Le premier niveau est compos de clients tels que les consoles et les applications de gestion qui prsentent des interfaces utilisateur aux administrateurs pour toutes leurs tches de gestion. La majeure partie de la logique applicative du premier niveau dpend du deuxime niveau (Oracle Management Server) Remarque : A partir de la version Oracle9i, la connexion la console peut s'effectuer en mode autonome. Dans les versions antrieures, toutes les connexions s'effectuaient via Oracle Management Server. Oracle Management Server Oracle Management Server (OMS) est le deuxime niveau d'Oracle Enterprise Manager. OMS reprsente la partie centrale de la structure d'Oracle Enterprise Manager et fournit des comptes utilisateur d'administration, traite des fonctions telles que les travaux et les vnements et gre le flux d'informations entre la console (premier niveau) et les noeuds grs (troisime niveau). Toutes les donnes systme, les donnes d'application, les informations sur le statut des noeuds grs et les informations sur les packs grs par le systme sont stockes dans un rfrentiel (repository). Rfrentiel Oracle Enterprise Manager Le rfrentiel est un ensemble de tables cr lors de la configuration d'OMS. Il est utilis par OMS comme emplacement de stockage back-end persistant. Si cela s'avre ncessaire, il est possible d'utiliser plusieurs OMS qui partageront un rfrentiel et garantiront fiabilit et tolrance aux pannes. Noeuds Le troisime niveau est compos de noeuds grs contenant des cibles telles que des bases de donnes et d'autres services grs. Un Agent Intelligent rside sur chaque noeud. Il communique avec OMS et ralise les tches demandes par les consoles et les applications client. Un seul Agent Intelligent est ncessaire par noeud. L'Agent Intelligent s'excute indpendamment de la base de donnes, de la console et d'Oracle Management Server. Ce type de fonctionnement permet aux Agents Intelligents de raliser des tches telles que le dmarrage et l'arrt d'une base de donnes tout en restant oprationnels si une autre partie du systme est en panne. L'ID de l'Agent Intelligent est dbsnmp.

Oracle9i Database Administration I 2-14

Console
Point de lancement central Peut tre excute sur client lger ou client lourd Peut tre lance en mode autonome ou via un OMS
2-15 Copyright Oracle Corporation, 2001. Tous droits rservs.

Fonctionnalits de la console La console fournit une interface utilisateur aux administrateurs et un point de lancement central pour l'ensemble des outils et des applications de gestion. SQL*Plus Worksheet peut tre lanc depuis la console. Il est possible d'excuter la console en mode lger via le Web ou en tant que client lourd. Les clients lgers utilisent un navigateur Web pour se connecter un serveur sur lequel sont installs des fichiers de console. Pour les clients lourds, les fichiers doivent tre installs localement. Il est possible de lancer la console en mode autonome ou en se connectant Oracle Management Server. Remarque : Ce cours n'est pas destin prsenter en dtail Oracle Enterprise Manager, la console ou Oracle Management Server. Pour plus d'informations sur l'utilisation d'Oracle Enterprise Manager, voir le cours Oracle Enterprise Manager 9i.

Oracle9i Database Administration I 2-15

Dmarrer la console Oracle Enterprise Manager Exemple : Dmarrez la console OEM. 1. Lancez la console : Start > Programs > Oracle-OraHome90 > Enterprise Manager Console 2. Choisissez de dmarrer la console l'aide de l'une des options suivantes : Login to the Oracle Management Server Launch standalone 3. Cliquez sur OK.

Oracle9i Database Administration I 2-16

Synthse

Ce chapitre vous a permis d'apprendre : identifier les outils d'administration de base de donnes identifier les fonctions d'Oracle Universal Installer utiliser SQL*Plus pour accder une base de donnes et la manipuler identifier les principaux composants d'Oracle Enterprise Manager

2-17

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 2-17

Prsentation de l'exercice 2

Dans cet exercice, vous allez : vous connecter SQL*Plus vous connecter la console Oracle Enterprise Manager

2-18

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 2-18

Grer une instance Oracle

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : crer et grer des fichiers de paramtres d'initialisation dmarrer et arrter une instance surveiller et utiliser des fichiers de diagnostic

3-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 3-2

Fichiers de paramtres d'initialisation


Instance Oracle
Zone de mmoire partage Cache "library" Cache du dictionnaire de donnes PMON SMON Mmoire SGA Cache de tampons de la base de donnes
Zone de mmoire Java

Tampon de journalisation
Zone de mmoire LARGE POOL

DBW0 LGWR

CKPT

Autres

spfiledb01.ora

CONNECT / AS SYSDBA STARTUP

3-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Fichiers de paramtres d'initialisation Pour dmarrer une instance, le serveur Oracle doit lire le fichier de paramtres d'initialisation.

Oracle9i Database Administration I 3-3

Fichiers de paramtres d'initialisation


Les entres sont propres l'instance en cours de dmarrage Il existe deux types de paramtre :
Explicite Le fichier contient une entre. Implicite Le fichier ne contient aucune entre, mais prend en compte les valeurs Oracle par dfaut.

Une instance peut prsenter plusieurs fichiers de paramtres d'initialisation Les modifications apportes aux entres du fichier s'appliquent en fonction du type de fichier de paramtres d'initialisation utilis :
Fichier de paramtres statique, PFILE Fichier de paramtres persistant, SPFILE
3-4 Copyright Oracle Corporation, 2001. Tous droits rservs.

Fichiers de paramtres d'initialisation Pour dmarrer une instance, le serveur Oracle lit le fichier de paramtres d'initialisation. Ce dernier peut tre de deux types : Fichier de paramtres statique, PFILE, gnralement nomm initSID.ora. Fichier de paramtres persistant, SPFILE, gnralement nomm spfileSID.ora. Contenu des fichiers de paramtres d'initialisation : Liste de paramtres d'instance Nom de la base de donnes laquelle l'instance est associe Affectations destines aux structures mmoire de la mmoire SGA (System Global Area) Utilisation des fichiers de journalisation en ligne (online) remplis Noms et emplacements des fichiers de contrle Informations relatives aux segments d'annulation Une instance peut prsenter plusieurs fichiers de paramtres d'initialisation afin d'optimiser les performances dans certaines situations.

Oracle9i Database Administration I 3-4

Fichiers de paramtres d'initialisation Utiliser Oracle Enterprise Manager pour afficher les paramtres d'initialisation A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Instance > Configuration. 2. Slectionnez All Initialization Parameters dans la page General.

Oracle9i Database Administration I 3-5

Fichier PFILE initSID.ora

Il s'agit d'un fichier texte Il peut tre modifi l'aide d'un diteur du systme d'exploitation Toute modification est apporte manuellement Les modifications sont effectives au dmarrage suivant Il ne peut tre ouvert que lors du dmarrage de l'instance Son rpertoire par dfaut est $ORACLE_HOME/dbs

3-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

PFILE PFILE est un fichier texte que vous pouvez mettre jour l'aide d'un diteur standard du systme d'exploitation. Ce fichier est en lecture seule pendant le dmarrage de l'instance. S'il est modifi, l'instance doit tre interrompue et redmarre pour que les nouvelles valeurs des paramtres soient effectives. Par dfaut, le fichier PFILE se trouve dans le rpertoire $ORACLE_HOME/dbs sous le nom initSID.ora.

Oracle9i Database Administration I 3-6

Crer un fichier PFILE


Crez ce fichier partir d'un exemple de fichier init.ora.
Oracle Universal Installer installe un exemple de fichier. Copiez l'exemple l'aide de la commande approprie du systme d'exploitation. Identifiez-le de faon unique l'aide d'un SID de base de donnes. cp init.ora $ORACLE_HOME/dbs/initdba01.ora

Modifiez le fichier initSID.ora.


Editez les paramtres. Affectez des valeurs qui rpondent aux besoins de la base de donnes.
3-7 Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer un fichier PFILE Au cours de l'installation, Oracle Universal Installer cre un exemple de fichier init.ora, que vous pouvez utiliser pour crer un fichier initSID.ora propre l'instance. Les paramtres du fichier initSID.ora peuvent tre modifis l'aide d'un diteur de texte.

Oracle9i Database Administration I 3-7

Exemple de fichier PFILE


# Initialization Parameter File: initdba01.ora db_name instance_name = dba01 = dba01

control_files = ( home/dba01/ORADATA/u01/control01dba01.ctl, home/dba01/ORADATA/u02/control01dba02.ctl) db_block_size db_cache_size shared_pool_size java_pool_size max_dump_file_size user_dump_dest core_dump_dest undo_management undo_tablespace . . .
3-8 Copyright Oracle Corporation, 2001. Tous droits rservs.

= 4096 = 4M = 50000000 = 50000000 = 10240 = /home/dba01/ADMIN/UDUMP = /home/dba01/ADMIN/CDUMP = AUTO = UNDOTBS

background_dump_dest = /home/dba01/ADMIN/BDUMP

Exemple de fichier PFILE Indiquez les valeurs au format suivant : mot-cl=valeur. Le serveur propose une valeur par dfaut pour chaque paramtre. Cette valeur peut dpendre du systme d'exploitation, selon le paramtre utilis. Les paramtres peuvent tre indiqus dans n'importe quel ordre, sauf exception. Les lignes de commentaires sont prcdes du symbole #. Placez les paramtres entre guillemets pour inclure des littraux de type caractre. Vous pouvez ajouter d'autres fichiers l'aide du mot-cl IFILE. Si la distinction majuscules/minuscules est importante pour le systme d'exploitation, elle doit galement tre respecte pour les noms de fichier. Les valeurs multiples sont places entre parenthses et spares par des virgules. Remarque : Adoptez une convention d'numration des paramtres dans l'ordre alphabtique ou par groupe de fonctions. Le fichier PFILE varie d'une instance l'autre et ne se prsente pas ncessairement comme dans la diapositive.

Oracle9i Database Administration I 3-8

Fichier SPFILE spfileSID.ora

Il s'agit d'un fichier binaire. Sa mise jour est effectue par le serveur Oracle. Il rside toujours ct serveur. Il permet de rendre les modifications persistantes aprs l'arrt et le redmarrage. Il peut rgler les valeurs des paramtres. Il peut bnficier de la prise en charge d'Oracle Recovery Manager pour effectuer des sauvegardes du fichier de paramtres d'initialisation.

3-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Fichier SPFILE Oracle9i propose un nouveau fichier binaire nomm SPFILE. Ce fichier ne doit pas tre modifi manuellement et doit toujours rsider ct serveur. Une fois cr, le fichier est mis jour par le serveur Oracle. S'il est modifi manuellement, il devient inutile. Il permet d'apporter la base de donnes des modifications qui seront conserves aprs l'arrt et le redmarrage. En outre, il peut rgler lui-mme les valeurs des paramtres, qui sont enregistres dans le fichier. Il peut bnficier de la prise en charge de RMAN pour effectuer des sauvegardes du fichier de paramtres d'initialisation, parce qu'il rside ct serveur. Par dfaut, il se trouve dans le rpertoire $ORACLE_HOME/dbs et son nom se prsente sous le format spfileSID.ora.

Oracle9i Database Administration I 3-9

Crer un fichier SPFILE

Crez ce type de fichier partir d'un fichier PFILE.


CREATE SPFILE = $ORACLE_HOME/dbs/spfileDBA01.ora FROM PFILE = $ORACLE_HOME/dbs/initDBA01.ora;

o : SPFILE-NAME correspond au fichier SPFILE crer, PFILE-NAME correspond au fichier PFILE qui sert de base la cration du fichier SPFILE.

Il peut tre excut avant ou aprs le dmarrage de l'instance.

3-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer un fichier SPFILE Vous pouvez crer un fichier SPFILE partir d'un fichier PFILE l'aide de la commande CREATE SPFILE, excutable avant ou aprs le dmarrage de l'instance si vous disposez du privilge SYSDBA. SQL> CREATE SPFILE [='SPFILE-NAME'] 2 FROM PFILE[='PFILE-NAME'] O : SPFILE-NAME correspond au nom du fichier SPFILE crer, PFILE-NAME correspond au nom du fichier PFILE utilis pour crer le SPFILE. Le fichier PFILE doit tre disponible ct serveur. Si vous ne prcisez pas SPFILE-NAME et PFILE-NAME dans la syntaxe, Oracle utilise le fichier PFILE par dfaut pour gnrer un SPFILE dont le nom sera dfini par le systme. SQL> CREATE SPFILE FROM PFILE;

Oracle9i Database Administration I 3-10

Crer un fichier SPFILE (suite) Exporter un fichier SPFILE Le contenu d'un fichier SPFILE peut tre export vers un PFILE. SQL> CREATE PFILE FROM SPFILE; Le PFILE est cr ct serveur sous forme de fichier texte. Cette commande peut tre excute avant ou aprs le dmarrage de l'instance. Vous pouvez ainsi afficher le fichier SPFILE et apporter des modifications en : exportant le SPFILE vers un PFILE, ditant le fichier PFILE, recrant le fichier SPFILE partir du PFILE dit. L'export d'un SPFILE vers un PFILE permet galement de crer une sauvegarde du fichier de paramtres persistant. Remarque : Dans Oracle9i, RMAN peut galement sauvegarder des fichiers de paramtres persistants. V$SPPARAMETER Outre les options prsentes prcdemment, vous pouvez utiliser la vue V$SPPARAMETER pour afficher le contenu du fichier SPFILE.

Oracle9i Database Administration I 3-11

Crer un fichier SPFILE Utiliser Oracle Enterprise Manager pour crer un fichier SPFILE A partir de la console OEM, procdez comme suit : 1. Slectionnez Object > Create spfile dans le menu principal.

Utiliser Oracle Enterprise Manager pour exporter un fichier SPFILE A partir de la console OEM, procdez comme suit : 1. Slectionnez Object > Create pfile dans le menu principal.

Oracle9i Database Administration I 3-12

Exemple de fichier SPFILE


*.background_dump_dest=/home/dba01/ADMIN/BDUMP *.compatible='9.0.0' *.control_files='/home/dba01/ORADATA/u01/ctrl01.ctl *.core_dump_dest=/home/dba01/ADMIN/CDUMP *.db_block_size=4096 *.db_name='dba01 *.db_domain=world *.global_names=TRUE *.instance_name='dba01' *.remote_login_passwordfile='exclusive *.java_pool_size=50000000 *.shared_pool_size=50000000 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS' . . .

3-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Exemple de fichier SPFILE Les commentaires qui figurent sur les mmes lignes que les paramtres dans le fichier PFILE sont mis jour dans le fichier SPFILE. Tous les autres commentaires sont ignors. Le SPFILE est un fichier binaire, bien que son texte soit lisible sous Unix. Sa modification manuelle le rend inutilisable. Si vous devez consulter le contenu d'un fichier SPFILE ou y apporter des modifications, exportez-le vers un fichier PFILE.

Oracle9i Database Administration I 3-13

Fonctionnement de la commande STARTUP


Ordre des priorits :
spfileSID.ora SPFILE par dfaut initSID.ora PFILE par dfaut

Vous pouvez modifier ces priorits si vous indiquez un PFILE :


STARTUP PFILE = $ORACLE_HOME/dbs/initDBA1.ora

Un PFILE peut indiquer qu'un SPFILE doit tre utilis.


SPFILE = /database/startup/spfileDBA1.ora

3-14

Copyright Oracle Corporation, 2001. Tous droits rservs.

Fonctionnement de la commande STARTUP Ordre des priorits : Lorsque la commande STARTUP est utilise, le fichier spfileSID.ora ct serveur dmarre l'instance. Si aucun fichier spfileSID.ora n'est dtect, le fichier SPFILE par dfaut ct serveur est utilis pour dmarrer l'instance. Si aucun fichier SPFILE par dfaut n'est dtect, le fichier initSID.ora ct serveur est utilis pour dmarrer l'instance. Si vous indiquez un fichier PFILE, le fichier SPFILE par dfaut n'est pas utilis pour dmarrer l'instance. Un fichier PFILE peut ventuellement contenir une dfinition prcisant qu'un SPFILE doit tre utilis. Il n'existe pas d'autre moyen de dmarrer l'instance l'aide d'un SPFILE qui ne se trouve pas l'emplacement par dfaut. Dans ce cas, pour dmarrer la base de donnes, vous devez placer SPFILE=<full path and filename> dans le fichier PFILE. Exemple : SPFILE=$HOME/ADMIN/PFILE/$ORACLE_SID.ora.

Oracle9i Database Administration I 3-14

Modifier des paramtres du fichier SPFILE


Utilisez la commande ALTER SYSTEM pour apporter des modifications aux valeurs de paramtres :
ALTER SYSTEM SET undo_tablespace = 'UNDO2';

Indiquez si ces modifications sont temporaires ou persistantes :


ALTER SYSTEM SET undo_tablespace = 'UNDO2' SCOPE=BOTH;

Supprimez ou rinitialisez des valeurs :


ALTER SYSTEM RESET undo_suppress_errors SCOPE=BOTH SID='*';

3-15

Copyright Oracle Corporation, 2001. Tous droits rservs.

Modifier des paramtres du fichier SPFILE La commande ALTER SYSTEM SET permet de modifier la valeur des paramtres de l'instance. ALTER SYSTEM SET parameter_name = parameter_value [COMMENT 'text'] [SCOPE = MEMORY|SPFILE|BOTH] [SID= 'sid'|'*'] o : parameter_name correspond au nom du paramtre modifier, parameter_value dsigne la nouvelle valeur du paramtre, COMMENT correspond un commentaire ajouter dans le fichier SPFILE, en regard du paramtre modifi, SCOPE indique si la modification doit tre apporte dans la mmoire, dans le fichier SPFILE ou dans les deux, MEMORY modifie la valeur du paramtre uniquement dans l'instance en cours, SPFILE modifie la valeur du paramtre uniquement dans le fichier SPFILE, BOTH modifie la valeur du paramtre dans l'instance en cours et dans le fichier SPFILE, SID identifie le SID Oracle (ORACLE_SID) du fichier SPFILE utilis, 'sid' dsigne le SID spcifique utiliser lors de la modification du fichier SPFILE, '*' utilise le fichier SPFILE par dfaut.

Oracle9i Database Administration I 3-15

Modifier des paramtres du fichier SPFILE (suite) Exemple : SQL> SHOW PARAMETERS undo_suppress_errors NAME undo_suppress_errors TYPE boolean VALUE FALSE ---------------------- ----------- -------

SQL> ALTER SYSTEM SET undo_suppress_errors = TRUE 2 COMMENT = temporary testing SCOPE=BOTH 3 SID=DBA01; SQL> SHOW PARAMETERS undo_suppress_errors NAME undo_suppress_errors TYPE boolean VALUE TRUE ---------------------- ----------- -------

La commande ALTER SYSTEM RESET permet d'effectuer une suppression ou de rtablir la valeur par dfaut. SQL> ALTER SYSTEM RESET parameter_name [SCOPE = MEMORY|SPFILE|BOTH] [SID= sid|*] Exemple : SQL> ALTER SYSTEM RESET undo_suppress_errors 2 SCOPE=BOTH SID=dba01; Il existe plusieurs mthodes de suppression d'un paramtre du fichier SPFILE : Utilisez la commande ALTER SYSTEM SET pour rinitialiser la valeur par dfaut du paramtre afin de simuler une suppression. Recrez le fichier SPFILE l'aide de la commande CREATE SPFILE FROM PFILE. Utilisez la commande ALTER SYSTEM RESET pour supprimer le paramtre du fichier SPFILE.

Oracle9i Database Administration I 3-16

Modifier des paramtres du fichier SPFILE (suite) Utiliser Oracle Enterprise Manager pour modifier la configuration du fichier SPFILE A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Instance. 2. Cliquez sur Configuration. 3. Dans la page General, cliquez sur All Initialization Parameters. 4. Modifiez un paramtre dans la colonne des valeurs. 5. Cliquez sur OK.

Oracle9i Database Administration I 3-17

Paramtres indiquer dans le fichier de paramtres d'initialisation

Paramtre BACKGROUND_DUMP_DES T

Description Emplacement d'criture des fichiers trace de processus en arrire-plan (LGWR, DBWn, etc.). Il s'agit galement de l'emplacement du fichier d'alertes. Version du serveur avec laquelle l'instance doit tre compatible. Nom des fichiers de contrle. Taille du cache pour les blocs de taille standard Identificateur de base de donnes pouvant comporter jusqu' 8 caractres. Il s'agit du seul paramtre obligatoire lors de la cration d'une base de donnes. Taille (en octets) de la zone de mmoire partage.

COMPATIBLE CONTROL_FILES DB_CACHE_SIZE DB_NAME

SHARED_POOL_SIZE USER_DUMP_DEST

Remarque : Les valeurs par dfaut varient selon la version du serveur Oracle.

Emplacement de cration des fichiers trace de dbogage utilisateur pour un processus utilisateur. Paramtres communment modifis

Paramtre IFILE

Description Nom du fichier de paramtres imbriquer dans le fichier de paramtres en cours. Il est possible d'utiliser jusqu' trois niveaux d'imbrication. Nombre d'octets allous au tampon de journalisation (redo log buffer) dans la mmoire SGA. Taille maximale des fichiers trace, exprime en nombre de blocs du systme d'exploitation. Nombre maximal de processus du systme d'exploitation pouvant se connecter simultanment l'instance. Active ou dsactive la fonction trace SQL pour chaque session utilisateur. Active ou dsactive le moment du dclenchement dans les fichiers trace et sur les crans de surveillance. I 3-18 Oracle9i Database Administration

LOG_BUFFER

MAX_DUMP_FILE_SIZE PROCESSES

SQL_TRACE TIMED_STATISTICS

Dmarrer une base de donnes en mode NOMOUNT


OPEN STARTUP MOUNT

NOMOUNT Instance dmarre SHUTDOWN SHUTDOWN

3-19

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dmarrer une base de donnes Lorsque vous lancez la base de donnes, vous slectionnez son statut de dmarrage. Les scnarios suivants dcrivent les diffrentes tapes de dmarrage d'une instance. Dmarrer l'instance (NOMOUNT) Le dmarrage d'une instance en mode NOMOUNT ne s'effectue qu' la cration d'une base de donnes ou la recration de fichiers de contrle. Le dmarrage d'une instance comprend les tches suivantes : La lecture du fichier d'initialisation dans le rpertoire $ORACLE_HOME/dbs dans l'ordre suivant : fichier spfileSID.ora, s'il n'est pas dtect, fichier spfile.ora, s'il n'est pas dtect, fichier initSID.ora. La dclaration du paramtre PFILE avec STARTUP remplace les valeurs par dfaut. L'affectation de la mmoire SGA. Le dmarrage des processus d'arrire-plan. L'ouverture du fichier alertSID.log et des fichiers trace. Nommez la base de donnes l'aide du paramtre DB_NAME dans le fichier de paramtres d'initialisation ou dans la commande STARTUP.

Oracle9i Database Administration I 3-19

Dmarrer une base de donnes en mode MOUNT


OPEN STARTUP MOUNT Fichier de contrle ouvert pour cette instance

NOMOUNT Instance dmarre SHUTDOWN

SHUTDOWN

3-20

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dmarrer une base de donnes Monter la base de donnes (MOUNT) : Pour effectuer des oprations de maintenance, vous dmarrez une instance et montez une base de donnes sans l'ouvrir. C'est le cas, par exemple, pour les tches suivantes : renommer des fichiers de donnes, activer ou dsactiver des options d'archivage de fichiers de journalisation, effectuer une rcupration complte de la base de donnes. Le montage d'une base de donnes comprend les tches suivantes : Association d'une base de donnes une instance dmarre Localisation et ouverture des fichiers de contrle indiqus dans le fichier de paramtres Lecture des fichiers de contrle pour extraire le nom et le statut des fichiers de donnes et des fichiers de journalisation. Toutefois, l'existence des fichiers de donnes et des fichiers de journalisation en ligne n'est pas vrifie ce stade.

Oracle9i Database Administration I 3-20

Dmarrer une base de donnes en mode OPEN


OPEN STARTUP MOUNT Tous les fichiers sont ouverts, comme indiqu par le fichier de contrle de cette instance

NOMOUNT Instance dmarre SHUTDOWN

Fichier de contrle ouvert pour cette instance

SHUTDOWN

3-21

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dmarrer une base de donnes Ouvrir la base de donnes (OPEN) : En mode de fonctionnement normal, vous dmarrez une instance avant de monter et d'ouvrir la base de donnes. Ainsi, les utilisateurs autoriss peuvent se connecter la base et effectuer des oprations standard sur les donnes. L'ouverture de la base de donnes comprend les tches suivantes : Ouverture des fichiers de donnes en ligne Ouverture des fichiers de journalisation en ligne Si un fichier de donnes ou de journalisation en ligne est absent lorsque vous tentez d'ouvrir la base de donnes, le serveur Oracle renvoie une erreur. Au cours de cette dernire tape, le serveur Oracle vrifie que tous les fichiers de donnes et de journalisation en ligne peuvent tre ouverts et contrle la cohrence de la base de donnes. Si ncessaire, le processus d'arrire-plan SMON (System Monitor) dclenche la rcupration de l'instance.

Oracle9i Database Administration I 3-21

Commande STARTUP

Dmarrez l'instance et ouvrez la base de donnes :


STARTUP STARTUP PFILE=$ORACLE_HOME/dbs/initdb01.ora

3-22

Copyright Oracle Corporation, 2001. Tous droits rservs.

Commande STARTUP Pour dmarrer une instance, excutez la commande suivante : STARTUP [FORCE] [RESTRICT] [PFILE=filename] [OPEN [RECOVER][database] |MOUNT |NOMOUNT] (Remarque : Cet exemple n'intgre pas l'ensemble de la syntaxe.) O : OPEN permet aux utilisateurs d'accder la base de donnes, MOUNT monte la base de donnes pour certaines tches d'administration, mais ne permet pas aux utilisateurs d'y accder, NOMOUNT cre la mmoire SGA et lance les processus d'arrire-plan, mais ne permet pas d'accder la base de donnes, PFILE=parfile permet de configurer l'instance partir d'un fichier contenant des paramtres qui ne sont pas des paramtres par dfaut.

Oracle9i Database Administration I 3-22

Dmarrer (suite) FORCE interrompt l'instance en cours, puis excute un dmarrage normal RESTRICT n'autorise l'accs la base de donnes qu'aux utilisateurs disposant du privilge RESTRICTED SESSION RECOVER lance la procdure de restauration physique au dmarrage de la base de donnes Automatiser le dmarrage de la base de donnes Sous UNIX : Le dmarrage et l'arrt automatiques de la base de donnes peuvent tre contrls par les entres d'un fichier spcial du systme d'exploitation (par exemple, le fichier oratab qui se trouve dans le rpertoire /var/opt/oracle). Remarque : Pour plus d'informations, voir le guide d'installation de votre systme d'exploitation. Dpannage Si vous rencontrez des erreurs l'excution de la commande STARTUP, vous devez d'abord lancer la commande SHUTDOWN avant de rexcuter la commande STARTUP. Remarque : STARTUP et SHUTDOWN sont des commandes SQL*Plus et non SQL.

Oracle9i Database Administration I 3-23

Options d'arrt (suite) Utiliser Oracle Enterprise Manager pour dmarrer une base de donnes A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Instance. 2. Cliquez sur Configuration. 3. Dans l'onglet General, slectionnez l'option Open. 4. Cliquez sur Apply. Remarque : Pour dmarrer une base de donnes, vous devez disposer des privilges SYSDBA.

Oracle9i Database Administration I 3-24

Commande ALTER DATABASE

Remplacez le statut NOMOUNT de la base de donnes par le statut MOUNT :


ALTER DATABASE db01 MOUNT;

Ouvrez la base de donnes en lecture seule :


ALTER DATABASE db01 OPEN READ ONLY;

3-25

Copyright Oracle Corporation, 2001. Tous droits rservs.

Commande ALTER DATABASE Pour faire passer la base de donnes du statut NOMOUNT MOUNT ou du statut MOUNT OPEN, excutez la commande ALTER DATABASE : ALTER DATABASE { MOUNT | OPEN } Vous pouvez ouvrir la base de donnes en mode lecture seule pour viter que des transactions utilisateur ne modifient des donnes. Pour dmarrer une instance, excutez la commande suivante : ALTER DATABASE OPEN [READ WRITE| READ ONLY] O : READ WRITE : ouvre la base de donnes en lecture-criture pour permettre aux utilisateurs de gnrer des fichiers de journalisation READ ONLY : limite l'accs aux transactions en lecture seule et ne permet pas de gnrer des informations de journalisation

Oracle9i Database Administration I 3-25

Ouvrir une base de donnes en mode d'accs restreint


Utilisez la commande STARTUP pour restreindre l'accs une base de donnes :
STARTUP RESTRICT

Utilisez la commande ALTER SYSTEM pour placer une instance en mode d'accs restreint :
ALTER SYSTEM ENABLE RESTRICTED SESSION;

3-26

Copyright Oracle Corporation, 2001. Tous droits rservs.

Ouvrir une base de donnes en mode d'accs restreint Une session en mode restreint s'avre utile, par exemple, lors de la mise jour des structures ou de l'import/export d'une base de donnes. Vous pouvez dmarrer la base de donnes en mode restreint pour qu'elle ne soit accessible qu'aux utilisateurs disposant du privilge RESTRICTED SESSION. Vous pouvez galement mettre la base de donnes en mode d'accs restreint l'aide de la commande SQL ALTER SYSTEM : ALTER SYSTEM [ {ENABLE|DISABLE} RESTRICTED SESSION ] O : ENABLE RESTRICTED SESSION accepte uniquement les connexions ultrieures des utilisateurs disposant du privilge RESTRICTED SESSION, DISABLE RESTRICTED SESSION dsactive le privilge RESTRICTED SESSION pour que les utilisateurs qui ne le possdent pas puissent se connecter. Mettre fin des sessions Aprs avoir plac une instance en mode d'accs restreint, procdez comme suit pour fermer toutes les sessions utilisateur actives avant d'effectuer des tches administratives : ALTER SYSTEM KILL SESSION 'integer1,integer2' O : integer1 correspond la valeur de la colonne SID de la vue V$SESSION integer2 correspond la valeur de la colonne SERIAL# de la vue V$SESSION

Oracle9i Database Administration I 3-26

Ouvrir une base de donnes en mode d'accs restreint (suite) Remarque : L'ID de session et le numro de srie permettent d'identifier une session de faon unique. Cette unicit garantit que la commande ALTER SYSTEM KILL SESSION est applique la session approprie, mme si l'utilisateur se dconnecte et qu'une nouvelle session est ouverte sous le mme ID de session. Consquences de la fin d'une session A l'excution de la commande ALTER SYSTEM KILL SESSION, le processus d'arrireplan PMON effectue les tches suivantes : Annulation de la transaction en cours de l'utilisateur Libration de tous les verrous de table ou de ligne Libration de toutes les ressources rserves par l'utilisateur

Oracle9i Database Administration I 3-27

Options d'arrt (suite) Utiliser Oracle Enterprise Manager pour ouvrir une base de donnes en mode d'accs restreint A partir de la console OEM, procdez comme suit : 1. Slectionnez Instance > Configuration. 2. Slectionnez la page General. 3. Dans Instance State, slectionnez l'option Shutdown. 4. Slectionnez Apply. 5. Dans la bote de dialogue Shutdown Options qui s'affiche, slectionnez l'option Immediate. 6. Slectionnez OK. 7. Slectionnez Close lorsque le traitement est termin. 8. Dans Instance State, slectionnez l'option Open. 9. Slectionnez OK. 10. Dans la bote de dialogue Startup Options qui s'affiche, slectionnez l'option Restrict access to database. 11. Slectionnez OK. 12. Cliquez sur Close lorsque le traitement est termin. Remarque : Pour effectuer cette procdure, vous devez disposer des privilges SYSDBA.

Oracle9i Database Administration I 3-28

Ouvrir une base de donnes en mode lecture seule


Ouvrir une base de donnes en mode lecture seule
STARTUP MOUNT ALTER DATABASE OPEN READ ONLY;

Une base de donnes en lecture seule permet :


d'excuter des interrogations, d'excuter des tris sur disque l'aide de tablespaces grs localement, de mettre des fichiers de donnes hors ligne et en ligne, mais pas des tablespaces, de rcuprer des fichiers de donnes et des tablespaces hors ligne.

3-29

Copyright Oracle Corporation, 2001. Tous droits rservs.

Ouvrir une base de donnes en mode lecture seule Vous pouvez ouvrir une base de donnes en lecture seule si elle n'est pas dj ouverte en mode lecture-criture. Cette fonctionnalit est particulirement utile lorsqu'une base de donnes de secours doit dcharger la base de donnes de production du traitement des interrogations. Pour qu'une interrogation devant utiliser un tablespace temporaire (par exemple, pour les tris sur disque) aboutisse, l'utilisateur en cours doit disposer d'un tablespace gr localement et affect en tant que tablespace temporaire par dfaut. L'utilisateur SYS doit disposer d'un tablespace gr localement. Remarque : Les tablespaces grs localement sont traits dans un autre chapitre. Le mode lecture seule ne limite ni la fonction de rcupration de la base de donnes, ni les oprations de modification de son statut sans gnration de donnes de journalisation. Ainsi, en mode lecture seule : les fichiers de donnes peuvent tre mis hors ligne (offline) et en ligne (online), les fichiers de donnes et les tablespaces hors ligne peuvent tre rcuprs. Les oprations d'criture sur disque portant sur d'autres fichiers, tels que les fichiers de contrle, les traces d'audit du systme d'exploitation, les fichiers trace et les fichiers d'alertes, peuvent se poursuivre en mode lecture seule.

Oracle9i Database Administration I 3-29

Options d'arrt (suite) Utiliser Oracle Enterprise Manager pour dmarrer une base de donnes en mode lecture seule A partir de la console OEM, procdez comme suit : 1. Slectionnez Instance > Configuration. 2. Slectionnez la page General. 3. Dans Instance State, slectionnez l'option Shutdown. 4. Slectionnez Apply. 5. Dans la bote de dialogue Shutdown Options qui s'affiche, slectionnez l'option Immediate. 6. Slectionnez OK. 7. Slectionnez Close lorsque le traitement est termin. 8. Dans Instance State, slectionnez l'option Open. 9. Slectionnez OK. 10. Dans la bote de dialogue Startup Options qui s'affiche, slectionnez l'option Read Only Mode. 11. Slectionnez OK. 12. Cliquez sur Close lorsque le traitement est termin. Remarque : Pour effectuer cette procdure, vous devez disposer des privilges SYSDBA.

Oracle9i Database Administration I 3-30

Arrter la base de donnes


Mode d'arrt Permet de nouvelles connexions Attend la fin des sessions en cours Attend la fin des transactions en cours Applique un point de reprise et ferme les fichiers A I T N

Non Non Non Non Non Non Non Oui Non Non Oui Non Oui Oui Oui Oui

Mode d'arrt : A = ABORT I = IMMEDIATE T = TRANSACTIONAL N = NORMAL


3-31 Copyright Oracle Corporation, 2001. Tous droits rservs.

Arrter la base de donnes Arrtez la base de donnes pour effectuer la sauvegarde hors ligne de toutes les structures physiques via le systme d'exploitation et pour que les modifications appliques aux paramtres d'initialisation statiques soient effectives au redmarrage. Pour arrter une instance, connectez-vous en tant que SYSOPER ou SYSDBA et utilisez la commande suivante : SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]

Oracle9i Database Administration I 3-31

Options d'arrt
Arrt en mode Normal, Transactional ou Immediate

Phase d'arrt : Le cache de tampons de la base de donnes est crit dans les fichiers de donnes Les modifications non valides sont annules Les ressources sont libres

Phase de redmarrage : Aucune rcupration d'instance

Base de donnes cohrente (base "propre")


3-32 Copyright Oracle Corporation, 2001. Tous droits rservs.

Options d'arrt Effectuez un arrt en mode Normal : Le mode Normal est le mode d'arrt par dfaut. Il s'effectue dans les conditions suivantes : Aucune nouvelle connexion ne peut tre tablie. Le serveur Oracle attend la dconnexion pralable de tous les utilisateurs. Les tampons de journalisation et de la base de donnes sont crits sur disque. Les processus d'arrire-plan prennent fin et la zone SGA est supprime de la mmoire. Oracle ferme et dmonte la base de donnes avant d'arrter l'instance. La rcupration de l'instance n'est pas ncessaire lors du redmarrage. Arrt en mode Transactional L'arrt en mode Transactional vite aux clients de perdre leurs travaux en cours. Il s'effectue dans les conditions suivantes : Aucun client ne peut lancer de nouvelle transaction pour l'instance indique. Le client est dconnect lorsqu'il termine la transaction en cours. La fin de toutes les transactions entrane l'arrt immdiat de la base de donnes. La rcupration de l'instance n'est pas ncessaire lors du redmarrage.

Oracle9i Database Administration I 3-32

Options d'arrt (suite) Arrt en mode Immediate L'arrt en mode Immediate s'effectue dans les conditions suivantes : Les instructions SQL en cours de traitement par Oracle ne sont pas termines. Le serveur Oracle n'attend pas la dconnexion des utilisateurs de la base de donnes. Oracle annule les transactions actives et dconnecte tous les utilisateurs. Oracle ferme et dmonte la base de donnes avant d'arrter l'instance. La rcupration de l'instance n'est pas ncessaire lors du redmarrage.

Oracle9i Database Administration I 3-33

Options d'arrt
Arrt en Phase de redmarrage : Phase d'arrt : mode Abort, Les fichiers de Les mmoires chec d'instance journalisation tampon modifies ou permettent de ne sont pas crites dmarrage forc rappliquer les dans les fichiers de modifications donnes Des segments Les modifications d'annulation sont non valides ne utiliss pour annuler sont pas annules les modifications non valides Les ressources sont libres

Base de donnes incohrente (base non "propre")


3-34 Copyright Oracle Corporation, 2001. Tous droits rservs.

Options d'arrt Arrt en mode Abort Si les arrts en modes Normal et Immediate chouent, vous pouvez abandonner l'instance de base de donnes en cours. Cette opration s'effectue dans les conditions suivantes : Les instructions SQL en cours de traitement par le serveur Oracle sont immdiatement interrompues. Oracle n'attend pas la dconnexion des utilisateurs de la base de donnes. Les tampons de journalisation et de la base de donnes ne sont pas crits sur disque. Les transactions non valides ne sont pas annules. L'instance est interrompue sans fermeture des fichiers. La base de donnes n'est pas ferme, ni dmonte. Une rcupration est ncessaire au redmarrage ; elle s'effectue automatiquement. Remarque : Il n'est pas conseill de sauvegarder une base de donnes incohrente.

Oracle9i Database Administration I 3-34

Options d'arrt (suite) Utiliser Oracle Enterprise Manager pour arrter une base de donnes A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Instance. 2. Cliquez sur Configuration. 3. Dans l'onglet General, slectionnez l'option Open. 4. Cliquez sur Apply. Remarque : Pour arrter une base de donnes, vous devez disposer des privilges SYSDBA.

Oracle9i Database Administration I 3-35

Surveiller une instance l'aide de fichiers de diagnostic


Les fichiers de diagnostic :
contiennent des informations relatives aux vnements significatifs qui se sont produits, permettent de rsoudre des incidents, permettent d'amliorer la gestion quotidienne de la base de donnes.

Ils peuvent tre de plusieurs types :


Fichiers alertSID.log Fichiers trace de processus en arrire-plan Fichiers trace utilisateur

3-36

Copyright Oracle Corporation, 2001. Tous droits rservs.

Surveiller une instance l'aide de fichiers de diagnostic Les fichiers de diagnostic permettent de capturer des informations relatives aux activits de la base de donnes. Ils s'avrent galement utiles pour la gestion des instances. Leur type varie en fonction de l'incident qui se produit ou des informations qui doivent tre dlivres. Fichier alertSID.log : Informations destines au fonctionnement quotidien de la base de donnes

Fichiers trace de processus en arrire-plan (background process) : Informations essentielles en cas d'chec des processus d'arrire-plan (SMON, PMON, DBWn, etc.) Fichiers trace utilisateur : Informations essentielles en cas d'erreurs utilisateur fatales ou de fichiers d'une trace force par l'utilisateur.

Oracle9i Database Administration I 3-36

Fichier d'alertes

Le fichier alertSID.log :
enregistre les commandes, enregistre les rsultats des principaux vnements, conserve quotidiennement des informations oprationnelles, tablit le diagnostic des erreurs de la base de donnes.

Chaque entre est associe un horodatage. Il doit tre gr par l'administrateur de base de donnes. Son emplacement est dfini par le paramtre BACKGROUND_DUMP_DEST.
3-37 Copyright Oracle Corporation, 2001. Tous droits rservs.

Fichier d'alertes Chaque instance Oracle possde un fichier d'alertes. Au besoin, il est cr au dmarrage de l'instance. Vous tes responsable de la gestion de ce fichier dont la taille augmente lors de l'utilisation de la base de donnes. Consultez le fichier d'alertes ds que vous devez diagnostiquer des oprations quotidiennes ou des erreurs. Ce fichier contient galement des pointeurs sur des fichiers trace qui dlivrent des informations plus dtailles. Le fichier d'alertes conserve un enregistrement des informations suivantes : Date/heure d'arrt ou de dmarrage de la base de donnes Liste de tous les paramtres d'initialisation qui ne sont pas des paramtres par dfaut Dmarrage des processus d'arrire-plan Thread utilis par l'instance Numro de squence du journal utilis par le processus LGWR (Log Writer) Informations relatives un changement de fichier de journalisation Cration de tablespaces et de segments d'annulation Instructions ALTER mises Informations concernant, par exemple, les messages d'erreur de type ORA-600 ou relatifs aux extents (ensemble de blocs contigus)

Oracle9i Database Administration I 3-37

Fichiers d'alertes (suite) L'emplacement du fichier alert_SID.log est dfini par le paramtre d'initialisation BACKGROUND_DUMP_DEST.

Oracle9i Database Administration I 3-38

Fichiers trace de processus en arrire-plan

Les fichiers trace de processus en arrire-plan :


consignent les erreurs dtectes par les processus d'arrire-plan, permettent de diagnostiquer et de corriger les erreurs.

Ils sont crs lorsqu'un processus d'arrire-plan dtecte une erreur. Leur emplacement est dfini par le paramtre BACKGROUND_DUMP_DEST.

3-39

Copyright Oracle Corporation, 2001. Tous droits rservs.

Fichiers trace de processus en arrire-plan Les fichiers trace de processus en arrire-plan permettent de consigner des erreurs dtectes par un processus d'arrire-plan, tel que SMON, PMON ou DBWn. Ils ne sont crs que lorsqu'une erreur exige une criture dans les fichiers trace. Utilisez-les pour diagnostiquer et rsoudre des problmes. A sa cration, un fichier trace de processus en arrire-plan contient des informations d'en-tte prcisant le numro de version du serveur de donnes et du systme d'exploitation. Convention d'appellation des fichiers trace utilisateur : sid_processname_PID.trc (db01_lgwr_23845.trc). Leur emplacement est dfini par le paramtre d'initialisation BACKGROUND_DUMP_DEST.

Oracle9i Database Administration I 3-39

Fichier trace utilisateur


Les fichiers trace utilisateur :
sont crs par le processus utilisateur, peuvent tre gnrs par un processus serveur, contiennent des statistiques destines aux instructions SQL traces, contiennent des messages d'erreur utilisateur.

Ce type de fichier est cr lorsqu'un utilisateur rencontre des erreurs au cours d'une session. Son emplacement est dfini par le paramtre USER_DUMP_DEST. Sa taille est dfinie par le paramtre MAX_DUMP_FILE_SIZE.
3-40 Copyright Oracle Corporation, 2001. Tous droits rservs.

Fichiers trace utilisateur Les fichiers trace utilisateur contiennent des statistiques destines aux instructions SQL traces, qui sont particulirement utiles pour le rglage (tuning) SQL. Ils contiennent, en outre, des messages d'erreur utilisateur. Convention d'appellation des fichiers trace utilisateur : sid_ora_PID.trc(db01_ora_23845.trc). Leur emplacement est dfini par le paramtre d'initialisation USER_DUMP_DEST.

Oracle9i Database Administration I 3-40

Activer ou dsactiver la fonction de trace utilisateur


Niveau session :
A l'aide de la commande ALTER SESSION : ALTER SESSION SET SQL_TRACE = TRUE A l'aide de la procdure SGBD : dbms_system.SET_SQL_TRACE_IN_SESSION

Niveau instance :
A l'aide du paramtre d'initialisation : SQL_TRACE = TRUE

3-41

Copyright Oracle Corporation, 2001. Tous droits rservs.

Activer ou dsactiver la fonction de trace utilisateur Remarque : La dclaration du paramtre SQL_TRACE=TRUE au niveau instance gnre un volume important de donnes de trace. Utilisez cette option avec prcaution. La fonction de trace utilisateur est dcrite en dtail dans le cours Oracle9i SQL Statement Tuning.

Oracle9i Database Administration I 3-41

Activer ou dsactiver la fonction de trace utilisateur Utiliser Oracle Enterprise Manager pour activer ou dsactiver la fonction de trace utilisateur A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Instance > Configuration. 2. Slectionnez All Initialization Parameters dans la page General. 3. Dfinissez le paramtre SQL_TRACE = TRUE. 4. Slectionnez OK.

Oracle9i Database Administration I 3-42

Synthse

Ce chapitre vous a permis d'apprendre : crer et grer des fichiers de paramtres d'initialisation dmarrer et arrter une instance surveiller et utiliser des fichiers de diagnostic

3-43

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 3-43

Prsentation de l'exercice 3

Dans cet exercice, vous allez : crer un fichier SPFILE dmarrer et arrter la base de donnes dans diffrents modes

3-44

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 3 Remarque : Cet exercice peut tre ralis avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 3-44

Exercice 3 : Grer une instance Oracle 1 Connectez-vous la base de donnes en tant qu' utilisateur SYS, puis arrtez la base. 2 Une fois la base de donnes arrte, crez un fichier SPFILE partir d'un fichier PFILE. Placez le fichier SPFILE dans le rpertoire $HOME/ADMIN/PFILE en lui affectant un nom au format spfileSID.ora (o SID correspond au nom de votre instance). Crez le fichier SPFILE partir du fichier PFILE qui se trouve dans le rpertoire $HOME/ADMIN/PFILE. 3 Affichez le fichier SPFILE depuis le systme d'exploitation. 4 Connectez-vous en tant qu'utilisateur SYS, puis dmarrez la base de donnes l'aide du fichier SPFILE. 5 a Arrtez la base de donnes, puis ouvrez-la en mode lecture seule. b Connectez-vous en tant qu'utilisateur HR avec le mot de passe HR, puis insrez une ligne dans la table REGIONS en utilisant la syntaxe suivante :INSERT INTO regions VALUES (5, Mars); Que se passe-t-il ? c Raffectez la base de donnes le mode lecture-criture. 6 a Connectez-vous en tant qu'utilisateur HR avec le mot de passe HR, puis insrez la ligne suivante dans la table REGIONS. Ne validez pas et ne quittez pas la session. INSERT INTO regions VALUES ( 5, Mars ); b Dmarrez SQL*Plus dans une nouvelle session Telnet. Connectez-vous en tant qu'utilisateur SYS AS SYSDBA, puis procdez un arrt en mode Transactional. c Annulez l'insertion dans la session de HR, puis quittez. Que se passe-t-il dans la session de HR ? Que se passe-t-il dans celle de SYS ? 7 a Connectez-vous en tant qu'utilisateur SYS, puis dmarrez la base de donnes. b Dmarrez une autre session en tant qu'utilisateur HR. Remarque : Conservez les sessions SQL*Plus de SYS et de HR ouvertes. c Sous l'ID utilisateur SYS, activez la session en mode restreint. d Sous l'ID utilisateur HR, effectuez une slection (SELECT) dans la table REGIONS. L'opration aboutit-elle ? Quittez la session, puis reconnectez-vous sous l'ID utilisateur HR. Que se passe-t-il ? e Sous l'ID utilisateur SYS, dsactivez la session en mode restreint.

Oracle9i Database Administration I 3-45

Crer une base de donnes

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : identifier les conditions pralables la cration d'une base de donnes crer une base de donnes l'aide d'Oracle Database Configuration Assistant crer manuellement une base de donnes crer une base de donnes l'aide d'OracleManaged Files

4-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 4-2

Grer et organiser une base de donnes


La planification d'une base de donnes constitue la premire tape de la procdure de gestion d'un systme de base de donnes
Dfinissez la fonction de la base de donnes Dfinissez le type de la base de donnes Dfinissez la conception de l'architecture de la base de donnes Choisissez le nom de la base de donnes

Crez la base de donnes Oracle Data Migration Assistant permet de migrer d'une version de la base de donnes une autre plus rcente.

4-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Planifier et organiser une base de donnes La planification d'une base de donnes constitue la premire tape d'organisation et d'implmentation d'un systme de base de donnes. Vous devez d'abord dfinir de quelle manire la base sera utilise afin de dterminer le type de base crer pour rpondre aux besoins de votre organisation (data warehouse, nombreux traitements des transactions en ligne ou fonction gnrale). Une fois que vous avez dtermin la fonction et le type de la base, vous devez dfinir l'architecture utiliser. Par exemple : comment les fichiers de donnes, de contrle et de journalisation (redo log) seront-ils organiss et stocks ? L'architecture OFA (Optimal Flexible Architecture) d'Oracle vous permet d'organiser la structure des fichiers de votre base de donnes et leurs emplacements. Une fois que vous avez dfini votre architecture, vous devez choisir un nom et un nom d'identification systme pour votre base de donnes. La cration d'une base de donnes permet de prparer plusieurs fichiers du systme d'exploitation et ne s'effectue qu'une seule fois, quel que soit le nombre de fichiers de donnes figurant dans la base. Lors de la migration partir d'une ancienne version d'Oracle, la cration d'une base de donnes n'est ncessaire que si vous avez besoin d'une base entirement nouvelle. Vous pouvez galement utiliser un utilitaire de migration. Oracle Data Migration Assistant est un outil conu pour vous assister dans la migration de votre systme de base de donnes actuel.

Oracle9i Database Administration I 4-3

Architecture OFA

L'architecture OFA correspond la prsentation standard recommande pour l'architecture de base de donnes d'Oracle Elle repose sur trois rgles principales :
Crer une structure de rpertoires permettant de stocker n'importe quel fichier de base de donnes sur n'importe quel disque. Placer les objets prsentant des comportements diffrents dans des tablespaces distincts. Optimiser la fiabilit et les performances de la base de donnes en plaant ses composants sur des disques diffrents.

4-4

Copyright Oracle Corporation, 2001. Tous droits rservs.

Architecture OFA (Optimal Flexible Architecture) L'installation et la configuration sur toutes les plates-formes prises en charge sont dsormais conformes l'architecture OFA. Cette architecture organise les fichiers de base de donnes en fonction de leur type et de leur utilisation. Les fichiers binaires, les fichiers de contrle, les fichiers journaux et les fichiers d'administration peuvent tre installs sur plusieurs disques. Une convention d'appellation cohrente offre les avantages suivants : Elle permet de diffrencier les fichiers de base de donnes des autres fichiers. Elle permet d'identifier facilement les fichiers de contrle, de journalisation et de donnes. Elle facilite l'administration de plusieurs rpertoires d'origine Oracle Home sur une mme machine en rpartissant les fichiers sur des units de disque et dans des rpertoires diffrents. Elle amliore les performances en rduisant la contention sur les disques pour les fichiers de donnes, les fichiers binaires et les fichiers d'administration qui peuvent dsormais rsider dans des rpertoires et sur des disques diffrents.

Oracle9i Database Administration I 4-4

Logiciel Oracle et emplacements des fichiers


oracle_base Logiciel oradata/ db01/ system01.dbf control01.ctl redo0101.log ... db02/ system01.dbf control01.ctl redo0101.log ... Fichiers

/product
/release_number /bin /dbs /rdbms /sqlplus /admin /inst_name /pfile

4-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Emplacements dans le logiciel Oracle L'arborescence figurant dans la diapositive prsente un exemple de base de donnes conforme l'architecture OFA. Architecture OFA L'installation et la cration d'une base de donnes prsentent un autre point important prendre en compte : l'organisation du systme de fichiers en vue de faciliter la gestion de l'volutivit du systme par l'ajout de donnes la base existante, l'ajout d'utilisateurs, la cration de nouvelles bases de donnes, l'installation de matriel supplmentaire et la rpartition de la charge des entres/sorties sur un nombre suffisant d'units.

Oracle9i Database Administration I 4-5

Conditions pralables la cration d'une base de donnes


Pour crer une base de donnes, vous devez disposer des lments suivants : Un compte disposant de privilges, authentifi :
par le systme d'exploitation, l'aide d'un fichier de mots de passe.

Une quantit de mmoire suffisante pour dmarrer l'instance. Un espace disque suffisant pour recevoir la base de donnes prvue.

4-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

Conditions pralables la cration d'une base de donnes Vous devez disposer des privilges SYSDBA pour crer une base de donnes. Ceux-ci sont accords via l'authentification par le systme d'exploitation ou par un fichier de mots de passe. Avant de crer la base de donnes, assurez-vous que vous disposez d'une quantit de mmoire suffisante pour la mmoire SGA, l'excutable Oracle et les processus. Pour plus d'informations, consultez les guides d'installation et d'administration de votre systme d'exploitation. Calculez l'espace disque ncessaire pour la base de donnes, y compris pour les fichiers de journalisation en ligne, les fichiers de contrle et les fichiers de donnes.

Oracle9i Database Administration I 4-6

Mthodes d'authentification utilises par les administrateurs de base de donnes


Administration distante de la base de donnes Administration locale de la base de donnes

Oui
Disposez-vous d'une connexion scurise ?

Oui Souhaitezvous utiliser l'authentification par le systme d'exploitation ? Non

Utilisez l'authentification par le systme d'exploitation

Non

Utilisez un fichier de mots de passe

4-7

Copyright Oracle Corporation, 2001. Tous droits rservs.

Mthodes d'authentification utilises par les administrateurs de base de donnes Selon que vous souhaitez administrer la base de donnes localement sur la machine sur laquelle elle est installe ou administrer plusieurs serveurs de bases de donnes partir d'un client distant, vous pouvez choisir d'authentifier les administrateurs par le systme d'exploitation ou l'aide d'un fichier de mots de passe. Remarque : Pour plus d'informations sur l'authentification par le systme d'exploitation, consultez la documentation relative votre systme d'exploitation.

Oracle9i Database Administration I 4-7

Utiliser l'authentification par le fichier de mots de passe


Crez le fichier de mots de passe l'aide de l'utilitaire de gestion des mots de passe
$ orapwd file=$ORACLE_HOME/dbs/orapwU15 password=admin entries=5

Dfinissez REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE dans le fichier de paramtres d'initialisation Ajoutez des utilisateurs au fichier de mots de passe Affectez des privilges appropris chaque utilisateur
GRANT SYSDBA TO HR;

4-8

Copyright Oracle Corporation, 2001. Tous droits rservs.

Utiliser l'authentification par le fichier de mots de passe Oracle fournit un utilitaire de gestion des mots de passe, orapwd, qui permet de crer un fichier de mots de passe. Lorsque vous vous connectez avec le privilge SYSDBA, la connexion s'effectue sous le schma SYS et non sous le schma associ votre nom utilisateur. Avec SYSOPER, la connexion s'effectue sous le schma PUBLIC. Les utilisateurs disposant de privilges peuvent accder la base de donnes en utilisant le fichier de mots de passe, via des commandes GRANT spciales. Remarque : Pour plus d'informations sur l'octroi de privilges, voir le chapitre "Grer les privilges".

Oracle9i Database Administration I 4-8

Utiliser l'authentification par le fichier de mots de passe (suite) Utiliser un fichier de mots de passe : 1. Crez le fichier de mots de passe l'aide de l'utilitaire orapwd. orapwd file=filename password=password entries=max_users O : filename correspond au nom du fichier de mots de passe (obligatoire), password correspond au mot de passe de SYSOPER et SYSDBA (obligatoire), entries correspond au nombre maximum d'utilisateurs autoriss se connecter en tant que SYSDBA ou SYSOPER. Si ce nombre est dpass, vous devez crer un nouveau fichier de mots de passe. Il est prfrable de dfinir un nombre lev. N'insrez pas d'espaces avant ni aprs le signe gal (=). Exemple : orapwd file=$ORACLE_HOME/dbs/orapwU15 password=admin entries=5 O : filename : $ORACLE_HOME/dbs/orapwU15 password : admin entries : 5 2. Affectez la valeur EXCLUSIVE au paramtre REMOTE_LOGIN_PASSWORDFILE. O : EXCLUSIVE indique qu'une seule instance peut utiliser le fichier de mots de passe et que ce dernier contient des noms autres que SYS. Avec un fichier EXCLUSIVE, vous pouvez accorder des privilges SYSDBA ou SYSOPER des utilisateurs individuels. 3. Connectez-vous la base de donnes l'aide du fichier de mots de passe cr prcdemment. CONNECT sys/admin AS SYSDBA Emplacement des fichiers de mots de passe : Sous Unix : $ORACLE_HOME/dbs Sous NT : %ORACLE_HOME%/database Grer le fichier de mots de passe : Supprimez le fichier de mots de passe l'aide des commandes du systme d'exploitation et crez-en un l'aide de l'utilitaire de gestion des mots de passe.

Oracle9i Database Administration I 4-9

Crer une base de donnes

Vous pouvez crer une base de donnes l'aide : d'Oracle Universal Installer, d'Oracle Database Configuration Assistant,
Interface utilisateur Base Java Lanc par Oracle Universal Installer Peut tre utilis en mode autonome

de la commande CREATE DATABASE.

4-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer une base de donnes Vous pouvez crer une base de donnes automatiquement lors de l'installation d'Oracle9i l'aide d'Oracle Universal Installer, d'Oracle Database Configuration Assistant (DBCA) ou en crant un script SQL avec la commande CREATE DATABASE. DBCA est une interface utilisateur qui entre en interaction avec Oracle Universal Installer ou que vous pouvez utiliser de faon autonome pour simplifier la cration d'une base de donnes. Cette interface base Java peut tre lance depuis n'importe quelle plate-forme l'aide d'un moteur Java. Au cours de l'installation du serveur Oracle, Oracle Universal Installer lance DBCA, qui peut crer automatiquement une base de donnes de dpart. Pour crer une base, vous pouvez donc utiliser DBCA, crer une base de dpart ou lancer DBCA ultrieurement en tant qu'application autonome. Si vous utilisez une version antrieure du logiciel Oracle, vous pouvez galement migrer ou mettre niveau une base de donnes existante.

Oracle9i Database Administration I 4-10

Environnement du systme d'exploitation

Dfinissez les variables d'environnement suivantes : ORACLE_BASE ORACLE_HOME ORACLE_SID ORA_NLS33 PATH LD_LIBRARY_PATH

4-11

Copyright Oracle Corporation, 2001. Tous droits rservs.

Environnement du systme d'exploitation Avant de crer une base de donnes manuellement ou l'aide de Database Configuration Assistant, configurez correctement l'environnement du systme d'exploitation. ORACLE_BASE : rpertoire situ le plus haut dans l'arborescence des diffrentes versions des produits Oracle Exemple : /u01/app/oracle ORACLE_HOME : rpertoire dans lequel une des versions des produits Oracle est installe. L'OFA recommande le rpertoire $ORACLE_BASE/product/release. Exemple : /u01/app/oracle/product/9.1.1 ORACLE_SID : nom de l'instance, qui doit tre unique pour les instances Oracle s'excutant sur la mme machine ORA_NLS33 : variable obligatoire lors de la cration d'une base de donnes n'utilisant pas le jeu de caractres US7ASCII Exemple : $ORACLE_HOME/ocommon/nls/admin/data PATH : rpertoires dans lesquels le systme d'exploitation recherche des excutables tels que SQL*Plus. Les excutables Oracle9i se trouvent dans le rpertoire $ORACLE_HOME/bin et doivent tre ajouts la variable PATH. LD_LIBRARY_PATH : rpertoires des fichiers du systme d'exploitation et de la bibliothque Oracle. Exemple : $ORACLE_HOME/lib

Oracle9i Database Administration I 4-11

Database Configuration Assistant

Database Configuration Assistant vous permet de : crer une base de donnes configurer des options de base de donnes supprimer une base de donnes grer des modles crer un modle l'aide de paramtres prdfinis crer un modle partir d'une base de donnes existante supprimer un modle de base de donnes

4-12

Copyright Oracle Corporation, 2001. Tous droits rservs.

Database Configuration Assistant A partir de la version Oracle9i, vous pouvez grer des modles dont certains sont prdfinis. Vous pouvez galement utiliser la base de donnes existante pour crer une base ou un modle. Les paramtres de la base de donnes sont stocks au format XML. Avantages lis l'utilisation de modles : Gain de temps lors de la cration de la base de donnes Possibilit de partager les modles Possibilit de modifier des options de la base de donnes, si ncessaire

Pour plus d'informations sur les modles, voir l'aide en ligne d'Oracle Database Configuration Assistant.

Oracle9i Database Administration I 4-12

Crer une base de donnes l'aide de Database Configuration Assistant


Slectionnez le type de base de donnes crer partir de modles prdfinis Prcisez le SID et le nom global de base de donnes Slectionnez les fonctionnalits utiliser dans la base de donnes Identifiez les scripts excuter aprs la cration de la base de donnes Slectionnez le mode de fonctionnement de la base de donnes

4-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer une base de donnes l'aide de Database Configuration Assistant Lancez Database Configuration Assistant : Programs > Oracle-OraHome90 > Configuration and Migration Tools > Database Configuration Assistant. Slectionnez l'option Create a Database. Slectionnez le type de base de donnes crer partir de la liste de modles prdfinis. Data warehouse Fonction gnrale Nouvelle base de donnes Traitement des transactions Utilisez l'option Show Details pour visualiser ce que vous allez crer. Vous pouvez crer les modles avec ou sans fichiers de donnes. Sans fichiers de donnes : le modle ne contiendra que la structure de la base de donnes. Vous pouvez indiquer et modifier tous les paramtres de la base. Avec des fichiers de donnes : le modle contiendra la structure et les fichiers de donnes physiques de la base de donnes. Tous les fichiers journaux et de contrle sont automatiquement crs et vous pouvez ajouter/supprimer des fichiers de contrle et des fichiers journaux et modifier la destination et le nom des fichiers de donnes. Vous ne pouvez pas ajouter ou supprimer des fichiers de donnes, des tablespaces ou des segments d'annulation. Les paramtres d'initialisation ne peuvent pas tre modifis.

Oracle9i Database Administration I 4-13

Crer une base de donnes (suite) Prcisez un SID et un nom global de base de donnes. Slectionnez les fonctions que vous souhaitez utiliser dans votre base, par exemple : Oracle Spatial Oracle OLAP Services Exemples de schmas Les exemples de schmas contiennent des scripts destins aux types de table suivants : Human Resources Order Entry Product Media Sales History Shipping Identifiez les scripts excuter aprs la cration de la base de donnes. Slectionnez le mode de fonctionnement de la base de donnes. Mode serveur ddi Mode serveur partag

Oracle9i Database Administration I 4-14

Crer une base de donnes l'aide de Database Configuration Assistant


Indiquez les options relatives la mmoire, l'archivage, au dimensionnement de la base de donnes et l'emplacement des fichiers Dfinissez les paramtres de stockage de la base de donnes Modifiez les variables relatives l'emplacement des fichiers, selon vos besoins Slectionnez une option de cration de base de donnes

4-15

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer une base de donnes l'aide de Database Configuration Assistant Dfinissez les options suivantes : Memory Slectionnez Typical ou Custom Database L'option Typical requiert peu d'entres utilisateur. Vous pouvez choisir l'un des environnements de fonctionnement suivants pour la base de donnes : Online Transaction Processing (OLTP), Multipurpose et Data Warehousing. L'option Custom vous permet de personnaliser la cration de la base de donnes. Cette option est rserve aux administrateurs familiariss avec les procdures avances de cration de bases. Archive Cette option place la base de donnes en mode ARCHIVELOG et permet l'archivage des fichiers de journalisation (fichiers redo log) avant leur rutilisation. DB Sizing Cette option permet de dfinir les tailles de bloc et de zone de tri de la base de donnes. Vous ne pouvez prciser la taille des blocs de donnes qu' la cration de la base. SORT_AREA_SIZE correspond la quantit maximale de mmoire utilise pour les oprations de tri.

Oracle9i Database Administration I 4-15

Crer une base de donnes (suite) File Locations Indiquez l'emplacement des fichiers trace et prcisez le chemin du fichier de paramtres d'initialisation. Define database storage parameters. Cette page affiche une liste arborescente et une vue synthtise (listes multicolonnes) qui vous permettent de visualiser et de modifier les objets suivants : fichiers de contrle, tablespaces, fichiers de donnes, segments d'annulation et groupes de fichiers de journalisation. Pour modifier des variables relatives l'emplacement des fichiers, cliquez sur le bouton File Location Variables. Slectionnez une option de cration de base de donnes. Create database : cette option cre immdiatement la base de donnes. Save as a database template : cette option enregistre les paramtres de cration de la base de donnes sous forme de modle que vous pouvez ensuite ajouter la liste des modles disponibles. Generate database creation scripts : cette option vous permet d'enregistrer les paramtres de cration de la base de donnes sous forme de fichier script pour une utilisation ultrieure. Slectionnez Finish.

Oracle9i Database Administration I 4-16

Crer manuellement une base de donnes


Choisissez un nom unique pour l'instance et la base de donnes. Slectionnez un jeu de caractres de base de donnes. Dfinissez les variables du systme d'exploitation. Crez le fichier de paramtres d'initialisation. Dmarrez l'instance l'tape NOMOUNT. Crez et excutez la commande CREATE DATABASE. Ouvrez la base de donnes. Excutez des scripts afin de gnrer le dictionnaire de donnes et d'effectuer des tapes de postcration. Crez autant de tablespaces supplmentaires que ncessaire.

4-17

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer manuellement une base de donnes Choisissez un nom unique pour l'instance et la base de donnes. Slectionnez un jeu de caractres de base de donnes. Vous devez dfinir un jeu de caractres de base de donnes. Vous pouvez galement dfinir un jeu de caractres nationaux facultatif. Exemple : Character set AL32UTF16 National character set AL16UTF16 Pour plus d'informations sur les diffrents jeux disponibles, voir le chapitre "Utiliser le support de globalisation". Dfinissez les variables du systme d'exploitation. Vous devez dfinir quatre variables d'environnement : ORACLE_HOME, ORACLE_SID, PATH et LD_LIBRARY_PATH. ORACLE_HOME : rpertoire situ le plus haut dans l'arborescence et dans lequel le serveur Oracle9i est install. ORACLE_SID : nom dfini par l'utilisateur, affect une instance de base de donnes. Ce nom permet de distinguer les diffrentes instances de base de donnes qui s'excutent sur la mme machine. PATH : rpertoires dans lesquels le systme d'exploitation recherche des fichiers excutables. LD_LIBRARY_PATH : rpertoires de stockage des fichiers bibliothque requis.

Oracle9i Database Administration I 4-17

Crer manuellement une base de donnes (suite) Crez le fichier de paramtres d'initialisation. Crez ce fichier l'aide de l'exemple de fichier init.ora enregistr au cours de l'installation. Copiez init.ora et nommez-le initSID.ora. Modifiez le fichier en fonction des besoins de la base de donnes que vous crez. Si vous devez utiliser un fichier SPFILE, crez d'abord le fichier PFILE. Pour plus d'informations sur la procdure de cration d'un fichier initSID.ora propre une base de donnes et d'un fichier SPFILE, voir le chapitre "Grer une instance Oracle". Dmarrez l'instance l'tape NOMOUNT. Connectez-vous en tant qu'utilisateur SYS disposant du privilge SYSDBA. Vous ne pouvez crer la base de donnes que si elle se trouve l'tat NOMOUNT. Le chapitre "Grer une instance Oracle" indique comment placer une base de donnes l'tat NOMOUNT. Crez et excutez la commande CREATE DATABASE. Crez un script SQL contenant la commande CREATE DATABASE. Connectezvous SQL*Plus en tant qu'utilisateur SYS disposant du privilge SYSDBA. Lorsque la base de donnes se trouve l'tat NOMOUNT, excutez le script. La commande CREATE DATABASE est considrablement simplifie si la base de donnes cre vise grer les fichiers du systme d'exploitation l'aide d'OracleManaged Files (OMF). Pour plus d'informations sur OMF, voir le chapitre "Grer une instance Oracle". Ouvrez la base de donnes. Vous devez ouvrir la base de donnes avant d'excuter les scripts permettant de crer le dictionnaire de donnes et de raliser les tapes de postcration. Le chapitre "Grer une instance Oracle indique comment ouvrir une base de donnes qui se trouve l'tat NOMOUNT. Excutez des scripts. Une fois la base de donnes cre, vous devez excuter les scripts catalog.sql et catproc.sql en tant qu'utilisateur SYS disposant du privilge SYSDBA. Avant d'excuter ces scripts, vous devez affecter la base de donnes l'tat OPEN. catalog.sql cre les vues et leurs synonymes partir des tables de base et des vues dynamiques des performances. Il lance d'autres scripts qui crent des objets pour : l'environnement PL/SQL de base (dclarations pour les types de donnes PL/SQL, exceptions prdfinies, procdures et fonctions intgres, oprations SQL), la fonction d'audit, la fonction d'import/export, SQL*Loader, les options installes.

Oracle9i Database Administration I 4-18

Crer manuellement une base de donnes (suite) Excutez des scripts (suite) catproc.sql cre les packages et les procdures ncessaires l'utilisation de PL/SQL. Il cre galement une partie des packages PL/SQL utiliss pour tendre la fonctionnalit de SGBDR, ainsi que des vues de packages supplmentaires pour les alertes, LogMiner, les objets LOB (Large Objects), la mise en file d'attente, la rplication et d'autres options intgres. pupbld.sql cre la table Product User Profile et les procdures associes. L'excution de ce script permet d'viter l'affichage d'un message d'avertissement chaque fois qu'un utilisateur se connecte SQL*Plus. Remarque : Vous devez excuter ce script en tant qu'utilisateur SYSTEM. Crez des tablespaces supplmentaires. Crez autant de tablespaces que ncessaire pour rpondre aux besoins de votre base de donnes. Remarque : L'annexe A dcrit, tape par tape, la procdure de cration manuelle d'une base de donnes sous Unix. Pour plus d'informations sur la cration de bases de donnes sur votre plate-forme, consultez la documentation Oracle propre votre systme d'exploitation.

Oracle9i Database Administration I 4-19

Crer la base de donnes


CREATE DATABASE user01 LOGFILE GROUP 1 ('/$HOME/ORADATA/u01/redo01.log') SIZE 100M, GROUP 2 ('/$HOME/ORADATA/u02/redo02.log') SIZE 100M, GROUP 3 ('/$HOME/ORADATA/u03/redo03.log') SIZE 100M MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXLOGHISTORY 1 MAXDATAFILES 100 MAXINSTANCES 1 DATAFILE '/$HOME/ORADATA/u01/system01.dbf' SIZE 325M UNDO TABLESPACE undotbs DATAFILE '/$HOME/ORADATA/u02/undotbs01.dbf' SIZE 200M AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE temp CHARACTER SET US7ASCII NATIONAL CHARACTER SET AL16UTF16 SET TIME_ZONE= 'America/New_York'

4-20

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer la base de donnes Pour crer une base de donnes, excutez la commande SQL suivante : CREATE DATABASE [database] [CONTROLFILE REUSE] [LOGFILE [GROUP integer] filespec [MAXLOGFILES integer] [MAXLOGMEMBERS integer] [MAXLOGHISTORY integer] [MAXDATAFILES integer] [MAXINSTANCES integer] [ARCHIVELOG|NOARCHIVELOG] [CHARACTER SET charset] [NATIONAL CHARACTER SET charset] [DATAFILE filespec [autoextend_clause]

Oracle9i Database Administration I 4-20

Crer la base de donnes (suite) filespec :== 'filename' [SIZE integer][K|M] [REUSE] autoextend_clause :== [AUTOEXTEND {OFF|ON [NEXT integer[K|M]] [MAXSIZE {UNLIMITED|integer[K|M]} }] [DEFAULT TEMPORARY TABLESPACE tablespace filespec [temp_tablespace_extent_clause] temp_tablespace_extent_clause:== EXTENT MANAGEMENT LOCAL UNIFORM [SIZE integer][K|M] ] [UNDO TABLESPACE tablespace DATAFILE filespec [autoextend_clause] ] [SET TIME_ZONE [time_zone_region]] } ] O : DATABASE correspond au nom de la base de donnes crer (si ce nom n'est pas indiqu, le paramtre d'initialisation DB_NAME est utilis). CONTROLFILE REUSE indique qu'un fichier de contrle existant identifi dans le fichier de paramtres doit tre rutilis. LOGFILE GROUP correspond aux noms des fichiers journaux utiliser et au groupe auquel ils appartiennent. MAXLOGFILES indique le nombre maximum de groupes de fichiers de journalisation que vous pouvez crer pour la base de donnes. MAXLOGMEMBERS indique le nombre maximum de fichiers journaux membres d'un groupe. MAXLOGHISTORY indique le nombre maximum de fichiers de journalisation archivs pour la restauration physique automatique d'Oracle Real Application Clusters.

Oracle9i Database Administration I 4-21

Crer la base de donnes (suite) DATAFILE: filespec dsigne les fichiers de donnes utiliser. AUTOEXTEND active ou dsactive l'extension automatique d'un fichier de donnes. MAXDATAFILES indique la taille initiale occupe par la section fichiers de donnes du fichier de contrle lors de l'excution de la commande CREATE DATABASE ou CREATE CONTROLFILE. Si vous tentez d'ajouter un fichier qui porte le nombre de fichiers une valeur suprieure MAXDATAFILES, mais infrieure ou gale DB_FILES, le fichier de contrle est automatiquement tendu pour que la section fichiers de donnes puisse contenir un plus grand nombre de fichiers. MAXINSTANCES correspond au nombre maximal d'instances pouvant monter et ouvrir la base de donnes simultanment. ARCHIVELOG indique que les fichiers de journalisation doivent tre archivs avant d'tre rutiliss. NOARCHIVELOG indique que les fichiers de journalisation peuvent tre rutiliss sans archivage pralable de leur contenu. CHARACTER SET dsigne le jeu de caractres que la base de donnes utilise pour le stockage des donnes. NATIONAL CHARACTER SET dsigne le jeu de caractres nationaux utilis pour le stockage des donnes dans les colonnes NCHAR, NCLOB ou NVARCHAR2. S'il est omis, le jeu utilis par dfaut est celui de la base de donnes. DEFAULT TEMPORARY TABLESPACE cre pour la base de donnes un tablespace temporaire par dfaut auquel Oracle affecte tous les utilisateurs pour lesquels vous n'indiquez pas d'autre tablespace temporaire. UNDO TABLESPACE cre un tablespace d'annulation et y ajoute les fichiers de donnes indiqus. SET TIME_ZONE dfinit le fuseau horaire de la base de donnes.

Oracle9i Database Administration I 4-22

Crer une base de donnes l'aide d'Oracle-Managed Files (OMF)


L'utilisation d'OMF simplifie l'administration des fichiers sur le systme d'exploitation. Les fichiers OMF sont crs et supprims par le serveur Oracle via des commandes SQL. Deux paramtres permettent de les dfinir :
DB_CREATE_FILE_DEST : indique l'emplacement par dfaut des fichiers de donnes. DB_CREATE_ONLINE_LOG_DEST_N : indique l'emplacement par dfaut des fichiers de journalisation en ligne et des fichiers de contrle. Vous pouvez dfinir jusqu' cinq emplacements.

4-23

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer une base de donnes l'aide d'Oracle-Managed Files Les OMF simplifient l'administration des fichiers puisqu'ils rendent inutile la gestion directe des fichiers dans une base de donnes Oracle. Ils sont nomms comme suit : Fichiers de contrle : ora_%u.ctl Fichiers de journalisation : ora_%g_%u.log Fichiers de donnes : ora_%t_%u.dbf Fichiers de donnes temporaires : ora_%t_%u.tmp Explication de la syntaxe de ces noms : %u correspond une chane de huit caractres qui garantit l'unicit.

%t correspond au nom du tablespace, tronqu au besoin pour ne pas dpasser la longueur maximale des noms de fichier. Lorsque le nom du tablespace est plac avant la chane d'unicit, tous les fichiers de donnes du tablespace s'affichent les uns ct des autres, dans l'ordre alphabtique. %g correspond au numro du groupe de fichiers de journalisation. ora_ suivi de .dbf indique qu'il s'agit d'un fichier OMF.

Oracle9i Database Administration I 4-23

Crer une base de donnes l'aide d'Oracle-Managed Files (suite) Les fichiers d'annulation ne possdent pas d'extension spciale. Il n'est pas indispensable de configurer la fois les paramtres DB_CREATE_FILE_DEST et DB_CREATE_ONLINE_LOG_DEST_N. Vous pouvez utiliser l'un et/ou l'autre.

Oracle9i Database Administration I 4-24

Crer une base de donnes l'aide d'Oracle-Managed Files


Dfinissez les paramtres OMF dans le fichier de paramtres d'initialisation. Exemple :
DB_CREATE_FILE_DEST=/$HOME/ORADATA/u05 DB_CREATE_ONLINE_DEST_1=/$HOME/ORADATA/u01 DB_CREATE_ONLINE_DEST_2=/$HOME/ORADATA/u02

La commande CREATE DATABASE est simplifie :


@cddba01.sql > CREATE DATABASE dba01;

4-25

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer une base de donnes l'aide d'Oracle-Managed Files Dans le cas de la cration d'une base de donnes l'aide d'OMF, les paramtres DB_CREATE_FILE_DEST et DB_CREATE_ONLINE_DEST_n sont dfinis dans le fichier de paramtres d'initialisation. Lorsque les paramtres OMF sont dfinis, la syntaxe de cration de la base est simplifie, car il n'est pas ncessaire de dfinir des noms ou des emplacements de fichier. L'exemple ci-dessus illustre la cration d'une base de donnes l'aide des OMF suivants : Un fichier de donnes du tablespace SYSTEM, qui se trouve dans le rpertoire /$HOME/ORADATA/u05 et dont la taille (100 Mo) peut tre tendue automatiquement de faon illimite. Deux groupes de fichiers de journalisation en ligne comportant deux membres de 100 Mo chacun et situs respectivement dans les rpertoires /$HOME/ORADATA/u01 et /$HOME/ORADATA/u02. Si le mode de gestion automatique des annulations est activ, un fichier de donnes du tablespace d'annulation situ dans le rpertoire /$HOME/ORADATA/u05 et dont la taille (10 Mo) peut tre tendue de faon illimite. Un tablespace d'annulation nomm SYS_UNDOTBS est cr. Si aucun paramtre d'initialisation n'a t dfini, deux fichiers de contrle, situs respectivement dans les rpertoires /$HOME/ORADATA/u01 et /$HOME/ORADATA/u02. Le fichier de contrle principal est celui qui se trouve dans le rpertoire /$HOME/ORADATA/u01.

Oracle9i Database Administration I 4-25

Crer une base de donnes l'aide d'Oracle-Managed Files (suite) Si la commande CREATE DATABASE choue, tous les fichiers OMF crs sont supprims. Les noms de fichier gnrs en interne peuvent tre visualiss lorsque l'utilisateur effectue une slection dans DBA_DATAFILES, V$DATAFILE, V$CONTROLFILE et V$LOGFILE. Vous pouvez modifier dynamiquement les paramtres DB_CREATE_FILE_DEST et DB_CREATE_ONLINE_LOG_DEST_N l'aide de la commande ALTER SYSTEM SET.

Oracle9i Database Administration I 4-26

Rsoudre les problmes

La cration de la base de donnes choue : si le script SQL contient des erreurs de syntaxe, si les fichiers crer existent dj, en cas d'erreurs du systme d'exploitation lies, par exemple, aux droits sur les fichiers ou les rpertoires ou un espace insuffisant.

4-27

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rsoudre les problmes Si l'un des trois incidents mentionns dans la diapositive se produit, l'instruction CREATE DATABASE choue. Vous devez alors supprimer les fichiers crs au moyen de cette instruction, corriger les erreurs et essayer nouveau de crer la base de donnes.

Oracle9i Database Administration I 4-27

Une fois la base de donnes cre...

Elle contient : des fichiers de donnes, de contrle et de journalisation, l'utilisateur SYS et le mot de passe change_on_install, l'utilisateur SYSTEM et le mot de passe manager, des tables internes (mais pas de vues du dictionnaire de donnes).

4-28

Copyright Oracle Corporation, 2001. Tous droits rservs.

Une fois la base de donnes cre... L'excution de l'instance se poursuit et la base est ouverte et prte l'emploi. Cette dernire contient les utilisateurs SYS et SYSTEM. Selon la mthode de cration utilise ( l'aide de Database Configuration Assistant ou manuellement), il est possible de crer d'autres utilisateurs. Changez les mots de passe de SYS et SYSTEM ds que la base de donnes est cre. Vous pouvez consulter les vues dynamiques des performances, telles que $LOGFILE, V$CONTROLFILE et V$DATAFILE, mais aucune vue du dictionnaire de donnes n'est cre.

Oracle9i Database Administration I 4-28

Synthse

Ce chapitre vous a permis d'apprendre : identifier les conditions pralables la cration d'une base de donnes crer une base de donnes l'aide d'Oracle Database Configuration Assistant crer manuellement une base de donnes crer une base de donnes l'aide d'Oracle-Managed Files

4-29

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 4-29

Prsentation de l'exercice 4

Ce chapitre prsente deux mthodes spcifiques de cration de base de donnes :


Cration l'aide d'tapes graphiques avec Database Configuration Assistant : Start > Programs > Oracle-OraHome90 > Configuration and Migration Tools. L'annexe A dcrit tape par tape la procdure de cration manuelle d'une base de donnes sous UNIX.

Revoyez les tapes du prsent chapitre et, ventuellement, crez une base de donnes manuellement ou l'aide de Database Configuration Assistant.

4-30

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 4-30

Utiliser les vues du dictionnaire de donnes et les vues dynamiques des performances

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs
A la fin de ce chapitre, vous pourrez : identifier les objets de base de donnes intgrs identifier le contenu et les types d'utilisation du dictionnaire de donnes comprendre comment sont cres les vues du dictionnaire de donnes identifier les catgories de vues du dictionnaire de donnes interroger le dictionnaire de donnes et les vues dynamiques des performances comprendre les conventions d'appellation des scripts d'administration

5-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 5-2

Objets de base de donnes intgrs

Autres objets crs avec la base de donnes : Dictionnaire de donnes Tables des performances Packages PL/SQL Dclencheurs d'vnements de base de donnes

5-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objets de base de donnes intgrs Outre la cration des fichiers de base de donnes, plusieurs autres structures sont cres. Le dictionnaire de donnes dcrit les objets de la base de donnes. Les tables dynamiques des performances contiennent des informations permettant l'administrateur de base de donnes (DBA) de surveiller et de rgler la base de donnes et l'instance correspondante. Les packages PL/SQL sont des units de programme ajoutant une fonctionnalit la base de donnes. Ces packages sont crs lors de l'excution du script catproc.sql aprs la commande CREATE DATABASE. Les packages PL/SQL ne seront pas prsents dans ce cours. Les dclencheurs d'vnements de base de donnes sont des procdures qui s'excutent implicitement soit lors de la modification d'une table ou d'une vue, soit la suite d'une action de l'utilisateur ou du systme de base de donnes. Les dclencheurs d'vnements de base de donnes ne seront pas prsents dans ce cours.

Oracle9i Database Administration I 5-3

Dictionnaire de donnes

Il est vital pour toute base de donnes Oracle. Il dcrit la base de donnes et ses objets. Il contient des tables et des vues en lecture seule. Il est stock dans le tablespace SYSTEM.
Fichiers de donnes Fichiers Fichiers de de contrle journalisation Base de donnes

Le propritaire est l'utilisateur SYS. Sa mise jour est effectue par le serveur Oracle. Il est accessible avec le privilge SELECT.

Tables du dictionnaire de donnes

5-4

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dictionnaire de donnes L'un des composants essentiels d'une base de donnes Oracle est son dictionnaire de donnes, compos d'un jeu de tables et de vues accessibles en lecture seule, fournissant des informations sur la base de donnes associe. Le dictionnaire de donnes est mis jour par le serveur Oracle chaque fois qu'une commande LDD est excute. En outre, certaines commandes LMD, telles que celle qui provoque l'extension d'une table, peuvent mettre jour le dictionnaire de donnes. Le dictionnaire de donnes est vital pour la base de donnes Oracle, et constitue aussi une source importante d'informations pour l'ensemble des utilisateurs, de l'utilisateur final au dveloppeur d'applications, en passant par l'administrateur de base de donnes. Vous pouvez y accder l'aide d'instructions SQL. Le dictionnaire de donnes tant accessible en lecture seule, vous ne pouvez excuter que des interrogations sur les tables et les vues qu'il contient.

Oracle9i Database Administration I 5-4

Tables de base et vues du dictionnaire de donnes


Le dictionnaire de donnes est compos de deux parties : Tables de base
Contiennent la description de la base de donnes Sont cres l'aide de la commande CREATE DATABASE

Vues du dictionnaire de donnes


Simplifient les informations contenues dans les tables de base Sont accessibles par des synonymes publics Sont cres l'aide du script catalog.sql

5-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Tables de base et vues du dictionnaire de donnes Le dictionnaire de donnes contient la description des objets se trouvant dans la base de donnes. Il comprend deux types d'objet : Tables de base Les tables de base sont des tables sous-jacentes qui contiennent des informations sur la base de donnes. Elles constituent les premiers objets crs dans toute base de donnes Oracle. Elles sont automatiquement gnres lorsque le serveur Oracle excute le script sql.bsq la cration de la base. Seul le serveur Oracle doit crire dans ces tables. Les utilisateurs y accdent rarement directement, car la plupart des donnes sont stockes dans un format difficilement comprhensible. N'utilisez jamais de commandes LMD pour mettre jour directement les tables de base, except pour la table AUD$. La table IND$, par exemple, est une table de base. Elle contient des informations sur les index de la base de donnes. Vues du dictionnaire de donnes Les vues du dictionnaire de donnes synthtisent les informations des tables de base et les affichent dans un format qui facilite leur exploitation. Par exemple, les vues du dictionnaire de donnes utilisent des noms d'objets plutt que des numros d'objet. Ces vues sont cres l'aide du script catalog.sql qui est excut aprs la commande CREATE DATABASE.

Oracle9i Database Administration I 5-5

Crer des vues du dictionnaire de donnes

Script catalog.sql

Tche effectue Cre des vues du dictionnaire de donnes couramment utilises et des synonymes

catproc.sql

Excute des scripts requis par PL/SQL ct serveur

5-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer des vues du dictionnaire de donnes Les tables de base du dictionnaire de donnes sont automatiquement gnres lors de la cration d'une base de donnes. Lorsque la base de donnes est cre l'aide d'Oracle Universal Installer, les scripts utiliss pour crer les vues du dictionnaire de donnes et les vues dynamiques des performances, ainsi que les scripts correspondant aux options du serveur Oracle choisies s'excutent automatiquement. Vous devrez excuter manuellement ces scripts lorsque vous crerez manuellement une nouvelle base de donnes. En outre, vous devrez peut-tre les rexcuter lors d'une mise niveau vers une nouvelle version du serveur Oracle. Excutez ces scripts en tant qu'utilisateur SYS avec le privilge SYSDBA. Les scripts se trouvent dans les rpertoires suivants : UNIX : $ORACLE_HOME/rdbms/admin NT : %ORACLE_HOME%\rdbms\admin

Oracle9i Database Administration I 5-6

Contenu du dictionnaire de donnes

Le dictionnaire de donnes fournit des informations sur : la structure logique et la structure physique de la base de donnes, les dfinitions d'objets et l'espace allou aux objets, les contraintes d'intgrit, les utilisateurs, les rles, les privilges, la fonction d'audit.

5-7

Copyright Oracle Corporation, 2001. Tous droits rservs.

Contenu du dictionnaire de donnes Un dictionnaire de donnes contient les lments suivants : la dfinition de tous les objets de schma de la base de donnes (tables, vues, index, clusters, synonymes, squences, procdures, fonctions, packages, dclencheurs (triggers), etc.), la quantit d'espace alloue aux objets de schma et celle qu'ils utilisent, les valeurs par dfaut des colonnes, les informations sur les contraintes d'intgrit, le nom des utilisateurs Oracle, les privilges et rles attribus chaque utilisateur, les informations d'audit (par exemple, sur l'identit des utilisateurs qui ont consult ou mis jour des objets de schma).

Oracle9i Database Administration I 5-7

Utilisation du dictionnaire de donnes


Principaux types d'utilisation : Le serveur Oracle l'utilise pour rechercher des informations sur :
les utilisateurs, les objets de schma, les structures de stockage.

Le serveur Oracle le modifie lorsqu'une instruction LDD est excute. Les utilisateurs et les administrateurs de base de donnes l'utilisent comme rfrence en lecture seule pour obtenir des informations relatives la base de donnes.
5-8 Copyright Oracle Corporation, 2001. Tous droits rservs.

Utilisation du dictionnaire de donnes Comment Oracle Server utilise-t-il le dictionnaire de donnes ? Les donnes des tables de base contenues dans le dictionnaire de donnes sont ncessaires au fonctionnement du serveur Oracle. Par consquent, seul le serveur doit crire ou modifier des informations dans ce dictionnaire. Lorsque la base de donnes est en service, le serveur Oracle lit le dictionnaire de donnes pour s'assurer que les objets de schma existent et que les utilisateurs disposent des privilges d'accs appropris sur ces derniers. Il met galement le dictionnaire jour en permanence pour y rpercuter les modifications apportes aux structures de la base. Comment les utilisateurs et les administrateurs peuvent-ils exploiter le dictionnaire de donnes ? Les vues du dictionnaire de donnes servent de rfrence tous les utilisateurs de la base. Certaines sont accessibles tous les utilisateurs Oracle, tandis que d'autres sont rserves aux administrateurs.

Oracle9i Database Administration I 5-8

Catgories de vues du dictionnaire de donnes


Trois principaux ensembles de vues statiques Se distinguent par leur porte :
DBA : contenu de tous les schmas ALL : lments auxquels l'utilisateur a accs USER : contenu du schma de l'utilisateur

DBA_xxx : tous les objets de la base de donnes ALL_xxx : objets accessibles l'utilisateur en cours USER_xxx : objets appartenant l'utilisateur en cours

5-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Catgories de vues du dictionnaire de donnes Vues portant le prfixe DBA Les vues portant le prfixe DBA fournissent une prsentation globale de toute la base de donnes. Elles sont conues pour tre interroges uniquement par les administrateurs de base de donnes. Tout utilisateur dot du privilge systme SELECT ANY TABLE peut interroger les vues DBA du dictionnaire de donnes. Pour excuter une interrogation sur tous les objets de la base de donnes, l'administrateur peut lancer l'instruction suivante : SELECT owner, object_name, object_type FROM dba_objects; Vues portant le prfixe ALL Les vues portant le prfixe ALL offrent une perspective gnrale de la base de donnes, du point de vue utilisateur. Elles renvoient des informations relatives aux objets de schma accessibles tout utilisateur dot de privilges et de rles accords publiquement ou explicitement, ainsi que des informations sur les objets de schma qui lui appartiennent. Par exemple, l'interrogation suivante renvoie des informations sur tous les objets auxquels l'utilisateur a accs : SELECT owner, object_name, object_type FROM all_objects;

Oracle9i Database Administration I 5-9

Catgories de vues du dictionnaire de donnes (suite) Vues portant le prfixe USER Les vues qui portent le prfixe USER sont celles qui prsentent le plus d'intrt pour les utilisateurs de la base de donnes. Ces vues : font rfrence l'environnement priv de l'utilisateur dans la base de donnes, concernent gnralement des objets appartenant l'utilisateur en cours, comportent des colonnes identiques celles des autres vues, ceci prs que la colonne OWNER dsigne implicitement l'utilisateur en cours, renvoient un sous-ensemble des informations contenues dans les vues de catgorie ALL, peuvent tre associes des synonymes publics abrgs, pour plus de commodit. Par exemple, l'interrogation suivante renvoie tous les objets contenus dans le schma utilisateur : SELECT owner, object_name, object_type FROM users_objects; Vues du dictionnaire de donnes Les vues du dictionnaire de donnes sont des vues statiques qui rpondent aux questions du type : L'objet a-t-il t cr ? D'o provient-il ? Qui est son propritaire ? De quels privilges les utilisateurs disposent-ils ? Quelles sont les restrictions relatives l'objet ? Remarque : Pour obtenir la liste de toutes les vues du dictionnaire de donnes, voir le document Oracle9i Database Reference.

Oracle9i Database Administration I 5-10

Exemples de vues du dictionnaire de donnes


Prsentation gnrale
DICTIONARY, DICT_COLUMNS

Objets de schma
DBA_TABLES, DBA_INDEXES, DBA_TAB_COLUMNS, DBA_CONSTRAINTS

Allocation d'espace
DBA_SEGMENTS, DBA_EXTENTS

Structure de base de donnes


DBA_TABLESPACES, DBA_DATA_FILES

5-11

Copyright Oracle Corporation, 2001. Tous droits rservs.

Exemples de vues du dictionnaire de donnes Pour obtenir une prsentation des vues du dictionnaire de donnes, interrogez la vue DICTIONARY ou son synonyme DICT. Exemple : SELECT * FROM dictionary; Utilisez la clause WHERE pour restreindre vos recherches : SELECT * FROM dictionary WHERE table_name LIKE dba_seg% Utilisez le mot-cl DESCRIBE pour obtenir la liste des colonnes d'une vue : DESCRIBE dba_users; Pour obtenir une prsentation des colonnes du dictionnaire de donnes, interrogez la vue DICT_COLUMNS. Utilisez la commande SELECT pour afficher le contenu d'une vue du dictionnaire de donnes : SELECT * FROM dba_users; Remarque : Pour obtenir la liste de toutes les vues du dictionnaire de donnes et de leurs colonnes, voir le document Oracle9i Database Reference.

Oracle9i Database Administration I 5-11

Tables dynamiques des performances


Tables virtuelles Enregistrent l'activit en cours de la base de donnes Sont constamment mises jour lorsque la base de donnes est active Les informations sont lues partir de la mmoire et du fichier de contrle Permettent de surveiller et de rgler la base de donnes Le propritaire est l'utilisateur SYS Les synonymes commencent par le prfixe V$ Sont rpertories dans la vue V$FIXED_TABLE
5-12 Copyright Oracle Corporation, 2001. Tous droits rservs.

Tables dynamiques des performances Le serveur Oracle enregistre l'activit en cours de la base de donnes dans un ensemble de tables virtuelles nommes vues dynamiques des performances. Ces tables ne sont prsentes en mmoire que lorsque la base est active, et ce pour prsenter les conditions en temps rel de son fonctionnement. Elles pointent sur des sources relles d'informations figurant dans la mmoire et le fichier de contrle. Il ne s'agit pas rellement de tables et elles ne sont pas accessibles tous les utilisateurs. Toutefois, l'administrateur de base de donnes peut lancer des interrogations, accorder le privilge SELECT et crer des vues partir de celles-ci. Les vues dynamiques des performances sont parfois appeles vues fixes, car elles ne peuvent pas tre modifies ni supprimes par l'administrateur de base de donnes. Les tables dynamiques des performances appartiennent l'utilisateur SYS et portent des noms qui commencent par le prfixe V_$. Des vues sont cres partir de ces tables et sont associes des synonymes publics. Les synonymes commencent par le prfixe V$. La vue V$DATAFILE contient, par exemple, des informations sur les fichiers de donnes de la base et la vue V$FIXED_TABLE contient des informations sur toutes les tables et vues dynamiques des performances figurant dans la base de donnes. Les tables dynamiques des performances permettent de rpondre des questions du type : L'objet est-il en ligne et disponible ? L'objet est-il ouvert ? Quels verrous externes (locks) sont appliqus ? La session est-elle active ?

Oracle9i Database Administration I 5-12

Exemples de tables dynamiques des performances



5-13

V$CONTROLFILE V$DATABASE V$DATAFILE V$INSTANCE V$PARAMETER V$SESSION V$SGA $SPPARAMETER V$TABLESPACE V$THREAD V$VERSION
Copyright Oracle Corporation, 2001. Tous droits rservs.

Exemples de vues dynamiques des performances Pour obtenir une prsentation des vues dynamiques des performances, interrogez la vue DICTIONARY ou son synonyme DICT. Exemple : SELECT * FROM dictionary; Utilisez la clause WHERE pour restreindre vos recherches : SELECT * FROM dictionary WHERE table_name like V$data% Vous pouvez galement interroger la vue V$FIXED_TABLE pour obtenir la liste des vues dynamiques des performances : SELECT * FROM V$FIXED_TABLE; Utilisez le mot-cl DESCRIBE pour obtenir la liste des colonnes d'une vue : DESCRIBE V$INSTANCE; Pour obtenir une prsentation des colonnes des vues dynamiques des performances, interrogez la vue DICT_COLUMNS. Utilisez la commande SELECT pour afficher le contenu d'une vue : SELECT * from V$INSTANCE;

Oracle9i Database Administration I 5-13

Exemples de vues dynamiques des performances (suite) Exemples : V$CONTROLFILE rpertorie les noms des fichiers de contrle. V$DATABASE contient les informations du fichier de contrle sur la base de donnes. V$DATAFILE contient les informations du fichier de contrle sur le fichier de donnes. V$INSTANCE affiche l'tat de l'instance en cours. V$PARAMETER rpertorie les paramtres et les valeurs actuellement utiliss par la session. V$SESSION rpertorie les informations sur la session en cours. V$SGA contient des informations de synthse sur la mmoire SGA (System Global Area). V$SPPARAMETER affiche le contenu du fichier SPFILE. V$TABLESPACE affiche les informations du fichier de contrle sur le tablespace. V$THREAD contient des informations du fichier de contrle sur les threads. V$VERSION indique les numros de version des composants de la bibliothque principale (core library) du serveur Oracle. Remarque : Pour obtenir la liste de toutes les vues dynamiques des performances et de leurs colonnes, voir le document Oracle9i Database Reference.

Oracle9i Database Administration I 5-14

Conventions d'appellation des scripts d'administration

Convention cat*.sql dbms*.sql prvt*.plb utl*.sql

Description Informations du catalogue et du dictionnaire de donnes Spcifications de package de la base de donnes Code de package de base de donnes crypt Vues et tables des utilitaires de base de donnes

5-15

Copyright Oracle Corporation, 2001. Tous droits rservs.

Conventions d'appellation des scripts d'administration Les scripts d'administration peuvent tre rpartis en plusieurs catgories en fonction de leur nom de fichier : Les scripts cat*.sql crent des vues du dictionnaire de donnes. Outre les scripts catalog.sql et catproc.sql, il existe des scripts qui gnrent des informations destines aux utilitaires Oracle. Par exemple, le script catadt.sql cre des vues du dictionnaire de donnes permettant d'afficher des mtadonnes sur les types d'objet et d'autres caractristiques objet du SGBD orient objet. Le script catnoadt.sql supprime ces tables et ces vues. Les scripts dbms*.sql et prvt*plb crent des objets pour les packages Oracle prdfinis pour l'extension des fonctions du serveur Oracle. Ces programmes facilitent l'administration de la base de donnes. La plupart des scripts SQL sont lancs lors de l'excution du script catproc.sql. Quelques scripts supplmentaires doivent tre excuts par l'administrateur de base de donnes. Ainsi par exemple, le script dbmspool.sql permet d'afficher la taille des objets de la zone de mmoire partage et de marquer ces objets comme tant conserver ou supprimer de la mmoire SGA pour limiter la fragmentation de la zone de mmoire partage. Les scripts utl*.sql doivent tre excuts lorsque la base de donnes requiert des vues et des tables supplmentaires. Par exemple, le script utlxplan.sql cre une table permettant d'afficher le plan d'excution d'une instruction SQL. Remarque : La plupart de ces scripts doivent tre excuts sous l'ID utilisateur SYS avec le privilge SYSDBA. L'administrateur de base de donnes doit examiner les scripts pour dterminer le compte utilisateur requis pour leur excution.

Oracle9i Database Administration I 5-15

Synthse
Ce chapitre vous a permis d'apprendre : identifier les objets de base de donnes intgrs identifier le contenu et les types d'utilisation du dictionnaire de donnes comprendre comment sont cres les vues du dictionnaire de donnes identifier les catgories des vues du dictionnaire de donnes interroger le dictionnaire de donnes et les vues dynamiques des performances comprendre les conventions d'appellation des scripts d'administration

5-16

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 5-16

Prsentation de l'exercice 5

Dans cet exercice, vous allez : identifier les composants et le contenu du dictionnaire de donnes interroger le dictionnaire de donnes

5-17

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 5 Remarque : Cet exercice peut tre ralis avec SQL*Plus, ou Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 5-17

Exercice 5 : utiliser les vues du dictionnaire de donnes et les vues dynamiques des performances 1 Dans la liste suivante, identifiez les affirmations correctes concernant le dictionnaire de donnes : a Le dictionnaire de donnes dcrit la base de donnes et ses objets. b Le dictionnaire de donnes comprend deux types d'objet : des tables de base et des vues. c Le dictionnaire de donnes est un ensemble de tables. d Le dictionnaire de donnes enregistre et vrifie les informations relatives la base de donnes qui lui est associe. 2 Le script catalog.sql permet de crer les tables de base. a Vrai b Faux 3 Dans la liste suivante, identifiez les trois affirmations correctes concernant l'utilisation du dictionnaire de donnes : a Le serveur Oracle le modifie lorsqu'une instruction LMD est excute. b Il permet de rechercher des informations sur les utilisateurs, les objets de schma et les structures de stockage. c Les utilisateurs et les administrateurs de base de donnes s'en servent comme rfrence. d Il est indispensable au bon fonctionnement de la base de donnes. 4 Les vues du dictionnaire de donnes sont statiques. a Vrai b Faux 5 Les informations d'une vue dynamique des performances sont extraites partir du fichier de contrle. a Vrai b Faux 6 Dans la liste suivante, identifiez les questions auxquelles une vue dynamique des performances peut rpondre : a L'objet est-il en ligne et disponible ? b Quels verrous externes sont appliqus ? c Qui est le propritaire de l'objet ? d De quels privilges les utilisateurs disposent-ils ? e La session est-elle active ? 7 Recherchez la liste des vues du dictionnaire de donnes. 8 Identifiez le nom de la base de donnes, le nom de l'instance et la taille des blocs de la base de donnes. Indice : Interrogez les vues dynamiques des performances V$DATABASE, V$THREAD et V$PARAMETER. 9 Affichez la liste des noms des fichiers de donnes. Indice : Interrogez la vue dynamique des performances V$DATAFILE. 10 Identifiez le fichier de donnes qui constitue le tablespace SYSTEM. Indice : Interrogez la vue du dictionnaire de donnes DBA_DATA_FILES pour identifier le fichier de donnes qui constituent le tablespace SYSTEM.

Oracle9i Database Administration I 5-18

Exercice 5 : utiliser les vues du dictionnaire de donnes et les vues dynamiques des performances (suite) 11 Quel est le volume d'espace libre disponible et le volume d'espace utilis dans la base de donnes ? Indices - Interrogez la vue DBA_FREE_SPACE du dictionnaire de donnes pour afficher la quantit d'espace disponible dans la base de donnes. - Interrogez la vue DBA_SEGMENTS du dictionnaire de donnes pour afficher la quantit d'espace utilis. 12 Rpertoriez le nom et la date de cration des utilisateurs de la base de donnes. Indice : Interrogez la vue DBA_USERS du dictionnaire de base de donnes pour obtenir la liste des noms et des dates de cration des utilisateurs de la base de donnes.

Oracle9i Database Administration I 5-19

Oracle9i Database Administration I 5-20

Grer le fichier de contrle

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : expliquer les fonctions du fichier de contrle numrer le contenu du fichier de contrle multiplexer et grer le fichier de contrle grer le fichier de contrle l'aide d'OracleManaged Files (OMF) obtenir des informations sur les fichiers de contrle

6-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 6-2

Fichier de contrle
Il s'agit d'un petit fichier binaire. Il dfinit l'tat actuel de la base de donnes physique. Il assure l'intgrit de la base de donnes. Il est requis :
lors de l'tape MOUNT lors du dmarrage de la base de donnes, pour le fonctionnement de la base de donnes.

Il est li une seule base de donnes. La perte de ce fichier peut ncessiter la rcupration de la base de donnes. Sa taille initiale est dfinie par la commande CREATE DATABASE.
6-3

Base de donnes Fichiers de contrle

Copyright Oracle Corporation, 2001. Tous droits rservs.

Fichier de contrle Le fichier de contrle est un petit fichier binaire ncessaire au dmarrage et au bon fonctionnement de la base de donnes. Chaque fichier de contrle est associ une seule base de donnes Oracle. Avant l'ouverture d'une base, le fichier de contrle est lu afin de dterminer si cette base est oprationnelle. Ce fichier est constamment mis jour par le serveur Oracle pendant l'utilisation de la base de donnes. Il doit donc tre accessible en criture chaque ouverture de la base. Seul le serveur Oracle peut modifier le contenu du fichier de contrle ; l'administrateur de base de donnes et l'utilisateur final ne peuvent pas modifier ce fichier. Si ce fichier est inaccessible, la base ne fonctionne pas correctement. Si toutes les copies des fichiers de contrle d'une base de donnes sont perdues, cette dernire doit tre rcupre pour tre ouverte.

Oracle9i Database Administration I 6-3

Fichier de contrle (suite) Dimensionner le fichier de contrle Les mots-cls dfinis la cration de la base de donnes ont un impact sur la taille du fichier de contrle. Ceci est particulirement visible lorsque les paramtres ont des valeurs leves. La taille du fichier dpend des mots-cls suivants dans la commande CREATE DATABASE ou CREATE CONTROLFILE : MAXLOGFILES MAXLOGMEMBERS MAXLOGHISTORY MAXDATAFILES MAXINSTANCES

Oracle9i Database Administration I 6-4

Contenu du fichier de contrle

Le fichier de contrle contient les entres suivantes : Nom et identificateur de la base de donnes Horodatage de cration de la base de donnes Nom des tablespaces Nom et emplacement des fichiers de donnes et des fichiers de journalisation (redo log) Numro de squence du fichier de journalisation en cours Informations sur les points de reprise (checkpoints) Dbut et fin des segments d'annulation (undo segments) Informations sur l'archivage des fichiers de journalisation Informations sur les sauvegardes

6-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Contenu du fichier de contrle Le fichier de contrle contient les informations suivantes : Le nom de la base de donnes correspond au nom indiqu par le paramtre d'initialisation DB_NAME ou celui utilis dans l'instruction CREATE DATABASE. L'identificateur de la base de donnes est enregistr la cration de cette dernire. L'horodatage de cration de la base de donnes est galement enregistr la cration de cette dernire. Le nom et l'emplacement des fichiers de donnes et des fichiers de journalisation en ligne (online redo logs) associs sont mis jour lors de l'ajout, du changement de nom ou de la suppression de l'un de ces fichiers dans la base de donnes. Les informations relatives aux tablespaces sont mises jour lors de l'ajout ou de la suppression de tablespaces. L'historique de journalisation est enregistr lors des changements de fichier de journalisation. L'emplacement et le statut des journaux archivs sont enregistrs lors de l'archivage. L'emplacement et le statut des sauvegardes sont enregistrs par l'utilitaire Recovery Manager. Le numro de squence du journal en cours est enregistr lors des changements de fichier de journalisation. Les informations relatives aux points de reprise (checkpoints) sont enregistres lorsque les points de reprise ont lieu.

Oracle9i Database Administration I 6-5

Contenu du fichier de contrle (suite) Le fichier de contrle comprend deux types de section : les sections rutilisables, les sections non rutilisables. Les sections rutilisables contiennent les informations de Recovery Manager, telles que les noms des fichiers de donnes de sauvegarde et ceux des fichiers de journalisation de sauvegarde. Ces sections sont utilises de manire circulaire et ne peuvent tre rutilises que par Recovery Manager. Remarque : Recovery Manager est prsent en dtail dans le cours Oracle9i DBA II.

Oracle9i Database Administration I 6-6

Multiplexer le fichier de contrle

CONTROL_FILES= $HOME/ORADATA/u01/ctrl01.ctl, $HOME/ORADATA/u02/ctrl02.ctl

Disque 1 (u01)

Disque 2 (u02)

ctrl01.ctl

ctrl02.ctl

6-7

Copyright Oracle Corporation, 2001. Tous droits rservs.

Multiplexer le fichier de contrle Pour vous prserver d'une panne en un point unique affectant le fichier de contrle, il est vivement recommand de multiplexer ce fichier et de stocker chaque copie sur un disque physique distinct. Ainsi, si vous perdez un fichier de contrle, vous pouvez utiliser une copie multiplexe de ce fichier pour redmarrer l'instance sans procder une rcupration de la base de donnes. Vous pouvez multiplexer un fichier de contrle jusqu' huit fois : en crant plusieurs fichiers de contrle en mme temps que la base de donnes et en indiquant leur nom et chemin d'accs complet dans le fichier de paramtres d'initialisation : CONTROL_FILES=$HOME/ORADATA/u01/ctrl01.ctl, $HOME/ORADATA/u02/ctrl02.ctl en ajoutant un fichier de contrle une fois la base de donnes cre. Sauvegarder les fichiers de contrle Etant donn que le fichier de contrle enregistre la structure physique de la base de donnes, vous devez immdiatement effectuer une sauvegarde de ce fichier lorsque vous modifiez la structure physique de la base de donnes. Pour plus d'informations sur la sauvegarde et la rcupration du fichier de contrle, voir le cours Oracle9i DBA II.

Oracle9i Database Administration I 6-7

Multiplexer le fichier de contrle lorsqu'un fichier SPFILE est utilis


1. Modifiez le SPFILE :
ALTER SYSTEM SET control_files = '$HOME/ORADATA/u01/ctrl01.ctl', '$HOME/ORADATA/u02/ctrl02.ctl' SCOPE=SPFILE;

2. Arrtez la base de donnes :


shutdown immediate

3. Crez des fichiers de contrle supplmentaires :


cp $HOME/ORADATA/u01/ctrl01.ctl $HOME/ORADATA/u02/ctrl02.ctl

4. Dmarrez la base de donnes :


startup
6-8 Copyright Oracle Corporation, 2001. Tous droits rservs.

Multiplexer le fichier de contrle lorsqu'un fichier SPFILE est utilis 1. Modifiez le SPFILE : l'aide de la commande ALTER SYSTEM SET, modifiez le fichier SPFILE afin d'y inclure la liste des fichiers de contrle utiliser (fichier de contrle principal et copies multiplexes). 2. Arrtez la base de donnes : arrtez la base afin de crer les fichiers de contrle supplmentaires sur le systme d'exploitation. 3. Crez les fichiers de contrle supplmentaires : l'aide de la commande de copie du systme d'exploitation, crez autant de fichiers de contrle supplmentaires que ncessaire et vrifiez que ces fichiers sont crs dans les rpertoires appropris. 4. Dmarrez la base de donnes : au dmarrage de la base, le fichier SPFILE est lu et le serveur Oracle met jour tous les fichiers de contrle rpertoris dans le paramtre CONTROL_FILES.

Oracle9i Database Administration I 6-8

Multiplexer le fichier de contrle lorsqu'un fichier PFILE est utilis


1. Arrtez la base de donnes :
shutdown immediate

2. Crez des fichiers de contrle supplmentaires :


cp $HOME/ORADATA/u01/ctrl01.ctl $HOME/ORADATA/u02/ctrl02.ctl

3. Ajoutez les noms des fichiers de contrle au fichier PFILE :


CONTROL_FILES = (/DISK1/control01.ctl, /DISK3/control02.ctl)

4. Dmarrez la base de donnes :


startup
6-9 Copyright Oracle Corporation, 2001. Tous droits rservs.

Multiplexer le fichier de contrle lorsqu'un fichier PFILE est utilis 1. Arrtez la base de donnes : arrtez la base afin de crer les fichiers de contrle supplmentaires sur le systme d'exploitation. 2. Crez les fichiers de contrle supplmentaires : l'aide de la commande de copie du systme d'exploitation, crez autant de fichiers de contrle supplmentaires que ncessaire et vrifiez que ces fichiers sont crs dans les rpertoires appropris. 3. Ajoutez les noms des fichiers de contrle au fichier PFILE : modifiez le fichier PFILE afin d'y inclure la liste des fichiers de contrle. 4. Dmarrez la base de donnes : au dmarrage de la base, le fichier PFILE est lu et le serveur Oracle met jour tous les fichiers de contrle rpertoris dans le paramtre CONTROL_FILES.

Oracle9i Database Administration I 6-9

Grer les fichiers de contrle l'aide d'OMF


Si le paramtre CONTROL_FILES n'est pas dfini, les fichiers crs sont de type OMF Les emplacements sont dfinis par le paramtre DB_CREATE_ONLINE_LOG_DEST_n Les noms sont gnrs de faon unique et s'affichent dans le fichier alertSID.log

6-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Grer les fichiers de contrle l'aide d'OMF Si le paramtre CONTROL_FILES n'est pas dfini dans le fichier de paramtres d'initialisation, les fichiers de contrle sont automatiquement crs en tant que fichiers OMF lors de la cration de la base de donnes. Si vous utilisez un fichier init.ora, la valeur du paramtre CONTROL_FILES doit correspondre aux noms gnrs par OMF, que vous pouvez visualiser en effectuant une slection dans la vue V$CONTROLFILE ou le fichier alertSID.log. Si vous utilisez un fichier SPFILE, le paramtre CONTROL_FILES est automatiquement dfini et sauvegard la cration de la base de donnes L'emplacement des fichiers de contrle est dtermin par le paramtre DB_CREATE_ONLINE_LOG_DEST_n. Si ce dernier n'est pas dfini, les fichiers de contrle seront placs l'emplacement dfini par le paramtre DB_CREATE_FILE_DEST. Si aucun de ces deux paramtres n'est dfini, les fichiers de contrle ne seront pas de type OMF. Dans ce cas, le paramtre CONTROL_FILES doit tre dfini dans le fichier de paramtres d'initialisation ( dfaut, une erreur sera gnre). Les noms des fichiers de contrle sont gnrs de faon unique (ora_cmr7t30p.ctl) et sont ajouts dans le fichier alertSID.log la cration des fichiers.

Oracle9i Database Administration I 6-10

Obtenir des informations sur les fichiers de contrle


Vous pouvez interroger les vues suivantes pour obtenir des informations sur le statut et l'emplacement des fichiers de contrle : V$CONTROLFILE rpertorie le nom et le statut de tous les fichiers de contrle associs l'instance. V$PARAMETER rpertorie le statut et l'emplacement de tous les paramtres. V$CONTROLFILE_RECORD_SECTION fournit des informations sur les enregistrements des diffrentes sections des fichiers de contrle. SHOW PARAMETERS CONTROL_FILES rpertorie le nom, le statut et l'emplacement des fichiers de contrle.

6-11

Copyright Oracle Corporation, 2001. Tous droits rservs.

Obtenir des informations sur les fichiers de contrle Pour connatre l'emplacement et le nom des fichiers de contrle, interrogez la vue V$CONTROLFILE. SELECT name FROM V$CONTROLFILE; NAME -----------------------------------/u01/home/db03/ORADATA/u01/ctrl01.ctl /u01/home/db03/ORADATA/u01/ctrl01.ctl 2 rows selected. Vous pouvez galement utiliser la vue V$PARAMETER. SELECT name, value from V$PARAMETER WHERE name = 'control_files'; NAME ------------control_files Value ------------------------------------/u01/home/db03/ORADATA/u01/ctrl01.ctl

Oracle9i Database Administration I 6-11

Obtenir des informations sur les fichiers de contrle (suite) Pour obtenir des informations sur les enregistrements des diffrentes sections des fichiers de contrle, interrogez la vue V$CONTROLFILE_RECORD_SECTION. SQL> SELECT type, record_size, records_total, records_used 2 3 FROM v$controlfile_record_section WHERE TYPE='DATAFILE'; RECORD_SIZE RECORDS_TOTAL RECORDS_USED 180 40 10

TYPE DATAFILE 1 row selected.

------------------ ----------- ------------- ------------

La colonne RECORDS_TOTAL indique le nombre d'enregistrements allous une section. Par exemple, vous pouvez afficher le nombre maximum de fichiers de donnes (40, dans notre exemple), qui est dtermin par le paramtre MAXDATAFILES de la commande CREATE DATABASE. Vous pouvez galement utiliser la commande SHOW PARAMETERS pour localiser les fichiers de contrle. SQL> SHOW PARAMETER control_files; NAME TYPE string VALUE $HOME/ORADATA/u01/ctrl01.ctl, $HOME/ORADATA/u02/ctrl02.ctl -------------- ----------- -----------------------------control_files

Les informations d'un certain nombre de vues dynamiques des performances sont extraites du fichier de contrle. Exemples : V$BACKUP V$DATAFILE V$TEMPFILE V$TABLESPACE V$ARCHIVE V$LOG V$LOGFILE V$LOGHIST V$ARCHIVED_LOG V$DATABASE

Oracle9i Database Administration I 6-12

Obtenir des informations sur les fichiers de contrle (suite) Utiliser Oracle Enterprise Manager pour afficher des informations sur les fichiers de contrle A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage. 2. Cliquez sur Controlfile. 3. Dans l'onglet General, cliquez sur All Initialization Parameters. 4. Modifiez un paramtre dans la colonne des valeurs. 5. Cliquez sur OK.

Oracle9i Database Administration I 6-13

Synthse

Ce chapitre vous a permis d'apprendre : multiplexer le fichier de contrle lorsqu'un fichier SPFILE est utilis multiplexer le fichier de contrle lorsqu'un fichier init.ora est utilis grer les fichiers de contrle l'aide d'OMF

6-14

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 6-14

Prsentation de l'exercice 6

Dans cet exercice, vous allez : dmarrer la base de donnes sans fichier de contrle multiplexer un fichier de contrle existant

6-15

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 6 Remarque : Vous pouvez raliser cet exercice avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 6-15

Exercice 6 : grer le fichier de contrle 1 O se trouve le fichier de contrle existant et quel est son nom ? Indice : Interrogez la vue dynamique des performances V$CONTROLFILE. Remarque : Vous pouvez galement utiliser la vue V$PARAMETER ou excuter la commande SHOW PARAMETER pour afficher le nom et l'emplacement du fichier de contrle. 2 Tentez de dmarrer la base de donnes sans fichier de contrle. Pour simuler cette opration, modifiez le nom du fichier de contrle dans le fichier de paramtres ou renommez le fichier de contrle. Que se passe-t-il ? 3 Multiplexez le fichier de contrle existant en utilisant le rpertoire u02, puis nommez le nouveau fichier ctrl02.ctl. Assurez-vous que le serveur Oracle a accs en criture ce nouveau fichier en utilisant, par exemple, la commande chmod 660 sous UNIX. Vrifiez que les deux fichiers de contrle sont utiliss. Indices : - Avant d'arrter la base de donnes, modifiez le fichier SPFILE (SCOPE=SPILE) pour ajouter le nouveau fichier de contrle au fichier d'initialisation. Arrtez la base de donnes, puis copiez le fichier de contrle existant dans un nouveau fichier nomm ctrl02.ctl que vous placerez dans le rpertoire u02. Sous UNIX, utilisez la commande chmod 660. Normalement, les droits sur le fichier restent inchangs ; cette situation n'est prsente que pour les besoins du cours. Dmarrez la base de donnes. Interrogez la vue dynamique des performances V$CONTROLFILE ou V$PARAMETER, ou utilisez la commande SHOW PARAMETER pour confirmer que les deux fichiers de contrle sont utiliss.

4 Quelle est la taille initiale de la section relative aux fichiers de donnes dans le fichier de contrle ? Indice : Interrogez la vue dynamique des performances V$CONTROLFILE_RECORD_SECTION.

Oracle9i Database Administration I 6-16

Grer les fichiers de journalisation

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : expliquer le rle des fichiers de journalisation en ligne dcrire la structure des fichiers de journalisation en ligne grer les changements de fichier de journalisation et les points de reprise multiplexer et mettre jour les fichiers de journalisation en ligne grer les fichiers de journalisation en ligne l'aide d'OMF

7-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 7-2

Utiliser des fichiers de journalisation

Les fichiers de journalisation prsentent les caractristiques suivantes : Ils enregistrent toutes les modifications apportes aux donnes. Ils offrent un mcanisme de rcupration. Ils peuvent tre Fichiers organiss en groupes. de journa Deux groupes au lisation moins sont requis.

7-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Utiliser des fichiers de journalisation Les fichiers de journalisation (fichiers redo log) permettent de journaliser les transactions en cas de panne de la base de donnes. Chaque transaction est crite de manire synchrone dans le tampon de journalisation (redo log buffer), puis transfre dans les fichiers de journalisation pour fournir un mcanisme de rcupration en cas de dfaillance physique ( l'exception, par exemple, du chargement de donnes par chemin direct dans des objets lorsque la clause NOLOGGING est active). Il peut s'agir de transactions qui n'ont pas encore t valides, d'informations sur des segments d'annulation et d'instructions de gestion des schmas et des objets. Les fichiers de journalisation sont utiliss, par exemple, en cas d'chec d'instance pour rcuprer les donnes valides qui n'ont pas t crites dans les fichiers de donnes. Ils ne servent qu' la rcupration de donnes.

Oracle9i Database Administration I 7-3

Structure des fichiers de journalisation

Groupe 1

Groupe 2

Groupe 3 Disque 1

Membre

Membre

Membre

Membre

Membre

Membre

Disque 2

7-4

Copyright Oracle Corporation, 2001. Tous droits rservs.

Structure des fichiers de journalisation L'administrateur de base de donnes peut configurer la base Oracle pour grer des copies de fichiers de journalisation en ligne afin d'viter de perdre des donnes en cas d'incident. Groupes de fichiers de journalisation en ligne : Un ensemble de copies identiques de fichiers de journalisation en ligne est nomm groupe de fichiers de journalisation en ligne. Le processus d'arrire-plan LGWR crit simultanment les mmes informations dans tous les fichiers de journalisation en ligne d'un groupe. Le serveur Oracle ncessite au moins deux groupes de fichiers de journalisation en ligne pour garantir un fonctionnement correct de la base de donnes. Membres des fichiers de journalisation en ligne Chaque fichier de journalisation en ligne d'un groupe est nomm membre. Les membres d'un groupe portent tous le mme numro de squence de journal et ont tous la mme taille. Ce type de numro, permettant d'identifier de manire unique chaque fichier de journalisation, est attribu lorsque le serveur Oracle crit dans un groupe de fichiers de journalisation. Le numro en cours est stock dans le fichier de contrle et dans l'en-tte de tous les fichiers de donnes.

Oracle9i Database Administration I 7-4

Structure des fichiers de journalisation (suite) Crer des fichiers de journalisation initiaux Les groupes de fichiers de journalisation en ligne (online) et les membres initiaux sont crs en mme temps que la base de donnes. Les paramtres suivants limitent le nombre de fichiers de journalisation en ligne : Le paramtre MAXLOGFILES de la commande CREATE DATABASE dfinit le nombre maximum absolu de groupes de fichiers de journalisation en ligne. La valeur maximale et la valeur par dfaut du paramtre MAXLOGFILES dpendent du systme d'exploitation. Le paramtre MAXLOGMEMBERS de la commande CREATE DATABASE dtermine le nombre maximum de membres par groupe. La valeur maximale et la valeur par dfaut de ce paramtre dpendent du systme d'exploitation.

Oracle9i Database Administration I 7-5

Mode de fonctionnement des fichiers de journalisation


Les fichiers de journalisation sont utiliss de faon cyclique. Lorsqu'un fichier de ce type est rempli, le processus LGWR passe au groupe de fichiers de journalisation suivant.
On parle alors de changement de fichier de journalisation. Une opration de point de reprise se produit galement. Les informations sont crites dans le fichier de contrle.

7-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

Mode de fonctionnement des fichiers de journalisation Le serveur Oracle enregistre de manire squentielle toutes les modifications apportes la base de donnes dans le tampon de journalisation. Les entres de journalisation sont crites par le processus LGWR dans l'un des groupes de fichiers de journalisation, appel groupe de fichiers de journalisation en cours, dans les cas suivants : lorsqu'une transaction est valide, lorsqu'un tiers du tampon de journalisation est occup, lorsque le tampon de journalisation contient plus d'un mgaoctet d'enregistrements modifis, avant que le processus DBWn n'crive les blocs modifis du cache de tampons (buffer cache) de la base de donnes dans les fichiers de donnes. Les fichiers de journalisation sont utiliss de faon cyclique. Chaque groupe est identifi par un numro de squence remplac chaque nouvelle utilisation du journal. Changements de fichier de journalisation Le processus LGWR crit de faon squentielle dans les fichiers de journalisation en ligne. Lorsque le groupe de fichiers de journalisation en ligne en cours est complet, le processus LGWR passe au groupe suivant. On parle alors de changement de fichier de journalisation. Lorsque le dernier fichier de journalisation en ligne disponible est complet, le processus LGWR revient au premier groupe et reprend l'criture.

Oracle9i Database Administration I 7-6

Mode de fonctionnement des fichiers de journalisation (suite) Points de reprise Au cours d'un point de reprise : Plusieurs tampons "dirty" de la base de donnes grs par le fichier de journalisation faisant l'objet d'un point de reprise (checkpoint) sont crits par DBWn dans les fichiers de donnes. Leur nombre est dtermin par le paramtre FAST_START_MTTR_TARGET, s'il est dfini. La valeur par dfaut est 0. Remarque : Le paramtre FAST_START_MTTR_TARGET est trait en dtail dans le cours Oracle9i DBA II. Le processus d'arrire-plan des points de reprise CKPT met jour le fichier de contrle pour indiquer qu'il s'est excut correctement. Si le point de reprise est lanc par un changement de fichier de journalisation, ce processus met galement jour les en-ttes des fichiers de donnes. Des points de reprise peuvent se produire pour tous les fichiers de donnes de la base ou pour certains uniquement. Un point de reprise se produit, par exemple, dans les cas suivants : chaque changement de fichier de journalisation, lors de l'arrt d'une instance l'aide de l'option Normal, Transactional ou Immediate, lorsque son excution est force par le paramtre d'initialisation FAST_START_MTTR_TARGET, lorsque l'administrateur de base de donnes l'excute manuellement, lorsque la commande ALTER TABLESPACE [OFFLINE NORMAL|READ ONLY|BEGIN BACKUP]entrane l'excution de points de reprise sur certains fichiers de donnes. Des informations sur chaque point de reprise sont enregistres dans le fichier alert_SID.log si le paramtre d'initialisation LOG_CHECKPOINTS_TO_ALERT possde la valeur TRUE. La valeur par dfaut FALSE de ce paramtre ne permet pas d'enregistrer les points de reprise.

Oracle9i Database Administration I 7-7

Imposer des changements de fichier de journalisation et des points de reprise


Imposer un changement de fichier de journalisation :
ALTER SYSTEM SWITCH LOGFILE;

Vous pouvez forcer l'application de points de reprise l'aide :


du paramtre FAST_START_MTTR_TARGET, FAST_START_MTTR_TARGET = 600 de la commande ALTER SYSTEM CHECKPOINT. ALTER SYSTEM CHECKPOINT;

7-8

Copyright Oracle Corporation, 2001. Tous droits rservs.

Imposer des changements de fichier de journalisation et des points de reprise Des changements de fichier de journalisation et des points de reprise sont automatiquement raliss un stade donn de l'excution de la base de donnes, comme indiqu prcdemment, mais l'administrateur peut forcer l'application de ces oprations. Imposer des points de reprise : Le paramtre FAST_START_MTTR_TARGET remplace les paramtres invalids : FAST_START_IO_TARGET LOG_CHECKPOINT_TIMEOUT Les paramtres invalids ne doivent pas tre utiliss si le paramtre FAST_START_MTTR_TARGET est employ. Dans l'exemple ci-dessus, le paramtre FAST_START_MTTR_TARGET a t dfini de sorte que la rcupration de l'instance ne dure pas plus de 600 secondes. La base de donnes va ajuster les autres paramtres cette fin.

Oracle9i Database Administration I 7-8

Ajouter des groupes de fichiers de journalisation en ligne


ALTER DATABASE ADD LOGFILE GROUP 3 ('$HOME/ORADATA/u01/log3a.rdo', '$HOME/ORADATA/u02/log3b.rdo') SIZE 1M;

log1a.rdo log1b.rdo Groupe 1

log2a.rdo log2b.rdo Groupe 2

log3a.rdo log3b.rdo Groupe 3

7-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Ajouter des groupes de fichiers de journalisation en ligne Dans certains cas, vous pouvez tre amen crer des groupes de fichiers de journalisation supplmentaires. Par exemple, vous pouvez ajouter des groupes pour rsoudre les problmes de disponibilit. Utilisez la commande SQL suivante pour crer un groupe de fichiers de journalisation en ligne : ALTER DATABASE [database] ADD LOGFILE [GROUP integer] filespec [, [GROUP integer] filespec]...] Dfinissez le nom et l'emplacement des membres en suivant les spcifications de fichier. Vous pouvez choisir la valeur du paramtre GROUP pour chaque groupe de fichiers de journalisation. Si vous omettez ce paramtre, le serveur Oracle gnre automatiquement la valeur.

Oracle9i Database Administration I 7-9

Ajouter des membres des fichiers de journalisation en ligne


ALTER DATABASE ADD LOGFILE MEMBER '$HOME/ORADATA/u04/log1c.rdo' TO GROUP 1, '$HOME/ORADATA/u04/log2c.rdo' TO GROUP 2, '$HOME/ORADATA/u04/log3c.rdo' TO GROUP 3;

log1a.rdo log1b.rdo log1c.rdo Groupe 1


7-10

log2a.rdo log2b.rdo log2c.rdo Groupe 2

log3a.rdo log3b.rdo log3c.rdo Groupe 3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Ajouter des membres des fichiers de journalisation en ligne Pour ajouter des membres des groupes de fichiers de journalisation existants, utilisez la commande ALTER DATABASE LOGFILE MEMBER suivante : ALTER DATABASE [database] ADD LOGFILE MEMBER [ 'filename' [REUSE] [, 'filename' [REUSE]]... TO {GROUP integer |('filename'[, 'filename']...) } ]... Utilisez le nom complet des membres pour ne pas crer les fichiers dans un rpertoire par dfaut du serveur de bases de donnes. Si le fichier existe dj, il doit tre de mme taille et vous devez indiquer l'option REUSE. Vous pouvez identifier le groupe cible en indiquant un ou plusieurs membres ou le numro du groupe.

Oracle9i Database Administration I 7-10

Ajouter des membres des fichiers de journalisation en ligne (suite) Utiliser Oracle Enterprise Manager pour ajouter des groupes de fichiers de journalisation et des membres A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage. 2. Cliquez sur le dossier Redo Log Groups. 3. Slectionnez Create dans le menu accessible par le bouton droit de la souris. 4. Dans l'onglet General, indiquez les informations ncessaires la cration du groupe de fichiers de journalisation et des membres. 5. Cliquez sur Create.

Oracle9i Database Administration I 7-11

Supprimer des groupes de fichiers de journalisation en ligne

ALTER DATABASE DROP LOGFILE GROUP 3;

log1a.rdo Groupe 1
7-12

log2a.rdo Groupe 2

log3a.rdo Groupe 3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Supprimer des groupes de fichiers de journalisation en ligne Pour augmenter ou rduire la taille des groupes de fichiers de journalisation en ligne, ajoutezen de nouveaux (ayant la nouvelle taille), puis supprimez les anciens. Utilisez la commande ALTER DATABASE DROP LOGFILE suivante pour supprimer l'ensemble d'un groupe de fichiers de journalisation en ligne : ALTER DATABASE [database] DROP LOGFILE {GROUP integer|('filename'[, 'filename']...)} [,{GROUP integer|('filename'[, 'filename']...)}]... Restrictions : Une instance ncessite au moins deux groupes de fichiers de journalisation en ligne. Vous ne pouvez pas supprimer un groupe actif ou en cours. Lorsque vous supprimez un groupe de fichiers de journalisation en ligne, les fichiers du systme d'exploitation sont conservs.

Oracle9i Database Administration I 7-12

Supprimer des membres de fichiers de journalisation en ligne

ALTER DATABASE DROP LOGFILE MEMBER '$HOME/ORADATA/u04/log3c.rdo';

log1a.rdo log1b.rdo log1c.rdo Groupe 1


7-13

log1a.rdo log1b.rdo log2c.rdo Groupe 2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Supprimer des membres de fichiers de journalisation Vous pouvez tre amen supprimer un membre d'un fichier de journalisation en ligne parce qu'il n'est plus valide. Utilisez la commande ALTER DATABASE DROP LOGFILE MEMBER suivante pour supprimer un ou plusieurs membres d'un fichier de journalisation en ligne : ALTER DATABASE [database] DROP LOGFILE MEMBER 'filename'[, 'filename']... Restrictions : Vous ne pouvez pas supprimer le dernier membre valide du groupe. S'il s'agit du groupe en cours, vous devez imposer un changement de fichier de journalisation pour supprimer le membre. Si la base de donnes fonctionne en mode ARCHIVELOG et que le groupe de fichiers de journalisation du membre n'est pas archiv, vous ne pouvez pas supprimer le membre. Lorsque vous supprimez un membre d'un groupe de fichiers de journalisation en ligne, le fichier du systme d'exploitation n'est pas supprim si vous n'utilisez pas la fonction OMF.

Oracle9i Database Administration I 7-13

Utiliser Storage Manager pour supprimer des membres et des groupes de fichiers de journalisation Utiliser Oracle Enterprise Manager pour supprimer des membres et des groupes de fichiers de journalisation A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage. Pour supprimer un groupe, procdez comme suit : 1. Dveloppez l'arborescence du dossier Redo Log Groups, puis slectionnez le groupe de fichiers de journalisation supprimer. 2. Slectionnez Remove dans le menu accessible par le bouton droit de la souris. 3. Confirmez la suppression. Pour supprimer un membre, procdez comme suit : 1. Dveloppez l'arborescence du dossier Redo Log Groups, puis slectionnez le groupe contenant le membre supprimer. 2. Dans la page General, slectionnez le membre, puis cliquez sur Remove dans le menu accessible par le bouton droit de la souris. 3. Confirmez la suppression.

Oracle9i Database Administration I 7-14

Transfrer ou renommer des fichiers de journalisation en ligne


Transfrez ou renommez des fichiers de journalisation en ligne selon l'une des mthodes suivantes : Commande ALTER DATABASE CLEAR LOGFILE
Copiez les fichiers de journalisation en ligne dans un nouvel emplacement. Excutez la commande. ALTER DATABASE CLEAR LOGFILE '$HOME/ORADATA/u01/log2a.rdo';

Ajoutez de nouveaux membres et supprimez les anciens.

7-15

Copyright Oracle Corporation, 2001. Tous droits rservs.

Transfrer ou renommer des fichiers de journalisation en ligne Vous pouvez changer l'emplacement des fichiers de journalisation en ligne en renommant les fichiers. Avant de renommer les fichiers, assurez-vous que les nouveaux fichiers existent. Le serveur Oracle modifie uniquement les pointeurs dans les fichiers de contrle, il ne renomme pas physiquement les fichiers de systme d'exploitation et ne cre pas de fichiers. La commande ALTER DATABASE RENAME FILE suivante permet de renommer un fichier de journalisation en ligne (online) : SQL> ALTER DATBASE [database} 2 3 RENAME FILE filename [,filename] TO filename]

Oracle9i Database Administration I 7-15

Utiliser Storage Manager pour transfrer ou renommer des membres de fichiers de journalisation. Utiliser Oracle Enterprise pour transfrer ou renommer des groupes de fichiers de journalisation et des membres A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage > Redo Log Groups. 2. Slectionnez un groupe de fichiers de journalisation. 3. Modifiez le nom de fichier (File Name) ou le rpertoire (File Directory) du membre du fichier de journalisation pour renommer ou transfrer des membres. 4. Cliquez sur Apply.

Oracle9i Database Administration I 7-16

Configuration des fichiers de journalisation en ligne

Groupe 1

Groupe 2

Groupe 3

Membre

Membre

Membre

Membre

Membre

Disque 1

Disque 2

Disque 3

7-17

Copyright Oracle Corporation, 2001. Tous droits rservs.

Configuration des fichiers de journalisation en ligne Pour dterminer le nombre de fichiers de journalisation en ligne ncessaires une instance de base de donnes, vous devez tester diffrentes configurations. Dans certains cas, une instance de base de donnes n'a besoin que de deux groupes. Dans d'autres cas, elle peut ncessiter des groupes supplmentaires pour garantir leur disponibilit pour le processus LGWR. Par exemple, si des messages du fichier trace LGWR ou du fichier d'alertes indiquent que le processus LGWR doit souvent attendre la fin d'un point de reprise ou l'archivage d'un groupe pour accder un groupe, vous devez ajouter des groupes. Bien que les groupes multiplexs du serveur Oracle puissent contenir un nombre de membres diffrent, tentez de crer une configuration symtrique. Une configuration asymtrique ne doit tre que temporaire et rsulter d'une situation anormale, telle qu'une dfaillance du disque. Dfinir l'emplacement des fichiers de journalisation en ligne Lorsque vous crez des fichiers de journalisation en ligne multiplexs, placez les membres d'un groupe sur diffrents disques. Ainsi, l'instance ne s'arrte pas lorsqu'un membre n'est pas disponible, alors que d'autres membres le sont. Placez les fichiers de journalisation archivs et les fichiers de journalisation en ligne sur des disques diffrents afin de rduire la contention entre les processus d'arrire-plan ARCn et LGWR.

Oracle9i Database Administration I 7-17

Configuration des fichiers de journalisation en ligne (suite) Placez les fichiers de donnes et les fichiers de journalisation en ligne sur des disques diffrents afin de rduire la contention entre les processus LGWR et DBWn et limiter les risques de perte de ces fichiers en cas de dfaillance physique. Dfinir la taille des fichiers de journalisation en ligne La taille minimale d'un fichier de journalisation en ligne est de 50 Ko, et sa taille maximale est fonction du systme d'exploitation. Les membres des groupes peuvent avoir des tailles diffrentes. Toutefois, la diffrence de taille ne procure aucun avantage. Des groupes de tailles diffrentes ne doivent exister que temporairement lorsque vous souhaitez changer la taille des membres des groupes de fichiers de journalisation en ligne. Dans ce cas, vous devez crer de nouveaux groupes de taille diffrente et supprimer les anciens groupes. La configuration des fichiers de journalisation en ligne peut tre affecte par : le nombre de changements de fichier de journalisation et de points de reprise, le nombre d'entres de journalisation et leur volume, l'espace de stockage disponible sur le support (une bande, par exemple, si l'archivage est activ).

Oracle9i Database Administration I 7-18

Grer des fichiers de journalisation en ligne l'aide d'OMF


Dfinissez le paramtre DB_CREATE_ONLINE_LOG_DEST_n :
DB_CREATE_ONLINE_LOG_DEST_1 DB_CREATE_ONLINE_LOG_DEST_2

Vous pouvez ajouter un groupe sans spcification de fichier :


ALTER DATABASE ADD LOGFILE;

Supprimer un groupe :
ALTER DATABASE DROP LOGFILE GROUP 3;

7-19

Copyright Oracle Corporation, 2001. Tous droits rservs.

Grer des fichiers de journalisation en ligne l'aide d'OMF Dfinissez le paramtre DB_CREATE_ONLINE_LOG_DEST_n : Pour crer des fichiers de journalisation en ligne grer l'aide d'OMF, vous devez dfinir le paramtre DB_CREATE_ONLINE_LOG_DEST_n pour chaque copie multiplexe identifie par la valeur n. Dans l'exemple ci-dessus, deux groupes comportant deux membres chacun ont t crs. Leur nom est gnr automatiquement (ora_1_wo94n2xi.log, par exemple) et s'affiche dans le fichier alertSID.log. La taille par dfaut est de 100 Mo. L'administrateur de base de donnes utilise la commande ALTER DATABASE ADD LOGFILE pour crer un nouveau groupe de fichiers de journalisation en ligne. Cette commande a t dfinie de sorte qu'aucune spcification de fichier ne soit ncessaire. L'exemple de la diapositive permet d'ajouter un fichier journal contenant deux membres l'emplacement DB_CREATE_ONLINE_LOG_DEST_1 et un autre l'emplacement DB_CREATE_ONLINE_LOG_DEST_2. Des noms de fichiers uniques sont gnrs automatiquement pour les membres de fichiers de journalisation et s'affichent dans le fichier alertSID.log. La taille par dfaut est de 100 Mo. Supprimer un groupe Dans l'exemple ci-dessus, le groupe de fichiers de journalisation 3 et les fichiers du systme d'exploitation associs chaque membre du fichier journal OMF du groupe 3 sont supprims. Fichiers de journalisation archivs et fichiers OMF Les fichiers de journalisation archivs ne peuvent pas tre de type OMF.

Oracle9i Database Administration I 7-19

Obtenir des informations sur les groupes et les membres


Pour obtenir des informations sur les groupes et les membres, interrogez les vues suivantes : V$LOG V$LOGFILE

7-20

Copyright Oracle Corporation, 2001. Tous droits rservs.

Obtenir des informations sur les groupes et les membres Vue V$LOG L'interrogation suivante renvoie des informations sur le fichier de journalisation en ligne partir du fichier de contrle : SQL> SELECT group#, sequence#, bytes, members, status 2 FROM v$log; SEQUENCE# BYTES MEMBERS --------CURRENT 1 STATUS --------INACTIVE ---------- -------1048576 1 689 1048576 GROUP# --------1 688 2 2 rows selected. Les lments suivants correspondent aux valeurs les plus courantes de la colonne STATUS :

UNUSED indique qu'aucune criture n'a encore t effectue dans le groupe de fichiers de journalisation en ligne. Ce statut est affect aux fichiers de journalisation en ligne qui viennent d'tre ajouts. CURRENT dsigne le groupe de fichiers de journalisation en ligne en cours. Ce statut implique que ce groupe est actif.

Oracle9i Database Administration I 7-20

Obtenir des informations sur les groupes et les membres (suite) ACTIVE indique que le groupe de fichiers de journalisation en ligne est actif, mais qu'il ne s'agit pas du groupe en cours. Il est ncessaire pour la rcupration aprs panne et peut tre utilis pour la rcupration de blocs. Il peut tre archiv ou non. CLEARING indique que le journal est recr sous la forme d'un fichier vide suite l'excution de la commande ALTER DATABASE CLEAR LOGFILE. Une fois effac, le fichier reoit le statut UNUSED.

CLEARING_CURRENT indique qu'un thread ferm est supprim du fichier journal en cours. Le journal peut conserver ce statut si une erreur de changement de fichier se produit, par exemple une erreur d'entre/sortie lors de l'criture de l'en-tte du nouveau journal. INACTIVE indique que le groupe de fichiers de journalisation en ligne n'est plus utile la rcupration d'instance. Il peut tre archiv ou non.

Vue V$LOGFILE Interrogez cette vue pour obtenir le nom de tous les membres d'un groupe. SQL> SELECT member FROM V$LOGFILE; MEMBER ------------------------------------/u01/home/db03/ORADATA/u03/log02a.rdo /u01/home/db03/ORADATA/u03/log01a.rdo La colonne STATUS peut prendre l'une des valeurs suivantes :

INVALID indique que le fichier est inaccessible. STALE indique que le contenu du fichier est incomplet. DELETED indique que le fichier n'est plus utilis. L'absence de valeur indique que le fichier est utilis.

Oracle9i Database Administration I 7-21

Fichiers de journalisation archivs


Vous pouvez archiver les fichiers de journalisation en ligne complets. L'excution de la base de donnes en mode ARCHIVELOG et l'archivage des fichiers de journalisation prsentent deux avantages :
Rcupration : La sauvegarde de la base de donnes et des fichiers de journalisation en ligne et archivs peuvent garantir la rcupration de toutes les transactions valides. Sauvegarde : Peut s'effectuer lorsque la base de donnes est ouverte.

Par dfaut, une base de donnes est cre en mode NOARCHIVELOG.


7-22 Copyright Oracle Corporation, 2001. Tous droits rservs.

Fichiers de journalisation archivs L'une des principales dcisions d'un administrateur de base de donnes consiste dterminer si la base de donnes doit tre configure pour fonctionner en mode ARCHIVELOG ou NOARCHIVELOG. Mode NOARCHIVELOG En mode NOARCHIVELOG, lorsque les fichiers de journalisation en ligne sont complets, ils sont remplacs et un changement de fichier de journalisation se produit. Le processus LGWR ne remplace pas un groupe de fichiers de journalisation tant que le processus de point de reprise de ce groupe n'est pas termin. Mode ARCHIVELOG Si la base de donnes est configure pour fonctionner en mode ARCHIVELOG, les groupes inactifs de fichiers de journalisation en ligne complets doivent tre archivs. Dans la mesure o toutes les modifications apportes la base de donnes sont enregistres dans les fichiers de journalisation en ligne, l'administrateur de base de donnes peut utiliser la sauvegarde physique et les fichiers de journalisation en ligne archivs pour rcuprer la base de donnes sans perdre les donnes valides. Vous pouvez archiver les fichiers de journalisation en ligne de deux manires : manuellement, automatiquement (mthode recommande).

Oracle9i Database Administration I 7-22

Fichiers de journalisation archivs (suite) Mode ARCHIVELOG (suite) Le paramtre d'initialisation LOG_ARCHIVE_START indique si l'archivage doit tre automatique ou manuel lors du dmarrage de l'instance. TRUE indique que l'archivage est automatique. ARCn lance l'archivage du groupe de fichiers de journalisation complet chaque changement de fichier. La valeur par dfaut FALSE indique que l'administrateur de base de donnes archive manuellement les fichiers de journalisation complets. Il doit excuter manuellement une commande chaque fois qu'il souhaite archiver un fichier de journalisation en ligne. Vous pouvez archiver manuellement tous les fichiers de ce type ou uniquement certains d'entre eux.

Oracle9i Database Administration I 7-23

Fichiers de journalisation archivs

Archivage ralis automatiquement par le processus ARCn Archivage ralis automatiquement l'aide d'instructions SQL Lorsque les fichiers sont correctement archivs :
une entre est gnre dans le fichier de contrle. Enregistrements : nom des fichiers archivs, numro de squence du journal et numro SCN le plus lev et le plus faible Un fichier de journalisation complet ne peut pas tre rutilis : tant qu'un point de reprise n'a pas eu lieu, tant qu'il n'a pas t archiv par ARCn.

Les fichiers archivs peuvent tre multiplexs. Ils sont mis jour par l'administrateur de base de donnes.
7-24 Copyright Oracle Corporation, 2001. Tous droits rservs.

Fichiers de journalisation archivs Vous pouvez obtenir des informations sur les journaux archivs partir de la vue V$INSTANCE. SQL> SELECT archiver 2 FROM v$instance; ARCHIVE --------STOPPED 1 row selected. Remarque : L'archivage est prsent en dtail dans le cours Oracle9i DBA II.

Oracle9i Database Administration I 7-24

Fichiers de journalisation archivs (suite) Utiliser Oracle Enterprise Manager pour obtenir des informations d'archivage A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Instance. 2. Cliquez sur Configuration. 3. La page identifie les lments suivants : Database and Instance InformationArchive Log Mode : mode d'excution de la base de donnes. All Initialization Parameters : identifie les paramtres dfinis pour l'archivage. 4. La page Recovery vous permet de dfinir et d'identifier les caractristiques spcifiques un archivage, tel que le mode, le format de nom de fichier et l'emplacement cible des fichiers de journalisation.

Oracle9i Database Administration I 7-25

Synthse

Ce chapitre vous a permis d'apprendre : expliquer le rle des fichiers de journalisation en ligne obtenir des informations sur les fichiers de journalisation grer les changements de fichier de journalisation et les points de reprise multiplexer et mettre jour les fichiers de journalisation en ligne grer les fichiers de journalisation en ligne l'aide d'OMF

7-26

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 7-26

Prsentation de l'exercice 7

Dans cet exercice, vous allez : crer des membres et des groupes de fichiers de journalisation en ligne grer des membres et des groupes de fichiers de journalisation en ligne grer les fichiers de journalisation en ligne l'aide d'OMF

7-27

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 7 Remarque : Cet exercice peut tre ralis avec SQL*Plus, ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 7-27

Exercice 7 : grer les fichiers de journalisation 1 Rpertoriez le nombre et l'emplacement des fichiers journaux existants et affichez le nombre de groupes de fichiers de journalisation et de membres que contient votre base de donnes. Indices : - Interrogez la vue dynamique V$LOGFILE. Utilisez la vue dynamique V$LOG. 2 Dans quel mode la base de donnes est-elle configure ? L'archivage est-il activ ? Indices : - Interrogez la vue dynamique des performances V$DATABASE. Interrogez la vue dynamique des performances V$INSTANCE. 3 En respectant les conventions d'appellation suivantes, ajoutez un membre chaque groupe de fichiers de journalisation de la base de donnes stocke sur u04 : Ajoutez un membre au groupe 1 : log01b.rdo Ajoutez un membre au groupe 2 : log02b.rdo Vrifiez le rsultat obtenu. Indices : - Excutez la commande ALTER DATABASE ADD LOGFILE MEMBER pour ajouter un membre chaque groupe de fichiers de journalisation. - Interrogez la vue dynamique des performances V$LOGFILE pour vrifier le rsultat. 4 En respectant les conventions d'appellation suivantes, ajoutez un groupe de fichiers de journalisation votre base de donnes et placez deux membres sur u03 et u04. Ajoutez le groupe 3 : log03a.rdo et log03b.rdo Vrifiez le rsultat obtenu. Indices : - Excutez la commande ALTER DATABASE ADD LOGFILE pour crer un groupe. - Interrogez la vue dynamique des performances V$LOGFILE pour afficher le nom des nouveaux membres du nouveau groupe. - Interrogez la vue dynamique des performances V$LOG pour afficher le nombre de groupes de fichiers de journalisation et de membres.

Oracle9i Database Administration I 7-28

Exercice 7 : grer les fichiers de journalisation (suite) 5 Supprimez le groupe de fichiers de journalisation cr l'tape 4. Indices : - Excutez la commande ALTER DATABASE DROP LOGFILE GROUP pour supprimer le groupe de fichiers de journalisation. - Interrogez la vue dynamique V$LOG pour vrifier le rsultat. Supprimez du groupe les fichiers du systme d'exploitation.

6 Redimensionnez tous les fichiers de journalisation en ligne en leur attribuant la taille 1024 Ko. (Les fichiers journaux ne pouvant pas tre redimensionns, vous devez ajouter de nouveaux journaux et supprimer les anciens.) Indices : - Excutez la commande ALTER DATABASE ADD LOGFILE GROUP pour ajouter deux nouveaux groupes d'une taille de 1024 Ko. - Interrogez la vue dynamique V$LOG pour vrifier le groupe actif. Excutez la commande ALTER SYSTEM SWITCH LOGFILE pour forcer les changements de fichier de journalisation et attribuer au groupe le statut inactif. Le nombre de changements de fichier requis varie. Excutez la commande ALTER DATABASE DROP LOGFILE pour supprimer les groupes inactifs. Interrogez la vue dynamique V$LOG pour vrifier le rsultat.

Oracle9i Database Administration I 7-29

Oracle9i Database Administration I 7-30

Grer les tablespaces et les fichiers de donnes

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : dfinir la fonction des tablespaces et des fichiers de donnes crer des tablespaces grer des tablespaces crer et grer des tablespaces laide d'OracleManaged Files (OMF)

8-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 8-2

Tablespaces et fichiers de donnes

Oracle stocke les donnes logiquement dans les tablespaces et physiquement dans les fichiers de donnes. Un tablespace :
ne peut appartenir qu une seule base de donnes la fois, est compos dun ou de plusieurs fichiers de donnes, est divis en units logiques de stockage.

Un fichier de donnes :
ne peut appartenir qu un tablespace et qu une seule base de donnes, est un rfrentiel pour les donnes dobjet de schma.
8-3

Base de donnes Tablespace Fichiers de donnes

Copyright Oracle Corporation, 2001. Tous droits rservs.

Tablespaces et fichiers de donnes Les bases de donnes, les tablespaces et les fichiers de donnes sont trs proches, mais ils prsentent dimportantes diffrences. Une base de donnes Oracle est compose dune ou de plusieurs units de stockage logiques appeles tablespaces, qui de manire collective stockent toutes les donnes de la base de donnes. Chaque tablespace d'une base de donnes Oracle contient un ou plusieurs fichiers appels fichiers de donnes. Ces fichiers sont des structures physiques conformes au systme d'exploitation sur lequel s'excute le serveur Oracle. Les donnes d'une base sont stockes de manire collective dans les fichiers de donnes constituant chaque tablespace de la base de donnes. Par exemple, la base de donnes Oracle la plus simple comportera un tablespace et un fichier de donnes. Une autre base de donnes pourra comporter trois tablespaces, chacun tant compos de deux fichiers de donnes (soit un total de six fichiers de donnes).

Oracle9i Database Administration I 8-3

Types de tablespace

Le tablespace SYSTEM :
est cr en mme temps que la base de donnes, contient le dictionnaire de donnes, contient le segment d'annulation SYSTEM.

Le tablespace non SYSTEM


spare les segments, facilite l'administration de l'espace, gre la quantit d'espace alloue aux utilisateurs.

8-4

Copyright Oracle Corporation, 2001. Tous droits rservs.

Types de tablespace L'administrateur de base de donnes cre des tablespaces pour amliorer le contrle et faciliter la gestion de la base. Le serveur Oracle accepte deux types de tablespace : le tablespace SYSTEM et tous les autres tablespaces. Le tablespace SYSTEM : est cr en mme temps que la base de donnes, doit exister dans toutes les bases de donnes, contient le dictionnaire de donnes, y compris les programmes stocks, contient le segment d'annulation SYSTEM, ne doit pas contenir de donnes utilisateur, bien que cela soit possible. Les tablespaces non SYSTEM : facilitent l'administration de la base de donnes, sparent les segments d'annulation, les segments temporaires, les segments de donnes d'application et les segments d'index d'application, sparent les donnes en fonction des besoins de sauvegarde, sparent les donnes dynamiques des donnes statiques, grent la quantit d'espace alloue aux objets utilisateur.

Oracle9i Database Administration I 8-4

Crer des tablespaces

Un tablespace est cr l'aide de la commande : CREATE TABLESPACE


CREATE TABLESPACE userdata DATAFILE '/u01/oradata/userdata01.dbf' SIZE 100M AUTOEXTEND ON NEXT 5M MAXSIZE 200M;

8-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer des tablespaces La commande CREATE TABLESPACE permet de crer un tablespace : CREATE TABLESPACE tablespace [DATAFILE clause] [MINIMUM EXTENT integer[K|M]] [BLOCKSIZE integer [K]] [LOGGING|NOLOGGING] [DEFAULT storage_clause ] [ONLINE|OFFLINE] [PERMANENT|TEMPORARY] [extent_management_clause] [segment_management_clause]

Oracle9i Database Administration I 8-5

Crer des tablespaces (suite) O : Tablespace correspond au nom du tablespace crer. DATAFILE dfinit les fichiers de donnes constituant le tablespace. MINIMUM EXTENT garantit que la taille de chaque extent (ensemble de blocs contigus) du tablespace est un multiple de integer. Utilisez K ou M pour dfinir la taille en kilo-octets ou en mgaoctets. BLOCKSIZE indique une taille de bloc non standard pour le tablespace. Pour dfinir cette clause, le paramtre DB_CACHE_SIZE et au moins un paramtre DB_nK_CACHE_SIZE doivent tre dfinis et la valeur de Integer que vous dfinissez dans cette clause doit tre identique celle d'un paramtre DB_nK_CACHE_SIZE. LOGGING indique que toutes les modifications effectues sur les tables, index et partitions du tablespace seront crites par dfaut dans le fichier de journalisation (LOGGING est la valeur par dfaut). NOLOGGING indique que toutes les modifications effectues dans les tables, index et partitions du tablespace ne seront pas crites par dfaut dans le fichier de journalisation (NOLOGGING n'affecte que certaines commandes LMD et LDD, telles que les chargements des donnes par chemin direct). DEFAULT dfinit les paramtres de stockage par dfaut de tous les objets crs dans le tablespace. OFFLINE rend le tablespace indisponible ds sa cration. PERMANENT indique que le tablespace peut tre utilis pour stocker des objets permanents. TEMPORARY indique que le tablespace ne contiendra que des objets temporaires, tels que les segments de tri implicite crs par la clause ORDER BY. La dfinition des clauses EXTENT MANAGEMENT LOCAL et BLOCKSIZE est impossible. extent_management_clause indique la manire dont les extents du tablespace sont grs (cette clause est dcrite dans l'une des sections suivantes du prsent chapitre). segment_management_clause ne s'applique qu'aux tablespaces permanents, grs localement. Elle vous permet d'indiquer si Oracle doit procder au suivi de l'espace libre et utilis dans les segments du tablespace l'aide des bitmaps ou des listes de blocs libres (free list). datafile_clause:== filename [SIZE integer[K|M] [REUSE] [ autoextend_clause ] filename correspond au nom d'un fichier de donnes du tablespace. SIZE dfinit la taille du fichier (utilisez K ou M pour dfinir la taille en kilo-octets ou en mgaoctets). REUSE permet au serveur Oracle de rutiliser un fichier existant. autoextend_clause permet d'activer ou de dsactiver l'extension automatique du fichier de donnes. NEXT indique la taille en octets de la prochaine incrmentation de l'espace disque devant tre alloue automatiquement lorsque plusieurs extents sont requis.

Oracle9i Database Administration I 8-6

Crer des tablespaces (suite) O : MAXSIZE indique l'espace disque maximum autoris pour l'extension automatique d'un fichier de donnes. UNLIMITED indique l'espace disque pouvant tre affect au fichier de donnes ou indique que le fichier temporaire n'est pas limit. Pour plus d'informations, voir Oracle9i SQL Reference et Oracle9i Concepts.

Oracle9i Database Administration I 8-7

Crer des tablespaces (suite) Utiliser Oracle Enterprise Manager pour crer un tablespace A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage > Tablespaces. 2. Slectionnez Create dans le menu accessible par le bouton droit de la souris. 3. Entrez les informations requises concernant le tablespace dans les onglets General et Storage. 4. Cliquez sur Create.

Oracle9i Database Administration I 8-8

Gestion de l'espace dans les tablespaces


Tablespace gr localement :
Extents libres grs dans le tablespace Un bitmap est utilis pour enregistrer des extents libres Chaque bit correspond un bloc ou un groupe de blocs La valeur des bits indique si ceux-ci sont disponibles ou utiliss

Tablespace gr au moyen du dictionnaire :


Les extents libres sont grs par le dictionnaire de donnes. Les tables appropries sont mises jour lorsque les extents sont allous ou librs.
8-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Gestion de l'espace dans les tablespaces Les tablespaces affectent de l'espace dans les extents. Lors de leur cration, vous pouvez choisir l'une ou l'autre des mthodes de gestion de l'espace libre et utilis suivantes : Tablespaces grs localement : les extents sont grs dans le tablespace via des bitmaps. Chaque bit du bitmap correspond un bloc ou un groupe de blocs. Lorsqu'un extent est allou ou libr pour tre rutilis, le serveur Oracle modifie les valeurs bitmap pour indiquer le nouveau statut des blocs. Cette mthode est utilise par dfaut dans Oracle9i. Tablespaces grs au moyen du dictionnaire : Les extents sont grs l'aide du dictionnaire de donnes. Le serveur Oracle met jour les tables appropries dans le dictionnaire de donnes chaque fois qu'un extent est allou ou libr.

Oracle9i Database Administration I 8-9

Tablespaces grs localement

La contention au niveau des tables du dictionnaire de donnes est rduite. Aucune annulation n'est gnre lors de l'allocation ou de la libration d'espace. Aucune fusion n'est requise.
CREATE TABLESPACE userdata DATAFILE '/u01/oradata/userdata01.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

8-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Tablespaces grs localement L'option LOCAL (option par dfaut) de la clause EXTENT MANAGEMENT permet d'indiquer qu'un tablespace doit tre gr localement. extent_management_clause: [ EXTENT MANAGEMENT [ DICTIONARY | LOCAL [ AUTOALLOCATE | UNIFORM [SIZE integer[K|M]] ] ] ] O : DICTIONNARY indique que le tablespace est gr l'aide des tables du dictionnaire. LOCAL indique que le tablespace est gr localement l'aide d'un bitmap. Si vous dfinissez LOCAL, vous ne pouvez pas dfinir DEFAULT storage_clause, MINIMUM EXTENT ou TEMPORARY. AUTOALLOCATE (option par dfaut) indique que le tablespace est gr par le systme (les utilisateurs ne peuvent pas dfinir de taille d'extent). UNIFORM indique que le tablespace est gr l'aide d'extents d'une taille uniforme de SIZE octets. Utilisez K ou M pour dfinir la taille d'extent en kilo-octets ou en mgaoctets. La taille par dfaut est de 1 Mo.

Oracle9i Database Administration I 8-10

Tablespaces grs localement (suite) La clause EXTENT MANAGEMENT peut tre utilise dans diverses commandes CREATE : Pour un tablespace permanent non SYSTEM, vous pouvez dfinir EXTENT MANAGEMENT LOCAL dans la commande CREATE TABLESPACE. S'il s'agit d'un tablespace TEMPORARY, vous pouvez dfinir EXTENT MANAGEMENT LOCAL dans la commande CREATE TEMPORARY TABLESPACE. Avantages des tablespaces grs localement : Les tablespaces grs localement prsentent les avantages suivants par rapport aux tablespaces grs au moyen du dictionnaire : La gestion locale permet d'viter les oprations rcursives de gestion d'espace qui peuvent se produire avec les tablespaces grs au moyen du dictionnaire, lorsque l'utilisation ou la libration d'espace dans un extent provoque l'excution d'une autre opration qui utilise ou libre l'espace dans un segment d'annulation ou une table du dictionnaire de donnes. Dans la mesure o les tablespaces grs localement n'enregistrent pas l'espace libre dans des tables du dictionnaire de donnes, ils rduisent la contention au niveau des tables. La gestion locale des extents identifie automatiquement les espaces libres adjacents, ce qui vite d'avoir fusionner les extents libres. Le systme peut dterminer automatiquement la taille des extents grs localement. La modification des bitmaps d'extent ne gnre pas d'informations d'annulation, car elle ne met jour aucune table dans le dictionnaire de donnes (sauf dans certains cas prcis, tels que les informations sur les quotas de tablespace).

Oracle9i Database Administration I 8-11

Tablespaces grs au moyen du dictionnaire


Les extents sont grs dans le dictionnaire de donnes Chaque segment stock dans le tablespace peut possder une clause de stockage diffrente Une fusion est requise
CREATE TABLESPACE userdata DATAFILE '/u01/oradata/userdata01.dbf' SIZE 500M EXTENT MANAGEMENT DICTIONARY DEFAULT STORAGE (initial 1M NEXT 1M PCTINCREASE 0);

8-12

Copyright Oracle Corporation, 2001. Tous droits rservs.

Tablespaces grs au moyen du dictionnaire Il est possible de personnaliser le stockage des segments des tablespaces grs au moyen du dictionnaire. Cette mthode est plus souple que celle applicable aux tablespaces grs localement, mais elle s'avre beaucoup moins efficace.

Oracle9i Database Administration I 8-12

Tablespace d'annulation

Il permet de stocker des segments d'annulation. Il ne peut contenir aucun autre objet. Les extents sont grs localement. Il ne peut tre utilis qu'avec les clauses DATAFILE et EXTENT.
CREATE UNDO TABLESPACE undo1 DATAFILE '/u01/oradata/undo01.dbf' SIZE 40M;

8-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Tablespace d'annulation Un tablespace d'annulation est utilis dans la gestion automatique des annulations (AUM). Pour plus d'informations, voir le chapitre "Grer les donnes d'annulation". CREATE UNDO TABLESPACE tablespace [DATAFILE clause]

Oracle9i Database Administration I 8-13

Tablespaces TEMPORARY

Ils sont utiliss pour les oprations de tri Ils ne peuvent pas contenir d'objets permanents La gestion locale des extents est recommande
CREATE TEMPORARY TABLESPACE temp TEMPFILE '/u01/oradata/temp01.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M;

8-14

Copyright Oracle Corporation, 2001. Tous droits rservs.

Tablespaces TEMPORARY Vous pouvez grer plus efficacement l'espace pour les oprations de tri en dfinissant des tablespaces TEMPORARY rservs exclusivement aux segments de tri. Aucun objet de schma permanent ne peut rsider dans un tablespace TEMPORARY. Un segment de tri ou un segment temporaire est utilis lorsqu'un segment est partag par plusieurs oprations de tri. Les tablespaces TEMPORARY amliorent les performances lorsque plusieurs tris ne peuvent tenir dans la mmoire. Le segment de tri d'un tablespace TEMPORARY donn est cr lors de la premire opration de tri dans l'instance. La taille du segment de tri augmente par allocation d'extents jusqu' ce qu'elle soit gale ou suprieure au nombre total des demandes de stockage de tous les tris en cours excuts dans l'instance.

Oracle9i Database Administration I 8-14

Tablespaces TEMPORARY (suite) Les tablespaces temporaires grs localement contiennent des fichiers de donnes temporaires (tempfiles) semblables aux fichiers de donnes standard, ceci prs que :les fichiers temporaires sont toujours en mode NOLOGGING, les fichiers temporaires ne peuvent pas tre en lecture seule, vous ne pouvez pas renommer un fichier temporaire, vous ne pouvez pas crer un fichier temporaire l'aide de la commande ALTER DATABASE, des fichiers temporaires sont requis pour les bases de donnes en lecture seule, la restauration physique ne permet pas de restaurer les fichiers temporaires, Pour optimiser les performances d'une opration de tri dans un tablespace temporaire, affectez au paramtre UNIFORM SIZE une valeur multiple de celle du paramtre SORT_AREA_SIZE.

Oracle9i Database Administration I 8-15

Segments temporaires (suite) Utiliser Oracle Enterprise Manager pour crer un tablespace TEMPORARY A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage > Tablespaces. 2. Slectionnez Create dans le menu accessible par le bouton droit de la souris. 3. Renseignez l'onglet General. 4. Slectionnez l'option Temporary dans la rgion Type. 5. Slectionnez l'onglet Storage et entrez les informations de stockage. 6. Cliquez sur Create.

Oracle9i Database Administration I 8-16

Tablespace TEMPORARY par dfaut

Dfinit un tablespace TEMPORARY par dfaut correspondant la base de donnes. Permet d'effectuer des suppressions l'aide du tablespace SYSTEM pour stocker des donnes temporaires. Un tablespace TEMPORARY peut tre cr l'aide de :
CREATE DATABASE Gr localement ALTER DATABASE ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;

8-17

Copyright Oracle Corporation, 2001. Tous droits rservs.

Tablespace TEMPORARY par dfaut Lorsque vous ne dfinissez pas de tablespace TEMPORARY par dfaut la cration de la base de donnes, le tablespace SYSTEM est affect tous les utilisateurs crs sans la clause TEMPORARY TABLESPACE. Par ailleurs, un avertissement indiquant que le tablespace SYSTEM est le tablespace temporaire par dfaut est plac dans le fichier alert_sid.log. Si vous crez un tablespace TEMPORARY par dfaut en mme temps que la base de donnes, le tablespace SYSTEM ne sera pas utilis des fins de stockage temporaire. Pour dfinir un tablespace TEMPORARY par dfaut une fois la base de donnes cre, vous devez crer un tablespace TEMPORARY, puis modifier la base de donnes. SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp; Les utilisateurs qui n'ont pas t explicitement affects un tablespace TEMPORARY seront alors affects au tablespace TEMPORARY par dfaut. Vous pouvez modifier la base de donnes temporaire par dfaut tout moment l'aide de la commande ALTER DATABASE DEFAULT TEMPORARY TABLESPACE. En cas de modification du tablespace TEMPORARY par dfaut, tous les utilisateurs affects ce tablespace sont raffects au nouveau tablespace par dfaut.

Oracle9i Database Administration I 8-17

Crer un tablespace TEMPORARY par dfaut


Pendant la cration de la base de donnes :
CREATE DATABASE DBA01 LOGFILE GROUP 1 ('/$HOME/ORADATA/u01/redo01.log') SIZE 100M, GROUP 2 ('/$HOME/ORADATA/u02/redo02.log') SIZE 100M, MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXLOGHISTORY 1 MAXDATAFILES 100 MAXINSTANCES 1 DATAFILE '/$HOME/ORADATA/u01/system01.dbf' SIZE 325M UNDO TABLESPACE undotbs DATAFILE '/$HOME/ORADATA/u02/undotbs01.dbf' SIZE 200 DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '/$HOME/ORADATA/u03/temp01.dbf' SIZE 4M CHARACTER SET US7ASCII

8-18

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer un tablespace TEMPORARY par dfaut Pendant la cration de la base de donnes : Lorsque vous ne dfinissez pas de tablespace TEMPORARY par dfaut la cration de la base de donnes, le tablespace SYSTEM est affect tous les utilisateurs crs sans la clause TEMPORARY TABLESPACE. Par ailleurs, un avertissement est plac dans le fichier alert_sid.log, indiquant que le tablespace SYSTEM est le tablespace TEMPORARY par dfaut. Si vous crez un tablespace TEMPORARY par dfaut en mme temps que la base de donnes, le tablespace SYSTEM ne sera pas utilis des fins de stockage temporaire. Lorsqu'un tablespace TEMPORARY par dfaut est cr l'aide de la commande CREATE DATABASE, il est gr localement.

Oracle9i Database Administration I 8-18

Crer un tablespace TEMPORARY par dfaut


Une fois la base de donnes cre :
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE default_temp2;

Pour trouver le tablespace TEMPORARY par dfaut de la base de donnes, interrogez DATABASE_PROPERTIES.
SELECT * FROM DATABASE_PROPERTIES;

8-19

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer un tablespace TEMPORARY par dfaut (suite) Une fois la base de donnes cre : Un tablespace TEMPORARY par dfaut peut tre cr et dfini l'aide de : la commande CREATE TABLESPACE pour crer un tablespace TEMPORARY, la commande ALTER DATABASE comme indiqu ci-dessus. Les utilisateurs qui n'ont pas t explicitement affects un tablespace temporaire seront alors affects au tablespace temporaire par dfaut. Vous pouvez modifier le tablespace TEMPORARY par dfaut tout moment l'aide de la commande ALTER DATABASE DEFAULT TEMPORARY TABLESPACE. En cas de modification du tablespace TEMPORARY par dfaut, tous les utilisateurs affects ce tablespace sont raffects au nouveau tablespace par dfaut.

Oracle9i Database Administration I 8-19

Crer un tablespace TEMPORARY par dfaut (suite) Utiliser Oracle Enterprise Manager pour crer un tablespace TEMPORARY par dfaut A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage > Tablespaces. 2. Slectionnez Create dans le menu accessible par le bouton droit de la souris. 3. Slectionnez Temporary et Set as Default Temporary Tablespace dans l'onglet General. 4. Renseignez la page Storage. 5. Cliquez sur Create.

Oracle9i Database Administration I 8-20

Restrictions relatives au tablespace TEMPORARY par dfaut


Les tablespaces TEMPORARY par dfaut ne peuvent pas tre : supprims tant qu'un nouveau tablespace par dfaut n'est pas disponible, mis hors ligne, transform en tablespace permanent.

8-21

Copyright Oracle Corporation, 2001. Tous droits rservs.

Restrictions relatives au tablespace TEMPORARY par dfaut Supprimer un tablespace TEMPORARY par dfaut Avant de supprimer le tablespace TEMPORARY par dfaut, vous devez en crer un nouveau l'aide de la commande ALTER DATABASE. L'ancien tablespace n'est supprim que lorsque le nouveau est disponible. Les utilisateurs affects l'ancien tablespace sont automatiquement raffects au nouveau. Modifier le type de tablespace TEMPORARY par dfaut Dans la mesure o le tablespace TEMPORARY par dfaut doit tre le tablespace SYSTEM ou un tablespace TEMPORARY, vous ne pouvez pas le transformer en tablespace permanent. Mettre le tablespace TEMPORARY par dfaut hors ligne (offline) La mise hors ligne des tablespaces vise rendre cette partie de la base de donnes indisponible pour d'autres utilisateurs (sauvegarde hors ligne, maintenance ou modification d'une application qui utilise le tablespace, par exemple). Etant donn que ces situations ne s'appliquent pas aux tablespaces TEMPORARY, vous ne pouvez pas mettre hors ligne un tablespace TEMPORARY par dfaut.

Oracle9i Database Administration I 8-21

Tablespaces accessibles en lecture seule

Utilisez la commande suivante pour placer un tablespace en lecture seule.


ALTER TABLESPACE userdata READ ONLY; Cre un point de reprise. Ces donnes sont disponibles pour les oprations de lecture uniquement. Il est possible de supprimer des objets des tablespaces

8-22

Copyright Oracle Corporation, 2001. Tous droits rservs.

Tablespaces accessibles en lecture seule La commande ALTER TABLESPACE [tablespace]READ ONLY place le tablespace en mode lecture seule de transition. Ce mode n'autorise pas les oprations d'criture dans le tablespace, except pour l'annulation de transactions existantes qui ont pralablement modifi des blocs du tablespace. Une fois toutes les transactions existantes valides ou annules, la commande en lecture seule s'excute et place le tablespace en lecture seule. Vous pouvez supprimer des lments, tels que des tables et des index, d'un tablespace en lecture seule, car ces commandes n'affectent que le dictionnaire de donnes. Cette opration est possible car la commande DROP met jour le dictionnaire de donnes et non les fichiers physiques qui constituent le tablespace. Pour les tablespaces grs localement, le segment supprim est converti en segment temporaire pour viter la mise jour du bitmap. Pour rendre accessible en criture un tablespace qui est en lecture seule, tous ses fichiers de donnes doivent tre en ligne (online). La mise en lecture seule d'un tablespace cre un point de reprise dans les fichiers de donnes du tablespace.

Oracle9i Database Administration I 8-22

Tablespaces accessibles en lecture seule (suite) La mise en lecture seule d'un tablespace permet d'empcher les oprations d'criture dans les fichiers de donnes de ce tablespace. Les fichiers de donnes peuvent donc rsider sur des supports en lecture seule, tels que des CD-ROM ou des units non rinscriptibles. Grce aux tablespaces en lecture seule, il n'est pas ncessaire de sauvegarder de grandes sections de donnes statiques d'une base de donnes. Pour crer un tablespace accessible en lecture seule sur un lecteur non rinscriptible : 1. ALTER TABLESPACE...READ ONLY 2. Utilisez la commande approprie du systme d'exploitation pour transfrer les fichiers de donnes d'un tablespace vers un lecteur accessible en lecture seule. 3. ALTER TABLESPACE...RENAME DATAFILE

Oracle9i Database Administration I 8-23

Tablespaces accessibles en lecture seule (suite) Utiliser Oracle Enterprise Manager pour crer un tablespace en lecture seule A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage > Tablespaces. 2. Slectionnez le tablespace. 3. Cochez la case Read Only dans la rgion Status de l'onglet General. 4. Cliquez sur Apply.

Oracle9i Database Administration I 8-24

Mettre un tablespace hors ligne

Non disponible pour l'accs aux donnes Tablespaces ne pouvant pas tre mis hors ligne :
Tablespace SYSTEM : Tablespaces contenant des segments d'annulation actifs Tablespace TEMPORARY par dfaut

Mettre un tablespace hors ligne :


ALTER TABLESPACE userdata OFFLINE;

Mettre un tablespace en ligne :


ALTER TABLESPACE userdata ONLINE;

8-25

Copyright Oracle Corporation, 2001. Tous droits rservs.

Mettre un tablespace hors ligne Un tablespace est gnralement en ligne, ce qui permet aux utilisateurs de la base d'accder aux donnes qu'il contient. Toutefois, l'administrateur de base de donnes peut le mettre hors ligne pour : rendre une partie de la base de donnes indisponible tout en permettant l'accs normal au reste de la base, sauvegarder un tablespace hors ligne (bien qu'il soit possible de sauvegarder un tablespace pendant qu'il est en ligne et en cours d'utilisation), restaurer un tablespace ou un fichier de donnes lorsque la base de donnes est ouverte, dplacer un fichier de donnes lorsque la base est ouverte. Statut hors ligne d'un tablespace Lorsque vous mettez un tablespace hors ligne, le serveur Oracle ne permet pas aux instructions SQL qui suivent de faire rfrence aux objets contenus dans le tablespace. Dans ce cas, les utilisateurs qui tentent d'accder ces objets reoivent un message d'erreur. La mise hors ligne ou en ligne des tablespaces est enregistre dans le dictionnaire de donnes et le fichier de contrle. Si un tablespace est hors ligne lorsque vous arrtez une base de donnes, il reste hors ligne et n'est pas vrifi au remontage et la rouverture de la base de donnes.

Oracle9i Database Administration I 8-25

Mettre un tablespace hors ligne (suite) Lorsque certaines erreurs se produisent (par exemple, si le processus DBWn tente plusieurs fois en vain d'crire dans un fichier de donnes du tablespace), l'instance Oracle met automatiquement hors ligne un tablespace en ligne. Ces situations sont dcrites en dtail dans le cours Oracle9i DBA II. Mettre un tablespace hors ligne Lorsque la base de donnes est ouverte, l'administrateur de base de donnes peut mettre hors ligne n'importe quel tablespace, l'exception du tablespace SYSTEM ou des tablespaces contenant des segments d'annulation ou temporaires actifs. Lorsque vous mettez un tablespace hors ligne, le serveur Oracle met tous les fichiers de donnes associs hors ligne. ALTER TABLESPACE tablespace {ONLINE |OFFLINE [NORMAL|TEMPORARY|IMMEDIATE|FOR RECOVER]} O : NORMAL supprime de la mmoire SGA tous les blocs de tous les fichiers de donnes du tablespace (action par dfaut). Il n'est pas ncessaire d'effectuer une restauration physique du tablespace avant de le remettre en ligne. Dans la mesure du possible, utilisez la clause NORMAL. TEMPORARY excute un point de reprise pour les fichiers de donnes en ligne du tablespace uniquement, mme si certains fichiers ne peuvent pas tre crits. Les fichiers hors ligne peuvent ncessiter une restauration physique. IMMEDIATE ne garantit pas la disponibilit des fichiers du tablespace et n'excute pas de point de reprise. Vous devez effectuer une restauration physique du tablespace avant de le remettre en ligne. FOR RECOVER met les tablespaces hors ligne en vue d'une rcupration jusqu' un point dans le temps.

Oracle9i Database Administration I 8-26

Mettre un tablespace hors ligne (suite) Utiliser Oracle Enterprise Manager pour crer un tablespace hors ligne A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage > Tablespaces. 2. Slectionnez le tablespace. 3. Slectionnez Offline dans la rgion Status de l'onglet General. 4. Slectionnez le mode dans le menu droulant. 5. Cliquez sur Apply.

Oracle9i Database Administration I 8-27

Modifier les paramtres de stockage

Utiliser la commande ALTER TABLESPACE pour modifier les paramtres de stockage :


ALTER TABLESPACE userdata MINIMUM EXTENT 2M; ALTER TABLESPACE userdata DEFAULT STORAGE (INITIAL 2M NEXT 2M MAXEXTENTS 999);

Les paramtres de stockage des tablespaces grs localement ne peuvent pas tre modifis.

8-28

Copyright Oracle Corporation, 2001. Tous droits rservs.

Modifier les paramtres de stockage Utilisez la commande ALTER TABLESPACE pour modifier la dfinition de stockage par dfaut d'un tablespace : ALTER TABLESPACE tablespace [MINIMUM EXTENT integer[K|M] |DEFAULT storage_clause ]

Oracle9i Database Administration I 8-28

Modifier les paramtres de stockage par dfaut (suite) Utiliser Oracle Enterprise Manager pour modifier les paramtres de stockage A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage > Tablespaces. 2. Cliquez sur le tablespace l'aide du bouton droit de la souris et slectionnez View/Edit Details dans le menu qui s'affiche. 3. Cliquez sur l'onglet Storage et effectuez les modifications ncessaires. 4. Cliquez sur Apply.

Oracle9i Database Administration I 8-29

Redimensionner un tablespace

Un tablespace peut tre redimensionn en : modifiant la taille d'un fichier de donnes :


automatiquement l'aide de AUTOEXTEND manuellement l'aide de ALTER TABLESPACE

ajoutant un fichier de donnes l'aide de ALTER TABLESPACE

8-30

Copyright Oracle Corporation, 2001. Tous droits rservs.

Redimensionner un tablespace Vous pouvez augmenter la taille d'un tablespace de deux manires : en modifiant automatiquement ou manuellement la taille d'un fichier de donnes, en ajoutant un fichier de donnes au tablespace.

Oracle9i Database Administration I 8-30

Activer l'extension automatique des fichiers de donnes


Les fichiers peuvent tre redimensionns automatiquement l'aide des commandes suivantes :
CREATE DATABASE CREATE TABLESPACE ALTER TABLESPACE ADD DATAFILE

Exemple :
CREATE TABLESPACE user_data DATAFILE '/u01/oradata/userdata01.dbf' SIZE 200M AUTOEXTEND ON NEXT 10M MAXSIZE 500M;

Interrogez la vue DBA_DATA_FILES pour dterminer si AUTOEXTEND est activ.


8-31 Copyright Oracle Corporation, 2001. Tous droits rservs.

Activer l'extension automatique des fichiers de donnes Indiquer AUTOEXTEND pour un nouveau fichier de donnes La clause AUTOEXTEND permet d'activer ou de dsactiver l'extension automatique des fichiers de donnes. La taille des fichiers est incrmente selon vos indications mais est limite par une valeur maximale. Avantages de l'utilisation de la clause AUTOEXTEND : Le besoin d'intervention immdiate est rduit lorsque l'espace disponible est insuffisant dans le tablespace. Les applications ne s'arrtent plus cause des pannes d'allocation des extents. Lors de la cration d'un fichier de donnes, utilisez les commandes SQL suivantes pour activer l'augmentation automatique de la taille du fichier de donnes : CREATE DATABASE

CREATE TABLESPACE ... DATAFILE ALTER TABLESPACE ... ADD DATAFILE

Oracle9i Database Administration I 8-31

Activer l'extension automatique des fichiers de donnes (suite) Indiquer AUTOEXTEND pour un nouveau fichier de donnes (suite) La commande ALTER DATABASE permet de modifier un fichier de donnes et d'activer son extension automatique. ALTER DATABASE DATAFILE filespec [autoextend_clause] autoextend_clause:== [ AUTOEXTEND { OFF|ON[NEXT integer[K|M]] [MAXSIZE UNLIMITED | integer[K|M]] } ] O : AUTOEXTEND OFF dsactive l'extension automatique des fichiers de donnes. AUTOEXTEND ON active l'extension automatique des fichiers de donnes. NEXT dfinit l'espace disque allouer au fichier de donnes lorsque des extents supplmentaires sont ncessaires MAXSIZE dfinit l'espace disque maximum allouer au fichier de donnes. UNLIMITED ne dfinit aucune limite d'allocation d'espace disque pour le fichier de donnes. Indiquer AUTOEXTEND pour un fichier de donnes existant Utilisez la commande SQL ALTER DATABASE pour activer ou dsactiver l'extension automatique des fichiers de donnes existants : ALTER DATABASE [database] DATAFILE 'filename'[, 'filename']... autoextend_clause Dterminer si AUTOEXTEND est activ ou non Interrogez la vue DBA_DATA_FILES pour dterminer si AUTOEXTEND est activ et examinez la colonne AUTOEXTENSIBLE. SQL> select tablespace_name, file_name, autoextensible 2 from dba_data_files; TABLESPACE_NAME FILE_NAME AUTOEXTENSIBLE --------------- ------------------------ -------------SYSTEM DATA01 USERS INDX SAMPLE DATA02 INDEX01 UNDO2 8 rows selected. /home/dba01/ORADATA/u01/system01.dbf /home/dba01/ORADATA/u04/data01.dbf /home/dba01/ORADATA/u03/users01.dbf /home/dba01/ORADATA/u06/indx01.dbf /home/dba01/ORADATA/u02/sample01.dbf /home/dba01/ORADATA/u03/data02.dbf /home/dba01/ORADATA/u06/index01.dbf /home/dba01/ORADATA/u01/UNDO2.dbf YES NO NO NO YES NO YES NO

Oracle9i Database Administration I 8-32

Indiquer AUTOEXTEND pour un nouveau fichier de donnes (suite) Utiliser Oracle Enterprise Manager pour activer le redimensionnement automatique A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage > Datafiles. 2. Slectionnez le fichier de donnes. 3. Cochez la case Automatically extend datafile when full dans la page Storage. 4. Dfinissez les valeurs de Increment et Maximum Size. 5. Cliquez sur Apply.

Oracle9i Database Administration I 8-33

Redimensionner manuellement un fichier de donnes


Augmentez ou rduisez manuellement la taille d'un fichier de donnes l'aide de ALTER DATABASE. Redimensionner un fichier de donnes ajoute de l'espace sans ajouter de fichier de donnes. Le redimensionnement manuel d'un fichier de donnes requiert l'utilisation de l'espace libre d'une base de donnes. Exemple :
ALTER DATABASE DATAFILE '/u03/oradata/userdata02.dbf' RESIZE 200M;

8-34

Copyright Oracle Corporation, 2001. Tous droits rservs.

Redimensionner manuellement un fichier de donnes Pour augmenter l'espace de la base de donnes, le DBA peut redimensionner un fichier de donnes au lieu d'ajouter des fichiers de donnes. La commande ALTER DATABASE permet d'augmenter ou de diminuer manuellement la taille d'un fichier de donnes. ALTER DATABASE [database] DATAFILE filename[, filename]... RESIZE integer[K|M] O : Integer correspond la taille absolue, en octets, du fichier de donnes final. S'il existe des objets de base de donnes ayant une taille suprieure la taille dfinie, la taille du fichier de donnes est diminue uniquement jusqu'au dernier bloc des derniers objets du fichier de donnes.

Oracle9i Database Administration I 8-34

Ajouter des fichiers de donnes un tablespace


Augmente l'espace allou un tablespace en ajoutant des fichiers de donnes. La clause ADD DATAFILE permet d'ajouter un fichier de donnes. Exemple :
ALTER TABLESPACE user_data ADD DATAFILE '/u01/oradata/userdata03.dbf' SIZE 200M;

8-35

Copyright Oracle Corporation, 2001. Tous droits rservs.

Ajouter des fichiers de donnes un tablespace Utilisez la commande ALTER TABLESPACE ADD DATAFILE pour ajouter des fichiers de donnes un tablespace afin d'augmenter l'espace disque total qui lui est allou. ALTER TABLESPACE tablespace ADD DATAFILE filespec [autoextend_clause]

Oracle9i Database Administration I 8-35

Ajouter des fichiers de donnes un tablespace (suite) Utiliser Oracle Enterprise Manager pour ajouter un fichier de donnes A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage > Tablespaces. 2. Slectionnez le tablespace. 3. Slectionnez Add Datafile. 4. Dans l'onglet General, entrez les informations concernant le fichier. 5. Cliquez sur Create.

Oracle9i Database Administration I 8-36

Mthodes de dplacement des fichiers de donnes


ALTER TABLESPACE
Le tablespace doit tre hors ligne. Les fichiers de donnes cible doivent exister.

ALTER TABLESPACE userdata RENAME DATAFILE '/u01/oradata/userdata01.dbf' TO '/u02/oradata/userdata01.dbf'; Etapes permettant de renommer un fichier
Mettez le tablespace hors ligne. Utilisez la commande approprie du systme d'exploitation pour dplacer ou copier les fichiers. Excutez la commande ALTER TABLESPACE RENAME DATAFILE. Mettez le tablespace en ligne. Au besoin, utilisez la commande approprie du systme d'exploitation pour supprimer le fichier.
8-37 Copyright Oracle Corporation, 2001. Tous droits rservs.

Mthodes de dplacement des fichiers de donnes Selon le type de tablespace, l'administrateur de base de donnes peut dplacer des fichiers de donnes en utilisant l'une des mthodes suivantes : Commande ALTER TABLESPACE La commande ALTER TABLESPACE prsente ci-dessous ne s'applique qu'aux fichiers de donnes d'un tablespace non SYSTEM qui ne contiennent pas de segments d'annulation ou temporaires actifs : ALTER TABESPACE tablespace RENAME DATAFILE 'filename'[, 'filename']... TO 'filename'[, 'filename']... Les noms des fichiers source doivent correspondre ceux stocks dans le fichier de contrle.

Oracle9i Database Administration I 8-37

Mthodes de dplacement des fichiers de donnes


ALTER DATABASE
La base de donnes doit tre monte. Le fichier de donnes cible doit exister. ALTER DATABASE RENAME FILE '/u01/oradata/system01.dbf' TO '/u03/oradata/system01.dbf';

8-38

Copyright Oracle Corporation, 2001. Tous droits rservs.

Mthodes de dplacement des fichiers de donnes (suite) Commande ALTER DATABASE La commande ALTER DATABASE permet de dplacer tous les types de fichier de donnes. ALTER DATABASE [database] RENAME FILE 'filename'[, 'filename']... TO 'filename'[, 'filename']... Dans la mesure o le tablespace SYSTEM ne peut pas tre mis hors ligne, vous devez utiliser cette mthode pour dplacer ses fichiers de donnes. Pour renommer les fichiers des tablespaces qui ne peuvent pas tre mis hors ligne, procdez comme suit : 1. Arrtez la base de donnes. 2. Utilisez la commande de systme d'exploitation approprie pour dplacer les fichiers. 3. Montez la base de donnes. 4. Excutez la commande ALTER DATABASE RENAME FILE. 5. Ouvrez la base de donnes.

Oracle9i Database Administration I 8-38

Mthodes de dplacement des fichiers de donnes (suite) Utiliser Oracle Enterprise Manager pour dplacer un fichier de donnes A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage > Tablespaces. 2. Slectionnez le tablespace dans lequel se trouve le fichier dplacer. 3. Dans la page General, slectionnez Offline. 4. Slectionnez Apply. 5. Lorsque le tablespace est hors ligne, mettez jour les informations File Directory dans la page General. 6. Cliquez sur Apply. Remarque : Ces commandes vrifient l'existence du fichier au nouvel emplacement. Elles ne crent ni ne dplacent aucun fichier. Indiquez toujours des noms de fichier complets (avec le chemin) pour distinguer les nouveaux fichiers des anciens.

Oracle9i Database Administration I 8-39

Supprimer des tablespaces

Un tablespace ne peut pas tre supprim :


s'il s'agit du tablespace SYSTEM, s'il possde des segments actifs.

INCLUDING CONTENTS supprime les segments INCLUDING CONTENTS AND DATAFILES supprime les fichiers de donnes CASCADE CONSTRAINTS supprime les contraintes d'intgrit rfrentielle
DROP TABLESPACE userdata INCLUDING CONTENTS AND DATAFILES;

8-40

Copyright Oracle Corporation, 2001. Tous droits rservs.

Supprimer des tablespaces Vous pouvez utiliser la commande SQL DROP TABLESPACE pour supprimer un tablespace de la base de donnes lorsque le tablespace et son contenu ne sont plus utiles : DROP TABLESPACE tablespace [INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]] O : tablespace correspond au nom du tablespace supprimer. INCLUDING CONTENTS supprime tous les segments du tablespace. AND DATAFILES supprime les fichiers du systme d'exploitation associs. CASCADE CONSTRAINTS supprime les contraintes d'intgrit rfrentielles des tables situes en dehors du tablespace qui font rfrence aux cls primaires et uniques des tables du tablespace supprim.

Oracle9i Database Administration I 8-40

Supprimer des tablespaces (suite) Instructions : Un tablespace qui contient toujours des donnes ne peut pas tre supprim sans l'option INCLUDING CONTENTS. Cette option peut gnrer un grand nombre d'annulations lorsque le tablespace contient de nombreux objets. Une fois qu'un tablespace a t supprim, ses donnes ne figurent plus dans la base de donnes. Lorsque vous supprimez un tablespace, seuls les pointeurs de fichier du fichier de contrle de la base de donnes associe sont supprims. Les fichiers du systme d'exploitation sont conservs et doivent tre supprims explicitement l'aide de la commande approprie du systme d'exploitation si la clause AND DATAFILES n'est pas utilise ou si les fichiers de donnes ne sont pas des fichiers OMF. Vous pouvez supprimer un tablespace en lecture seule et les segments qu'il contient. Il est recommand de mettre le tablespace hors ligne avant de le supprimer, afin d'empcher d'ventuelles transactions d'accder ses segments.

Oracle9i Database Administration I 8-41

Supprimer des tablespaces (suite) Utiliser Oracle Enterprise Manager pour supprimer un tablespace A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage > Tablespaces. 2. Slectionnez le tablespace. 3. Slectionnez Remove dans le menu accessible par le bouton droit de la souris. 4. Slectionnez Yes pour confirmer l'opration.

Oracle9i Database Administration I 8-42

Grer des tablespaces l'aide d'OMF

Dfinissez le paramtre DB_CREATE_FILE_DEST en utilisant l'une des mthodes suivantes :


Fichier de paramtres d'initialisation Dfinition dynamique l'aide de la commande ALTER SYSTEM ALTER SYSTEM SET db_create_file_dest = '/u01/oradata/dba01';

Lorsque vous crez le tablespace :


le fichier de donnes est automatiquement cr dans DB_CREATE_FILE_DEST, la taille par dfaut est de 100 Mo, La valeur UNLIMITED est affecte AUTOEXTEND.
8-43 Copyright Oracle Corporation, 2001. Tous droits rservs.

Grer des tablespaces l'aide d'OMF Le paramtre d'initialisation DB_CREATE_FILE_DEST est dfini lors de la configuration d'Oracle-Managed Files (OMF) pour la cration de tablespaces. La clause DATAFILE n'est pas requise. Tous les fichiers de donnes sont crs automatiquement et leur emplacement est dfini par DB_CREATE_FILE_DEST. Le nom du fichier est gnr automatiquement par le serveur Oracle (ora_tbs1_2ixfh90q.dbf).

Oracle9i Database Administration I 8-43

Grer des tablespaces l'aide d'OMF

Crer un tablespace OMF


CREATE TABLESPACE text_data DATAFILE SIZE 20M;

Ajouter un fichier de donnes OMF un tablespace existant


ALTER TABLESPACE text_data ADD DATAFILE;

Modifier de manire dynamique l'emplacement du fichier par dfaut : ALTER SYSTEM SET db_create_file_dest = '/u01/oradata/dba01'; Supprimer un tablespace supprime galement des fichiers du systme d'exploitation.
8-44 Copyright Oracle Corporation, 2001. Tous droits rservs.

Grer des tablespaces l'aide d'OMF Crer des tablespaces l'aide d'OMF La cration de tablespaces avec OMF ne requiert pas de clause DATAFILE. Dans ce cas, la taille par dfaut des fichiers est de 100 Mo et AUTOEXTEND est dfini sans restriction de taille maximale (MAXSIZE). Il est toutefois possible d'indiquer une taille de fichier. CREATE TABLESPACE tablespace [ DATAFILE [ filename ] [ SIZE integer [K|M] ] ]; Ajouter des fichiers de donnes aux tablespaces OMF Un fichier de donnes peut tre ajout un tablespace existant. La commande ADD DATAFILE ne requiert plus de spcification de fichier. Modifier de manire dynamique les emplacements du fichier par dfaut DB_CREATE_ONLINE_LOG_DEST_n doit tre dfini pour viter que des fichiers journaux et des fichiers de contrle ne soient placs avec des fichiers de donnes. Leur destination peut tre modifie de manire dynamique l'aide de la commande SYSTEM SET. Supprimer les tablespaces OMF Lorsqu'un tablespace cr avec OMF est supprim, les fichiers de donnes associs sont supprims au niveau du systme d'exploitation.

Oracle9i Database Administration I 8-44

Obtenir des informations sur les tablespaces


Vous pouvez obtenir des informations sur les tablespaces et les fichiers de donnes en interrogeant les lments suivants : Tablespaces :
DBA_TABLESPACES V$TABLESPACE

Informations sur le fichier de donnes :


DBA_DATA_FILES V$DATAFILE

Informations sur les fichiers temporaires :


DBA_TEMP_FILES V$TEMPFILE
8-45 Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 8-45

Synthse

Ce chapitre vous a permis d'apprendre : utiliser des tablespaces pour sparer des donnes crer diffrents types de tablespace grer des tablespaces grer des tablespaces l'aide d'OMF

8-46

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 8-46

Prsentation de l'exercice 8

Dans cet exercice, vous allez : crer des tablespaces modifier des tablespaces configurer et crer un tablespace avec OMF

8-47

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 8 Remarque : Cet exercice peut tre ralis avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 8-47

Exercice 8 : grer les tablespaces et les fichiers de donnes 1 Crez des tablespaces permanents associs aux noms et aux paramtres de stockage suivants : a DATA01, gr au moyen du dictionnaire. b DATA02, gr localement avec des extents de taille uniforme (assurez-vous que les tailles des extents utiliss dans le tablespace sont des multiples de 100 Ko). c INDX01, gr localement avec des extents d'une taille uniforme de 4 Ko (activez l'extension automatique de 500 Ko lorsque des extents supplmentaires d'une taille maximale de 2 Mo sont requis). d RONLY pour les tables en lecture seule avec le stockage par dfaut. NE METTEZ PAS le tablespace en lecture seule ce stade. e Affichez les informations partir du dictionnaire de donnes. Indice : Pour obtenir des informations sur les tablespaces, utilisez l'une des interrogations suivantes : - DBA_TABLESPACES V$TABLESPACE V$DATAFILE

2 Allouez 500 Ko d'espace disque supplmentaire au tablespace DATA02 et vrifiez le rsultat. 3 Dplacez le tablespace INDEX01 vers le sous-rpertoire u06. Vrifiez l'emplacement et le statut de INDEX01. Indices : Mettez le tablespace INDEX01 hors ligne. Utilisez V$DATAFILE pour vrifier le statut. Utilisez la commande approprie du systme d'exploitation pour dplacer le tablespace vers u06. Utilisez la commande ALTER TABLESPACE pour redplacer le tablespace. Mettez le tablespace INDEX01 en ligne. Utilisez V$DATAFILE pour vrifier le statut.

4 a Crez une table dans le tablespace RONLY. Mettez le tablespace RONLY en lecture seule et vrifiez-le en excutant une interrogation approprie. b Essayez de crer une autre table TABLE2. Supprimez la premire table cre, TABLE1. Que se passe-t-il ? 5 Supprimez le tablespace RONLY et le fichier de donnes associ, puis vrifiez le rsultat. 6 Affectez la valeur $HOME/ORADATA/u05 au paramtre DB_CREATE_FILE_DEST uniquement dans la mmoire. Crez un tablespace DATA03 de 5 Mo. Ne dfinissez pas d'emplacement de fichier. Vrifiez la cration du fichier de donnes.

Oracle9i Database Administration I 8-48

Structure de stockage et relations

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs
A la fin de ce chapitre, vous pourrez : dcrire la structure logique de la base de donnes numrer les types de segment et leur utilisation numrer les mots-cls qui grent l'utilisation de l'espace de bloc obtenir des informations sur les structures de stockage partir du dictionnaire de donnes

9-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 9-2

Structure de stockage et relations


Base de donnes PROD
TABLESPACES SYSTEM
FICHIERS DE DONNEES

USER_DATA DISK2/ USER1.dbf


S_DEPT S_EMP Seg donnes
(suite)

RBS DISK1/ ROLL1.dbf


RBS1 RBS2 RBS1
(suite)

TEMP DISK1/ TEMP.dbf


Temp Seg Temp

DISK1/SYS1.dbf SEGMENTS
Table D.D. Index D.D.

DISK3/ USER2.dbf
S_DEPT S_EMP
FIRST_N AME Index

RBS2
(suite)

Seg Seg Seg Seg donnes donnes Index RB

Seg Data

Seg Index

Seg RB

Seg RB

Seg RB

Seg RB

EXTENTS
1 2 1 2 1 2 1 1 2 2 1 DISPO 1 1 2 2 1

BLOCS DE DONNEES Oracle

9-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Architecture de base de donnes Le chapitre prcdent portait sur la structure de stockage d'une base de donnes, ses tablespaces et ses fichiers de donnes. Ce chapitre prolonge la description de la structure de stockage d'une base de donnes et aborde plus particulirement les segments, les extents (ensemble de blocs contigus) et les blocs de donnes.

Oracle9i Database Administration I 9-3

Types de segment

Table

Partition de table

Cluster

Index

9-4

Copyright Oracle Corporation, 2001. Tous droits rservs.

Types de segment Les segments sont des objets qui occupent de l'espace dans une base de donnes. Ils utilisent de l'espace dans les fichiers de donnes d'une base. Cette section dcrit les diffrents types de segment. Table : Les donnes d'une base sont gnralement stockes dans des tables. Un segment de table stocke les donnes d'une table qui n'est ni incluse dans un cluster, ni partitionne. Les donnes d'un segment de table ne sont pas stockes dans un ordre spcifique et l'administrateur de la base de donnes a un contrle trs limit sur l'emplacement des lignes dans les blocs d'une table. Toutes les donnes d'un segment de table doivent tre stockes dans un seul tablespace. Partition de table : L'volutivit et la disponibilit sont des points trs importants prendre en compte lorsqu'une table de base de donnes est utilise simultanment par de nombreux utilisateurs. Dans ce cas, les donnes de la table peuvent tre stockes dans plusieurs partitions, chacune se trouvant dans un tablespace diffrent. Le serveur Oracle prend actuellement en charge le partitionnement l'aide d'une srie de valeurs de cl, d'un algorithme de hachage et d'une liste de valeurs. Lorsqu'une table est partitionne, chacune de ses partitions constitue un segment qui peut tre contrl de manire indpendante l'aide des paramtres de stockage. L'utilisation de ce type de segment requiert l'option de partitionnement d'Oracle9i Enterprise Edition.

Oracle9i Database Administration I 9-4

Types de segment (suite) Cluster : A l'instar d'une table, un cluster est un type de segment de donnes. Les lignes d'un cluster sont stockes en fonction des valeurs des colonnes de cl. Un cluster peut contenir une ou plusieurs tables. Les tables d'un cluster appartiennent au mme segment et partagent les mmes caractristiques de stockage. Les lignes d'une table incluse dans un cluster sont accessibles l'aide d'un index ou d'un algorithme de hachage. Index : Toutes les entres d'un index spcifique sont stockes dans un mme segment d'index. Si une table possde trois index, trois segments d'index sont utiliss. Le segment d'index permet de rechercher l'emplacement des lignes dans une table en fonction d'une cl spcifique.

Oracle9i Database Administration I 9-5

Types de segment

Table organise en index

Partition d'index

Segment d'annulation

Segment temporaire

9-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

Types de segment Table organise en index : Les donnes d'une table organise en index sont stockes dans l'index en fonction de la valeur de cl. Une table organise en index ne ncessite pas de recherche, car toutes les donnes peuvent tre extraites directement partir de l'arborescence d'index. Partition d'index : Un index peut tre partitionn et rparti dans plusieurs tablespaces. Dans ce cas, chaque partition correspond un segment et ne peut pas occuper plusieurs tablespaces. Un index partitionn est utilis principalement pour rduire la contention en rpartissant les entres/sorties d'index. Ce type de segment requiert l'option de partitionnement d'Oracle9i Enterprise Edition. Segment d'annulation : Un segment d'annulation est utilis par une transaction qui apporte des modifications une base. Avant toute modification des blocs de donnes ou d'index, l'ancienne valeur est stocke dans le segment d'annulation pour permettre l'utilisateur d'annuler les modifications, s'il le souhaite. Segment temporaire : Lorsque l'utilisateur excute des commandes telles que CREATE INDEX, SELECT DISTINCT et SELECT GROUP BY, le serveur Oracle tente d'effectuer les tris dans la mmoire. Lorsqu'un tri ncessite davantage d'espace disponible que n'en contient la mmoire, des rsultats intermdiaires sont crits sur le disque dans des segments temporaires.

Oracle9i Database Administration I 9-6

Types de segment

Segment LOB

Table imbrique

Segment de bootstrap

9-7

Copyright Oracle Corporation, 2001. Tous droits rservs.

Types de segment Segment LOB : Vous pouvez utiliser une ou plusieurs colonnes d'une table pour stocker des objets LOB (Large Object), tels que des documents texte, des images ou des donnes vido. Si les valeurs de ces colonnes sont volumineuse, le serveur Oracle les enregistre dans des segments distincts appels segments LOB. La table contient uniquement un pointeur vers l'emplacement des donnes LOB correspondantes. Table imbrique : Une colonne de table peut tre constitue d'une table dfinie par l'utilisateur contenant, par exemple, les articles d'une commande. Dans ce cas, la table interne, appele table imbrique, est stocke sous forme de segment distinct. Segment de bootstrap : Un segment de bootstrap, appel galement segment de cache, est cr par le script sql.bsq en mme temps que la base de donnes. Ce segment permet d'initialiser le cache du dictionnaire de donnes lorsqu'une instance ouvre la base. Le segment de bootstrap ne peut pas faire l'objet d'une interrogation, ni d'une mise jour, et ne ncessite aucune opration de maintenance de la part de l'administrateur de la base de donnes.

Oracle9i Database Administration I 9-7

Priorit des clauses de stockage

Valeur Oracle par dfaut Tablespace Segment

9-8

Copyright Oracle Corporation, 2001. Tous droits rservs.

Paramtres de stockage Une clause de stockage peut tre dfinie au niveau du segment afin de contrler le mode d'allocation des extents un segment. Tout paramtre de stockage dfini au niveau du segment annule l'option correspondante dfinie au niveau du tablespace, sauf pour les paramtres de tablespace MINIMUM EXTENT et UNIFORM SIZE. Lorsque des paramtres de stockage ne sont pas dfinis explicitement au niveau du segment, les paramtres dfinis au niveau du tablespace sont utiliss par dfaut. Lorsque les paramtres de stockage ne sont pas dfinis explicitement au niveau du tablespace, les valeurs systme par dfaut du serveur Oracle sont utilises. Autres considrations : Lorsque vous modifiez des paramtres de stockage, les nouvelles valeurs s'appliquent uniquement aux extents non encore allous. Certains paramtres ne peuvent pas tre dfinis au niveau du tablespace. Ils doivent tre indiqus au niveau du segment uniquement. Lorsque vous dfinissez une taille minimum d'extent pour le tablespace, cette taille s'applique tous les extents allous ultrieurement des segments du tablespace.

Oracle9i Database Administration I 9-8

Allocation et libration d'extents

Un extent est une tranche d'espace utilise par un segment dans un tablespace. Un extent est allou lorsqu'un segment est :
cr tendu modifi

Un extent est libr lorsqu'un segment est :


supprim modifi vid

9-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 9-9

Extents utiliss et extents libres


Fichier de donnes

En-tte de fichier

Extent utilis

Extent libre

9-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Extents Lorsqu'un tablespace est cr, les fichiers de donnes qu'il contient prsentent un en-tte qui correspond au(x) premier(s) bloc(s) du fichier. Chaque segment cr reoit de l'espace provenant des extents libres du tablespace. L'espace contigu utilis par un segment est appel extent utilis. Lorsque des segments librent de l'espace, les extents librs sont ajouts au pool d'extents libres disponibles dans le tablespace.

Oracle9i Database Administration I 9-10

Bloc de base de donnes

Unit minimum d'E/S Comprend un ou plusieurs blocs du systme d'exploitation Est dfini la cration d'un tablespace DB_BLOCK_SIZE dtermine la taille de bloc par dfaut

9-11

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 9-11

Support de plusieurs tailles de bloc

Il est possible de crer une base de donnes avec une taille de bloc standard et jusqu' quatre tailles de bloc non standard. Les tailles de bloc peuvent tre gales toute puissance de deux comprise entre 2 et 32 Ko.

9-12

Copyright Oracle Corporation, 2001. Tous droits rservs.

Support de plusieurs tailles de bloc Oracle9i prend en charge la cration de bases de donnes plusieurs tailles de bloc. Cette fonction est particulirement utile dans les cas suivants : Lors du transport d'un tablespace d'une base de donnes OLTP (Traitement des transactions en ligne) vers un data warehouse d'entreprise. Oracle9i facilite le transport entre des bases de donnes possdant des tailles de bloc diffrentes. Lorsque vous souhaitez pouvoir placer des objets dans des tablespaces possdant la taille de bloc approprie afin d'optimiser les performances des E/S. La taille de bloc du tablespace SYSTEM est nomme taille de bloc standard. Elle est dfinie la cration de la base de donnes. Oracle9i vous permet de dfinir jusqu' quatre tailles de bloc non standard en complment de la taille de bloc standard. Dans le fichier d'initialisation, vous pouvez configurer des sous-caches dans le cache de tampons (buffer cache) pour chacune de ces tailles de bloc. Les sous-caches peuvent galement tre configurs lorsqu'une instance s'excute. Vous pouvez affecter n'importe quelle taille de bloc non standard dfinie aux tablespaces que vous crez. La taille de bloc standard est utilise pour le tablespace SYSTEM et pour la plupart des autres tablespaces.

Oracle9i Database Administration I 9-12

Taille de bloc standard

Elle est dfinie la cration de la base de donnes l'aide du paramtre DB_BLOCK_SIZE. Pour la modifier, il est ncessaire de recrer la base de donnes. Elle est utilise par les tablespaces SYSTEM et TEMPORARY. DB_CACHE_SIZE indique la taille du cache de tampons DEFAULT pour une taille de bloc standard.
Taille minimale = un granule (4 Mo ou 16 Mo) Valeur par dfaut = 48 Mo

9-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Taille de bloc standard Le paramtre d'initialisation DB_BLOCK_SIZE dfinit la taille de bloc standard de la base de donnes. Cette taille de bloc est utilise par le tablespace SYSTEM et par les tablespaces temporaires. Sauf indication contraire, la taille de bloc standard est galement utilise comme taille de bloc par dfaut d'un tablespace. Oracle peut prendre en charge jusqu' quatre tailles de bloc non standard supplmentaires. La taille de bloc la plus frquemment utilise doit tre slectionne comme taille de bloc standard. Cette taille de bloc est souvent la seule tre dfinie. Le plus souvent, le paramtre DB_BLOCK_SIZE est dfini avec la valeur 4 Ko ou 8 Ko. Si elle n'est pas dfinie, la taille de bloc par dfaut est propre au systme d'exploitation et gnralement parfaitement adapte. Ds lors qu'une base de donnes est cre, il est impossible de modifier la taille de bloc. La seule solution consiste recrer la base. Le paramtre d'initialisation DB_CACHE_SIZE remplace le paramtre DB_BLOCK_BUFFERS utilis dans les versions prcdentes. Il dfinit la taille du cache des tampons utilisant la taille de bloc standard. La taille de bloc standard est quant elle dfinie par le paramtre DB_BLOCK_SIZE. Le paramtre DB_BLOCK_BUFFERS fonctionne toujours, pour la compatibilit avec les versions antrieures, mais il reste un paramtre statique. Il ne peut pas tre combin l'un des paramtres dynamiques de dimensionnement. Remarque : Le granule est une unit d'allocation de mmoire virtuelle contigu. La taille d'un granule dpend de la taille totale estime de la mmoire SGA, qui est calcule en fonction de la valeur du paramtre SGA_MAX_SIZE : 4 Mo si la taille de la mmoire SGA estime est infrieure 128 Mo, 16 Mo dans les autres cas.

Oracle9i Database Administration I 9-13

Tailles de bloc non standard

Configurez des caches supplmentaires avec les paramtres dynamiques suivants :


DB_2K_CACHE_SIZE pour des blocs de 2 Ko DB_4K_CACHE_SIZE pour des blocs de 4 Ko DB_8K_CACHE_SIZE pour des blocs de 8 Ko DB_16K_CACHE_SIZE pour des blocs de 16 Ko DB_32K_CACHE_SIZE pour des blocs de 32 Ko

DB_nK_CACHE_SIZE n'est pas autoris si nK est la taille de bloc standard Taille minimale de chaque cache : un granule

9-14

Copyright Oracle Corporation, 2001. Tous droits rservs.

Tailles de bloc non standard Les paramtres d'initialisation de cache de tampons dterminent la taille des caches de la mmoire SGA. Ils vous permettent de dfinir la taille des caches pour les diffrentes tailles de bloc utilises par la base. Si vous souhaitez utiliser plusieurs tailles de bloc dans votre base, le paramtre DB_CACHE_SIZE et au moins un jeu de paramtres DB_nK_CACHE_SIZE doivent tre dfinis. Chaque paramtre dtermine la taille du cache de tampons pour la taille de bloc correspondante. Par dfaut, la valeur zro est affecte au paramtre DB_nK_CACHE_SIZE. N'affectez pas la valeur zro ce paramtre si des tablespaces en ligne (online) ont une taille de bloc de n Ko. Les restrictions spcifiques la plate-forme qui concernent la taille de bloc s'appliquent. Par exemple, vous ne pouvez pas dfinir le paramtre DB_32K_CACHE_SIZE si la taille maximale de bloc est infrieure 32 Ko pour la plate-forme. De mme, vous ne pouvez pas dfinir le paramtre DB_2K_CACHE_SIZE si la taille minimale de bloc est suprieure 2 Ko. Remarque : Vous ne pouvez pas utiliser ces paramtres pour dfinir la taille du cache pour la taille de bloc standard. Par exemple, si la valeur de DB_BLOCK_SIZE est de 2 Ko, il est interdit de dfinir le paramtre DB_2K_CACHE_SIZE. La taille du cache pour la taille de bloc standard est toujours dtermine partir de la valeur de DB_CACHE_SIZE. Le granule est une unit d'allocation de mmoire virtuelle contigu. La taille d'un granule dpend de la taille totale estime de la mmoire SGA, qui est calcule en fonction de la valeur du paramtre SGA_MAX_SIZE.

Oracle9i Database Administration I 9-14

Tailles de bloc non standard Utilisation d'Oracle Enterprise Manager pour configurer des caches supplmentaires A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Configuration. 2. Slectionnez All Initialization Parameters. 3. Apportez les modifications appropries aux paramtres suivants : DB_2K_CACHE_SIZE DB_4K_CACHE_SIZE DB_8K_CACHE_SIZE DB_16K_CACHE_SIZE DB_32K_CACHE_SIZE 4. Cliquez sur OK.

Oracle9i Database Administration I 9-15

Crer des tablespaces de taille de bloc non standard

CREATE TABLESPACE tbs_1 DATAFILE 'tbs_1.dbf' SIZE 10M BLOCKSIZE 4K; DESCRIBE dba_tablespaces Name Null? Type ------------------ -------- -----------TABLESPACE_NAME NOT NULL VARCHAR2(30) BLOCK_SIZE NOT NULL NUMBER ...

9-16

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer des tablespaces de taille de bloc non standard Utilisez la clause BLOCKSIZE pour dfinir une taille de bloc non standard pour le tablespace. Vous pouvez indiquer la taille en octets ou en kilo-octets l'aide du suffixe K. Pour dfinir la clause BLOCKSIZE, vous devez dfinir le paramtre DB_CACHE_SIZE et au moins un jeu de paramtres DB_nK_CACHE_SIZE. En outre, le nombre entier que vous indiquez dans cette clause doit correspondre la valeur de l'un des paramtres DB_nK_CACHE_SIZE. Restriction : Vous ne pouvez pas dfinir des tailles de bloc non standard pour un tablespace temporaire (TEMPORARY) ou si vous souhaitez affecter ce tablespace en tant que tablespace temporaire pour tous les utilisateurs. La premire instruction de la diapositive cre un tablespace appel tbs_1 avec le fichier tbs_1.dbf dont la taille de bloc est de 4 Ko. Pour que cette instruction aboutisse, les mmoires tampon (buffers) de 4 Ko doivent tre configures dans le cache de tampons. Remarque : Une nouvelle colonne a t ajoute aux vues *_TABLESPACES du dictionnaire afin d'indiquer la taille de bloc utilise dans un tablespace particulier.

Oracle9i Database Administration I 9-16

Crer des tablespaces de taille de bloc non standard Utiliser Oracle Enterprise Manager pour crer un tablespace de taille de bloc non standard A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage > Tablespaces. 2. Slectionnez Create dans le menu contextuel, accessible l'aide du bouton droit de la souris. 3. Pour dfinir la taille de bloc lors de la cration d'un tablespace, slectionnez la page Storage et indiquez la valeur de Block Size. 4. Cliquez sur Create.

Oracle9i Database Administration I 9-17

Rgles relatives l'utilisation de plusieurs tailles de bloc


Toutes les partitions d'un objet doivent rsider dans des tablespaces ayant la mme taille de bloc. Tous les tablespaces temporaires, y compris les tablespaces permanents utiliss comme tablespaces temporaires par dfaut, doivent utiliser la taille de bloc standard. Les segments de dbordement d'une table organise en index et les segments LOB en dehors de la ligne peuvent tre stocks dans un tablespace ayant une taille de bloc diffrente de celle de la table de base.

9-18

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 9-18

Contenu d'un bloc de base de donnes

En-tte

Espace libre

Donnes

9-19

Copyright Oracle Corporation, 2001. Tous droits rservs.

Blocs de donnes Un bloc de donnes Oracle contient : Un en-tte de bloc : l'en-tte contient l'adresse du bloc de donnes, le rpertoire des tables, le rpertoire des lignes et les espaces de transaction utiliss lorsque des transactions modifient des lignes du bloc. La croissance d'un en-tte de bloc s'effectue du haut vers le bas. Un espace de donnes : les donnes des lignes sont insres dans le bloc du bas vers le haut. Un espace libre : l'espace libre se situe au milieu du bloc, ce qui permet l'extension de l'en-tte et des donnes de ligne lorsque cela s'avre ncessaire. A l'origine, l'espace libre d'un bloc est contigu, mais il peut tre fragment par les suppressions et les mises jour. Lorsque c'est ncessaire, le serveur Oracle effectue une fusion de cet espace.

Oracle9i Database Administration I 9-19

Paramtres d'utilisation de l'espace de bloc

INITRANS

MAXTRANS

PCTFREE

PCTUSED

9-20

Copyright Oracle Corporation, 2001. Tous droits rservs.

Paramtres d'utilisation de l'espace de bloc Les paramtres d'utilisation de l'espace de bloc permettent de contrler l'utilisation de l'espace dans les segments de donnes et dans les segments d'index. Paramtres de contrle de la simultanit d'accs aux donnes : Les paramtres INITRANS et MAXTRANS dfinissent le nombre initial et le nombre maximum d'espaces de transaction crs dans un bloc d'index ou dans un bloc de donnes. Ces espaces permettent de stocker des informations sur les transactions qui modifient le bloc un point donn dans le temps. Une transaction n'utilise qu'un espace de transaction, mme si elle modifie plusieurs lignes ou entres d'index. Le paramtre INITRANS, dont la valeur par dfaut est 1 pour les segments de donnes et 2 pour les segments d'index, garantit un niveau minimum de simultanit d'accs aux donnes. Par exemple, si vous lui affectez la valeur 3, le paramtre INITRANS permet trois transactions au moins de modifier simultanment le bloc. Si ncessaire, vous pouvez allouer des espaces de transaction supplmentaires en utilisant l'espace libre du bloc afin de permettre un plus grand nombre de transactions de modifier simultanment des lignes du bloc. Le paramtre MAXTRANS, dont la valeur par dfaut est 255, dfinit le nombre maximum de transactions pouvant modifier simultanment un bloc de donnes ou un bloc d'index. Cette valeur limite l'espace utilis dans le bloc par les espaces de transaction et garantit ainsi un espace disponible suffisant pour les donnes de ligne et d'index.

Oracle9i Database Administration I 9-20

Paramtres d'utilisation de l'espace de bloc (suite) Paramtres de gestion de l'utilisation de l'espace de donnes : Le paramtre PCTFREE d'un segment de donnes dfinit, pour chaque bloc de donnes, le pourcentage d'espace rserv l'augmentation de la taille du bloc rsultant des mises jour de lignes. La valeur par dfaut de ce paramtre est de 10%. Le paramtre PCTUSED d'un segment de donnes correspond au pourcentage minimum d'espace utilis que le serveur Oracle tente de conserver pour chaque bloc de donnes de la table. Un bloc est replac dans la liste de blocs libres (free list) lorsque la quantit d'espace utilis devient infrieure la valeur du paramtre PCTUSED. La liste de blocs libres d'un segment contient les blocs qui pourront tre utiliss pour des insertions. Par dfaut, un segment est cr avec une seule liste de blocs libres. Vous pouvez dfinir davantage de listes pour un segment l'aide du paramtre FREELISTS de la clause de stockage. Le paramtre PCTUSED prend par dfaut la valeur 40%. Les paramtres PCTFREE et PCTUSED reprsentent le pourcentage d'espace de donnes disponible, savoir l'espace de bloc restant une fois l'espace d'en-tte dduit de la taille totale du bloc. Remarque : L'utilisation de ces paramtres avec les index est prsente en dtail dans le chapitre "Grer les index". Le paramtre FREELISTS est prsent en dtail dans le cours Oracle9i: Performance Tuning.

Oracle9i Database Administration I 9-21

Gestion des blocs de donnes

Vous disposez de deux mthodes pour grer les blocs de donnes : Gestion automatique de l'espace de segment Gestion manuelle

9-22

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 9-22

Gestion automatique de l'espace de segment


Cette mthode permet de grer l'espace libre des segments de base de donnes. Le suivi de la quantit d'espace libre et utilis dans les segments s'effectue l'aide de bitmaps et non de listes de blocs libres. Cette mthode :
facilite la gestion permet une meilleure utilisation de l'espace amliore les performances des oprations INSERT simultanes

Restriction : Elle ne peut pas tre utilise pour les tablespaces qui contiendront des LOB.
9-23 Copyright Oracle Corporation, 2001. Tous droits rservs.

Gestion automatique de l'espace de segment Facilit de gestion PCTUSED, FREELISTS et FREELIST GROUPS sont grs automatiquement. Meilleure utilisation de l'espace Tous les objets, et notamment ceux dont les tailles de ligne varient normment, utilisent plus efficacement l'espace. Meilleure gestion de la simultanit d'accs aux donnes Le rglage en cours d'excution des variations des accs simultans est amlior.

Oracle9i Database Administration I 9-23

Gestion automatique de l'espace de segment


Les segments bitmap contiennent un bitmap qui indique le statut de chaque bloc dans le segment par rapport son espace disponible. La reprsentation des blocs est contenue dans un ensemble de blocs particulier, appels "blocs bitmap" (BMB). Lorsque vous insrez une ligne, le serveur recherche dans la reprsentation des blocs un bloc disposant d'un espace suffisant. Lorsque la quantit d'espace disponible d'un bloc varie, le nouveau statut de ce dernier est indiqu dans le bitmap.
9-24 Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 9-24

Configurer la gestion automatique de l'espace de segment


Vous ne pouvez activer la gestion automatique de l'espace de segment qu'au niveau tablespace pour les tablespaces grs localement.
CREATE TABLESPACE data02 DATAFILE /u01/oradata/data02.dbf SIZE 5M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K SEGMENT SPACE MANAGEMENT AUTO;

Une fois qu'un tablespace est cr, les spcifications s'appliquent tous les segments crs dans le tablespace.

9-25

Copyright Oracle Corporation, 2001. Tous droits rservs.

Configurer la gestion automatique de l'espace de segment La clause SEGMENT SPACE MANGEMENT AUTO de la commande CREATE TABLESPACE permet de dfinir des segments bitmap, qui ne pourront pas tre modifis. Les paramtres PCTUSED, FREELIST et FREELIST GROUPS dfinis seront ignors. Les tables normales, les index, les tables organises en index (IOT) et les LOB constituent des segments qui peuvent tre grs par des bitmaps.

Oracle9i Database Administration I 9-25

Gestion manuelle des blocs de donnes

Permet de configurer manuellement les blocs de donnes l'aide de paramtres tels que :
PCTFREE PCTUSED FREELIST

Seule mthode disponible dans les versions antrieures d'Oracle

9-26

Copyright Oracle Corporation, 2001. Tous droits rservs.

Gestion manuelle des blocs de donnes La gestion manuelle vous permet de configurer le type d'utilisation de l'espace de bloc et la disponibilit d'un bloc. Elle utilise des paramtres tels que PCTFREE, PCTUSED et FREELIST. Dans les versions antrieures d'Oracle, il s'agissait de la seule mthode disponible pour la gestion des blocs de donnes. La mthode de gestion manuelle est la mthode utilise par dfaut.

Oracle9i Database Administration I 9-26

Utilisation de l'espace de bloc


PCTFREE=20 PCTUSED=40
Insertions Insertions

80 %
(en dehors de la liste de blocs libres)

Insertions

80 % 40 %
Insertion (dans la liste de blocs libres)

9-27

Copyright Oracle Corporation, 2001. Tous droits rservs.

Utilisation de l'espace de bloc Les tapes qui suivent dcrivent la gestion de l'espace d'un bloc pour un segment de donnes qui prsente les paramtres PCTFREE=20 et PCTUSED=40 : 1. Des lignes sont insres dans le bloc jusqu' ce que son espace libre soit gal ou infrieur 20%. Les insertions ne sont plus possibles lorsque les lignes occupent au moins 80% (100 - PCTFREE) de l'espace de donnes disponible dans le bloc. 2. Les 20% restants peuvent tre utiliss lorsque la taille d'une ligne augmente (par exemple, une colonne NULL se voit affecter une valeur). Ainsi, le taux d'utilisation de l'espace de bloc peut dpasser 80% la suite de mises jour. 3. Si des lignes du bloc sont supprimes ou que leur taille diminue la suite de mises jour, le taux d'utilisation de l'espace de bloc peut passer en dessous de 80%. Toutefois, aucune insertion ne s'effectue dans un bloc tant que le taux d'utilisation n'est pas infrieur la valeur de PCTUSED, soit 40% dans notre exemple. 4. Lorsque le taux d'utilisation est infrieur la valeur du paramtre PCTUSED, les insertions sont possibles dans le bloc. Au fur et mesure que des lignes sont insres, le taux d'utilisation du bloc augmente et le cycle redmarre partir de l'tape 1. Remarque : Les rgles de dfinition des paramtres PCTFREE et PCTUSED sont dcrites en dtail dans les chapitres "Grer les tables" et "Grer les index".

Oracle9i Database Administration I 9-27

Utilisation de l'espace de bloc Utiliser Oracle Enterprise Manager pour dfinir PCTFREE et PCTUSED A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Schema > Table. 2. Slectionnez Create dans le menu contextuel, accessible par le bouton droit de la souris. 3. Pour dfinir PCTFREE et PCTUSED lors de la cration d'une table, slectionnez la page Storage et entrez les informations relatives l'utilisation de l'espace (Space Usage). 4. Cliquez sur Create.

Oracle9i Database Administration I 9-28

Obtenir des informations sur le stockage

Pour obtenir des informations sur le stockage, interrogez les vues suivantes : DBA_EXTENTS DBA_SEGMENTS DBA_TABLESPACES DBA_DATA_FILES DBA_FREE_SPACE

9-29

Copyright Oracle Corporation, 2001. Tous droits rservs.

Interroger le dictionnaire de donnes Vous pouvez visualiser les relations entre les tablespaces, les fichiers de donnes, les segments et les extents libres et utiliss en interrogeant le dictionnaire de donnes. Une ligne est ajoute la vue DBA_TABLESPACES lorsque vous crez un tablespace comportant un ou plusieurs fichiers. Par ailleurs, une ligne est ajoute la vue DBA_DATA_FILES pour chaque fichier de la base de donnes. A ce stade, l'espace de chaque fichier de donnes, en-tte exclu, correspond un seul extent libre dans la vue DBA_FREE_SPACE. Lorsqu'un segment est cr, une ligne s'affiche dans la vue DBA_SEGMENTS. L'espace allou aux extents de ce segment est visible dans la vue DBA_EXTENTS, tandis que la vue DBA_FREE_SPACE est corrige afin d'indiquer une quantit d'espace libre moindre dans les fichiers dans lesquels les extents ont t crs pour le segment. La totalit de l'espace d'un fichier (bloc d'en-tte exclu) doit tre prise en compte dans la vue DBA_FREE_SPACE ou DBA_EXTENTS.

Oracle9i Database Administration I 9-29

Interroger le dictionnaire de donnes (suite) Vue DBA_SEGMENTS Interrogez la vue DBA_SEGMENTS pour obtenir le nombre d'extents et de blocs allous un segment. SQL> SELECT segment_name,tablespace_name,extents,blocks 2 FROM dba_segments 3 WHERE owner = 'HR'; SEGMENT_NAME TABLESPACE EXTENTS BLOCKS --------------- ---------- ---------- ---------REGIONS SAMPLE 1 8 LOCATIONS SAMPLE 1 8 DEPARTMENTS SAMPLE 1 8 JOBS SAMPLE 1 8 EMPLOYEES SAMPLE 1 8 JOB_HISTORY SAMPLE 1 8 5 rows selected. Vue DBA_EXTENTS Interrogez la vue DBA_EXTENTS pour vrifier les extents d'un segment donn. SQL> SELECT extent_id,file_id,block_id,blocks 2 FROM dba_extents 3 WHERE owner='HR' 4 AND segment_name='EMPLOYEES'; EXTENT_ID FILE_ID BLOCK_ID BLOCKS --------- ------- -------- -----0 4 2 1 4 27 2 4 32 3 4 42 4 4 57 5 5 10 15 20

5 rows selected.

Oracle9i Database Administration I 9-30

Interroger le dictionnaire de donnes (suite) Vue DBA_FREE_SPACE Interrogez la vue DBA_FREE_SPACE pour vrifier les extents d'un segment donn. SQLPLUS> SELECT tablespace_name, count(*), 2> max(blocks), sum(blocks) 3> FROM dba_free_space 4> GROUP BY tablespace_name; TABLESPACE_NAMECOUNT(*) DATA01 RBS SORT SYSTEM TEMP 5 rows selected. 2 3 1 1 1 MAX(BLOCKS SUM(BLOCKS 1284 2329 1023 5626 2431 1533 2419 1023 5626 2431 -----------------------------------------------------

Oracle9i Database Administration I 9-31

Synthse

Ce chapitre vous a permis d'apprendre : utiliser des tablespaces pour :


sparer des segments afin de faciliter l'administration grer l'allocation d'espace utilisateur

classer les segments par catgories en fonction du type d'information qu'ils contiennent dfinir des tailles d'extent l'aide de la clause de stockage grer l'utilisation de l'espace de bloc

9-32

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 9-32

Prsentation de l'exercice 9

Dans cet exercice, vous allez : identifier et obtenir des informations sur les diffrents types de structure de stockage de la base de donnes

9-33

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 9 Remarque : Cet exercice peut tre ralis avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 9-33

Exercice 9 : structure de stockage et relations 1 Connectez-vous sous l'ID utilisateur SYSTEM, puis excutez le script lab09_01.sql pour crer des tables et des index. 2 Identifiez les diffrents types de segment de la base de donnes. 3 Ecrivez une interrogation permettant de vrifier les segments associs une valeur infrieure de cinq extents au nombre maximal d'extents. Ne tenez pas compte du segment de bootstrap. Cette interrogation est utile pour identifier les segments susceptibles de gnrer des erreurs lors de futurs chargements de donnes. 4 Quels fichiers disposent d'un espace allou pour la table EMP ? 5 Excutez le script lab09_05.sql. 6 Rpertoriez l'espace libre disponible par tablespace. L'interrogation doit afficher le nombre de fragments, l'espace libre total et le plus grand extent libre de chaque tablespace. 7 Rpertoriez les segments qui gnreront des erreurs lors de la tentative d'allocation d'un extent supplmentaire, en raison d'un espace insuffisant.

Oracle9i Database Administration I 9-34

Grer les donnes d'annulation

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : dcrire la fonction des donnes d'annulation implmenter la gestion automatique des annulations crer et configurer des segments d'annulation extraire du dictionnaire de donnes des informations sur les segments d'annulation

10-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 10-2

Grer les donnes d'annulation

Deux mthodes de gestion des donnes d'annulation sont disponibles :


Gestion automatique Gestion manuelle

Dans Oracle9i en version anglaise, le terme undo remplace le terme rollback qui tait jusqu'alors employ. En version franaise, ces deux termes sont traduits par annulation.

10-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Grer les donnes d'annulation Gestion automatique Le serveur Oracle gre automatiquement la cration, l'allocation et le rglage (tuning) des segments d'annulation. Gestion manuelle Cette mthode vous permet de grer manuellement la cration, l'allocation et le rglage (tuning) des segments d'annulation. Elle tait la seule disponible dans les versions antrieures Oracle9i. Pour plus d'informations sur la gestion manuelle des annulations, reportez-vous l'annexe B "Grer manuellement les donnes d'annulation".

Oracle9i Database Administration I 10-3

Segment d'annulation

Ancienne image Table

Nouvelle image Segment d'annulation

Transaction de mise jour

10-4

Copyright Oracle Corporation, 2001. Tous droits rservs.

Segment d'annulation Un segment d'annulation permet d'enregistrer l'ancienne valeur (donnes d'annulation) lorsqu'un processus modifie les donnes d'une base. Il enregistre l'emplacement des donnes et leur valeur avant modification. L'en-tte d'un segment d'annulation contient une table des transactions dans laquelle sont stockes des informations sur les transactions en cours associes au segment d'annulation. Les donnes d'annulation d'une transaction squentielle sont stockes dans un seul segment d'annulation. Plusieurs transactions simultanes peuvent crire des donnes dans un mme segment d'annulation.

Oracle9i Database Administration I 10-4

Fonction des segments d'annulation

Annulation d'une transaction

Rcupration d'une transaction

Segment d'annulation

Cohrence en lecture

10-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Fonction des segments d'annulation Annulation d'une transaction Lorsqu'une transaction modifie une ligne dans une table, l'ancienne image des colonnes modifies (donnes d'annulation) est enregistre dans le segment d'annulation. En cas d'annulation (rollback) de la transaction, le serveur Oracle restaure les valeurs d'origine en les rcrivant dans la ligne du segment d'annulation. Rcupration d'une transaction Si l'instance choue tandis que des transactions sont en cours, le serveur Oracle doit annuler les modifications non valides lors de la rouverture de la base de donnes. L'annulation fait partie de la rcupration de la transaction. La rcupration est possible uniquement dans la mesure o les modifications effectues dans le segment d'annulation sont galement protges par les fichiers de journalisation (fichiers redo log). Cohrence en lecture Lorsque des transactions sont en cours, les autres utilisateurs de la base de donnes ne doivent pas avoir connaissance des modifications non valides effectues par ces transactions. En outre, une instruction ne doit pas avoir connaissance des modifications valides aprs le dbut de son excution. Les anciennes valeurs (donnes d'annulation) des segments d'annulation sont galement utilises pour fournir aux lecteurs une image cohrente d'une instruction donne.

Oracle9i Database Administration I 10-5

Cohrence en lecture
SELECT * FROM table

Table

Nouvelle image Image au dmarrage de l'instruction

10-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

Cohrence en lecture Le serveur Oracle permet une instruction de voir les donnes de manire cohrente un instant donn, mme si celles-ci sont modifies par d'autres transactions. Lorsque le serveur Oracle lance l'excution d'une instruction SELECT, il dtermine le numro SCN (System Change Number) en cours et s'assure que l'instruction ne traite pas les modifications non valides avant ce numro. Prenons le cas d'une longue interrogation excute pendant que plusieurs modifications sont en cours : si une ligne contient des modifications non valides au dbut de l'interrogation, le serveur Oracle cre une image cohrente en lecture de cette ligne en extrayant l'image avant des modifications depuis le segment d'annulation et en appliquant les modifications une copie de la ligne en mmoire. Cohrence en lecture d'une transaction Une instruction SQL est toujours cohrente en lecture. Toutefois, vous pouvez demander la cohrence en lecture d'une transaction en lecture seule en excutant la commande suivante au dbut de la transaction : SQL> SET TRANSACTION READ ONLY; Vous pouvez galement demander la cohrence en lecture d'une transaction LMD en excutant la commande suivante au dbut de la transaction : SQL> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; Dans les deux cas, le serveur Oracle fournit des donnes lues de manire cohrente ds le dbut de la transaction. L'utilisation de la commande SERIALIZABLE peut affecter les performances. Oracle9i Database Administration I 10-6

Types de segment d'annulation

Le segment SYSTEM est utilis pour les objets du tablespace SYSTEM. Le segment non SYSTEM est utilis pour les objets d'autres tablespaces.
Mode automatique : ncessite un tablespace d'annulation (UNDO) Mode manuel : Priv : acquis par une instance spcifique Public : acquis par une instance quelconque

Les segments diffrs sont utiliss lorsque des tablespaces sont mis hors ligne immdiatement, temporairement ou des fins de rcupration.
10-7 Copyright Oracle Corporation, 2001. Tous droits rservs.

Types de segment d'annulation Segment d'annulation SYSTEM Le segment d'annulation SYSTEM est cr dans le tablespace SYSTEM la cration d'une base de donnes. Il ne peut tre utilis que pour les modifications apportes aux objets du tablespace SYSTEM. Ce segment se prsente et fonctionne de la mme manire en mode manuel et en mode automatique. Segments d'annulation non SYSTEM Dans une base de donnes qui comporte plusieurs tablespaces, au moins un segment d'annulation non SYSTEM est requis pour le mode manuel ou un tablespace d'annulation (UNDO) pour le mode automatique. Mode manuel En mode manuel, un segment d'annulation non SYSTEM (cr par l'administrateur de base de donnes) peut tre utilis pour les modifications apportes aux objets de tout tablespace non SYSTEM. Il existe deux types de segment d'annulation non SYSTEM. Segments d'annulation privs Les segments d'annulation privs sont des segments mis en ligne (online) par une instance parce qu'ils sont rpertoris dans le fichier de paramtres. Toutefois, vous pouvez les mettre en ligne de faon explicite l'aide de la commande ALTER ROLLBACK SEGMENT.

Oracle9i Database Administration I 10-7

Types de segment d'annulation (suite) Segments d'annulation publics Les segments d'annulation publics constituent un pool de segments d'annulation disponibles dans une base de donnes. Ces segments sont gnralement utiliss avec Oracle Real Application Clusters pour crer un pool de segments d'annulation pouvant tre utiliss par n'importe quelle instance Real Application Clusters. Remarque : L'utilisation des segments d'annulation publics est prsente dans le manuel Oracle9i Real Application Clusters and Administration. Segments d'annulation diffrs Des segments d'annulation diffrs peuvent tre crs lorsqu'un tablespace est mis hors ligne (offline). Ils permettent d'annuler des transactions lorsque le tablespace est remis en ligne et sont automatiquement supprims lorsqu'ils ne sont plus utiles. Etant donn que les segments d'annulation diffrs sont grs par le serveur Oracle, aucune intervention de votre part n'est ncessaire.

Oracle9i Database Administration I 10-8

Concepts de la gestion automatique des annulations


Les donnes d'annulation sont gres l'aide d'un tablespace d'annulation (UNDO). Allouez un tablespace d'annulation (UNDO) par instance en prvoyant suffisamment d'espace pour la charge globale de l'instance. Le serveur Oracle gre automatiquement les donnes d'annulation dans le tablespace d'annulation (UNDO).

10-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Concepts de la gestion automatique des annulations Les segments d'annulation sont crs selon la convention d'appellation suivante : _SYSSMUn$ Exemple : _SYSSMU1$ _SYSSMU2$

Oracle9i Database Administration I 10-9

Configuration de la gestion automatique des annulations


Configurez les deux paramtres suivants dans le fichier d'initialisation :
UNDO_MANAGEMENT UNDO_TABLESPACE

Crez au moins un tablespace d'annulation (UNDO).

undo1db01.dbf Fichier d'initialisation Tablespace d'annulation (UNDO)

10-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Configuration de la gestion automatique des annulations Si la base de donnes ne contient qu'un tablespace d'annulation (UNDO) et si la valeur du paramtre UNDO_MANAGEMENT est AUTO, le paramtre UNDO_TABLESPACE est facultatif, car le serveur Oracle choisira automatiquement le tablespace d'annulation.

Oracle9i Database Administration I 10-10

Paramtres d'initialisation de la gestion automatique des annulations


Le paramtre UNDO_MANAGEMENT indique si le systme doit utiliser le mode AUTO ou MANUAL. Le paramtre UNDO_TABLESPACE dsigne un tablespace d'annulation (UNDO) spcifique utiliser.
UNDO_MANAGEMENT=AUTO UNDO_TABLESPACE=UNDOTBS

10-11

Copyright Oracle Corporation, 2001. Tous droits rservs.

Paramtres d'initialisation de la gestion automatique des annulations UNDO_MANAGEMENT : Ce paramtre dtermine le mode d'annulation de la base de donnes. Il peut possder la valeur AUTO ou MANUAL et doit tre dfini dans le fichier de paramtres d'initialisation. Il ne peut pas tre modifi dynamiquement aprs le dmarrage de la base de donnes. En mode AUTO, la base de donnes gre automatiquement les annulations et requiert un tablespace d'annulation (UNDO). En mode MANUAL (valeur par dfaut), vous pouvez crer et grer les segments d'annulation dont vous avez besoin dans la base de donnes, comme dans les prcdentes versions du serveur Oracle. UNDO_TABLESPACE : Ce paramtre dfinit le tablespace d'annulation (UNDO) utiliser. Il peut tre dfini dans les fichiers d'initialisation ou modifi dynamiquement l'aide de la commande ALTER SYSTEM. SQL> ALTER SYSTEM SET undo_tablespace = UNDOTBS;

Oracle9i Database Administration I 10-11

Gestion automatique des annulations : tablespace d'annulation (UNDO)


Pour crer le tablespace d'annulation (UNDO) en mme temps que la base de donnes, ajoutez une clause dans la commande CREATE DATABASE.

CREATE DATABASE db01 . . . UNDO TABLESPACE undo1 DATAFILE '/u01/oradata/undoldb01.dbf' SIZE 20M AUTOEXTEND ON
Vous pouvez galement crer le tablespace ultrieurement l'aide de la commande CREATE UNDO TABLESPACE.

CREATE UNDO TABLESPACE undo1 DATAFILE '/u01/oradata/undo1db01.dbf' SIZE 20M;


10-12 Copyright Oracle Corporation, 2001. Tous droits rservs.

Gestion automatique des annulations : tablespace d'annulation (UNDO) La gestion automatique des annulations requiert un tablespace d'annulation (UNDO). La base de donnes peut contenir plusieurs tablespaces d'annulation, mais un seul peut tre actif. Vous pouvez crer le tablespace d'annulation (UNDO) en mme temps que la base de donnes en ajoutant une clause dans l'instruction CREATE DATABASE. A la cration de la base de donnes, si la valeur du paramtre UNDO_MANAGEMENT est AUTO et que vous n'incluez pas la clause relative au tablespace d'annulation (UNDO) dans l'instruction CREATE DATABASE, le serveur Oracle cre un tablespace d'annulation nomm SYS_UNDOTBS. Le fichier de donnes par dfaut du tablespace SYS_UNDOTBS, dont la taille dpend du systme d'exploitation, sera nomm 'dbu1<oracle_sid>.dbf' et situ dans le rpertoire $ORACLE_HOME/dbs. La valeur d'AUTOEXTEND est ON. Une fois la base de donnes cre, vous pouvez crer un tablespace d'annulation (UNDO) l'aide de la commande CREATE UNDO TABLESPACE.

Oracle9i Database Administration I 10-12

Gestion automatique des annulations : tablespace d'annulation (UNDO) (suite) Utiliser Oracle Enterprise Manager pour crer un tablespace d'annulation (UNDO) A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage > Tablespace. 2. Slectionnez Create dans le menu accessible l'aide du bouton droit de la souris. 3. Dans l'ongle General, entrez le nom et la taille du fichier. 4. Slectionnez Undo dans la rgion Type. 5. Cliquez sur Create.

Oracle9i Database Administration I 10-13

Gestion automatique des annulations : modifier un tablespace d'annulation (UNDO)


La commande ALTER TABLESPACE permet de modifier des tablespaces d'annulation (UNDO). Dans l'exemple ci-dessous, un fichier de donnes est ajout au tablespace d'annulation (UNDO) :
ALTER TABLESPACE undotbs ADD DATAFILE '/u01/oradata/undotbs2.dbf' SIZE 30M AUTOEXTEND ON;

10-14

Copyright Oracle Corporation, 2001. Tous droits rservs.

Gestion automatique des annulations : modifier un tablespace d'annulation (UNDO) Le serveur prend en charge les clauses suivantes pour la modification d'un tablespace d'annulation (UNDO) : ADD DATAFILE RENAME DATAFILE [ONLINE|OFFLINE] BEGIN BACKUP END BACKUP

Oracle9i Database Administration I 10-14

Gestion automatique des annulations : modifier un tablespace d'annulation (UNDO) (suite) Utiliser Oracle Enterprise Manager pour modifier un tablespace d'annulation (UNDO) A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage. 2. Slectionnez le dossier Tablespace, puis cliquez avec le bouton droit de la souris sur le tablespace d'annulation (UNDO). 3. Slectionnez Add a data file.

Oracle9i Database Administration I 10-15

Gestion automatique des annulations : changer de tablespace d'annulation (UNDO)


Vous pouvez passer d'un tablespace d'annulation (UNDO) un autre. Vous ne pouvez affecter une base de donnes qu'un tablespace d'annulation (UNDO) la fois. Une instance peut contenir plusieurs tablespaces d'annulation (UNDO), mais un seul peut tre actif. La commande ALTER SYSTEM permet de changer dynamiquement de tablespace d'annulation (UNDO).
ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2;

10-16

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 10-16

Utiliser Oracle Enterprise Manager pour changer de tablespace d'annulation (UNDO) Utiliser Oracle Enterprise Manager pour changer de tablespace d'annulation (UNDO) A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage > Instance. 2. Cliquez sur Configuration. 3. Sur la page Undo, slectionnez le tablespace d'annulation (UNDO) dans la liste droulante Current Undo. 4. Cliquez sur Apply

Oracle9i Database Administration I 10-17

Gestion automatique des annulations : supprimer un tablespace d'annulation (UNDO)


La commande DROP TABLESPACE permet de supprimer un tablespace d'annulation (UNDO).
DROP TABLESPACE UNDOTBS2;

Vous ne pouvez pas supprimer un tablespace d'annulation (UNDO) s'il est en cours d'utilisation par une instance. Pour supprimer un tablespace d'annulation actif :
changez de tablespace d'annulation, supprimez le tablespace une fois que toutes les transactions en cours sont termines.

10-18

Copyright Oracle Corporation, 2001. Tous droits rservs.

Gestion automatique des annulations : supprimer un tablespace d'annulation (UNDO) Vous ne pouvez pas supprimer un tablespace d'annulation s'il est en cours d'utilisation par une instance et si toutes ses transactions ne sont pas termines. Si UNDOTBS est le tablespace d'annulation (UNDO) actif de la base de donnes et s'il doit tre supprim, dfinissez un nouveau tablespace d'annulation avant de procder la suppression. Crez d'abord un autre tablespace d'annulation s'il n'en existe pas. Changez ensuite de tablespace d'annulation en cours l'aide de la commande ALTER SYSTEM. SQL> ALTER SYSTEM SET undo_tablespace = UNDOTBS2; Vous pouvez supprimer UNDOTBS une fois que toutes ses transactions sont termines. Excutez l'interrogation suivante pour dterminer si des transactions sont en cours : SQL> SELECT a.name,b.status 2 FROM v$rollname a, v$rollstat b 3 WHERE a.name IN ( SELECT segment_name 4 FROM dba_segments 5 WHERE tablespace_name = 'UNDOTBS ) 6 AND a.usn = b.usn; NAME STATUS ------------------------- --------------_SYSSMU4$ PENDING OFFLINE

Oracle9i Database Administration I 10-18

Gestion automatique des annulations : supprimer un tablespace d'annulation (suite) Un segment d'annulation qui possde le statut PENDING OFFLINE contient encore des transactions en cours. Lorsque l'interrogation ne renvoie aucune ligne, toutes les transactions sont termines et vous pouvez supprimer le tablespace l'aide de la commande suivante : SQL> DROP TABLESPACE UNDOTBS; Le serveur Oracle peut rfrencer UNDOTBS aprs tre pass un autre tablespace d'annulation pour garantir la cohrence en lecture des interrogations. Les interrogations qui s'adressent au tablespace UNDOTBS alors que celui-ci n'est plus disponible pour assurer une lecture cohrente aboutissent l'erreur suivante : ORA-1555 snapshot too old.

Oracle9i Database Administration I 10-19

Gestion automatique des annulations : supprimer un tablespace d'annulation (UNDO) (suite) Utiliser Oracle Enterprise Manager pour supprimer un tablespace d'annulation A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Storage. 2. Slectionnez le dossier Tablespace. 3. Cliquez l'aide du bouton droit de la souris sur le nom du tablespace d'annulation et slectionnez Remove dans le menu qui s'affiche. 4. Confirmez la suppression.

Oracle9i Database Administration I 10-20

Autres paramtres de gestion automatique des annulations


UNDO_SUPPRESS_ERRORS
Lorsqu'il possde la valeur TRUE, ce paramtre supprime les erreurs qui surviennent lors de tentatives d'excution d'oprations manuelles en mode AUTO.

UNDO_RETENTION
Ce paramtre contrle le volume de donnes d'annulation conserver pour une lecture cohrente.

10-21

Copyright Oracle Corporation, 2001. Tous droits rservs.

Autres paramtres de gestion automatique des annulations UNDO_SUPPRESS_ERRORS Ce paramtre permet l'utilisateur de supprimer les erreurs lors de l'excution manuelle d'oprations de gestion des annulations (ALTER ROLLBACK SEGMENT ONLINE, par exemple) en mode automatique. La configuration de ce paramtre permet d'utiliser la fonction de tablespace d'annulation avant la conversion de l'ensemble des programmes d'application et scripts en mode automatique. Par exemple, si l'une de vos applications utilise l'instruction SET TRANSACTION USE ROLLBACK SEGMENT, vous pouvez lui ajouter l'instruction ALTER SESSION SET UNDO_SUPPRESS_ERRORS = true pour supprimer l'erreur ORA-30019. ORA-30019: Illegal rollback segment operation in Automatic Undo mode UNDO_RETENTION Ce paramtre dtermine la dure en secondes de conservation des donnes d'annulation pour garantir des lectures cohrentes. La conservation des donnes d'annulation permet d'excuter des interrogations plus longues et ncessite des fichiers de donnes plus volumineux pour le tablespace d'annulation. Ce paramtre peut tre dfini dans le fichier d'initialisation ou modifi dynamiquement l'aide de la commande ALTER SYSTEM. SQL> ALTER SYSTEM SET UNDO_RETENTION=900; La valeur 900 correspond une dure de conservation de 15 minutes.

Oracle9i Database Administration I 10-21

Autres paramtres de gestion automatique des annulations (suite) Si la taille du tablespace d'annulation (UNDO) est trop restreinte, les donnes d'annulation ne sont pas conserves pendant la priode indique mme si le paramtre UNDO_RETENTION est dfini. Le serveur Oracle utilise un algorithme pour allouer de l'espace dans un tablespace d'annulation et alloue l'espace qui n'est pas occup par des transactions en cours avant de provoquer l'chec d'une nouvelle transaction.

Oracle9i Database Administration I 10-22

Statistiques relatives aux donnes d'annulation


SELECT end_time,begin_time,undoblks FROM v$undostat; END_TIME -----------------22-JAN-01 13:44:18 22-JAN-01 13:43:04 22-JAN-01 13:33:04 22-JAN-01 13:23:04 22-JAN-01 13:13:04 22-JAN-01 13:03:04 22-JAN-01 12:53:04 22-JAN-01 12:43:04 22-JAN-01 12:33:04 BEGIN_TIME UNDO ------------------ ----22-JAN-01 13:43:04 19 22-JAN-01 13:33:04 1474 22-JAN-01 13:23:04 1347 22-JAN-01 13:13:04 1628 22-JAN-01 13:03:04 2249 22-JAN-01 12:53:04 1698 22-JAN-01 12:43:04 1433 22-JAN-01 12:33:04 1532 22-JAN-01 12:23:04 1075

10-23

Copyright Oracle Corporation, 2001. Tous droits rservs.

Statistiques relatives aux donnes d'annulation Vue V$UNDOSTAT : Cette vue disponible en modes manuel et automatique affiche un histogramme des donnes statistiques relatives au bon fonctionnement de la base de donnes. Chaque ligne contient des statistiques collectes toutes les 10 minutes dans l'instance. Cette vue vous permet d'estimer l'espace d'annulation ncessaire pour la charge globale en cours et permet au serveur Oracle de rgler l'utilisation des annulations dans le systme. Bien que l'intervalle de collecte des statistiques soit en principe de 10 minutes, la ligne la plus rcente renverra le temps coul depuis le dbut de l'intervalle, qui est gnralement infrieur 10 minutes.

Oracle9i Database Administration I 10-23

Gestion automatique des annulations : dimensionner un tablespace d'annulation


Pour dterminer la taille d'un tablespace d'annulation (UNDO), vous devez disposer des lments d'information suivants : UNDO_RETENTION en secondes (UR) Nombre de blocs de donnes d'annulation gnrs par seconde (UPS) L'espace supplmentaire varie en fonction de la taille des extents et des fichiers (db_block_size) (DBS)
UndoSpace = [UR * (UPS * DBS)] + (DBS * 24)

10-24

Copyright Oracle Corporation, 2001. Tous droits rservs.

Gestion automatique des annulations : dimensionner un tablespace d'annulation Le dimensionnement d'un tablespace d'annulation (UNDO) ncessite trois lments d'information : les paramtres UNDO_RETENTION et DB_BLOCK_SIZE, qui se trouvent dans le fichier d'initialisation, et le nombre de blocs d'annulation gnrs par seconde, disponible dans la vue V$UNDOSTAT. La formule suivante permet de calculer le nombre total de blocs gnrs et de le diviser par le temps de surveillance (en secondes) : SQL> SELECT (SUM(undoblks) / SUM) ((end_time - begin_time) * 86400)FROM v$undostat; Les colonnes END_TIME et BEGIN_TIME sont de type DATE. Le rsultat d'une soustraction de donnes de type DATE est exprim en jours. Pour convertir les jours en secondes, multipliez le rsultat par 84600 (nombre de secondes en une journe). Le rsultat de l'interrogation renvoie le nombre de blocs d'annulation par seconde. Cette valeur doit tre multiplie par la taille d'un bloc d'annulation, qui correspond la taille de bloc de base de donnes dfinie dans le paramtre DB_BLOCK_SIZE. L'interrogation suivante permet de calculer le nombre d'octets ncessaires :

Oracle9i Database Administration I 10-24

Gestion automatique des annulations : dimensionner un tablespace d'annulation (suite) SQL> SELECT (UR * (UPS * DBS)) + (DBS * 24) AS "Bytes" 2 FROM (SELECT value AS UR 3 FROM v$parameter 4 WHERE name = 'undo_retention'), 5 (SELECT (SUM(undoblks)/SUM(((end_time begin_time)*86400))) AS UPS 6 FROM v$undostat), 7 (SELECT value AS DBS 8 FROM v$parameter 9 WHERE name = 'db_block_size'); Bytes ---------19106213 Pour convertir des octets en mgaoctets, divisez-les par 1 048 576. Le rsultat pour cette base de donnes est de 18,22 Mo. Pour obtenir de meilleurs rsultats, effectuez ce calcul au moment de la journe o la charge globale de la base de donnes atteint son niveau maximum.

Oracle9i Database Administration I 10-25

Gestion automatique des annulations : quota d'annulation


Les transactions longues ou incorrectes peuvent utiliser des ressources considrables. Les quotas d'annulation permettent de regrouper les utilisateurs et de leur affecter un espace d'annulation maximum dfini. La directive UNDO_POOL de Resource Manager dfinit l'espace allou un groupe de ressources. Lorsqu'un groupe dpasse la limite dfinie, il ne peut plus excuter de nouvelle transaction jusqu' ce que les transactions en cours se terminent ou chouent, librant ainsi de l'espace d'annulation.

10-26

Copyright Oracle Corporation, 2001. Tous droits rservs.

Gestion automatique des annulations : quota d'annulation Les plans d'allocation de ressources permettent de regrouper les utilisateurs et de limiter les ressources mises leur disposition. Vous pouvez limiter le volume de donnes d'annulation gnres par un groupe en affectant une valeur UNDO_POOL (par dfaut, ce paramtre a une valeur illimite). Lorsqu'un groupe dpasse la limite dfinie, une erreur est gnre et aucune autre transaction ne peut tre effectue tant que les transactions en cours n'ont pas abouti ou chou. ORA-30027: "Undo quota violation - failed to get %s (bytes)" Cause : le groupe de consommateurs de cette session a dpass le quota d'annulation qui lui a t affect. Action : demandez l'administrateur de la base de donnes d'augmenter le quota ou attendez la validation d'autres transactions avant de poursuivre. Remarque : Resource Manager est prsent dans le chapitre "Grer la scurit des mots de passe et les ressources".

Oracle9i Database Administration I 10-26

Obtenir des informations sur les segments d'annulation


Interrogez les vues suivantes pour obtenir des informations sur les segments d'annulation :
DBA_ROLLBACK_SEGS

Vues dynamiques des performances


V$ROLLNAME V$ROLLSTAT V$UNDOSTAT V$SESSION V$TRANSACTION

10-27

Copyright Oracle Corporation, 2001. Tous droits rservs.

Obtenir des informations sur les segments d'annulation Pour obtenir des informations sur tous les segments d'annulation de la base de donnes, interrogez la vue DBA_ROLLBACK_SEGS : SQL> SELECT segment_name,owner,tablespace_name,status 2 FROM dba_rollback_segs; SEGMENT_NA ---------SYSTEM _SYSSMU1$ _SYSSMU2$ _SYSSMU3$ _SYSSMU4$ OWNER -----SYS PUBLIC PUBLIC PUBLIC PUBLIC TABLESPACE ---------SYSTEM UNDO1 UNDO1 UNDO1 UNDO1 STATUS -----ONLINE ONLINE ONLINE ONLINE ONLINE

Les informations sur les segments d'annulation hors ligne ne sont visibles que dans cette vue, tandis que les segments d'annulation en ligne ne peuvent tre visualiss que dans les vues dynamiques des performances. La colonne OWNER indique le type du segment d'annulation : SYS : fait rfrence un segment d'annulation priv. PUBLIC : fait rfrence un segment d'annulation public.

Oracle9i Database Administration I 10-27

Obtenir des informations sur les segments d'annulation (suite) Vues V$ROLLSTAT et V$ROLLNAME : Joignez les vues V$ROLLSTAT et V$ROLLNAME pour obtenir les statistiques sur les segments d'annulation actuellement utiliss par l'instance. Exemple : SQL> SELECT n.name, s.extents, s.rssize,s.hwmsize, 2 s.xacts, s.status 3 FROM v$rollname n, v$rollstat s 4 WHERE n.usn = s.usn; NAME EXTENTS RSSIZE HWMSIZE XACTS STATUS ---------- ------- ---------- ---------- ---------- -----SYSTEM 7 425984 425984 0 ONLINE _SYSSMU1$ 5 2289664 2289664 0 ONLINE _SYSSMU2$ 10 6549504 6549504 0 ONLINE _SYSSMU3$ 7 4386816 4386816 0 ONLINE _SYSSMU4$ 6 4321280 4321280 0 ONLINE Vues V$TRANSACTION et V$SESSION : Joignez les vues V$TRANSACTION et V$SESSION pour vrifier l'utilisation d'un segment d'annulation par les transactions en cours. Exemple : SQL> SELECT s.username, t.xidusn, t.ubafil, 2 t.ubablk, t.used_ublk 3 FROM v$session s, v$transaction t 4 WHERE s.saddr = t.ses_addr; USERNAME XIDUSN UBAFIL UBABLK USED_UBLK -------- ---------- ---------- ---------- ---------HR 2 2 5005 1

Oracle9i Database Administration I 10-28

Synthse

Ce chapitre vous a permis d'apprendre : configurer la gestion automatique des annulations crer un tablespace d'annulation (UNDO) dimensionner correctement un tablespace d'annulation (UNDO)

10-29

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 10-29

Prsentation de l'exercice 10

Dans cet exercice, vous allez : crer un tablespace d'annulation (UNDO) changer de tablespace d'annulation (UNDO) supprimer un tablespace d'annulation (UNDO)

10-30

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 10 Remarque : Vous pouvez raliser cet exercice avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 10-30

Exercice 10 : grer les donnes d'annulation 1 Connectez-vous en tant que SYSTEM/MANAGER et rpertoriez les segments d'annulation du tablespace UNDOTBS. 2 Crez le tablespace d'annulation UNDO2 d'une taille de 15 Mo et placez-le dans le rpertoire $HOME/oradata/u03. Rpertoriez les segments d'annulation d'UNDO2. 3 Dans une nouvelle session Telnet, dmarrez SQL*Plus et connectez-vous sous l'ID utilisateur HR. Excutez le script lab10_03.sql pour insrer une ligne dans la table DEPARTMENTS. Vous ne devez ni valider, ni annuler, ni quitter la session. 4 Dans la session que vous avez ouverte sous l'ID SYS, passez du tablespace d'annulation UNDOTBS UNDO2 l'aide de la commande ALTER SYSTEM. 5 Sous l'ID utilisateur SYS, supprimez le tablespace UNDOTBS. Que se passe-t-il ? 6 Rpertoriez les segments d'annulation du tablespace UNDOTBS et leur statut. Comparez cette liste celle tablie l'tape 1. 7 Dans la session que vous avez ouverte sous l'ID utilisateur HR, annulez la transaction et quittez cette session. 8 Dans la session que vous avez ouverte sous l'ID utilisateur SYS, supprimez le tablespace UNDOTBS. Que se passe-t-il ? 9 Sous l'ID utilisateur SYS, excutez la commande suivante : ALTER SYSTEM SET undo_retention=0 SCOPE=memory; A prsent, supprimez le tablespace UNDOTBS. Que se passe-t-il ? Remarque : La suppression du tablespace peut prendre du temps.

Oracle9i Database Administration I 10-31

Oracle9i Database Administration I 10-32

Grer les tables

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : identifier les diffrentes mthodes de stockage des donnes dcrire les types de donnes Oracle distinguer un ROWID tendu d'un ROWID restreint dcrire la structure d'une ligne crer des tables normales et des tables temporaires grer des structures de stockage au sein d'une table rorganiser, vider et supprimer une table supprimer une colonne dans une table

11-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 11-2

Stocker des donnes utilisateur

Table normale

Table partitionne

Table organise en index

Cluster

11-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Stocker des donnes utilisateur Il existe plusieurs mthodes de stockage des donnes utilisateur dans une base de donnes Oracle : tables normales, tables partitionnes, tables organises en index, tables clusterises. Remarque : Les tables partitionnes, les tables organises en index et les tables clusterises sont traites dans d'autres cours. Tables normales Une table normale (appele en gnral "table") est l'lment le plus communment utilis pour stocker les donnes utilisateur. Il s'agit du type de table par dfaut qui constitue le sujet principal de ce chapitre. Les prrogatives de l'administrateur sur la distribution des lignes d'une table clusterise sont trs limites. Les lignes peuvent tre stockes dans n'importe quel ordre selon l'activit de la table.

Oracle9i Database Administration I 11-3

Stocker des donnes utilisateur (suite) Table partitionne Une table partitionne permet de crer des applications volutives. Elle prsente les caractristiques suivantes : Une table partitionne contient une ou plusieurs partitions qui stockent chacune les lignes partitionnes l'aide du partitionnement par plage, par hachage, composite ou par liste. Chaque partition d'une table partitionne constitue un segment qui peut se trouver dans un tablespace diffrent. Les partitions sont particulirement utiles pour les tables volumineuses qui peuvent tre interroges ou manipules par plusieurs processus simultanment. Des commandes spciales permettent de grer les partitions d'une table. Table organise en index Une table organise en index est semblable une table de "heaps" contenant un index de cl primaire sur une ou plusieurs de ses colonnes. Toutefois, au lieu de grer deux espaces de stockage distincts pour la table et un index B-Tree, une table organise en index ne gre qu'un seul B-Tree contenant la cl primaire de la table et d'autres valeurs de colonnes. Ce type de table peut prsenter un segment de dbordement (overflow segment) en raison de la valeur du paramtre PCTTHRESHOLD et du rsultat de lignes plus longues ncessitant la zone de dbordement. Les tables organises en index offrent un accs sur cl rapide aux donnes des tables dans les interrogations impliquant des recherches de correspondance exacte ou par intervalle. En outre, les besoins en stockage sont moindres dans la mesure o les colonnes de cl ne sont pas dupliques dans la table, ni dans l'index. Les colonnes non cl restantes sont stockes dans l'index moins que la taille de l'entre d'index ne devienne trop importante ; auquel cas, le serveur Oracle fournit une clause OVERFLOW qui permet de rsoudre le problme.

Oracle9i Database Administration I 11-4

Stocker des donnes utilisateur (suite) Table clusterise Une table clusterise permet galement de stocker des donnes. Un cluster est constitu d'une table ou d'un ensemble de tables partageant les mmes blocs de donnes, regroupes parce qu'elles partagent des colonnes et qu'elles sont souvent utilises conjointement. Un cluster prsente les caractristiques suivantes : Il dispose d'une cl de cluster qui permet d'identifier les lignes devant tre stockes ensemble. La cl de cluster peut tre constitue d'une ou de plusieurs colonnes. Les tables d'un cluster contiennent des colonnes correspondant la cl de cluster. La cration de cluster est un mcanisme transparent pour les applications qui utilisent les tables. Les donnes d'une table clusterise peuvent tre manipules de la mme manire que celles d'une table normale. La mise jour de l'une des colonnes de la cl de cluster peut provoquer la migration de la ligne. La cl de cluster est indpendante de la cl primaire. Les tables d'un cluster peuvent prsenter une cl primaire qui peut correspondre la cl de cluster ou un ensemble diffrent de colonnes. Les clusters sont gnralement utiliss pour amliorer les performances. L'accs alatoire aux donnes de cluster peut tre plus rapide, mais le balayage complet (full table scan) des tables clusterises est gnralement plus long. Les clusters rgularisent nouveau le stockage physique des tables sans affecter la structure logique.

Oracle9i Database Administration I 11-5

Types de donnes internes Oracle


Type de donnes Dfini par l'utilisateur Scalaire CHAR(N), NCHAR(N) VARCHAR2(N), NVARCHAR2(N) NUMBER(P,S) DATE TIMESTAMP RAW(N) BLOB, CLOB, NCLOB, BFILE LONG, LONG RAW ROWID, UROWID Interne Ensemble VARRAY TABLE Relation REF

11-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

Types de donnes internes Oracle Le serveur Oracle fournit plusieurs types de donnes internes pour stocker les donnes scalaires, les ensembles et les relations. Type de donnes Scalaire Donnes alphanumriques : ces donnes sont stockes sous forme de chanes de longueur fixe ou de longueur variable dans la base de donnes. Les types de donnes alphanumriques de longueur fixe, tels que CHAR et NCHAR, sont stocks avec des espaces de remplissage. NCHAR est un type de donnes de prise en charge de la globalisation qui permet de stocker des jeux de caractres de longueur fixe ou de longueur variable. La taille maximale est dtermine par le nombre d'octets ncessaires au stockage d'un caractre, avec une limite maximale de 2 000 octets par ligne. La valeur par dfaut est de 1 caractre ou 1 octet, selon le jeu de caractres. Les types de donnes alphanumriques de longueur variable utilisent uniquement le nombre d'octets ncessaires au stockage de la valeur de colonne relle. Leur taille peut varier pour chaque ligne et atteindre 4 000 octets. Les donnes de types VARCHAR2 et NVARCHAR2, par exemple, sont des donnes alphanumriques de longueur variable.

Oracle9i Database Administration I 11-6

Types de donnes internes Oracle (suite) Type de donnes Scalaire (suite) Type de donnes numrique : dans les bases de donnes Oracle, les nombres sont toujours stocks sous forme de donnes de longueur variable. Ils peuvent comporter jusqu' 38 chiffres significatifs. Les donnes numriques ncessitent : un octet pour l'exposant, un octet tous les deux chiffres significatifs dans la mantisse, un octet pour les nombres ngatifs si le nombre de chiffres significatifs est infrieur 38 octets. Type de donnes DATE : le serveur Oracle enregistre les dates dans des champs de longueur fixe de sept octets. Une date Oracle contient toujours l'heure. Type de donnes TIMESTAMP : ce type de donnes stocke la date et l'heure ainsi que la partie dcimale des secondes jusqu' neuf positions dcimales. Les paramtres TIMESTAMP WITH TIME ZONE et TIMESTAMP WITH LOCAL TIME ZONE peuvent utiliser des fuseaux horaires pour factoriser des lments tels que l'heure d't. Contrairement TIMESTAMP WITH TIME ZONE, les paramtres TIMESTAMP et TIMESTAMP WITH LOCAL TIME ZONE peuvent tre utiliss dans des cls primaires. Type de donnes RAW : ce type de donnes permet de stocker de petites quantits de donnes binaires. Le serveur Oracle ne convertit pas le jeu de caractres lorsque des donnes de type RAW sont transmises entre les machines d'un rseau ou lorsqu'elles sont transfres d'une base de donnes vers une autre l'aide d'utilitaires Oracle. Le nombre d'octets ncessaires au stockage de la valeur de colonne relle peut varier pour chaque ligne et atteindre 2 000 octets. Types de donnes LONG, LONG RAW et LOB (Large Object) Oracle fournit six types de donnes pour stocker les objets LOB : CLOB (Character Large Object) et LONG pour les donnes alphanumriques volumineuses de longueur fixe, NCLOB pour les jeux de caractres nationaux volumineux de longueur fixe,

BLOB et LONG RAW pour le stockage des donnes non structures,

BFILE pour le stockage des donnes non structures dans des fichiers du systme d'exploitation. Les types de donnes LONG et LONG RAW taient utiliss auparavant pour les donnes non structures, telles que les images binaires, les documents ou les informations gographiques, et sont principalement fournis des fins de compatibilit descendante. Ces types de donnes sont remplacs par les types de donnes LOB. Les donnes de type LOB sont diffrentes des donnes de type LONG et LONG RAW et ne sont pas interchangeables. Elles ne prennent pas en charge l'interface API LONG (Application Programming Interface), et vice versa.

Oracle9i Database Administration I 11-7

Types de donnes internes Oracle (suite) Types de donnes LONG, LONG RAW et LOB (suite) La comparaison entre la fonctionnalit LOB et les anciens types de donnes (LONG et LONG RAW) peut s'avrer utile. Ci-dessous, LONG fait rfrence LONG et LONG RAW, et LOB toutes les donnes de type LOB.

LONG, LONG RAW Une seule colonne par table 2 gigaoctets maximum Donnes stockes dans le segment Aucune prise en charge du type d'objet Accs squentiel au morceau

LOB Plusieurs colonnes par table 4 gigaoctets maximum Donnes stockes dans le segment ou en dehors Prise en charge des types d'objet Accs alatoire aux morceaux

Les types de donnes LOB stockent un pointeur dans la table et les donnes dans un autre emplacement, sauf si la taille des donnes de type VARCHAR2 est infrieure la taille maximale de 4 000 octets. Les types de donnes LONG stockent toutes les donnes dans le segment. En outre, les types de donnes LOB permettent de stocker les donnes dans un segment et un tablespace distincts ou dans un fichier hte. Contrairement aux donnes de type LONG, les donnes LOB prennent en charge les attributs des types d'objet (sauf les NCLOB) et la rplication. Les donnes de type LONG sont stockes sous forme de morceaux de lignes chans, un morceau de ligne d'un bloc pointant vers le morceau de ligne suivant stock dans un autre bloc. En consquence, l'accs aux donnes doit s'effectuer squentiellement. En revanche, les donnes LOB offrent un accs systmatique et alatoire aux segments de donnes via une interface de type fichier. Types de donnes ROWID et UROWID Le type de donnes ROWID peut tre interrog en mme temps que les autres colonnes d'une table. Il prsente les caractristiques suivantes :

Il identifie de manire unique chaque ligne de la base de donnes. Il n'est pas enregistr explicitement sous la forme d'une valeur de colonne. Il permet de localiser une ligne, bien qu'il ne fournisse pas directement son adresse physique. Il constitue la mthode la plus rapide pour accder une ligne d'une table.

Il est stock dans un index dfinissant des lignes ayant des valeurs de cl spcifiques. Dans la version 8.1, le serveur Oracle fournit un type de donnes unique nomm ROWID universel ou UROWID, qui prend en charge les ROWID de tables trangres (non Oracle) et peut stocker tous les types de ROWID. Par exemple, un type de donnes UROWID est ncessaire pour le stockage d'un ROWID pour des lignes d'une table organise en index. Pour permettre l'utilisation du type UROWID, le paramtre COMPATIBLE doit possder la valeur Oracle8.1 ou une valeur suprieure.

Oracle9i Database Administration I 11-8

Types de donnes internes Oracle (suite) Type de donnes Ensemble Deux types de donnes Ensemble permettent de stocker les donnes rptitives d'une ligne dtermine dans une table. Dans les versions antrieures Oracle8i, l'option Objects tait ncessaire pour dfinir et utiliser les ensembles. Ces deux types de donnes sont dcrits brivement ci-dessous. Tableaux de taille variable (VARRAY) : ces tableaux permettent de stocker des listes contenant un petit nombre d'lments, tels que des numros de tlphone de clients. Les tableaux VARRAY prsentent les caractristiques suivantes : Un tableau contient un ensemble ordonn d'lments de donnes. Les lments d'un tableau prsentent tous le mme type de donnes. Chaque lment comporte un index (numro indiquant sa position dans le tableau). Le nombre d'lments d'un tableau dtermine la taille de ce dernier. Le serveur Oracle permet d'utiliser des tableaux de taille variable (d'o le nom VARRAY), mais la taille maximale du tableau doit tre dfinie lors de sa dclaration. Tables imbriques : ces tables permettent de dfinir une table sous forme de colonne dans une table. Elles peuvent tre utilises pour stocker des ensembles pouvant contenir un grand nombre d'enregistrements, tels que le nombre d'articles d'une commande. Gnralement, les tables imbriques prsentent les caractristiques suivantes : Une table imbrique est un ensemble non ordonn d'enregistrements ou de lignes. Les lignes d'une table imbrique prsentent la mme structure. Les lignes d'une table imbrique ne sont pas stockes dans la table parent, mais sont dsignes par un pointeur dans la ligne correspondante de la table parent. Les caractristiques de stockage d'une table imbrique peuvent tre dfinies par l'administrateur de base de donnes. Il n'existe pas de taille maximale prdfinie pour une table imbrique. Type de donnes Relation (REF) Les types de donnes Relation servent de pointeurs dans la base de donnes. Leur utilisation fait appel l'option Objects. Par exemple, chaque lment ordonn peut pointer sur une ligne de la table PRODUCTS ou y faire rfrence sans avoir stocker le code du produit. Type de donnes Oracle dfini par l'utilisateur Le serveur Oracle permet l'utilisateur de dfinir des types de donnes abstraits et de les utiliser dans l'application.

Oracle9i Database Administration I 11-9

Format de ROWID

ROWID tendu
OOOOOO Numro d'objet de donnes FFF Numro de fichier relatif BBBBBB Numro de bloc RRR Numro de ligne

ROWID restreint
BBBBBBBB Numro de bloc

RRRR Numro de ligne

FFFF Numro de fichier

11-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Format de ROWID Un ROWID tendu ncessite 10 octets de stockage sur disque et s'affiche sur 18 caractres. Il est constitu des lments suivants : Numro d'objet de donnes : numro unique dans la base de donnes, affect chaque objet de donnes cr, tel qu'une table ou un index. Numro de fichier relatif : numro unique affect chaque fichier d'un tablespace. Numro de bloc : numro indiquant l'emplacement, dans le fichier, du bloc contenant la ligne. Numro de ligne : numro identifiant la position du pointeur des lignes dans l'entte de bloc. En interne, le numro d'objet de donnes ncessite 32 bits, le numro de fichier relatif, 10 bits, le numro de bloc, 22 bits, et le numro de ligne, 16 bits, soit un total de 80 bits ou 10 octets. Un ROWID tendu s'affiche l'aide d'un schma d'encodage en base 64 qui utilise six positions pour le numro d'objet, trois positions pour le numro de fichier relatif, six positions pour le numro de bloc et trois positions pour le numro de ligne. Ce schma utilise les caractres AZ, a-z, 0-9, et /, soit un total de 64 caractres, comme dans l'exemple ci-dessous :

Oracle9i Database Administration I 11-10

Format de ROWID (suite) SQL> SELECT department_id, rowid FROM hr.departments; DEPARTMENT_ID ROWID ------------- -----------------10 AAABQMAAFAAAAA6AAA 20 AAABQMAAFAAAAA6AAB 30 AAABQMAAFAAAAA6AAC 40 AAABQMAAFAAAAA6AAD 50 AAABQMAAFAAAAA6AAE 60 AAABQMAAFAAAAA6AAF

Dans cet exemple : AAABQM correspond au numro d'objet de donnes. AAF correspond au numro de fichier relatif. AAAAA6 correspond au numro de bloc. AAA correspond au numro de ligne du service dont l'ID=10. ROWID restreint dans Oracle7 et les versions antrieures Les versions de la base de donnes antrieures Oracle8 utilisaient le format ROWID restreint. Un ROWID restreint utilisait seulement six octets en interne et ne contenait pas de numro d'objet de donnes. Ce format tait acceptable dans Oracle7 ou les versions antrieures, car les numros de fichier taient uniques au sein d'une base de donnes. Ainsi, les versions prcdentes taient limites 1 022 fichiers de donnes, ce qui correspond la limite actuelle d'un tablespace. Bien qu'Oracle8 ait supprim cette limitation en utilisant des numros de fichier relatifs des tablespaces, un ROWID restreint est toujours utilis dans des objets, tels que les index non partitionns ou les tables non partitionnes, o toutes les entres d'index font rfrence aux lignes d'un mme segment. Rechercher une ligne l'aide d'un ROWID Etant donn qu'un segment ne peut rsider que dans un seul tablespace, le serveur Oracle peut identifier le tablespace contenant la ligne en utilisant le numro d'objet de donnes. Le numro de fichier relatif figurant dans le tablespace identifie le fichier, le numro de bloc identifie le bloc contenant la ligne, et le numro de ligne identifie la ligne dans le rpertoire des lignes. L'entre du rpertoire des lignes peut permettre de rechercher le dbut de la ligne. Ainsi, un ROWID permet de localiser n'importe quelle ligne dans une base de donnes.

Oracle9i Database Administration I 11-11

Structure d'une ligne

En-tte de ligne Bloc de base de donnes Longueur de colonne Valeur de colonne

11-12

Copyright Oracle Corporation, 2001. Tous droits rservs.

Structure d'une ligne Les donnes des lignes sont stockes dans des blocs de base de donnes sous forme d'enregistrements de longueur variable. Les colonnes d'une ligne sont gnralement enregistres dans l'ordre dans lequel elles sont dfinies et les colonnes de fin NULL ne sont pas enregistres. Remarque : La longueur des colonnes NULL qui ne sont pas des colonnes de fin doit tre de 1 octet. Chaque ligne d'une table possde : un en-tte de ligne : cet en-tte permet de stocker le nombre de colonnes de la ligne, les informations de chanage et le statut de verrouillage de la ligne, des donnes de ligne : le serveur Oracle stocke la longueur et la valeur de chaque colonne (un octet est ncessaire pour enregistrer la longueur de colonne si celle-ci ne dpasse pas 250 octets. Une colonne plus longue ncessite 3 octets. La valeur de la colonne est stocke immdiatement aprs les octets de longueur de colonne). Aucun espace n'est ncessaire entre les lignes adjacentes. Chaque ligne du bloc est associe un pointeur dans le rpertoire des lignes. Le pointeur pointe sur le dbut de la ligne.

Oracle9i Database Administration I 11-12

Crer une table


CREATE TABLE hr.employees( employee_id NUMBER(6), first_name VARCHAR2(20), last_name VARCHAR2(25), email VARCHAR2(25), phone_number VARCHAR2(20), hire_date DATE DEFAULT SYSDATE, job_id VARCHAR2(10), salary NUMBER(8,2), commission_pct NUMBER (2,2), manager_id NUMBER(6), department_id NUMBER(4) );

11-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer une table La commande CREATE TABLE permet de crer des tables relationnelles ou objet. Table relationnelle : structure de base comportant les donnes utilisateur. Table objet : table qui utilise un type d'objet pour une dfinition de colonne. Ce type de table est dfini de faon explicite afin de contenir une instance d'objet d'un type particulier. Remarque : Les tables objet ne sont pas dcrites dans ce chapitre. Rgles de cration d'une table : Placez les tables dans des tablespaces distincts. Utilisez des tables gres localement pour viter toute fragmentation. Remarque : Pour plus d'informations sur les clauses et paramtres que vous pouvez dfinir l'aide de la commande CREATE TABLE, voir le document Oracle9i SQL Reference. Vous devez disposer du privilge systme CREATE TABLE pour crer une table relationnelle dans votre propre schma et du privilge systme CREATE ANY TABLE pour en crer une dans le schma d'un autre utilisateur. Remarque : Pour plus d'informations sur l'octroi de privilges, voir le chapitre "Grer les privilges".

Oracle9i Database Administration I 11-13

Crer une table (suite) L'exemple ci-dessous permet de crer une table DEPARTMENTS dans un tablespace gr au moyen du dictionnaire de donnes. SQL> CREATE TABLE hr.departments( 2 department_id NUMBER(4), 3 department_name VARCHAR2(30), 4 manager_id NUMBER(6), 5 location_id NUMBER(4)) 6 STORAGE(INITIAL 200K NEXT 200K 7 PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS 5) 8 TABLESPACE data; La syntaxe ci-dessus est un sous-ensemble de la clause CREATE TABLE. Clause STORAGE La clause STORAGE prcise les caractristiques de stockage de la table. L'espace affect au premier extent (ensemble de blocs contigus) est de 200 Ko. Lorsqu'un deuxime extent est requis, il est dfini par la valeur NEXT et reoit 200 Ko d'espace. Si un troisime extent est ncessaire, il reoit galement 200 Ko d'espace, parce que le paramtre PCTINCREASE possde la valeur 0. Vous pouvez utiliser de 1 5 extents. MINEXTENTS : Nombre minimum d'extents affecter. MAXEXTENTS : Nombre maximum d'extents affecter. Si la valeur de MINEXTENTS est suprieure 1 et si le tablespace contient plusieurs fichiers de donnes, les extents seront rpartis dans les diffrents fichiers de donnes. PCTINCREASE : Pourcentage d'augmentation de la taille de l'extent aprs NEXT et par la suite.

Oracle9i Database Administration I 11-14

Crer une table (suite) Vous pouvez galement indiquer des paramtres d'utilisation de l'espace de bloc dans la clause physical_attributes_clause de la table. PCTFREE : Indique le pourcentage d'espace prsent dans chaque bloc de donnes de la table. Sa valeur doit tre comprise entre 0 et 99. Une valeur nulle signifie que l'ensemble du bloc peut tre rempli par insertion de nouvelles lignes. La valeur par dfaut est 10, cela signifie que 10 % de chaque bloc est rserv aux mises jour de lignes existantes et que vous pouvez insrer de nouvelles lignes jusqu' ce que chaque bloc soit rempli 90 % maximum. PCTUSED : Indique le pourcentage minimum d'espace occup, mis jour pour chaque bloc de donnes de la table. Un bloc peut recevoir des lignes lorsque son espace occup est infrieur la valeur de PCTUSED. Ce paramtre correspond un entier compris entre 0 et 99 et prend par dfaut la valeur 40. La combinaison des paramtres PCTFREE et PCTUSED dtermine si de nouvelles lignes seront insres dans des blocs de donnes existants ou dans de nouveaux blocs. La somme de leurs valeurs doit tre infrieure ou gale 100. Ces paramtres permettent d'utiliser plus efficacement l'espace contenu dans une table. Remarque : Les paramtres PCTUSED, FREELISTS et FREELIST GROUPS sont invalids par la fonction de gestion automatique de l'espace de segment d'Oracle9i. Pour plus d'informations sur cette fonction, voir le chapitre "Structure de stockage et relations". INITRANS : Indique le nombre initial d'entres de transactions affectes chaque bloc de donnes allou la table. Ce paramtre a une valeur comprise entre 1 et 255 et prend par dfaut la valeur 1, qu'il conserve gnralement. Il garantit qu'un nombre minimum de transactions simultanes peut mettre jour le bloc. MAXTRANS : Indique le nombre maximum de transactions simultanes pouvant mettre jour un bloc de donnes affect la table. Cette limite ne s'applique pas aux interrogations. Ce paramtre a une valeur comprise entre 1 et 255 et sa valeur par dfaut dpend de la taille du bloc de donnes. Clause TABLESPACE La clause TABLESPACE dsigne le tablespace dans lequel la table est cre. La table prsente en exemple se trouve dans le tablespace data. Si vous omettez la clause TABLESPACE, Oracle cre l'objet dans le tablespace par dfaut du propritaire du schma contenant la table. Remarque : Pour plus d'informations sur les tablespaces, voir le chapitre "Grer les tablespaces".

Oracle9i Database Administration I 11-15

Crer une table Utiliser Oracle Enterprise Manager pour crer une table A partir de la console OEM, procdez comme suit : Remarque : OEM offre de nombreuses options de cration de table. 1. Slectionnez Databases > Schema > Table. 2. Slectionnez Create dans le menu accessible par le bouton droit de la souris. 3. Entrez les informations relatives la table, telles que le nom, le tablespace, le propritaire, les colonnes, les types de donnes et les tailles. 4. Cliquez sur Create.

Crer une table l'aide de l'assistant : 1. Slectionnez Databases > Schema > Table. 2. Slectionnez Object > Create Using Wizard. 3. Entrez les informations relatives la table, telles que le nom, le tablespace, le propritaire, les colonnes, les types de donnes et les tailles. 4. Cliquez sur Finish.

Oracle9i Database Administration I 11-16

Rgles de cration d'une table

Placez les tables dans des tablespaces distincts. Utilisez des tables gres localement pour viter toute fragmentation. Utilisez un nombre limit de tailles d'extent standard pour les tables afin de rduire la fragmentation des tablespaces.

11-17

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rgles de cration d'une table Placez les tables dans des tablespaces distincts qui ne contiennent pas de segments d'annulation, de segments temporaires ni d'index. Placez les tables dans des tablespaces grs localement pour viter la fragmentation.

Oracle9i Database Administration I 11-17

Crer des tables temporaires


La clause GLOBAL TEMPORARY permet de crer une table temporaire :
CREATE GLOBAL TEMPORARY TABLE hr.employees_temp AS SELECT * FROM hr.employees;

Ces tables conservent les donnes jusqu' la fin d'une transaction ou d'une session. Aucun verrou LMD n'est plac sur les donnes de ces tables. Vous pouvez crer des index, des vues et des dclencheurs dans ces tables.
11-18 Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer des tables temporaires Vous pouvez crer des tables temporaires contenant les donnes prives la session qui n'existent que le temps d'une transaction ou d'une session. La commande CREATE GLOBAL TEMPORARY TABLE permet de crer une table temporaire spcifique d'une transaction ou d'une session. Les donnes d'une table temporaire de transaction sont conserves jusqu' la fin de la transaction et celles d'une table temporaire de session, jusqu' la fin de la session. Les donnes d'une session sont prives. Chaque session ne peut afficher et modifier que ses propres donnes. Aucun verrou LMD n'est plac sur les donnes d'une table temporaire. Les clauses suivantes contrlent la dure de stockage des lignes : ON COMMIT DELETE ROWS : indique que les lignes sont uniquement visibles dans la transaction, ON COMMIT PRESERVE ROWS : indique que les lignes sont visibles pour toute la session. Vous pouvez crer des index, des vues et des dclencheurs (triggers) dans les tables temporaires et utiliser les utilitaires Export et Import pour exporter et importer la dfinition d'une table temporaire. Toutefois, aucune donne n'est exporte, mme si vous utilisez l'option ROWS. La dfinition d'une table temporaire est visible dans toutes les sessions.

Oracle9i Database Administration I 11-18

Dfinir PCTFREE et PCTUSED

Calcul de PCTFREE
(Longueur de ligne moyenne Longueur de ligne initiale) * 100 Longueur de ligne moyenne

Calcul de PCTUSED
Longueur de ligne moyenne * 100 100 - PCTFREE Espace de donnes disponible

11-19

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dfinir PCTFREE et PCTUSED Dfinir PCTFREE Plus la valeur du paramtre PCTFREE est leve, plus l'espace disponible pour les mises jour au sein d'un bloc de base de donnes est lev. Dfinissez une valeur plus leve si la table contient : des colonnes initialement NULL qui ont t mises jour l'aide d'une valeur, des colonnes dont la taille risque d'augmenter la suite d'une mise jour. En affectant une valeur plus leve au paramtre PCTFREE, vous rduisez la densit de bloc, c'est--dire que chaque bloc contiendra moins de lignes. La formule dfinie ci-dessus permet au bloc de disposer d'un espace suffisant permettant la taille de la ligne d'augmenter. Dfinir PCTUSED Dfinissez le paramtre PCTUSED pour permettre de renvoyer le bloc dans la liste de blocs libres (free list) uniquement lorsque l'espace est suffisant pour accepter une ligne moyenne. Si un bloc de la liste des blocs libres ne dispose pas d'un espace suffisant pour l'insertion d'une ligne, le serveur Oracle consulte le bloc suivant de la liste. Ce balayage linaire se poursuit jusqu' ce qu'un bloc disposant d'un espace suffisant soit trouv ou que la fin de la liste soit atteinte. La formule fournie permet de rduire le temps de balayage de la liste de blocs libres en augmentant la probabilit de trouver un bloc disposant de l'espace libre ncessaire. Remarque : La commande ANALYZE TABLE permet d'estimer la longueur de ligne moyenne.

Oracle9i Database Administration I 11-19

Migration et chanage de lignes

Avant mise jour

Aprs mise jour

Pointeur

11-20

Copyright Oracle Corporation, 2001. Tous droits rservs.

Migration et chanage de lignes Migration de lignes Si vous affectez au paramtre PCTFREE une valeur peu leve, le bloc risque de ne pas contenir l'espace suffisant pour permettre l'augmentation de la longueur de la ligne la suite d'une mise jour. Dans ce cas, le serveur Oracle transfre la totalit de la ligne vers un nouveau bloc et conserve le pointeur du bloc d'origine sur le nouvel emplacement. Cette opration est une migration de ligne. Lors de la migration d'une ligne, les performances des E/S sur la ligne sont rduites, car le serveur Oracle doit balayer deux blocs de donnes pour extraire les donnes. Chanage de lignes Un chanage de ligne se produit lorsqu'une ligne ne peut pas tenir dans un bloc. Cette situation peut se produire lorsque la ligne contient des colonnes de trs grande taille. Dans ce cas, le serveur Oracle divise la ligne en morceaux de ligne plus petits. Chaque morceau de ligne est stock dans un bloc avec les pointeurs associs pour extraire et assembler la totalit de la ligne. Le chanage de lignes peut tre limit en dfinissant une plus grande taille de bloc ou en divisant, si possible, la table en plusieurs tables contenant moins de colonnes. Remarque : La migration et le chanage de lignes sont prsents en dtail dans le cours Oracle9i Tuning.

Oracle9i Database Administration I 11-20

Modifier les paramtres d'utilisation de blocs et de stockage


ALTER TABLE hr.employees PCTFREE 30 PCTUSED 50 STORAGE(NEXT 500K MINEXTENTS 2 MAXEXTENTS 100);

11-21

Copyright Oracle Corporation, 2001. Tous droits rservs.

Modifier les paramtres d'utilisation de blocs et de stockage Vous pouvez modifier certains paramtres de stockage et tous les paramtres d'utilisation de l'espace de bloc l'aide de la commande ALTER TABLE. Syntaxe : ALTER TABLE [schema.]table {[ storage-clause ] [ INITRANS integer ] [ MAXTRANS integer]} Impact de la modification des paramtres de stockage Les paramtres que vous pouvez modifier et l'effet de leur modification sont les suivants : NEXT : lorsque le serveur Oracle alloue un autre extent la table, la nouvelle valeur est utilise. La taille des extents suivants augmente de la valeur dfinie par le paramtre PCTINCREASE.

Oracle9i Database Administration I 11-21

Modifier les paramtres d'utilisation de blocs et de stockage (suite) Impact de la modification des paramtres de stockage (suite) PCTINCREASE : toute modification de ce paramtre est enregistre dans le dictionnaire de donnes. La nouvelle valeur est utilise pour recalculer la valeur du paramtre NEXT lorsque l'extent suivant est allou par le serveur Oracle. Prenons l'exemple d'une table deux extents qui prsente les paramtres NEXT=10K et PCTINCREASE=0. Si vous affectez la valeur 100 au paramtre PCTINCREASE, le troisime extent allou sera de 10 Ko, le quatrime de 20 Ko, le cinquime de 40 Ko, etc. MINEXTENTS : vous pouvez affecter ce paramtre une valeur infrieure ou gale au nombre actuel d'extents dans la table. La nouvelle valeur ne prend pas effet immdiatement, mais elle est utilise si la table est vide. MAXEXTENTS : vous pouvez affecter ce paramtre une valeur gale ou suprieure au nombre actuel d'extents dans la table. Vous pouvez galement lui donner la valeur UNLIMITED. Restrictions Vous ne pouvez pas modifier la valeur du paramtre INITIAL d'une table. La valeur du paramtre NEXT est arrondie une valeur multiple de la taille du bloc, gale ou suprieure la valeur dfinie.

Oracle9i Database Administration I 11-22

Utiliser Oracle Enterprise Manager pour modifier les paramtres de stockage Utiliser Oracle Enterprise Manager pour modifier les paramtres de stockage A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Schema > Table. 2. Dveloppez l'arborescence du schma. 3. Slectionnez la table. 4. Modifiez les valeurs de la page Storage. Notez que cette mthode ne permet pas de modifier le nombre minimum d'extents, ni le nombre initial de transactions. 5. Cliquez sur Apply.

Oracle9i Database Administration I 11-23

Allouer manuellement des extents

ALTER TABLE hr.employees ALLOCATE EXTENT(SIZE 500K DATAFILE /DISK3/DATA01.DBF);

11-24

Copyright Oracle Corporation, 2001. Tous droits rservs.

Allouer manuellement des extents Vous pouvez tre amen allouer des extents manuellement : pour contrler la distribution des extents d'une table dans les fichiers, avant de charger des donnes en masse pour empcher l'extension dynamique de tables. Syntaxe Utilisez la commande suivante pour allouer un extent une table : ALTER TABLE [schema.]table ALLOCATE EXTENT [ ([SIZE integer [K|M]] [ DATAFILE filename ]) ] Si SIZE est omis, le serveur Oracle utilise la taille d'extent NEXT_EXTENT de DBA_TABLES pour allouer l'extent. Le fichier dfini dans la clause DATAFILE doit appartenir au tablespace contenant la table. Sinon, l'instruction gnre une erreur. Si vous n'utilisez pas la clause DATAFILE, le serveur Oracle alloue l'extent l'un des fichiers du tablespace contenant la table. Remarque : La valeur NEXT_EXTENT de DBA_TABLES n'est pas affecte par l'allocation manuelle d'extents. Le serveur Oracle ne recalcule pas la taille de l'extent suivant lorsque cette commande est excute.

Oracle9i Database Administration I 11-24

Rorganisation d'une table non partitionne


ALTER TABLE hr.employees MOVE TABLESPACE data1;

La rorganisation d'une table non partitionne conserve sa structure, mais pas son contenu. Elle permet de dplacer une table vers un autre tablespace ou de rorganiser des extents.

11-25

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rorganisation d'une table non partitionne Vous pouvez dplacer une table non partitionne sans excuter l'utilitaire Export ou Import. En outre, vous pouvez modifier les paramtres de stockage. Cette opration est particulirement utile lorsque vous : transfrez une table d'un tablespace un autre, rorganisez la table pour supprimer la migration de lignes. Aprs avoir transfr une table, vous devez reconstruire les index pour viter l'erreur suivante : SQL> SELECT * FROM employees WHERE id=23; select * from employees where id=23 * ERROR at line 1: ORA-01502: index HR.EMPLOYEES_ID_PK' or partition of such index is in unusable state

Oracle9i Database Administration I 11-25

Vider une table

TRUNCATE TABLE hr.employees;

Lorsque vous videz une table, toutes ses lignes sont supprimes et l'espace utilis est libr. Les index correspondants sont galement vids.

11-26

Copyright Oracle Corporation, 2001. Tous droits rservs.

Vider une table Syntaxe : TRUNCATE TABLE [schema.] table [{DROP | REUSE} STORAGE] Cette commande a les effets suivants : Elle supprime toutes les lignes de la table. Aucune donne d'annulation n'est gnre et la commande est implicitement valide (TRUNCATE TABLE est une commande LDD). Elle vide galement les index correspondants. Une table rfrence par une cl trangre ne peut pas tre vide. Les dclencheurs de suppression ne s'excutent pas.

Oracle9i Database Administration I 11-26

Supprimer une table

DROP TABLE hr.department CASCADE CONSTRAINTS;

11-27

Copyright Oracle Corporation, 2001. Tous droits rservs.

Supprimer une table Vous pouvez supprimer une table devenue inutile ou une table que vous souhaitez rorganiser. Syntaxe : Utilisez la commande suivante pour supprimer une table : DROP TABLE [schema.] table [CASCADE CONSTRAINTS] Lorsque vous supprimez une table, vous librez les extents qu'elle utilise. Si les extents sont contigus, vous pouvez les fusionner automatiquement ou manuellement plus tard. L'option CASCADE CONSTRAINTS est requise s'il s'agit de la table parent d'une relation de cl trangre. Remarque : Pour plus d'informations sur l'option CASCADE CONSTRAINTS, voir le chapitre "Grer l'intgrit des donnes".

Oracle9i Database Administration I 11-27

Supprimer une table Utiliser Oracle Enterprise Manager pour supprimer une table A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Schema > Table. 2. Dveloppez l'arborescence du dossier Schma contenant la table supprimer. 3. Dveloppez l'arborescence du schma. 4. Slectionnez la table. 5. Slectionnez Remove dans le menu accessible par le bouton droit de la souris. 6. Slectionnez Yes pour confirmer la suppression.

Oracle9i Database Administration I 11-28

Supprimer une colonne

Supprimer une colonne d'une table :


ALTER TABLE hr.employees DROP COLUMN comments CASCADE CONSTRAINTS CHECKPOINT 1000;

Cette opration supprime la longueur et les donnes de colonne de chaque ligne, librant ainsi de l'espace dans le bloc de donnes. La suppression d'une colonne dans une table volumineuse prend normment de temps.

11-29

Copyright Oracle Corporation, 2001. Tous droits rservs.

Supprimer une colonne Le serveur Oracle vous permet de supprimer des colonnes partir de lignes d'une table. Cette opration supprime toutes les colonnes non utilises et qui peuvent occuper un espace considrable, tout en vitant l'import ou l'export de donnes et la recration d'index et de contraintes. La suppression d'une colonne peut prendre un certain temps, car toutes les donnes de la colonne sont supprimes de la table. Dans les versions antrieures Oracle8i, il tait impossible de supprimer une colonne d'une table. Utiliser un point de reprise (checkpoint) lors de la suppression d'une colonne La suppression d'une colonne peut prendre un certain temps et ncessiter un espace d'annulation consquent. Lorsque cette opration s'effectue dans des tables volumineuses, vous pouvez dfinir des points de reprise afin de limiter l'espace d'annulation utilis. Dans l'exemple de la diapositive, un point de reprise survient toutes les 1 000 lignes. La table possde l'attribut INVALID tant que la procdure n'est pas termine. Si l'instance tombe avant la fin de l'opration, la table conserve l'attribut INVALID au dmarrage et l'opration doit se poursuivre. Utilisez l'instruction suivante pour reprendre une annulation interrompue : SQL> ALTER TABLE hr.employees DROP COLUMNS CONTINUE; Cette instruction gnre une erreur lorsque la table possde l'tat VALID.

Oracle9i Database Administration I 11-29

Supprimer une colonne Utiliser Oracle Enterprise Manager pour supprimer une colonne A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Schema > Table. 2. Dveloppez l'arborescence du dossier Schma contenant la table supprimer. 3. Dveloppez l'arborescence du schma. 4. Slectionnez la table. 5. Slectionnez Edit/View Details dans le menu accessible par le bouton droit de la souris. 6. Slectionnez la colonne supprimer. 7. Slectionnez Drop Column dans le menu accessible par le bouton droit de la souris.

Oracle9i Database Administration I 11-30

Utiliser l'option UNUSED

Marquez une colonne comme non utilise :


ALTER TABLE hr.employees SET UNUSED COLUMN comments CASCADE CONSTRAINTS;

Supprimez les colonnes non utilises :


ALTER TABLE hr.employees DROP UNUSED COLUMNS CHECKPOINT 1000;

Poursuivez la suppression de colonnes :


ALTER TABLE hr.employees DROP COLUMNS CONTINUE CHECKPOINT 1000;

11-31

Copyright Oracle Corporation, 2001. Tous droits rservs.

Utiliser l'option UNUSED Au lieu de supprimer une colonne d'une table, vous pouvez marquer la colonne pour indiquer qu'elle n'est pas utilise, puis la supprimer ultrieurement. Ce marquage a l'avantage d'tre relativement rapide dans la mesure o aucun espace disque n'est rcupr du fait qu'aucune donne n'est supprime. Vous pouvez supprimer ultrieurement les colonnes non utilises de la table lorsque l'activit du systme est faible. Les colonnes non utilises se comportent comme si elles n'appartenaient pas la table. Leurs donnes ne sont pas visibles pour les interrogations. En outre, les noms et les types de donnes de ces colonnes n'apparaissent pas lorsque la commande DESCRIBE est excute. L'utilisateur peut ajouter une colonne portant le nom d'une colonne non utilise. Vous pouvez, par exemple, marquer des colonnes comme non utilises pour supprimer deux colonnes d'une mme table. Lorsque vous supprimez deux colonnes d'une table, toutes les lignes de la table sont mises jour deux fois. En revanche, si vous marquez ces colonnes comme non utilises avant de les supprimer, les lignes ne sont mises jour qu'une seule fois.

Oracle9i Database Administration I 11-31

Utiliser l'option UNUSED (suite) Identifier les tables contenant des colonnes inutilises Pour identifier les tables contenant des colonnes non utilises, interrogez la vue DBA_UNUSED_COL_TABS. Elle affiche le nom des tables contenant des colonnes non utilises et le nombre de ces colonnes. L'interrogation suivante indique que la table EMPLOYEES appartenant l'utilisateur HR contient une colonne non utilise : SQL > SELECT * FROM dba_unused_col_tabs; OWNER TABLE_NAME COUNT ----- -------------- -----HR EMPLOYEES 1 Pour identifier les tables sur lesquelles une opration DROP COLUMN n'est pas termine, interrogez la vue DBA_PARTIAL_DROP_TABS. SQL > SELECT * FROM dba_partial_drop_tabs; OWNER TABLE_NAME COUNT ----- -------------- -----no rows selected Restrictions relatives la suppression d'une colonne Vous ne pouvez pas : supprimer une colonne d'une table de type objet, supprimer des colonnes dans des tables imbriques, supprimer toutes les colonnes d'une table, supprimer une colonne de cl de partitionnement, supprimer une colonne des tables appartenant SYS, supprimer d'une table organise en index une colonne qui constitue une cl primaire. Une colonne LONG ou LONG RAW non utilise mais non supprime empchera tout ajout de ce type de colonne la table (mme si l'affichage de la table ne prsente pas de colonne LONG ou LONG RAW).

Oracle9i Database Administration I 11-32

Obtenir des informations sur les tables

Interrogez les vues suivantes pour obtenir des informations sur les tables : DBA_TABLES DBA_OBJECTS

11-33

Copyright Oracle Corporation, 2001. Tous droits rservs.

Obtenir des informations sur les tables Vous pouvez obtenir des informations sur les tables partir du dictionnaire de donnes. Pour afficher le numro d'objet de donnes et l'emplacement de l'en-tte de toutes les tables appartenant l'utilisateur HR, lancez l'interrogation suivante : SQL > SELECT table_name FROM dba_tables WHERE owner = 'HR'; TABLE_NAME ------------------COUNTRIES DEPARTMENTS DEPARTMENTS_HIST EMPLOYEES EMPLOYEES_HIST JOBS JOB_HISTORY LOCATIONS REGIONS

Oracle9i Database Administration I 11-33

Obtenir des informations sur les tables (suite) SQL> SELECT object_name, created 2 FROM DBA_OBJECTS 3 WHERE object_name like 'EMPLOYEES' 4 AND owner = 'HR'; OBJECT_NAME CREATED ----------- --------EMPLOYEES 16-APR-01

Oracle9i Database Administration I 11-34

Synthse

Ce chapitre vous a permis d'apprendre : distinguer un ROWID tendu d'un ROWID restreint dcrire la structure d'une ligne crer des tables normales et des tables temporaires grer des structures de stockage au sein d'une table rorganiser, vider et supprimer une table supprimer une colonne dans une table

11-35

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 11-35

Prsentation de l'exercice 11

Dans cet exercice, vous allez : crer une table afficher les colonnes d'une table, les marquer comme non utilises et les supprimer allouer manuellement des extents vider une table obtenir des informations sur les tables

11-36

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 11 Remarque : Vous pouvez raliser cet exercice avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 11-36

Exercice 11 : grer les tables 1 En tant qu'utilisateur SYSTEM, crez les tables et les colonnes suivantes pour l'application de gestion des commandes que vous implmentez.

Table CUSTOMERS

Colonne CUST_CODE NAME REGION

Type et taille des donnes VARCHAR2(3) VARCHAR2(50) VARCHAR2(5) NUMBER(3) DATE VARCHAR2(3)

ORDERS

ORD_ID ORD_DATE CUST_CODE

Remarque : Si vous utilisez OEM, veillez affecter des valeurs NULL la colonne DATE_OF_DELY DATE DATE_OF_DELY. Vous savez que des lignes seront insres dans la table ORDERS sans valeur pour DATE_OF_DELY et que la table sera mise jour une fois la commande effectue. Utilisez le tablespace USERS et conservez, si vous le souhaitez, les paramtres de stockage par dfaut. 2 Excutez le script lab11_02.sql pour insrer des lignes dans les tables. 3 Identifiez les fichiers et les blocs qui contiennent les lignes destines la table ORDERS. Indice : Interrogez la vue DBA_EXTENTS du dictionnaire de donnes. 4 Vrifiez le nombre d'extents utiliss par la table ORDERS. 5 Allouez manuellement la table ORDERS un extent possdant la taille par dfaut, puis vrifiez que l'opration a abouti. 6 Crez une autre table, ORDERS2, partir de la table ORDERS, mais avec le paramtre MINEXTENTS=10. Vrifiez que la table a bien t cre avec le nombre d'extents indiqu. 7 Videz la table ORDERS sans librer d'espace, puis contrlez le nombre d'extents afin de vrifier qu'il n'ont pas t librs. 8 Videz la table ORDERS2 en librant de l'espace. Combien d'extents la table comporte-telle prsent ? 9 Excutez le script lab11_09.sql pour insrer des lignes dans la table ORDERS2. 10 Affichez les colonnes de la table ORDERS2. Marquez la colonne DATE_OF_DELY comme UNUSED. Affichez nouveau les colonnes de cette table. Que se passe-t-il ? 11 Supprimez la colonne non utilise DATE_OF_DELY. 12 Supprimez la table ORDERS2.

Oracle9i Database Administration I 11-37

Oracle9i Database Administration I 11-38

Grer les index

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : rpertorier les diffrents types d'index et prciser leur utilisation crer diffrents types d'index rorganiser les index mettre jour les index surveiller l'utilisation d'un index

12-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 12-2

Classification des index

Logique
Index bass sur une colonne ou concatns Index uniques ou non-uniques Index bass sur une fonction Index de domaine

Physique
Index partitionns ou non partitionns Index B-Tree Index normaux ou cl inverse Index bitmap

12-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Classification des index Un index est une arborescence qui permet d'accder directement une ligne dans une table. Les index peuvent tre classs en fonction de leur structure logique ou de leur mise en oeuvre physique. La classification logique regroupe les index en fonction de l'application utilise, alors que la classification physique dpend du mode de stockage des index. Index bass sur une colonne et index concatns La cl d'un index bas sur une colonne ne contient qu'une seule colonne (par exemple : un index sur la colonne des numros d'employ d'une table d'employs). Un index concatn, ou index compos, est cr sur plusieurs colonnes dans une table. Il n'est pas ncessaire que les colonnes d'un index concatn respectent l'ordre des colonnes de la table, ni qu'elles soient adjacentes (par exemple : un index sur les colonnes des services et des postes d'une table d'employs). Le nombre maximal de colonnes d'un index compos est 32. Toutefois, la taille totale de l'ensemble des colonnes ne doit pas dpasser environ la moiti (moins un espace utilis par Oracle) de l'espace disponible dans un bloc de donnes.

Oracle9i Database Administration I 12-3

Classification des index (suite) Index uniques et index non-uniques Les index peuvent tre uniques ou non-uniques. Un index unique garantit qu'il n'existe pas deux lignes portant les mmes valeurs dans une colonne de cl (ou des colonnes) d'une table. Cette restriction ne s'applique pas pour les index non-uniques. Index bass sur une fonction Un index bas sur une fonction est cr lorsque l'utilisateur fait appel des fonctions ou des expressions impliquant une ou plusieurs colonnes d'une table en cours d'indexation. Ce type d'index prcalcule la valeur de la fonction ou de l'expression et la stocke. Ces index peuvent tre crs sous forme d'index B-Tree ou bitmap. Index de domaine Un index de domaine est un index spcifique (spatial ou sur texte) une application que les sous-programmes fournis par un type d'index crent et grent et auquel ils accdent. Il est qualifi d'index de domaine, car il indexe des donnes dans des domaines spcifiques aux applications. Seuls les index de domaine bass sur une colonne sont pris en charge. Vous pouvez crer cet index sur des colonnes contenant des donnes de type Scalaire, Objet ou LOB (Large Object). Index partitionns et index non partitionns Les index partitionns sont utiliss avec des tables volumineuses pour stocker les entres d'un index dans plusieurs segments. Le partitionnement permet de rpartir un index sur un grand nombre de tablespaces, donc de rduire la contention lors des recherches dans l'index et de faciliter la gestion. Les index partitionns sont souvent utiliss avec les tables partitionnes pour amliorer l'volutivit et faciliter la gestion. Une partition d'index peut tre cre pour chaque partition de table. Ce chapitre explique comment crer et grer les index B-Tree et bitmap non partitionns.

Oracle9i Database Administration I 12-4

Index B-Tree
Entre d'index Racine

Branche

En-tte d'entre d'index

Feuille

Longueur de la colonne de cl Valeur de la colonne de cl ROWID

12-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Index B-Tree Bien que tous les index utilisent une structure B-Tree, l'expression index B-Tree est gnralement associe un index qui stocke une liste de ROWID pour chaque cl. Structure d'un index B-Tree Dans la partie suprieure de l'index figure la racine contenant les entres qui pointent sur le niveau suivant de l'index. Le niveau suivant correspond aux blocs branche qui pointent sur les blocs du niveau suivant de l'index. Au bas de l'arborescence se trouvent les noeuds feuille qui contiennent les entres d'index pointant sur les lignes de la table. Les blocs feuille comportent deux liens facilitant le balayage de l'index dans l'ordre croissant et dcroissant des valeurs de cl. Format des entres feuille d'un index Une entre d'index est constitue : d'un en-tte d'entre contenant le nombre de colonnes et les informations de verrouillage, de paires de valeurs correspondant la longueur de la colonne de cl, qui dfinissent la taille de la colonne dans la cl et la valeur de la colonne (le nombre de paires correspond au nombre maximal de colonnes dans l'index), de l'identificateur ROWID d'une ligne, qui contient les valeurs de cl.

Oracle9i Database Administration I 12-5

Index B-Tree (suite) Caractristiques des entres feuille d'un index Dans l'index B-Tree d'une table non partitionne : Les valeurs de cl se rptent si elles sont communes plusieurs lignes, sauf si l'index est compress. Il n'existe pas d'entre d'index pour les lignes dont toutes les colonnes de cl sont NULL. C'est pourquoi une clause WHERE indiquant la valeur NULL aboutira toujours un balayage complet de table (full table scan). L'identificateur ROWID restreint permet de pointer sur les lignes de la table, dans la mesure o toutes les lignes appartiennent au mme segment. Impact des oprations LMD sur un index Le serveur Oracle gre tous les index lorsque des oprations LMD sont excutes sur une table. L'impact d'une commande LMD sur un index est dcrit ci-aprs. Les oprations d'insertion provoquent l'insertion d'une entre d'index dans le bloc appropri. La suppression d'une ligne entrane uniquement la suppression logique de l'entre d'index. L'espace libr par la ligne supprime ne peut pas tre utilis pour de nouvelles entres tant que toutes les entres du bloc ne sont pas supprimes. Les mises jour des colonnes de cl provoquent une suppression logique et une insertion dans l'index. Le paramtre PCTFREE n'a aucun effet sur l'index, sauf lors de la cration. Une nouvelle entre peut tre ajoute un bloc d'index, mme si elle dispose d'un espace infrieur celui dfini par PCTFREE.

Oracle9i Database Administration I 12-6

Index bitmap
Table Fichier 3 Bloc 10 Bloc 11 Index Bloc 12

ROWID ROWID cl de dbut 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>

12-7

Copyright Oracle Corporation, 2001. Tous droits rservs.

Index bitmap Dans certains cas, les index bitmap offrent plus d'avantages que les index B-Tree : lorsqu'une table contient des millions de lignes et que les colonnes de cl ont une faible cardinalit, c'est--dire qu'elles contiennent peu de valeurs distinctes. Par exemple, il est prfrable d'utiliser des index bitmap plutt que des index B-Tree pour les colonnes relatives au sexe et la situation familiale dans une table contenant des enregistrements de passeport. lorsque les interrogations utilisent souvent une combinaison de plusieurs conditions WHERE impliquant l'oprateur OR. lorsque les colonnes de cl sont en lecture seule ou qu'elles ne sont pas souvent mises jour. Structure d'un index bitmap Un index bitmap prsente galement une structure B-Tree, mais le noeud feuille comporte un bitmap pour chaque valeur de cl la place d'une liste de ROWID. Chaque bit du bitmap correspond un ROWID possible. Si le bit est dfini, la ligne contenant le ROWID correspondant comporte la valeur de cl. Comme le montre le graphique, le noeud feuille d'un index bitmap contient les lments suivants : un en-tte d'entre, qui contient le nombre de colonnes et les informations de verrouillage, des valeurs de cl correspondant la longueur et aux paires de valeurs de chaque colonne de cl (dans l'exemple, la cl n'est constitue que d'une seule colonne et la valeur de cl de la premire entre est Blue),

Oracle9i Database Administration I 12-7


8

Index bitmap (suite) Structure d'un index bitmap (suite) le ROWID de dbut contenant, dans l'exemple, le numro de fichier 3, le numro de bloc 10 et le numro de ligne 0, le ROWID de fin contenant, dans l'exemple, le numro de bloc 12 et le numro de ligne 8, un segment bitmap constitu d'une chane de bits (le bit est dfini uniquement lorsque la ligne correspondante contient la valeur de cl. Le serveur Oracle utilise une technique de compression brevete pour stocker les segments bitmap). Le ROWID de dbut est celui de la premire ligne sur laquelle pointe le segment bitmap, c'est-dire que le premier bit du bitmap correspond au ROWID, le second bit du bitmap correspond la ligne suivante du bloc, et le ROWID de fin pointe sur la dernire ligne de la table couverte par le segment bitmap. Les index bitmap utilisent des ROWID restreints. Utiliser un index bitmap L'index B-Tree permet de localiser les noeuds feuille qui contiennent les segments bitmap d'une valeur donne de la cl. Le ROWID de dbut et les segments bitmap permettent de localiser les lignes contenant la valeur de cl. Lorsque la colonne de cl est modifie dans la table, les bitmaps doivent tre modifis. Cette opration verrouille les segments bitmap correspondants. Du fait que les verrous sont appliqus sur l'ensemble du segment bitmap, une ligne couverte par le bitmap ne peut pas tre mise jour par d'autres transactions tant que la premire transaction n'est pas termine.

Oracle9i Database Administration I 12-8

Comparer les index B-Tree et les index bitmap


Index B-Tree Adapts aux colonnes de forte cardinalit Les mises jour des cls consomment peu de ressources Inefficaces pour les interrogations utilisant des prdicats OR Utiles pour le traitement des transactions en ligne Index bitmap Adapts aux colonnes de faible cardinalit Les mises jour des colonnes de cl consomment de grandes quantits de ressources Efficaces pour les interrogations utilisant des prdicats OR Utiles pour le data warehouse

12-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Comparer les index B-Tree et les index bitmap Les index bitmap sont plus compacts que les index B-Tree lorsqu'ils sont utiliss avec des colonnes de faible cardinalit. Les mises jour des colonnes de cl d'un index bitmap consomment davantage de ressources, car les bitmaps utilisent le verrouillage de niveau segment bitmap, tandis que dans les index BTree, les verrous se trouvent sur les entres correspondant des lignes de la table. Les index bitmap permettent d'excuter des oprations boolennes. Le serveur Oracle peut utiliser deux segments bitmap pour excuter un boolen au niveau du bit et obtenir le bitmap correspondant. Ceci permet une utilisation efficace des bitmaps dans des interrogations qui utilisent le prdicat boolen. En rsum, les index B-Tree peuvent tre mieux adapts un environnement OLTP pour indexer les tables dynamiques, tandis que les index bitmap peuvent tre utiles pour les environnements de data warehouse dans lesquels des interrogations complexes sont utilises dans des tables statiques volumineuses.

Oracle9i Database Administration I 12-9

Crer des index B-Tree normaux

CREATE INDEX hr.employees_last_name_idx ON hr.employees(last_name) PCTFREE 30 STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 0 MAXEXTENTS 50) TABLESPACE indx;

12-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer des index B-Tree normaux Vous pouvez crer un index dans le compte de l'utilisateur propritaire de la table ou dans un compte diffrent, bien que celui-ci soit gnralement cr dans le mme compte que celui de la table. L'instruction de la diapositive permet de crer un index sur la table EMPLOYEES l'aide de la colonne LAST_NAME.

Oracle9i Database Administration I 12-10

Crer des index B-Tree normaux (suite) Explication de la syntaxe UNIQUE : dsigne un index unique (la valeur par dfaut est NONUNIQUE). Schema : correspond au propritaire de l'index/de la table. Index : correspond au nom de l'index. Table : correspond au nom de la table. Column : correspond au nom de la colonne. ASC/DESC : indique si l'index doit tre cr dans l'ordre croissant ou dcroissant. TABLESPACE : dfinit le tablespace de cration de l'index. PCTFREE : indique l'espace rserv dans chaque bloc (pourcentage de l'espace total moins l'en-tte de bloc) au moment de la cration pour l'insertion de nouvelles entres d'index. INITRANS : dfinit le nombre d'entres de transaction pralloues dans chaque bloc (la valeur par dfaut et minimale est 2). MAXTRANS : limite le nombre d'entres de transaction pouvant tre alloues chaque bloc (la valeur par dfaut est 255). STORAGE clause : identifie la clause de stockage qui dtermine le mode d'allocation des extents l'index. LOGGING (valeur par dfaut) : indique que la cration de l'index et les oprations suivantes sur l'index sont consignes dans le fichier de journalisation (fichier redo log). NOLOGGING : indique que la cration de l'index et certains types de chargement de donnes ne sont pas consigns dans le fichier de journalisation. NOSORT : indique que les lignes sont stockes dans la base de donnes en ordre croissant et que le serveur Oracle n'a pas besoin de les trier lors de la cration de l'index. Remarque : Si le paramtre MINIMUM EXTENT est dfini pour le tablespace, les tailles d'extent (ensemble des blocs contigus) de l'index sont arrondies au multiple suprieur. En cas d'absence de la clause [NO]LOGGING, l'attribut de journalisation de l'index correspond par dfaut celui du tablespace dans lequel il rside. PCTUSED ne peut pas tre dfini pour un index. Etant donn que les entres d'index doivent tre stockes dans l'ordre appropri, l'utilisateur ne peut pas contrler les insertions dans un bloc d'index. Si le mot-cl NOSORT est utilis lorsque les donnes ne sont pas tries selon la cl, l'excution de l'instruction gnre une erreur. Cette opration risque d'chouer si plusieurs oprations LMD ont t excutes sur la table. Dans la mesure du possible, le serveur Oracle utilise les index existants pour crer un nouvel index. C'est le cas lorsque la cl du nouvel index correspond la premire partie de la cl d'un index existant.

Oracle9i Database Administration I 12-11

Crer des index B-Tree normaux Utiliser Oracle Enterprise Manager pour crer un index A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > dossier Schema > Index. 2. Slectionnez Create dans le menu accessible par le bouton droit de la souris. 3. Entrez les informations appropries dans les pages General, Partitions, Storage et Options. 4. Cliquez sur Create.

Oracle9i Database Administration I 12-12

Rgles de cration des index

Equilibrez les besoins des interrogations et des LMD Placez les index dans un tablespace distinct Utilisez des tailles d'extent uniformes : multiples de cinq blocs ou MINIMUM EXTENT pour le tablespace Utilisez la clause NOLOGGING pour les index volumineux La valeur INITRANS doit gnralement tre plus leve pour les index que pour les tables correspondantes.

12-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rgles de cration des index Tenez compte des points suivants lors de la cration d'un index : Les index acclrent les interrogations et ralentissent les oprations LMD. Utilisez toujours un nombre limit d'index sur les tables volatiles. Placez les index dans un tablespace distinct qui ne contient ni segment d'annulation, ni segment temporaire, ni table. Vous pouvez amliorer considrablement les performances des index volumineux en dsactivant la fonction de journalisation. Utilisez la clause NOLOGGING pour crer des index volumineux. Les entres d'index tant plus petites que les lignes qu'elles indexent, les blocs d'index contiennent souvent plus d'entres. Par consquent, la valeur de INITRANS doit gnralement tre plus leve pour les index que pour les tables correspondantes. Index et paramtre PCTFREE Le paramtre PCTFREE d'un index fonctionne diffremment de celui d'une table. Ce paramtre n'est utilis que lors de la cration de l'index pour rserver de l'espace aux entres d'index insrer dans le mme bloc d'index. Les entres d'index ne sont pas mises jour. La mise jour d'une colonne de cl provoque la suppression logique de l'entre d'index et une insertion.

Oracle9i Database Administration I 12-13

Rgles de cration des index (suite) Index et paramtre PCTFREE (suite) Affectez une valeur faible au paramtre PCTFREE pour les index de colonne dont la valeur augmente de manire squentielle, comme dans le cas d'un numro de facture gnr par le systme. Dans ce type de situation, de nouvelles entres d'index sont toujours ajoutes aux entres existantes, et il est inutile d'insrer une nouvelle entre entre deux entres d'index existantes. Lorsque la colonne indexe d'une ligne insre peut prendre n'importe quelle valeur, c'est-dire que la nouvelle valeur peut tre comprise dans la plage de valeurs en cours, affectez une valeur plus leve au paramtre PCTFREE. Vous pouvez procder ainsi, par exemple, s'il s'agit d'un index sur la colonne des codes client d'une table de facturation. Dans ce cas, utilisez l'quation suivante pour dfinir la valeur de PCTFREE : Nombre maximal de lignes Nombre initial de lignes x 100 Nombre maximal de lignes La valeur maximale peut correspondre une priode spcifique, par exemple, une anne.

Oracle9i Database Administration I 12-14

Crer des index bitmap

CREATE BITMAP INDEX orders_region_id_idx ON orders(region_id) PCTFREE 30 STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 0 MAXEXTENTS 50) TABLESPACE indx;

12-15

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer des index bitmap Syntaxe Utilisez la commande suivante pour crer un index bitmap : CREATE BITMAP INDEX [schema.] index ON [schema.] table (column [ ASC | DESC ] [ , column [ASC | DESC ] ] ...) [ TABLESPACE tablespace ] [ PCTFREE integer ] [ INITRANS integer ] [ MAXTRANS integer ] [ storage-clause ] [ LOGGING| NOLOGGING ] [ NOSORT ] Notez qu'un index bitmap ne peut pas tre unique.

Oracle9i Database Administration I 12-15

Crer des index bitmap (suite) Paramtre CREATE_BITMAP_AREA_SIZE Le paramtre d'initialisation CREATE_BITMAP_AREA_SIZE dtermine l'espace utiliser pour stocker les segments bitmap en mmoire. La valeur par dfaut est de 8 Mo. Une valeur suprieure peut acclrer la cration de l'index. Si la cardinalit est peu leve, dfinissez une valeur faible. Par exemple, si la cardinalit est de 2, exprimez la valeur en kilo-octets plutt qu'en mgaoctets. En rgle gnrale, plus la cardinalit est leve, plus la quantit de mmoire ncessaire est importante pour obtenir des performances optimales.

Oracle9i Database Administration I 12-16

Crer des index bitmap Utiliser Oracle Enterprise Manager pour crer un index bitmap A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Schema > Index. 2. Slectionnez Create dans le menu accessible par le bouton droit de la souris. 3. Entrez les informations appropries dans les pages General, Partitions, Storage et Options. 4. Slectionnez Bitmap dans la page General. 5. Cliquez sur Create.

Oracle9i Database Administration I 12-17

Modifier les paramtres de stockage des index


ALTER INDEX employees_last_name_idx STORAGE(NEXT 400K MAXEXTENTS 100);

12-18

Copyright Oracle Corporation, 2001. Tous droits rservs.

Modifier les paramtres de stockage des index La commande ALTER INDEX permet de modifier certains paramtres de stockage et d'utilisation des blocs. Syntaxe ALTER INDEX [schema.]index [ storage-clause ] [ INITRANS integer ] [ MAXTRANS integer ] La modification des paramtres de stockage a les mmes implications sur un index que sur une table. Souvent, la modification vise augmenter la valeur du paramtre MAXEXTENTS de l'index. Vous pouvez modifier les paramtres d'utilisation des blocs pour garantir un niveau plus lev de simultanit d'accs aux donnes des blocs d'un index.

Oracle9i Database Administration I 12-18

Modifier les paramtres de stockage des index Utiliser Oracle Enterprise Manager pour modifier les paramtres de stockage d'un index A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Schema > Index. 2. Dveloppez l'arborescence du schma auquel appartient l'index. 3. Slectionnez l'index 4. Modifiez les valeurs de la page Storage. 5. Cliquez sur Apply.

Oracle9i Database Administration I 12-19

Allouer et librer de l'espace d'indexation

ALTER INDEX orders_region_id_idx ALLOCATE EXTENT (SIZE 200K DATAFILE /DISK6/indx01.dbf);

ALTER INDEX orders_id_idx DEALLOCATE UNUSED;

12-20

Copyright Oracle Corporation, 2001. Tous droits rservs.

Allouer et librer de l'espace d'indexation Allouer manuellement de l'espace un index Il peut tre ncessaire d'ajouter des extents un index en prvision d'un grand nombre d'insertions dans une table. L'ajout d'extents empche l'augmentation dynamique de la taille des index, qui affecte les performances. Librer manuellement de l'espace dans un index Utilisez la clause DEALLOCATE de la commande ALTER INDEX pour librer l'espace inutilis situ au-del du repre high-water mark d'un index. Syntaxe Utilisez la commande suivante pour allouer de l'espace un index ou en librer : ALTER INDEX [schema.]index {ALLOCATE EXTENT ([SIZE integer [K|M]] [ DATAFILE filename ]) | DEALLOCATE UNUSED [KEEP integer [ K|M ] ] } Les rgles d'allocation ou de libration manuelle d'espace l'aide de ces commandes sont identiques celles d'une table. Remarque : L'espace d'indexation est libr lorsque la table de l'index est vide. Lorsqu'une table est vide, son index l'est galement.

Oracle9i Database Administration I 12-20

Reconstruire un index

Utilisez la commande ALTER INDEX pour : dplacer un index vers un autre tablespace optimiser l'utilisation de l'espace en retirant les entres supprimes
ALTER INDEX orders_region_id_idx REBUILD TABLESPACE indx02;

12-21

Copyright Oracle Corporation, 2001. Tous droits rservs.

Reconstruire un index La reconstruction d'un index prsente les caractristiques suivantes : Un index est cr partir d'un index existant. Aucun tri n'est ncessaire lors de la reconstruction d'un index partir d'un index existant, ce qui permet d'amliorer les performances. L'ancien index est supprim aprs la cration du nouvel index. Lors de la reconstruction, un espace suffisant est ncessaire dans le tablespace de l'ancien index et dans celui du nouvel index. Le nouvel index ne contient pas d'entres supprimes, ce qui lui permet d'utiliser l'espace de manire optimale. Les interrogations peuvent utiliser l'index existant pendant la construction du nouvel index. Cas de reconstruction d'index Reconstruisez un index dans les cas suivants : L'index existant doit tre transfr vers un autre tablespace. Cette opration peut s'avrer ncessaire si l'index se trouve dans le mme tablespace que la table ou si des objets doivent tre redistribus sur les disques.

Oracle9i Database Administration I 12-21

Reconstruire un index (suite) Cas de reconstruction d'index (suite) L'index contient un grand nombre d'entres supprimes. En rgle gnrale, c'est le cas des index glissants, tels que ceux qui sont associs aux numros de commande d'une table dans laquelle les commandes excutes sont supprimes et les nouvelles commandes portant des numros plus levs sont ajoutes la table. Si d'anciennes commandes sont en attente, il peut exister des blocs feuille d'index ne contenant que quelques entres supprimes. Un index normal existant doit tre converti en index cl inverse. Ce cas de figure peut se prsenter lors de la migration d'applications depuis une version antrieure du serveur Oracle. La table de l'index a t transfre vers un autre tablespace l'aide de la commande ALTER TABLE ... MOVE TABLESPACE. Syntaxe Utilisez la commande suivante pour reconstruire un index : ALTER INDEX [schema.] index REBUILD [ TABLESPACE tablespace ] [ PCTFREE integer ] [ INITRANS integer ] [ MAXTRANS integer ] [ storage-clause ] [ LOGGING| NOLOGGING ] [ REVERSE | NOREVERSE ] La commande ALTER INDEX ... REBUILD ne permet pas de convertir un index bitmap en index B-Tree et inversement. Le mot-cl REVERSE ou NOREVERSE ne s'applique qu'aux index B-Tree.

Oracle9i Database Administration I 12-22

Reconstruire un index en ligne

La reconstruction des index peut s'effectuer avec un verrouillage de table minimal


ALTER INDEX orders_id_idx REBUILD ONLINE;

Certaines restrictions subsistent

12-23

Copyright Oracle Corporation, 2001. Tous droits rservs.

Reconstruire un index en ligne La cration ou la reconstruction d'un index peut ncessiter beaucoup de temps, notamment si la table est trs volumineuse. Dans les versions antrieures Oracle8i, cette opration ncessitait le verrouillage de la table et empchait l'excution d'oprations LMD simultanes. Oracle9i autorise les oprations simultanes sur la table de base pendant la cration ou la reconstruction des index, mais il est recommand de ne pas excuter de longues oprations LMD au cours de cette procdure. Remarque : Il existe toujours des verrous LMD qui vous empchent d'excuter d'autres oprations LDD lors de la construction d'index en ligne. Restrictions : Vous ne pouvez pas reconstruire un index sur une table temporaire. Vous ne pouvez pas reconstruire l'ensemble d'un index partitionn. Vous devez reconstruire chaque partition ou sous-partition. Vous ne pouvez pas librer l'espace inutilis. Vous ne pouvez pas modifier la valeur du paramtre PCTFREE de l'index dans son intgralit.

Oracle9i Database Administration I 12-23

Fusionner les index

Avant la fusion

Aprs la fusion

ALTER INDEX orders_id_idx COALESCE;

12-24

Copyright Oracle Corporation, 2001. Tous droits rservs.

Fusionner les index Lorsqu'un index est fragment, vous pouvez le reconstruire ou le fusionner. Avant d'effectuer l'une ou l'autre de ces oprations, vous devez en connatre les avantages et les inconvnients et choisir celle qui correspond le mieux vos besoins. La fusion d'un index correspond une reconstruction de blocs en ligne. S'il existe des blocs feuille d'index B-Tree qui peuvent tre librs pour tre rutiliss, vous pouvez les fusionner l'aide de la commande SQL suivante : SQL> ALTER INDEX hr.employees_idx COALESCE; Le schma de la diapositive prsente l'impact de la commande ALTER INDEX COALESCE sur l'index hr.employees_idx. Avant la fusion, les deux premiers blocs feuille sont remplis 50 %. Cela signifie que l'index est fragment et qu'il est possible de le fusionner afin de remplir le premier bloc et ainsi de rduire la fragmentation.

Oracle9i Database Administration I 12-24

Vrifier les index et leur validit

ANALYZE INDEX orders_region_id_idx VALIDATE STRUCTURE;

INDEX_STATS

12-25

Copyright Oracle Corporation, 2001. Tous droits rservs.

Vrifier les index et leur validit L'analyse d'un index vous permet : de contrler la corruption de bloc. Cette commande ne vrifie pas si les entres d'index correspondent au donnes de la table. d'insrer dans la vue INDEX_STATS des informations sur l'index. Syntaxe ANALYZE INDEX [ schema.]index VALIDATE STRUCTURE Aprs avoir excut cette commande, interrogez la vue INDEX_STATS pour obtenir des informations sur l'index, comme indiqu dans l'exemple suivant :

Oracle9i Database Administration I 12-25

Vrifier les index et leur validit (suite) SQL> SELECT blocks, pct_used, distinct_keys 2 3 lf_rows, del_lf_rows FROM index_stats; BLOCKS -----25 1 row selected. Rorganisez l'index si la proportion de lignes supprimes est leve, par exemple, si le rapport entre DEL_LF_ROWS et LF_ROWS excde 30 %. PCT_USED --------11 LF_ROWS -------14 DEL_LF_ROWS -----------0

Oracle9i Database Administration I 12-26

Supprimer des index

Supprimez et recrez un index avant de procder des chargements en masse Supprimez les index rarement utiliss et crez-les lorsqu'ils sont ncessaires Supprimez et recrez les index non valides
DROP INDEX hr.deptartments_name_idx;

12-27

Copyright Oracle Corporation, 2001. Tous droits rservs.

Supprimer des index Vous pouvez supprimer un index dans les cas suivants : lorsqu'il n'est plus utile aux applications. avant de procder des chargements en masse. La suppression d'index avant des chargements importants de donnes et leur recration aprs les chargements : amliorent les performances de chargement, permettent une utilisation plus efficace de l'espace d'indexation. lorsqu'il est utilis priodiquement. Dans ce cas, il n'est pas ncessaire de le conserver, notamment s'il s'agit d'un index de table volatile (cela s'applique gnralement aux systmes OLTP dans lesquels des interrogations ad hoc sont gnres en fin d'anne ou de trimestre pour collecter les informations ncessaires aux bilans). lorsqu'il reoit l'attribut INVALID la suite d'un chec d'instance au cours de certaines oprations, telles que le chargement. lorsqu'il est endommag. Les index ncessaires aux contraintes ne peuvent pas tre supprims si la contrainte dpendante n'a pas t pralablement dsactive ou supprime.

Oracle9i Database Administration I 12-27

Supprimer des index Utiliser Oracle Enterprise Manager pour supprimer un index A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Schema > Index. 2. Dveloppez l'arborescence du schma auquel appartient l'index. 3. Slectionnez le schma auquel appartient l'index. 4. Slectionnez l'index 5. Slectionnez Remove dans le menu accessible par le bouton droit de la souris. 6. Confirmez la suppression. Remarque : Vous ne pouvez pas supprimer un index qui sert mettre en oeuvre une contrainte d'intgrit active. Les contraintes sont prsentes dans le chapitre "Grer l'intgrit des donnes".

Oracle9i Database Administration I 12-28

Identifier les index non utiliss

Pour lancer la surveillance de l'utilisation d'un index :


ALTER INDEX hr.dept_id_idx MONITORING USAGE

Pour arrter la surveillance de l'utilisation d'un index :


ALTER INDEX hr.dept_id_idx NOMONITORING USAGE

12-29

Copyright Oracle Corporation, 2001. Tous droits rservs.

Identifier les index non utiliss A partir de la version Oracle9i, il est possible de rassembler des statistiques sur l'utilisation d'un index et de les afficher dans la vue V$OBJECT_USAGE. Si les informations collectes indiquent que l'index n'est jamais utilis, vous pouvez le supprimer. De plus, la suppression des index non utiliss rduit la surcharge du serveur Oracle pour les instructions LMD et donc amliore les performances. Lorsque la clause MONITORING USAGE est mentionne, la vue V$OBJECT_USAGE est rinitialise pour l'index indiqu. Les informations prcdentes sont effaces ou rinitialises et une nouvelle heure de dbut est enregistre. Colonnes de la vue V$OBJECT_USAGE INDEX_NAME : nom de l'index. TABLE_NAME : table correspondante. MONITORING : indique si la surveillance est active (ON) ou non (OFF). USED : indique par YES ou NO si l'index a t utilis pendant la surveillance. START_MONITORING : heure de dbut de surveillance de l'index. END_MONITORING : heure de fin de surveillance de l'index.

Oracle9i Database Administration I 12-29

Obtenir des informations sur les index

Pour obtenir des informations sur les index, interrogez les vues suivantes : DBA_INDEXES : fournit des informations sur les index DBA_IND_COLUMNS : fournit des informations sur les colonnes indexes V$OBJECT_USAGE : fournit des informations sur l'utilisation d'un index

12-30

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 12-30

Synthse

Ce chapitre vous a permis d'apprendre : crer diffrents types d'index rorganiser les index supprimer des index obtenir des informations sur les index partir du dictionnaire de donnes lancer et arrter la surveillance de l'utilisation des index

12-31

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 12-31

Prsentation de l'exercice 12

Dans cet exercice, vous allez : indexer des colonnes d'une table transfrer l'index vers un autre tablespace supprimer un index obtenir des informations sur l'index

12-32

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 12 Remarque : Cet exercice peut tre ralis avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 12-32

Exercice 12 : grer les index 1 Vous envisagez de crer des index sur les colonnes NAME et REGION de la table CUSTOMERS. Quels sont les types d'index appropris pour ces deux colonnes ? Crez ces index (nommez-les respectivement CUST_NAME_IDX et CUST_REGION_IDX), puis placez-les dans le tablespace INDX01. Indice : Les index B-Tree sont adapts aux colonnes qui contiennent de nombreuses valeurs distinctes tandis que les index bitmap conviennent plutt aux colonnes qui contiennent peu de valeurs distinctes. La table CUSTOMERS se trouve dans le schma SYSTEM. 2 Transfrez l'index CUST_REGION_IDX vers un autre tablespace. Indice : Vous pouvez reconstruire l'index en indiquant un autre tablespace. 3 Notez les fichiers et les blocs utiliss par les extents dans l'index CUST_REGION_IDX. Indice : Accdez ces informations par la vue DBA_EXTENTS. 4 Recrez l'index CUST_REGION_IDX sans le supprimer au pralable et conservez-le dans le mme tablespace. Le nouvel index rutilise-t-il les mmes blocs qu'auparavant ? Indice : Reconstruisez l'index. Remarque : Le nouvel index ne rutilise pas le mme espace aprs reconstruction. En effet, le serveur Oracle construit un index temporaire, supprime l'ancien, puis renomme l'index temporaire. 5 a Sous l'ID utilisateur SYSTEM, excutez le script lab12_05a.sql pour crer la table NUMBERS et l'alimenter. b Interrogez la table NUMBERS pour dterminer le nombre de valeurs distinctes dans les deux colonnes de la table. c En utilisant des tailles d'extent uniformes de 4 Ko, crez les index B-Tree NUMB_OE_IDX et NUMB_NO_IDX, respectivement sur les colonnes ODD_EVEN et NO de la table NUMBERS. Placez ces index dans le tablespace INDX01. Vrifiez la taille totale des index et crivez ci-dessous le nombre de blocs. Indice : Utilisez une valeur PCTINCREASE gale zro pour crer des extents de taille identique. Vrifiez dans DBA_SEGMENTS le nombre total de blocs allous aux extents.

Index NUMB_OE_IDX NUMB_NO_IDX

Colonne ODD_EVEN NO

Blocs

Oracle9i Database Administration I 12-33

Oracle9i Database Administration I 12-34

Grer l'intgrit des donnes

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : implmenter des contraintes d'intgrit des donnes grer des contraintes d'intgrit obtenir des informations sur les contraintes partir du dictionnaire de donnes

13-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 13-2

Intgrit des donnes


Dclencheur de base de donnes Contrainte d'intgrit

Donnes

Code d'application

Table

13-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Intgrit des donnes L'intgrit des donnes garantit que les donnes d'une base respectent certaines rgles. Vous disposez de trois mthodes principales pour garantir l'intgrit des donnes : le code d'application, les dclencheurs de base de donnes, les contraintes d'intgrit dclaratives. Le choix de la mthode utiliser pour appliquer ces rgles relve de la conception de la base de donnes. L'administrateur de base de donnes est le premier concern par la mise en oeuvre de la mthode choisie par le concepteur et par l'quilibrage entre le besoin de performances et l'intgrit des donnes. Le code d'application peut tre implment sous forme de procdures stockes dans la base de donnes ou sous forme d'applications excutes sur le client. Le prsent chapitre aborde l'utilisation des contraintes d'intgrit.

Oracle9i Database Administration I 13-3

Mthodes garantissant l'intgrit des donnes (suite) Dclencheurs de base de donnes Les dclencheurs de base de donnes sont des programmes PL/SQL qui s'excutent lorsqu'un vnement, tel que l'insertion ou la mise jour d'une colonne, se produit dans une table. Vous pouvez activer ou dsactiver les dclencheurs, c'est--dire que vous pouvez les dfinir pour qu'ils s'excutent lorsque l'vnement se produit, ou pour qu'ils ne s'excutent pas, mme s'ils sont dfinis. Les dclencheurs de base de donnes ne sont gnralement crs que pour appliquer une rgle complexe ne pouvant tre dfinie sous la forme d'une contrainte d'intgrit. Remarque : Les dclencheurs de base de donnes sont traits dans d'autres cours Oracle. Contraintes d'intgrit Les contraintes d'intgrit constituent le mcanisme par excellence pour appliquer des rgles pour les raisons suivantes : elles amliorent les performances, elles sont simples dclarer et modifier, dans la mesure o elles ncessitent peu de code, elles centralisent les rgles, elles sont souples (actives ou dsactives), elles sont entirement documentes dans le dictionnaire de donnes. Les sections suivantes expliquent le fonctionnement des contraintes d'intgrit et leur mise en oeuvre par le serveur Oracle.

Oracle9i Database Administration I 13-4

Types de contrainte
Contrainte NOT NULL Description Indique qu'une colonne ne peut pas contenir de valeurs NULL. Dsigne une colonne ou une combinaison de colonnes comme unique. Dsigne une colonne ou une combinaison de colonnes comme cl primaire de la table. Dsigne une colonne ou une combinaison de colonnes comme cl trangre dans une contrainte d'intgrit rfrentielle. Indique une condition laquelle doit rpondre chaque ligne de la table.

UNIQUE

CLE PRIMAIRE CLE ETRANGERE CHECK

13-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Types de contrainte Par dfaut, toutes les colonnes d'une table acceptent les valeurs NULL (absence de valeur). Une contrainte NOT NULL exige qu'une colonne d'une table contienne des valeurs. Une contrainte de cl UNIQUE ncessite que toutes les valeurs d'une colonne ou d'un ensemble de colonnes (cl) soient uniques. Une colonne ou un ensemble de colonnes d'une table ne peut pas contenir deux valeurs de ligne identiques. Chaque table de la base de donnes ne peut contenir plus d'une contrainte de cl primaire. Ce type de contrainte garantit : que la colonne dfinie ne peut pas possder de doublons de valeur de ligne dans une table, que les colonnes de cl primaire ne contiennent pas de valeurs NULL. qu'une contrainte d'intgrit CHECK sur une colonne ou un ensemble de colonnes ncessite qu'une condition dfinie soit vraie ou inconnue pour toutes les lignes de la table. Bien que les contraintes NOT NULL et CHECK ne ncessitent aucune attention particulire de la part de l'administrateur de base de donnes (DBA), les contraintes UNIQUE, de cl primaire et de cl trangre doivent tre gres pour garantir une disponibilit optimale et des performances acceptables.

Oracle9i Database Administration I 13-5

Etats des contraintes


DISABLE NOVALIDATE DISABLE VALIDATE ENABLE NOVALIDATE ENABLE VALIDATE

Nouvelles donnes

Donnes existantes

13-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

Etats des contraintes Une contrainte d'intgrit peut tre active (ENABLE) ou dsactive (DISABLE). Si elle est active, les donnes sont contrles leur entre ou leur mise jour dans la base. Les donnes qui ne rpondent pas la rgle de la contrainte sont refoules. Si la contrainte est dsactive, il est possible d'entrer des donnes non conformes dans la base. Une contrainte d'intgrit peut prendre l'un des tats suivants : DISABLE NOVALIDATE DISABLE VALIDATE ENABLE NOVALIDATE ENABLE VALIDATE DISABLE NOVALIDATE : Ce type de contrainte n'est pas contrl. Les donnes de la table et les nouvelles donnes entres ou mises jour peuvent ne pas respecter les rgles de conformit dfinies par la contrainte. DISABLE VALIDATE : Cet tat interdit toute modification des colonnes auxquelles s'applique la contrainte. En outre, l'index de la contrainte est supprim et la contrainte est dsactive. Remarque : L'index n'est pas supprim si la contrainte peut tre diffre.

Oracle9i Database Administration I 13-6

Etats des contraintes (suite) ENABLE NOVALIDATE : Cet tat interdit l'entre de nouvelles donnes non conformes la contrainte. La table peut cependant contenir des donnes non valides, c'est--dire des donnes qui enfreignent la contrainte. Il s'avre plus utile d'activer des contraintes NOVALIDATE dans des configurations de data warehouse qui tlchargent (vers le serveur) des donnes OLTP valides. ENABLE VALIDATE : Cet tat interdit l'insertion dans la table de lignes enfreignant la contrainte. Il est cependant possible d'insrer ce type de ligne lorsque la contrainte est dsactive. La ligne est alors appele exception la contrainte. Si l'tat de la contrainte est ENABLE NOVALIDATE, toute infraction rsultant de l'insertion de donnes alors que la contrainte tait dsactive, demeure. Les lignes qui enfreignent la contrainte doivent tre mises jour ou supprimes pour que la contrainte puisse recevoir l'tat valid. Lorsqu'une contrainte passe de l'tat dsactiv l'tat ENABLE VALIDATE, la table est verrouille et la conformit de toutes les donnes de la table est vrifie. Cette situation peut provoquer le report de l'excution d'oprations LMD, telles que le chargement de donnes. Il est donc conseill de faire d'abord passer la contrainte de l'tat dsactiv l'tat ENABLE NOVALIDATE, puis l'tat ENABLE VALIDATE. Les transitions entre ces tats sont rgies par les rgles suivantes : ENABLE suppose VALIDATE, sauf si NOVALIDATE est dfini.

DISABLE suppose NOVALIDATE, sauf si VALIDATE est dfini. VALIDATE et NOVALIDATE n'ont pas d'implications par dfaut pour les tats ENABLE et DISABLE. Lorsqu'une contrainte unique ou primaire passe de l'tat DISABLE l'tat ENABLE et qu'il n'existe aucun index, alors un index unique est cr automatiquement. (Sauf si l'index peut tre diffr - "differable index" - alors l'index cr n'est pas unique). De la mme manire, lorsqu'une cl unique ou primaire passe de l'tat ENABLE l'tat DISABLE et qu'elle est active avec un index unique, ce dernier est supprim. Lorsqu'une contrainte passe de l'tat NOVALIDATE l'tat VALIDATE, toutes les donnes doivent tre vrifies. En revanche, lorsque la contrainte passe de l'tat VALIDATE l'tat NOVALIDATE, les ventuelles vrifications apportes sont totalement ignores. Lorsqu'une seule contrainte passe de l'tat ENABLE NOVALIDATE l'tat ENABLE VALIDATE, les lectures, critures et instructions LDD ne sont pas bloques.

Oracle9i Database Administration I 13-7

Vrification des contraintes

Instruction LMD Vrifier la validit des contraintes non diffres

COMMIT

Vrifier la validit des contraintes diffres

13-8

Copyright Oracle Corporation, 2001. Tous droits rservs.

Vrification des contraintes Vous pouvez diffrer la vrification de la validit des contraintes jusqu' la fin de la transaction. Contraintes non diffres ou immdiates Les contraintes non diffres, galement appeles contraintes immdiates, sont appliques la fin de chaque instruction LMD. Une violation de contrainte annule l'instruction. Si une contrainte provoque une action, telle que delete cascade, on considre alors que l'action fait partie de l'instruction qui l'a dclenche. Il est impossible de modifier une contrainte ne pouvant pas tre diffre afin de l'appliquer la fin de la transaction. Contraintes diffres Les contraintes diffres ne sont vrifies que lorsqu'une transaction est valide. Si une violation de contrainte est dtecte lors de la validation, l'ensemble de la transaction est annul. Ces contraintes s'avrent trs utiles lorsque les lignes parent et les lignes enfant d'une relation de cl trangre sont entres simultanment, comme dans le cas d'un systme de traitement des commandes o les articles et la commande sont entrs simultanment. Une contrainte dfinie comme pouvant tre diffre peut tre indique comme suit : Initially immediate indique qu'il s'agit par dfaut d'une contrainte immdiate, sauf indication contraire explicite. Initially deferred indique que, par dfaut, la contrainte ne doit tre applique qu' la fin de la transaction.

Oracle9i Database Administration I 13-8

Dfinir des contraintes immdiates ou diffres


Utilisez l'instruction SET CONSTRAINTS pour dfinir des contraintes DEFERRED (diffres) ou IMMEDIATE (immdiates). L'instruction ALTER SESSION dispose galement d'une clause SET CONSTRAINTS permettant d'affecter la valeur DEFERRED ou IMMEDIATE aux contraintes.

13-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dfinir des contraintes immdiates ou diffres L'instruction SET CONSTRAINTS dfinit des contraintes DEFERRED ou IMMEDIATE pour une transaction spcifique. Elle vous permet de dfinir le mode pour des contraintes ou pour une liste de noms de contrainte. Le mode SET CONSTRAINTS est actif pendant la dure de la transaction ou jusqu' ce qu'une autre instruction SET CONSTRAINTS rinitialise le mode. L'instruction SET CONSTRAINTS ne peut pas tre utilise dans les dclencheurs. L'instruction ALTER SESSION dispose galement d'une clause SET CONSTRAINTS permettant d'affecter la valeur IMMEDIATE ou DEFERRED aux contraintes. Cette commande suppose de dfinir TOUTES les contraintes pouvant tre diffres (la liste des noms de contrainte ne peut pas tre dfinie). L'instruction ALTER SESSION SET CONSTRAINTS s'applique uniquement une session en cours. ALTER SESSION SET CONSTRAINT[S] = {IMMEDIATE|DEFERRED|DEFAULT} SET CONSTRAINT | CONSTRAINTS {constraint |ALL } {IMMEDIATE|DEFERRED}

Oracle9i Database Administration I 13-9

Application des contraintes UNIQUE et de cl primaire


Cl active ?

Oui

Un index Oui est-il disponible ?

S'agit-il Contrainte Oui d'un index nonpouvant tre unique ? diffre ?

Non
Contrainte pouvant tre diffre ?

Non
Utilisez l'index existant

Non/Oui

Oui

Non
N'utilisez pas d'index

Non
Crez un index unique Crez un index non-unique

13-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Application des contraintes UNIQUE et de cl primaire Les contraintes UNIQUE et de cl primaire sont appliques en utilisant des index. Vous pouvez contrler l'emplacement et le type de l'index utilis pour appliquer ces contraintes. Le serveur Oracle utilise la procdure suivante pour mettre en oeuvre les contraintes UNIQUE et de cl primaire : Si la contrainte est dsactive, aucun index n'est ncessaire. Si la contrainte est active et que les colonnes de la contrainte forment la premire partie d'un index, cet index, qu'il soit unique ou non-unique, est utilis pour appliquer la contrainte. Si la contrainte est active et que les colonnes de la contrainte ne correspondent pas au dbut d'un index, un index portant le nom de la contrainte est cr selon les rgles suivantes : S'il s'agit d'une cl pouvant tre diffre, un index non-unique est cr sur la colonne de cl. S'il s'agit d'une cl ne pouvant pas tre diffre, un index unique est cr. Si un index peut tre utilis et que la contrainte ne peut pas tre diffre, il convient alors d'utiliser l'index existant. De mme, utilisez l'index existant si la contrainte peut tre diffre et que l'index est non-unique.

Oracle9i Database Administration I 13-10

Remarques sur la cl trangre

Action souhaite Supprimer la table parent Vider la table parent

Solution approprie Mise en cascade des contraintes Dsactiver ou supprimer la cl trangre Utiliser la clause CASCADE CONSTRAINTS S'assurer que le tablespace contenant la cl parent est en ligne

Supprimer le tablespace contenant la table parent Excuter l'instruction LMD sur la table enfant

13-11

Copyright Oracle Corporation, 2001. Tous droits rservs.

Remarques sur la cl trangre Vous devez tenir compte de plusieurs lments lorsque vous grez des tables dans une relation de cl trangre. LDD impliquant la table parent La cl trangre doit tre supprime avant la table parent. L'instruction suivante permet d'effectuer ces deux oprations : DROP TABLE table CASCADE CONSTRAINTS Vous ne pouvez pas vider la table mre sans supprimer ou dsactiver la cl trangre. La cl trangre doit tre supprime avant le tablespace contenant la table parent. Pour ce faire, utilisez la commande suivante : DROP TABLESPACE tablespace INCLUDING CONTENTS CASCADE CONSTRAINTS

Oracle9i Database Administration I 13-11

Remarques sur la cl trangre (suite) Si l'option DELETE CASCADE n'est pas utilise lors de la suppression de lignes de la table parent, le serveur Oracle doit vrifier dans la table enfant qu'aucune ligne ne contient la cl trangre correspondante. De mme, la cl parent ne peut tre mise jour que si l'ancienne valeur de cl ne figure dans aucune ligne enfant. Si la cl trangre de la table enfant ne contient pas d'index, le serveur Oracle verrouille la table enfant et interdit les modifications pour garantir l'intgrit rfrentielle. Si la table contient un index, il est possible de conserver l'intgrit rfrentielle en verrouillant les entres d'index et en vitant d'utiliser des verrous plus restrictifs sur la table enfant. Si les deux tables doivent tre mises jour simultanment par des transactions diffrentes, crez un index sur les colonnes de la cl trangre. Lorsque des donnes sont insres ou que la colonne de cl trangre est mise jour dans la table enfant, le serveur Oracle vrifie l'index de la table parent utilise pour appliquer la cl rfrence. Par consquent, l'opration n'aboutit que si le tablespace contenant l'index est en ligne (online). Le tablespace contenant la table parent ne doit pas ncessairement tre en ligne pour excuter des oprations LMD sur la table enfant. Lors de la mise jour ou de la suppression de la cl primaire, Oracle9i ne ncessite plus de verrou de type Share sur les cls trangres non indexes. Il obtient toujours le verrou de type Share au niveau table, mais le libre immdiatement aprs. Si plusieurs cls primaires sont mises jour ou supprimes, le verrou est obtenu et libr une fois par ligne.

Oracle9i Database Administration I 13-12

Dfinir des contraintes lors de la cration d'une table


CREATE TABLE hr.employee( id NUMBER(7) CONSTRAINT employee_id_pk PRIMARY KEY DEFERRABLE USING INDEX STORAGE(INITIAL 100K NEXT 100K) TABLESPACE indx, last_name VARCHAR2(25) CONSTRAINT employee_last_name_nn NOT NULL, dept_id NUMBER(7)) TABLESPACE users;

13-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dfinir des contraintes lors de la cration d'une table Vous pouvez dfinir une contrainte lorsque vous crez une table ou lorsque vous la modifiez. Pour cela, utilisez la clause constraint_clause dans une instruction CREATE TABLE ou ALTER TABLE. Pour dfinir une contrainte d'intgrit, vous devez disposer des privilges requis. Pour crer une contrainte d'intgrit rfrentielle, la table parent doit figurer dans votre schma ou vous devez disposer du privilge REFERENCES sur les colonnes de la cl rfrence dans la table parent.

Oracle9i Database Administration I 13-13

Dfinir des contraintes lors de la cration d'une table (suite) La syntaxe column_constraint fait partie de la dfinition de la table. La syntaxe suivante vous permet de dfinir la contrainte au moment de la cration de la table : column datatype [CONSTRAINT constraint] {[NOT] NULL |UNIQUE [USING INDEX index_clause] |PRIMARY KEY [USING INDEX index_clause] |REFERENCES [schema.]table [(column)] [ON DELETE CASCADE] |CHECK (condition) } constraint_state :== [NOT DEFERRABLE|DEFERRABLE [INITIALLY {IMMEDIATE|DEFERRED}] ] [DISABLE|ENABLE [VALIDATE|NOVALIDATE]] O : CONSTRAINT : identifie la contrainte d'intgrit par le nom constraint stock dans le dictionnaire de donnes. USING INDEX : indique que les paramtres dfinis dans index-clause doivent tre utiliss pour l'index auquel fait appel le serveur Oracle afin d'appliquer une contrainte UNIQUE ou de cl primaire (l'index porte le mme nom que la contrainte). DEFERRABLE : indique que la vrification des contraintes peut tre diffre jusqu' la fin de la transaction l'aide de la commande SET CONSTRAINT. NOT DEFERRABLE : indique que la contrainte est vrifie la fin de chaque instruction LMD (une contrainte NOT DEFERRABLE ne peut pas tre diffre par des sessions ou des transactions. NOT DEFERRABLE est utilis par dfaut.) INITIALLY IMMEDIATE : indique qu'au dbut de chaque transaction, la contrainte doit, par dfaut, tre vrifie la fin de chaque instruction LMD (si aucune clause INITIALLY n'est dfinie, INITIALLY IMMEDIATE est utilis par dfaut). INITIALLY DEFERRED : indique qu'il s'agit d'une contrainte DEFERRABLE et que, par dfaut, elle n'est vrifie qu' la fin de chaque transaction. DISABLE : dsactive la contrainte d'intgrit (lorsqu'une contrainte d'intgrit est dsactive, le serveur Oracle ne l'applique pas).

Oracle9i Database Administration I 13-14

Dfinir des contraintes lors de la cration d'une table (suite) Utiliser Oracle Enterprise Manager pour dfinir des contraintes A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Schema > Table. 2. Slectionnez Create dans le menu accessible l'aide du bouton droit de la souris. 3. Renseignez la page General. 4. Slectionnez la page Constraints, puis dfinissez des contraintes d'intgrit. 5. Cliquez sur Create.

Oracle9i Database Administration I 13-15

Dfinir des contraintes lors de la cration d'une table (suite) Contrainte de table Une contrainte de table fait partie de la dfinition de la table. Il peut s'agir d'une contrainte quelconque l'exception de la contrainte NOT NULL. Une contrainte de table se dfinit comme suit : [CONSTRAINT constraint] {PRIMARY KEY (column [, column ]... ) [USING INDEX index_clause] |UNIQUE (column [, column ]... ) [USING INDEX index_clause] |FOREIGN KEY (column [, column ]... ) REFERENCES [schema.]table [(column [, column ]... )] [ON DELETE CASCADE] |CHECK (condition) } [constraint_state] Remarque : Il est recommand d'adopter une convention d'appellation standard pour les contraintes, notamment pour les contraintes CHECK, puisque vous pouvez crer plusieurs fois la mme contrainte avec des noms diffrents. Vous devez utiliser des contraintes de table dans les cas suivants : lorsqu'une contrainte s'applique plusieurs colonnes, lorsqu'une table est modifie pour recevoir des contraintes autres que NOT NULL. La dfinition d'une contrainte partir du type NOT NULL une fois la table cre n'est possible que dans le cas suivant : ALTER TABLE table MODIFY column CONSTRAINT constraint NOT NULL; Exemple de dfinition de contraintes aprs la cration d'une table SQL> ALTER TABLE hr.employee 2 ADD(CONSTRAINT employee_dept_id_fk FOREIGN KEY(dept_id) 3 REFERENCES hr.department(id) 4 DEFERRABLE INITIALLY DEFERRED); Remarque : La clause EXCEPTIONS, dcrite dans la section "Vrifier les contraintes" du prsent chapitre, peut tre utilise pour identifier les lignes qui enfreignent une contrainte ajoute l'aide de la commande ALTER TABLE.

Oracle9i Database Administration I 13-16

Instructions de dfinition des contraintes

Contraintes UNIQUE et de cl primaire : placent des index dans un tablespace distinct, utilisent des index non-uniques si les chargements en masse sont frquents. Les cls trangres d'autorfrencement : dfinissent ou activent les cls trangres aprs le premier chargement de donnes, diffrent la vrification des contraintes.

13-17

Copyright Oracle Corporation, 2001. Tous droits rservs.

Instructions de dfinition des contraintes Tenez compte des points suivants pour dfinir des contraintes : Placez les index utiliss pour appliquer les contraintes UNIQUE et de cl primaire dans un tablespace diffrent de celui de la table. Pour ce faire, vous pouvez soit dfinir la clause USING INDEX, soit crer la table et l'index, puis modifier la table pour ajouter ou activer la contrainte. Si les donnes sont souvent charges en masse dans une table, il est prfrable de dsactiver les contraintes, de charger les donnes, puis de ractiver les contraintes. Si vous utilisez un index unique pour appliquer une contrainte UNIQUE ou de cl primaire, cet index doit tre supprim lorsque vous dsactivez la contrainte. Dans une telle situation, vous pouvez amliorer les performances en utilisant un index non-unique pour appliquer des contraintes UNIQUE ou de cl primaire. Pour ce faire, crez une cl pouvant tre diffre ou crez l'index avant de dfinir ou d'activer la cl. Si une table contient une cl trangre d'autorfrencement, utilisez l'une des mthodes suivantes pour charger les donnes : Dfinissez ou activez la cl trangre aprs le premier chargement de donnes. Dfinissez la contrainte comme pouvant tre diffre. La seconde mthode s'avre trs utile lorsque des donnes sont charges frquemment.

Oracle9i Database Administration I 13-17

Activer les contraintes

ENABLE NOVALIDATE

Table non verrouille Les cls primaires et uniques doivent utiliser des index non-uniques

ALTER TABLE hr.departments ENABLE NOVALIDATE CONSTRAINT dept_pk;

13-18

Copyright Oracle Corporation, 2001. Tous droits rservs.

Activer les contraintes Une contrainte dsactive peut tre active l'aide de l'option ENABLE NOVALIDATE ou ENABLE VALIDATE. Enable NOVALIDATE Pour les contraintes de cl primaire (PRIMARY KEY) et UNIQUE possdant un index, l'utilisation du mode NOVALIDATE est beaucoup plus rapide que celle du mode VALIDATE, car les donnes existantes ne sont pas vrifies par rapport la contrainte si cette dernire peut tre diffre. Si vous utilisez cette option pour activer une contrainte, il n'est pas ncessaire de verrouiller la table. Utilisez cette mthode lorsque de nombreuses oprations LMD sont excutes sur la table, comme c'est le cas dans un environnement OLTP. Utilisez la commande suivante pour activer une contrainte ENABLE NOVALIDATE : ALTER TABLE [ schema. ] table ENABLE NOVALIDATE {CONSTRAINT constraint | PRIMARY KEY | UNIQUE ( column [, column ] ... ) } [ USING INDEX index_clause ]

Oracle9i Database Administration I 13-18

Activer les contraintes (suite) Restrictions La clause USING INDEX ne s'applique qu'aux contraintes UNIQUE ou de cl primaire pouvant tre diffres, et uniquement si l'une des conditions suivantes est vraie : les contraintes n'ont pas t actives lors de leur cration, les contraintes ont t dsactives et l'index a t supprim. Toutefois, si vous devez crer l'index, cette mthode ne procure aucun avantage particulier par rapport la mthode ENABLE VALIDATE, car le serveur Oracle verrouille la table pour crer l'index. Remarque : Le cours Introduction to SQL and PL/SQL indique comment dsactiver des contraintes.

Oracle9i Database Administration I 13-19

Activer les contraintes (suite) Utiliser Oracle Enterprise Manager pour dfinir des contraintes A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Schema > Table. 2. Slectionnez la table dans laquelle les contraintes doivent tre modifies. 3. Cliquez sur l'onglet Constraints, puis apportez les modifications ncessaires. 4. Cliquez sur Apply.

Oracle9i Database Administration I 13-20

Activer les contraintes


Table verrouille Peut utiliser des index uniques ou non-uniques Requiert des donnes de table valides

ENABLE VALIDATE

ALTER TABLE hr.employees ENABLE VALIDATE CONSTRAINT emp_dept_fk;

13-21

Copyright Oracle Corporation, 2001. Tous droits rservs.

Activer les contraintes Lorsque le mode VALIDATE est associ une contrainte, les donnes existantes sont vrifies par rapport la contrainte. Cette action est effectue par dfaut lorsqu'une contrainte est active. Si la dtection est lance alors que la contrainte est dsactive, les effets sont les suivants : La table est verrouille et aucune modification n'est possible tant que la validation des donnes existantes n'est pas termine. Le serveur Oracle cre un index s'il n'en existe pas sur les colonnes d'index. Il cre un index unique lorsqu'il active une contrainte UNIQUE ou de cl primaire ne pouvant pas tre diffre. Il cre un index non-unique pour une contrainte UNIQUE ou de cl primaire pouvant tre diffre. Si cette commande est excute lorsqu'une contrainte est en vigueur, la table n'a pas besoin d'tre verrouille durant la validation. La contrainte applique garantit qu'aucune donne insre lors de la validation ne viole ces rgles. Les avantages sont les suivants : Toutes les contraintes sont actives simultanment. Chaque contrainte est excute en interne et en parallle. Les oprations simultanes sur la table sont rendues possibles.

Oracle9i Database Administration I 13-21

Activer les contraintes (suite) Utilisez la commande suivante pour activer une contrainte ENABLE VALIDATE : ALTER TABLE [ schema. ] table ENABLE [ VALIDATE ]{CONSTRAINT constraint | PRIMARY KEY | UNIQUE ( column [, column ] ... ) } [ USING INDEX index_clause ] [ EXCEPTIONS INTO [ schema. ] table ] Remarque : VALIDATE est l'option par dfaut. Il est inutile de la dfinir lorsque vous activez une contrainte dsactive. Si des donnes de la table violent la contrainte, l'instruction est annule et la contrainte reste dsactive. L'utilisation de la clause EXCEPTIONS est dcrite dans la section suivante.

Oracle9i Database Administration I 13-22

Utiliser la table EXCEPTIONS

Excutez le script utlexcpt1.sql pour crer la table EXCEPTIONS. Excutez l'instruction ALTER TABLE avec l'option EXCEPTIONS. Lancez une sous-interrogation sur la table EXCEPTIONS pour identifier les lignes contenant des donnes non valides. Corrigez les erreurs. Rexcutez l'instruction ALTER TABLE pour activer la contrainte.

13-23

Copyright Oracle Corporation, 2001. Tous droits rservs.

Identifier une violation de contrainte due aux lignes La clause EXCEPTIONS permet d'identifier les lignes qui violent une contrainte active. Pour identifier et rectifier les violations de contrainte, et ractiver une contrainte, procdez comme suit : 1. Si la table EXCEPTIONS n'a pas encore t cre, excutez le script utlexcpt1.sql : SQL> @?/rdbms/admin/utlexcpt1 Statement processed. SQL> DESCRIBE exceptions Name -------------------------ROW_ID OWNER TABLE_NAME CONSTRAINT Null? ------ROWID VARCHAR2(30) VARCHAR2(30) VARCHAR2(30) Type ----------------

Remarque : Le nom et l'emplacement exacts du script utlexcpt1.sql dpendent du systme d'exploitation. Pour plus d'informations, consultez la documentation Oracle propre votre systme d'exploitation.

Oracle9i Database Administration I 13-23

Identifier une violation de contrainte due aux lignes (suite) 2. Excutez la commande ALTER TABLE en utilisant la clause EXCEPTIONS : SQL> ALTER TABLE hr.employee 2 ENABLE VALIDATE CONSTRAINT employee_dept_id_fk 3 EXCEPTIONS INTO system.exceptions; ALTER TABLE hr.employee * ORA-02298: cannot enable (HR.EMPLOYEE_DEPT_ID_FK) - parent keys not found Si la table EXCEPTIONS n'est pas qualifie avec le nom du propritaire, elle doit appartenir au propritaire de la table en cours de modification. Des lignes sont insres dans la table EXCEPTIONS. Si vous rexcutez la commande, videz cette table pour supprimer toutes les lignes existantes. 3. Identifiez les donnes non valides en lanant une sous-interrogation sur la table EXCEPTIONS : SQL> SELECT rowid, id, last_name, dept_id 2 3 4 5 FROM hr.employee WHERE ROWID in (SELECT row_id FROM exceptions) FOR UPDATE;

ROWID ID LAST_NAME DEPT_ID ------------------ ---- --------- ------AAAAeyAADAAAAA1AAA 1003 Pirie 50 1 row selected. 4. Corrigez les erreurs contenues dans les donnes : SQL> UPDATE hr.employee 2 SET dept_id=10 3 WHERE rowid=AAAAeyAADAAAAA1AAA; 1 row processed. SQL> COMMIT; Statement processed.

Oracle9i Database Administration I 13-24

Identifier une violation de contrainte due aux lignes (suite) 5. Videz la table EXCEPTIONS et ractivez la contrainte : SQL> TRUNCATE TABLE exceptions; Statement processed. SQL> ALTER TABLE hr.employee 2 ENABLE VALIDATE CONSTRAINT employee_dept_id_fk 3 EXCEPTIONS INTO system.exceptions; Statement processed.

Oracle9i Database Administration I 13-25

Obtenir des informations sur les contraintes


Interrogez les vues suivantes pour obtenir des informations sur les contraintes : DBA_CONSTRAINTS DBA_CONS_COLUMNS

13-26

Copyright Oracle Corporation, 2001. Tous droits rservs.

Obtenir des informations sur les contraintes Lancez l'interrogation suivante sur la table EMPLOYEE de l'utilisateur HR pour obtenir le nom, le type et le statut de toutes les contraintes : SQL> SELECT constraint_name, constraint_type, deferrable, 2 deferred, validated 3 FROM dba_constraints 4 WHERE owner='HR' 5 AND table_name='EMPLOYEES'; CONSTRAINT_NAME C ---------------- EMPLOYEE_DEPT.. R EMPLOYEE_ID_PK P SYS_C00565 C 3 rows selected. DEFERRABLE DEFERRED VALIDATED --------------- ----------DEFERRABLE DEFERRED VALIDATED DEFERRABLE IMMEDIATE VALIDATED NOT DEFERRABLE IMMEDIATE ---------VALIDATED

Oracle9i Database Administration I 13-26

Obtenir des informations sur les contraintes (suite) Le tableau suivant prsente les colonnes non explicites de la vue DBA_CONSTRAINTS. Nom CONSTRAINT_TYPE Description Le type de la contrainte est P, U, R ou C selon qu'il s'agit respectivement d'une contrainte de cl primaire, de cl unique, de cl trangre ou d'une contrainte CHECK. Les contraintes NOT NULL sont stockes sous forme de contraintes CHECK. Indique la condition dfinie pour une contrainte CHECK. Indique le propritaire et le nom de la contrainte rfrence pour les cls trangres. Indique si le nom de la contrainte a t gnr par le systme (les valeurs acceptes sont USERNAME et GENERATED NAME). Indique que la contrainte doit tre rcrite afin d'viter des problmes tels que ceux lis au passage l'an 2000. Si cet indicateur est dfini, il est utilis dans l'optimiseur. Indique la date laquelle la contrainte a t active ou dsactive pour la dernire fois.

SEARCH_CONDITION R_OWNER R_CONSTRAINT_NAME GENERATED

BAD RELY LAST_CHANGE

Colonnes des contraintes Pour identifier les colonnes des contraintes de la table EMPLOYEES de l'utilisateur HR, lancez l'interrogation suivante : SQL> SELECT c.constraint_name, c.constraint_type, 2 cc.column_name 3 FROM dba_constraints c, dba_cons_columns cc 4 WHERE c.owner='HR' 5 AND c.table_name='EMPLOYEE' 6 AND c.owner = cc.owner 7 AND c.constraint_name = cc.constraint_name 8 ORDER BY cc.position; CONSTRAINT_NAME C COLUMN_NAME ---------------- - --------------EMPLOYEE_DEPT... R DEPT_ID EMPLOYEE_ID_PK P ID SYS_C00565 C LAST_NAME 3 rows selected.

Oracle9i Database Administration I 13-27

Obtenir des informations sur les contraintes (suite) Rechercher les relations entre les cls primaires et les cls trangres Pour identifier les cls trangres de la table EMPLOYEE de l'utilisateur HR et les contraintes parent, lancez l'interrogation suivante : SQL> SELECT c.constraint_name AS "Foreign Key", 2 p.constraint_name AS "Referenced Key", 3 p.constraint_type, 4 p.owner, 5 p.table_name 6 FROM dba_constraints c, dba_constraints p 7 WHERE c.owner='HR' 8 AND c.table_name='EMPLOYEE' 9 AND c.constraint_type='R' 10 AND c.r_owner=p.owner 11 AND c.r_constraint_name = p.constraint_name; Foreign Key Referenced Key C OWNER TABLE_NAME ------------ -------------- - ---------- ---------EMPLOYEES_DEPT.. DEPT_PK P HR DEPARTMENT 1 row selected.

Oracle9i Database Administration I 13-28

Synthse

Ce chapitre vous a permis d'apprendre : implmenter l'intgrit des donnes utiliser une stratgie approprie pour crer et grer des contraintes obtenir des informations partir du dictionnaire de donnes

13-29

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 13-29

Prsentation de l'exercice 13

Dans cet exercice, vous allez : crer des contraintes activer des contraintes UNIQUE crer une table EXCEPTIONS identifier les cas de violation de contrainte dtects dans une table, corriger les erreurs et ractiver les contraintes

13-30

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 13-30

Exercice 13 : grer l'intgrit des donnes 1 Examinez le script lab13_01.sql. Excutez-le pour crer les contraintes. 2 Interrogez le dictionnaire de donnes pour effectuer les oprations suivantes : a Vrifier la prsence de contraintes et dterminer leur statut et si elles peuvent tre diffres. Indice : Utilisez la vue DBA_CONSTRAINTS pour obtenir ces informations. b Vrifier le nom et le type des index crs pour valider les contraintes. Indice : Les index ne sont crs que pour les contraintes UNIQUE et de cl primaire. Ils portent le mme nom que ces contraintes. 3 Sous l'ID utilisateur SYSTEM, excutez le script lab13_03.sql afin d'insrer deux enregistrements dans la table PRODUCTS. 4 Activez la contrainte UNIQUE dans la table PRODUCT. L'opration a-t-elle russi ? 5 a Assurez-vous que les nouvelles lignes qui ont t ajoutes la table ne violent pas la contrainte portant sur la table PRODUCT. Indice : Activez la contrainte NOVALIDATE. b Interrogez le dictionnaire de donnes afin de vrifier l'impact de cette modification. c Pour vrifier que la contrainte rejette les insertions en infraction, ajoutez une ligne contenant les valeurs suivantes :

PRODUCT_I D

PRODUCT_DESCRIPTION

LIST_PRICE

4000 Monitor 3000 6 Effectuez les oprations requises pour identifier les cas de violation de contrainte dtects dans la table PRODUCTS, modifiez les codes produit en consquence, puis assurez-vous que toutes les donnes, nouvelles ou existantes, sont conformes la contrainte (considrez que la table comporte plusieurs milliers de lignes et qu'il est bien trop long de vrifier chacune d'elles manuellement). Indice : Procdez comme suit : a Crez la table EXCEPTIONS. b Excutez la commande pour activer la contrainte et intercepter les exceptions. c Utilisez les ROWID dans la table EXCEPTIONS pour afficher les lignes de la table PRODUCTS qui violent la contrainte (ne demandez pas l'affichage des colonnes LOB). d Corrigez les erreurs. e Activez la contrainte. 7 Excutez le script lab13_07.sql pour insrer des lignes dans la table. Les insertions ontelles abouti ? Annulez (rollback) les modifications.

Oracle9i Database Administration I 13-31

Oracle9i Database Administration I 13-32

Grer la scurit des mots de passe et les ressources

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : grer les mots de passe l'aide de profils administrer des profils contrler l'utilisation des ressources l'aide de profils obtenir des informations sur les profils, la gestion des mots de passe et les ressources

14-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 14-2

Profils

Un profil est un ensemble nomm contenant les limites relatives aux mots de passe et aux ressources. La commande CREATE USER ou ALTER USER permet d'affecter des profils aux utilisateurs. Les profils peuvent tre activs ou dsactivs. Par dfaut, affectation du profil DEFAULT.

14-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Profils Un profil correspond un ensemble nomm contenant les limites suivantes, relatives aux mots de passe et aux ressources : dure de vie et expiration des mots de passe, historique des mots de passe, vrification de la complexit des mots de passe, verrouillage d'un compte, temps CPU, oprations d'entre/sortie (E/S), dure d'inactivit, dure de connexion, espace mmoire (zone SQL prive pour serveur partag uniquement), sessions simultanes. Une fois un profil cr, l'administrateur de base de donnes peut l'affecter chaque utilisateur. Si les limites relatives aux ressources sont actives, le serveur Oracle limite l'utilisation de la base de donnes et des ressources au profil dfini pour l'utilisateur.

Oracle9i Database Administration I 14-3

Profils (suite) Le serveur Oracle cre automatiquement le profil DEFAULT en mme temps que la base de donnes. Si aucun profil spcifique n'est attribu explicitement un utilisateur, toutes les limites du profil DEFAULT s'appliquent. A l'origine, toutes les valeurs du profil DEFAULT sont illimites. Toutefois, l'administrateur de base de donnes peut modifier les valeurs afin d'appliquer par dfaut des limites tous les utilisateurs. Fonctions des profils : Empcher les utilisateurs d'excuter des oprations qui utilisent beaucoup de ressources. Garantir que les utilisateurs sont dconnects de la base de donnes lorsque leur session reste inactive pendant un certain temps. Activer des limites relatives aux ressources de groupe pour les utilisateurs similaires. Affecter facilement aux utilisateurs des limites relatives aux ressources. Grer l'utilisation des ressources dans les systmes de base de donnes multiutilisateurs complexes et volumineux. Contrler l'utilisation des mots de passe. Caractristiques des profils : Les affectations de profil n'ont pas d'incidence sur les sessions en cours. Les profils ne peuvent tre affects qu' des utilisateurs. Vous ne pouvez les affecter ni des rles, ni d'autres profils. Si vous n'affectez pas de profil un utilisateur que vous crez, ce dernier reoit automatiquement le profil DEFAULT.

Oracle9i Database Administration I 14-4

Gestion des mots de passe

Historique des mots de passe

Verrouillage d'un compte

Utilisateur

Configurer des profils

Dure de vie et expiration des mots de passe

Vrification des mots de passe

14-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Gestion des mots de passe Pour mieux contrler la scurit des bases de donnes, les administrateurs de base de donnes grent les mots de passe Oracle l'aide de profils. Le prsent chapitre dcrit les fonctions de gestion des mots de passe : Verrouillage d'un compte : active le verrouillage automatique d'un compte lorsque l'utilisateur ne parvient pas se connecter au systme aprs un nombre dfini de tentatives. Dure de vie et expiration des mots de passe : affecte au mot de passe une dure de vie aprs laquelle il expire et doit tre chang. Historique des mots de passe : vrifie les nouveaux mots de passe pour garantir qu'un mot de passe ne sera pas rutilis avant un certain temps ou avant un certain nombre de changements de mot de passe. Vrification de la complexit des mots de passe : vrifie qu'un mot de passe est suffisamment complexe pour garantir une protection contre les intrus qui tenteraient de forcer l'accs au systme.

Oracle9i Database Administration I 14-5

Activer la gestion des mots de passe

Configurez la gestion des mots de passe l'aide de profils que vous affecterez aux utilisateurs. Verrouillez, dverrouillez et faites expirer des comptes l'aide de la commande CREATE USER ou ALTER USER. Les limites relatives aux mots de passe sont toujours appliques. Pour activer la gestion des mots de passe, excutez le script utlpwdmg.sql sous le nom utilisateur SYS.

14-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

Activer la gestion des mots de passe Crez un profil pour limiter les paramtres de mot de passe, et affectez-le l'utilisateur l'aide de la commande CREATE USER ou ALTER USER. Les paramtres de limites relatives aux mots de passe des profils sont toujours appliqus. Lorsque la gestion des mots de passe est active, utilisez la commande CREATE USER ou ALTER USER pour verrouiller ou dverrouiller un compte utilisateur. Remarque : Pour plus d'informations sur la commande CREATE USER, voir le chapitre "Grer les utilisateurs".

Oracle9i Database Administration I 14-6

Verrouillage d'un compte

Paramtre FAILED_LOGIN_ATTEMPTS

Description Nombre d'checs de connexion avant verrouillage du compte Dure, en jours, de verrouillage du compte aprs le nombre d'checs de connexion dfini

PASSWORD_LOCK_TIME

14-7

Copyright Oracle Corporation, 2001. Tous droits rservs.

Verrouillage d'un compte Le serveur Oracle verrouille automatiquement un compte lorsque la valeur de FAILED_LOGIN_ATTEMPTS est atteinte. Le compte est dverrouill automatiquement aprs un certain dlai dfini par le paramtre PASSWORD_LOCK_TIME ou doit tre dverrouill par l'administrateur de base de donnes l'aide de la commande ALTER USER. Le compte de base de donnes peut tre verrouill explicitement l'aide de la commande ALTER USER. Dans ce cas, le compte n'est pas dverrouill automatiquement. Remarque : La commande ALTER USER est prsente plus loin dans ce chapitre.

Oracle9i Database Administration I 14-7

Dure de vie et expiration des mots de passe


Paramtre PASSWORD_LIFE_TIME Paramtre Dure de vie, en jours, du mot de passe avant expiration Priode de grce, en jours, pendant laquelle l'utilisateur peut changer de mot de passe aprs la premire connexion tablie une fois le mot de passe expir

PASSWORD_GRACE_TIME

14-8

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dure de vie et expiration des mots de passe Le paramtre PASSWORD_LIFE_TIME dfinit la dure de vie maximale l'issue de laquelle un mot de passe doit tre chang. L'administrateur peut dfinir une priode de grce (PASSWORD_GRACE_TIME) qui commence aprs la premire tentative de connexion la base de donnes, une fois le mot de passe expir. Jusqu' la fin de la priode de grce, l'utilisateur reoit un message d'avertissement chaque connexion. Il doit changer de mot de passe pendant cette priode. S'il ne le change pas, son compte est verrouill. Lorsque le mot de passe est explicitement dfini comme ayant expir, le statut EXPIRED est affect au compte de l'utilisateur.

Oracle9i Database Administration I 14-8

Historique des mots de passe

Paramtre PASSWORD_REUSE_TIME

Description Priode, en jours, pendant laquelle un mot de passe ne peut pas tre rutilis Nombre maximum de rutilisations d'un mot de passe

PASSWORD_REUSE_MAX

14-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Historique des mots de passe La vrification de l'historique des mots de passe permet d'empcher un utilisateur de rutiliser un mot de passe pendant une priode donne. Vous pouvez mettre en oeuvre la vrification l'aide de l'un des paramtres suivants : PASSWORD_REUSE_TIME permet d'indiquer que l'utilisateur ne peut pas rutiliser un mot de passe pendant un certain nombre de jours. PASSWORD_REUSE_MAX permet de forcer l'utilisateur dfinir un mot de passe diffrent des mots de passe prcdents. Si vous affectez une valeur autre que DEFAULT ou UNLIMITED l'un des paramtres, vous devez affecter la valeur UNLIMITED l'autre paramtre.

Oracle9i Database Administration I 14-9

Vrifier les mots de passe

Paramtre PASSWORD_VERIFY_FUNCTION

Description Fonction PL/SQL qui vrifie la complexit d'un mot de passe avant que celui-ci ne soit affect

14-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Vrifier les mots de passe Avant d'affecter un nouveau mot de passe un utilisateur, vous pouvez appeler une fonction PL/SQL pour vrifier la validit du mot de passe. Le serveur Oracle fournit un sous-programme de vrification par dfaut, mais l'administrateur de base de donnes peut galement crer une fonction PL/SQL.

Oracle9i Database Administration I 14-10

Fonction de mot de passe fournie par l'utilisateur


Cette fonction doit tre cre dans le schma SYS et respecter la spcification suivante :
function_name( userid_parameter IN VARCHAR2(30), password_parameter IN VARCHAR2(30), old_password_parameter IN VARCHAR2(30)) RETURN BOOLEAN

14-11

Copyright Oracle Corporation, 2001. Tous droits rservs.

Fonction de mot de passe fournie par l'utilisateur Lorsque l'administrateur ajoute une nouvelle fonction de vrification de mot de passe, il doit tenir compte des restrictions suivantes : La procdure doit faire appel la spcification indique dans la diapositive. La procdure renvoie la valeur TRUE si elle aboutit et FALSE si elle choue. Si la fonction de mot de passe dclenche une exception, une erreur est renvoye et l'excution de la commande ALTER USER ou CREATE USER est interrompue. La fonction de mot de passe appartient SYS. Si la fonction de mot de passe n'est plus valide, un message d'erreur est renvoy et l'excution de la commande ALTER USER ou CREATE USER est interrompue. Remarque : Pour plus d'informations sur la commande CREATE USER, voir le chapitre "Grer les utilisateurs".

Oracle9i Database Administration I 14-11

Fonction de vrification de mot de passe VERIFY_FUNCTION


Longueur minimale de quatre caractres Le mot de passe doit tre diffrent du nom utilisateur. Il doit comporter au moins une lettre, un caractre numrique et un caractre spcial. Il doit comporter au moins trois lettres diffrentes par rapport l'ancien mot de passe.

14-12

Copyright Oracle Corporation, 2001. Tous droits rservs.

Fonction de vrification de mot de passe Le serveur Oracle fournit une fonction de vrification de complexit appele VERIFY_FUNCTION. Il s'agit d'une fonction PL/SQL par dfaut du script utlpwdmg.sql, qui doit tre excute dans le schma SYS. Au cours de l'excution du script utlpwdmg.sql, le serveur Oracle cre la fonction VERIFY_FUNCTION et modifie le profil DEFAULT l'aide de la commande ALTER PROFILE suivante : SQL> ALTER PROFILE DEFAULT LIMIT SQL> ALTER PROFILE DEFAULT LIMIT 2 3 4 5 6 7 8 PASSWORD_LIFE_TIME 60 PASSWORD_GRACE_TIME 10 PASSWORD_REUSE_TIME 1800 PASSWORD_REUSE_MAX UNLIMITED FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1/1440 PASSWORD_VERIFY_FUNCTION verify_function;

Oracle9i Database Administration I 14-12

Crer un profil : paramtres de mot de passe

CREATE PROFILE grace_5 LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME UNLIMITED PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_TIME 30 PASSWORD_VERIFY_FUNCTION verify_function PASSWORD_GRACE_TIME 5;

14-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer un profil Utilisez la commande CREATE PROFILE pour administrer les mots de passe : CREATE PROFILE profile LIMIT [FAILED_LOGIN_ATTEMPTS max_value] [PASSWORD_LIFE_TIME max_value] [ {PASSWORD_REUSE_TIME |PASSWORD_REUSE_MAX} max_value] [PASSWORD_LOCK_TIME max_value] [PASSWORD_GRACE_TIME max_value] [PASSWORD_VERIFY_FUNCTION {function|NULL|DEFAULT} ]

Oracle9i Database Administration I 14-13

Crer un profil (suite) o PROFILE correspond au nom du profil crer. FAILED_LOGIN_ATTEMPTS dfinit le nombre d'checs de connexion au compte utilisateur avant le verrouillage du compte. PASSWORD_LIFE_TIME dfinit le nombre de jours durant lesquels le mme mot de passe peut tre utilis pour l'authentification. Si le mot de passe n'a pas t chang pendant cette priode, il expire et toute tentative de connexion choue. PASSWORD_REUSE_TIME dfinit le dlai, en jours, pendant lequel un mot de passe ne peut pas tre rutilis. Si vous affectez un entier ce paramtre, vous devez affecter la valeur UNLIMITED PASSWORD_REUSE_MAX. PASSWORD_REUSE_MAX dfinit le nombre de changements de mot de passe ncessaires avant que le mot de passe actuel puisse tre rutilis. Si vous affectez un entier ce paramtre, vous devez affecter la valeur UNLIMITED PASSWORD_REUSE_TIME. PASSWORD_LOCK_TIME dfinit la dure, en jours, du verrouillage d'un compte utilisateur une fois que le nombre dfini d'checs conscutifs de connexion au compte utilisateur est atteint. PASSWORD_GRACE_TIME dfinit le nombre de jours durant lesquels, une fois la priode de grce commence, un avertissement est mis et la connexion est autorise. Le mot de passe expire s'il n'est pas chang pendant cette priode. PASSWORD_VERIFY_FUNCTION permet de transmettre une fonction PL/SQL de vrification de complexit de mot de passe sous forme d'argument l'instruction CREATE PROFILE.

Oracle9i Database Administration I 14-14

Crer un profil Utiliser Oracle Enterprise Manager pour crer un profil A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Profiles. 2. Slectionnez Create dans le menu accessible l'aide du bouton droit de la souris. 3. Entrez le nom du profil et renseignez les autres champs ou conservez les valeurs par dfaut. 4. Slectionnez l'onglet Password, puis entrez les paramtres de mot de passe du compte. 5. Cliquez sur Create.

Oracle9i Database Administration I 14-15

Crer un profil Utiliser Oracle Enterprise Manager pour crer un profil A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Profiles. 2. Slectionnez Create dans le menu accessible l'aide du bouton droit de la souris. 3. Slectionnez Object > Assign a Profile to User(s) dans le menu accessible l'aide du bouton droit de la souris. 4. Slectionnez l'utilisateur (ou les utilisateurs) 5. Cliquez sur OK.

Oracle9i Database Administration I 14-16

Modifier un profil : paramtres de mot de passe


La commande ALTER PROFILE permet de modifier les limites relatives aux mots de passe
ALTER PROFILE default LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LIFE_TIME 60 PASSWORD_GRACE_TIME 10;

14-17

Copyright Oracle Corporation, 2001. Tous droits rservs.

Modifier un profil Utilisez la commande ALTER PROFILE pour modifier les limites relatives aux mots de passe affectes un profil : ALTER PROFILE profile LIMIT [FAILED_LOGIN_ATTEMPTS max_value] [PASSWORD_LIFE_TIME max_value] [ {PASSWORD_REUSE_TIME |PASSWORD_REUSE_MAX} max_value] [PASSWORD_LOCK_TIME max_value] [PASSWORD_GRACE_TIME max_value] [PASSWORD_VERIFY_FUNCTION {function|NULL|DEFAULT} ] Pour affecter aux paramtres de mot de passe une valeur infrieure un jour : 1 heure : PASSWORD_LOCK_TIME = 1/24 10 minutes : PASSWORD_LOCK_TIME = 10/1400 5 minutes : PASSWORD_LOCK_TIME = 5/1440

Oracle9i Database Administration I 14-17

Utiliser Oracle Enterprise Manager pour modifier un profil Utiliser Oracle Enterprise Manager pour modifier un profil A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Profiles. 2. Slectionnez Create dans le menu accessible l'aide du bouton droit de la souris. 3. Slectionnez le profil. 4. Slectionnez View/Edit Details dans le menu accessible l'aide du bouton droit de la souris. 5. Slectionnez la page Password et modifiez le profil. 6. Cliquez sur Apply.

Oracle9i Database Administration I 14-18

Supprimer un profil : paramtres de mot de passe


La commande DROP PROFILE permet de supprimer un profil. Vous ne pouvez pas supprimer le profil DEFAULT. L'option CASCADE retire le profil l'utilisateur auquel il a t affect.
DROP PROFILE developer_prof; DROP PROFILE developer_prof CASCADE;

14-19

Copyright Oracle Corporation, 2001. Tous droits rservs.

Supprimer un profil : paramtres de mot de passe La commande DROP PROFILE permet de supprimer un profil : DROP PROFILE profile [CASCADE] o : profile correspond au nom du profil supprimer. CASCADE retire le profil aux utilisateurs auxquels il est affect (le serveur Oracle leur affecte alors automatiquement le profil DEFAULT. Dfinissez cette option pour supprimer un profil actuellement affect des utilisateurs). Remarques : Vous ne pouvez pas supprimer le profil DEFAULT. Lorsque vous supprimez un profil, la suppression ne s'applique qu'aux sessions cres par la suite et non aux sessions en cours.

Oracle9i Database Administration I 14-19

Supprimer un profil Utiliser Oracle Enterprise Manager pour supprimer un profil A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Profiles. 2. Slectionnez le profil. 3. Slectionnez Remove dans le menu accessible l'aide du bouton droit de la souris. 4. Slectionnez Yes pour confirmer la suppression.

Oracle9i Database Administration I 14-20

Gestion des ressources

Les limites relatives la gestion des ressources peuvent s'appliquer au niveau session, au niveau appel ou aux deux. Les limites peuvent tre dfinies par des profils via la commande CREATE PROFILE. Vous pouvez activer les limites relatives aux ressources l'aide :
du paramtre d'initialisation RESOURCE_LIMIT, de la commande ALTER SYSTEM.

14-21

Copyright Oracle Corporation, 2001. Tous droits rservs.

Gestion des ressources Pour grer l'utilisation des ressources avec des profils, procdez comme suit : 1. Crez un profil l'aide de la commande CREATE PROFILE pour dterminer les limites relatives aux ressources et aux mots de passe. 2. Affectez des profils l'aide de la commande CREATE USER ou ALTER USER. 3. Appliquez les limites relatives aux ressources l'aide de la commande ALTER SYSTEM ou en modifiant le fichier de paramtres d'initialisation (dans ce cas, l'instance doit tre arrte, puis redmarre). Ces tapes sont dcrites en dtail dans la section suivante. Remarque : La mise en application des limites relatives aux ressources n'est pas ncessaire pour activer la gestion des mots de passe Oracle.

Oracle9i Database Administration I 14-21

Activer les limites relatives aux ressources

Affectez la valeur TRUE au paramtre d'initialisation RESOURCE_LIMIT. Activez le paramtre l'aide de la commande ALTER SYSTEM pour appliquer les limites relatives aux ressources.
ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;

14-22

Copyright Oracle Corporation, 2001. Tous droits rservs.

Activer les limites relatives aux ressources Pour activer ou dsactiver les limites relatives aux ressources, modifiez le paramtre d'initialisation RESOURCE_LIMIT ou utilisez la commande ALTER SYSTEM. Paramtre d'initialisation RESOURCE_LIMIT : Modifiez ce paramtre dans le fichier de paramtres d'initialisation, puis redmarrez l'instance pour activer ou dsactiver l'application des limites relatives aux ressources. La valeur TRUE permet d'appliquer les limites. La valeur FALSE (valeur par dfaut) dsactive l'application des limites. Ce paramtre permet de mettre en oeuvre l'architecture d'application des limites. Commande ALTER SYSTEM : Utilisez cette commande pour activer ou dsactiver l'application des limites relatives aux ressources d'une instance. Le paramtre dfini l'aide de la commande ALTER SYSTEM reste effectif jusqu' sa prochaine modification ou jusqu' l'arrt de la base de donnes. Utilisez cette commande pour activer ou dsactiver l'application des limites lorsque la base de donnes ne peut pas tre arrte.

Oracle9i Database Administration I 14-22

Dfinir des limites relatives aux ressources au niveau session


Ressource CPU_PER_SESSION SESSIONS_PER_USER Description Temps CPU total calcul en centimes de secondes Nombre de sessions simultanes autorises pour chaque nom utilisateur Temps de connexion calcul en minutes Priodes d'inactivit calcules en minutes Nombre de blocs de donnes (lectures physiques et logiques) Espace priv de la mmoire SGA mesur en octets (dans le cas d'un serveur partag uniquement)

CONNECT_TIME IDLE_TIME LOGICAL_READS_PER _SESSION PRIVATE_SGA

14-23

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dfinir des limites relatives aux ressources au niveau session Remarques : Vous pouvez appliquer les limites d'un profil au niveau session et/ou au niveau appel. Les limites au niveau session s'appliquent chaque connexion. Lorsqu'une limite de niveau session est dpasse : Un message d'erreur est renvoy, par exemple : ORA-02391: exceeded simultaneous SESSION_PER_USER limit Le serveur Oracle dconnecte l'utilisateur. Remarques :

La dure d'inactivit (IDLE_TIME) n'est calcule que pour le processus serveur. Elle ne tient pas compte de l'activit de l'application. La limite IDLE_TIME n'est pas affecte par les interrogations longues et les autres oprations. LOGICAL_READS_PER_SESSION limite le nombre total d'oprations de lecture en mmoire et sur disque. Vous pouvez limiter ces oprations pour empcher les instructions qui effectuent de nombreuses oprations d'E/S de saturer la mmoire et de monopoliser le disque. PRIVATE_SGA ne s'applique que dans le cas d'une architecture serveur partag. Sa valeur peut tre dfinie en kilo-octets ou en mgaoctets.

Remarque : L'architecture serveur partag est prsente en dtail dans le cours Oracle9i DBA II.

Oracle9i Database Administration I 14-23

Dfinir des limites relatives aux ressources au niveau appel


Ressource CPU_PER_CALL Description Temps CPU par appel en centimes de secondes Nombre de blocs de donnes pouvant tre lus par appel

LOGICAL_READS_PER _CALL

14-24

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dfinir des limites relatives aux ressources au niveau appel Les limites au niveau appel s'appliquent pour chaque appel effectu pendant l'excution d'une instruction SQL. Lorsqu'une limite au niveau appel est dpasse : le traitement de l'instruction est interrompu, l'instruction est annule, toutes les instructions prcdentes restent inchanges, la session utilisateur reste connecte.

Oracle9i Database Administration I 14-24

Crer un profil : limites relatives aux ressources


CREATE PROFILE developer_prof LIMIT SESSIONS_PER_USER 2 CPU_PER_SESSION 10000 IDLE_TIME 60 CONNECT_TIME 480;

14-25

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer un profil : limites relatives aux ressources Crez un profil l'aide de la commande CREATE PROFILE : CREATE PROFILE profile LIMIT [SESSIONS_PER_USER max_value] [CPU_PER_SESSION max_value] [CPU_PER_CALL max_value] [CONNECT_TIME max_value] [IDLE_TIME max_value] [LOGICAL_READS_PER_SESSION max_value] [LOGICAL_READS_PER_CALL max_value] [COMPOSITE_LIMIT max_value] [PRIVATE_SGA max_bytes] o : profile correspond au nom du profil. max_value correspond un entier, UNLIMITED ou DEFAULT. max_bytes correspond un entier qui peut tre suivi de Ko ou Mo, UNLIMITED ou DEFAULT.

Oracle9i Database Administration I 14-25

Crer un profil : limites relatives aux ressources (suite) UNLIMITED indique que l'utilisateur qui possde ce profil peut utiliser cette ressource de manire illimite. DEFAULT indique que le profil est soumis la limite relative cette ressource, comme indiqu dans le profil DEFAULT. COMPOSITE_LIMIT limite le cot total des ressources d'une session en units de service. Pour calculer ce cot, Oracle additionne les lments suivants : CPU_PER_SESSION CONNECT_TIME LOGICAL_READS_PER_SESSION PRIVATE_SGA La vue RESOURCE_COST du dictionnaire de donnes fournit les limites affectes aux diffrentes ressources. Remarque : Pour plus d'informations sur l'indication du poids pour chaque commande ALTER RESOURCE COST des ressources de session, voir le document Oracle9i SQL Reference.

Oracle9i Database Administration I 14-26

Crer un profil : limites relatives aux ressources Utiliser Oracle Enterprise Management pour dfinir des limites relatives aux ressources A partir de la console OEM, procdez comme suit : Slectionnez Security > Profiles. Slectionnez Create dans le menu accessible l'aide du bouton droit de la souris. Entrez les paramtres relatifs aux ressources dans la page General. Cliquez sur Create.

Oracle9i Database Administration I 14-27

Grer les ressources l'aide de Database Resource Manager


Le serveur Oracle exerce un contrle accru sur les dcisions relatives la gestion des ressources Elments de Database Resource Manager
Groupe de consommateurs de ressources Plan d'allocation de ressources Mthode d'allocation des ressources Directives du plan d'allocation de ressources

Le package DBMS_RESOURCE_MANAGER permet de crer et de grer des lments. Le privilge ADMINISTER_RESOURCE_MANAGER est requis

14-28

Copyright Oracle Corporation, 2001. Tous droits rservs.

Grer les ressources l'aide de Database Resource Manager Database Resource Manager doit permettre au serveur Oracle d'exercer un contrle accru sur les dcisions relatives la gestion des ressources et donc d'viter les problmes lis une gestion inefficace du systme d'exploitation. Elments de Database Resource Manager Groupe de consommateurs de ressources : groupe d'utilisateurs ou de sessions constitu en fonction des besoins lis au traitement des ressources. Plan d'allocation de ressources : contient des directives indiquant le mode d'allocation des ressources aux groupes de consommateurs de ressources. Mthode d'allocation des ressources : mthode utilise par Database Resource Manager pour l'allocation d'une ressource spcifique. Directive du plan d'allocation de ressources : permet aux administrateurs d'associer des groupes de consommateurs de ressources des plans spcifiques et d'allouer des ressources ces groupes. Administrer Database Resource Manager Vous devez disposer du privilge systme ADMINISTER_RESOURCE_MANAGER pour administrer Database Resource Manager (DBMS_RESOURCE_MANAGER). Gnralement, les administrateurs de base de donnes disposent de ce privilge grce l'option ADMIN du rle DBA.

Oracle9i Database Administration I 14-28

Grer les ressources l'aide de Database Resource Manager


Les plans d'allocation de ressources indiquent quels groupes de consommateurs de ressources leur appartiennent. Ils contiennent des directives prcisant le mode d'allocation des ressources aux groupes de consommateurs.

14-29

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 14-29

Grer les ressources l'aide de Database Resource Manager Utiliser Oracle Enterprise Manager pour configurer Resource Manager A partir de la console OEM, procdez comme suit : Slectionnez Databases > Instance. Slectionnez Resource Consumer Groups pour procder une opration de cration ou de modification. Slectionnez Resource Plans pour procder une opration de cration ou de modification. Slectionnez Resource Plan Schedule pour procder une opration de cration ou de modification.

Oracle9i Database Administration I 14-30

Directives du plan d'allocation de ressources


Database Resource Manager offre plusieurs mthodes d'allocation des ressources : Mthode CPU Pool de sessions actif et mise en file d'attente Limite du degr de paralllisme Changement automatique de groupe de consommateurs Dure d'excution maximale estime Quota d'annulation

14-31

Copyright Oracle Corporation, 2001. Tous droits rservs.

Directives du plan d'allocation de ressources Mthode CPU : permet d'indiquer le mode d'allocation des ressources de la CPU aux groupes de consommateurs. Pool de sessions actif et mise en file d'attente : vous pouvez contrler le nombre maximal de sessions actives simultanes autorises au sein d'un groupe de consommateurs. Cette valeur maximale dsigne le pool de sessions actif. Lorsqu'une session ne peut pas tre lance en raison de la saturation du pool, elle est place dans une file d'attente. Lorsqu'une session active se termine, la premire session de la file d'attente est programme pour excution. Il est galement possible de dfinir une priode de temporisation de sorte qu'un travail en file d'attente dpasse le dlai imparti, gnrant une erreur qui provoque son interruption. Limite du degr de paralllisme : indique une limite de degr de paralllisme pour toutes les oprations d'un groupe de consommateurs. Changement automatique de groupe de consommateurs : permet de grer les ressources en fonction de certains critres. Si les critres ne sont par satisfaits, les sessions passent automatiquement un autre groupe de consommateurs. Les critres disponibles sont les suivants : Groupe cible : groupe cible du changement automatique. Dure du changement : dure du changement en secondes. Dure estime du changement : dure estime de l'opration, qui permet de dterminer s'il convient de passer une autre opration avant que l'opration en cours ne commence.

Oracle9i Database Administration I 14-31

Directives du plan d'allocation de ressources (suite) Dure d'excution maximale estime : estime de faon proactive la dure d'excution d'une opration. Le DBA peut dfinir la dure maximale estime d'excution d'une opration un moment donn l'aide du paramtre MAX_ESTIMATED_EXEC_TIME. Si l'estimation de l'opration est suprieure la valeur de MAX_ESTIMATED_EXEC_TIME, l'opration ne dmarrera pas, ce qui permet d'viter les travaux particulirement lourds qui consomment trop de ressources systme. Pool d'annulation : un pool d'annulation peut tre dfini pour chaque groupe de consommateurs de ressources pour permettre le contrle de la quantit totale d'annulations qu'un groupe peut gnrer. Lorsqu'un groupe dpasse cette limite, l'instruction LMD en cours qui gnre la journalisation est interrompue. Le pool d'annulation est dfini par le paramtre de directive du plan d'allocation de ressources UNDO_POOL. Remarque : Database Resource Manager est prsent dans le cours Oracle9i Tuning.

Oracle9i Database Administration I 14-32

Obtenir des informations sur les limites relatives aux mots de passe et aux ressources
Vous pouvez interroger les vues suivantes pour obtenir des informations sur les limites relatives aux mots de passe et aux ressources : DBA_USERS DBA_PROFILES

14-33

Copyright Oracle Corporation, 2001. Tous droits rservs.

Obtenir des informations sur les limites relatives aux mots de passe et aux ressources Interrogez la vue DBA_USERS pour obtenir des informations sur le statut des comptes. SQL> SELECT username, password, account_status, 2 FROM dba_users; USERNAME PASSWORD ACCOUNT_STATUS ------- -------- -------------SYS SYSTEM OUTLN DBSNMP HR OE 8A8F025737A9097A D4DF7931AB130E37 4A3BA55E08595C81 E066D214D5421CCC BB69FBB77CFA6B9A 957C7EF29CC223FC LOCKED OPEN OPEN OPEN OPEN OPEN

Oracle9i Database Administration I 14-33

Afficher des informations sur les profils Interrogez la vue DBA_PROFILES pour afficher des informations sur le profil des mots de passe : SQL> SELECT * FROM dba_profiles 2 3 WHERE resource_type='PASSWORD' AND profile=GRACE_5; RESOURCE --------3 30 30 UNLIMITED DEFAULT UNLIMITED 5 PASSWORD PASSWORD PASSWORD PASSWORD PASSWORD LIMIT -------

PROFILE RESOURCE_NAM -------------------GRACE_5 PASSWORD_LIFE_TIME GRACE_5 PASSWORD_REUSE_TIME GRACE_5 PASSWORD_REUSE_MAX GRACE_5 PASSWORD_LOCK_TIME GRACE_5 PASSWORD_GRACE_TIME

GRACE_5 FAILED_LOGIN_ATTEMPTS PASSWORD

GRACE_5 PASSWORD_VERIFY_FUNCTION PASSWORD

Oracle9i Database Administration I 14-34

Synthse

Ce chapitre vous a permis d'apprendre : administrer des mots de passe administrer des profils

14-35

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 14-35

Prsentation de l'exercice 14

Dans cet exercice, vous allez : activer la gestion des mots de passe dfinir des profils et les affecter aux utilisateurs dsactiver la gestion des mots de passe

14-36

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 14 Remarque : Vous pouvez raliser cet exercice avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 14-36

Exercice 14 : grer la scurit des mots de passe et les ressources 1 Excutez le script lab14_01.sql pour crer l'utilisateur Jeff, puis le script @$ORACLE_HOME/rdbms/admin/utlpwdmg.sql pour activer la gestion des mots de passe. 2 Tentez de remplacer le mot de passe de l'utilisateur Jeff par Jeff. Que se passe-t-il ? 3 Essayez de remplacer le mot de passe par Jeff pour qu'il respecte le format de gestion des mots de passe. Indice : Le mot de passe doit contenir au moins un chiffre, un caractre et un signe de ponctuation. 4 Modifiez le profil DEFAULT pour que les paramtres suivants s'appliquent aux utilisateurs possdant ce profil : le compte doit tre verrouill aprs deux tentatives de connexion, le mot de passe doit expirer aprs un dlai de 30 jours, le mme mot de passe ne doit pas tre rutilis pendant au moins une minute, le compte doit bnficier d'une priode de grce de cinq jours pour la modification d'un mot de passe qui a expir. Assurez-vous que ces exigences sont satisfaites.

Indices : Modifiez les limites du profil par dfaut l'aide de la commande ALTER PROFILE. Interrogez la vue DBA_PROFILES du dictionnaire de donnes pour vrifier les rsultats. 5 Connectez-vous sous l'ID de l'utilisateur Jeff en entrant un mot de passe non valide. Aprs deux tentatives, connectez-vous avec le mot de passe correct. Que se passe-t-il ? 6 Vrifiez l'aide de la vue DBA_USERS du dictionnaire de donnes que le compte de Jeff est verrouill. Dverrouillez-le, puis connectez-vous sous l'ID de Jeff. Indice : Dverrouillez le compte l'aide de la commande ALTER USER. 7 Dsactivez les vrifications de mots de passe pour le profil DEFAULT. Indice : Utilisez la commande ALTER PROFILE. 8 Connectez-vous sous l'ID de l'utilisateur Jeff en entrant un mot de passe non valide. Aprs deux tentatives, connectez-vous avec le mot de passe correct. Que se passe-t-il ?

Oracle9i Database Administration I 14-37

Oracle9i Database Administration I 14-38

Grer les utilisateurs

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : crer des utilisateurs de base de donnes modifier et supprimer des utilisateurs existants surveiller les informations relatives aux utilisateurs existants

15-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 15-2

Utilisateurs et scurit
Verrouillage Tablespace de compte par dfaut

Mcanisme d'authentification

Tablespace temporaire Domaine de scurit Quotas de tablespace

Privilges de rle Privilges directs

Limites relatives aux ressources

15-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Utilisateurs et scurit Domaine de scurit L'administrateur de base de donnes dfinit le nom des utilisateurs autoriss accder la base de donnes. Un domaine de scurit dfinit les paramtres qui s'appliquent l'utilisateur. Mcanisme d'authentification Trois mthodes permettent d'authentifier un utilisateur qui souhaite accder la base de donnes : Par le dictionnaire de donnes Par le systme d'exploitation Par le rseau La mthode d'authentification est prcise lorsque vous dfinissez l'utilisateur dans la base de donnes. Elle peut ensuite tre modifie. Le prsent chapitre porte uniquement sur l'authentification par la base de donnes et par le systme d'exploitation. Remarque : Pour plus d'informations sur l'authentification par le systme d'exploitation l'aide de rles, reportez-vous au chapitre "Initiation au serveur Oracle". L'authentification via le rseau est prsente dans le cours Oracle9i DBA II.

Oracle9i Database Administration I 15-3

Utilisateurs et scurit (suite) Quotas de tablespace Les quotas de tablespace contrlent la quantit d'espace physique de stockage alloue un utilisateur dans les tablespaces de la base de donnes. Tablespace par dfaut Le tablespace par dfaut dfinit l'emplacement de stockage des segments crs par un utilisateur si celui-ci n'indique pas explicitement de tablespace lors de la cration des segments. Tablespace temporaire Le tablespace temporaire dfinit l'emplacement d'allocation des extents (ensembles de blocs contigus) par le serveur Oracle lorsque l'utilisateur excute une opration dans laquelle les donnes tries sont crites sur disque. Verrouillage de compte Vous pouvez verrouiller les comptes pour empcher les utilisateurs de se connecter la base de donnes. Le verrouillage peut tre effectu automatiquement, mais l'administrateur de base de donnes peut galement verrouiller ou dverrouiller les comptes manuellement. Limites relatives aux ressources Vous pouvez dfinir des limites pour l'utilisation de ressources telles que le temps CPU, les entres/sorties (E/S) logiques et le nombre de sessions ouvertes par l'utilisateur. Privilges directs Les privilges directs permettent de contrler les actions qu'excute l'utilisateur dans la base de donnes. Privilges de rle Vous pouvez accorder indirectement des privilges un utilisateur l'aide de rles. Remarque : Pour plus d'informations sur les privilges de rle, reportez-vous aux chapitres "Grer les privilges" et "Grer les rles". Le prsent chapitre porte sur la dfinition des utilisateurs avec le mcanisme d'authentification appropri, la limitation de l'espace auquel peuvent faire appel les utilisateurs dans le systme et le contrle manuel du verrouillage des comptes.

Oracle9i Database Administration I 15-4

Schma de base de donnes


Objets de schma Tables Dclencheurs Contraintes Index Vues Squences Programmes stocks Synonymes Types de donnes dfinis par l'utilisateur Liens de base de donnes

Un schma est un ensemble nomm d'objets. Lorsqu'un utilisateur est cr, un schma correspondant est galement cr. Un utilisateur ne peut tre associ qu' un seul schma. Le nom utilisateur et le nom de schma sont souvent utiliss indiffremment
15-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Schma de base de donnes Un schma est un ensemble nomm d'objets, tels que des tables, des vues, des clusters, des procdures et des packages, associs un utilisateur. Lorsque vous crez un utilisateur de base de donnes, un schma correspondant portant le nom de l'utilisateur est cr. Un utilisateur ne peut tre associ qu' un schma du mme nom ; par consquent, nom utilisateur et schma sont souvent utiliss indiffremment. La diapositive montre les objets dont les utilisateurs peuvent tre propritaires dans une base de donnes Oracle.

Oracle9i Database Administration I 15-5

Liste de contrle pour la cration d'utilisateurs


Identifiez les tablespaces dans lesquels l'utilisateur a besoin de stocker des objets. Dterminez les quotas applicables pour chaque tablespace. Affectez un tablespace par dfaut et un tablespace temporaire. Crez un utilisateur. Accordez des privilges et des rles l'utilisateur.

15-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 15-6

Crer un utilisateur : authentification par la base de donnes


Dfinissez le mot de passe initial :
CREATE USER aaron IDENTIFIED BY soccer DEFAULT TABLESPACE data DEFAULT TEMPORARY TABLESPACE temp QUOTA 15M ON data QUOTA 10M ON users PASSWORD EXPIRE;

15-7

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer un utilisateur : authentification par la base de donnes Syntaxe : Utilisez la commande suivante pour crer un utilisateur : CREATE USER user IDENTIFIED {BY password | EXTERNALLY} [ DEFAULT TABLESPACE tablespace ] [ TEMPORARY TABLESPACE tablespace ] [ QUOTA {integer [K | M ] | UNLIMITED } ON tablespace [ QUOTA {integer [K | M ] | UNLIMITED } ON tablespace ]...] [ PASSWORD EXPIRE ] [ ACCOUNT { LOCK | UNLOCK }] [ PROFILE { profile | DEFAULT }]

Oracle9i Database Administration I 15-7

Crer un utilisateur : authentification par la base de donnes (suite) Syntaxe (suite) O : BY password indique que l'utilisateur est authentifi par la base de donnes et qu'il doit fournir un mot de passe pour se connecter. EXTERNALLY indique que l'utilisateur est authentifi par le systme d'exploitation. GLOBALLY AS indique que l'utilisateur est authentifi de faon globale. DEFAULT TABLESPACE ou TEMPORARY TABLESPACE dsigne le tablespace par dfaut ou le tablespace temporaire de l'utilisateur. QUOTA dfinit l'espace maximum allou aux objets dtenus par l'utilisateur dans le tablespace (le quota peut tre dfini par un entier reprsentant des octets ou des kilo-octets et des mgaoctets. Le mot-cl UNLIMITED permet d'indiquer que les objets dtenus par l'utilisateur peuvent utiliser l'ensemble de l'espace disponible du tablespace. Par dfaut, aucun quota de tablespace n'est affect aux utilisateurs). PASSWORD EXPIRE force l'utilisateur rinitialiser le mot de passe lorsqu'il se connecte la base de donnes l'aide de SQL*Plus (cette option n'est valide que si l'utilisateur est authentifi par la base de donnes). ACCOUNT LOCK/UNLOCK permet de verrouiller ou de dverrouiller explicitement le compte de l'utilisateur (la valeur par dfaut est UNLOCK). PROFILE permet de contrler l'utilisation des ressources et de dfinir le mcanisme de contrle par mot de passe appliquer l'utilisateur. Remarque : Pour plus d'informations sur la cration de profils, reportez-vous au chapitre "Grer les profils". Vous devez imprativement utiliser une mthode d'authentification par mot de passe. Si vous dfinissez un mot de passe, celui-ci est gr par le serveur Oracle dans le dictionnaire de donnes. Les mcanismes de contrle par mot de passe fournis par le serveur Oracle sont disponibles lorsque les utilisateurs sont authentifis par le serveur. Lorsque le mot de passe a t dfini et que l'utilisateur se connecte l'aide de SQL*Plus, celuici reoit le message suivant lui demandant d'entrer un nouveau mot de passe : ERROR: ORA-28001: the account has expired Changing password for PETER Old password: New password: Retype new password: Password changed

Oracle9i Database Administration I 15-8

Crer un utilisateur : authentification par la base de donnes (suite) Utiliser Oracle Enterprise Manager pour crer un utilisateur A partir de la console OEM : 1. Slectionnez Databases > Security > Users. 2. Slectionnez Create dans le menu accessible par le bouton droit de la souris. 3. Entrez les informations ncessaires la cration de l'utilisateur. 4. Cliquez sur Create. Oracle Security Manager accorde automatiquement le rle CONNECT tous les utilisateurs crs l'aide de cet outil. Remarque : Pour plus d'informations sur le rle CONNECT, reportez-vous au chapitre "Grer les rles".

Oracle9i Database Administration I 15-9

Crer un utilisateur : authentification par le systme d'exploitation


Le paramtre d'initialisation OS_AUTHENT_PREFIX indique le format des noms utilisateur. Sa valeur par dfaut est OPS$.
CREATE USER aaron IDENTIFIED EXTERNALLY DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE temp QUOTA 15m ON data PASSWORD EXPIRE;

15-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer un utilisateur : authentification par le systme d'exploitation Authentification par le systme d'exploitation Utilisez la clause IDENTIFIED EXTERNALLY de la commande CREATE USER pour indiquer que l'utilisateur doit tre authentifi par le systme d'exploitation. Cette option est gnralement utile lorsque l'utilisateur se connecte directement la machine sur laquelle s'excute le serveur Oracle. Nom utilisateur pour l'authentification par le systme d'exploitation Le paramtre d'initialisation OS_AUTHENT_PREFIX permet de dfinir le format des noms utilisateur pour l'authentification par le systme d'exploitation. La valeur OPS$ est utilise par dfaut pour garantir la compatibilit descendante avec les versions antrieures du serveur Oracle. Pour affecter la valeur NULL au prfixe, dfinissez ce paramtre d'initialisation comme suit : OS_AUTHENT_PREFIX = L'exemple de la diapositive montre comment l'utilisateur aaron est dfini dans la base de donnes. L'utilisateur aaron du systme d'exploitation peut accder la base de donnes sans validation du serveur Oracle. Ainsi, pour se connecter au systme sous UNIX l'aide de SQL*Plus, aaron doit entrer la commande suivante partir du systme d'exploitation : $ sqlplus /

Oracle9i Database Administration I 15-10

Crer un utilisateur : authentification par le systme d'exploitation (suite) Nom utilisateur pour l'authentification par le systme d'exploitation Remarque : Le paramtre OS_AUTHENT_PREFIX=OPS$ permet d'authentifier l'utilisateur par le systme d'exploitation ou par le serveur Oracle. Dans ce cas, l'administrateur de base de donnes peut crer l'utilisateur l'aide d'une commande du type suivant : CREATE USER ops$user IDENTIFIED BY password ... L'utilisateur qui se connecte la machine sur laquelle s'excute le serveur Oracle n'a pas besoin de fournir de mot de passe. Si l'utilisateur se connecte depuis un client distant, il doit fournir un mot de passe. Le paramtre d'initialisation REMOTE_OS_AUTHENT=TRUE indique que l'utilisateur peut tre authentifi par un systme d'exploitation distant. La valeur par dfaut FALSE indique que l'utilisateur ne peut tre authentifi que par la machine sur laquelle s'excute le serveur Oracle. Utilisez ce paramtre avec prcaution en raison de problmes de scurit potentiels. La modification du paramtre OS_AUTHENT_PREFIX peut empcher les utilisateurs de la base de donnes qui sont authentifis par le systme d'exploitation de se connecter la base.

Oracle9i Database Administration I 15-11

Modifier les quotas de tablespace d'un utilisateur


Vous pouvez modifier les quotas de tablespace d'un utilisateur dans les cas suivants : lorsque la taille des tables appartenant l'utilisateur augmente de manire imprvue, lorsqu'une application est tendue et ncessite des tables ou des index supplmentaires, lorsque les objets sont rorganiss et placs dans des tablespaces diffrents. Procdez comme suit pour modifier le quota de tablespace d'un utilisateur :
ALTER USER aaron QUOTA 0 ON USERS;
15-12

Copyright Oracle Corporation, 2001. Tous droits rservs.

Modifier les quotas de tablespace d'un utilisateur Utilisez la commande suivante pour modifier les quotas d'espace de tablespace ou redfinir les tablespaces : ALTER USER user [ DEFAULT TABLESPACE tablespace] [ TEMPORARY TABLESPACE tablespace] [ QUOTA {integer [K | M] | UNLIMITED } ON tablespace [ QUOTA {integer [K | M] | UNLIMITED } ON tablespace ] ...] Si vous dfinissez un quota de 0, les objets de l'utilisateur sont conservs dans le tablespace rvoqu, mais aucun nouvel espace ne peut leur tre allou. Par exemple, si le tablespace USERS contient une table de 10 Mo et qu'un quota de 0 est affect ce tablespace, plus aucun extent ne peut tre allou la table. Les options non modifies ne sont pas affectes. Remarque : Le privilge UNLIMITED TABLESPACE est prioritaire sur les paramtres des quotas.

Oracle9i Database Administration I 15-12

Modifier les quotas de tablespace d'un utilisateur Utilisez la commande suivante pour modifier les quotas d'espace de tablespace ou redfinir les tablespaces : 1. Slectionnez Databases > Security > Users. 2. Slectionnez l'utilisateur. 3. Slectionnez View/Edit Details dans le menu accessible par le bouton droit de la souris. 4. Entrez le quota dans la page Quota. 5. Cliquez sur Apply.

Oracle9i Database Administration I 15-13

Supprimer un utilisateur

La clause CASCADE permet de supprimer tous les objets d'un schma.


DROP USER aaron;

Vous ne pouvez pas supprimer les utilisateurs qui sont connects au serveur Oracle.
DROP USER aaron CASCADE;

15-14

Copyright Oracle Corporation, 2001. Tous droits rservs.

Supprimer un utilisateur DROP USER user [CASCADE] Rgles : L'option CASCADE supprime tous les objets du schma avant de supprimer l'utilisateur. Elle doit tre dfinie si le schma contient des objets. Vous ne pouvez pas supprimer un utilisateur connect au serveur Oracle.

Oracle9i Database Administration I 15-14

Supprimer un utilisateur Utiliser Oracle Enterprise Manager pour supprimer un utilisateur A partir de la console OEM : 1. Slectionnez Databases > Security > Users. 2. Slectionnez l'utilisateur. 3. Slectionnez Remove dans le menu accessible par le bouton droit de la souris. 4. Slectionnez Yes pour confirmer la suppression. 5. Cliquez sur Apply.

Oracle9i Database Administration I 15-15

Obtenir des informations sur les utilisateurs


Interrogez les vues suivantes pour obtenir des informations sur les utilisateurs : DBA_USERS DBA_TS_QUOTAS

15-16

Copyright Oracle Corporation, 2001. Tous droits rservs.

Obtenir des informations sur les utilisateurs L'interrogation ci-aprs permet de rechercher le tablespace par dfaut (default_tablespace) de tous les utilisateurs. SQL> SELECT username, default_tablespace 2 FROM dba_users; USERNAME --------SYS SYSTEM OUTLN DBSNMP HR OE DEFAULT_TABLESPACE -----------------SYSTEM SYSTEM SYSTEM SYSTEM SAMPLE SAMPLE

Oracle9i Database Administration I 15-16

Synthse

Ce chapitre vous a permis d'apprendre : crer des utilisateurs en indiquant le mcanisme de contrle par mot de passe appropri contrler l'utilisation de l'espace

15-17

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 15-17

Prsentation de l'exercice 15

Dans cet exercice, vous allez : crer des utilisateurs afficher des informations sur les utilisateurs l'aide du dictionnaire de donnes supprimer les quotas d'un utilisateur

15-18

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 15 Remarque : Vous pouvez raliser cet exercice avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 15-18

Exercice 15 : grer les utilisateurs 1 Crez l'utilisateur Bob associ au mot de passe CRUSADER. Assurez-vous que les objets et les segments temporaires crs par Bob ne sont pas ajouts au tablespace SYSTEM. Assurez-vous galement que Bob peut se connecter et crer dans les tablespaces USERS et INDX des objets dont la taille peut atteindre un mgaoctet. Utilisez le script lab15_01.sql pour accorder Bob le droit de crer des sessions. Indice : Affectez Bob le tablespace par dfaut USERS et le tablespace temporaire TEMP. 2 Crez l'utilisateur Emi associ au mot de passe MARY. Assurez-vous que les objets et les segments de tri crs par Emi ne sont pas ajouts au tablespace SYSTEM. 3 Affichez les informations sur Bob et Emi partir du dictionnaire de donnes. Indice : Vous pouvez interroger la vue DBA_USERS. 4 A partir du dictionnaire de donnes, affichez les informations sur la quantit d'espace que Bob peut utiliser dans les tablespaces. Indice : Vous pouvez interroger la vue DBA_TS_QUOTAS. 5 a Sous l'ID utilisateur Bob, modifiez le tablespace temporaire de Bob. Que se passe-t-il ? b Sous l'ID utilisateur Bob, remplacez le mot de passe de Bob par SAM. 6 Sous l'ID utilisateur SYSTEM, supprimez le quota de Bob sur son tablespace par dfaut. 7 Supprimez le compte d'Emi de la base de donnes. 8 Bob a oubli son mot de passe. Affectez-lui le mot de passe OLINK en vous assurant qu'il recevra une demande de modification de ce mot de passe lors de sa prochaine connexion.

Oracle9i Database Administration I 15-19

Oracle9i Database Administration I 15-20

Grer les privilges

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : identifier les privilges systme et objet accorder et rvoquer des privilges

16-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 16-2

Grer les privilges

Il existe deux types de privilges utilisateur Oracle : Systme : permet aux utilisateurs de raliser certaines actions dans la base de donnes Objet : permet aux utilisateurs d'accder un objet donn et de le manipuler

16-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Privilges Un privilge est un droit d'excution d'un type donn d'instruction SQL ou un droit d'accs l'objet d'un autre utilisateur. Il autorise son dtenteur : se connecter une base de donnes, crer une table, slectionner des lignes dans la table d'un autre utilisateur, excuter la procdure stocke d'un autre utilisateur. Privilges systme Chaque privilge systme permet un utilisateur d'effectuer une opration spcifique ou une catgorie d'oprations sur la base de donnes. Par exemple, le privilge li la cration de tablespaces est un privilge systme. Privilges objet Chaque privilge objet autorise un utilisateur excuter une action spcifique sur un objet tel qu'une table, une vue, une squence, une procdure, une fonction ou un package. Dans sa tche de contrle des privilges, un administrateur de base de donnes est charg : d'autoriser un utilisateur effectuer un type d'opration, d'accorder et de rvoquer le droit d'effectuer certaines oprations systme, d'accorder des privilges directement des utilisateurs ou des rles, d'accorder des privilges tous les utilisateurs (PUBLIC).

Oracle9i Database Administration I 16-3

Privilges systme

Il existe plus de 100 privilges systme diffrents. Le mot-cl ANY signifie que les utilisateurs disposent du privilge de gestion d'objets dans n'importe quel schma. La commande GRANT permet d'accorder un privilge un utilisateur ou un groupe d'utilisateurs. La commande REVOKE supprime les privilges.

16-4

Copyright Oracle Corporation, 2001. Tous droits rservs.

Privilges systme Ces privilges peuvent tre classs comme suit : Privilges autorisant l'excution d'oprations sur l'ensemble du systme, tels que CREATE SESSION, CREATE TABLESPACE Privilges autorisant la gestion d'objets dans un schma propre l'utilisateur, tels que CREATE TABLE Privilges autorisant la gestion d'objets de n'importe quel schma, tels que CREATE ANY TABLE Les privilges peuvent tre grs l'aide des commandes LDD GRANT et REVOKE, qui permettent d'accorder et de rvoquer des privilges systme un utilisateur ou un rle (pour plus d'informations sur les rles, voir le chapitre "Grer les rles").

Oracle9i Database Administration I 16-4

Privilges systme : exemples


Catgorie INDEX Exemples CREATE ANY INDEX ALTER ANY INDEX DROP ANY INDEX CREATE TABLE CREATE ANY TABLE ALTER ANY TABLE DROP ANY TABLE SELECT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE CREATE SESSION ALTER SESSION RESTRICTED SESSION CREATE TABLESPACE ALTER TABLESPACE DROP TABLESPACE UNLIMITED TABLESPACE

TABLE

SESSION

TABLESPACE

16-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Privilges systme : exemples Il n'existe pas de privilge CREATE INDEX. Le privilge CREATE TABLE permet d'excuter les commandes CREATE INDEX et ANALYZE. L'utilisateur doit disposer d'un quota de tablespace ou du privilge UNLIMITED TABLESPACE. Les privilges tels que CREATE TABLE, CREATE PROCEDURE et CREATE CLUSTER impliquent la suppression des objets concerns. Le privilge UNLIMITED TABLESPACE ne peut pas tre accord un rle. Le privilge DROP ANY TABLE est requis pour vider une table appartenant un autre schma.

Oracle9i Database Administration I 16-5

Accorder des privilges systme

Utilisez la commande GRANT pour accorder des privilges systme. Le bnficiaire peut accorder le privilge systme d'autres utilisateurs grce l'option ADMIN.
GRANT CREATE SESSION TO emi; GRANT CREATE SESSION TO emi WITH ADMIN OPTION;

16-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

Accorder des privilges systme Utilisez l'instruction SQL GRANT pour accorder des privilges systme aux utilisateurs. Le bnficiaire peut ensuite accorder un privilge systme d'autres utilisateurs avec l'option ADMIN, mais cette opration doit s'effectuer avec prcaution. En effet, ces privilges sont gnralement rservs aux administrateurs de la scurit et sont rarement accords d'autres utilisateurs. GRANT {system_privilege|role} [, {system_privilege|role} ]... TO {user|role|PUBLIC} [, {user|role|PUBLIC} ]... [WITH ADMIN OPTION] O : system_privilege : dsigne le privilge systme accorder. role : dsigne le nom du rle accorder. PUBLIC : accorde le privilge systme tous les utilisateurs. WITH ADMIN OPTION : autorise le bnficiaire accorder son privilge ou son rle d'autres utilisateurs ou rles.

Oracle9i Database Administration I 16-6

Accorder des privilges systme Utiliser Oracle Enterprise Manager pour accorder des privilges systme A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Users. 2. Slectionnez l'utilisateur auquel le privilge doit tre accord. 5. Cliquez sur l'onglet System Privileges dans la zone dtails de la console. 6. Slectionnez les privilges systme accorder. Vous pouvez cocher la case Admin Option. 7. Cliquez sur Apply.

Oracle9i Database Administration I 16-7

Privilges SYSDBA et SYSOPER


Catgorie SYSOPER Exemples STARTUP SHUTDOWN ALTER DATABASE OPEN | MOUNT ALTER DATABASE BACKUP CONTROLFILE TO RECOVER DATABASE ALTER DATABASE ARCHIVELOG RESTRICTED SESSION SYSOPER PRIVILEGES WITH ADMIN OPTION CREATE DATABASE ALTER TABLESPACE BEGIN/END BACKUP RESTRICTED SESSION RECOVER DATABASE UNTIL

SYSDBA

16-8

Copyright Oracle Corporation, 2001. Tous droits rservs.

Privilges SYSDBA et SYSOPER Seul l'administrateur de base de donnes peut se connecter une base de donnes avec des privilges administrateur. Lorsqu'un utilisateur se connecte une base de donnes en tant que SYSDBA, il dispose de tous les privilges lui permettant d'excuter n'importe quelle opration sur la base ou sur les objets de celle-ci.

Oracle9i Database Administration I 16-8

Restrictions relatives aux privilges systme

Le paramtre O7_DICTIONARY_ACCESSIBILITY : contrle les restrictions relatives aux privilges systme, permet d'accder aux objets du schma SYS s'il possde la valeur TRUE, grce la valeur par dfaut FALSE, les privilges systme qui permettent d'accder n'importe quel schma interdisent l'accs au schma SYS.

16-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Restrictions relatives aux privilges systme Le mcanisme de protection du dictionnaire de donnes d'Oracle9i empche les utilisateurs non autoriss d'accder aux objets du dictionnaire. L'accs aux objets du dictionnaire est limit aux rles SYSDBA et SYSOPER. En effet, les privilges systme qui permettent d'accder aux objets d'autres schmas n'autorisent pas l'accs aux objets du dictionnaire. Par exemple, le privilge SELECT ANY TABLE vous permet d'accder des vues et des tables d'autres schmas, mais ne vous autorise pas slectionner des objets du dictionnaire (tables de base, vues, packages et synonymes). Si le paramtre possde la valeur TRUE, l'accs aux objets du schma SYS est autoris (fonction Oracle7). Si sa valeur est FALSE, les privilges SYSTEM qui permettent d'accder aux objets d'autres schmas n'autorisent pas l'accs aux objets du schma du dictionnaire de donnes. Par exemple, si O7_DICTIONARY_ACCESSIBILITY=FALSE, l'instruction SELECT ANY TABLE autorise l'accs aux vues et tables de tous les schmas, l'exception de SYS (les dictionnaires sont inaccessibles, par exemple). Le privilge systme EXECUTE ANY PROCEDURE permet d'accder aux procdures de n'importe quel autre schma, l'exception de celles du schma SYS.

Oracle9i Database Administration I 16-9

Rvoquer des privilges systme

Utilisez la commande REVOKE pour rvoquer un privilge systme accord un utilisateur. Les utilisateurs qui disposent d'un privilge systme avec l'option ADMIN OPTION peuvent rvoquer des privilges systme. Seuls les privilges accords via la commande GRANT peuvent tre rvoqus.
REVOKE CREATE TABLE FROM emi;

16-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rvoquer des privilges systme Vous pouvez rvoquer des privilges systme l'aide de l'instruction SQL REVOKE. Tout utilisateur disposant d'un privilge systme avec l'option ADMIN OPTION peut rvoquer le privilge de n'importe quel autre utilisateur de la base de donnes, mme si ce n'est pas lui qui l'a accord. REVOKE {system_privilege|role} [, {system_privilege|role} ]... FROM {user|role|PUBLIC} [, {user|role|PUBLIC} ]... Remarque : La commande REVOKE permet uniquement la rvocation des privilges systme accords directement l'aide de la commande GRANT. La rvocation de privilges systme peut avoir un impact sur certains objets dpendants. Par exemple, si vous accordez le privilge SELECT ANY TABLE un utilisateur qui a cr des procdures ou des vues utilisant une table d'un autre schma, la rvocation de ce privilge invalide ces procdures ou vues.

Oracle9i Database Administration I 16-10

Rvoquer des privilges systme Utiliser Oracle Enterprise Manager pour rvoquer des privilges systme A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Users. 2. Slectionnez l'utilisateur dont le privilge doit tre rvoqu. 3. Cliquez sur la page System Privileges dans la zone dtails de la console. 4. Slectionnez le privilge systme rvoquer, puis cliquez sur la flche oriente vers le haut. 5. Cliquez sur Apply.

Oracle9i Database Administration I 16-11

Rvoquer des privilges systme accords avec l'option ADMIN OPTION


DBA Jeff Emi

GRANT

REVOKE

DBA

Jeff

Emi

16-12

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rvoquer des privilges systme (suite) La rvocation d'un privilge systme n'entrane aucun effet de cascade, que le privilge ait t accord avec l'option ADMIN OPTION ou non. Suivez les tapes de l'exemple suivant : Scnario 1. L'administrateur de base de donnes accorde le privilge systme CREATE TABLE Jeff avec l'option ADMIN OPTION. 2. Jeff cre une table. 3. Jeff accorde le privilge systme CREATE TABLE Emi. 4. Emi cre une table. 5. L'administrateur de base de donnes rvoque le privilge systme CREATE TABLE prcdemment accord Jeff. Rsultat : La table de Jeff n'est pas supprime, mais il ne peut plus crer de table. La table d'Emi n'est pas supprime et cette dernire dispose toujours du privilge systme CREATE TABLE.

Oracle9i Database Administration I 16-12

Privilges objet

Priv. objet ALTER DELETE EXECUTE INDEX INSERT REFERENCES SELECT UPDATE

Table Vue

Squence

Procdure

16-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Privilges objet Un privilge objet est un privilge ou droit autorisant la ralisation d'une action donne sur une table, une vue, une squence, une procdure, une fonction ou un package spcifique. Chaque objet prsente un ensemble propre de privilges pouvant tre accords. Le tableau de la diapositive rpertorie les privilges correspondant diffrents objets. Ainsi, les seuls privilges qui s'appliquent une squence sont SELECT et ALTER. Vous pouvez restreindre les privilges UPDATE, REFERENCES et INSERT en prcisant un sous-ensemble de colonnes pouvant tre mises jour. Vous pouvez limiter un droit de type SELECT en crant une vue prsentant un sous-ensemble de colonnes et en accordant le privilge SELECT sur la vue. Un privilge accord sur un synonyme octroie directement un droit sur la table de base rfrence par ce synonyme. Remarque : La diapositive ne fournit pas la liste exhaustive des privilges objet.

Oracle9i Database Administration I 16-13

Accorder des privilges objet

Utilisez la commande GRANT pour accorder des privilges objet. L'objet doit se trouver dans votre schma ou vous devez avoir reu le privilge avec l'option GRANT OPTION.
GRANT EXECUTE ON dbms_output TO jeff; GRANT UPDATE ON emi.customers TO jeff WITH GRANT OPTION;

16-14

Copyright Oracle Corporation, 2001. Tous droits rservs.

Accorder des privilges objet GRANT { object_privilege [(column_list)] [, object_privilege [(column_list)] ]... |ALL [PRIVILEGES]} ON TO [schema.]object {user|role|PUBLIC}[, {user|role|PUBLIC} ]... [WITH GRANT OPTION] O : object_privilege dsigne le privilge objet accorder. column_list dsigne une colonne de table ou de vue (cette valeur ne peut tre dfinie que lors de l'octroi du privilge INSERT, REFERENCES ou UPDATE). ALL accorde tous les privilges objet qui ont t accords avec l'option WITH GRANT OPTION. ON object identifie l'objet sur lequel les privilges doivent tre accords. WITH GRANT OPTION autorise le bnficiaire accorder ses privilges objet d'autres utilisateurs ou rles.

Oracle9i Database Administration I 16-14

Accorder des privilges objet (suite) Utilisez l'instruction GRANT pour accorder des privilges objet. Pour cela, l'objet doit se trouver dans votre schma ou vous devez avoir reu le privilge avec l'option GRANT OPTION. Par dfaut, si vous disposez d'un objet, tous les privilges associs vous sont automatiquement accords. Par souci de scurit, soyez prudent lorsque vous accordez d'autres utilisateurs des privilges sur vos objets.

Oracle9i Database Administration I 16-15

Accorder des privilges objet Utiliser Oracle Enterprise Manager pour accorder des privilges objet A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Users. 2. Slectionnez l'utilisateur auquel le privilge doit tre accord. 3. Cliquez sur l'onglet Object Privileges dans la zone dtails de la console. 4. Dveloppez l'arborescence des dossiers du schma et de l'objet sur lesquels le privilge objet sera accord. 5. Slectionnez le privilge accorder dans le champ Available Privileges, puis cliquez sur la flche oriente vers le bas. 6. Vous pouvez cocher la case Grant Option, si ncessaire. 7. Cliquez sur Apply.

Oracle9i Database Administration I 16-16

Rvoquer des privilges objet

Utilisez la commande REVOKE pour rvoquer des privilges objet. Seul l'utilisateur qui a accord un privilge objet peut le rvoquer.
REVOKE SELECT ON emi.orders FROM jeff;

16-17

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rvoquer des privilges objet L'instruction REVOKE permet de rvoquer des privilges objet. L'utilisateur qui rvoque un privilge objet doit tre celui qui l'a accord. Utilisez la commande suivante pour rvoquer des privilges objet : REVOKE { object_privilege [, object_privilege ]... | ALL [PRIVILEGES] } ON [schema.]object [, {user|role|PUBLIC} ]... [CASCADE CONSTRAINTS] FROM {user|role|PUBLIC}

Oracle9i Database Administration I 16-17

Rvoquer des privilges objet (suite) O : object_privilege dsigne le privilge objet rvoquer. ALL rvoque tous les privilges objet accords l'utilisateur. ON dsigne l'objet sur lequel les privilges objet doivent tre rvoqus. FROM identifie les utilisateurs ou les rles dont les privilges objet sont rvoqus. CASCADE CONSTRAINTS supprime toutes les contraintes d'intgrit rfrentielle dfinies l'aide du privilge REFERENCES ou ALL. Restriction : Les utilisateurs qui accordent des privilges objet peuvent les rvoquer uniquement aux utilisateurs auxquels ils les ont accords.

Oracle9i Database Administration I 16-18

Rvoquer des privilges objet Utiliser Oracle Enterprise Manager pour rvoquer des privilges objet A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Users. 2. Slectionnez l'utilisateur dont le privilge doit tre rvoqu. 3. Cliquez sur l'onglet Object Privileges dans la zone dtails de la console. 4. Slectionnez le privilge objet rvoquer, puis cliquez sur la flche oriente vers le haut. 5. Cliquez sur Apply.

Oracle9i Database Administration I 16-19

Rvoquer les privilges objet accords avec l'option WITH GRANT OPTION
Bob GRANT Jeff Emi

REVOKE

Bob

Jeff

Emi

16-20

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rvoquer des privilges objet (suite) Vous pouvez observer des effets de cascade lorsque vous rvoquez un privilge systme li une opration LMD. Par exemple, si le privilge SELECT ANY TABLE est accord un utilisateur qui a cr des procdures utilisant la table, toutes les procdures contenues dans le schma de l'utilisateur doivent tre recompiles pour tre rutilises. La rvocation de privilges objet accords avec l'option WITH GRANT OPTION provoque galement un effet de cascade. Suivez les tapes de l'exemple suivant : Scnario Jeff reoit le privilge objet SELECT sur la table EMPLOYEES avec l'option GRANT OPTION. Jeff accorde ce privilge sur la table EMPLOYEES Emi. Par la suite, le privilge SELECT de Jeff est rvoqu en entranant la rvocation du privilge d'Emi.

Oracle9i Database Administration I 16-20

Obtenir des informations sur les privilges

Interrogez les vues suivantes pour obtenir des informations sur les privilges : DBA_SYS_PRIVS SESSION_PRIVS DBA_TAB_PRIVS DBA_COL_PRIVS

16-21

Copyright Oracle Corporation, 2001. Tous droits rservs.

Obtenir des informations sur les privilges DBA_SYS_PRIVS affiche la liste des privilges systme accords aux utilisateurs et aux rles. SESSION_PRIVS affiche la liste des privilges auxquels l'utilisateur a accs. DBA_TAB_PRIVS affiche la liste de tous les octrois de privilges sur les objets de la base de donnes. DBA_COL_PRIVS dcrit tous les octrois de privilges sur les colonnes de la base de donnes.

Oracle9i Database Administration I 16-21

Synthse

Ce chapitre vous a permis d'apprendre : identifier les privilges systme et objet accorder et rvoquer des privilges

16-22

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 16-22

Prsentation de l'exercice 16

Dans cet exercice, vous allez : crer un utilisateur et accorder des privilges systme accorder des privilges objet des utilisateurs

16-23

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 16 Remarque : Cet exercice peut tre ralis avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 16-23

Exercice 16 : grer les privilges 1 Connectez-vous en tant qu'utilisateur SYSTEM, crez l'utilisateur Emi et autorisez-le se connecter la base de donnes et crer des objets dans son schma. Affectez-lui le tablespace par dfaut DATA01, le tablespace temporaire TEMP et un quota de tablespace de 1 Mo sur DATA01. 2 a Excutez le script lab16_02a.sql pour vous connecter en tant qu'Emi et crez les tables CUSTOMERS1 et ORDERS1. b Connectez-vous en tant qu'utilisateur SYSTEM, puis copiez les donnes de SYSTEM.CUSTOMERS vers la table CUSOMTERS1 d'Emi. Vrifiez que les enregistrements ont t insrs. c Connectez-vous en tant qu'utilisateur SYSTEM, puis autorisez Bob slectionner des donnes dans la table CUSTOMERS1 d'Emi. Que se passe-t-il ? 3 Reconnectez-vous en tant qu'Emi, puis autorisez Bob slectionner des donnes dans la table CUSTOMERS1 d'Emi et octroyer ce droit d'autres utilisateurs. En tant qu'utilisateur SYSTEM, consultez les vues du dictionnaire de donnes qui enregistrent ces actions. Indice : Utilisez la vue DBA_TAB_PRIVS. se 4 Crez l'utilisateur Trevor identifi par le mot de passe diamond1$, puis autorisez-le connecter la base de donnes. 5 a En tant que Bob, autorisez Trevor accder la table CUSTOMERS1 d'Emi. Remarque : Le message A password has expired va s'afficher en raison des oprations effectues l'tape 8 de l'exercice 15. Remplacez le mot de passe de Bob par aaron$1. 5 b Connectez-vous en tant qu'Emi, puis retirez Bob le privilge de lecture de la table CUSTOMERS1 d'Emi. c Connectez-vous en tant que Trevor, puis interrogez la table CUSTOMERS1 d'Emi. Que se passe-t-il ? 6 Autorisez Emi dmarrer et arrter la base de donnes, mais pas en crer une nouvelle.

Oracle9i Database Administration I 16-24

Grer les privilges

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : identifier les privilges systme et objet accorder et rvoquer des privilges

16-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 16-2

Grer les privilges

Il existe deux types de privilges utilisateur Oracle : Systme : permet aux utilisateurs de raliser certaines actions dans la base de donnes Objet : permet aux utilisateurs d'accder un objet donn et de le manipuler

16-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Privilges Un privilge est un droit d'excution d'un type donn d'instruction SQL ou un droit d'accs l'objet d'un autre utilisateur. Il autorise son dtenteur : se connecter une base de donnes, crer une table, slectionner des lignes dans la table d'un autre utilisateur, excuter la procdure stocke d'un autre utilisateur. Privilges systme Chaque privilge systme permet un utilisateur d'effectuer une opration spcifique ou une catgorie d'oprations sur la base de donnes. Par exemple, le privilge li la cration de tablespaces est un privilge systme. Privilges objet Chaque privilge objet autorise un utilisateur excuter une action spcifique sur un objet tel qu'une table, une vue, une squence, une procdure, une fonction ou un package. Dans sa tche de contrle des privilges, un administrateur de base de donnes est charg : d'autoriser un utilisateur effectuer un type d'opration, d'accorder et de rvoquer le droit d'effectuer certaines oprations systme, d'accorder des privilges directement des utilisateurs ou des rles, d'accorder des privilges tous les utilisateurs (PUBLIC).

Oracle9i Database Administration I 16-3

Privilges systme

Il existe plus de 100 privilges systme diffrents. Le mot-cl ANY signifie que les utilisateurs disposent du privilge de gestion d'objets dans n'importe quel schma. La commande GRANT permet d'accorder un privilge un utilisateur ou un groupe d'utilisateurs. La commande REVOKE supprime les privilges.

16-4

Copyright Oracle Corporation, 2001. Tous droits rservs.

Privilges systme Ces privilges peuvent tre classs comme suit : Privilges autorisant l'excution d'oprations sur l'ensemble du systme, tels que CREATE SESSION, CREATE TABLESPACE Privilges autorisant la gestion d'objets dans un schma propre l'utilisateur, tels que CREATE TABLE Privilges autorisant la gestion d'objets de n'importe quel schma, tels que CREATE ANY TABLE Les privilges peuvent tre grs l'aide des commandes LDD GRANT et REVOKE, qui permettent d'accorder et de rvoquer des privilges systme un utilisateur ou un rle (pour plus d'informations sur les rles, voir le chapitre "Grer les rles").

Oracle9i Database Administration I 16-4

Privilges systme : exemples


Catgorie INDEX Exemples CREATE ANY INDEX ALTER ANY INDEX DROP ANY INDEX CREATE TABLE CREATE ANY TABLE ALTER ANY TABLE DROP ANY TABLE SELECT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE CREATE SESSION ALTER SESSION RESTRICTED SESSION CREATE TABLESPACE ALTER TABLESPACE DROP TABLESPACE UNLIMITED TABLESPACE

TABLE

SESSION

TABLESPACE

16-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Privilges systme : exemples Il n'existe pas de privilge CREATE INDEX. Le privilge CREATE TABLE permet d'excuter les commandes CREATE INDEX et ANALYZE. L'utilisateur doit disposer d'un quota de tablespace ou du privilge UNLIMITED TABLESPACE. Les privilges tels que CREATE TABLE, CREATE PROCEDURE et CREATE CLUSTER impliquent la suppression des objets concerns. Le privilge UNLIMITED TABLESPACE ne peut pas tre accord un rle. Le privilge DROP ANY TABLE est requis pour vider une table appartenant un autre schma.

Oracle9i Database Administration I 16-5

Accorder des privilges systme

Utilisez la commande GRANT pour accorder des privilges systme. Le bnficiaire peut accorder le privilge systme d'autres utilisateurs grce l'option ADMIN.
GRANT CREATE SESSION TO emi; GRANT CREATE SESSION TO emi WITH ADMIN OPTION;

16-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

Accorder des privilges systme Utilisez l'instruction SQL GRANT pour accorder des privilges systme aux utilisateurs. Le bnficiaire peut ensuite accorder un privilge systme d'autres utilisateurs avec l'option ADMIN, mais cette opration doit s'effectuer avec prcaution. En effet, ces privilges sont gnralement rservs aux administrateurs de la scurit et sont rarement accords d'autres utilisateurs. GRANT {system_privilege|role} [, {system_privilege|role} ]... TO {user|role|PUBLIC} [, {user|role|PUBLIC} ]... [WITH ADMIN OPTION] O : system_privilege : dsigne le privilge systme accorder. role : dsigne le nom du rle accorder. PUBLIC : accorde le privilge systme tous les utilisateurs. WITH ADMIN OPTION : autorise le bnficiaire accorder son privilge ou son rle d'autres utilisateurs ou rles.

Oracle9i Database Administration I 16-6

Accorder des privilges systme Utiliser Oracle Enterprise Manager pour accorder des privilges systme A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Users. 2. Slectionnez l'utilisateur auquel le privilge doit tre accord. 5. Cliquez sur l'onglet System Privileges dans la zone dtails de la console. 6. Slectionnez les privilges systme accorder. Vous pouvez cocher la case Admin Option. 7. Cliquez sur Apply.

Oracle9i Database Administration I 16-7

Privilges SYSDBA et SYSOPER


Catgorie SYSOPER Exemples STARTUP SHUTDOWN ALTER DATABASE OPEN | MOUNT ALTER DATABASE BACKUP CONTROLFILE TO RECOVER DATABASE ALTER DATABASE ARCHIVELOG RESTRICTED SESSION SYSOPER PRIVILEGES WITH ADMIN OPTION CREATE DATABASE ALTER TABLESPACE BEGIN/END BACKUP RESTRICTED SESSION RECOVER DATABASE UNTIL

SYSDBA

16-8

Copyright Oracle Corporation, 2001. Tous droits rservs.

Privilges SYSDBA et SYSOPER Seul l'administrateur de base de donnes peut se connecter une base de donnes avec des privilges administrateur. Lorsqu'un utilisateur se connecte une base de donnes en tant que SYSDBA, il dispose de tous les privilges lui permettant d'excuter n'importe quelle opration sur la base ou sur les objets de celle-ci.

Oracle9i Database Administration I 16-8

Restrictions relatives aux privilges systme

Le paramtre O7_DICTIONARY_ACCESSIBILITY : contrle les restrictions relatives aux privilges systme, permet d'accder aux objets du schma SYS s'il possde la valeur TRUE, grce la valeur par dfaut FALSE, les privilges systme qui permettent d'accder n'importe quel schma interdisent l'accs au schma SYS.

16-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Restrictions relatives aux privilges systme Le mcanisme de protection du dictionnaire de donnes d'Oracle9i empche les utilisateurs non autoriss d'accder aux objets du dictionnaire. L'accs aux objets du dictionnaire est limit aux rles SYSDBA et SYSOPER. En effet, les privilges systme qui permettent d'accder aux objets d'autres schmas n'autorisent pas l'accs aux objets du dictionnaire. Par exemple, le privilge SELECT ANY TABLE vous permet d'accder des vues et des tables d'autres schmas, mais ne vous autorise pas slectionner des objets du dictionnaire (tables de base, vues, packages et synonymes). Si le paramtre possde la valeur TRUE, l'accs aux objets du schma SYS est autoris (fonction Oracle7). Si sa valeur est FALSE, les privilges SYSTEM qui permettent d'accder aux objets d'autres schmas n'autorisent pas l'accs aux objets du schma du dictionnaire de donnes. Par exemple, si O7_DICTIONARY_ACCESSIBILITY=FALSE, l'instruction SELECT ANY TABLE autorise l'accs aux vues et tables de tous les schmas, l'exception de SYS (les dictionnaires sont inaccessibles, par exemple). Le privilge systme EXECUTE ANY PROCEDURE permet d'accder aux procdures de n'importe quel autre schma, l'exception de celles du schma SYS.

Oracle9i Database Administration I 16-9

Rvoquer des privilges systme

Utilisez la commande REVOKE pour rvoquer un privilge systme accord un utilisateur. Les utilisateurs qui disposent d'un privilge systme avec l'option ADMIN OPTION peuvent rvoquer des privilges systme. Seuls les privilges accords via la commande GRANT peuvent tre rvoqus.
REVOKE CREATE TABLE FROM emi;

16-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rvoquer des privilges systme Vous pouvez rvoquer des privilges systme l'aide de l'instruction SQL REVOKE. Tout utilisateur disposant d'un privilge systme avec l'option ADMIN OPTION peut rvoquer le privilge de n'importe quel autre utilisateur de la base de donnes, mme si ce n'est pas lui qui l'a accord. REVOKE {system_privilege|role} [, {system_privilege|role} ]... FROM {user|role|PUBLIC} [, {user|role|PUBLIC} ]... Remarque : La commande REVOKE permet uniquement la rvocation des privilges systme accords directement l'aide de la commande GRANT. La rvocation de privilges systme peut avoir un impact sur certains objets dpendants. Par exemple, si vous accordez le privilge SELECT ANY TABLE un utilisateur qui a cr des procdures ou des vues utilisant une table d'un autre schma, la rvocation de ce privilge invalide ces procdures ou vues.

Oracle9i Database Administration I 16-10

Rvoquer des privilges systme Utiliser Oracle Enterprise Manager pour rvoquer des privilges systme A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Users. 2. Slectionnez l'utilisateur dont le privilge doit tre rvoqu. 3. Cliquez sur la page System Privileges dans la zone dtails de la console. 4. Slectionnez le privilge systme rvoquer, puis cliquez sur la flche oriente vers le haut. 5. Cliquez sur Apply.

Oracle9i Database Administration I 16-11

Rvoquer des privilges systme accords avec l'option ADMIN OPTION


DBA Jeff Emi

GRANT

REVOKE

DBA

Jeff

Emi

16-12

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rvoquer des privilges systme (suite) La rvocation d'un privilge systme n'entrane aucun effet de cascade, que le privilge ait t accord avec l'option ADMIN OPTION ou non. Suivez les tapes de l'exemple suivant : Scnario 1. L'administrateur de base de donnes accorde le privilge systme CREATE TABLE Jeff avec l'option ADMIN OPTION. 2. Jeff cre une table. 3. Jeff accorde le privilge systme CREATE TABLE Emi. 4. Emi cre une table. 5. L'administrateur de base de donnes rvoque le privilge systme CREATE TABLE prcdemment accord Jeff. Rsultat : La table de Jeff n'est pas supprime, mais il ne peut plus crer de table. La table d'Emi n'est pas supprime et cette dernire dispose toujours du privilge systme CREATE TABLE.

Oracle9i Database Administration I 16-12

Privilges objet

Priv. objet ALTER DELETE EXECUTE INDEX INSERT REFERENCES SELECT UPDATE

Table Vue

Squence

Procdure

16-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Privilges objet Un privilge objet est un privilge ou droit autorisant la ralisation d'une action donne sur une table, une vue, une squence, une procdure, une fonction ou un package spcifique. Chaque objet prsente un ensemble propre de privilges pouvant tre accords. Le tableau de la diapositive rpertorie les privilges correspondant diffrents objets. Ainsi, les seuls privilges qui s'appliquent une squence sont SELECT et ALTER. Vous pouvez restreindre les privilges UPDATE, REFERENCES et INSERT en prcisant un sous-ensemble de colonnes pouvant tre mises jour. Vous pouvez limiter un droit de type SELECT en crant une vue prsentant un sous-ensemble de colonnes et en accordant le privilge SELECT sur la vue. Un privilge accord sur un synonyme octroie directement un droit sur la table de base rfrence par ce synonyme. Remarque : La diapositive ne fournit pas la liste exhaustive des privilges objet.

Oracle9i Database Administration I 16-13

Accorder des privilges objet

Utilisez la commande GRANT pour accorder des privilges objet. L'objet doit se trouver dans votre schma ou vous devez avoir reu le privilge avec l'option GRANT OPTION.
GRANT EXECUTE ON dbms_output TO jeff; GRANT UPDATE ON emi.customers TO jeff WITH GRANT OPTION;

16-14

Copyright Oracle Corporation, 2001. Tous droits rservs.

Accorder des privilges objet GRANT { object_privilege [(column_list)] [, object_privilege [(column_list)] ]... |ALL [PRIVILEGES]} ON TO [schema.]object {user|role|PUBLIC}[, {user|role|PUBLIC} ]... [WITH GRANT OPTION] O : object_privilege dsigne le privilge objet accorder. column_list dsigne une colonne de table ou de vue (cette valeur ne peut tre dfinie que lors de l'octroi du privilge INSERT, REFERENCES ou UPDATE). ALL accorde tous les privilges objet qui ont t accords avec l'option WITH GRANT OPTION. ON object identifie l'objet sur lequel les privilges doivent tre accords. WITH GRANT OPTION autorise le bnficiaire accorder ses privilges objet d'autres utilisateurs ou rles.

Oracle9i Database Administration I 16-14

Accorder des privilges objet (suite) Utilisez l'instruction GRANT pour accorder des privilges objet. Pour cela, l'objet doit se trouver dans votre schma ou vous devez avoir reu le privilge avec l'option GRANT OPTION. Par dfaut, si vous disposez d'un objet, tous les privilges associs vous sont automatiquement accords. Par souci de scurit, soyez prudent lorsque vous accordez d'autres utilisateurs des privilges sur vos objets.

Oracle9i Database Administration I 16-15

Accorder des privilges objet Utiliser Oracle Enterprise Manager pour accorder des privilges objet A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Users. 2. Slectionnez l'utilisateur auquel le privilge doit tre accord. 3. Cliquez sur l'onglet Object Privileges dans la zone dtails de la console. 4. Dveloppez l'arborescence des dossiers du schma et de l'objet sur lesquels le privilge objet sera accord. 5. Slectionnez le privilge accorder dans le champ Available Privileges, puis cliquez sur la flche oriente vers le bas. 6. Vous pouvez cocher la case Grant Option, si ncessaire. 7. Cliquez sur Apply.

Oracle9i Database Administration I 16-16

Rvoquer des privilges objet

Utilisez la commande REVOKE pour rvoquer des privilges objet. Seul l'utilisateur qui a accord un privilge objet peut le rvoquer.
REVOKE SELECT ON emi.orders FROM jeff;

16-17

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rvoquer des privilges objet L'instruction REVOKE permet de rvoquer des privilges objet. L'utilisateur qui rvoque un privilge objet doit tre celui qui l'a accord. Utilisez la commande suivante pour rvoquer des privilges objet : REVOKE { object_privilege [, object_privilege ]... | ALL [PRIVILEGES] } ON [schema.]object [, {user|role|PUBLIC} ]... [CASCADE CONSTRAINTS] FROM {user|role|PUBLIC}

Oracle9i Database Administration I 16-17

Rvoquer des privilges objet (suite) O : object_privilege dsigne le privilge objet rvoquer. ALL rvoque tous les privilges objet accords l'utilisateur. ON dsigne l'objet sur lequel les privilges objet doivent tre rvoqus. FROM identifie les utilisateurs ou les rles dont les privilges objet sont rvoqus. CASCADE CONSTRAINTS supprime toutes les contraintes d'intgrit rfrentielle dfinies l'aide du privilge REFERENCES ou ALL. Restriction : Les utilisateurs qui accordent des privilges objet peuvent les rvoquer uniquement aux utilisateurs auxquels ils les ont accords.

Oracle9i Database Administration I 16-18

Rvoquer des privilges objet Utiliser Oracle Enterprise Manager pour rvoquer des privilges objet A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Users. 2. Slectionnez l'utilisateur dont le privilge doit tre rvoqu. 3. Cliquez sur l'onglet Object Privileges dans la zone dtails de la console. 4. Slectionnez le privilge objet rvoquer, puis cliquez sur la flche oriente vers le haut. 5. Cliquez sur Apply.

Oracle9i Database Administration I 16-19

Rvoquer les privilges objet accords avec l'option WITH GRANT OPTION
Bob GRANT Jeff Emi

REVOKE

Bob

Jeff

Emi

16-20

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rvoquer des privilges objet (suite) Vous pouvez observer des effets de cascade lorsque vous rvoquez un privilge systme li une opration LMD. Par exemple, si le privilge SELECT ANY TABLE est accord un utilisateur qui a cr des procdures utilisant la table, toutes les procdures contenues dans le schma de l'utilisateur doivent tre recompiles pour tre rutilises. La rvocation de privilges objet accords avec l'option WITH GRANT OPTION provoque galement un effet de cascade. Suivez les tapes de l'exemple suivant : Scnario Jeff reoit le privilge objet SELECT sur la table EMPLOYEES avec l'option GRANT OPTION. Jeff accorde ce privilge sur la table EMPLOYEES Emi. Par la suite, le privilge SELECT de Jeff est rvoqu en entranant la rvocation du privilge d'Emi.

Oracle9i Database Administration I 16-20

Obtenir des informations sur les privilges

Interrogez les vues suivantes pour obtenir des informations sur les privilges : DBA_SYS_PRIVS SESSION_PRIVS DBA_TAB_PRIVS DBA_COL_PRIVS

16-21

Copyright Oracle Corporation, 2001. Tous droits rservs.

Obtenir des informations sur les privilges DBA_SYS_PRIVS affiche la liste des privilges systme accords aux utilisateurs et aux rles. SESSION_PRIVS affiche la liste des privilges auxquels l'utilisateur a accs. DBA_TAB_PRIVS affiche la liste de tous les octrois de privilges sur les objets de la base de donnes. DBA_COL_PRIVS dcrit tous les octrois de privilges sur les colonnes de la base de donnes.

Oracle9i Database Administration I 16-21

Synthse

Ce chapitre vous a permis d'apprendre : identifier les privilges systme et objet accorder et rvoquer des privilges

16-22

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 16-22

Prsentation de l'exercice 16

Dans cet exercice, vous allez : crer un utilisateur et accorder des privilges systme accorder des privilges objet des utilisateurs

16-23

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 16 Remarque : Cet exercice peut tre ralis avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 16-23

Exercice 16 : grer les privilges 1 Connectez-vous en tant qu'utilisateur SYSTEM, crez l'utilisateur Emi et autorisez-le se connecter la base de donnes et crer des objets dans son schma. Affectez-lui le tablespace par dfaut DATA01, le tablespace temporaire TEMP et un quota de tablespace de 1 Mo sur DATA01. 2 a Excutez le script lab16_02a.sql pour vous connecter en tant qu'Emi et crez les tables CUSTOMERS1 et ORDERS1. b Connectez-vous en tant qu'utilisateur SYSTEM, puis copiez les donnes de SYSTEM.CUSTOMERS vers la table CUSOMTERS1 d'Emi. Vrifiez que les enregistrements ont t insrs. c Connectez-vous en tant qu'utilisateur SYSTEM, puis autorisez Bob slectionner des donnes dans la table CUSTOMERS1 d'Emi. Que se passe-t-il ? 3 Reconnectez-vous en tant qu'Emi, puis autorisez Bob slectionner des donnes dans la table CUSTOMERS1 d'Emi et octroyer ce droit d'autres utilisateurs. En tant qu'utilisateur SYSTEM, consultez les vues du dictionnaire de donnes qui enregistrent ces actions. Indice : Utilisez la vue DBA_TAB_PRIVS. se 4 Crez l'utilisateur Trevor identifi par le mot de passe diamond1$, puis autorisez-le connecter la base de donnes. 5 a En tant que Bob, autorisez Trevor accder la table CUSTOMERS1 d'Emi. Remarque : Le message A password has expired va s'afficher en raison des oprations effectues l'tape 8 de l'exercice 15. Remplacez le mot de passe de Bob par aaron$1. 5 b Connectez-vous en tant qu'Emi, puis retirez Bob le privilge de lecture de la table CUSTOMERS1 d'Emi. c Connectez-vous en tant que Trevor, puis interrogez la table CUSTOMERS1 d'Emi. Que se passe-t-il ? 6 Autorisez Emi dmarrer et arrter la base de donnes, mais pas en crer une nouvelle.

Oracle9i Database Administration I 16-24

Grer les rles

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : crer et modifier des rles grer la disponibilit des rles supprimer des rles utiliser des rles prdfinis afficher des informations sur les rles partir du dictionnaire de donnes

17-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 17-2

Rles
Utilisateurs A B C

Rles

HR_MGR

HR_CLERK

Privilges SELECT ON JOBS CREATE TABLE CREATE SESSION INSERT ON JOBS UPDATE ON JOBS

17-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dfinition d'un rle Oracle permet de grer et de contrler aisment les privilges l'aide de rles. Les rles sont des groupes nomms de privilges associs qui sont accords des utilisateurs ou d'autres rles. Ils facilitent l'administration des privilges dans une base de donnes. Les rles : sont accords et rvoqus l'aide des commandes qui permettent d'accorder et de rvoquer des privilges systme. peuvent tre accords tout utilisateur ou rle. En revanche, un rle ne peut pas tre accord lui-mme ou de faon circulaire. peuvent tre constitus de privilges systme et de privilges objet. peuvent tre activs ou dsactivs pour chaque utilisateur auquel ils ont t accords. peuvent ncessiter un mot de passe pour tre activs. doivent possder un nom unique diffrent des noms utilisateur et des noms de rle existants. n'ont pas de propritaire et ne se trouvent dans aucun schma. sont dcrits dans le dictionnaire de donnes.

Oracle9i Database Administration I 17-3

Avantages des rles

Gestion simplifie des privilges Gestion dynamique des privilges Disponibilit slective des privilges Octroi possible via le systme d'exploitation

17-4

Copyright Oracle Corporation, 2001. Tous droits rservs.

Avantages des rles Gestion simplifie des privilges Utilisez des rles pour simplifier la gestion des privilges. Au lieu d'accorder les mmes privilges plusieurs utilisateurs, vous pouvez accorder les privilges un rle et associer ce rle chaque utilisateur. Gestion dynamique des privilges En cas de modification des privilges associs un rle, tous les utilisateurs auxquels ce rle a t accord bnficient automatiquement et immdiatement des nouveaux privilges. Disponibilit slective des privilges Vous pouvez activer et dsactiver les rles pour activer et dsactiver temporairement les privilges. L'activation d'un rle permet galement de vrifier qu'un utilisateur dispose de ce rle. Octroi possible via le systme d'exploitation Vous pouvez utiliser des commandes ou des utilitaires du systme d'exploitation pour accorder des rles aux utilisateurs dans la base de donnes.

Oracle9i Database Administration I 17-4

Crer des rles

Rles avec l'option ADMIN : Non identifi :


CREATE ROLE oe_clerk;

Identifi par mot de passe :


CREATE ROLE hr_clerk IDENTIFIED BY bonus;

Identifi de manire externe :


CREATE ROLE hr_manager IDENTIFIED EXTERNALLY;

17-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer des rles Si vous disposez du privilge systme CREATE ROLE, vous pouvez crer des rles l'aide de l'instruction CREATE ROLE. Lorsque vous crez un rle dfini comme NOT IDENTIFIED, IDENTIFIED EXTERNALLY ou BY password, Oracle l'accorde avec l'option ADMIN. Utilisez la commande suivante pour crer un rle : CREATE ROLE role [NOT IDENTIFIED | IDENTIFIED {BY password | EXTERNALLY | GLOBALLY | USING package}] O : role : correspond au nom du rle. NOT IDENTIFIED : indique qu'aucune vrification n'est ncessaire lorsque le rle est activ. IDENTIFIED : indique qu'une vrification est ncessaire lorsque le rle est activ. BY password : fournit le mot de passe que l'utilisateur doit indiquer pour activer le rle. USING package : cre un rle d'application, qui ne peut tre activ que par des applications utilisant un package autoris. EXTERNALLY : indique que l'utilisateur doit avoir reu une autorisation d'un service externe (tel que le systme d'exploitation ou un service tiers) pour activer le rle. GLOBALLY : indique que l'utilisateur doit tre autoris par le service de rpertoire d'entreprise utiliser le rle pour l'activer l'aide de l'instruction SET ROLE ou la connexion.

Oracle9i Database Administration I 17-5

Crer des rles Utiliser Oracle Enterprise Manager pour crer un rle A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Roles. 2. Slectionnez Create dans le menu accessible par le bouton droit de la souris. 5. Entrez les informations ncessaires la cration d'un rle. 6. Cliquez sur Create.

Oracle9i Database Administration I 17-6

Rles prdfinis
Rles CONNECT, RESOURCE, DBA EXP_FULL_DATABASE IMP_FULL_DATABASE DELETE_CATALOG_ROLE EXECUTE_CATALOG_ROLE Description Fournis pour garantir une compatibilit descendante Privilges d'export de la base de donnes Privilges d'import de la base de donnes Privilges DELETE sur les tables du dictionnaire de donnes Privilge EXECUTE sur les packages du dictionnaire de donnes Privilge SELECT sur les tables du dictionnaire de donnes

SELECT_CATALOG_ROLE

17-7

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rles prdfinis Les rles prsents dans le tableau sont automatiquement dfinis pour les bases de donnes Oracle l'excution des scripts de cration de base de donnes. Les rles CONNECT, RESOURCE et DBA sont fournis pour de assurer une compatibilit descendante avec les versions antrieures du serveur Oracle. Les rles EXP_FULL_DATABASE et IMP_FULL_DATABASE sont fournis pour faciliter l'utilisation des utilitaires Import et Export. Les rles DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE et SELECT_CATALOG_ROLE permettent d'accder aux vues et aux packages du dictionnaire de donnes. Ils sont accords aux utilisateurs qui ne disposent pas du rle DBA, mais qui doivent accder aux vues et aux tables du dictionnaire de donnes. Autres rles spciaux Le serveur Oracle cre galement d'autres rles qui vous permettent d'administrer la base de donnes. Sur la plupart des systmes d'exploitation, il s'agit des rles OSOPER et OSDBA. Leur nom peut varier selon le systme d'exploitation utilis. D'autres rles sont dfinis dans les scripts SQL fournis avec la base de donnes. Par exemple, AQ_ADMINISTRATOR_ROLE permet d'administrer Advanced Queuing. AQ_USER_ROLE est obsolte, mais il est principalement conserv pour assurer la compatibilit avec la version 8.0.

Oracle9i Database Administration I 17-7

Modifier des rles

Utilisez ALTER ROLE pour modifier la mthode d'authentification. Cette commande requiert l'option ADMIN ou le privilge ALTER ANY ROLE.
ALTER ROLE oe_clerk IDENTIFIED BY order; ALTER ROLE hr_clerk IDENTIFIED EXTERNALLY; ALTER ROLE hr_manager NOT IDENTIFIED;

17-8

Copyright Oracle Corporation, 2001. Tous droits rservs.

Modifier des rles Vous ne pouvez modifier un rle que pour changer sa mthode d'authentification. Pour cela, vous devez disposer du rle appropri avec l'option ADMIN ou du privilge systme ALTER ANY ROLE. Utilisez la commande suivante pour modifier un rle : ALTER ROLE role {NOT IDENTIFIED | IDENTIFIED {BY password |USING package| EXTERNALLY | GLOBALLY }}; O : role : correspond au nom du rle. NOT IDENTIFIED : indique qu'aucune vrification n'est ncessaire lorsque le rle est activ. IDENTIFIED : indique qu'une vrification est ncessaire lorsque le rle est activ. BY password : fournit le mot de passe permettant d'activer le rle. EXTERNALLY : indique que l'utilisateur doit avoir reu une autorisation d'un service externe (tel que le systme d'exploitation ou un service tiers) pour activer le rle. GLOBALLY : indique que l'utilisateur doit tre autoris par le service de rpertoire d'entreprise utiliser le rle pour l'activer l'aide de l'instruction SET ROLE ou la connexion.

Oracle9i Database Administration I 17-8

Modifier des rles (suite) Utiliser Oracle Enterprise Manager pour modifier un rle A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Roles. 2. Slectionnez le rle modifier. 3. Slectionnez View/Edit Details dans le menu accessible par le bouton droit de la souris. 4. Apportez les modifications ncessaires. 5. Cliquez sur OK.

Oracle9i Database Administration I 17-9

Accorder des rles

Pour accorder un rle, utilisez la commande GRANT :


GRANT oe_clerk TO scott; GRANT hr_clerk TO hr_manager;

GRANT hr_manager TO scott WITH ADMIN OPTION;

17-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Accorder des rles Pour accorder un rle un utilisateur, utilisez la mme commande que pour accorder un privilge systme : GRANT role [, role ]... TO {user|role|PUBLIC} [, {user|role|PUBLIC} ]... [WITH ADMIN OPTION] O : role : correspond un ensemble de rles accorder. PUBLIC : accorde le rle tous les utilisateurs. WITH ADMIN OPTION : permet au bnficiaire d'accorder le rle d'autres utilisateurs ou rles. Si vous accordez un rle avec cette option, le bnficiaire peut l'accorder d'autres utilisateurs ou le rvoquer, le modifier ou le supprimer.

Oracle9i Database Administration I 17-10

Accorder des rles (suite) L'utilisateur qui cre un rle le reoit de faon implicite avec l'option ADMIN OPTION. Un utilisateur qui n'a pas reu de rle avec cette option doit disposer du privilge systme GRANT ANY ROLE pour accorder des rles aux autres utilisateurs ou rvoquer des rles accords. Remarque : Le paramtre d'initialisation MAX_ENABLED_ROLES dfinit le nombre maximum de rles de base de donnes que les utilisateurs peuvent activer.

Oracle9i Database Administration I 17-11

Accorder des rles (suite) Utiliser Oracle Enterprise Manager pour accorder un rle 1. Slectionnez Databases > Security > Roles. 2. Slectionnez le rle accorder. 3. Slectionnez Grantees dans le menu accessible par le bouton droit de la souris. 4. Slectionnez le bnficiaire du rle dans la page Users. 5. Cliquez sur la flche vers le bas pour faire passer l'utilisateur dans la fentre Users that have the role. 6. Cliquez sur OK.

Oracle9i Database Administration I 17-12

Etablir des rles par dfaut


Un utilisateur peut se voir accorder un grand nombre de rles. Un utilisateur peut se voir accorder un rle par dfaut. Vous pouvez limiter le nombre de rles par dfaut d'un utilisateur.
ALTER USER scott DEFAULT ROLE hr_clerk, oe_clerk; ALTER USER scott DEFAULT ROLE ALL; ALTER USER scott DEFAULT ROLE ALL EXCEPT hr_clerk; ALTER USER scott DEFAULT ROLE NONE;
17-13 Copyright Oracle Corporation, 2001. Tous droits rservs.

Rles par dfaut Un utilisateur peut disposer d'un grand nombre de rles. Un rle par dfaut est un sousensemble de ces rles activ automatiquement lorsque l'utilisateur se connecte. Par dfaut, tous les rles d'un utilisateur sont activs la connexion sans indication de mot de passe. La commande ALTER USER permet de limiter les rles par dfaut d'un utilisateur. La clause DEFAULT ROLE s'applique uniquement aux rles qui ont t accords directement l'utilisateur via une instruction GRANT. Elle ne permet pas d'activer : les rles qui n'ont pas t accords l'utilisateur, les rles qui ont t accords par l'intermdiaire d'autres rles, les rles grs par un service externe (le systme d'exploitation, par exemple). Utilisez la commande suivante pour accorder des rles par dfaut un utilisateur : ALTER USER user DEFAULT ROLE {role [,role]... | ALL [EXCEPT role [,role]... ] | NONE} O : user : correspond au nom de l'utilisateur qui reoit les rles. role : correspond au rle par dfaut de l'utilisateur.

Oracle9i Database Administration I 17-13

Rles par dfaut (suite) ALL : transforme tous les rles accords l'utilisateur en rles par dfaut, l'exception de ceux figurant dans la clause EXCEPT (valeur par dfaut). EXCEPT : indique que les rles qui suivent ne doivent pas tre inclus dans les rles par dfaut. NONE : ne convertit aucun des rles accords l'utilisateur en rle par dfaut (lors de la connexion, l'utilisateur ne dispose que des privilges qui lui ont t accords directement). Etant donn que les rles doivent tre accords pour pouvoir tre dfinis comme rles par dfaut, vous ne pouvez pas dfinir de rles par dfaut l'aide de la commande CREATE USER.

Oracle9i Database Administration I 17-14

Rles d'application

Seuls les packages PL/SQL autoriss peuvent activer des rles d'application La clause de package USING permet de crer un rle d'application
CREATE ROLE admin_role IDENTIFIED USING hr.employee;

17-15

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rles d'application La clause de package USING de l'instruction CREATE ROLE cre un rle d'application. Seules les applications utilisant un package PL/SQL autoris peuvent activer un rle d'application. Les dveloppeurs d'applications n'ont pas besoin d'intgrer des mots de passe aux applications pour scuriser un rle. Ils peuvent en effet crer un rle d'application et dsigner le package PL/SQL autoris l'activer. SQL> CREATE ROLE admin_role IDENTIFIED USING hr.employees; Dans l'exemple, admin_role est un rle d'application qui ne peut tre activ que par les modules dfinis dans le package PL/SQL hr.employee.

Oracle9i Database Administration I 17-15

Activer et dsactiver les rles

Dsactivez un rle accord un utilisateur pour le rvoquer temporairement Activez un rle pour l'accorder temporairement La commande SET ROLE permet d'activer et de dsactiver les rles Les rles par dfaut d'un utilisateur sont activs la connexion Un mot de passe peut tre requis pour activer un rle

17-16

Copyright Oracle Corporation, 2001. Tous droits rservs.

Activer et dsactiver les rles Activez ou dsactivez les rles pour activer ou dsactiver temporairement les privilges associs. Un rle ne peut tre activ que s'il a t accord l'utilisateur. Lorsqu'un rle est activ, l'utilisateur peut utiliser les privilges associs. Lorsque le rle est dsactiv, l'utilisateur ne peut pas utiliser les privilges associs s'ils ne lui ont pas t accords directement ou s'ils n'ont pas t accords un autre rle activ pour cet utilisateur. Les rles ne sont activs que pour une session. A la session suivante, les rles actifs de l'utilisateur sont remplacs par les rles par dfaut. Dfinir les rles activer La commande SET ROLE et la procdure DBMS_SESSION.SET_ROLE permettent d'activer tous les rles inclus dans la commande et de dsactiver tous les autres. Vous pouvez activer les rles partir de n'importe quel outil ou programme autorisant les commandes PL/SQL l'exception des procdures stockes. Utilisez la commande ALTER USER...DEFAULT ROLE pour indiquer les rles qui seront activs la connexion de l'utilisateur. Tous les autres rles seront alors dsactivs. Un mot de passe peut tre ncessaire pour activer un rle. Celui-ci doit tre inclus dans la commande SET ROLE. Les rles par dfaut accords un utilisateur ne ncessitent pas de mot de passe ; ils sont activs la connexion, comme les rles sans mot de passe.

Oracle9i Database Administration I 17-16

Activer et dsactiver les rles (suite) Restrictions Vous ne pouvez pas activer un rle partir d'une procdure stocke, car cette action peut modifier le domaine de scurit (ensemble de privilges) qui a permis d'appeler la procdure. Ainsi, dans les instructions PL/SQL, vous pouvez activer et dsactiver des rles dans des blocs anonymes et des procdures d'application (par exemple, des procdures Oracle Forms), mais pas dans des procdures stockes. Si une procdure stocke contient la commande SET ROLE, l'erreur suivante se produit l'excution : ORA-06565: cannot execute SET ROLE from within stored procedure

Oracle9i Database Administration I 17-17

Activer et dsactiver les rles

SET ROLE hr_clerk; SET ROLE oe_clerk IDENTIFIED BY order; SET ROLE ALL EXCEPT oe_clerk;

17-18

Copyright Oracle Corporation, 2001. Tous droits rservs.

Activer et dsactiver les rles La commande SET ROLE dsactive tous les autres rles accords l'utilisateur. SET ROLE {role [ IDENTIFIED BY password ] [, role [ IDENTIFIED BY password ]]... | ALL [ EXCEPT role [, role ] ...] | NONE } O : role : correspond au nom du rle. IDENTIFIED BY password : fournit le mot de passe permettant d'activer le rle. ALL : active tous les rles accords l'utilisateur en cours, l'exception de ceux figurant dans la clause EXCEPT (vous ne pouvez pas utiliser cette option pour activer des rles ncessitant des mots de passe). EXCEPT role : n'active pas les rles indiqus. NONE : dsactive tous les rles de la session en cours (seuls les privilges accords directement l'utilisateur sont actifs). L'option ALL sans la clause EXCEPT ne fonctionne que lorsque les rles activs ne ncessitent pas de mot de passe.

Oracle9i Database Administration I 17-18

Rvoquer des rles accords des utilisateurs

La rvocation d'un rle accord un utilisateur requiert l'option ADMIN OPTION ou le privilge GRANT ANY ROLE. Pour rvoquer un rle, utilisez la syntaxe suivante :
REVOKE oe_clerk FROM scott; REVOKE hr_manager FROM PUBLIC;

17-19

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rvoquer des rles accords des utilisateurs L'instruction SQL REVOKE permet de rvoquer un rle accord un utilisateur. Tout utilisateur possdant un rle avec l'option ADMIN peut retirer ce rle un autre utilisateur ou rle de la base de donnes. Par ailleurs, les utilisateurs disposant du privilge GRANT ANY ROLE peuvent rvoquer n'importe quel rle. REVOKE role [, role ] FROM {user|role|PUBLIC} [, {user|role|PUBLIC} ] o : role : correspond au rle rvoquer ou au rle partir duquel des rles doivent tre rvoqus. user : dfinit l'utilisateur dont les privilges systme ou les rles doivent tre rvoqus. PUBLIC : rvoque le privilge ou le rle accord tous les utilisateurs.

Oracle9i Database Administration I 17-19

Rvoquer des rles accords des utilisateurs Utiliser Oracle Enterprise Manager pour rvoquer un rle accord un utilisateur A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Users. 2. Slectionnez l'utilisateur dont un rle doit tre rvoqu. 3. Slectionnez le rle rvoquer. 4. Slectionnez Revoke dans le menu accessible par le bouton droit de la souris. 5. Slectionnez Yes pour confirmer l'opration.

Oracle9i Database Administration I 17-20

Supprimer des rles

Lorsque vous supprimez un rle :


il est retir tous les utilisateurs et rles auxquels il tait accord, il est supprim de la base de donnes.

La suppression d'un rle requiert l'option ADMIN OPTION ou le privilge DROP ANY ROLE. Pour supprimer un rle, utilisez la syntaxe suivante :
DROP ROLE hr_manager;

17-21

Copyright Oracle Corporation, 2001. Tous droits rservs.

Supprimer des rles Pour supprimer un rle de la base de donnes, utilisez la commande suivante : DROP ROLE role Lorsque vous supprimez un rle, le serveur Oracle le rvoque pour tous les utilisateurs et tous les rles auxquels il tait accord et le supprime de la base de donnes. Vous pouvez supprimer le rle s'il vous a t accord avec l'option ADMIN OPTION ou si vous disposez du privilge systme DROP ANY ROLE.

Oracle9i Database Administration I 17-21

Supprimer des rles (suite) Utiliser Oracle Enterprise Manager pour supprimer un rle A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Security > Roles. 2. Slectionnez le rle supprimer. 3. Slectionnez Remove dans le menu accessible par le bouton droit de la souris. 4. Slectionnez Yes pour confirmer l'opration.

Oracle9i Database Administration I 17-22

Instructions relatives la cration de rles


Utilisateurs

Rles utilisateur Rles d'application

HR_CLERK

HR_MANAGER

PAY_CLERK

BENEFITS

PAYROLL

Privilges d'application Privilges Benefits Privilges Payroll

17-23

Copyright Oracle Corporation, 2001. Tous droits rservs.

Instructions relatives la cration de rles Etant donn qu'un rle contient les privilges ncessaires l'excution d'une tche, le nom du rle correspond gnralement une tche d'application ou un intitul de poste. L'exemple de la diapositive utilise des tches d'application et des intituls de poste comme noms de rle. Pour crer et accorder des rles des utilisateurs, procdez comme suit : 1. Crez un rle pour chaque tche d'application. Le nom du rle d'application correspond une tche de l'application, telle que PAYROLL. 2. Accordez au rle d'application les privilges ncessaires l'excution de la tche. 3. Crez un rle pour chaque type d'utilisateur. Le nom du rle utilisateur correspond un intitul de poste, tel que PAY_CLERK. 4. Accordez des rles d'application aux rles de l'utilisateur. 5. Accordez les rles de l'utilisateur d'autres utilisateurs. Si une modification de l'application implique l'octroi de nouveaux privilges pour excuter la tche Payroll, il suffit l'administrateur de base de donnes d'accorder les nouveaux privilges au rle d'application PAYROLL. Tous les utilisateurs qui excutent cette tche reoivent les nouveaux privilges.

Oracle9i Database Administration I 17-23

Rgles d'utilisation des mots de passe et des rles par dfaut

Protection par mot de passe (pas la valeur par dfaut)

Rle par dfaut

PAY_CLERK

PAY_CLERK_RO

Privilges INSERT, UPDATE, DELETE et SELECT

Privilges SELECT

17-24

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rgles d'utilisation des mots de passe et des rles par dfaut Les mots de passe permettent de renforcer la scurit lorsqu'un rle est activ. Par exemple, l'application peut demander l'utilisateur d'entrer un mot de passe pour activer le rle PAY_CLERK, car ce rle peut servir mettre des chques. Les mots de passe ne permettent d'activer un rle que par l'intermdiaire d'une application. Cette mthode est dcrite dans l'exemple de la diapositive. L'administrateur de base de donnes a accord les rles PAY_CLERK et PAY_CLERK_RO l'utilisateur. Le rle PAY_CLERK a reu tous les privilges ncessaires l'excution de la fonction d'tablissement des bulletins de salaire. Le rle PAY_CLERK_RO (RO signifiant Read Only, lecture seule) dispose uniquement de privilges SELECT sur les tables ncessaires l'excution de la fonction d'tablissement des bulletins de salaire. L'utilisateur peut se connecter SQL*Plus pour effectuer des interrogations, mais il ne peut pas modifier les donnes, car il ne connat pas le mot de passe du rle PAY_CLERK, qui n'est pas un rle par dfaut. Lorsque l'utilisateur se connecte l'application d'tablissement des bulletins de salaire, il active le rle PAY_CLERK en fournissant le mot de passe appropri. Le mot de passe tant cod dans le programme, aucun message ne demande l'utilisateur de l'entrer.

Oracle9i Database Administration I 17-24

Obtenir des informations sur les rles


Pour obtenir des informations sur les rles, interrogez les vues suivantes du dictionnaire de donnes : DBA_ROLES : Tous les rles qui existent dans la base de donnes DBA_ROLE_PRIVS : Rles accords des utilisateurs et des rles ROLE_ROLE_PRIVS : Rles accords des rles DBA_SYS_PRIVS : Privilges systme accords des utilisateurs et des rles ROLE_SYS_PRIVS : Privilges systme accords des rles ROLE_TAB_PRIVS : Privilges objet accords des rles SESSION_ROLES : Rles activs par l'utilisateur
17-25 Copyright Oracle Corporation, 2001. Tous droits rservs.

Rechercher les informations sur les rles La plupart des vues du dictionnaire de donnes qui contiennent des informations sur les privilges des utilisateurs indiquent galement si le rle requiert un mot de passe. SQL> SELECT role, password_required 2 FROM dba_roles; ROLE -----------------------------CONNECT RESOURCE DBA SELECT_CATALOG_ROLE EXECUTE_CATALOG_ROLE DELETE_CATALOG_ROLE IMP_FULL_DATABASE EXP_FULL_DATABASE SALES_CLERK HR_CLERK PASSWORD ----------NO NO NO NO NO NO NO NO YES EXTERNAL

Oracle9i Database Administration I 17-25

Synthse

Ce chapitre vous a permis d'apprendre : crer des rles accorder des privilges des rles accorder des rles des utilisateurs ou des rles tablir des rles par dfaut

17-26

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 17-26

Prsentation de l'exercice 17

Dans cet exercice, vous allez : rpertorier les privilges systme d'un rle crer, affecter et supprimer des rles crer des rles d'application

17-27

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 17 Remarque : Cet exercice peut tre ralis avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 17-27

Exercice 17 : grer les rles 1 Examinez la vue du dictionnaire de donnes et rpertoriez les privilges systme du rle RESOURCE. 2 Crez le rle DEV qui permettra un utilisateur de crer une table ou une vue et de slectionner des donnes dans la table CUSTOMERS1 d'Emi. 3 a Affectez les rles RESOURCE et DEV Bob, en prcisant que seul le rle RESOURCE doit tre automatiquement activ la connexion. b Donnez Bob la possibilit de lire toutes les informations du dictionnaire de donnes. 4 Bob doit vrifier les segments d'annulation actuellement utiliss par l'instance. Connectezvous sous l'ID utilisateur Bob et rpertoriez les segments d'annulation utiliss. Indice : Utilisez SET ROLE SELECT_CATALOG_ROLE. 5 Sous l'ID utilisateur SYSTEM, tentez de crer la vue CUST_VIEW dans la table CUSTOMERS d'Emi. Que se passe-t-il ? 6 Sous l'ID utilisateur Emi, accordez SYSTEM le privilge SELECT sur CUSTOMERS1. En tant que SYSTEM, tentez ensuite de crer la vue CUST_VIEW dans la table CUSTOMERS1 d'Emi. Que se passe-t-il ?

Oracle9i Database Administration I 17-28

Fonction d'audit

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : dfinir les catgories d'audit activer l'audit d'une instance dfinir les options d'audit

18-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 18-2

Fonction d'audit

La fonction d'audit permet de surveiller certaines actions des utilisateurs sur la base de donnes. Elle est utilise pour :
examiner les activits suspectes ralises dans la base de donnes, rassembler des informations sur certaines activits.

L'audit peut tre effectu par session ou par accs.

18-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Fonction d'audit Si un utilisateur non autoris supprime des donnes, l'administrateur de base de donnes peut effectuer un audit de toutes les connexions la base et de toutes les suppressions (qu'elles aient abouti ou non) effectues sur l'ensemble des tables de la base. L'administrateur peut rassembler des statistiques sur les tables mises jour, le nombre d'entres/sorties (E/S) logiques ralises et le nombre d'utilisateurs qui se connectent simultanment aux priodes les plus charges.

Oracle9i Database Administration I 18-3

Instructions relatives l'audit

Dfinissez les lments auditer :


utilisateurs, instructions ou objets excution d'instructions excutions d'instruction ayant abouti et/ou chou

Grez votre trace d'audit :


surveillez l'augmentation de son volume protgez-la des accs non autoriss

18-4

Copyright Oracle Corporation, 2001. Tous droits rservs.

Instructions relatives l'audit Limitez l'audit en identifiant vos besoins, puis dfinissez les options d'audit minimales correspondant ces besoins. L'audit d'objet doit tre utilis lorsque cela est possible pour rduire le nombre d'entres gnres. Si vous devez utiliser l'audit d'instruction ou de privilge, les procdures suivantes permettront de limiter la gnration d'audits Dfinir les utilisateurs inclure dans un audit. Effectuer l'audit par session et non par accs. Effectuer l'audit des succs ou des checs, mais pas des deux. Remarque : Les enregistrements d'audit peuvent tre crits dans SYS.AUD$ ou dans la trace d'audit du systme d'exploitation, dont l'utilisation dpend du systme employ. Surveiller l'augmentation du volume de la trace d'audit Si la trace d'audit est sature, vous ne pouvez plus y crire d'enregistrements d'audit, et les instructions analyses ne s'excutent pas correctement. Dans ce cas, des erreurs sont renvoyes tous les utilisateurs qui excutent des instructions analyses. Vous devez librer de l'espace dans la trace d'audit pour que ces instructions puissent tre excutes.

Oracle9i Database Administration I 18-4

Instructions relatives l'audit (suite) Surveiller l'augmentation du volume de la trace d'audit (suite) Pour viter que le volume de la trace d'audit n'augmente trop rapidement, procdez comme suit : n'activez l'audit qu'en cas de ncessit, slectionnez les options d'audit bon escient, grez soigneusement l'audit d'objet de schma (les utilisateurs peuvent activer l'audit des objets qui leur appartiennent), accordez le privilge AUDIT ANY avec prcaution, car il permet galement un utilisateur d'activer l'audit. Supprimez rgulirement les enregistrements d'audit de la trace d'audit l'aide de la commande DELETE ou TRUNCATE. Les fichiers d'audit se trouvent dans le rpertoire $ORACLE_HOME/rdbms/audit. Protger la trace d'audit Veillez protger la trace d'audit afin d'empcher l'ajout, la modification ou la suppression d'informations d'audit. Excutez la commande suivante : SQL> AUDIT delete ON sys.aud$ BY ACCESS; Afin d'empcher toute suppression non autorise dans la trace d'audit, l'administrateur de base de donnes doit tre le seul disposer du rle DELETE_CATALOG_ROLE. Extraire la trace d'audit du tablespace SYSTEM La taille de la table AUD$ peut augmenter de manire illimite au fur et mesure que des enregistrements sont ajouts la trace d'audit de la base de donnes. Bien que vous ne deviez pas supprimer cette table, vous pouvez l'effacer ou la vider, car les lignes sont fournies uniquement titre indicatif et ne sont pas ncessaires au fonctionnement de l'instance Oracle. Etant donn que la taille de cette table varie, il est prfrable de la stocker hors du tablespace SYSTEM. Pour transfrer la table AUD$ vers le tablespace AUDIT_TAB : Vrifiez que l'audit n'est pas activ. Entrez la commande suivante : SQL> ALTER TABLE aud$ MOVE TABLESPACE AUDIT_TAB; Entrez la commande suivante : SQL> CREATE INDEX i_aud1 ON aud$(sessionid, ses$tid) 2 TABLESPACE AUDIT_IDX; Activez l'audit sur l'instance.

Oracle9i Database Administration I 18-5

Catgories d'audit

Audit par dfaut


Arrt et dmarrage de l'instance Privilges de l'administrateur

Audit d'une base de donnes


Activ par l'administrateur de base de donnes Ne peut pas enregistrer de valeurs de colonnes

Audit d'une application ou bas sur les donnes


Implment via le code Peut enregistrer des valeurs de colonnes Permet de suivre les modifications apportes des table

18-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

Catgories d'audit Que l'audit de la base de donnes soit activ ou non, Oracle enregistre toujours certaines oprations effectues sur la base dans la trace d'audit du systme d'exploitation : Dmarrage de l'instance : l'enregistrement d'audit indique le nom de l'utilisateur du systme d'exploitation qui a dmarr l'instance, l'identificateur du terminal, la date et l'heure et si l'audit de la base de donnes tait activ ou non. Arrt de l'instance : l'enregistrement d'audit indique le nom de l'utilisateur du systme d'exploitation qui a arrt l'instance, l'identificateur du terminal, ainsi que la date et l'heure. Privilges de l'administrateur : l'enregistrement d'audit indique le nom de l'utilisateur du systme d'exploitation qui s'est connect Oracle avec des privilges d'administrateur. Audit d'une base de donnes L'audit d'une base de donnes consiste surveiller et enregistrer certaines actions excutes sur la base de donnes par les utilisateurs. Les informations sur les actions sont enregistres dans la trace d'audit. Utilisez la trace d'audit pour identifier les activits suspectes. Par exemple, si un utilisateur non autoris supprime des donnes dans des tables, l'administrateur de base de donnes peut dcider d'auditer toutes les connexions la base de donnes en conjonction avec les suppressions de lignes ayant russi ou chou dans les tables de la base.

Oracle9i Database Administration I 18-6

Catgories d'audit (suite) Audit d'une base de donnes (suite) Vous pouvez galement utiliser un audit pour surveiller certaines activits dans la base de donnes et collecter des informations sur ces activits. Par exemple, l'administrateur de base de donnes peut collecter des statistiques sur les tables mises jour, le nombre d'entres/sorties logiques et le nombre d'utilisateurs connects simultanment aux heures les plus charges. Audit bas sur les donnes L'audit d'une base de donnes ne permet pas d'enregistrer les valeurs des colonnes. Si vous souhaitez analyser les modifications de colonnes d'une base de donnes et enregistrer chaque modification de valeur dans les colonnes, utilisez l'audit d'application. L'audit d'application peut tre effectu via du code client, des procdures stockes ou des dclencheurs de base de donnes.

Oracle9i Database Administration I 18-7

Audit d'une base de donnes


Activer l'audit Excuter la Commande d'une base de Fichier de donnes paramtres DBA Afficher les informations d'audit Dfinir les options d'audit Processus serveur Gnrer la trace d'audit

Utilisateur

Options d'audit Base de donnes Trace d'audit de l'OS Trace d'audit

18-8

Copyright Oracle Corporation, 2001. Tous droits rservs.

Audit d'une base de donnes Activer et dsactiver l'audit de base de donnes Une fois que vous avez slectionn les lments analyser, dfinissez le paramtre d'initialisation AUDIT_TRAIL pour activer l'audit de l'instance. Ce paramtre indique si la trace d'audit est crite dans une table de la base de donnes ou dans la trace d'audit du systme d'exploitation. AUDIT_TRAIL = value o value peut correspondre : TRUE ou DB : active l'audit et envoie tous les enregistrements d'audit vers la trace d'audit de la base de donnes (SYS.AUD$). OS : active l'audit et envoie tous les enregistrements d'audit vers la trace du systme d'exploitation (si ce dernier le permet). FALSE ou NONE : dsactive l'audit. Remarque : Il n'existe pas de valeur par dfaut.

Oracle9i Database Administration I 18-8

Audit d'une base de donnes (suite) Les enregistrements d'audit ne sont pas crits dans la trace d'audit si l'administrateur n'a pas affect la valeur DB ou OS au paramtre AUDIT_TRAIL. Bien que vous puissiez utiliser les instructions SQL AUDIT et NOAUDIT tout moment, les enregistrements ne sont crits dans la trace d'audit que si l'administrateur a dfini le paramtre AUDIT_TRAIL du fichier d'initialisation. Remarque : Le manuel d'installation et de configuration de votre systme d'exploitation contient des informations relatives l'criture des enregistrements d'audit dans la trace d'audit du systme d'exploitation. Dfinir les options d'audit Ensuite, vous devez dfinir des options d'audit l'aide de la commande AUDIT. Cette commande permet de prciser les commandes, les utilisateurs, les objets ou les privilges qui feront l'objet de l'audit. Vous pouvez galement indiquer si un enregistrement d'audit doit tre gnr pour chaque occurrence ou une seule fois par session. Si une option d'audit est devenue inutile, vous pouvez la dsactiver l'aide de la commande NOAUDIT. Excution d'instructions Lorsque les utilisateurs excutent des instructions PL/SQL et SQL, le processus serveur analyse les options d'audit pour dterminer si l'instruction en cours d'excution doit gnrer un enregistrement d'audit. Les instructions SQL au sein de programmes PL/SQL sont analyses individuellement de manire approprie lors de l'excution du programme. Etant donn que les vues et les procdures peuvent faire rfrence d'autres objets de base de donnes, plusieurs enregistrements d'audit peuvent tre gnrs la suite de l'excution d'une seule instruction. Gnrer des donnes d'audit La gnration et l'insertion d'un enregistrement de trace d'audit sont indpendantes d'une transaction utilisateur. Ainsi, si ce type de transaction est annul, l'enregistrement de trace d'audit reste inchang. Dans la mesure o cet enregistrement est gnr au cours de l'excution, une erreur de syntaxe, qui se produit au cours de l'analyse, empchera la cration d'un enregistrement de trace d'audit. Afficher les informations d'audit Pour consulter les informations gnres pendant l'audit, slectionnez les vues de la trace d'audit du dictionnaire de donnes ou utilisez un utilitaire du systme d'exploitation pour afficher la trace d'audit du systme d'exploitation. Ces informations permettent d'identifier les activits suspectes dans la base de donnes et de surveiller son activit.

Oracle9i Database Administration I 18-9

Options d'audit

Audit d'instruction
AUDIT TABLE;

Audit de privilge
AUDIT create any trigger;

Audit d'objet de schma


AUDIT SELECT ON emi.orders;

18-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Options d'audit Audit d'instruction : audit slectif d'instructions SQL et non des objets de schma spcifiques qui s'y rapportent. Par exemple, l'option AUDIT TABLE analyse plusieurs instructions LDD, quelle que soit la table sur laquelle elles sont excutes. Vous pouvez configurer un audit d'instruction pour analyser certains utilisateurs ou tous les utilisateurs de la base de donnes. Audit de privilge : audit slectif de privilges systme dans le but de raliser les actions correspondantes, par exemple, AUDIT CREATE ANY TRIGGER. Vous pouvez configurer ce type d'option pour analyser un utilisateur donn ou tous les utilisateurs de la base de donnes. Audit d'objet de schma : audit slectif d'instructions spcifiques relatives un objet de schma donn, par exemple, AUDIT SELECT ON HR.EMPLOYEES. Ce type d'audit s'applique toujours tous les utilisateurs de la base de donnes. Vous pouvez choisir n'importe quelle option d'audit et prciser les conditions suivantes : WHENEVER SUCCESSFUL / WHENEVER NOT SUCCESSFUL BY SESSION / BY ACCESS

Oracle9i Database Administration I 18-10

Options d'audit

Audit dtaill Permet la surveillance de l'accs aux donnes en fonction du contenu S'implmente l'aide du package DBMS_FGA

18-11

Copyright Oracle Corporation, 2001. Tous droits rservs.

Options d'audit Audit dtaill : permet de surveiller l'accs aux donnes en fonction du contenu. Le package PL/SQL DBMS_FGA gre les rgles d'audit bas sur les donnes. A l'aide de ce package, l'administrateur de base de donnes cre une rgle d'audit sur la table cible. Si l'une des lignes renvoyes par un bloc d'interrogations correspond la condition d'audit, une entre d'vnement d'audit (nom utilisateur, texte SQL, variable attache (bind variable), nom de rgle, ID de session, horodatage, etc.) et d'autres attributs sont intgrs la trace d'audit Dsactiver un audit Utilisez l'instruction NOAUDIT pour arrter un audit lanc par la commande AUDIT. Remarque : L'instruction NOAUDIT inverse l'effet d'une instruction AUDIT excute prcdemment. Elle doit prsenter la mme syntaxe que l'instruction AUDIT prcdente et inverse uniquement l'effet de cette instruction. Par consquent, si une instruction AUDIT (instruction A) active un audit sur un utilisateur et qu'une seconde instruction (B) active un audit sur tous les utilisateurs, l'instruction NOAUDIT qui dsactive l'audit pour tous les utilisateurs inverse l'instruction B, mais n'affecte pas l'instruction A et continue d'analyser l'utilisateur concern par l'instruction A.

Oracle9i Database Administration I 18-11

Obtenir des informations sur l'audit

Interrogez les vues suivantes pour obtenir des informations sur l'audit : ALL_DEF_AUDIT_OPTS DBA_STMT_AUDIT_OPTS DBA_PRIV_AUDIT_OPTS DBA_OBJ_AUDIT_OPTS

18-12

Copyright Oracle Corporation, 2001. Tous droits rservs.

Obtenir des informations sur l'audit Vue du dictionnaire de donnes -------------------ALL_DEF_AUDIT_OPTS DBA_STMT_AUDIT_OPTS DBA_PRIV_AUDIT_OPTS DBA_OBJ_AUDIT_OPTS Description ---------------------Options d'audit par dfaut Options d'audit d'instruction Options d'audit de privilge Options d'audit d'objet de schma

Oracle9i Database Administration I 18-12

Obtenir des informations sur les enregistrements d'audit


Interrogez les vues suivantes pour obtenir des informations sur les enregistrements d'audit : DBA_AUDIT_TRAIL DBA_AUDIT_EXISTS DBA_AUDIT_OBJECT DBA_AUDIT_SESSION DBA_AUDIT_STATEMENT

18-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Obtenir des informations sur les enregistrements d'audit Rpertorier les enregistrements d'audit La trace d'audit de la base de donnes (SYS.AUD$) est une table unique figurant dans le dictionnaire de toutes les bases de donnes Oracle. La diapositive prsente plusieurs vues prdfinies disponibles. Ces vues sont cres par l'administrateur de base de donnes. Vue du dictionnaire de donnes -------------------DBA_AUDIT_TRAIL DBA_AUDIT_EXISTS DBA_AUDIT_OBJECT DBA_AUDIT_SESSION dconnexion DBA_AUDIT_STATEMENT Enregistrements d'audit d'instruction Description ------------------------------Toutes les entres de la trace d'audit Enregistrements correspondants AUDIT EXISTS/NOT EXISTS Enregistrements relatifs aux objets de schma Toutes les entres de connexion et de

Oracle9i Database Administration I 18-13

Synthse

Ce chapitre vous a permis d'apprendre : dfinir les besoins d'audit activer et dsactiver l'audit identifier et utiliser les diffrentes options d'audit

18-14

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 18-14

Prsentation de l'exercice 18

Il n'y a pas d'exercice propos pour ce chapitre.

18-15

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 18-15

Oracle9i Database Administration I 18-16

Charger des donnes dans une base

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : prsenter l'utilisation d'oprations de chargement de donnes par chemin direct dcrire l'utilisation de SQL*Loader raliser les oprations de base de SQL*Loader rpertorier les rgles d'utilisation de SQL*Loader et du chargement des donnes par chemin direct

19-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 19-2

Mthodes de chargement des donnes


Autres applications Base de donnes Oracle Export Utilitaire SQL*Loader

Import Base de donnes Oracle Chargement des donnes par chemin direct
19-3 Copyright Oracle Corporation, 2001. Tous droits rservs.

Mthodes de chargement des donnes Il existe plusieurs mthodes de chargement des donnes dans des tables d'une base de donnes Oracle. Le chargement des donnes par chemin direct et l'utilitaire SQL*Loader sont prsents dans ce cours. L'export et l'import sont prsents dans le cours Oracle9i DBA II. SQL*Loader L'utilitaire SQL*Loader charge les donnes de fichiers externes dans les tables d'une base de donnes Oracle. Son puissant moteur d'analyse des donnes applique peu de contraintes sur le format des donnes du fichier de donnes. Chargement des donnes par chemin direct Utilisez la mthode de chargement des donnes par chemin direct pour copier les donnes d'une table vers une autre au sein d'une mme base de donnes. Cette mthode acclre les oprations d'insertion en passant outre le cache de tampons (buffer cache) de la base de donnes et en crivant directement les donnes dans les fichiers de donnes.

Oracle9i Database Administration I 19-3

Chargement des donnes par chemin direct

Le chargement des donnes par chemin direct peut tre ralis de la manire suivante : Normale (en srie) ou en parallle Dans des tables partitionnes, dans des tables non partitionnes ou dans des partitions d'une table Avec ou sans consignation des donnes de journalisation

19-4

Copyright Oracle Corporation, 2001. Tous droits rservs.

Chargement des donnes par chemin direct Le chargement des donnes par chemin direct (en srie ou en parallle) ne peut prendre en charge que la syntaxe INSERT ... SELECT d'une instruction INSERT, et non la syntaxe INSERT ... Valeurs. Le paralllisme de INSERT ... SELECT est dtermin en fonction de conseils (Hints) en parallle ou de la dfinition de table en parallle. Oracle9i fournit des extensions syntaxiques qui augmentent la porte de l'instruction INSERT ... SELECT de sorte que vous pouvez insrer des lignes dans plusieurs tables dans le cadre d'une instruction LMD. Le chargement des donnes par chemin direct peut tre appel l'aide du conseil APPEND, comme indiqu dans la commande suivante : INSERT /*+APPEND */ INTO [ schema. ] table [ [NO]LOGGING ] sub-query; O : schema correspond au propritaire de la table, table correspond au nom de la table, sub-query correspond la sous-interrogation qui permet de slectionner les colonnes et les lignes insrer.

Oracle9i Database Administration I 19-4

Chargement des donnes par chemin direct (suite) Mode LOGGING Lorsque vous effectuez une insertion l'aide de l'option par dfaut LOGGING, l'opration gnre des entres de journalisation (redo log entries), ce qui permet une rcupration complte en cas d'incident. Si vous utilisez l'option NOLOGGING, les modifications apportes aux donnes ne seront pas enregistres dans le tampon de journalisation (redo log buffer). Toutefois, un nombre minimal d'informations de journalisation est gnr lors de la mise jour du dictionnaire de donnes. Le mode NOLOGGING est utilis si l'attribut correspondant a t dfini pour la table. Si plusieurs modifications en ligne (online) des donnes de la table sont susceptibles de se produire simultanment, il est conseill de dfinir l'attribut NOLOGGING avant de charger les donnes et de le rinitialiser (LOGGING) une fois le chargement des donnes termin. Autres considrations Toutes les donnes charges l'aide de cette mthode sont charges au-dessus du repre highwater mark. Si la table contient un grand nombre de blocs dont des lignes ont t supprimes, on peut constater une perte d'espace et un ralentissement des balayages complets de table (full table scans).

Oracle9i Database Administration I 19-5

Chargement des donnes par chemin direct en srie


INSERT /*+ APPEND */ INTO emp NOLOGGING SELECT * FROM t_employees; COMMIT;
Processus serveur

Table EMPLOYEES

Bloc utilis Espace libre aprs la suppression


19-6

Repre high-water mark Blocs utiliss par les lignes insres

Copyright Oracle Corporation, 2001. Tous droits rservs.

Chargement des donnes par chemin direct en srie Chargement des donnes par chemin direct dans une table non partitionne, une table partitionne ou une table sous-partitionne Les donnes sont insres au-del du repre high-water mark actuel du segment de table ou de chaque segment de partition. Le repre high-water mark correspond au niveau auquel les blocs n'ont jamais t formats pour recevoir des donnes. Lors de l'excution d'une instruction, une nouvelle valeur est affecte ce repre, rendant ainsi les donnes visibles aux autres utilisateurs. Lors du chargement d'une table partitionne ou sous-partitionne, SQL*Loader partitionne les lignes et gre les index (qui peuvent galement tre partitionns). Un chargement de donnes par chemin direct d'une table partitionne ou sous-partitionne peut consommer une grande quantit de ressources.

Oracle9i Database Administration I 19-6

Chargement des donnes par chemin direct en parrallle


ALTER SESSION ENABLE PARALLEL DML; INSERT /*+PARALLEL(hr.employees,2) */ INTO hr.employees NOLOGGING SELECT * FROM hr.old_employees;
Processus esclave Processus esclave

Table EMPLOYEES

Bloc utilis Espace libre aprs la suppression


19-7

Repre high-water mark Segments temporaires

Copyright Oracle Corporation, 2001. Tous droits rservs.

Chargement des donnes par chemin direct en parallle Vous pouvez charger des donnes par chemin direct en parallle : en utilisant le conseil PARALLEL dans l'instruction INSERT, comme indiqu dans l'exemple, ou en crant la table ou en la modifiant pour dfinir la clause PARALLEL. Lorsque vous effectuez des chargements de donnes par chemin direct en parallle, le serveur Oracle utilise plusieurs processus, appels processus esclaves "Parallel Query", pour insrer les donnes dans la table. Des segments temporaires sont allous pour le stockage des donnes insres par chaque processus esclave. Lorsque la transaction est valide, les extents (ensembles de blocs contigus) de chaque segment sont intgrs la table dans laquelle les enregistrements sont insrs. Remarque : Vous devez excuter la commande ALTER SESSION ENABLE PARALLEL DML au dbut de la transaction. Un objet modifi par chargement de donnes par chemin direct en parallle ne peut pas tre interrog ni modifi de nouveau dans la mme transaction. Pour plus d'informations sur les chargements de donnes par chemin direct en parallle, voir Oracle9i Database Reference, section "Parallel Execution".

Oracle9i Database Administration I 19-7

Chargement des donnes par chemin direct en parallle (suite) Chargement des donnes par chemin direct en parallle dans une table non partitionne Chaque serveur d'excution en parallle alloue un nouveau segment temporaire et insre des donnes dans ce segment. Lors de l'excution d'une instruction, le coordinateur de l'excution en parallle fusionne les nouveaux segments temporaires dans le segment de table principal. Chargement des donnes par chemin direct en parallle dans une table partitionne Chaque serveur d'excution en parallle peut avoir une ou plusieurs partitions, mais pas plus d'un processus par partition. Ce serveur insre des donnes au-del du repre high-water mark actuel des segments de partition qui lui sont affects. Lors de l'excution d'une instruction, le repre high-water mark de chaque segment de partition est mis jour par le coordinateur d'excution en parallle et prend la nouvelle valeur, rendant ainsi les donnes visibles aux autres utilisateurs.

Oracle9i Database Administration I 19-8

SQL*Loader
Fichier de contrle du programme de chargement Fichiers de donnes en entre

Fichier de paramtres (facultatif)

SQL*Loader Traitement du champ Acceptation Rebut Slection de l'enregistrement Slection

Rejet

Fichier des enregistrements refuss Rejet

Fichier de rebut (facultatif)

Serveur Oracle Insertion

Fichier journal Fichiers de donnes de la base


19-9 Copyright Oracle Corporation, 2001. Tous droits rservs.

Caractristiques de SQL*Loader L'utilitaire SQL*Loader charge les donnes des fichiers externes dans les tables d'une base de donnes Oracle. Ses caractristiques sont les suivantes : SQL*Loader peut utiliser un ou plusieurs fichiers en entre. Plusieurs enregistrements en entre peuvent tre combins pour former un enregistrement de chargement logique. Les champs en entre peuvent tre de longueur fixe ou de longueur variable. Les donnes en entre peuvent se prsenter sous n'importe quel format : caractre, binaire, dcimal condens, date et dcimal non condens. Les donnes peuvent tre charges partir de diffrents types de support, tels que des disques, des bandes ou des canaux nomms. Les donnes peuvent tre charges simultanment dans plusieurs tables. Des options sont disponibles pour ajouter des donnes aux tables ou remplacer des donnes existantes. Les fonctions SQL peuvent tre appliques aux donnes en entre avant le stockage de la ligne dans la base de donnes. Les valeurs de colonne peuvent tre gnres automatiquement en fonction de rgles. Par exemple, une valeur de cl squentielle peut tre gnre et stocke dans une colonne. Les donnes peuvent tre charges directement dans la table sans utiliser le cache de tampons de la base de donnes.

Oracle9i Database Administration I 19-9

Fichiers utiliss par SQL*Loader L'utilitaire SQL*Loader utilise les fichiers suivants : Fichier de contrle : dfinit le format d'entre, les tables de sortie et les conditions facultatives permettant de ne charger qu'une partie des enregistrements de fichiers de donnes en entre. Fichiers de donnes en entre : contiennent les donnes au format dfini dans le fichier de contrle. Fichier de paramtres : fichier facultatif permettant de dfinir les paramtres de ligne de commande pour le chargement. Fichier journal : fichier cr par SQL*Loader, qui contient l'enregistrement du chargement. Fichier des enregistrements refuss : utilis par l'utilitaire pour crire les enregistrements rejets lors du chargement des donnes (cette situation peut se produire lorsque l'utilitaire valide les enregistrements en entre ou lorsque le serveur Oracle insre les enregistrements). Fichier de rebut : cr, si ncessaire, pour stocker tous les enregistrements qui ne rpondent pas aux critres de slection.

Oracle9i Database Administration I 19-10

Utiliser SQL*Loader

$sqlldr hr/hr \ > control=case1.ctl \ > log=case1.log direct=Y


case1.ctl

SQL*Loader

Table EMPLOYEES case1.log


19-11 Copyright Oracle Corporation, 2001. Tous droits rservs.

Utiliser SQL*Loader Ligne de commande Lorsque vous appelez SQL*Loader, vous pouvez dfinir les paramtres qui dterminent les caractristiques de la session. Ces paramtres peuvent tre entrs dans n'importe quel ordre, ventuellement spars par des virgules. Vous pouvez indiquer les valeurs des paramtres ou, dans certains cas, accepter les paramtres par dfaut sans entrer de valeurs. Si vous appelez SQL*Loader sans dfinir de paramtres, un cran d'aide affiche les paramtres disponibles et leurs valeurs par dfaut.

Oracle9i Database Administration I 19-11

Utiliser SQL*Loader (suite) Utiliser Oracle Enterprise Manager pour effectuer un chargement de donnes l'aide de l'Assistant de Chargement A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Schema > Table. 2. Dveloppez la table dans laquelle vous chargerez les donnes. 3. Slectionnez Data Management > Load dans le menu accessible par le bouton droit de la souris. 4. La page Introduction de l'Assistant de Chargement s'affiche. 5. Slectionnez Next pour commencer. Remarque : Les autres diapositives de ce chapitre traitent des informations demandes dans l'Assistant de Chargement : 6. Utiliser la page Control File 7. Utiliser la page Data File 8. Utiliser la page Load Method pour dfinir la mthode de chargement 9. Utiliser la page Load Method pour dfinir les fichiers facultatifs 10. Utiliser la page Schedule 11. Utiliser la page Job Information 12. Utiliser la page Summary

Oracle9i Database Administration I 19-12

Fichier de contrle de SQL*Loader

Le fichier de contrle du programme de chargement indique SQL*Loader : L'emplacement des donnes de chargement Le format des donnes Les dtails de la configuration
gestion de la mmoire rejet de l'enregistrement dtails du traitement des chargements interrompus

La mthode de manipulation des donnes

19-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Fichier de contrle de SQL*Loader Le fichier de contrle de SQL*Loader est un fichier texte qui contient les instructions LDD (Langage de dfinition de donnes), lesquelles permettent de contrler les aspects suivants d'une session SQL*Loader : L'endroit o SQL*Loader trouve les donnes charger. Le format escompt des donnes. La manire dont SQL*Loader est configur (gestion de mmoire, rejet d'enregistrements, chargements interrompus, etc.) au cours du chargement des donnes. La manire dont SQL*Loader manipule les donnes en cours de chargement. Bien que ce ne soit pas explicitement dfini, le fichier de contrle du programme de chargement est compos de trois sections. La premire section contient des informations de session, telles que : - des options globales comme les paramtres BINDSIZE, ROWS et SKIP, etc., - des clauses INFILE qui indiquent l'emplacement des donnes en entre, - le mode de chargement des donnes. La deuxime section est compose d'un ou de plusieurs blocs INTO TABLE. Chaque bloc contient des informations sur la table dans laquelle les donnes doivent tre charges (le nom et les colonnes de la table, par exemple). La troisime section est facultative et contient, le cas chant, les donnes en entre.

Oracle9i Database Administration I 19-13

Fichier de contrle de SQL*Loader (suite) L'exemple ci-dessous prsente un fichier de contrle de SQL*Loader standard. 1 -- This is a sample control file 2 LOAD DATA 3 INFILE SAMPLE.DAT 4 BADFILE sample.bad 5 DISCARDFILE sample.dsc 6 APPEND 7 INTO TABLE emp 8 WHEN (57) = . 9 TRAILING NULLCOLS 10 (hiredate SYSDATE, deptno POSITION(1:2) INTEGER EXTERNAL(3) NULLIF deptno=BLANKS, job POSITION(7:14) CHAR TERMINATED BY WHITESPACE NULLIF job=BLANKS "UPPER(:job)", mgr POSITION(28:31) INTEGER EXTERNAL TERMINATED BY WHITESPACE, NULLIF mgr=BLANKS, ename POSITION(34:41) CHAR TERMINATED BY WHITESPACE "UPPER(:ename)", empno POSITION(45) INTEGER EXTERNAL TERMINATED BY WHITESPACE, sal POSITION(51) CHAR TERMINATED BY WHITESPACE "TO_NUMBER(:sal,$99,999.99)", comm INTEGER EXTERNAL ENCLOSED BY ( AND % ":comm * 100" ) Explication de cet exemple : 1. Les commentaires sont introduits de cette faon dans le fichier de contrle. Ils peuvent apparatre n'importe quelle ligne de commande du fichier, mais pas l'intrieur des donnes. 2. L'instruction LOAD DATA informe SQL*Loader qu'un nouveau chargement de donnes commence. Si vous poursuivez un chargement interrompu en cours d'excution, vous devez utiliser l'instruction CONTINUE LOAD DATA. 3. Le mot-cl INFILE indique le nom d'un fichier de donnes contenant les donnes charger.

Oracle9i Database Administration I 19-14

Fichier de contrle de SQL*Loader (suite) 4. Le mot-cl BADFILE indique le nom d'un fichier dans lequel sont placs les enregistrements rejets. 5. Le mot-cl DISCARDFILE indique le nom d'un fichier dans lequel sont placs les enregistrements de rebut. 6. Le mot-cl APPEND est l'une des options que vous pouvez utiliser lors du chargement des donnes dans une table qui contient dj des donnes. Pour charger des donnes dans une table vide, utilisez le mot-cl INSERT. 7. Le mot-cl INTO TABLE vous permet d'identifier les tables, les champs et les types de donnes. Il dfinit la relation entre les enregistrements du fichier de donnes et les tables de la base de donnes. 8. La clause WHEN indique une ou plusieurs conditions de champ auxquelles chaque enregistrement doit rpondre avant que SQL*Loader ne charge les donnes. Dans cet exemple, SQL*Loader ne charge l'enregistrement que si le 57me caractre est une virgule dcimale. Cette virgule spare les dollars des cents dans le champ et entrane le rejet des enregistrements si aucune valeur n'est affecte SAL. 9. La clause TRAILING NULLCOLS demande SQL*Loader de traiter toutes les colonnes en position relative qui ne figurent pas dans l'enregistrement comme des colonnes NULL. 10. Le reste du fichier de contrle contient la liste des champs et fournit des informations sur les formats de colonne de la table en cours de chargement.

Oracle9i Database Administration I 19-15

Fichier de contrle de SQL*Loader (suite) Utiliser la colonne OEM pour effectuer un chargement de donnes l'aide de l'Assistant de Chargement A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Schema > Table. 2. Dveloppez la table dans laquelle vous chargerez les donnes. 3. Slectionnez Data Management > Load dans le menu accessible par le bouton droit de la souris. 4. La page Introduction de l'Assistant de Chargement s'affiche. 5. Slectionnez Next pour commencer. Remarque : Les autres diapositives de ce chapitre traitent des informations demandes dans l'Assistant de Chargement : 6. Utiliser la page Control File : Indiquez le chemin et le nom complets du fichier de contrle sur le serveur de bases de donnes. 7. Slectionnez Next. 8. Utiliser la page Data File 9. Utiliser la page Load Method pour dfinir la mthode de chargement 10. Utiliser la page Load Method pour dfinir les fichiers facultatifs 11. Utiliser la page Schedule 12. Utiliser la page Job Information 13. Utiliser la page Summary

Oracle9i Database Administration I 19-16

Remarques sur la syntaxe du fichier de contrle


Le format de la syntaxe est libre. La syntaxe n'est pas sensible la casse. Les commentaires sont prcds de deux traits d'union (--) et se terminent la fin de la ligne. Le mot-cl CONSTANT est rserv.

19-17

Copyright Oracle Corporation, 2001. Tous droits rservs.

Remarques sur la syntaxe du fichier de contrle Le format de la syntaxe est libre (les instructions peuvent tre insres sur plusieurs lignes). La syntaxe n'est pas sensible la casse. Cependant, les chanes places entre apostrophes ou guillemets sont prises en compte littralement, de mme que la casse. Dans la syntaxe du fichier de contrle, les commentaires sont prcds de deux traits d'union (--) et se terminent la fin de la ligne. La troisime section facultative du fichier de contrle est interprte comme des donnes plutt que comme une syntaxe. Les commentaires de cette section ne sont donc pas pris en charge. Le mot-cl CONSTANT est rserv, car il a une signification particulire pour SQL*Loader. Afin d'viter tout conflit, il convient donc de ne pas utiliser le mot CONSTANT dans les noms de table ou de colonne.

Oracle9i Database Administration I 19-17

Donnes et fichiers de donnes en entre

SQL*Loader lit les donnes partir d'un ou de plusieurs fichiers dfinis dans le fichier de contrle. Dans SQL*Loader, les donnes du fichier de donnes sont organises en enregistrements. Un fichier de donnes peut avoir l'un des trois formats suivants :
Format d'enregistrement fixe Format d'enregistrement variable Format d'enregistrement de type "stream"

19-18

Copyright Oracle Corporation, 2001. Tous droits rservs.

Donnes et fichiers de donnes en entre Format d'enregistrement fixe Un fichier de donnes est au format d'enregistrement fixe lorsque tous ses enregistrements prsentent la mme longueur binaire. Bien que ce format soit le moins flexible, il offre de meilleures performances que le format variable ou le format de type "stream" et sa dclaration est simple. Exemple : INFILE <datafile_name> "fix n" Cet exemple indique que SQL*Loader doit interprter le fichier de donnes indiqu comme un fichier au format d'enregistrement fixe dont tous les enregistrements prsentent la mme longueur binaire de n octets. L'exemple ci-dessous prsente un fichier de contrle qui indique un fichier de donnes au format d'enregistrement fixe. Le fichier de donnes contient quatre enregistrements physiques. Le premier enregistrement est [0001, abcd], ce qui reprsente prcisment neuf octets (avec un jeu de caractres simple octet) et le retour chariot reprsente le dixime octet. load data infile example.dat "fix 10" into table example fields terminated by , (col1, col2) example.dat: 0001,abcd 0002,fghi 0003,klmn
Oracle9i Database Administration I 19-18

Donnes et fichiers de donnes en entre (suite) Format d'enregistrement variable Un fichier est au format d'enregistrement variable lorsque la longueur de chaque enregistrement d'un champ de type caractre est insre au dbut de chacun de ses enregistrements. Ce format est plus flexible que le format d'enregistrement fixe et plus performant que le format d'enregistrement de type "stream". Par exemple, vous pouvez dfinir comme suit un fichier de donnes interprter comme un fichier au format variable : INFILE "datafile_name" "var n" Dans cet exemple, n indique le nombre d'octets contenus dans le champ de longueur d'enregistrement. Si aucune valeur n'est affecte n, SQL*Loader prend par dfaut la valeur 5. L'affectation d'une valeur n suprieure 40 gnre une erreur. L'exemple suivant prsente la dfinition d'un fichier de contrle qui demande SQL*Loader de rechercher des donnes dans le fichier example.dat et d'attendre un format d'enregistrement variable dans lequel les champs correspondant la longueur de l'enregistrement prsentent une longueur de 3 octets. Le fichier de donnes example.dat est compos de trois enregistrements physiques. La longueur du premier enregistrement est de 009 (neuf) octets, celle du deuxime enregistrement est de 010 octets (dont un saut de ligne de un caractre), et celle du troisime enregistrement est de 012 octets. Cet exemple considre galement que le fichier de donnes possde un jeu de caractres simple octet. load data infile example.dat "var 3 into table example fields terminated by , optionally enclosed by " (col1 char(5),col2 char(7)) example.dat: 009hello,cd, 010world,im, 012my,name is, Format d'enregistrement de type "stream" Un fichier est au format d'enregistrement de type "stream" lorsque les enregistrements ne sont pas dfinis en fonction de la taille. SQL*Loader constitue des enregistrements en effectuant un balayage pour localiser le caractre de fin de l'enregistrement. Ce type de format est le plus flexible, mais son utilisation peut affecter les performances. Vous pouvez dfinir comme suit un fichier de donnes interprter comme un fichier au format d'enregistrement de type "stream" : INFILE <datafile_name> ["str terminator_string"] The terminator_string is specified as either char_string or Xhex_string where: char_string dsigne une chane de caractres place entre apostrophes ou guillemets, Xhex_string dsigne une chane binaire au format hexadcimal.

Oracle9i Database Administration I 19-19

Donnes et fichiers de donnes en entre (suite) Lorsque la chane terminator_string contient des caractres spciaux (non imprimables), elle doit tre dfinie comme une chane Xhex_string . Vous pouvez dfinir certains caractres non imprimables comme (char_string) en utilisant une barre oblique inverse, comme le montre l'exemple suivant : \n saut de ligne (retour la ligne) \t tabulation horizontale \f page suivante \v tabulation verticale \r retour chariot Si le jeu de caractres de votre session, dfini par le paramtre NLS_LANG, est diffrent de celui du fichier de donnes, les chanes de caractres sont converties dans le jeu de caractres du fichier de donnes. Etant donn que l'on suppose que les chanes hexadcimales figurent dans le jeu de caractres du fichier de donnes, aucune conversion n'est ralise. Si aucune chane terminator_string n'est dfinie, le caractre de retour la ligne (fin de ligne) est utilis par dfaut (saut de ligne sur les plates-formes de type UNIX, retour chariot suivi d'un saut de ligne sur les plates-formes Microsoft, etc.). Le caractre de saut de ligne est reli au jeu de caractres du fichier de donnes. L'exemple suivant prsente le chargement de donnes au format d'enregistrement de type "stream" dans lequel la chane terminator_string est dfinie l'aide de la chane de caractres |\n'. La barre oblique inverse permet de dfinir le caractre non imprimable de saut de ligne. load data infile example.dat "str |\n into table example fields terminated by , optionally enclosed by " (col1 char(5), col2 char(7)) example.dat: hello,world,| james,bond,|

Oracle9i Database Administration I 19-20

Donnes et fichiers de donnes en entre (suite) Utiliser Oracle Enterprise Manager pour effectuer un chargement de donnes l'aide de l'Assistant de Chargement A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Schema > Table 2. Dveloppez la table dans laquelle vous chargerez les donnes. 3. Slectionnez Data Management > Load dans le menu accessible par le bouton droit de la souris. 4. La page Introduction de l'Assistant de Chargement s'affiche. 5. Slectionnez Next pour commencer. Remarque : Les autres diapositives de ce chapitre traitent des informations demandes dans l'Assistant de Chargement : 6. Utiliser la page Control File : Indiquez le chemin et le nom complets du fichier de contrle sur le serveur de bases de donnes. Slectionnez Next. 7. Utiliser la page Data File : Cette page dtermine la manire dont vous souhaitez dfinir le fichier contenant les donnes. Vous pouvez choisir l'une des mthodes suivantes : Dfinir les donnes dans le fichier de contrle (identifi ci-dessus). Indiquer le chemin complet du serveur de bases de donnes sur lequel rside le fichier de donnes. Dans ce cas, n'oubliez pas de respecter la casse dans les environnements Unix. 8. Utiliser la page Load Method pour dfinir la mthode de chargement 9. Utiliser la page Load Method pour dfinir les fichiers facultatifs 10. Utiliser la page Schedule 11. Utiliser la page Job Information 12. Utiliser la page Summary

Oracle9i Database Administration I 19-21

Enregistrements logiques

Vous pouvez indiquer SQL*Loader de suivre l'une des stratgies de cration d'enregistrement logique suivantes : Combiner un nombre fixe d'enregistrements physiques pour la cration de chaque enregistrement logique. Combiner des enregistrements physiques des enregistrements logiques lorsqu'une condition donne est vraie.

19-22

Copyright Oracle Corporation, 2001. Tous droits rservs.

Enregistrements logiques SQL*Loader organise les donnes en entre en enregistrements physiques, en fonction du format d'enregistrement dfini. Un enregistrement physique est par dfaut un enregistrement logique, mais pour une plus grande flexibilit, il est possible d'indiquer SQL*Loader de combiner un certain nombre d'enregistrements physiques un enregistrement logique. Pour raliser cette opration, SQL*Loader peut utiliser l'une des deux mthodes suivantes : Combiner un nombre fixe d'enregistrements physiques pour la cration de chaque enregistrement logique. Combiner des enregistrements physiques des enregistrements logiques lorsqu'une condition donne est vraie. Utiliser CONCATENATE pour assembler des enregistrements logiques Le mot-cl CONCATENATE est utilis lorsque SQL*Loader doit toujours ajouter le mme nombre d'enregistrements physiques pour crer un enregistrement logique. L'exemple suivant utilise CONCATENATE avec integer, qui indique le nombre d'enregistrements physiques combiner : CONCATENATE integer

Oracle9i Database Administration I 19-22

Utiliser CONTINUEIF pour assembler des enregistrements logiques Vous devez utiliser le mot-cl CONTINUEIF si le nombre d'enregistrements physiques poursuivre varie. CONTINUEIF est suivi d'une condition value pour chaque enregistrement physique lu. Par exemple, deux enregistrements peuvent tre combins si le premier enregistrement comporte un signe dise (#) en position 80. S'il s'agit d'un autre caractre, le second enregistrement ne sera pas ajout au premier.

Oracle9i Database Administration I 19-23

Mthodes de chargement des donnes


Instance

Insertion de tableau

Mmoire SGA

Zone de mmoire partage

Conventionnel Table

Enregistrement des donnes

Chemin direct

Espace utilis uniquement par le chargement par chemin conventionnel


19-24

Repre high-water mark

Copyright Oracle Corporation, 2001. Tous droits rservs.

Mthodes de chargement des donnes SQL*Loader permet le chargement de donnes de deux manires : par chemin conventionnel, par chemin direct. Chargement des donnes par chemin conventionnel Le chargement des donnes par chemin conventionnel cre un tableau contenant les lignes insrer et utilise l'instruction SQL INSERT pour charger les donnes. Au cours du chargement, les enregistrements en entre sont analyss en fonction des spcifications de champ, et un tableau d'enregistrements est cr et insr dans la table dfinie dans le fichier de contrle. Les enregistrements qui ne respectent pas les spcifications de champ sont rejets, ceux qui ne correspondent pas aux critres de slection sont mis au rebut. Vous pouvez utiliser le chargement par chemin conventionnel pour charger des donnes aussi bien dans les tables clusterises que dans les tables non clusterises. La gnration des informations de journalisation est contrle par l'attribut de journalisation de la table charge.

Oracle9i Database Administration I 19-24

Mthodes de chargement des donnes (suite) Chargement des donnes par chemin direct Le chargement des donnes par chemin direct cre des blocs de donnes en mmoire et les enregistre directement dans les extents allous la table en cours de chargement. Aucune entre de journalisation n'est cre si la base de donnes ne fonctionne pas en mode ARCHIVELOG. Le chargement des donnes par chemin direct utilise les spcifications de champ pour crer des blocs de donnes Oracle complets qu'il crit directement dans des fichiers de donnes Oracle. Cette mthode n'utilise pas le cache de tampons de la base de donnes et accde la mmoire SGA uniquement pour grer les extents et ajuster le repre high-water mark. Le chargement des donnes par chemin direct est gnralement plus rapide que le chargement des donnes par chemin conventionnel, mais ne convient pas toutes les situations. La section suivante prsente une comparaison des deux mthodes et des exemples dcrivant les situations dans lesquelles chaque mthode peut tre utilise. Remarque : Le script catldr.sql, fourni par Oracle, cre des vues utilises pour le chargement des donnes par chemin direct. Ce script est appel automatiquement l'excution du script catalog.sql.

Oracle9i Database Administration I 19-25

Mthodes de chargement des donnes (suite) Utiliser Oracle Enterprise Manager pour effectuer un chargement de donnes l'aide de l'Assistant de Chargement A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Schema > Table. 2. Dveloppez la table dans laquelle vous chargerez les donnes. 3. Slectionnez Data Management > Load dans le menu accessible par le bouton droit de la souris. 4. La page Introduction de l'Assistant de Chargement s'affiche. 5. Slectionnez Next pour commencer. Remarque : Les autres diapositives de ce chapitre traitent des informations demandes dans l'Assistant de Chargement : 6. Utiliser la page Control File : Indiquez le chemin et le nom complets du fichier de contrle sur le serveur de bases de donnes. Slectionnez Next. 7. Utiliser la page Data File : Cette page dtermine la manire dont vous souhaitez dfinir le fichier contenant les donnes. Vous pouvez choisir l'une des mthodes suivantes : Dfinir les donnes dans le fichier de contrle (identifi ci-dessus). Indiquer le chemin complet du serveur de bases de donnes sur lequel rside le fichier de donnes. Dans ce cas, n'oubliez pas de respecter la casse dans les environnements Unix. 8. Utiliser la page Load Method pour dfinir la mthode de chargement : Cette page dfinit la mthode de chargement des donnes que vous souhaitez utiliser. Vous pouvez choisir l'une des mthodes suivantes : Conventional Path Direct Load Parallel Direct Load 9. Utiliser la page Load Method pour dfinir les fichiers facultatifs 10. Utiliser la page Schedule 11. Utiliser la page Job Information 12. Utiliser la page Summary

Oracle9i Database Administration I 19-26

Comparer les chargements de donnes par chemin direct et par chemin conventionnel
Chargement des donnes par chemin conventionnel Utilise COMMITs pour rendre les modifications permanentes Entres de journalisation toujours gnres Applique toutes les contraintes Les dclencheurs INSERT s'excutent Peut effectuer un chargement dans des tables clusterises Les autres utilisateurs peuvent modifier les tables
19-27

Chargement des donnes par chemin direct Utilise des enregistrements de donnes Gnre une journalisation uniquement sous certaines conditions Applique uniquement les contraintes de cl primaire, de cl unique et NOT NULL Les dclencheurs INSERT ne s'excutent pas Ne peut pas effectuer de chargement dans des tables clusterises Les autres utilisateurs ne peuvent pas modifier les tables

Copyright Oracle Corporation, 2001. Tous droits rservs.

Comparer les chargements de donnes par chemin direct et par chemin conventionnel Mthode d'enregistrement des donnes Le chargement des donnes par chemin conventionnel utilise une instruction SQL et des instructions COMMIT sur la base de donnes pour enregistrer les donnes. L'insertion d'un tableau d'enregistrements est suivie d'une opration de validation. Chaque chargement de donnes peut faire appel plusieurs transactions. Le chargement des donnes par chemin direct enregistre les donnes pour crire des blocs de donnes dans des fichiers de donnes Oracle. Un enregistrement de donnes et une validation (COMMIT) prsentent les diffrences suivantes : Lors d'un enregistrement de donnes, seuls les blocs de base de donnes complets sont crits dans la base. Les blocs sont crits aprs le repre high-water mark de la table. Le repre est dplac aprs l'enregistrement des donnes. Les ressources internes ne sont pas libres la suite de l'enregistrement des donnes. Un enregistrement de donnes ne met pas fin la transaction. Les index ne sont pas mis jour chaque enregistrement de donnes.

Oracle9i Database Administration I 19-27

Comparer les chargements de donnes par chemin direct et par chemin conventionnel (suite) Consigner les modifications Le chargement des donnes par chemin conventionnel gnre des entres de journalisation comme n'importe quelle instruction LMD. Dans le chargement par chemin direct, aucune entre de journalisation n'est cre : si la base de donnes fonctionne en mode NOARCHIVELOG, si la base de donnes fonctionne en mode ARCHIVELOG et que la journalisation est dsactive. Vous pouvez dsactiver la journalisation en affectant la table l'attribut NOLOGGING ou en indiquant la clause UNRECOVERABLE dans le fichier de contrle. Appliquer les contraintes Lors d'un chargement des donnes par chemin conventionnel, toutes les contraintes actives sont appliques comme s'il s'agissait d'une opration LMD. Lors d'un chargement des donnes par chemin direct, les contraintes sont traites comme suit : Les contraintes NOT NULL sont vrifies lors de la cration des tableaux. Les contraintes de cl trangre et les contraintes CHECK sont dsactives et peuvent tre ractives la fin du chargement en utilisant les commandes appropries dans le fichier de contrle. Les contraintes de cl trangre sont dsactives, car elles font rfrence d'autres lignes ou tables. Les contraintes CHECK sont dsactives, car elles peuvent utiliser des fonctions SQL. Si vous ne devez insrer qu'un petit nombre de lignes dans une table volumineuse, prfrez le chargement des donnes par chemin conventionnel. Les contraintes de cl primaire et de cl unique sont vrifies au cours du chargement et la fin du chargement, et peuvent tre dsactives en cas de violation. Excuter les dclencheurs INSERT Les dclencheurs (triggers) WHILE INSERT sont activs pendant le chargement des donnes par chemin conventionnel. En revanche, ils sont dsactivs avant l'excution d'un chargement des donnes par chemin direct et ractivs la fin du chargement. Ils peuvent rester dsactivs si un objet rfrenc n'est pas accessible la fin du chargement. Utilisez le chargement des donnes par chemin conventionnel pour charger des donnes dans des tables avec des dclencheurs INSERT. Charger les donnes dans des tables clusterises Vous ne pouvez pas utiliser le chargement des donnes par chemin direct pour charger des lignes dans une table incluse dans un cluster. Vous ne pouvez charger une table incluse dans un cluster qu'avec le chargement des donnes par chemin conventionnel. Verrouillage Lorsqu'un chargement des donnes par chemin direct est en cours, les autres transactions ne peuvent pas modifier les tables en cours de chargement, sauf lorsque plusieurs sessions de chargement des donnes par chemin direct en parallle sont utilises simultanment.

Oracle9i Database Administration I 19-28

Chargement des donnes par chemin direct en parallle


Segments temporaires load1.dat SQL*Loader load1.ctl load2.dat load2.ctl load3.dat load3.ctl Table SQL*Loader

SQL*Loader

Repre high-water mark


19-29 Copyright Oracle Corporation, 2001. Tous droits rservs.

Chargement des donnes par chemin direct en parallle L'ouverture de plusieurs sessions SQL*Loader permet d'amliorer les performances du chargement des donnes par chemin direct. Trois modles de simultanit d'accs aux donnes peuvent rduire le temps de chargement des donnes le chargement des donnes par chemin conventionnel en parallle, la mthode de chargement par chemin direct avec simultanit entre segments, la mthode de chargement par chemin direct avec simultanit au sein des segments. Chemin conventionnel simultan Si des dclencheurs ou des contraintes d'intgrit posent problme, mais que vous souhaitez acclrer le chargement, vous devez envisager le chargement de donnes par chemin conventionnel simultan. Excutez plusieurs sessions de chargement simultanes sur un systme plusieurs CPU. Divisez les fichiers de donnes en entre en fichiers distincts en fonction des limites logiques des enregistrements, puis chargez chacun de ces fichiers via une session de chargement des donnes par chemin conventionnel. Simultanit entre segments Vous pouvez utiliser la simultanit entre segments pour charger simultanment diffrents objets. Cette technique peut s'appliquer au chargement de diffrentes tables ou au chargement de diffrentes partitions de la mme table par chemin direct simultan.

Oracle9i Database Administration I 19-29

Simultanit au sein des segments Le chargement des donnes par chemin direct en parallle permet plusieurs sessions de chargement par chemin direct de charger simultanment des donnes dans la mme table ou dans la mme partition d'une table partitionne. Le paralllisme au sein des segments est alors possible.

Oracle9i Database Administration I 19-30

Conversion des donnes

Pendant le chargement des donnes par chemin conventionnel, les champs de donnes du fichier de donnes sont convertis en colonnes dans la base. La conversion s'effectue en deux tapes : Les spcifications de champ du fichier de contrle permettent d'interprter le format de ce fichier et de le convertir en instruction SQL INSERT l'aide de ces donnes. Le serveur de bases de donnes Oracle accepte les donnes, puis excute l'instruction INSERT pour les stocker dans la base.

19-31

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 19-31

Enregistrements de rebut ou refuss

Fichier des enregistrements refuss


SQL*Loader rejette les enregistrements dont le format d'entre n'est pas valide. Si la base de donnes Oracle considre que la ligne n'est pas valide, l'enregistrement est rejet et plac par SQL*Loader dans le fichier des enregistrements refuss.

Fichier de rebut
Ce fichier ne peut tre utilis que s'il a t activ. Ce fichier contient des enregistrements qui ont t extraits par filtrage, car ils ne correspondaient pas aux critres de slection de l'enregistrement dfinis dans le fichier de contrle.
19-32 Copyright Oracle Corporation, 2001. Tous droits rservs.

Enregistrements de rebut ou refuss Fichier des enregistrements refuss Ce fichier contient des enregistrements qui ont t rejets par SQL*Loader ou par la base de donnes Oracle. Raisons du rejet par SQL*Loader SQL*Loader rejette des enregistrements lorsque le format d'entre n'est pas valide. Par exemple, s'il manque le dlimiteur d'inclusion ou si un champ dlimit dpasse sa longueur maximale, l'enregistrement est rejet. Les enregistrements rejets sont placs dans le fichier des enregistrements refuss. Raisons du rejet par Oracle Une fois que SQL*Loader a accept l'enregistrement pour traitement, une ligne insrer est envoye Oracle. Si Oracle dtermine que la ligne est valide, elle est insre dans la base de donnes. Dans le cas contraire, l'enregistrement est rejet et SQL*Loader le place dans le fichier des enregistrements refuss. Il est possible que la ligne soit rejete si une cl n'est pas unique ou si un champ requis contient une valeur NULL ou des donnes non valides pour le type de donnes Oracle.

Oracle9i Database Administration I 19-32

Enregistrements de rebut ou refuss (suite) Fichier de rebut Lors de son excution, SQL*Loader peut crer un fichier nomm fichier de rebut. Ce fichier est cr uniquement lorsqu'il est requis et si vous avez dfini que ce type de fichier doit tre activ. Le fichier de rebut contient des enregistrements qui ont t extraits par filtrage du chargement de donnes parce qu'ils ne correspondaient pas aux critres de slection de l'enregistrement dfinis dans le fichier de contrle. Le fichier de rebut contient par consquent des enregistrements qui n'ont pas t insrs dans la base de donnes. Vous pouvez indiquer le nombre maximal d'enregistrements placer dans ce fichier.

Oracle9i Database Administration I 19-33

Enregistrements de rebut ou refuss (suite) Utiliser Oracle Enterprise Manager pour effectuer un chargement de donnes l'aide de l'Assistant de Chargement A partir de la console OEM, procdez comme suit : 1. Slectionnez Databases > Schema > Table. 2. Dveloppez la table dans laquelle vous chargerez les donnes. 3. Slectionnez Data Management > Load dans le menu accessible par le bouton droit de la souris. 4. La page Introduction de l'Assistant de Chargement s'affiche. 5. Slectionnez Next pour commencer. Remarque : Les autres diapositives de ce chapitre traitent des informations demandes dans l'Assistant de Chargement : 6. Utiliser la page Control File : Indiquez le chemin et le nom complets du fichier de contrle sur le serveur de bases de donnes. Slectionnez Next. 7. Utiliser la page Data File : Cette page dtermine la manire dont vous souhaitez dfinir le fichier contenant les donnes. Vous pouvez choisir l'une des mthodes suivantes : : Dfinir les donnes dans le fichier de contrle (identifi ci-dessus). Indiquer le chemin complet du serveur de bases de donnes sur lequel rside le fichier de donnes. Dans ce cas, n'oubliez pas de respecter la casse dans les environnements Unix. 8. Utiliser la page Load Method pour dfinir la mthode de chargement : Cette page dfinit la mthode de chargement des donnes que vous souhaitez utiliser. Vous pouvez choisir l'une des mthodes suivantes : Conventional Path Direct Load Parallel Direct Load Lorsque l'Assistant de Chargement reoit les informations ci-dessus, le chargement s'excute comme un travail OEM. 9. Utiliser la page Load Method pour dfinir les fichiers facultatifs : Cette page vous permet galement de dfinir des besoins supplmentaires en chargement, des options de rglage (tuning) et des fichiers facultatifs. Procdez comme suit pour dfinir le chemin du fichier des enregistrements refuss, du fichier de rebut et du fichier journal : Slectionnez le bouton Advanced de cette page. Slectionnez la page Optional Files. Choisissez de gnrer l'un des fichiers et indiquez un chemin complet pour chaque fichier slectionn. Slectionnez OK. Lorsque l'Assistant de Chargement reoit les informations ci-dessus, le chargement s'excute comme un travail OEM

Oracle9i Database Administration I 19-34

Enregistrements de rebut ou refuss (suite) Utiliser Oracle Enterprise Manager pour effectuer un chargement de donnes l'aide de l'Assistant de Chargement (suite) Remarque : Lorsque l'Assistant de Chargement reoit les informations ci-dessus, le chargement s'excute comme un travail OEM. 10. Utiliser la page Schedule : Cette page indique quel moment vous souhaitez excuter le travail. 11. Utiliser la page Job Information : Cette page indique le nom et la finalit du travail. Elle vous permet galement de remplacer toute information d'identification et de connexion de prfrence. Il est recommand de dfinir le propritaire du schma ce stade. 12. Utiliser la page Summary : Cette page synthtise les informations de la page Load Wizard que vous avez soumises. Vous pouvez ainsi parcourir les informations et les sauvegarder si vous devez effectuer des modifications. Si tout semble correct, slectionnez OK pour soumettre le travail. 13. Slectionnez Jobs dans l'arborescence. 14. Visualisez votre travail dans la page History.

Oracle9i Database Administration I 19-35

Contenu des fichiers journaux

Informations d'en-tte Informations gnrales Informations sur les tables Informations sur les fichiers de donnes Informations de chargement des tables Statistiques rcapitulatives Statistiques supplmentaires relatives aux chargements des donnes par chemin direct et informations sur la technologie multithread

19-36

Copyright Oracle Corporation, 2001. Tous droits rservs.

Contenu des fichiers journaux La section des informations d'en-tte contient les entres suivantes : Date de l'excution Numro de version du logiciel La section des informations gnrales contient les entres suivantes : Nom de tous les fichiers d'entre et de sortie Echo des arguments de ligne de commande Spcification des caractres de suite La section des informations sur les tables contient les entres suivantes pour chaque table charge : Nom de la table Conditions de chargement, le cas chant. Elles indiquent si tous les enregistrements ou uniquement les enregistrements rpondant la clause WHEN ont t chargs Spcification INSERT, APPEND ou REPLACE Les informations de colonnes suivantes : si elles existent dans le fichier de donnes : la position, la longueur, le type de donnes et le dlimiteur, si elles sont dfinies : RECNUM, SEQUENCE, CONSTANT ou EXPRESSION, si elles sont dfinies : DEFAULTIF ou NULLIF.

Oracle9i Database Administration I 19-36

Contenu des fichiers journaux (suite) Si le fichier de contrle SQL*Loader contient des directives de chargement de donnes de type datetime ou interval, le fichier journal contient le mot-cl DATETIME ou INTERVAL sous l'en-tte Data type. Si cela s'avre pertinent, le mot-cl est suivi du repre correspondant. La section des informations sur le fichier de donnes ne s'affiche que lorsque des fichiers de donnes prsentent des erreurs de donnes. Elle contient les entres suivantes : Erreurs d'enregistrement de donnes SQL*Loader et Oracle Enregistrements de rebut La section des informations sur le chargement des tables contient les entres suivantes pour chaque table charge : Nombre de lignes charges Nombre de lignes qui auraient pu tre charges, mais qui ont t rejetes la suite d'erreurs de donnes Nombre de lignes mises au rebut car elles ne rpondaient pas aux tests de la clause WHEN Nombre de lignes dont les champs correspondants sont tous NULL La section des statistiques rcapitulatives affiche les donnes suivantes : Quantit d'espace utilise : - pour le tableau de variables (espace rellement utilis en fonction du paramtre BINDSIZE dfini) - pour les autres surcharges (donne obligatoire, indpendante de BINDSIZE) Statistiques de chargement cumules (nombre d'enregistrements ignors, lus ou rejets pour tous les fichiers de donnes). Les statistiques suivantes sont consignes au chargement d'une table : le chargement des donnes par chemin direct d'une table partitionne fournit un tat des statistiques par partition, le chargement des donnes par chemin conventionnel ne fournit pas d'tat des statistiques par partition. Si la restauration physique est dsactive, le chargement n'est pas consign. Dans ce cas, la demande d'opration consigne est remplace.

Oracle9i Database Administration I 19-37

Rgles d'utilisation de SQL*Loader

Utilisez un fichier de paramtres pour dfinir les options de ligne de commande couramment utilises. Ne placez les donnes dans le fichier de contrle que pour un chargement rduit unique. Amliorez les performances de la manire suivante :
Allouez un espace suffisant Triez les donnes sur l'index le plus volumineux Dans les chargements en parallle, dfinissez diffrents fichiers pour les segments temporaires

19-38

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rgles d'utilisation de SQL*Loader Les instructions suivantes vous permettent de rduire le nombre d'erreurs et d'amliorer les performances lorsque vous utilisez SQL*Loader : Utilisez un fichier de paramtres pour dfinir les options de ligne de commande couramment utilises. Par exemple, si vous chargez toutes les semaines les donnes dans un data warehouse, toutes les options, l'exception des noms de fichier, peuvent tre identiques. Sparez le fichier de contrle du fichier de donnes afin de permettre la rutilisation des fichiers de contrle pour plusieurs sessions de chargement. Prallouez l'espace en fonction du volume de donnes attendu pour viter l'allocation dynamique d'extents lors du chargement et amliorer la vitesse de chargement. Lorsque vous faites appel au chargement des donnes par chemin direct, des segments temporaires sont utiliss pour gnrer des index pour les nouvelles donnes. Ces index sont fusionns avec les index existants la fin du chargement. Vous pouvez rduire l'espace de tri en triant les donnes en entre sur les cls de l'index le plus volumineux. Avec le chargement des donnes par chemin direct en parallle, vous pouvez dfinir l'emplacement des segments temporaires utiliss pour l'insertion de donnes. Dfinissez un fichier de base de donnes diffrent pour chaque session de chargement afin d'optimiser les performances.

Oracle9i Database Administration I 19-38

Synthse

Ce chapitre vous a permis d'apprendre : dcrire l'utilisation de SQL*Loader raliser des oprations de base avec SQL*Loader dmontrer vos capacits dans le cadre d'un chargement des donnes par chemin direct rpertorier les rgles d'utilisation de SQL*Loader et du chargement des donnes par chemin direct

19-39

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 19-39

Prsentation de l'exercice 19

Dans cet exercice, vous allez : utiliser SQL*Loader pour restaurer des donnes
l'aide d'un fichier de contrle l'aide d'un fichier de donnes

utiliser le chargement des donnes par chemin direct pour charger des donnes

19-40

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 19 Remarque : Cet exercice peut tre ralis avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 19-40

Exercice 19 : charger des donnes dans une base 1 a Observez les fichiers de donnes utiliser dans le chargement afin de vous familiariser avec les formats de fichier de contrle et de fichier de donnes. Si vous utilisez SQL*Plus, observez les fichiers suivants : lcase1.ctl,lcase2.ctl et lcase2.dat. Si vous utilisez Oracle Enterprise Manager, observez les fichiers suivants : OEMsqlcase1.ctl, OEMsqlcase2.ctl et OEMsqlcase2. b En tant que HR, excutez le script lab19_01.sql pour crer la table DEPARTMENTS2 2 a Excutez SQL*Loader en mode de chargement des donnes par chemin conventionnel pour charger des donnes dans la table DEPARTMENTS2. Utilisez le fichier de contrle suivant : Dans SQL*Plus : lcase1.ctl Dans Oracle Enterprise Manager : OEMsqlcase1.ctl Les fichiers sont situs dans le rpertoire LABS. Remarque : Il s'excute en utilisant un fichier de contrle contenant les donnes en entre. b Utilisez la commande approprie du systme d'exploitation pour observer le fichier journal. c Interrogez la table DEPARTMENTS2 pour vrifier les donnes. 3 Supprimez tous les enregistrements de la table DEPTARTMENTS2. 4 a Excutez SQL*Loader en mode de chargement par chemin direct pour charger des donnes dans la table DEPTARTMENTS2. Utilisez les fichiers de contrle suivants : Dans SQL*Plus : lcase2.ctl Dans Oracle Enterprise Manager : OEMsqlcase2.ctl Les fichiers sont situs dans le rpertoire LABS. Remarque : Il s'excute en utilisant un fichier de donnes en entre qui charge les donnes. b Utilisez la commande approprie du systme d'exploitation pour observer le fichier journal. c Interrogez la table DEPARTMENTS2 pour vrifier les donnes.

Oracle9i Database Administration I 19-41

Exercice 19 : charger des donnes dans une base 5 a En tant qu'utilisateur HR, crez une table EMPLOYEES2 que vous slectionnez comme table EMPLOYEES. Videz la table. Effectuez ensuite une slection dans la table EMPLOYEES2 pour vrifier qu'elle ne contient aucune donne. b Effectuez un chargement par chemin direct de la table EMPLOYEES vers la table EMPLOYEES2 et interrogez cette dernire pour vrifier le chargement. 6 a Videz nouveau la table EMPLOYEES2. Effectuez ensuite une slection dans la table EMPLOYEES2 pour vrifier qu'elle ne contient aucune donne. b Restaurez les donnes l'aide d'un chargement par chemin direct en parallle depuis la table EMPLOYEES. Dfinissez un degr de paralllisme de 2. Vrifiez les donnes.

Oracle9i Database Administration I 19-42

Utiliser la prise en charge de la globalisation

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : choisir les jeux de caractres de la base de donnes et les jeux de caractres nationaux d'une base dfinir le comportement dpendant de la langue l'aide de paramtres d'initialisation, de variables d'environnement et de la commande ALTER SESSION utiliser les diffrents types de paramtre de support NLS expliquer l'influence sur le comportement d'application dpendant de la langue obtenir des informations sur l'utilisation de la prise en charge de la globalisation
20-2 Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 20-2

Caractristiques de la prise en charge de la globalisation


Prise en charge de la langue Prise en charge du territoire Prise en charge du jeu de caractres Tri linguistique Prise en charge des messages Formats de date et d'heure Nombres Devises

20-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Caractristiques de la prise en charge de la globalisation La prise en charge de la globalisation permet d'adapter la langue nationale les utilitaires de base de donnes et les messages d'erreur, ainsi que des conventions relatives l'ordre de tri, l'heure, aux dates, aux devises, aux nombres et au calendrier. Oracle reconnat actuellement 57 langues, 88 territoires, 84 tris linguistiques (71 tris monolingues et 13 tris multilingues) et 235 jeux de caractres cods. Les oprations dpendantes de la langue sont gres par des paramtres et des variables d'environnement sur le client et le serveur. Le serveur et le client peuvent tre excuts sur le mme site ou sur des sites diffrents. Lorsqu'ils utilisent des jeux de caractres diffrents, le serveur Oracle gre automatiquement la conversion de ces jeux.

Oracle9i Database Administration I 20-3

Caractristiques de la prise en charge de la globalisation (suite) Les utilisateurs peuvent manipuler, stocker, traiter et extraire des donnes dans leur langue nationale, notamment dans les langues de l'Europe de l'Ouest, de l'Europe de l'Est, du Moyen-Orient, de l'Asie orientale et de l'Asie du Sud-Est. Chaque pays et chaque zone gographique possde ses propres conventions culturelles qui affectent directement les formats des donnes. Un grand nombre d'encodages de jeux de caractres, dont les jeux simple octet, multioctets et de longueur fixe, sont pris en charge. Le serveur Oracle permet d'effectuer un grand nombre de tris linguistiques qui tiennent compte des rgles de tri de chaque langue. Les utilitaires et les messages d'erreur de la base de donnes s'affichent dans la langue nationale. Les produits Oracle sont traduits dans 30 langues. Les dates et les heures peuvent tre prsentes au format ISO (International Organization for Standardization), selon les conventions relatives la partie dcimale des secondes, aux secondes, minutes, heures, jours, mois et annes. Les fuseaux horaires permettent de prendre en charge l'heure d't. Les calendriers nationaux tels que les calendriers grgorien, japonais, imprial et Tha bouddhique sont pris en charge. Les donnes numriques sont prsentes dans les formats nationaux appropris. Les symboles montaires correspondent aux conventions conomiques nationales et ISO. Les symboles de crdit et de dbit diffrent galement d'un pays l'autre.

Oracle9i Database Administration I 20-4

Encodages

Oracle prend en charge diffrents types d'encodage de jeux de caractres : Jeux de caractres simple octet
7 bits 8 bits

Jeux de caractres multioctets de longueur variable Jeux de caractres multioctets de longueur fixe Unicode (AL32UFT8, AL16UTF16, UTF8).

20-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Encodages Un encodage de jeux de caractres dfinit les codes numriques correspondant aux caractres qu'un ordinateur ou un terminal peut afficher et recevoir. Les encodages de jeux de caractres permettent d'interprter des donnes en symboles significatifs, d'un terminal vers une machine hte. Oracle prend en charge diffrents types d'encodage : simple octet, longueur variable, longueur fixe, Unicode. Jeux de caractres simple octet Chaque caractre d'un jeu de caractres simple octet utilise un seul octet. Les encodages simple octet de 7 bits peuvent dfinir jusqu' 128 (27) caractres tandis que ceux de 8 bits peuvent dfinir jusqu' 256 (28) caractres.

Oracle9i Database Administration I 20-5

Encodages (suite) Exemples de jeux de caractres simple octet Jeu de caractres 7 bits : ASCII amricain 7 bits (US7ASCII) Jeu de caractres 8 bits : ISO 8859-1 Europe de l'Ouest (WE8ISO8859P1) Page de code 500 8 bits EBCDIC Europe de l'Ouest (WE8EBCDIC500) DEC 8 bits Europe de l'Ouest (WE8DEC) Jeux de caractres multioctets de longueur variable Dans un jeu de caractres multioctets de longueur variable, chaque caractre est cod sur un ou plusieurs octets. Les jeux de caractres multioctets sont gnralement utiliss pour les langues asiatiques. Certains encodages multioctets utilisent la valeur du bit le plus significatif pour indiquer qu'un octet reprsente un seul octet ou fait partie d'une srie d'octets reprsentant un caractre. Toutefois, les autres encodages distinguent les caractres simple octet des caractres multioctets. Un code de contrle spcial, envoy par un priphrique, indique que les octets suivants correspondent des caractres double octet, jusqu' ce qu'un code normal soit rencontr. Exemples de jeux de caractres multioctets de longueur variable Code japonais tendu UNIX JEUC (Japanese Extended UNIX) Chinois GB2312-80 (CGB2312-80) AL32UTF8 (UTF-8) Jeux de caractres multioctets de longueur fixe Les jeux de caractres de longueur fixe fournissent une prise en charge similaire celle des jeux de caractres multioctets, mais chaque caractre correspond un nombre fixe d'octets. Cela offre l'avantage de pouvoir reprsenter de manire uniforme tous les caractres. Un seul jeu de caractres de longueur fixe est pris en charge et ce, uniquement dans le jeu de caractres nationaux AL16UTF16. Exemple de jeux de caractres multioctets de longueur fixe AL16UTF16, Unicode 16 bits (Unicode 2 octets de longueur fixe)

Oracle9i Database Administration I 20-6

Encodages (suite) Jeu de caractres Unicode Unicode est une norme internationale de codage des caractres qui reprsente tous les caractres, y compris les symboles et les caractres techniques utiliss dans l'dition, qui pourront tre utiliss sur un ordinateur. Unicode version 3.0 contient 49 149 caractres et peut en reprsenter plus d'un million. Le rpertoire de caractres Unicode peut tre reprsent dans divers formats de codage. UTF16 (Universal Character Set Transformation Format) est un format de caractre de longueur fixe de deux octets et UTF-8 est un format de caractre de longueur variable. Oracle fournit les jeux de caractres de base de donnes AL32UTF8, UTF8 et UTFE et les jeux de caractres nationaux AL16UTF16 et UTF8. Le jeu de caractres de type UTF-8 prsente l'avantage d'inclure les caractres ASCII cods galement sur un seul octet. UTF8 est un "superjeu" de caractres ASCII qui facilite la migration du jeu de caractres de la base de donnes lors de la mise niveau des jeux de caractres ASCII vers Unicode. Remarque : Pour plus d'informations sur les jeux de caractres UTF-16 et UTF-8 avec trait d'union, reportez-vous au codage Unicode. Pour plus d'informations sur les jeux UTF8, AL32UTF8 et AL16UTF16 sans trait d'union, reportez-vous aux jeux de caractres Oracle de type Unicode.

Oracle9i Database Administration I 20-7

Jeux de caractres de base de donnes et jeux de caractres nationaux


Jeux de caractres de base de donnes Dfinis au moment de la cration Ne peuvent pas tre modifis sans recration Stockent les donnes dans des colonnes de type CHAR, VARCHAR2, CLOB, LONG Peuvent stocker des jeux de caractres de longueur variable Jeux de caractres nationaux Dfinis au moment de la cration Ne peuvent pas tre modifis sans recration (peu d'exceptions) Stockent les donnes dans des colonnes de type NCHAR, NVARCHAR2, NCLOB Peuvent stocker des jeux de caractres Unicode de type AL16UTF16 ou UTF8

20-8

Copyright Oracle Corporation, 2001. Tous droits rservs.

Jeux de caractres de la base de donnes et jeux de caractres nationaux Types de jeu de caractres L'instruction CREATE DATABASE dispose de la clause CHARACTER SET et de la clause facultative supplmentaire NATIONAL CHARACTER SET qui permettent de dclarer le jeu de caractres qui servira de jeu de caractres de la base de donnes et de jeu de caractres nationaux. Si vous ne dfinissez pas la clause NATIONAL CHARACTER SET, le jeu AL16UTF16 est utilis par dfaut. Etant donn que le jeu de caractres de la base de donnes permet d'identifier et de stocker le code source SQL et PL/SQL, il doit comporter le sous-jeu de caractres EBCDIC ou ASCII 7 bits selon le jeu de caractres nationaux de la plate-forme. En consquence, vous ne pouvez pas utiliser un jeu de caractres multioctets de longueur fixe comme jeu de caractres de la base de donnes, mais vous pouvez l'utiliser comme jeu de caractres nationaux. Le jeu de caractres nationaux sert uniquement au stockage Unicode et les types de donnes SQL NCHAR (NCHAR, NVARCHAR2 et NCLOB) sont des types de donnes Unicode d'Oracle9i.

Oracle9i Database Administration I 20-8

Rgles de slection d'un jeu de caractres de la base Oracle


Elments prendre en considration : Quelle langue la base de donnes doit-elle prendre en charge ? Quels sont les problmes d'interaction rencontrs avec les ressources systme et les applications ? Quelles sont les consquences sur les performances ? Quelles sont les restrictions ?

20-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rgles de slection d'un jeu de caractres de la base Oracle Quelle langue la base de donnes doit-elle prendre en charge ? Plusieurs jeux de caractres peuvent rpondre vos besoins en termes de langue. Mais il convient de prendre galement en compte vos besoins ultrieurs. Ainsi, si vous savez que vous aurez besoin de dvelopper ultrieurement le support de diffrentes langues, il est plus judicieux de slectionner immdiatement un jeu de caractres avec une plage plus large, afin d'viter toute opration de migration ultrieure. Quels sont les problmes d'interaction rencontrs avec les ressources systme et les applications ? Tandis que la base de donnes gre et traite les donnes relles de type alphanumrique, d'autres ressources du systme d'exploitation doivent tre prises en compte. Le systme d'exploitation fournit, par exemple, les polices correspondant au jeu de caractres choisi. Les mthodes d'entre qui prennent en charge les langues souhaites et l'application doivent galement tre compatibles avec un jeu de caractres particulier. Si vous slectionnez un jeu de caractres diffrent de celui disponible sur le systme d'exploitation, Oracle peut convertir le jeu du systme d'exploitation en jeu de caractres de la base de donnes. On observe cependant une certaine surcharge de conversion du jeu de caractres, ce qui vous oblige vrifier que le jeu du systme d'exploitation possde un rpertoire de caractres quivalent, afin d'viter une possible perte de donnes.

Oracle9i Database Administration I 20-9

Rgles de slection d'un jeu de caractres de la base Oracle (suite) Quelles sont les consquences sur les performances ? Le choix du jeu de caractres influe sur les performances en cas de gestion d'encodages diffrents. Pour obtenir les meilleures performances, vous devez slectionner un jeu de caractres qui ne ncessitera pas de conversion de jeu et utilisera l'encodage le plus efficace pour les langues souhaites. Les jeux de caractres simple octet prsentent des performances suprieures celles des jeux multioctets. Ils sont en outre les moins exigeants en espace. Mais ce type de jeu limite le nombre de langues utilisables. Quelles sont les restrictions ? Vous ne pouvez pas slectionner de jeu de caractres de la base de donnes du type multioctet de longueur fixe. Vous ne pouvez pas dfinir un jeu de caractres ASCII comme jeu de caractres de la base de donnes sur les plates-formes EBCDID, tout comme vous ne pouvez pas dfinir un jeu de caractres EBCDID sur les plates-formes ASCII.

Oracle9i Database Administration I 20-10

Rgles de slection d'un jeu de caractres nationaux Oracle


Deux possibilits :
AL16UTF16 UTF8

Le facteur espace est-il prendre en compte ? Le facteur performances est-il prendre en compte ?

20-11

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rgles de slection d'un jeu de caractres nationaux Oracle Deux types de jeu sont disponibles : AL16UTF16 et UTF8. Le jeu AL16UFT16 correspond un jeu de caractres Unicode de longueur fixe de deux octets. Le jeu UTF8 correspond quant lui un jeu de caractres Unicode de longueur variable de un trois octets. Les caractres europens en UTF8 sont cods sur un deux octets et occupent ainsi moins d'espace que le jeu AL16UTF16 qui code les caractres sur deux octets. Les caractres asiatiques en UTF8 sont cods sur trois octets et ncessitent donc davantage d'espace que le jeu AL16UTF16. Le jeu AL16UTF16 est un codage de longueur fixe plus rapide que le jeu UTF8 de longueur variable. Il prend en charge la dernire version de la norme Unicode, qui correspond la version 3.0 dans Oracle9i. UTF8 prend en charge la version 3.0 d'Unicode dans Oracle9i (qui sera conserve dans les prochaines versions).

Oracle9i Database Administration I 20-11

Choisir une solution Unicode : base de donnes Unicode


Quand devez-vous utiliser une base de donnes Unicode ? Migration du code facilite pour Java ou PL/SQL Migration des donnes facilite partir des donnes ASCII Distribution quitable des donnes multilingues Recherche InterMedia Text

20-12

Copyright Oracle Corporation, 2001. Tous droits rservs.

Choisir une solution Unicode : base de donnes Unicode Migration du code facilite pour Java ou PL/SQL Une base de donnes Unicode limite les modifications de code effectues lors de la mise en oeuvre de plusieurs langues en stockant des donnes multilingues dans des types de donnes SQL CHAR (CHAR, VARCHAR2, CLOB et LONG) existants. Il n'est pas ncessaire de rcrire le code pour les types SQL NCHAR. Migration des donnes facilite partir des donnes ASCII Si le jeu de caractres et les donnes en cours de la base sont purement de type US7ASCII, il est possible de migrer la base grce une simple instruction ALTER DATABASE. Distribution quitable des donnes multilingues Si des donnes multilingues sont distribues dans l'ensemble de la base, choisissez une base de donnes Unicode qui ne vous demande pas d'identifier les colonnes qui stockent ce type de donnes. Oracle Text Une base de donnes Unicode est ncessaire si vous souhaitez utiliser des BLOB multilingues avec Oracle Text.

Oracle9i Database Administration I 20-12

Choisir une solution Unicode : type de donnes Unicode


Quand devez-vous utiliser un type de donnes Unicode ? Ajout incrmentiel de support multilingue Applications prtes l'emploi Performances
Un jeu de caractres de base de donnes simple octet avec un jeu de caractres nationaux de longueur fixe

Meilleur support du jeu UTF-16 avec des clients Windows

20-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Choisir une solution Unicode : type de donnes Unicode Ajout incrmentiel de support multilingue Si vous souhaitez ajouter un support Unicode sans migrer la base de donnes, vous pouvez ajouter des types SQL NCHAR aux nouvelles tables et aux tables existantes. Application prte l'emploi Vous pouvez utiliser le type de donnes SQL NCHAR pour les applications prtes l'emploi en raison de sa fiabilit (type Unicode). Les donnes de ce type sont toujours stockes en Unicode et leur longueur est toujours indique en units de code UTF-16. Il vous suffit donc de tester l'application une fois pour qu'elle s'excute sur les bases client de n'importe quel jeu de caractres de base de donnes. Performances En matire de performances, utilisez un jeu de base de donnes simple octet et des types de donnes SQL NCHAR utilisant le jeu AL16UTF16 pour les donnes multilingues. L'encodage UTF-8, qui est de longueur variable, rduit les performances. L'utilisation des jeux de caractres simple octet de longueur fixe et multioctets donne de meilleurs rsultats. Meilleur support du jeu UTF-16 avec des clients Windows Si vos applications sont crites en langage Visual C/C++ ou Visual Basic pour Windows, vous souhaiterez peut-tre utiliser les types de donnes SQL NCHAR, car le mode de stockage des donnes UTF-16 est identique celui de la mmoire tampon (buffer) wchar_t en Visual C/C++ et du tampon de chane en Visual Basic. Vous pouvez viter le dbordement du tampon dans vos applications client, car la longueur des types wchar_t et chane correspond celle des types SQL NCHAR de la base de donnes.

Oracle9i Database Administration I 20-13

Dfinir le comportement dpendant de la langue

Paramtre d'initialisation Variable d'environnement Commande ALTER SESSION

20-14

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dfinir l'environnement dpendant de la langue Vous pouvez dfinir les paramtres NLS de trois manires : sous forme de paramtres d'initialisation sur le serveur pour dfinir l'environnement par dfaut du serveur (ces paramtres par dfaut n'ont aucun effet sur le client). sous forme de variables d'environnement pour permettre au client de remplacer les paramtres par dfaut du serveur par des conventions locales. l'aide du paramtre ALTER SESSION pour remplacer la valeur par dfaut dfinie pour la session ou le serveur.

Oracle9i Database Administration I 20-14

Dfinir le comportement dpendant de la langue pour le serveur


NLS_LANGUAGE indique :
la langue des messages le jour et le mois les symboles utiliss pour A.D, B.C, A.M, P.M le mcanisme de tri par dfaut

NLS_TERRITORY indique :
le numro du jour et de la semaine le format de date par dfaut, le caractre dcimal, le sparateur de groupe et les symboles montaires ISO et nationaux par dfaut

20-15

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dfinir le comportement dpendant de la langue pour le serveur Paramtres d'initialisation NLS Le paramtre d'initialisation NLS_LANGUAGE dfinit les valeurs des conventions dpendantes de la langue, telles que : la langue utilise pour les messages Oracle, la langue utilise pour les jours et les mois et leur abrviation, les symboles utiliss pour a.m., p.m., A.D. et B.C., la squence de tri par dfaut des caractres. Le paramtre d'initialisation NLS_TERRITORY dfinit les valeurs des conventions dpendantes du territoire, notamment : le format de date par dfaut, le caractre dcimal et le sparateur de groupes de donnes, le symbole montaire national, le symbole montaire ISO, le calcul du numro de semaine ISO, le premier jour de la semaine. Remarque : Lorsque le nom du territoire contient un espace, comme dans The Netherlands, le nom doit tre plac entre guillemets ("The Netherlands").

Oracle9i Database Administration I 20-15

Valeurs par dfaut dpendantes de la langue et du territoire


Paramtre NLS_LANGUAGE NLS_DATE_LANGUAGE NLS_SORT NLS_TERRITORY NLS_CURRENCY NLS_ISO_CURRENCY NLS_DATE_FORMAT NLS_NUMERIC_CHARACTERS Valeurs AMERICAN AMERICAN BINARY AMERICA $ AMERICA DD-MON-RR ,.

20-16

Copyright Oracle Corporation, 2001. Tous droits rservs.

Valeurs par dfaut dpendantes de la langue et du territoire Paramtres d'initialisation NLS Le paramtre d'initialisation NLS_LANGUAGE dtermine les valeurs par dfaut des paramtres suivants :

Colonne NLS_DATE_LANGUAGE

Description Modifie explicitement la langue des noms de jour et de mois et de leur abrviation ainsi que celle des autres lments de format de date. Modifie la squence de tri linguistique qu'utilise le serveur Oracle pour trier les caractres (la valeur de tri doit correspondre au nom d'une squence de tri linguistique).

NLS_SORT

Oracle9i Database Administration I 20-16

Valeurs par dfaut dpendantes de la langue et du territoire (suite) Paramtres d'initialisation NLS (suite) Le paramtre NLS_TERRITORY dfinit les valeurs par dfaut des paramtres suivants :

Colonne NLS_CURRENCY NLS_ISO_CURRENCY NLS_DATE_FORMAT

Description Dfinit explicitement un nouveau symbole montaire national. Dfinit explicitement le territoire dont le symbole montaire ISO doit tre utilis. Dfinit explicitement un nouveau format de date par dfaut (la valeur doit correspondre un modle de format de date). Dfinit explicitement un nouveau caractre dcimal et un nouveau sparateur de groupes de donnes.

NLS_NUMERIC_CHARACTERS

Prise en charge de la double devise pour l'euro L'euro, la nouvelle devise de l'Union Europenne, a t introduit le 1er janvier 1999. Pour permettre sa prise en charge, le support double devise a t ajout pour les territoires concerns. Le paramtre d'initialisation NLS_DUAL_CURRENCY permet de dfinir un second symbole montaire pour la session utilisateur. Dans le cadre de la prise en charge de la double devise, le symbole de l'euro a t ajout pour les territoires suivants : Autriche Belgique Danemark Finlande France Allemagne Grce Irlande Les jeux de caractres ISO, tels que WE8ISO8859P15 et la page de codes Microsoft WE8MSWIN1252 contiennent le code du symbole de l'euro. Italie Luxembourg Pays-Bas Portugal Espagne Sude Royaume-Uni

Oracle9i Database Administration I 20-17

Dfinir le comportement dpendant de la langue pour la session


Variable d'environnement : NLS_LANG=French_France.UTF8 Autres variables d'environnement :
NLS_DATE_FORMAT NLS_DATE_LANGUAGE NLS_SORT NLS_NUMERIC_CHARACTERS NLS_CURRENCY NLS_ISO_CURRENCY NLS_CALENDAR

20-18

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dfinir le comportement dpendant de la langue pour la session Variable d'environnement NLS_LANG Cette variable d'environnement permet de dfinir la convention culturelle souhaite pour un utilisateur. La valeur NLS_LANG remplace n'importe quelle valeur des paramtres d'initialisation NLS. Chaque composant gre un sous-groupe de fonctions NLS : NLS_LANG=<language>_<territory>.<charset> O : Language : remplace la valeur de NLS_LANGUAGE et gre les mmes fonctions que NLS_LANGUAGE. Territory : remplace la valeur de NLS_TERRITORY et gre les mmes fonctions que NLS_TERRITORY. characterset : dfinit l'encodage de jeu de caractres de l'application client (normalement celui du terminal de l'utilisateur).

Oracle9i Database Administration I 20-18

Jeux de caractres dans l'architecture client-serveur

NLS_LANG= <language>_<territory>.<charset> NLS_NCHAR=<ncharset>

CREATE DATABASE ... CHARACTER SET <charset> NATIONAL CHARACTER SET <ncharset> ...

20-19

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dfinir le comportement dpendant de la langue pour la session (suite) Variable d'environnement NLS_LANG (suite) NLS_LANG dfinit l'encodage de jeu de caractres d'un terminal client. Les clients peuvent utiliser des encodages diffrents. Les donnes transmises entre le client et le serveur sont converties automatiquement entre les deux encodages. L'encodage de la base de donnes doit correspondre ou tre quivalent un "superjeu" de tous les encodages client. La conversion est transparente pour l'application client. Lorsque les jeux de caractres de la base de donnes et du client sont identiques, Oracle suppose que les donnes envoyes ou reues appartiennent au mme jeu et aucune validation ou conversion n'est effectue. Ce scnario offre de meilleures performances, mais une mauvaise utilisation peut gnrer des problmes d'incohrence des donnes, tels que le stockage partir d'un jeu de caractres autre que le jeu de la base de donnes. Considrons que le jeu de caractres de votre base de donnes est US7ASCII et que vous utilisez Simplified Chinese Windows comme terminal client. En affectant le jeu de caractres client SIMPLIFIED CHINESE_HONGKONG.US7ASCII NLS_LANG, vous pouvez stocker des caractres Simplified Chinese multioctets dans une base de donnes simple octet. Oracle traitera alors ces caractres comme des caractres US7ASCII simple octet. Toutes les fonctions de manipulation de chane SQL telles que SUBSTR ou LENGTH seront donc dfinies sur les octets et non sur les caractres et tous les caractres non-ASCII pourront tre perdus suite un export et un import dans une autre base de donnes.

Oracle9i Database Administration I 20-19

Dfinir le comportement dpendant de la langue pour la session (suite) Autres variables d'environnement Tous les paramtres d'initialisation NLS sont disponibles sous forme de variables d'environnement, ce qui permet de dfinir les caractristiques NLS propres chaque client. La variable NLS_CALENDAR peut galement tre utilise pour dfinir le calendrier qu'utilise le serveur (grgorien, perse ou Tha bouddhique, par exemple). Les variables suivantes ne peuvent tre dfinies que dans l'environnement client : NLS_CREDIT NLS_DEBIT NLS_DISPLAY NLS_LANG NLS_LIST_SEPARATOR NLS_MONETARY Remarque : Ces paramtres sont dcrits dans le manuel Oracle9i Globalization Support Manual. Si vous affectez la variable d'environnement ORA_NLS33 un rpertoire non valide, vous ne pouvez crer la base de donnes qu'avec le jeu de caractres par dfaut US7ASCII. Sous UNIX, dfinissez la variable d'environnement ORA_NLS33 comme suit : $ORACLE_HOME/ocommon/nls/admin/data Il s'agit galement du paramtre par dfaut si vous ne dfinissez pas ORA_NLS33.

Oracle9i Database Administration I 20-20

Dfinir le comportement dpendant de la langue pour la session


ALTER SESSION SET NLS_DATE_FORMAT=DD.MM.YYYY; DBMS_SESSION.SET_NLS(NLS_DATE_FORMAT, DD.MM.YYYY) ;

20-21

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dfinir l'environnement dpendant de la langue pour la session Modifier les paramtres NLS Pour modifier les caractristiques NLS d'une session, utilisez la commande ALTER SESSION. Cette commande permet galement de modifier toutes les variables d'environnement dfinies sur le client et le serveur. Dans l'exemple ci-dessus, le format de date de la session est modifi. En outre, des outils tels que SQL*Plus lisent les variables d'environnement et excutent la commande ALTER SESSION correspondante. Outre l'excution explicite des commandes ALTER SESSION, il existe un package de base de donnes DBMS_SESSION.SET_NLS qui utilise le nom et la valeur du paramtre.

Oracle9i Database Administration I 20-21

Tri linguistique

Il existe trois types de tri : Le tri binaire, effectue en fonction des valeurs binaires des caractres cods Le tri monolingue
effectue deux passages, bas sur les valeurs primaires et secondaires affectes un caractre.

Le tri multilingue
bas sur la nouvelle norme ISO 14651 et sur Unicode 3.0 pour le classement multilingue

20-22

Copyright Oracle Corporation, 2001. Tous droits rservs.

Tri linguistique Un tri binaire est un mcanisme de tri conventionnel qui permet de trier les lettres en fonction des valeurs binaires utilises pour coder les caractres. La position alphabtique d'un caractre peut varier d'une langue l'autre. Lorsque vous souhaitez comparer des chanes, Oracle effectue un tri monolingue en deux passages. Le premier passage sert comparer la valeur principale de l'intgralit de la chane de la table principale et le second passage comparer la valeur secondaire de la table secondaire. En rgle gnrale, les lettres prsentant le mme aspect possdent la mme valeur principale. Oracle dfinit des lettres avec des diffrences diacritiques et de casse pour la mme valeur principale, mais des valeurs secondaires diffrentes. Ce tri est ainsi plus performant que le tri binaire, mais reste limit. Pour effectuer le tri multilingue, Oracle utilise un mcanisme de tri qui repose sur une norme ISO (ISO14651) et sur Unicode 3.0. Chaque langue peut ainsi trier correctement chaque caractre cod. A ce jour, Oracle reconnat 84 tris linguistiques (68 tris monolingues et 13 tris multilingues). Pour obtenir la liste complte des tris, voir Oracle9i Globalization Support Manual.

Oracle9i Database Administration I 20-22

Tri NLS

Le paramtre NLS_SORT indique le type de tri des caractres


Il est dfini par la variable d'environnement NLS_LANG Il peut tre remplac au niveau session

Fonction NLSSORT
Indique le type de tri des caractres Permet de dfinir les tris au niveau interrogation

20-23

Copyright Oracle Corporation, 2001. Tous droits rservs.

Tri NLS Par exemple, la lettre est trie avant la lettre b en franais, mais se trouve aprs z dans le tri binaire. Pour rsoudre les problmes de tri binaire, le serveur Oracle permet d'effectuer des tris linguistiques l'aide du paramtre NLS_SORT. Impact du support NLS sur le tri L'exemple suivant prsente les trois types de tri : binaire, monolingue avec French, multilingue avec French_M. Dans l'exemple, une liste de quatre termes franais est cre dans une table. SQL> CREATE TABLE list ( num NUMBER(1), 2 3 4 word VARCHAR2(5), def VARCHAR2(7) );

Table created.

Oracle9i Database Administration I 20-23

Tri NLS (suite) Impact du support NLS sur le tri (suite) SQL> INSERT INTO list VALUES 1 row created. SQL> INSERT INTO list VALUES 1 row created. SQL> INSERT INTO list VALUES 1 row created. SQL> INSERT INTO list VALUES 1 row created. (1, 'gele', 'frost'); (2, 'gel', 'frozen'); (3, 'gle', 'freezes'); (4, 'gelez', 'freeze');

La valeur BINARY est affecte au paramtre NLS_SORT. Vous remarquerez que dans BINARY, e est plac avant . En effet, dans l'encodage de jeux de caractres, e possde une valeur binaire infrieure celle de . SQL> ALTER SESSION SET NLS_SORT = BINARY; Session altered. SQL> SELECT num, word, def 2 FROM list 3 ORDER BY word; NUM --4 2 1 3 WORD ----gelez gel gele gle DEF ------freeze frozen frost freezes

La valeur French est ensuite affecte au paramtre NLS_SORT. French est un tri monolingue qui effectue uniquement deux passages, ce qui ne permet pas de saisir toutes les nuances de la langue franaise. Par exemple, en franais, les lettres sont tries de la gauche vers la droite, et les accents, de la droite vers la gauche. Ce thme sera abord dans le tri multilingue. SQL> ALTER SESSION SET NLS_SORT = FRENCH; Session altered. SQL> SELECT num, word, def 2 FROM list 3 ORDER BY word; NUM --2 3 1 4 WORD ----gel gle gele gelez DEF ------frozen freezes frost freeze

Oracle9i Database Administration I 20-24

Tri NLS (suite) Impact du support NLS sur le tri (suite) Enfin, le tri multilingue est reprsent par French_M. Notez les diffrences par rapport au tri prcdent. SQL> ALTER SESSION SET NLS_SORT = FRENCH_M; Session altered. SQL> SELECT num, word, def 2 FROM list 3 ORDER BY word; NUM --3 2 1 4 WORD ----gle gel gele gelez DEF ------freezes frozen frost freeze

NLSSORT permet de dfinir le tri au niveau interrogation. Dans l'exemple suivant, la valeur BINARY est affecte au paramtre NLS_SORT au niveau session, mais le tri est modifi au niveau interrogation. Vous remarquerez que les rsultats sont identiques ceux de l'exemple ci-dessus. SQL> ALTER SESSION SET NLS_SORT=BINARY; Session altered. SQL> SELECT num, word, def 2 FROM list 3 ORDER BY NLSSORT(word,'NLS_SORT=FRENCH_M'); NUM --3 2 1 4 WORD ----gle gel gele gelez DEF ------freezes frozen frost freeze

Oracle9i Database Administration I 20-25

Utiliser des paramtres NLS dans des fonctions SQL


SELECT TO_CHAR(hire_date,DD.Mon.YYYY, NLS_DATE_LANGUAGE=FRENCH) FROM employees;

SELECT ename, TO_CHAR(sal,9G999D99, NLS_NUMERIC_CHARACTERS=,.) FROM emp;

20-26

Copyright Oracle Corporation, 2001. Tous droits rservs.

Utiliser des paramtres NLS dans des fonctions SQL Les fonctions SQL de type "character" supportent les caractres simple octet ou multioctets. Certaines fonctions SQL ncessitent de dfinir explicitement des paramtres NLS dans la liste des paramtres. En consquence, ces fonctions peuvent remplacer les valeurs dfinies par l'environnement.

Oracle9i Database Administration I 20-26

Exemples d'utilisation de paramtres NLS dans des fonctions SQL (suite) SQL> SELECT TO_CHAR(hire_date, 'DD.Mon.YYYY', 2 'NLS_DATE_LANGUAGE=FRENCH') AS "Hire Date" 3 FROM employees; Hire Date ----------15.Dec.1997 03.Nov.1998 11.Nov.1997 19.Mar.1999 24.Jan.2000 23.Fev.2000 24.Mar.2000 21.Avr.2000 11.Mar.1997 23.Mar.1998 24.Jan.1998 23.Fev.1999 24.Mar.1999 21.Avr.2000 11.Mai.1996 19.Mar.1997 24.Mar.1998 23.Avr.1998 24.Mai.1999 04.Jan.2000

Oracle9i Database Administration I 20-27

Exemples d'utilisation de paramtres NLS dans des fonctions SQL (suite) SQL> SELECT last_name, 2 3 TO_CHAR(salary,'99G999D99','NLS_NUMERIC_CHARACTERS='',.''') FROM employees; LAST_NAME ------------------------Doran Sewall Vishney Greene Marvins Lee Ande Banda Ozer Bloom Fox Smith Bates Kumar Abel Hutton Taylor Livingston Grant TO_CHAR(SA ---------7.500,00 7.000,00 10.500,00 9.500,00 7.200,00 6.800,00 6.400,00 6.200,00 11.500,00 10.000,00 9.600,00 7.400,00 7.300,00 6.100,00 11.000,00 8.800,00 8.600,00 8.400,00 7.000,00

Oracle9i Database Administration I 20-28

Exemples d'utilisation de paramtres NLS dans des fonctions SQL (suite) Les fonctions SQL suivantes utilisent des paramtres NLS :

Fonction TO_DATE TO_NUMBER

Paramtre NLS NLS_DATE_LANGUAGE NLS_CALENDAR NLS_NUMERIC_CHARACTER S NLS_CURRENCY NLS_ISO_CURRENCY NLS_DATE_LANGUAGE NLS_NUMERIC_CHARACTER S NLS_CURRENCY NLS_ISO_CURRENCY NLS_CALENDAR

TO_CHAR

NLS_UPPER, NLS_SORT NLS_LOWER, Des lments de masque de format ont t dfinis pour des fonctions telles que TO_CHAR, NLS_INITCAP, TO_DATE et TO_NUMBER. NLSSORT Elments de masque de format de nombre
"D" pour sparateur dcimal "G" pour sparateur de groupe (milliers) "L" pour symbole montaire national "C" pour symbole montaire national ISO "U" pour symbole de la double devise, utilis pour l'euro Elments de masque de format de date "RM, rm" pour les mois du calendrier romain "IW" pour les numros de semaine ISO "IYYY, IYY, IY" et "I" pour les annes ISO

Oracle9i Database Administration I 20-29

Support d'indexation linguistique

Indexation linguistique Niveau de performances lev avec le tri local


CREATE INDEX list_word ON list (NLSSORT(word, NLS_SORT = French_M));

Paramtre NLS_COMP de comparaison linguistique

20-30

Copyright Oracle Corporation, 2001. Tous droits rservs.

Support d'indexation linguistique Vous pouvez spcialiser les index fonctionnels pour crer des index tris selon la langue dfinie. La fonction SQL NLSSORT renvoie la chane d'octets utilise pour trier le premier paramtre dans la squence de tri linguistique. Dans cet exemple, un index cr sur WORD est tri selon l'ordre French_M, ce qui permet d'excuter des interrogations bases sur des index sur des donnes tries selon les rgles linguistiques nationales. Comportement linguistique des oprateurs de comparaison NLS_COMP est un paramtre dynamique d'initialisation qui gre la manire dont les oprateurs de comparaison, tels que <, > et = traitent le tri linguistique. Lorsque la valeur par dfaut BINARY est affecte au paramtre, la comparaison s'effectue en fonction de la valeur binaire de la chane. Lorsque la valeur ANSI est affecte au paramtre, les oprateurs de comparaison utilisent des squences de tri linguistique pour dterminer le rsultat de l'opration en fonction du paramtre NLS_SORT.

Oracle9i Database Administration I 20-30

Import et chargement de donnes avec le support NLS


Lors de l'import, les donnes sont converties du jeu de caractres du fichier d'export dans celui de la base de donnes. Utilitaire SQL*Loader :
Chemin conventionnel : Les donnes sont converties dans le jeu de caractres de la session dfini par le paramtre NLS_LANG. Chemin direct : Les donnes sont directement converties dans le jeu de caractres de la base.

20-31

Copyright Oracle Corporation, 2001. Tous droits rservs.

Import et chargement de donnes avec le support NLS Le fichier d'export est export avec le jeu de caractres de la base de donnes source. Lors de l'import, les donnes sont automatiquement converties du jeu de caractres du fichier d'export dans celui de la base de donnes cible. L'utilitaire SQL*Loader peut galement convertir le jeu de caractres des fichiers de donnes dans le jeu de caractres de la base de donnes. Lorsque vous utilisez la conversion de donnes par chemin conventionnel, les donnes sont converties dans le jeu de caractres de la session dfini par le paramtre NLS_LANG. Si vous utilisez la conversion de donnes par chemin direct, les donnes sont directement converties dans le jeu de caractres de la base. Le fichier de contrle indique l'utilitaire SQL*Loader comment interprter le fichier de donnes. Le jeu de caractres du paramtre indique le jeu de caractres utiliser dans chaque fichier de donnes. Exemple: $sqlldr control=utl1case.ctl characterset=WE8ISO9959P1

Oracle9i Database Administration I 20-31

Obtenir des informations sur les jeux de caractres


NLS_DATABASE_PARAMETERS: PARAMETER (NLS_CHARACTERSET, NLS_NCHAR_CHARACTERSET) VALUE

20-32

Copyright Oracle Corporation, 2001. Tous droits rservs.

Obtenir des informations sur les jeux de caractres Pour afficher le jeu de caractres de la base de donnes et le jeu de caractres nationaux, lancez l'interrogation suivante : SQL> SELECT parameter, value 2 FROM nls_database_parameters 3 WHERE parameter LIKE '%CHARACTERSET%'; PARAMETER ----------------------NLS_CHARACTERSET NLS_NCHAR_CHARACTERSET 2 rows selected. VALUE -----------------------------WE8ISO8859P1 AL16UTF16

Oracle9i Database Administration I 20-32

Obtenir des informations sur les paramtres NLS


NLS_INSTANCE_PARAMETERS:
PARAMETER (paramtres d'initialisation explicitement dfinis) VALUE

NLS_SESSION_PARAMETERS:
PARAMETER (paramtres de session) VALUE

20-33

Copyright Oracle Corporation, 2001. Tous droits rservs.

Obtenir des informations sur les paramtres NLS Cette vue contient uniquement les valeurs des paramtres dfinis explicitement dans le fichier init<SID>.ora. SQL> SELECT * FROM nls_instance_parameters; PARAMETER NLS_LANGUAGE NLS_TERRITORY NLS_SORT NLS_DATE_LANGUAGE NLS_DATE_FORMAT NLS_CURRENCY NLS_NUMERIC_CHARACTERS NLS_ISO_CURRENCYNLS_CALENDAR NLS_TIME_FORMAT NLS_TIMESTAMP_FORMAT VALUE AMERICAN AMERICA ------------------------------ ----------------------------

Oracle9i Database Administration I 20-33

Obtenir des informations sur les paramtres NLS (suite) NLS_TIME_TZ_FORMAT NLS_TIMESTAMP_TZ_FORMAT NLS_DUAL_CURRENCY NLS_COMP NLS_LENGTH_SEMANTICS NLS_NCHAR_CONV_EXCP 17 rows selected. La vue suivante contient les paramtres de session. SQL> SELECT * FROM nls_session_parameters; PARAMETER NLS_LANGUAGE NLS_TERRITORY NLS_CURRENCY NLS_ISO_CURRENCY NLS_NUMERIC_CHARACTERS NLS_CALENDAR NLS_DATE_FORMAT NLS_DATE_LANGUAGE NLS_SORT NLS_TIME_FORMAT NLS_TIMESTAMP_FORMAT NLS_TIME_TZ_FORMAT NLS_TIMESTAMP_TZ_FORMAT NLS_DUAL_CURRENCY NLS_COMP NLS_LENGTH_SEMANTICS NLS_NCHAR_CONV_EXCP 17 rows selected. VALUE AMERICAN AMERICA $ AMERICA ., GREGORIAN DD-MON-RR AMERICAN BINARY HH.MI.SSXFF AM DD-MON-RR HH.MI.SSXFF AM HH.MI.SSXFF AM TZR DD-MON-RR HH.MI.SSXFF AM TZR $ BINARY BYTE FALSE ------------------------------ ---------------------------BYTE FALSE

Oracle9i Database Administration I 20-34

Obtenir des informations sur les paramtres NLS


V$NLS_VALID_VALUES:
PARAMETER (LANGUAGE, SORT, TERRITORY, CHARACTERSET) VALUE

V$NLS_PARAMETERS:
PARAMETER (paramtres de session NLS, NLS_CHARACTERSET) VALUE

20-35

Copyright Oracle Corporation, 2001. Tous droits rservs.

Obtenir des informations sur les paramtres NLS Affichez la liste de toutes les valeurs valides des paramtres NLS : SQL> SELECT * FROM v$nls_valid_values 2 WHERE parameter='LANGUAGE'; VALUE -------------AMERICAN GERMAN FRENCH CANADIAN FRENCH SPANISH ITALIAN DUTCH SWEDISH NORWEGIAN PARAMETER --------LANGUAGE LANGUAGE LANGUAGE LANGUAGE LANGUAGE LANGUAGE LANGUAGE LANGUAGE LANGUAGE ...

Oracle9i Database Administration I 20-35

Obtenir des informations sur les paramtres NLS (suite) Remarque : La vue V$NLS_VALID_VALUES affiche le contenu du fichier d'initialisation des donnes NLS. Elle renvoie la liste des jeux de caractres, langues, tris linguistiques et dfinitions de territoire fournis avec une version donne de la base. Cette liste peut contenir des dfinitions qui ne sont plus supportes ou qui sont utilises en interne. Pour afficher les valeurs en cours des paramtres NLS, utilisez la syntaxe suivante : SQL> SELECT * FROM v$nls_parameters; PARAMETER NLS_LANGUAGE NLS_TERRITORY NLS_CURRENCY NLS_ISO_CURRENCY NLS_NUMERIC_CHARACTERS NLS_CALENDAR NLS_DATE_FORMAT NLS_DATE_LANGUAGE NLS_CHARACTERSET NLS_SORT NLS_TIME_FORMAT NLS_TIMESTAMP_FORMAT NLS_TIME_TZ_FORMAT NLS_TIMESTAMP_TZ_FORMAT NLS_DUAL_CURRENCY NLS_NCHAR_CHARACTERSET NLS_COMP NLS_LENGTH_SEMANTICS NLS_NCHAR_CONV_EXCP 19 rows selected. Remarque : Diffrentes vues contiendront une nouvelle colonne CHARACTER_SET_NAME qui indique le nom du jeu de caractres : CHAR_CS pour le jeu de caractres de la base de donnes et NCHAR_CS pour le jeu de caractres nationaux. Par exemple, DBA_TAB_COLUMNS cre cette colonne partir de la vue COL$. VALUE AMERICAN AMERICA $ AMERICA ., GREGORIAN DD-MON-RR AMERICAN WE8ISO8859P1 BINARY HH.MI.SSXFF AM DD-MON-RR HH.MI.SSXFF AM HH.MI.SSXFF AM TZR DD-MON-RR HH.MI.SSXFF AM TZR $ AL16UTF16 BINARY BYTE FALSE ------------------------------ ----------------------------

Oracle9i Database Administration I 20-36

Utiliser des paramtres NLS dans des fonctions SQL


L'outil d'analyse de jeu de caractres :
dtermine, par balayage de la base de donnes, si le jeu de caractres peut tre modifi, fournit des tats sur les problmes possibles et les solutions.

Oracle Locale Builder :


offre une interface graphique simple d'utilisation, permet de visualiser, modifier et crer des dfinitions "Locale".

20-37

Copyright Oracle Corporation, 2001. Tous droits rservs.

Utiliser des paramtres NLS dans des fonctions SQL Outil d'analyse de jeu de caractres (Character Set Scanner) Cet outil est un utilitaire en mode ligne de commande qui facilite la conversion des jeux de caractres. Il identifie la zone de conversion possible des caractres et de troncature des donnes, l'effort requis et les largeurs de colonne qui pourraient tre augmentes. Il value en outre la faisabilit, signale les ventuels problmes de migration, contrle toutes les donnes alphanumriques et gnre une synthse de l'analyse de la base. Il convient d'utiliser cet outil d'analyse avant de procder la conversion d'un jeu de caractres. Oracle Locale Builder Le serveur Oracle9i offre un vaste jeu de dfinitions "Locale" incluant des langues, des territoires, des jeux de caractres et des tris linguistiques. Si vous devez personnaliser l'une des dfinitions existantes ou en crer une nouvelle, vous pouvez utiliser le nouvel Oracle Locale Builder, qui propose une interface graphique conviviale permettant de visualiser, de personnaliser et de dfinir diffrentes classes Locale.

Oracle9i Database Administration I 20-37

Synthse

Ce chapitre vous a permis d'apprendre : choisir un jeu de caractres de base de donnes et un jeu de caractres nationaux pour la base de donnes utiliser les diffrents types de paramtre de support NLS pour le serveur ou la session

20-38

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I 20-38

Prsentation de l'exercice 20

Dans cet exercice, vous allez : vrifier le jeu de caractres de la base de donnes et le jeu de caractres nationaux identifier les valeurs NLS valides dfinir des paramtres NLS

20-39

Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 20 Remarque : Vous pouvez raliser cet exercice avec SQL*Plus ou avec Oracle Enterprise Manager et SQL*Plus Worksheet.

Oracle9i Database Administration I 20-39

Exercice 20 : utiliser la prise en charge de la globalisation 1 Vrifiez le jeu de caractres de la base de donnes et le jeu de caractres nationaux 2 Quelles sont les valeurs valides pour le jeu de caractres de la base de donnes ? 3 Dans cette session, assurez-vous que toutes les annes s'affichent selon un format quatre chiffres. Remplacez la valeur de NLS_LANGUAGE par FRENCH. Dans DUAL, slectionnez sysdate.

Oracle9i Database Administration I 20-40

Crer une base de donnes Oracle9i dans un environnement UNIX

Copyright Oracle Corporation, 2001. Tous droits rservs.

Introduction Procdure de cration d'une base de donnes La cration d'une base de donnes utilisable s'effectue en six tapes : trois tapes de cration et trois autres tapes facultatives visant rendre la base utilisable.
Dfinissez les variables d'environnement du systme d'exploitation ORACLE_HOME, ORACLE_SID, PATH et LD_LIBRARY_PATH. Modifiez/crez le fichier de paramtres initsid.ora. Excutez la commande CREATE DATABASE dans SQL*Plus. Excutez les scripts catalog.sql et catproc.sql. Excutez le script pupbld.sql. Crez un tablespace pour les donnes utilisateur et tout autre tablespace qui pourrait s'avrer ncessaire pour rpondre aux besoins de la base de donnes.

Remarque : Le prsent document part du principe que le serveur Oracle9i a t install dans un rpertoire nomm ORACLE_HOME. Par ailleurs, il n'aborde pas l'installation du serveur.

Oracle9i Database Administration I A-2

Configurer l'environnement Vous devez configurer l'environnement UNIX et installer le serveur Oracle9i avant de crer la base de donnes. Vous devez galement dfinir quatre variables d'environnement : ORACLE_HOME, ORACLE_SID, PATH, LD_LIBRARY_PATH. ORACLE_HOME reprsente le chemin d'accs au rpertoire principal d'installation du serveur Oracle9i. Le rpertoire doit tre fourni par la personne qui a procd l'installation du serveur, gnralement l'administrateur UNIX ou le DBA. ORACLE_SID reprsente un nom dfini par l'utilisateur affect une instance d'une base de donnes. Le systme d'exploitation utilise cette variable (identificateur du systme) pour distinguer les diffrentes instances de base de donnes qui s'excutent sur la machine. PATH dfinit les rpertoires dans lesquels le systme d'exploitation recherche les excutables, tels que SQL*Plus. Les excutables Oracle9i se trouvent dans le rpertoire $ORACLE_HOME/bin et doivent tre ajouts la variable PATH. LD_LIBRARY_PATH dfinit les rpertoires de stockage des fichiers bibliothque requis. Exemple Shell Bourne ou Korn :
$ ORACLE_HOME=/u01/oracle9i/product/9.0.1; export ORACLE_HOME $ ORACLE_SID=db01; export ORACLE_SID $ PATH=/usr/bin:/usr/ccs/bin:$ORACLE_HOME/bin; export PATH $ LD_LIBRARY_PATH=/usr/lib:$ORACLE_HOME/lib; export LD_LIBRARY_PATH

Shell C :
% setenv ORACLE_HOME /u01/oracle9i/product/9.0.1 % setenv ORACLE_SID db01 % setenv PATH $PATH:$ORACLE_HOME/bin % setenv LD_LIBRARY_PATH /usr/lib:$ORACLE_HOME/lib

Oracle9i Database Administration I A-3

Modifier initsid.ora Modifier/crer le fichier initsid.ora Le fichier texte initsid.ora configur par l'utilisateur est lu chaque dmarrage de la base de donnes. Les paramtres de ce fichier permettent d'initialiser les paramtres de la base. La configuration des paramtres du fichier initsid.ora affecte la base de donnes au dmarrage, mais galement son mode de cration. Assurez-vous de configurer ce fichier avant de crer la base de donnes. Un fichier init.ora type est plac dans le rpertoire $ORACLE_HOME/dbs l'installation du serveur Oracle9i. Conservez-le en tant que sauvegarde et ne le modifiez pas. Crez une copie du fichier contenant le nom de la variable ORACLE_SID. Exemple
$ cd $ORACLE_HOME/dbs $ cp init.ora initdb01.ora

Le fichier init.ora type contient de nombreux commentaires prsentant des propositions de configuration des paramtres. Les paramtres de ce fichier ne doivent pas figurer dans un ordre prcis. En revanche, si un paramtre est mentionn plusieurs fois, le dernier sera utilis. Oracle9i Reference propose de placer les paramtres dans l'ordre alphabtique afin d'viter les doublons. Quelques paramtres doivent tre configurs, par exemple : db_name, control_files, background_dump_dest, user_dump_dest, core_dump_dest et undo_management. Les valeurs des paramtres background_dump_dest, user_dump_dest et core_dump_dest indiquent le chemin d'accs complet de l'emplacement de stockage des fichiers trace : core_dump_dest contient les dumps noyau (core dumps) gnrs par la base de donnes. user_dump_dest contient les fichiers trace utilisateur. contient les fichiers trace pour les processus d'arrire-plan et le fichier alert.log. db_name indique le nom de la base de donnes. Son utilisation est diffrente de celle du paramtre ORACLE_SID, qui indique le nom utilis pour dsigner une instance de la base. Les valeurs de db_name et d'ORACLE_SID sont souvent identiques, mais ce n'est pas une obligation. Dans le fichier initsid.ora, db_name doit correspondre (au niveau de la casse galement) au nom de base de donnes utilis dans la commande CREATE DATABASE la cration de la base. Le paramtre d'initialisation control_files dsigne le nom et le chemin d'accs complet des fichiers de contrle de la base de donnes. Lors de la cration de la base, il identifie les fichiers de contrle crer. Le paramtre d'initialisation undo_management dtermine si les donnes d'annulation sont traites automatiquement par le serveur Oracle ou manuellement par le DBA. Affectez-lui la valeur AUTO dans le fichier d'initialisation. background_dump_dest Un exemple de fichier initdb01.ora est prsent la fin de cette annexe.

Oracle9i Database Administration I A-4

Crer la base de donnes Aprs avoir configur l'environnement et le fichier initsid.ora, vous pouvez crer la base de donnes. La commande CREATE DATABASE permet de crer une base de donnes Oracle. Elle indique le nombre de fichiers journaux ainsi que leur emplacement, la taille et l'emplacement du tablespace SYSTEM et des tablespaces TEMPORARY et d'annulation (UNDO) et le jeu de caractres de la base de donnes (cette liste n'est pas exhaustive). L'utilitaire SQL*Plus d'Oracle intervient dans la cration de la base de donnes. L'excutable UNIX de SQL*Plus est sqlplus. Lorsque vous crez une base de donnes, le serveur Oracle9i ne connat que l'utilisateur SYS et le rle SYSDBA. Connectez-vous SQL*Plus sous cet ID utilisateur et ce rle selon l'une des mthodes suivantes : 1. Si l'utilisateur UNIX utilis pour la connexion SQL*Plus fait partie du groupe de l'administrateur dfini l'installation du serveur Oracle9i, vous pouvez appliquer la syntaxe suivante :
$ sqlplus '/ as sysdba '

ou
$ sqlplus /nolog SQL> connect / as sysdba

2. S'il ne fait pas partie de ce groupe, un administrateur doit crer un fichier de mots de passe pour la base de donnes et le mot de passe affect SYS dans le fichier de mots de passe ne sera pas utilis. La syntaxe ci-dessous considre que le mot de passe affect SYS est oracle.
$ sqlplus 'sys/oracle as sysdba'

ou
$ sqlplus /nolog SQL> connect sys/oracle as sysbda

Procdure de cration et d'excution de l'instruction SQL : 1. Crez un script SQL contenant la commande CREATE DATABASE (un exemple de script de cration de base de donnes est prsent la fin de cette annexe). 2. Connectez-vous SQL*Plus sous l'ID utilisateur SYS AS SYSDBA selon l'une des mthodes ci-dessus. 3. Dmarrez la base de donnes en mode NOMOUNT. 4. Excutez le script SQL.

Oracle9i Database Administration I A-5

Crer la base de donnes (suite) Exemple


% sqlplus 'sys/oracle as sysdba' SQL> startup nomount ORACLE instance started. Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers SQL> @crdbdb01.sql SQL> CREATE DATABASE db01 2 3 4 5 6 7 8 9 10 11 12 ; LOGFILE GROUP 1 ('$HOME/ORADATA/u03/log_01_01_db01.rdo') SIZE 10M, GROUP 2 ('$HOME/ORADATA/u03/log_02_01_db01.rdo') SIZE 10M DATAFILE '$HOME/ORADATA/u01/system_01_db01.dbf' SIZE 100M AUTOEXTEND ON NEXT 5M MAXSIZE 150M DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '$HOME/ORADATA/u02/temp_01_db01.dbf' SIZE 15M AUTOEXTEND ON NEXT 5M MAXSIZE 30M CHARACTER SET WE8ISO8859P1 NATIONAL CHARACTER SET AL16UTF16 21790532 bytes 278340 bytes 16777216 bytes 4194304 bytes 540672 bytes

Statement processed.

Oracle9i Database Administration I A-6

Excuter des scripts Les scripts catalog.sql et catproc.sql, situs dans le rpertoire $ORACLE_HOME/rdbms/admin, doivent tre excuts une fois la base de donnes cre. catalog.sql cre les vues du dictionnaire de donnes tandis que catproc.sql cre les packages et procdures ncessaires l'utilisation de PL/SQL. Ces deux scripts doivent tre excuts sous l'ID utilisateur SYS une fois que la base de donnes est ouverte. Exemple
% sqlplus /nolog SQL> CONNECT / AS SYSDBA SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql

Lorsque le systme n'est pas occup, la dure totale d'excution des deux scripts se situe entre 35 et 65 minutes. Une fois les scripts excuts, vrifiez que les objets sont valides. L'interrogation suivante renvoie les objets non valides.
SQL> SELECT 2 3 4 FROM WHERE owner,object_name,object_type dba_objects status = 'INVALID'

ORDER BY owner,object_type,object_name;

Excuter pupbld.sql Le script pupbld.sql, situ dans le rpertoire $ORACLE_HOME/sqlplus/admin, cre la table Product User Profile et les procdures associes. Ce script doit tre excut sous l'ID utilisateur SYS. Son excution permet, entre autres, d'viter l'affichage d'un message d'avertissement chaque connexion d'un utilisateur SQL*Plus.
$ sqlplus system/manager SQL> @$ORACLE_HOME/sqlplus/admin/pupbld.sql

Oracle9i Database Administration I A-7

Crer des tablespaces Crez d'autres tablespaces ncessaires l'installation. En principe, les tablespaces suivants sont crs l'installation d'une base de donnes. users donnes utilisateur

tools

objets crs par l'utilisateur SYSTEM (facultatif)

Ces tablespaces doivent tre crs. Exemple


SQL> create tablespace USERS 2 3 4 5 datafile '$HOME/ORADATA/u03/users_01_db01.dbf' SIZE 25M PERMANENT EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K SEGMENT SPACE MANAGEMENT auto;

Synthse Dfinissez les variables ORACLE_HOME, ORACLE_SID, PATH et LD_LIBRARY_PATH. Modifiez le fichier initsid.ora. Excutez la commande CREATE DATABASE. Excutez les scripts catalog.sql et catproc.sql. Excutez le script pupbld.sql. Crez les tablespaces ncessaires la base de donnes.

Oracle9i Database Administration I A-8

Exemple de fichier initdb01.ora


background_dump_dest=$HOME/ADMIN/BDUMP compatible=9.0.0 control_files=$HOME/ORADATA/u01/ctrl_01_sid.ctl core_dump_dest=$HOME/ADMIN/CDUMP db_block_size=4096 db_cache_size=4M db_domain=world db_name=db01 global_names=TRUE instance_name=db01 max_dump_file_size=10240 remote_login_passwordfile=exclusive service_names=db01 shared_pool_size=8M undo_management=AUTO user_dump_dest=$HOME/ADMIN/UDUMP

Exemple de script de cration d'une base de donnes


CREATE DATABASE db01 LOGFILE GROUP 1 ('$HOME/ORADATA/u03/log_01_01_db01.rdo') SIZE 10M, GROUP 2 ('$HOME/ORADATA/u03/log_02_01_db01.rdo') SIZE 10M DATAFILE '$HOME/ORADATA/u01/system_01_db01.dbf' SIZE 100M AUTOEXTEND ON NEXT 5M MAXSIZE 150M DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '$HOME/ORADATA/u02/temp_01_db01.dbf' SIZE 15M AUTOEXTEND ON NEXT 5M MAXSIZE 30M CHARACTER SET WE8ISO8859P1 NATIONAL CHARACTER SET AL16UTF16 ;

Oracle9i Database Administration I A-9

Oracle9i Database Administration I A-10

Grer manuellement les donnes d'annulation (segments d'annulation)

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez : crer des segments d'annulation l'aide des paramtres de stockage appropris grer des segments d'annulation prvoir le nombre de segments d'annulation et leur taille rsoudre les problmes courants lis aux segments d'annulation

B-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I B-2

Crer des segments d'annulation

CREATE ROLLBACK SEGMENT rbs01 TABLESPACE rbs STORAGE ( INITIAL 100K NEXT 100K MINEXTENTS 20 MAXEXTENTS 100 OPTIMAL 2000K );

B-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Crer des segments d'annulation Utilisez la commande suivante pour crer un segment d'annulation (rollback segment) :
CREATE [PUBLIC] ROLLBACK SEGMENT rollback_segment [TABLESPACE tablespace] [STORAGE ( [INITIAL integer[K|M]] [NEXT [MINEXTENTS [OPTIMAL ) ] integer[K|M]] integer] {integer[K|M]|NULL}]

[MAXEXTENTS {integer|UNLIMITED}]

Oracle9i Database Administration I B-3

Crer des segments d'annulation (suite) Restrictions Un segment d'annulation peut tre dfini comme tant public ou priv (attribut par dfaut) lors de sa cration et ne peut pas tre modifi. Pour un segment d'annulation, le paramtre MINEXENTS doit possder au moins la valeur 2. Le paramtre PCTINCREASE d'un segment d'annulation ne peut pas tre dfini. Il possde toujours la valeur 0. La valeur du paramtre OPTIMAL, si vous la dfinissez, doit tre au moins gale la taille initiale du segment d'annulation, qui correspond l'espace utilis par les extents (ensembles de blocs contigus) dont le nombre est dfini par le paramtre MINEXTENTS. Instructions Utilisez toujours INITIAL = NEXT pour les segments d'annulation pour vous assurer que tous les extents sont de mme taille. Affectez au paramtre OPTIMAL une valeur permettant de rduire l'allocation et la libration d'extents de segment d'annulation. N'affectez pas la valeur UNLIMITED au paramtre MAXEXTENTS afin d'viter toute extension inutile d'un segment d'annulation, et ventuellement des fichiers de donnes, en raison d'une erreur de programme. Placez toujours les segments d'annulation dans un tablespace distinct exclusif pour limiter la contention et la fragmentation.

Oracle9i Database Administration I B-4

Transactions et segments d'annulation

Transaction 1 Transaction 2

Extent actif

Extent inactif

B-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Allouer un segment d'annulation Lorsqu'une transaction commence, un segment d'annulation doit lui tre affect. Excutez la commande suivante pour affecter un segment d'annulation spcifique une transaction : SET TRANSACTION USE ROLLBACK SEGMENT rollback_segment Si vous n'excutez pas cette commande, le serveur Oracle affecte la transaction le segment d'annulation qui contient le moins grand nombre de transactions. Utiliser les extents Les transactions utilisent des extents d'un segment d'annulation dans une procdure squentielle circulaire dans laquelle elles passent d'un extent l'autre lorsque l'extent en cours est plein. Une transaction crit une entre son emplacement en cours dans le segment d'annulation et avance le pointeur en cours d'une distance quivalente la taille de l'entre. Plusieurs transactions peuvent crire dans le mme extent d'un segment d'annulation, mais un bloc de segment d'annulation ne contient les donnes que d'une seule et unique transaction.

Oracle9i Database Administration I B-5

Allouer un segment d'annulation (suite) Exemple Dans l'exemple de la diapositive, deux transactions sont associes un segment d'annulation contenant quatre extents. 1. Lorsque les transactions commencent, elles se mettent crire les donnes dans l'extent 3 du segment d'annulation. 2. A mesure que les deux transactions gnrent d'autres informations d'annulation, elles continuent crire dans l'extent 3. 3. Lorsque l'extent 3 est plein, les transactions crivent les donnes dans l'extent suivant de l'anneau, savoir l'extent 4. Cette opration est appele "wrap". 4. Lorsque le dernier extent (4) du segment d'annulation est plein, les transactions peuvent utiliser le premier extent (1) de l'anneau s'il est libre ou inactif. Un extent est libre ou inactif lorsque aucune transaction en cours ne l'utilise, c'est--dire lorsque toutes les transactions qui crivent des donnes dans l'extent sont termines.

Oracle9i Database Administration I B-6

Augmentation de la taille des segments d'annulation 1 4 2 3 5 4


Extent actif Extent inactif Nouvel extent

2 3

B-7

Copyright Oracle Corporation, 2001. Tous droits rservs.

Augmentation de la taille des segments d'annulation Le pointeur, ou en-tte du segment d'annulation, passe l'extent suivant lorsque tous les blocs de l'extent en cours sont utiliss et qu'une transaction ncessite un autre bloc pour obtenir plus d'espace. Lorsque le dernier extent est plein, le pointeur revient au dbut du premier extent. Le pointeur ne peut passer l'extent suivant que si aucune transaction n'est en cours d'excution dans cet extent. Le pointeur ne peut pas ignorer un extent. Si l'extent suivant est utilis, la transaction alloue un extent supplmentaire au segment d'annulation. Cette opration est une extension. La taille d'un segment d'annulation peut ainsi augmenter jusqu' atteindre le nombre maximum d'extents dfini par le paramtre MAXEXTENTS.

Oracle9i Database Administration I B-7

Rduction de la taille des segments d'annulation

6 5 4

1 2

1 6

2 3

3
Extent actif

OPTIMAL

Extent inactif

B-8

Copyright Oracle Corporation, 2001. Tous droits rservs.

Paramtre OPTIMAL Le paramtre OPTIMAL dfinit la taille en octets laquelle un segment d'annulation doit revenir, si possible. Ce paramtre permet de rduire les pertes d'espace dans un segment d'annulation. Si vous dfinissez le paramtre OPTIMAL, un segment d'annulation peut librer de l'espace lorsque les transactions qui ont provoqu l'augmentation de la taille du segment d'annulation sont termines. La libration d'extents n'a pas lieu ds la fin des transactions. Elle n'est excute que lorsque l'en-tte passe d'un extent l'autre. Les extents sont librs lorsque les deux conditions suivantes sont vraies : la taille en cours du segment d'annulation est suprieure la valeur du paramtre OPTIMAL, il existe des extents contigus inactifs. Le serveur Oracle tente de librer des extents jusqu' ce que la taille du segment d'annulation soit gale la valeur du paramtre OPTIMAL, mais il peut interrompre l'opration si l'extent suivant librer est en cours d'utilisation. Le serveur Oracle libre toujours les extents inactifs les plus anciens, parce qu'ils sont peu susceptibles d'tre utiliss pour la cohrence en lecture.

Oracle9i Database Administration I B-8

Mettre des segments d'annulation en ligne

Utilisez la commande suivante pour rendre un segment d'annulation disponible :


ALTER ROLLBACK SEGMENT rbs01 ONLINE;

Pour vous assurer que les segments d'annulation seront mis en ligne au dmarrage, vous devez dfinir le paramtre d'initialisation suivant :
ROLLBACK_SEGMENTS=(rbs01, rbs02)

B-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Commande ALTER ROLLBACK SEGMENT Par dfaut, tout segment d'annulation cr est hors ligne (offline) et ne peut tre utilis. Pour permettre aux transactions d'accder au segment d'annulation, utilisez la commande ALTER ROLLBACK SEGMENT et mettez le segment d'annulation en ligne (online). Syntaxe Utilisez la commande suivante pour rendre un segment d'annulation disponible : ALTER ROLLBACK SEGMENT rollback_segment ONLINE; Le nombre de segments d'annulation qu'une instance peut mettre en ligne est limit par le paramtre MAX_ROLLBACK_SEGMENTS. Affectez ce paramtre une valeur suprieure d'une unit au nombre de segments d'annulation non SYSTEM ncessaires l'instance. Un segment d'annulation n'est en ligne que jusqu' ce que l'instance soit arrte. Pour garantir qu'une instance met toujours un segment d'annulation en ligne, dfinissez le nom du segment dans le fichier de paramtres, comme indiqu dans l'exemple ci-dessous : ROLLBACK_SEGMENTS=(rbs01, rbs02)

Oracle9i Database Administration I B-9

Obtention des segments d'annulation par les instances


Obtention des segments d'annulation privs nomms Calcul du nombre de segments d'annulation requis Le nombre de segments estil suffisant ? Non

Oui

Obtention des segments d'annulation publics

Mise en ligne de tous les segments d'annulation obtenus

B-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Obtention des segments d'annulation par les instances Les tapes suivantes expliquent comment une instance obtient les segments d'annulation lorsqu'elle ouvre une base de donnes : L'instance obtient tous les segments d'annulation dfinis dans le paramtre d'initialisation ROLLBACK_SEGMENTS. La valeur du paramtre TRANSACTIONS init.ora est divise par celle du paramtre TRANSACTIONS_PER_ROLLBACK_SEGMENT init.ora, et le rsultat correspond au nombre de segments d'annulation ncessaires l'instance. Si cette valeur est suprieure au nombre de segments d'annulation non SYSTEM que l'instance a dj mis en ligne, l'instance obtient des segments d'annulation publics supplmentaires pour compenser le manque. Si le nombre de segments d'annulation publics est insuffisant, la base de donnes est ouverte et les utilisateurs peuvent y accder. Aucune erreur n'est gnre.

Oracle9i Database Administration I B-10

Modifier les paramtres de stockage d'un segment d'annulation


Utilisez la commande ALTER ROLLBACK SEGMENT. Vous pouvez modifier OPTIMAL ou MAXEXTENTS.
ALTER ROLLBACK SEGMENT rbs01 STORAGE( MAXEXTENTS 200 );

B-11

Copyright Oracle Corporation, 2001. Tous droits rservs.

Modifier les paramtres de stockage d'un segment d'annulation La commande ALTER ROLLBACK SEGMENT permet de modifier les paramtres de stockage d'un segment d'annulation. ALTER ROLLBACK SEGMENT rollback_segment [STORAGE ( [NEXT integer[K|M]] [MINEXTENTS [OPTIMAL ) ] Utilisez cette commande pour redfinir les paramtres OPTIMAL et MAXEXTENTS. integer] {integer[K|M]|NULL}] [MAXEXTENTS {integer|UNLIMITED}]

Oracle9i Database Administration I B-11

Librer de l'espace affect aux segments d'annulation


Utilisez la commande ALTER ROLLBACK SEGMENT. Si des extents sont actifs, ils ne sont pas obligatoirement ramens la taille demande.
ALTER ROLLBACK SEGMENT rbs01 SHRINK TO 4M;

B-12

Copyright Oracle Corporation, 2001. Tous droits rservs.

Librer de l'espace affect aux segments d'annulation Si vous avez dfini le paramtre OPTIMAL d'un segment d'annulation, le serveur Oracle tente de dsallouer des extents pour librer l'espace suprieur la taille optimale. Librer manuellement de l'espace Utilisez la commande suivante pour librer manuellement de l'espace affect un segment d'annulation : ALTER ROLLBACK SEGMENT rollback_segment SHRINK [ TO integer [ K|M ]]; Cette commande tente de rduire la taille du segment d'annulation la taille dfinie, mais s'arrte aussitt si un extent ne peut tre libr parce qu'il est actif. Si integer n'est pas dfini, le serveur Oracle tente de librer les extents jusqu' ce que la taille du segment d'annulation soit gale la valeur du paramtre OPTIMAL. Si la valeur de integer est suprieure la taille actuelle du segment d'annulation, cette commande est ignore.

Oracle9i Database Administration I B-12

Mettre un segment d'annulation hors ligne

Mettez un segment d'annulation hors ligne pour interdire son accs. Si le segment d'annulation est utilis par des transactions, il prend temporairement l'tat PENDING OFFLINE.
ALTER ROLLBACK SEGMENT rbs01 OFFLINE;

B-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Mettre un segment d'annulation hors ligne Mettez un segment d'annulation hors ligne : pour empcher de nouvelles transactions d'utiliser le segment, lorsque vous souhaitez supprimer le segment d'annulation. Syntaxe Utilisez la commande suivante pour mettre un segment d'annulation hors ligne : ALTER ROLLBACK SEGMENT rollback_segment OFFLINE; Si des transactions utilisent le segment d'annulation lorsque vous excutez cette instruction, le statut PENDING OFFLINE est affect au segment, comme l'indique la vue dynamique des performances V$ROLLSTAT. Le segment est mis hors ligne ds la fin des transactions en cours.

Oracle9i Database Administration I B-13

Supprimer des segments d'annulation

Pour pouvoir supprimer un segment d'annulation, vous devez le mettre hors ligne. Pour supprimer un segment d'annulation, utilisez la syntaxe suivante :
DROP ROLLBACK SEGMENT rbs01;

B-14

Copyright Oracle Corporation, 2001. Tous droits rservs.

Supprimer des segments d'annulation Utilisez la commande suivante pour supprimer un segment d'annulation : DROP ROLLBACK SEGMENT rollback_segment; Supprimez un segment d'annulation lorsqu'il est devenu inutile ou qu'il doit tre recr avec des paramtres de stockage INITIAL, NEXT ou MINEXTENTS diffrents. Pour pouvoir supprimer un segment d'annulation, vous devez le mettre hors ligne.

Oracle9i Database Administration I B-14

Planifier le nombre de segments d'annulation


OLTP
Des segments d'annulation petits et nombreux Quatre transactions par segment d'annulation Jusqu' dix transactions par segment d'annulation

Batch
Peu de grands segments d'annulation Un par transaction

B-15

Copyright Oracle Corporation, 2001. Tous droits rservs.

Nombre de segments d'annulation Le bloc d'en-tte d'un segment d'annulation contient les entres de la table des transactions qui dfinissent l'tat de chaque transaction. Toute transaction utilisant un segment d'annulation doit frquemment mettre jour la table des transactions. Ceci peut provoquer une contention au niveau de l'en-tte, notamment en environnement OLTP (Traitement des transactions en ligne). Etant donn qu'un environnement OLTP utilise gnralement des transactions brves, il est recommand d'utiliser des segments d'annulation petits et nombreux dans ce type d'environnement. Si possible, crez un segment d'annulation pour quatre transactions simultanes. En gnral, les environnements batch excutent moins d'oprations que ncessaire pour effectuer plusieurs modifications. Ces oprations exigent de grands segments d'annulation. Par consquent, dans un environnement batch, vous devez permettre la taille des segments d'annulation d'augmenter en les crant dans de grands tablespaces.

Oracle9i Database Administration I B-15

Planifier le nombre d'extents de segments d'annulation


0.50 0.40 Probabilit d'extension 0.30 0.20 0.10 0.00 0 10 20 30 40

Nombre d'extents

B-16

Copyright Oracle Corporation, 2001. Tous droits rservs.

Taille d'un segment d'annulation Le nombre d'octets requis pour le stockage des informations permettant d'effectuer une annulation dpend de deux lments : le type de la transaction excute (insertion, mise jour, suppression, etc.), les donnes traites. En rgle gnrale, l'insertion d'un enregistrement donn dans une table gnre moins d'informations d'annulation que la suppression de ce mme enregistrement. S'il s'agit d'une insertion, seul l'identificateur de ligne (ROWID) est enregistr, tandis que dans le second cas, la ligne entire est enregistre. Vous pouvez valuer la taille du segment d'annulation en excutant la plus longue transaction escompte et en vrifiant la taille du segment ou la quantit d'informations d'annulation gnre. Pour plus d'informations sur la surveillance des statistiques, voir les cours Oracle8i: Performance Tuning et Oracle8i: SQL Statement Tuning. Nombre d'extents Vous pouvez crer des segments d'annulation comportant un grand nombre d'extents (MINEXTENTS=20) pour limiter l'extension dynamique d'un segment d'annulation.

Oracle9i Database Administration I B-16

Problmes lis aux segments d'annulation

Espace insuffisant pour les transactions Erreurs de cohrence en lecture Sessions de blocage Erreurs de mise hors ligne d'un tablespace

B-17

Copyright Oracle Corporation, 2001. Tous droits rservs.

Oracle9i Database Administration I B-17

Espace insuffisant pour les transactions

Le tablespace ne dispose plus d'espace :


Augmentez la taille des fichiers de donnes. Activez l'extension automatique des fichiers de donnes. Ajoutez des fichiers de donnes.

Le segment a atteint la valeur du paramtre MAXEXTENTS :


Augmentez la valeur de MAXEXTENTS. Recrez des segments avec des tailles d'extent suprieures.

B-18

Copyright Oracle Corporation, 2001. Tous droits rservs.

Causes possibles Une transaction utilise un seul segment d'annulation et peut chouer si le segment d'annulation ne contient pas suffisamment d'espace (ORA-01562). Cette situation peut avoir l'une des origines suivantes : Le tablespace ne contient pas l'espace suffisant pour permettre l'extension des segments d'annulation (ORA-01560). Le nombre d'extents dans le segment d'annulation a atteint la valeur du paramtre MAXEXTENTS et il est impossible d'allouer des extents supplmentaires (ORA-01628). Solution Si le tablespace ne comporte pas d'espace libre, augmentez l'espace disponible : en dfinissant OPTIMAL pour viter qu'un seul segment d'annulation n'utilise tout l'espace libre du tablespace, en ramenant les segments d'annulation leur taille optimale, en augmentant la taille du tablespace. Si un segment d'annulation ne peut allouer plus d'extents, car la limite impose par le paramtre MAXEXTENTS a t atteinte : augmentez la valeur de MAXEXTENTS du segment d'annulation, supprimez et recrez le segment d'annulation en utilisant une plus grande taille d'extent pour viter que le problme ne se reproduise.

Oracle9i Database Administration I B-18

Erreurs de cohrence en lecture


SELECT * FROM table

Table

Bloc rutilis

Nouvelle image Image au dbut de l'instruction

B-19

Copyright Oracle Corporation, 2001. Tous droits rservs.

Causes possibles Pour assurer la cohrence en lecture, le serveur Oracle empche l'instruction de voir les modifications des autres utilisateurs non valides au dbut de son excution ou effectues aprs le dbut de son excution. Si le serveur Oracle ne peut pas crer une image des donnes cohrente en lecture, l'utilisateur reoit l'erreur ORA-01555 SNAPSHOT TOO OLD. Cette erreur se produit lorsque la transaction qui a effectu la modification a dj valid les donnes et que : l'espace de transaction de l'en-tte d'annulation a t rutilis, l'image avant du segment d'annulation a t remplace par une autre transaction. Solution Vous pouvez rduire les erreurs de cohrence en lecture en affectant aux segments : une valeur MINEXTENTS plus leve, une plus grande taille d'extents, une valeur OPTIMAL plus leve. Remarque : Vous ne pouvez pas viter ces erreurs en augmentant la valeur du paramtre MAXEXTENTS.

Oracle9i Database Administration I B-19

Sessions de blocage

Session de blocage

4 3

1 2 5

1
Extent 3

2 3 4

Extent existant Nouvel extent


B-20 Copyright Oracle Corporation, 2001. Tous droits rservs.

Causes possibles Lorsqu'un extent d'un segment d'annulation est plein, le serveur Oracle tente de rutiliser l'extent suivant du segment. Si ce dernier contient une entre en cours, c'est--dire une entre gnre par une transaction qui est toujours active, il ne peut pas tre utilis. Dans ce cas, un segment d'annulation alloue un extent supplmentaire. La transaction ne peut pas ignorer un extent de l'anneau et poursuit les oprations d'criture dans un extent suivant. Une transaction qui n'a effectu que quelques modifications et qui est inactive depuis un long moment peut entraner l'augmentation de la taille des segments d'annulation, mme s'il existe un grand nombre d'extents libres. Dans ce cas, un espace considrable est perdu et l'administrateur de base de donnes peut intervenir pour empcher l'augmentation excessive de la taille des segments d'annulation.

Oracle9i Database Administration I B-20

Causes possibles (suite) Solution Interrogez les vues V$ROLLSTAT, V$SESSION et V$TRANSACTION pour identifier les transactions qui bloquent. Exemple
SQL> SELECT s.sid, s.serial#, t.start_time, t.xidusn, s.username 2 FROM v$session s, v$transaction t, v$rollstat r 3 WHERE s.saddr = t.ses_addr 4 AND t.xidusn = r.usn 5 AND ((r.curext = t.start_uext-1) OR 6 ((r.curext = r.extents-1) AND t.start_uext=0)); SID --9 SERIAL# ------27 START_TIME -----------------10/30/97 21:10:41 XIDUSN 2 USERNAME SYSTEM ------- ------

1 row selected.

Dterminez si l'utilisateur peut arrter la transaction. S'il ne le peut pas, vous devrez peut-tre fermer la session.

Oracle9i Database Administration I B-21

Erreurs de mise hors ligne d'un tablespace

Vous ne pouvez pas mettre hors ligne un tablespace contenant un segment d'annulation actif. 1. Identifiez les segments d'annulation du tablespace. 2. Mettez tous ces segments hors ligne. 3. Recherchez les transactions actives utilisant ces segments d'annulation. 4. Recherchez l'ID de session et le numro de srie. 5. Si ncessaire, fermez la session. 6. Mettez le tablespace hors ligne.

B-22

Copyright Oracle Corporation, 2001. Tous droits rservs.

Identification et rsolution des problmes Si un tablespace contient un ou plusieurs segments d'annulation actifs, vous ne pouvez pas le mettre hors ligne. La session qui excute l'instruction reoit le message d'erreur ORA-01546. Solution Procdez comme suit : 1. Interrogez la vue DBA_ROLLBACK_SEGS pour identifier les segments d'annulation du tablespace. 2. Mettez hors ligne tous les segments d'annulation du tablespace. 3. Dans la vue V$TRANSACTION, recherchez les transactions qui utilisent ces segments d'annulation. 4. Utilisez la vue V$SESSION pour obtenir les informations relatives l'utilisateur et la session. 5. Fermez la session ou demandez l'utilisateur d'arrter la transaction. 6. Mettez le tablespace hors ligne.

Oracle9i Database Administration I B-22

Solutions des exercices pour SQL*Plus

Copyright Oracle Corporation, 2001. Tous droits rservs.

Conventions relatives aux solutions des exercices Les solutions sont destines au stagiaire qui souhaite raliser les exercices avec SQL*Plus. Excuter des scripts d'exercice SQL Des scripts ont t intgrs aux exercices pour qu'ils ralisent certaines tches votre place. Il peut s'agir d'une tche que vous n'avez pas encore assimile ce stade ou d'une tche visant vous permettre d'avancer plus facilement dans l'exercice. N'excutez pas un script .sql avant d'avoir revu sa fonction. Cela vous permettra de comprendre parfaitement le processus de cration et ses effets sur la tche raliser. Utiliser la ligne de commande du systme d'exploitation Vous aurez l'occasion de raliser certaines tches l'aide de la ligne de commande du systme d'exploitation. Dans ce cas, le symbole ! sera utilis par la ligne de commande SQL*Plus pour sortir de SQL*Plus et entrer dans le mode de la ligne de commande du systme d'exploitation. A la fin de votre travail avec cette ligne de commande, vous pouvez utiliser Exit pour revenir la ligne de commande SQL*Plus. Exemple : suppression du fichier de mots de passe en cours situ dans le rpertoire $HOME/ADMIN/PFILE. SQL > !rm $HOME/ADMIN/PFILE/orapw$ORACLE_SID $ > exit Se connecter en tant que SYS Pour vous connecter en tant qu'utilisateur SYS, vous devrez disposer du privilge SYSDBA.
CONNECT / AS SYSDBA

Oracle9i Database Administration I C-2

Exercice 1 1 Parmi les affirmations suivantes, dterminez laquelle est vraie. a Un serveur Oracle est un ensemble de donnes compos de trois types de fichier. b Pour tablir une connexion avec la base de donnes, l'utilisateur doit dmarrer une instance Oracle. c A Une connexion est un chemin de communication entre le serveur Oracle et l'instance Oracle. d Une session dmarre une fois que le serveur Oracle a authentifi l'utilisateur. Rponse : D 2 Parmi les zones mmoire suivantes, laquelle ne fait pas partie de la mmoire SGA ? a le cache de tampons de la base de donnes, b la mmoire PGA, c le tampon de journalisation, d la zone de mmoire partage. Rponse : B 3 Identifiez les deux affirmations correctes se rapportant la zone de mmoire partage. a La zone de mmoire partage est compose du cache "library", du cache du dictionnaire de donnes, de la zone SQL partage, de la zone de mmoire Java et de la zone de mmoire LARGE POOL. b La zone de mmoire partage permet de stocker les dernires instructions SQL excutes. c La zone de mmoire partage est utilise pour un objet pouvant tre partag globalement. d Le cache "library" est compos des zones SQL et PL/SQL partages. Rponse : B, D 4 Parmi les zones mmoire suivantes, laquelle permet de mettre en mmoire cache les informations du dictionnaire de donnes ? a le cache de tampons de la base de donnes, b la mmoire PGA, c le tampon de journalisation, d la zone de mmoire partage. Rponse : D 5 La tche principale du tampon de journalisation consiste enregistrer toutes les modifications apportes aux blocs de donnes de la base. a Vrai b Faux Rponse : Vrai

Oracle9i Database Administration I C-3

Exercice 1 (suite) 6 La mmoire PGA est une rgion de la mmoire qui contient les donnes et les informations de contrle de plusieurs processus serveur ou de plusieurs processus d'arrire-plan. a Vrai b Faux Rponse : Faux. Une mmoire PGA est une rgion de la mmoire qui contient les donnes et les informations de contrle d'un seul processus serveur ou d'un seul processus d'arrire-plan. 7 Parmi les processus suivants, lequel ou lesquels sont disponibles au dmarrage d'une instance Oracle ? a le processus utilisateur, b le processus serveur, c les processus d'arrire-plan. Rponse : C 8 Indiquez ci-dessous cinq processus d'arrire-plan obligatoires. ________________________________________ ________________________________________ ________________________________________ ________________________________________ ________________________________________ Rponse : DBWR, LGWR, PMON, SMON, CKPT. 9 Affectez chaque processus la tche correspondante. a Database Writer E permet l'criture dans les en-ttes des fichiers dedonnes. b Log Writer C se charge de la rcupration de l'instance. c System Monitor D excute des oprations de nettoyage suite l'chec de processus. d Process Monitor B enregistre les modifications de la base de donnes pour permettre la rcupration. e Checkpoint A crit les tampons "dirty" dans les fichiers de donnes. Rponse : E, C, D, B, A. 10 La structure physique d'une base Oracle est compose de fichiers de contrle, de fichiers de donnes et de fichiers de journalisation. a Vrai b Faux Rponse : Vrai

Oracle9i Database Administration I C-4

Exercice 1 (suite) 11 Rtablissez la hirarchie des structures suivantes, en commenant par la base de donnes. a Tablespaces b Extent c Segment d Base de donne e Bloc Rponse : D, A, C, B, E. 12 Indiquez les composants d'un serveur Oracle. ________________________________________ ________________________________________ Rponse : L'instance Oracle et la base de donnes Oracle. 13 Indiquez les composants d'une instance Oracle. ________________________________________ ________________________________________ Rponse : La zone SGA et les processus d'arrire-plan. 14 Indiquez trois types de fichier composant une base de donnes Oracle. ________________________________________ ________________________________________ ________________________________________ Rponse : Les fichiers de donnes, les fichiers de contrle et les fichiers de journalisation.

Oracle9i Database Administration I C-5

Exercice 2 Cet exercice s'effectue en salle. Votre formateur vous fournira les comptes de connexion et vous aidera vous connecter votre compte. Notez ci-dessous les informations qu'il vous fournira : Nom d'hte : _________________________________ Nom SID : __________________________________ 1 Connectez-vous SQL*Plus en tant que SYSDBA. Indice : Suivez les instructions de votre formateur pour vous connecter. Dmarrez SQL*Plus. Connectez-vous en tant que SYS AS SYSDBA.

$ sqlplus /nolog SQL*Plus: Release 9.0.1.0.0 - Production on Thu Nov 29 15:44:51 2001 (c) Copyright 2001 Oracle Corporation. reserved. SQL> CONNECT / AS SYSDBA Connected. All rights

2 A l'aide de SQL*Plus, excutez l'interrogation suivante pour vrifier que la connexion la base de donnes a t tablie.

SQL> SELECT * FROM DUAL; D X 3 Lancez Oracle Enterprise Manager en mode autonome. Slectionnez Start > Programs > Oracle-OraHome90 > Enterprise Manager Console Slectionnez l'option Launch standalone. Cliquez sur OK.

Oracle9i Database Administration I C-6

Exercice 2 : initiation au serveur Oracle 4 Lancez Oracle Enterprise Manager l'aide d'Oracle Management Service. Dans le cadre d'un cours en salle Oracle uniquement :

Si vous suivez un cours en salle Oracle, vous devez excuter les quatre tapes suivantes, qui sont propres la configuration de ce type de cours : 1. Cliquez sur l'icne de mise jour de fichier omsconfig sur le bureau. votre Entrez le nom du serveur Unix utilis dans votre cours, qui vous sera fourni par formateur. Veillez l'entrer tel qu'il vous a t communiqu, en respectant la distinction entre les majuscules et les minuscules.

2. Ouvrez une fentre MSDOS. 3. A l'invite de commande, entrez oemctl start oms. Attendez que le message suivant s'affiche : "The Oracleoracle901_homeManagementServer service was started successfully." 4. Fermez la fentre MSDOS. Dmarrez la console OEM et slectionnez l'option Login to the Oracle Management Server. Connectez-vous comme suit : Administrator: sysman Remarque : Respectez la casse Password: oem_temp Remarque : Respectez la casse. Lorsque vous y tes invit, remplacez le mot de passe par oracle. Remarque : Respectez la casse. Management Server: (information fournie par votre formateur) Une fois que la console OEM est ouverte, accdez au menu principal et procdez comme suit : Slectionnez Navigator > Discover Nodes. La bote de dialogue Discovery Wizard s'ouvre. Slectionnez Next pour poursuivre. - Entrez le nom du noeud que vous souhaitez grer, c'est--dire le nom d'hte du serveur de bases de donnes dsign (information fournie par votre formateur). - Slectionnez Next. pas, Une fois le reprage termin, slectionnez OK. Remarque : Si le reprage n'aboutit informez-en votre formateur. Dveloppez le dossier Database dans l'arborescence de navigation. Cliquez deux fois sur votre base de donnes (qui vous a t indique par votre formateur). -

(suite page suivante)

Oracle9i Database Administration I C-7

Exercice 2 : initiation au serveur Oracle 4 Lancez Oracle Enterprise Manager l'aide d'Oracle Management Service (suite) Fournissez les informations de connexion suivantes : Utilisateur : sys Mot de passe : secure En tant que : SYSDBA Fournissez ensuite les informations d'identification et de connexion au noeud pour les travaux en cours d'excution. Dans le menu principal, slectionnez Configuration > Preferences. Slectionnez la page Preferred Credentials. Accdez au bas de la page et slectionnez l'entre correspondant votre base de donnes. Fournissez les informations suivantes : Username: (information fournie par votre formateur) Password: (information fournie par votre formateur) Confirm Password: Role: SYSDBA 5 Slectionnez OK.

Dmarrez SQL*Plus Worksheet. Procdez comme suit pour dmarrer SQL*Plus Worksheet depuis la console Oracle Enterprise Manager : - Slectionnez Tools > Database Applications > SQL*Plus Worksheet. Vous pouvez galement dmarrer SQL*Plus Worksheet depuis le menu Windows NT : - Slectionnez Start > Programs > Oracle-OraHome90 > Integrated Management Tools > SQLPlus Worksheet. Connectez-vous directement la base de donnes dfinie par votre formateur. Entrez les informations suivantes : Username, Password et Service. Connectez-vous en tant que : SYSDBA. Cliquez sur OK.

Remarque : A chaque fois que vous vous connectez sous un nom diffrent (dans SQL*Plus Worksheet), vous devez intgrer le nom de service la chane de connexion.

Oracle9i Database Administration I C-8

Exercice 3 la 1 Connectez-vous la base de donnes sous l'ID utilisateur SYS AS SYSDBA, puis arrtez base.
SQL> CONNECT / AS SYSDBA Connected. SQL> SQL> SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down.

2 Une fois la base de donnes arrte, crez un fichier SPFILE partir du fichier PFILE. Placez le fichier SPFILE dans le rpertoire $HOME/ADMIN/PFILE en lui affectant un nom au format spfileSID.ora (o SID correspond au nom de votre instance). Crez le fichier SPFILE partir du fichier PFILE qui se trouve dans le rpertoire $HOME/ADMIN/PFILE.

SQL> CONNECT / AS SYSDBA Connected to an idle instance. SQL> CREATE SPFILE='$HOME/ADMIN/PFILE/spfile$ORACLE_SID.ora' 2 FROM PFILE='$HOME/ADMIN/PFILE/init$ORACLE_SID.ora'; File created.

Oracle9i Database Administration I C-9

Exercice 3 (suite) 3 Affichez le fichier SPFILE depuis le systme d'exploitation.


SQL> !more $HOME/ADMIN/PFILE/spfile$ORACLE_SID.ora *.background_dump_dest='/u01/home/dba01/ADMIN/BDUMP' *.compatible='9.0.0' *.control_files='/u01/home/dba01/ORADATA/u01/ctrl01.ctl' *.core_dump_dest='/u01/home/dba01/ADMIN/CDUMP' *.db_block_size=4096 *.db_cache_size=4M *.db_domain='world' *.db_name='dba01' *.global_names=TRUE *.instance_name='dba01' *.java_pool_size='0' *.max_dump_file_size='10240' *.remote_login_passwordfile='exclusive' *.service_names='dba01' *.shared_pool_size=8M *.undo_management='AUTO' *.undo_tablespace='UNDOTBS' *.user_dump_dest='/u01/home/dba01/ADMIN/UDUMP'

4 Connectez-vous sous l'ID utilisateur SYS AS SYSDBA, puis dmarrez la base de donnes l'aide du fichier SPFILE.

SQL> CONNECT / AS SYSDBA Connected to an idle instance. SQL> STARTUP ORACLE instance started. Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers Database mounted. Database opened. 21790412 bytes 278220 bytes 16777216 bytes 4194304 bytes 540672 bytes

Oracle9i Database Administration I C-10

Exercice 3 (suite) 5 a Arrtez la base de donnes, puis ouvrez-la en mode lecture seule.
SQL> CONNECT / AS SYSDBA Connected. SQL> SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down. SQL> STARTUP MOUNT ORACLE instance started. Total System Global Area 21790412 Fixed Size 278220 Variable Size 16777216 Database Buffers 4194304 Redo Buffers 540672 Database mounted. SQL> ALTER DATABASE OPEN READ ONLY; Database altered.

bytes bytes bytes bytes bytes

ligne

b Connectez-vous sous l'ID utilisateur HR avec le mot de passe HR, puis insrez une dans la table REGIONS comme suit :
INSERT INTO regions VALUES (5, Mars);

Que se passe-t-il ?

SQL> INSERT INTO regions VALUES ( 5, 'Mars'); INSERT INTO regions VALUES ( 5, 'Mars') * ERROR at line 1: ORA-01552: cannot use system rollback segment for nonsystem tablespace SAMPLE'

Oracle9i Database Administration I C-11

Exercice 3 (suite) 5 c Raffectez la base de donnes le mode lecture-criture.


SQL> CONNECT / AS SYSDBA Connected. SQL> SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down. SQL> STARTUP ORACLE instance started.

6 a Connectez-vous en tant qu'utilisateur HR avec le mot de passe HR, puis insrez la ligne suivante dans la table REGIONS. Ne validez pas et ne quittez pas la session.
INSERT INTO regions VALUES ( 5, Mars );

HR SESSION

SQL> CONNECT hr/hr


Connected.

SQL> INSERT INTO regions VALUES (5, 'Mars');


1 row created.

b Dmarrez SQL*Plus dans une nouvelle session Telnet. Connectez-vous en tant qu'utilisateur SYS AS SYSDBA, puis procdez un arrt en mode Transactional.

SYS SESSION

SQL> CONNECT / AS SYSDBA Connected. SQL> SHUTDOWN TRANSACTIONAL

Oracle9i Database Administration I C-12

Exercice 3 (suite) 6 c Annulez l'insertion dans la session de HR, puis quittez. Que se passe-t-il dans la session de HR ? Que se passe-t-il dans celle de SYS ?
HR SESSION

SQL> ROLLBACK; Rollback complete. SQL> EXIT; ERROR: ORA-01089: immediate shutdown in progress - no operations are permitted Disconnected from Oracle9i Enterprise Edition Release 9.0.0.0.0 - Beta With the Partitioning option JServer Release 9.0.0.0.0 - Beta (with complications) Remarque : La session SYS va se terminer et la base de donnes est sur le point de se fermer.
SYS SESSION

Database closed. Database dismounted.

Oracle9i Database Administration I C-13

Exercice 3 (suite) 7 a Connectez-vous sous l'ID utilisateur SYS, puis dmarrez la base de donnes.
SYS SESSION

SQL> CONNECT / AS SYSDBA Connected to an idle instance. SQL> STARTUP ORACLE instance started.

b Dmarrez une autre session en tant qu'utilisateur HR. Remarque : Conservez les sessions SQL*Plus de SYS et de HR ouvertes.

HR SESSION

SQL> CONNECT hr/hr Connected.

c Sous l'ID utilisateur SYS, activez la session en mode restreint.

SYS SESSION

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; System altered.

Oracle9i Database Administration I C-14

Exercice 3 (suite) 7 d Sous l'ID utilisateur HR, effectuez une slection (SELECT) dans la table REGIONS. L'opration aboutit-elle ? Quittez la session, puis reconnectez-vous sous l'ID utilisateur HR. Que se passe-t-il ?
HR SESSION

SQL> SELECT * 2 FROM regions; REGION_ID REGION_NAME ---------- ------------------------1 Europe 2 Americas 3 Asia 4 Middle East and Africa SQL> EXIT SQL> CONNECT hr/hr ERROR: ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege Warning: You are no longer connected to ORACLE.

Sous l'ID utilisateur SYS, dsactivez la session en mode restreint.

SYS SESSION

SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION; System altered.

Oracle9i Database Administration I C-15

Exercice 5 1 Dans la liste suivante, identifiez les affirmations correctes concernant le dictionnaire de donnes : a Le dictionnaire de donnes dcrit la base de donnes et ses objets. b Le dictionnaire de donnes comprend deux types d'objet : des tables de base et des vues. c Le dictionnaire de donnes est un ensemble de tables. d Le dictionnaire de donnes enregistre et vrifie les informations relatives la base de donnes qui lui est associe. Rponse : Toutes les affirmations. 2 Le script catalog.sql permet de crer des tables de base. a Vrai b Faux Rponse : Faux, il s'agit du script sql.bsq. 3 Dans la liste suivante, identifiez les trois affirmations correctes concernant l'utilisation du dictionnaire de donnes : a Le serveur Oracle le modifie lorsqu'une instruction LMD est excute. b Il permet de rechercher des informations sur les utilisateurs, les objets de schma et les structures de stockage. c Les utilisateurs et les administrateurs de base de donnes s'en servent comme rfrence. d Il est indispensable au bon fonctionnement de la base de donnes. Rponse : B, C, D. 4 Les vues du dictionnaire de donnes sont statiques. a Vrai b Faux Rponse : Vrai 5 Les informations d'une vue dynamique des performances peuvent tre extraites partir du fichier de contrle. a Vrai b Faux Rponse : Vrai 6 Dans la liste suivante, identifiez les questions auxquelles une vue dynamique des performances peut rpondre a L'objet est-il en ligne et disponible ? b Quels verrous externes sont appliqus ? c Qui est le propritaire de l'objet ? d De quels privilges les utilisateurs disposent-ils ? e La session est-elle active ? Rponse : A, B, E.

Oracle9i Database Administration I C-16

Exercice 5 (suite) 7 Recherchez la liste des vues du dictionnaire de donnes.


SQL> CONNECT SYSTEM/MANAGER Connected. SQL> SELECT table_name 2 FROM dictionary;

TABLE_NAME -----------------------------ALL_ALL_TABLES ALL_ARGUMENTS ALL_ASSOCIATIONS ALL_AUDIT_POLICIES ALL_BASE_TABLE_MVIEWS ALL_CATALOG ALL_CLUSTERS ALL_CLUSTER_HASH_EXPRESSIONS ALL_COLL_TYPES . . . 1063 rows selected.

Oracle9i Database Administration I C-17

Exercice 5 (suite) 8 Identifiez le nom de la base de donnes, le nom de l'instance et la taille des blocs de base de donnes.
Indice : Interrogez les vues dynamiques des performances V$DATABASE, V$THREAD et V$PARAMETER. SQL> SELECT name 2 FROM v$database; NAME --------DBA01 SQL> SELECT instance 2 FROM v$thread; INSTANCE ---------------dba01 SQL> SELECT value 2 FROM v$parameter 3 WHERE name ='db_block_size'; VALUE -------------------------------4096

9 Affichez la liste des noms des fichiers de donnes. Indice : Interrogez la vue dynamique des performances V$DATAFILE.

SQL> SELECT name 2 NAME ---------------------------------------------------------/u01/home/dba01/ORADATA/u01/system01.dbf /u01/home/dba01/ORADATA/u02/undotbs.dbf /u01/home/dba01/ORADATA/u03/users01.dbf /u01/home/dba01/ORADATA/u03/index01.dbf /u01/home/dba01/ORADATA/u02/sample01.dbf /u01/home/dba01/ORADATA/u01/querydata01.dbf 6 rows selected. FROM v$datafile;

Oracle9i Database Administration I C-18

Exercice 5 (suite) 10 Identifiez le fichier de donnes qui constitue le tablespace SYSTEM. Indice : Interrogez la vue DBA_DATA_FILES du dictionnaire de donnes pour identifier le fichier de donnes qui constituent le tablespace SYSTEM.
SQL> SELECT file_name 2 3 FROM WHERE dba_data_files tablespace_name = 'SYSTEM';

FILE_NAME --------------------------------------/u01/home/dba01/ORADATA/u01/system01.dbf

11 Quel est le volume d'espace libre disponible et le volume d'espace utilis dans la base de donnes ? Indices - Interrogez la vue DBA_FREE_SPACE du dictionnaire de donnes pour afficher la quantit d'espace disponible dans la base de donnes. - Interrogez la vue DBA_SEGMENTS du dictionnaire de donnes pour afficher la quantit d'espace utilis.

SQL> SELECT sum(bytes)/1024 "free space in KB" 2 FROM dba_free_space; free space in KB ---------------42700 SQL> SELECT sum(bytes)/1024 "used space in KB" 2 FROM dba_segments; used space in KB ---------------131992

Oracle9i Database Administration I C-19

Exercice 5 (suite) 12 Rpertoriez le nom et la date de cration des utilisateurs de la base de donnes. Indice : Interrogez la vue DBA_USERS du dictionnaire de base de donnes pour obtenir la liste des noms et des dates de cration des utilisateurs de la base de donnes.
SQL> SELECT username, created 2 FROM dba_users; CREATED 16-APR-01 16-APR-01 16-APR-01 16-APR-01 16-APR-01 16-APR-01 16-APR-01 16-APR-01 16-APR-01 USERNAME SYS SYSTEM OUTLN DBSNMP ORDSYS ORDPLUGINS MDSYS HR OE 9 rows selected.

------------------------------ ---------

Oracle9i Database Administration I C-20

Exercice 6 1 O se trouve le fichier de contrle existant et quel est son nom ? Indice : Interrogez la vue dynamique des performances V$CONTROLFILE. Remarque : Vous pouvez galement utiliser la vue V$PARAMETER ou excuter la commande SHOW PARAMETER pour afficher le nom et l'emplacement du fichier de contrle.
SQL> COL name FORMAT a50 SQL> SELECT * 2 FROM NAME /u01/home/dba01/ORADATA/u01/ctrl01.ctl v$controlfile; STATUS

------- --------------------------------------

Oracle9i Database Administration I C-21

Exercice 6 2 a Tentez de dmarrer la base de donnes sans fichier de contrle. Pour simuler cette opration, modifiez le nom du fichier de contrle dans le fichier de paramtres ou renommez-le. Que se passe-t-il ? Indices - Connectez-vous sous l'ID utilisateur SYS. - Fermez la base de donnes l'aide de l'option IMMEDIATE. - Utilisez la ligne de commande du systme d'exploitation pour copier le fichier de contrle .ctl en lui affectant l'extension .bak. - Supprimez le fichier de contrle .ctl. - Dmarrez la base de donnes.
SQL> CONNECT / AS SYSDBA Connected. SQL> SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down. SQL> !cp $HOME/ORADATA/u01/ctrl01.ctl $HOME/ORADATA/u01/ctrl01.bak SQL> !rm $HOME/ORADATA/u01/ctrl01.ctl SQL> STARTUP ORACLE instance started. Total System Global Area 21790412 bytes Fixed Size 278220 bytes Variable Size 16777216 bytes Database Buffers 4194304 bytes Redo Buffers 540672 bytes ORA-00205: error in identifying controlfile, check alert log for more info

fichier

b Pour remdier cet incident, arrtez la base de donnes, renommez la copie du de contrle de faon approprie, puis dmarrez la base de donnes.

SQL> SHUTDOWN IMMEDIATE ORA-01507: database not mounted ORACLE instance shut down. SQL> !cp $HOME/ORADATA/u01/ctrl01.bak $HOME/ORADATA/u01/ctrl01.ctl SQL> STARTUP ORACLE instance started.

Oracle9i Database Administration I C-22

Exercice 6 (suite) 3 Multiplexez le fichier de contrle existant en utilisant le rpertoire u02, puis nommez le nouveau fichier ctrl02.ctl. Assurez-vous que le serveur Oracle a accs en criture ce nouveau fichier en utilisant, par exemple, la commande chmod 660 sous UNIX. Vrifiez que les deux fichiers de contrle sont utiliss. Indices - Avant d'arrter la base de donnes, modifiez le fichier SPFILE (SCOPE=SPILE) pour ajouter le nouveau fichier de contrle au fichier d'initialisation. Arrtez la base de donnes, puis copiez le fichier de contrle existant dans un nouveau fichier nomm ctrl02.ctl que vous placerez dans le rpertoire u02. Sous Unix, utilisez la commande chmod 660. Normalement, les droits sur le fichier restent inchangs ; cette situation n'est prsente que pour les besoins du cours. Dmarrez la base de donnes. Interrogez la vue dynamique des performances V$CONTROLFILE ou V$PARAMETER, ou utilisez la commande SHOW PARAMETER pour confirmer les deux fichiers de contrle sont utiliss.

que

SQL> CONNECT / AS SYSDBA Connected. SQL> ALTER SYSTEM SET control_files = '$HOME/ORADATA/u01/ctrl01.ctl', '$HOME/ORADATA/u02/ctrl02.ctl' SCOPE=SPFILE; System altered. SQL> SHUTDOWN IMMEDIATE; Database closed. Database dismounted. ORACLE instance shut down. SQL> !cp $HOME/ORADATA/u01/ctrl01.ctl $HOME/ORADATA/u02/ctrl02.ctl SQL> !chmod 660 $HOME/ORADATA/u02/ctrl02.ctl SQL> STARTUP ORACLE instance started. Database mounted. Database opened. SQL> SELECT name 2 NAME -------------------------------------/u01/home/dba01/ORADATA/u01/ctrl01.ctl /u01/home/dba01/ORADATA/u02/ctrl02.ctl FROM v$controlfile;

Oracle9i Database Administration I C-23

Exercice 6 (suite) 4 Quelle est la taille initiale de la section de fichier de donnes dans le fichier de contrle ? Indice : Interrogez la vue dynamique des performances V$CONTROLFILE_RECORD_SECTION.
SQL> SELECT records_total 2 3 FROM WHERE v$controlfile_record_section type = 'DATAFILE';

RECORDS_TOTAL ------------40

Oracle9i Database Administration I C-24

Exercice 7 1 Rpertoriez le nombre et l'emplacement des fichiers journaux existants et affichez le nombre de groupes de fichiers de journalisation et de membres que contient votre base de donnes. Indices - Interrogez la vue dynamique des performances V$LOGFILE. Utilisez la vue dynamique des performances V$LOG.

SQL> SELECT member 2 FROM v$logfile; MEMBER ------------------------------------/u01/home/dba01/ORADATA/u03/log02a.rdo /u01/home/dba01/ORADATA/u03/log01a.rdo SQL> SELECT group#, members 2 FROM GROUP# 1 2 v$log; MEMBERS 1 1

---------- ----------

Oracle9i Database Administration I C-25

Exercice 7 2 Dans quel mode la base de donnes est-elle configure ? L'archivage est-il activ ? Indices - Interrogez la vue dynamique des performances V$DATABASE. Interrogez la vue dynamique des performances V$INSTANCE.

SQL> SELECT log_mode 2 FROM v$database; LOG_MODE -----------NOARCHIVELOG SQL> SELECT archiver 2 FROM v$instance; ARCHIVE ------STOPPED

Oracle9i Database Administration I C-26

Exercice 7 (suite) 3 En respectant les conventions d'appellation suivantes, ajoutez un membre chaque groupe de fichiers de journalisation de la base de donnes stocke sur u04 : Ajoutez un membre au groupe 1 : log01b.rdo Ajoutez un membre au groupe 2 : log02b.rdo Vrifiez le rsultat obtenu. Indices - Excutez la commande ALTER DATABASE ADD LOGFILE MEMBER pour ajouter un membre chaque groupe de fichiers de journalisation. - Interrogez la vue dynamique des performances V$LOGFILE pour vrifier le rsultat.
SQL> ALTER DATABASE ADD LOGFILE MEMBER 2 '$HOME/ORADATA/u04/log01b.rdo' to Group 1, 3 '$HOME/ORADATA/u04/log02b.rdo' to Group 2; Database altered. SQL> COLUMN GROUP# FORMAT 99 SQL> COLUMN MEMBER FORMAT a40 SQL> SELECT * 2 FROM v$logfile; GROUP# STATUS TYPE MEMBER ------ ------ ------- -----------------------------------2 ONLINE u01/home/dba01/ORADATA/u03/log02a.rdo 1 STALE ONLINE u01/home/dba01/ORADATA/u03/log01a.rdo 1 INVALID ONLINE u01/home/dba01/ORADATA/u04/log01b.rdo 2 INVALID ONLINE u01/home/dba01/ORADATA/u04/log02b.rdo

Oracle9i Database Administration I C-27

Exercice 7 (suite) 4 En respectant les conventions d'appellation suivantes, ajoutez un groupe de fichiers de journalisation et placez deux membres sur u03 et u04. Vrifiez le rsultat. Add Group 3: log03a.rdo and log03b.rdo Indices - Excutez la commande ALTER DATABASE ADD LOGFILE pour crer un groupe. - Interrogez la vue dynamique des performances V$LOGFILE pour afficher le nom des nouveaux membres du nouveau groupe. - Interrogez la vue dynamique des performances V$LOG pour afficher le nombre de groupes de fichiers de journalisation et de membres.
SQL> ALTER DATABASE ADD 2 LOGFILE GROUP 3('$HOME/ORADATA/u03/log03a.rdo', 3 '$HOME/ORADATA/u04/log03b.rdo') SIZE 1024K; Database altered. SQL> COLUMN GROUP# FORMAT 99 SQL> COLUMN MEMBER FORMAT a40 SQL> SELECT * FROM v$logfile; GROUP# STATUS TYPE MEMBER ------ ------- ------- ----------------------------------2 ONLINE /u01/home/dba01/ORADATA/u03/log02a.rdo 1 STALE ONLINE /u01/home/dba01/ORADATA/u03/log01a.rdo 1 INVALID ONLINE /u01/home/dba01/ORADATA/u04/log01b.rdo 2 INVALID ONLINE /u01/home/dba01/ORADATA/u04/log02b.rdo 3 ONLINE /u01/home/dba01/ORADATA/u03/log03a.rdo 3 ONLINE /u01/home/dba01/ORADATA/u04/log03b.rdo 6 rows selected. SQL> SELECT group#, members FROM v$log; GROUP# MEMBERS ------ ---------1 2 2 2 3 2

Oracle9i Database Administration I C-28

Exercice 7 (suite) 5 Supprimez le groupe de fichiers de journalisation cr l'tape 4. Indices - Utilisez ALTER SYSTEM SWITCH LOGFILE si les fichiers journaux sont actifs. Le nombre de changements de fichier varie. Remarque : Interrogez la base de donnes pour consulter les fichiers journaux actifs. Dterminez ensuite le nombre de fois que vous devez excuter la commande ALTER SYSTEM SWITCH LOGFILE. Excutez la commande ALTER DATABASE DROP LOGFILE GROUP pour supprimer le groupe de fichiers de journalisation. Interrogez la vue dynamique des performances V$LOG pour vrifier le rsultat. Supprimez du groupe les fichiers du systme d'exploitation.

SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. SQL> ALTER DATABASE DROP LOGFILE GROUP 3; Database altered. SQL> SELECT group#, members 2 FROM v$log; GROUP# MEMBERS ------ ---------1 2 2 2 3 2 SQL> !rm $HOME/ORADATA/u03/log03a.rdo SQL> !rm $HOME/ORADATA/u04/log03b.rdo

Oracle9i Database Administration I C-29

Exercice 7 (suite) 6 Redimensionnez tous les fichiers de journalisation en ligne (online redo log files) la taille de 1024 Ko. Indices - Il est impossible de redimensionner des fichiers journaux. Par consquent, vous devez en ajouter de nouveaux et supprimer les anciens. - Excutez la commande ALTER DATABASE ADD LOGFILE GROUP pour ajouter deux nouveaux groupes d'une taille de 1024 Ko. - Interrogez la vue dynamique des performances V$LOG pour vrifier le groupe actif. - Excutez la commande ALTER SYSTEM SWITCH LOGFILE pour forcer les changements de fichier de journalisation et attribuer au groupe le statut inactif. Le nombre de changements de fichier requis varie. Remarque : Interrogez la base de donnes pour consulter les fichiers journaux actifs. Dterminez ensuite le nombre de fois que vous devez excuter la commande ALTER SYSTEM SWITCH LOGFILE. - Excutez la commande ALTER DATABASE DROP LOGFILE pour supprimer les groupes inactifs. - Interrogez la vue dynamique des performances V$LOG pour vrifier le rsultat.
SQL> ALTER DATABASE ADD LOGFILE 2 GROUP 3( '$HOME/ORADATA/u03/log03a.rdo', 3 '$HOME/ORADATA/u04/log03b.rdo ) 4 SIZE 1024K, 5 GROUP 4( '$HOME/ORADATA/u03/log04a.rdo', 6 '$HOME/ORADATA/u04/log04b.rdo ) 7 SIZE 1024K; Database altered. SQL> SELECT group#, status 2 FROM v$log; GROUP# -----1 2 3 4 STATUS ---------------ACTIVE CURRENT UNUSED UNUSED

SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. - continued -

Oracle9i Database Administration I C-30

Exercice 7 (suite)
- continued SQL> ALTER DATABASE DROP LOGFILE GROUP 1, GROUP 2; Database altered. SQL> SELECT group#, bytes 2 FROM v$log; BYTES 1048576 1048576

GROUP# 3 4

------ ----------

Oracle9i Database Administration I C-31

Exercice 8 1 Crez des tablespaces permanents associs aux noms et aux paramtres de stockage suivants : a DATA01, gr au moyen du dictionnaire de donnes.
SQL> CREATE TABLESPACE data01 2 3 DATAFILE '$HOME/ORADATA/u04/data01.dbf' SIZE 2M EXTENT MANAGEMENT DICTIONARY;

Tablespace created.

b DATA02, gr localement avec des extents de taille uniforme (assurez-vous que les tailles des extents utiliss dans le tablespace sont des multiples de 100 Ko).
SQL> CREATE TABLESPACE data02 2 3 DATAFILE '$HOME/ORADATA/u03/data02.dbf' SIZE 1M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100K;

Tablespace created.

c INDX01, gr localement avec des extents d'une taille uniforme de 4 Ko (activez l'extension automatique de 500 Ko lorsque des extents supplmentaires d'une taille maximale de 2 Mo sont requis).

SQL> CREATE TABLESPACE index01 2 3 4 DATAFILE '$HOME/ORADATA/u02/index01.dbf' SIZE 1M AUTOEXTEND ON NEXT 500K MAXSIZE 2M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4K;

Tablespace created.

d RONLY pour les tables en lecture seule avec le stockage par dfaut. NE METTEZ PAS le tablespace en lecture seule ce stade.

SQL> CREATE TABLESPACE ronly 2 DATAFILE '$HOME/ORADATA/u01/ronly01.dbf' SIZE 1M; Tablespace created.

Oracle9i Database Administration I C-32

Exercice 8 e Affichez les informations partir du dictionnaire de donnes. Indice : Pour obtenir des informations sur les tablespaces, utilisez l'une des interrogations suivantes :

- DBA_TABLESPACES - V$TABLESPACE - V$DATAFILE

SQL> SELECT tablespace_name FROM dba_tablespaces; TABLESPACE_NAME -----------------------------SYSTEM TEMP USERS INDX SAMPLE DATA01 DATA02 DATA03 UNDO2 INDEX01 10 rows selected.

Oracle9i Database Administration I C-33

Exercice 8 (suite) 2 Allouez 500 Ko d'espace disque supplmentaires au tablespace DATA02 et vrifiez le rsultat.
SQL> ALTER DATABASE 2 DATAFILE '$HOME/ORADATA/u03/data02.dbf' RESIZE 1500K; Database altered. SQL> COLUMN name FORMAT a40 SQL> SELECT name, bytes, create_bytes 2 3 NAME FROM WHERE v$datafile name LIKE '%data02%; BYTES CREATE_BYTES

------------------------------------- ------- -----------/u01/home/db02/ORADATA/u03/data02.dbf 1536000 1048576

Oracle9i Database Administration I C-34

Exercice 8 (suite) 3 Dplacez le tablespace INDEX01 vers le sous-rpertoire u06. Vrifiez l'emplacement et le statut de INDEX01. Indices - Mettez le tablespace INDEX01 hors ligne. u06. Utilisez la commande ALTER TABLESPACE pour redplacer le tablespace. Mettez le tablespace INDEX01 en ligne. Utilisez V$DATAFILE pour vrifier le statut.
SQL> ALTER TABLESPACE index01 OFFLINE; Tablespace altered. SQL> SELECT name, status 2 FROM v$datafile; NAME /u01/home/dba01/ORADATA/u01/system01.dbf /u01/home/dba01/ORADATA/u02/undotbs.dbf /u01/home/dba01/ORADATA/u03/users01.dbf /u01/home/dba01/ORADATA/u03/indx.dbf /u01/home/dba01/ORADATA/u02/sample01.dbf /u01/home/dba01/ORADATA/u01/querydata01.dbf /u01/home/dba01/ORADATA/u04/data01.dbf /u01/home/dba01/ORADATA/u03/data02.dbf /u01/home/dba01/ORADATA/u02/index01.dbf /u01/home/dba01/ORADATA/u01/ronly01.dbf 10 rows selected. SQL> !mv $HOME/ORADATA/u02/index01.dbf $HOME/ORADATA/u06/index01.dbf SQL> ALTER TABLESPACE index01 2 3 4 RENAME DATAFILE '$HOME/ORADATA/u02/index01.dbf' TO '$HOME/ORADATA/u06/index01.dbf'; STATUS SYSTEM ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE OFFLINE ONLINE -------------------------------------------------- -------

Utilisez V$DATAFILE pour vrifier le statut. Utilisez la commande de systme d'exploitation pour dplacer le tablespace vers

Tablespace altered. SQL> ALTER TABLESPACE index01 ONLINE; Tablespace altered. - continued -

Oracle9i Database Administration I C-35

Exercice 8 (suite)
- suite SQL> SELECT name, status 2 FROM v$datafile; NAME STATUS -------------------------------------------------- ------/u01/home/dba01/ORADATA/u01/system01.dbf SYSTEM /u01/home/dba01/ORADATA/u02/undotbs.dbf ONLINE /u01/home/dba01/ORADATA/u03/users01.dbf ONLINE /u01/home/dba01/ORADATA/u03/indx.dbf ONLINE /u01/home/dba01/ORADATA/u02/sample01.dbf ONLINE /u01/home/dba01/ORADATA/u01/querydata01.dbf ONLINE /u01/home/dba01/ORADATA/u04/data01.dbf ONLINE /u01/home/dba01/ORADATA/u03/data02.dbf ONLINE /u01/home/dba01/ORADATA/u06/index01.dbf ONLINE /u01/home/dba01/ORADATA/u01/ronly01.dbf ONLINE 10 rows selected.

Oracle9i Database Administration I C-36

Exercice 8 : grer les tablespaces et les fichiers de donnes 4 a Crez une table dans le tablespace RONLY. Mettez le tablespace RONLY en lecture seule, puis excutez une interrogation pour vrifier.
SQL> CREATE TABLE table1 ( x CHAR(1)) 2 TABLESPACE ronly; Table created. SQL> ALTER TABLESPACE ronly READ ONLY; Tablespace altered. SQL> SELECT name, enabled, status 2 FROM v$datafile; NAME STATUS ENABLED

------------------------------------------- ---------- ----/u01/home/dba01/ORADATA/u01/system01.dbf SYSTEM /u01/home/dba01/ORADATA/u02/undotbs.dbf ONLINE /u01/home/dba01/ORADATA/u03/users01.dbf ONLINE /u01/home/dba01/ORADATA/u03/indx.dbf ONLINE /u01/home/dba01/ORADATA/u02/example01.dbf ONLINE /u01/home/dba01/ORADATA/u01/querydata01.dbf ONLINE /u01/home/dba01/ORADATA/u04/data01.dbf ONLINE /u01/home/dba01/ORADATA/u03/data02.dbf ONLINE /u01/home/dba01/ORADATA/u06/index01.dbf ONLINE /u01/home/dba01/ORADATA/u01/ronly01.dbf ONLINE 10 rows selected. READ WRITE READ WRITE READ WRITE READ WRITE READ WRITE READ ONLY READ WRITE READ WRITE READ WRITE READ ONLY

Oracle9i Database Administration I C-37

Exercice 8 : grer les tablespaces et les fichiers de donnes 4 b Essayez de crer une autre table TABLE2. Supprimez la premire table cre, TABLE1. Que se passe-t-il ?
SQL> CREATE TABLE table2 ( y CHAR(1)) 2 TABLESPACE ronly; CREATE TABLE table2 ( y CHAR(1)) * ERROR at line 1: ORA-01647: tablespace 'RONLY' is read only, cannot allocate space in it SQL> DROP TABLE table1; Table dropped.

Oracle9i Database Administration I C-38

Exercice 8 (suite) 5 Supprimez le tablespace RONLY et le fichier de donnes associ, puis vrifiez le rsultat.
SQL> DROP TABLESPACE ronly INCLUDING CONTENTS AND DATAFILES; Tablespace dropped. SQL> SELECT * 2 FROM TS# NAME 0 SYSTEM 1 UNDOTBS 3 USERS 4 INDX 5 SAMPLE 2 TEMP 6 QUERY_DATA 7 DATA01 8 DATA02 9 INDEX01 10 rows selected. SQL> !ls $HOME/ORADATA/u01/* /u01/home/dba01/ORADATA/u01/ctrl01.bak /u01/home/dba01/ORADATA/u01/querydata01.dbf /u01/home/dba01/ORADATA/u01/ctrl01.ctl /u01/home/dba01/ORADATA/u01/system01.dbf v$tablespace; INC YES YES YES YES YES YES YES YES YES YES

------- ------------- ---

Oracle9i Database Administration I C-39

Exercice 8 (suite) 6 Affectez la valeur $HOME/ORADATA/u05 au paramtre DB_CREATE_FILE_DEST uniquement dans la mmoire. Crez un tablespace DATA03 de 5 Mo. Ne dfinissez pas d'emplacement de fichier. Vrifiez la cration du fichier de donnes.
SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST='$HOME/ORADATA/u05 SCOPE=MEMORY; System altered. SQL> CREATE TABLESPACE data03 2 DATAFILE SIZE 5M; Tablespace created. SQL> SELECT * 2 FROM v$tablespace; TS# NAME INC ------- ------------- --0 SYSTEM YES 1 UNDOTBS YES 3 USERS YES 4 INDX YES 5 SAMPLE YES 2 TEMP YES 6 QUERY_DATA YES 7 DATA01 YES 8 DATA02 YES 9 INDEX01 YES 11 DATA03 YES 11 rows selected. SQL> !ls $HOME/ORADATA/u05 ora_data03_xg17n9nd.dbf

Oracle9i Database Administration I C-40

Exercice 9 1 Connectez-vous sous l'ID utilisateur SYSTEM, puis excutez le script lab09_01.sql pour crer des tables et des index.
SQL> @$HOME/STUDENT/LABS/lab09_01.sql

2 Identifiez les diffrents types de segment de la base de donnes.


SQL> SELECT DISTINCT segment_type 2 FROM dba_segments; SEGMENT_TYPE -----------------CACHE CLUSTER INDEX INDEX PARTITION LOBINDEX LOBSEGMENT NESTED TABLE ROLLBACK TABLE TABLE PARTITION TYPE2 UNDO 11 rows selected.

Oracle9i Database Administration I C-41

Exercice 9 (suite) 3 Ecrivez une interrogation permettant de vrifier les segments associs une valeur infrieure de cinq extents au nombre maximal d'extents. Ne tenez pas compte du segment de bootstrap. Cette interrogation est utile pour identifier les segments susceptibles de gnrer des erreurs lors de futurs chargements de donnes.
SQL> COLUMN segment_name FORMAT a20 SQL> COLUMN segment_type FORMAT a15 SQL> SELECT segment_name,segment_type, 2 3 4 5 FROM WHERE AND max_extents, extents dba_segments extents+5 > max_extents segment_type<>'CACHE'; SEGMENT_TYPE MAX_EXTENTS

SEGMENT_NAME EXTENTS

-------------------- --------------- ----------- --------EMP 8 TABLE 10

4 Quels fichiers disposent d'un espace allou pour la table EMP ?

SQL> SELECT DISTINCT f.file_name 2 3 4 FROM WHERE AND dba_extents e,dba_data_files f e.segment_name='EMP' e.file_id=f.file_id;

FILE_NAME ------------------------------------/u01/home/dba01/ORADATA/u04/data01.dbf

Oracle9i Database Administration I C-42

Exercice 9 (suite) 5 Excutez le script lab09_05.sql.


SQL> @$HOME/STUDENT/LABS/lab09_05.sql

6 Rpertoriez l'espace libre disponible par tablespace. L'interrogation doit afficher le nombre de fragments, l'espace libre total et le plus grand extent libre de chaque tablespace.
SQL> CONNECT / AS SYSDBA Connected. SQL> SELECT tablespace_name,COUNT(*) AS fragments, 2 3 4 5 SUM(bytes) AS total, MAX(bytes) AS largest FROM dba_free_space FRAGMENTS 3 1 1 1 1 1 1 1 15 1 TOTAL -----147456 1433600 5177344 2555904 5120000 917504 983040 4943872 24903680 5177344 LARGEST --------126976 1433600 5177344 2555904 5120000 917504 983040 4943872 6750208 5177344 GROUP BY tablespace_name;

TABLESPACE_NAME DATA01 DATA02 DATA03 SAMPLE INDX INDEX01 QUERY_DATA SYSTEM UNDOTBS USERS 10 rows selected.

----------------------- ----------

Oracle9i Database Administration I C-43

Exercice 9 (suite) 7 Rpertoriez les segments qui gnreront des erreurs lors de la tentative d'allocation d'un extent supplmentaire, en raison d'un espace insuffisant.
SQL> SELECT s.segment_name, s.segment_type, s.tablespace_name, 2 3 4 5 6 7 8 s.next_extent FROM WHERE dba_segments s NOT EXISTS

( SELECT 1 FROM dba_free_space f WHERE s.tablespace_name=f.tablespace_name HAVING max(f.bytes) > s.next_extent ) ;

SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME NEXT_EXTENT ------------ ------------ --------------- ----------BIG_EMP TABLE DATA01 1048576

Oracle9i Database Administration I C-44

Exercice 10 1 Connectez-vous en tant que SYSTEM/MANAGER et rpertoriez les segments d'annulation du tablespace UNDOTBS.
SQL> CONNECT SYSTEM/MANAGER Connected. SQL> SELECT segment_name 2 3 FROM WHERE dba_rollback_segs tablespace_name = 'UNDOTBS';

SEGMENT_NAME -------------------_SYSSMU1$ _SYSSMU2$ _SYSSMU3$ _SYSSMU4$ _SYSSMU5$ _SYSSMU6$ _SYSSMU7$ _SYSSMU8$ 8 rows selected.

Oracle9i Database Administration I C-45

Exercice 10 2 Crez le tablespace d'annulation UNDO2 d'une taille de 15 Mo et placez-le dans le rpertoire $HOME/oradata/u03. Rpertoriez les segments d'annulation du tablespace UNDO2.
SQL> CREATE UNDO TABLESPACE undo2 2 DATAFILE '$HOME/ORADATA/u03/undo2.dbf' size 15M; Tablespace created. SQL> SELECT segment_name 2 3 FROM WHERE dba_rollback_segs tablespace_name = 'UNDO2';

SEGMENT_NAME -------------------_SYSSMU9$ _SYSSMU10$ _SYSSMU11$ _SYSSMU12$ _SYSSMU13$ _SYSSMU14$ _SYSSMU15$ _SYSSMU16$ 8 rows selected.

Oracle9i Database Administration I C-46

Exercice 10 (suite) 3 Dans une nouvelle session Telnet, dmarrez SQL*Plus et connectez-vous sous l'ID utilisateur HR. Excutez le script lab10_03.sql pour insrer une ligne dans la table DEPARTMENTS. Vous ne devez ni valider, ni annuler, ni quitter la session.
SQL> @$HOME/STUDENT/LABS/lab10_03.sql SQL> CONNECT hr/hr Connected. SQL> INSERT INTO departments 2 (department_id,department_name) 3 VALUES (9999,'x'); 1 row created.

Dans la session que vous avez ouverte sous l'ID SYS, passez dutablespace d'annulation UNDOTBS UNDO2 l'aide de la commande ALTER SYSTEM.

SQL> ALTER SYSTEM SET undo_tablespace='UNDO2' SCOPE=BOTH; System altered.

Sous l'ID utilisateur SYS, supprimez le tablespace UNDOTBS. Que se passe-t-il ?

SQL> DROP TABLESPACE undotbs 2 * ERROR at line 1: ORA-30013: undo tablespace 'UNDOTBS' is currently in use INCLUDING CONTENTS AND DATAFILES; DROP TABLESPACE undotbs INCLUDING CONTENTS AND DATAFILES

Oracle9i Database Administration I C-47

Exercice 10 (suite) 6 Rpertoriez les segments d'annulation du tablespace UNDOTBS et leur statut. Comparez cette liste celle tablie l'tape 1.
SQL> SELECT segment_name 2 3 FROM WHERE dba_rollback_segs tablespace_name = 'UNDOTBS';

SEGMENT_NAME -------------------_SYSSMU1$ _SYSSMU2$ _SYSSMU3$ _SYSSMU4$ _SYSSMU5$ _SYSSMU6$ _SYSSMU7$ _SYSSMU8$ 8 rows selected. SQL> SELECT a.usn,a.name,b.status 2 3 5 6 7 FROM v$rollname a, v$rollstat b WHERE a.name FROM WHERE dba_segments tablespace_name = 'UNDOTBS )

4 IN ( SELECT segment_name

AND a.usn = b.usn; STATUS PENDING OFFLINE

USN NAME 2 _SYSSMU2$

----- ------------ ---------------

Oracle9i Database Administration I C-48

Exercice 10 (suite) 7 Dans la session que vous avez ouverte sous l'ID utilisateur HR, annulez la transaction et quittez cette session.
SQL> ROLLBACK; Rollback complete. SQL> EXIT;

8 Dans la session que vous avez ouverte sous l'ID utilisateur SYS, supprimez le tablespace UNDOTBS. Que se passe-t-il ?
SQL> DROP TABLESPACE undotbs; DROP TABLESPACE undotbs * ERROR at line 1: ORA-30013: undo tablespace 'UNDOTBS' is currently in use

9 Sous l'ID utilisateur SYS, excutez la commande suivante :


ALTER SYSTEM SET undo_retention=0 SCOPE=memory;

A prsent, supprimez le tablespace UNDOTBS. Que se passe-t-il ? Remarque : La suppression du tablespace peut prendre du temps.

SQL> ALTER SYSTEM SET undo_retention=0 SCOPE=MEMORY; System altered. SQL> DROP TABLESPACE undotbs 2 INCLUDING CONTENTS AND DATAFILES; Tablespace dropped.

Oracle9i Database Administration I C-49

Exercice 11 1 En tant qu'utilisateur SYSTEM, crez les tables et les colonnes suivantes pour l'application de gestion des commandes que vous implmentez. Remarque : Si vous utilisez OEM, veillez affecter des valeurs NULL la colonne DATE_OF_DELY. Table
CUSTOMERS

Column
CUST_CODE NAME REGION

Data Type and Size


VARCHAR2(3) VARCHAR2(50) VARCHAR2(5) NUMBER(3) DATE VARCHAR2(3) DATE

ORDERS

ORD_ID ORD_DATE CUST_CODE DATE_OF_DELY

Vous savez que des lignes seront insres dans la table ORDERS sans valeur pour DATE_OF_DELY et que la table sera mise jour une fois la commande effectue. Utilisez le tablespace USERS et conservez, si vous le souhaitez, les paramtres de stockage par dfaut.

SQL> CONNECT system/manager Connected. SQL> CREATE TABLE customers 2 3 4 5 ( cust_code VARCHAR2(3), name VARCHAR2(50), region VARCHAR2(5) ) TABLESPACE users;

Table created. SQL> CREATE TABLE orders 2 2 3 4 5 ( ord_id NUMBER(3), ord_date DATE, cust_code VARCHAR2(3), date_of_dely DATE ) TABLESPACE users;

Table created.

Oracle9i Database Administration I C-50

Exercice 11 (suite) 2 Excutez le script lab11_02.sql pour insrer des lignes dans les tables.
SQL> @$HOME/STUDENT/LABS/lab11_02.sql

3 Identifiez les fichiers et les blocs qui contiennent les lignes destines la table ORDERS. Indice : Interrogez la vue DBA_EXTENTS du dictionnaire de donnes.
SQL> SELECT file_id, block_id, blocks 2 3 4 5 FROM WHERE AND AND FILE_ID 3 dba_extents owner = 'SYSTEM' segment_name = 'ORDERS' segment_type = 'TABLE'; BLOCK_ID 25 BLOCKS 8

---------- ---------- ----------

4 Vrifiez le nombre d'extents utiliss par la table ORDERS.

SQL> SELECT count(*) 2 3 4 FROM WHERE AND dba_extents segment_name='ORDERS' owner='SYSTEM';

COUNT(*) ---------1

Oracle9i Database Administration I C-51

Exercice 11 (suite) 5 Allouez manuellement la table ORDERS un extent possdant la taille par dfaut, puis vrifiez que l'opration a abouti.
SQL> ALTER TABLE orders ALLOCATE EXTENT; Table altered. SQL> SELECT count(*) 2 3 4 FROM WHERE AND dba_extents segment_name='ORDERS' owner='SYSTEM';

COUNT(*) ---------2

6 Crez une autre table, ORDERS2, partir de la table ORDERS, mais avec le paramtre MINEXTENTS=10. Vrifiez que la table a bien t cre avec le nombre d'extents indiqu.
SQL> CREATE TABLE orders2 2 3 4 TABLESPACE users STORAGE(MINEXTENTS 10) AS SELECT * FROM orders;

Table created. SQL> SELECT count(*) 2 3 4 FROM WHERE AND dba_extents segment_name='ORDERS2' owner='SYSTEM';

COUNT(*) ---------10

Oracle9i Database Administration I C-52

Exercice 11 (suite) 7 Videz la table ORDERS sans librer d'espace, puis contrlez le nombre d'extents afin de vrifier qu'ils n'ont pas t librs.
SQL> TRUNCATE TABLE orders REUSE STORAGE; Table truncated. SQL> SELECT count(*) 2 3 4 FROM WHERE AND dba_extents segment_name='ORDERS' owner='SYSTEM';

COUNT(*) ---------2

elle

8 Videz la table ORDERS2 en librant de l'espace. Combien d'extents la table comporte-t prsent ?
SQL> TRUNCATE TABLE orders2; Table truncated. SQL> SELECT count(*) 2 3 4 FROM WHERE AND dba_extents segment_name='ORDERS2' owner='SYSTEM';

COUNT(*) ---------10

9 Excutez le script lab11_09.sql pour insrer des lignes dans la table ORDERS2.

SQL> @$HOME/STUDENT/LABS/lab11_09.sql

Oracle9i Database Administration I C-53

Exercice 11 (suite) 10 Affichez les colonnes de la table ORDERS2. Marquez la colonne DATE_OF_DELY comme UNUSED. Affichez nouveau les colonnes de cette table. Que se passe-t-il ?
SQL> DESCRIBE orders2; Name ORD_ID ORD_DATE CUST_CODE DATE_OF_DELY SQL> ALTER TABLE orders2 2 3 SET UNUSED COLUMN date_of_dely CASCADE CONSTRAINTS; Null? Type NUMBER(3) DATE VARCHAR2(3) DATE -------------------------- -------- ------------------

Table altered. SQL> DESCRIBE orders2; Name ORD_ID ORD_DATE CUST_CODE Null? NUMBER(3) DATE VARCHAR2(3) Type -------------------------- -------- ------------------

11 Supprimez la colonne non utilise DATE_OF_DELY.

SQL> ALTER TABLE orders2 2 DROP UNUSED COLUMNS; Table altered.

12 Supprimez la table ORDERS2.

SQL> DROP TABLE orders2; Table dropped.

Oracle9i Database Administration I C-54

Exercice 12 1 Vous envisagez de crer des index sur les colonnes NAME et REGION de la table CUSTOMERS. Quels sont les types d'index appropris pour ces deux colonnes ? Crez ces index (nommez-les respectivement CUST_NAME_IDX et CUST_REGION_IDX), puis placez-les dans le tablespace INDX01). Indice : dans le Les index B-Tree sont adapts aux colonnes qui contiennent de nombreuses valeurs distinctes tandis que les index bitmap conviennent plutt aux colonnes qui contiennent peu de valeurs distinctes. La table CUSTOMERS se trouve schma SYSTEM.

SQL> CONNECT system/manager Connected. SQL> CREATE INDEX cust_name_idx 2 3 ON customers(name) TABLESPACE index01;

Index created. SQL> CREATE BITMAP INDEX cust_region_idx 2 3 ON system.customers(region) TABLESPACE index01;

Index created.

2 Transfrez l'index CUST_REGION_IDX vers un autre tablespace. Indice : Vous pouvez reconstruire l'index en indiquant un autre tablespace.

SQL> ALTER INDEX cust_region_idx REBUILD 2 TABLESPACE indx; Index altered.

Oracle9i Database Administration I C-55

Exercice 12 3 Notez les fichiers et les blocs utiliss par les extents dans l'index CUST_REGION_IDX. Indice : Accdez ces informations par la vue DBA_EXTENTS.
SQL> SELECT file_id, block_id, blocks 2 3 4 FROM WHERE AND FILE_ID 4 dba_extents segment_name='CUST_REGION_IDX' owner='SYSTEM'; BLOCK_ID 17 BLOCKS 125

---------- ---------- ----------

4 Recrez l'index CUST_REGION_IDX sans le supprimer au pralable et conservez-le dans le mme tablespace. Le nouvel index rutilise-t-il les mmes blocs qu'auparavant ? Indice : Reconstruisez l'index. effet, l'index Remarque : Le nouvel index ne rutilise pas le mme espace aprs reconstruction. En le serveur Oracle construit un index temporaire, supprime l'ancien, puis renomme temporaire.

SQL> ALTER INDEX cust_region_idx REBUILD; Index altered. SQL> SELECT file_id, block_id, blocks 2 3 4 FROM WHERE AND FILE_ID 4 dba_extents segment_name='CUST_REGION_IDX' owner='SYSTEM'; BLOCK_ID 142 BLOCKS 125

---------- ---------- ----------

Oracle9i Database Administration I C-56

Exercice 12 (suite) 5 a Sous l'ID utilisateur SYSTEM, excutez le script lab12_05a.sql pour crer la table NUMBERS et l'alimenter.
SQL> @$HOME/STUDENT/LABS/lab12_05a.sql

les

b Interrogez la table NUMBERS pour dterminer le nombre de valeurs distinctes dans deux colonnes de la table.
SQL> SELECT count(DISTINCT no) NO, 2 3 count(DISTINCT odd_even) OE FROM NO 10000 numbers; OE 2

---------- ----------

c En utilisant des tailles d'extent uniformes de 4 Ko, crez les index B-Tree NUMB_OE_IDX et NUMB_NO_IDX, respectivement sur les colonnes ODD_EVEN et NO de la table NUMBERS. Placez ces index dans le tablespace INDEX01. Vrifiez la taille totale des index et crivez ci-dessous le nombre de blocs. Indice : Utilisez une valeur PCTINCREASE gale zro pour crer des extents de taille identique. Vrifiez dans DBA_SEGMENTS le nombre total de blocs allous aux extents.

Index
NUMB_OE_IDX NUMB_NO_IDX

Column
ODD_EVEN NO

Blocks

Oracle9i Database Administration I C-57

Exercice 12 (suite) 5 c (suite)


SQL> CREATE INDEX numb_oe_idx 2 3 ON numbers(odd_even) TABLESPACE index01;

Index created. SQL> CREATE INDEX numb_no_idx 2 3 ON numbers(no) TABLESPACE index01;

Index created. SQL> COLUMN segment_name FORMAT a15 SQL> SELECT segment_name, blocks 2 3 4 FROM WHERE AND dba_segments segment_name LIKE 'NUMB%' segment_type='INDEX'; BLOCKS 40 46

SEGMENT_NAME NUMB_OE_IDX NUMB_NO_IDX

--------------- ----------

Oracle9i Database Administration I C-58

Exercice 12 (suite) 5 d Aprs avoir enregistr les blocs ci-dessus, vous devez supprimer les index NUMB_OE_IDX et NUMB_NO_IDX. En utilisant des tailles d'extent uniformes de 4 Ko, crez les index bitmap NUMB_OE_IDX et NUMB_NO_IDX, respectivement sur les colonnes ODD_EVEN et NO de la table NUMBERS. Placez ces index dans le tablespace INDEX01. Rexcutez l'interrogation dans DBA_SEGMENTS pour vrifier le nombre total de blocs allous aux extents. Vrifiez la taille totale des index et crivez ci-dessous le nombre de blocs. Index
NUMB_OE_IDX NUMB_NO_IDX

Column
ODD_EVEN NO

Blocks

SQL> DROP INDEX numb_oe_idx; Index dropped. SQL> DROP INDEX numb_no_idx; Index dropped. SQL> CREATE BITMAP INDEX numb_oe_idx 2 3 ON numbers(odd_even) TABLESPACE index01;

Index created. SQL> CREATE BITMAP INDEX numb_no_idx 2 3 ON numbers(no) TABLESPACE index01;

Index created. SQL> SELECT segment_name, blocks 2 3 4 FROM WHERE AND dba_segments segment_name LIKE 'NUMB%' segment_type='INDEX'; BLOCKS 2 72

SEGMENT_NAME NUMB_OE_IDX NUMB_NO_IDX

--------------- ----------

Que pouvez-vous conclure de la relation entre la cardinalit et la taille des deux index ? Rponse : Les rsultats rvlent que les index bitmap et B-tree sont compacts, respectivement pour une colonne de faible cardinalit et pour une colonne de forte cardinalit.

Oracle9i Database Administration I C-59

Exercice 13 1 Consultez le script lab13_01.sql. Excutez-le pour crer les contraintes


SQL> @$HOME/STUDENT/LABS/lab13_01.sql

2 Interrogez le dictionnaire de donnes pour effectuer les oprations suivantes : a Vrifiez la prsence de contraintes et dterminer leur statut et si elles peuvent tre diffres. Indice : Utilisez la vue DBA_CONSTRAINTS pour obtenir ces informations.

SQL> COLUMN constraint_name FORMAT a25 SQL> COLUMN table_name SQL> COLUMN deferrable SQL> COLUMN status 2 3 4 5 6 FORMAT a10 FORMAT a15 FORMAT a10 SQL> COLUMN constraint_type FORMAT a1

SQL> SELECT constraint_name, table_name, constraint_type, deferrable, status FROM WHERE dba_constraints table_name IN

('PRODUCTS','ORDERS','CUSTOMERS') AND owner='SYSTEM'; TABLE_NAME C DEFERRABLE

CONSTRAINT_NAME STATUS

------------------------- ---------- - --------------- ------CUSTOMERS_REGION_CK ENABLED CUSTOMERS_CUST_CODE_PK ENABLED ORDERS_CUST_CODE_FK ENABLED ORDERS_DATE_OF_DELY_CK ENABLED ORDERS_ORD_ID_PK ENABLED PRODUCTS_PROD_CODE_UK DISABLED 6 rows selected. CUSTOMERS CUSTOMERS ORDERS ORDERS ORDERS PRODUCTS C NOT DEFERRABLE P DEFERRABLE R DEFERRABLE C NOT DEFERRABLE P NOT DEFERRABLE U DEFERRABLE

Oracle9i Database Administration I C-60

Exercice 13 (suite) 2 b Vrifiez le nom et le type des index crs pour valider les contraintes. Indice : Les index ne sont crs que pour les contraintes de cl primaire et de cl unique. Ils portent le mme nom que ces contraintes.

SQL> SELECT index_name,table_name,uniqueness 2 3 4 5 6 7 8 9 10 AND AND ) ; TABLE_NAME UNIQUENES CUSTOMERS ORDERS NONUNIQUE UNIQUE owner='SYSTEM' constraint_type in ('P','U') FROM WHERE dba_indexes index_name in dba_constraints table_name IN ('PRODUCTS', 'ORDERS', 'CUSTOMERS')

( SELECT constraint_name FROM WHERE

INDEX_NAME CUSTOMERS_CUST_CODE_PK ORDERS_ORD_ID_PK

------------------------------ ---------- ---------

3 Sous l'ID utilisateur SYSTEM, excutez le script lab13_03.sql afin d'insrer deux enregistrements dans la table PRODUCTS.

SQL> @$HOME/STUDENT/LABS/lab13_03.sql

Oracle9i Database Administration I C-61

Exercice 13 (suite) 4 Activez la contrainte UNIQUE dans la table PRODUCT. L'opration a-t-elle abouti ?
SQL> ALTER TABLE system.products 2 * ERROR at line 1: ORA-02299: cannot validate (SYSTEM.PRODUCTS_PROD_CODE_UK) - duplicate keys found ENABLE CONSTRAINT products_prod_code_uk; ALTER TABLE system.products

5 a Assurez-vous que les nouvelles lignes ajoutes la table ne violent pas la contrainte portant sur la table PRODUCT.
Indice : Pour ce faire, activez la contrainte NOVALIDATE.

SQL> ALTER TABLE system.products 2 ENABLE NOVALIDATE CONSTRAINT products_prod_code_uk; Table altered.

b Interrogez le dictionnaire de donnes afin de vrifier l'impact de cette modification.

SQL> SELECT constraint_name, table_name, 2 3 4 5 constraint_type, validated, status FROM WHERE AND dba_constraints table_name = 'PRODUCTS' owner='SYSTEM'; TABLE_NAME C VALIDATED ---------- - ------------- ----PRODUCTS U NOT VALIDATED

CONSTRAINT_NAME STATUS ---------------------PRODUCTS_PROD_CODE_UK ENABLED

Oracle9i Database Administration I C-62

Exercice 13 (suite) 5 c Pour vrifier que la contrainte rejette les insertions en infraction, ajoutez une ligne contenant les valeurs suivantes :
PRODUCT_I D PRODUCT_DESCRIPTION LIST_PRICE

4000

Monitor

3000

SQL> INSERT INTO system.products 2 * ERROR at line 1: ORA-00001: unique constraint (SYSTEM.PRODUCTS_PROD_CODE_UK) violated VALUES(4000,'Monitor',3000); INSERT INTO system.products

6 Effectuez les oprations requises pour identifier les cas de violation de contrainte dtects dans la table PRODUCTS, modifiez les codes produit (PRODUCT_ID) en consquence, puis assurez-vous que toutes les donnes, nouvelles ou existantes, sont conformes la contrainte (considrez que la table comporte plusieurs milliers de lignes et qu'il est bien trop long de vrifier chacune d'elles manuellement). Indice : Procdez comme suit : a Crez la table EXCEPTIONS.

SQL> CONNECT system/manager Connected. SQL> @?/rdbms/admin/utlexcpt

b Excutez la commande pour activer la contrainte et intercepter les exceptions.

SQL> ALTER TABLE system.products 2 3 * ERROR at line 1: ORA-02299: cannot validate (SYSTEM.PRODUCTS_PROD_CODE_UK) - duplicate keys found ENABLE CONSTRAINT products_prod_code_uk EXCEPTIONS INTO system.exceptions;

ALTER TABLE system.products

Oracle9i Database Administration I C-63

Exercice 13 (suite) 6 c Utilisez les ROWID dans la table EXCEPTIONS pour afficher les lignes de la table PRODUCTS qui violent la contrainte (ne demandez pas l'affichage des colonnes LOB).
SQL> SELECT rowid, prod_code, description 2 3 4 5 6 ROWID FROM WHERE system.products rowid IN exceptions table_name='PRODUCTS ) ; PROD_CODE DESCRIPTION

( SELECT row_id FROM WHERE

------------------ ---------- ----------------------------AAABSgAAIAAAAASAAA AAABSgAAIAAAAASAAB 4000 UNIX Monitor 4000 NT Monitor

d Corrigez les erreurs.


SQL> UPDATE 2 3 4 5 1 row updated. SET WHERE system.products prod_code='4001' rowid = ( SELECT max(row_id) FROM WHERE exceptions table_name='PRODUCTS ) ;

e Activez la contrainte.

SQL> ALTER TABLE system.products 2 3 ENABLE CONSTRAINT products_prod_code_uk EXCEPTIONS INTO system.exceptions;

Table altered.

Oracle9i Database Administration I C-64

Exercice 13 (suite) 7 Excutez le script lab13_07.sql pour insrer des lignes dans la table. Les insertions ontelles russi ? Annulez les modifications.
SQL> @$HOME/STUDENT/LABS/lab13_07.sql SQL> INSERT INTO system.orders 2 * ERROR at line 1: ORA-02291: integrity constraint (SYSTEM.ORDERS_CUST_CODE_FK) violated - parent key not found SQL> INSERT INTO system.customers 2 VALUES ('J01','Sports Store', 'East'); 1 row created. SQL> ROLLBACK; Rollback complete. VALUES (800,'01-JAN-98','J01',NULL); INSERT INTO system.orders

Oracle9i Database Administration I C-65

Exercice 13 (suite) 8 A prsent, consultez le script lab13_08. Ce script effectue galement les insertions dans le mme ordre. Excutez le script, puis vrifiez que son excution se droule correctement.
SQL> @$HOME/STUDENT/LABS/lab13_08.sql SQL> ALTER SESSION SET CONSTRAINTS=deferred; Session altered. SQL> INSERT INTO system.orders 2 VALUES (800,'01-JAN-98','J01',NULL); 1 row created. SQL> INSERT INTO system.customers 2 VALUES ('J01','Sports Store', 'East'); 1 row created. SQL> COMMIT; Commit complete.

9 Videz la table CUSTOMERS. L'opration a-t-elle abouti ?


SQL> TRUNCATE TABLE system.customers; TRUNCATE TABLE system.customers * ERROR at line 1: ORA-02266: unique/primary keys in table referenced by enabled foreign keys

Oracle9i Database Administration I C-66

Exercice 14 1 Excutez le script lab14_01.sql pour crer l'utilisateur Jeff, puis le script @$ORACLE_HOME/rdbms/admin/utlpwdmg.sql pour activer la gestion des mots de passe.
SQL> @$HOME/STUDENT/LABS/lab14_01.sql SQL> @$ORACLE_HOME/rdbms/admin/utlpwdmg.sql

2 Tentez de remplacer le mot de passe de l'utilisateur Jeff par Jeff. Que se passe-t-il ?

SQL> ALTER USER jeff IDENTIFIED BY jeff; ALTER USER jeff IDENTIFIED BY jeff * ERROR at line 1: ORA-28003: password verification for the specified password failed ORA-20001: Password same as or similar to user

des

3 Essayez de remplacer le mot de passe de Jeff pour qu'il respecte le format de gestion mots de passe. Indice : Le mot de passe doit contenir au moins un chiffre, un caractre et un signe de ponctuation.

SQL> ALTER USER jeff 2 IDENTIFIED BY super1$; User altered.

Oracle9i Database Administration I C-67

Exercice 14 (suite) 4 Modifiez le profil DEFAULT pour que les paramtres suivants s'appliquent aux utilisateurs possdant ce profil : le compte doit tre verrouill aprs deux tentatives de connexion, le mot de passe doit expirer aprs un dlai de 30 jours, le mme mot de passe ne doit pas tre rutilis pendant au moins une minute,

- le compte doit bnficier d'une priode de grce de cinq jours pour la modification d'un mot de passe qui a expir. Assurez-vous que ces exigences sont satisfaites. Indices Modifiez les limites du profil par dfaut l'aide de la commande ALTER PROFILE. Interrogez la vue DBA_PROFILES du dictionnaire de donnes pour vrifier les rsultats.
SQL> ALTER PROFILE default LIMIT 2 3 4 5 FAILED_LOGIN_ATTEMPTS 2 PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_TIME 1/1440 PASSWORD_GRACE_TIME 5;

Profile altered. SQL> SELECT resource_name, limit 2 3 4 FROM WHERE AND dba_profiles profile='DEFAULT' resource_type='PASSWORD'; LIMIT 2 30 .0006 UNLIMITED VERIFY_FUNCTION .0006 5

RESOURCE_NAME FAILED_LOGIN_ATTEMPTS PASSWORD_LIFE_TIME PASSWORD_REUSE_TIME PASSWORD_REUSE_MAX PASSWORD_VERIFY_FUNCTION PASSWORD_LOCK_TIME PASSWORD_GRACE_TIME 7 rows selected.

----------------------------- -------------------

Oracle9i Database Administration I C-68

Exercice 14 (suite) 5 Connectez-vous sous l'ID de l'utilisateur Jeff en entrant un mot de passe non valide. Aprs deux tentatives, connectez-vous avec le mot de passe correct. Que se passe-t-il ?
SQL> CONNECT jeff/superman ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE. SQL> CONNECT jeff/super ERROR: ORA-01017: invalid username/password; logon denied SQL> CONNECT jeff/super1$ ERROR: ORA-28000: the account is locked

Oracle9i Database Administration I C-69

Exercice 14 (suite) 6 Utilisez la vue DBA_USERS du dictionnaire de donnes pour vrifier que l'utilisateur Jeff est verrouill. Dverrouillez le compte utilisateur Jeff. Connectez-vous ensuite sous l'ID Jeff. Indice : Dverrouillez le compte l'aide de la commande ALTER USER.
SQL> CONNECT / AS SYSDBA Connected. SQL> SELECT username, account_status 2 FROM dba_users; USERNAME ACCOUNT_STATUS --------------- --------------SYS OPEN SYSTEM OPEN OUTLN OPEN ORDSYS OPEN MDSYS OPEN OE OPEN HR OPEN ORDPLUGINS OPEN DBSNMP OPEN JEFF LOCKED(TIMED) 10 rows selected. SQL> ALTER USER jeff 2 ACCOUNT UNLOCK; User altered. SQL> CONNECT jeff/super1$ Connected.

Oracle9i Database Administration I C-70

Exercice 14 (suite) 7 Dsactivez les vrifications de mots de passe pour le profil DEFAULT. Indice : Utilisez la commande ALTER PROFILE.
SQL> ALTER PROFILE default LIMIT 2 3 4 5 6 7 8 FAILED_LOGIN_ATTEMPTS PASSWORD_LIFE_TIME PASSWORD_REUSE_TIME PASSWORD_REUSE_MAX PASSWORD_VERIFY_FUNCTION PASSWORD_LOCK_TIME PASSWORD_GRACE_TIME UNLIMITED UNLIMITED UNLIMITED UNLIMITED NULL UNLIMITED UNLIMITED;

Profile altered.

8 Connectez-vous sous l'ID Jeff en entrant un mot de passe non valide. Aprs deux tentatives, connectez-vous avec le mot de passe correct. Que se passe-t-il ? Pourquoi ?

SQL> CONNECT jeff/superman ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected to ORACLE. SQL> CONNECT jeff/super ERROR: ORA-01017: invalid username/password; logon denied SQL> CONNECT jeff/super1$ Connected.

Rponse : Le compte ne se verrouille pas si vous vous connectez avec le mot de passe correct la troisime tentative (voir tape 5). En effet, lorsque vous avez affect la valeur NULL la fonction PASSWORD_VERIFY_FUNCTION, celle-ci a t dsactive l'tape 7.

Oracle9i Database Administration I C-71

Exercice 15 1 Crez l'utilisateur Bob associ au mot de passe CRUSADER. Assurez-vous que les objets et les segments temporaires crs par Bob ne sont pas ajouts au tablespace SYSTEM. Vrifiez galement que Bob peut se connecter et crer dans les tablespaces USERS et INDX des objets dont la taille peut atteindre un mgaoctet. Utilisez le script lab15_01.sql pour accorder Bob le droit de crer des sessions. Indice : Affectez Bob le tablespace par dfaut USERS et le tablespace temporaire TEMP.
SQL> CONNECT system/manager Connected. SQL> CREATE USER bob 2 3 4 5 6 IDENTIFIED BY crusader DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE temp QUOTA 1M ON USERS QUOTA 1M ON INDX;

User created. SQL> @$HOME/STUDENT/LABS/lab15_01.sql SQL> GRANT CREATE SESSION TO bob; Grant succeeded.

Oracle9i Database Administration I C-72

Exercice 15 2 Crez l'utilisateur Emi associ au mot de passe Mary. Assurez-vous que les objets et les segments de tri crs par Emi ne sont pas ajouts au tablespace SYSTEM.
SQL> CREATE USER emi 2 3 4 IDENTIFIED BY mary DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;

User created.

3 Affichez les informations sur Bob et Emi partir du dictionnaire de donnes. Indice : Vous pouvez interroger la vue DBA_USERS.

SQL> SELECT username, default_tablespace, 2 3 4 temporary_tablespace FROM WHERE dba_users username IN ('BOB', 'EMI'); DEFAULT_TABLESPACE USERS USERS TEMPORARY_TABLE TEMP TEMP

USERNAME EMI BOB

---------- -------------------- ---------------

Oracle9i Database Administration I C-73

Exercice 15 (suite) 4 A partir du dictionnaire de donnes, affichez les informations sur la quantit d'espace que Bob peut utiliser dans les tablespaces. Indice : Vous pouvez interroger la vue DBA_TS_QUOTAS.
SQL> COLUMN tablespace_name FORMAT a15 SQL> COLUMN user SQL> SELECT * 2 3 FROM dba_ts_quotas MAX_BYTES BLOCKS WHERE username = 'BOB'; FORMAT a10

TABLESPACE_NAME USERNAME BYTES MAX_BLOCKS

--------------- -------- ----- ---------- ------ --------INDX 256 USERS BOB BOB 0 0 1048576 1048576 0 0

5 a 256 Sous l'ID utilisateur Bob, modifiez le tablespace temporaire de Bob. Que se passe-til ?
SQL> connect bob/crusader Connected. SQL> ALTER USER bob 2 * ERROR at line 1: ORA-01031: insufficient privileges TEMPORARY TABLESPACE users; ALTER USER bob

Oracle9i Database Administration I C-74

Exercice 15 (suite) 5 b Sous l'ID utilisateur Bob, remplacez le mot de passe de Bob par Sam.
SQL> CONNECT bob/crusader Connected. SQL> ALTER USER bob 2 IDENTIFIED BY sam; User altered.

6 Sous l'ID utilisateur SYSTEM, supprimez le quota de Bob sur son tablespace par dfaut.
SQL> CONNECT system/manager Connected. SQL> ALTER USER bob QUOTA 0 ON users; User altered.

Oracle9i Database Administration I C-75

Exercice 15 (suite) 7 Supprimez le compte d'Emi de la base de donnes.


SQL> DROP USER emi; User dropped.

de

8 Bob a oubli son mot de passe. Affectez Bob le mot de passe OLINK et demandez-lui le modifier lors de sa prochaine connexion.
SQL> ALTER USER bob 2 3 IDENTIFIED BY olink PASSWORD EXPIRE;

User altered.

Oracle9i Database Administration I C-76

Exercice 16 1 Connectez-vous en tant que SYSTEM, puis crez l'utilisateur Emi et autorisez-le se connecter la base de donnes et crer des objets dans son schma. Affectez-lui le tablespace par dfaut DATA01, le tablespace temporaire TEMP et un quota de tablespace de 1 Mo sur DATA01.
SQL> CONNECT system/manager Connected. SQL> CREATE USER emi 2 3 4 5 IDENTIFIED BY "abcd12" DEFAULT TABLESPACE data01 TEMPORARY TABLESPACE temp QUOTA 1M ON data01;

User created. SQL> GRANT create session, create table TO emi; Grant succeeded.

2 a Excutez le script lab16_02a.sql pour vous connecter en tant qu'Emi et crez les tables CUSTOMERS1 et ORDERS1.

SQL> @$HOME/STUDENT/LABS/lab16_02a.sql; SQL> CONNECT emi/abcd12 Connected. CREATE TABLE customers1 (cust_code VARCHAR2(3), name region TABLESPACE data01; CREATE TABLE orders1 (ord_id ord_date cust_code TABLESPACE data01; NUMBER(3), DATE, VARCHAR2(3), VARCHAR2(50), VARCHAR2(5) )

date_of_dely DATE )

Oracle9i Database Administration I C-77

Exercice 16 (suite) 2 b Connectez-vous en tant que SYSTEM, puis copiez les donnes de SYSTEM.CUSTOMERS vers la table CUSOMTERS d'Emi. Vrifiez que les enregistrements ont bien t insrs.
SQL> CONNECT system/manager Connected. SQL> INSERT INTO emi.customers1 2 3 SELECT * FROM system.customers;

9 rows created. SQL> SELECT * FROM emi.customers1; CUS NAME REGIO --- -------------------------------------------------- ---A01 TKB SPORT SHOP West A02 VOLLYRITE North A03 JUST TENNIS North A04 EVERY MOUNTAIN South A05 SHAPE UP South A06 SHAPE UP West

c Connectez-vous en tant que SYSTEM, puis autorisez Bob slectionner des donnes A08 NORTH WOODS HEALTH AND FITNESS SUPPLY dans la table CUSTOMERS1 d'Emi . Que se passe-t-il ? CENTER
East J01 Sports Store East SQL> CONNECT system/manager 9 rows selected. Connected. SQL> GRANT select ON emi.customers1 TO bob; GRANT select ON emi.customers1 TO bob * ERROR at line 1: ORA-01031: insufficient privileges

A07 WOMENS SPORTS South

Oracle9i Database Administration I C-78

Exercice 16 (suite) 3 Reconnectez-vous en tant qu'Emi, puis autorisez Bob slectionner des donnes dans la table CUSTOMERS1 d'Emi et octroyer ce droit d'autres utilisateurs. En tant qu'utilisateur SYSTEM, consultez les vues du dictionnaire de donnes qui enregistrent ces actions. Indice : Utilisez la vue DBA_TAB_PRIVS.
SQL> CONNECT emi/abcd12 Connected. SQL> GRANT select ON customers1 2 TO bob WITH GRANT OPTION; Grant succeeded. SQL> CONNECT system/manager Connected. SQL> COLUMN grantee SQL> COLUMN owner SQL> COLUMN grantor SQL> COLUMN privilege SQL> COLUMN grantable SQL> COLUMN hierarchy SQL> SELECT * 2 3 FROM WHERE dba_tab_privs grantee='BOB'; PRIVILEGE SELECT GRANT HIERARCHY YES NO FORMAT a8 FORMAT a8 FORMAT a8 FORMAT a10 FORMAT a3 FORMAT a3

SQL> COLUMN table_name FORMAT a10

GRANTEE OWNER TABLE_NAME GRANTOR BOB EMI CUSTOMERS1 EMI

------- ----- ---------- -------- ---------- ----- ---------

Oracle9i Database Administration I C-79

Exercice 16 (suite) 4 Crez l'utilisateur Trevor identifi par le mot de passe diamond1$, puis autorisez-le se connecter la base de donnes.
SQL> CONNECT system/manager Connected. SQL> CREATE USER trevor IDENTIFIED BY diamond1$"; User created. SQL> GRANT create session TO trevor; Grant succeeded.

5 a En tant que Bob, autorisez Trevor accder la table CUSTOMERS1 d'Emi.


oprations aaron$1. Remarque : Le message A password has expired va s'afficher en raison des effectues l'tape 8 de l'exercice 15. Remplacez le mot de passe de Bob par

SQL> CONNECT bob/olink ERROR: ORA-28001: the password has expired Changing password for bob New password: aaron1$ Retype new password: aaron1$ Password changed Connected. SQL> GRANT select ON emi.customers1 TO trevor; Grant succeeded.

Oracle9i Database Administration I C-80

Exercice 16 (suite) 5 b Connectez-vous en tant qu'Emi, puis retirez Bob le privilge de lecture de la table CUSTOMERS1 d'Emi.
SQL> CONNECT emi/abcd12 Connected. SQL> REVOKE select ON customers1 FROM bob; Revoke succeeded.

c Connectez-vous en tant que Trevor, puis interrogez la table CUSTOMERS1 d'Emi. Que se passe-t-il ?
SQL> CONNECT trevor/diamond1$ Connected. SQL> SELECT * 2 FROM emi.customers1; * ERROR at line 2: ORA-00942: table or view does not exist FROM emi.customers1

Oracle9i Database Administration I C-81

Exercice 16 (suite) 6 Autorisez Emi dmarrer et arrter la base de donnes, mais pas en crer une nouvelle.
SQL> CONNECT / AS SYSDBA Connected. SQL> GRANT sysoper TO emi; Grant succeeded.

Oracle9i Database Administration I C-82

Exercice 17 1 Examinez la vue du dictionnaire de donnes et rpertoriez les privilges systme du rle RESOURCE.
SQL> CONNECT system/manager Connected. SQL> COLUMN privilege FORMAT a20 SQL> COLUMN grantee SQL> SELECT 2 3 FROM WHERE * dba_sys_privs grantee = 'RESOURCE'; PRIVILEGE CREATE CLUSTER CREATE INDEXTYPE CREATE OPERATOR CREATE PROCEDURE CREATE SEQUENCE CREATE TABLE CREATE TRIGGER CREATE TYPE ADM NO NO NO NO NO NO NO NO FORMAT a10

GRANTEE RESOURCE RESOURCE RESOURCE RESOURCE RESOURCE RESOURCE RESOURCE RESOURCE

---------- -------------------- ---

8 rows selected.

Oracle9i Database Administration I C-83

Exercice 17 2 Crez le rle DEV qui permettra un utilisateur de crer une table ou une vue et de slectionner des donnes dans la table CUSTOMERS1 d'Emi.
SQL> CREATE ROLE dev; Role created. SQL> GRANT create table, create view TO dev; Grant succeeded. SQL> CONNECT emi/abcd12 Connected. SQL> GRANT select ON customers1 TO dev; Grant succeeded.

Oracle9i Database Administration I C-84

Exercice 17 (suite) 3 a Affectez les rles RESOURCE et DEV Bob, en prcisant que seul le rle RESOURCE doit tre automatiquement activ la connexion.
SQL> CONNECT system/manager Connected. SQL> GRANT dev, resource TO bob; Grant succeeded. SQL> ALTER USER bob 2 DEFAULT ROLE resource; User altered.

b Donnez Bob la possibilit de lire toutes les informations du dictionnaire de donnes.

SQL> CONNECT system/manager Connected. SQL> GRANT select_catalog_role TO bob; Grant succeeded.

Oracle9i Database Administration I C-85

Exercice 17 (suite) 4 Bob a besoin de vrifier les segments d'annulation actuellement utiliss par l'instance. Connectez-vous sous l'ID utilisateur Bob et rpertoriez les segments d'annulation utiliss. Indice : Utilisez SET ROLE SELECT_CATALOG_ROLE.
SQL> CONNECT bob/aaron1$ Connected. SQL> SET ROLE select_catalog_role; Role set. SQL> SELECT segment_name 2 FROM dba_rollback_segs 3 WHERE status='ONLINE'; SEGMENT_NAME --------------SYSTEM _SYSSMU9$ _SYSSMU10$ _SYSSMU11$ _SYSSMU12$ _SYSSMU13$ _SYSSMU14$ _SYSSMU15$ _SYSSMU16$ 9 rows selected.

5 Sous l'ID utilisateur SYSTEM, tentez de crer la vue CUST_VIEW dans la table CUSTOMERS d'Emi. Que se passe-t-il ?
SQL> CONNECT system/manager Connected. SQL> CREATE VIEW cust_view AS 2 3 SELECT * FROM FROM emi.customers; * ERROR at line 3: ORA-01031: insufficient privileges emi.customers

Oracle9i Database Administration I C-86

Exercice 17 (suite) 6 Sous l'ID utilisateur Emi, accordez SYSTEM le privilge SELECT sur CUSTOMERS1. En tant que SYSTEM, tentez ensuite de crer la vue CUST_VIEW dans la table CUSTOMERS1 d'Emi. Que se passe-t-il ?
SQL> CONNECT emi/abcd12 Connected. SQL> GRANT select ON customers TO system; Grant succeeded. SQL> CONNECT system/manager Connected. SQL> CREATE VIEW cust_view AS 2 3 SELECT * FROM emi.customers;

View created.

Oracle9i Database Administration I C-87

Exercice 19 1 a Observez les fichiers de donnes utiliser dans le chargement afin de vous familiariser avec les formats de fichier de contrle et de fichier de donnes. Si vous utilisez SQL*Plus, observez les fichiers suivants : lcase1.ctl,lcase2.ctl, and lcase2.dat Si vous utilisez Oracle Enterprise Manager, observez les fichiers suivants : OEMsqlcase1.ctl, OEMsqlcase2.ctl, and OEMsqlcase2.

b En tant que HR, excutez le script lab19_01.sql pour crer la table DEPARTMENTS2.
SQL> CONNECT hr/hr Connected. SQL> @HOME/STUDENT/LABS/lab19_01.sql Table created.

2 a Excutez SQL*Loader en mode de chargement des donnes par chemin conventionnel pour charger des donnes dans la table DEPARTMENTS2. Utilisez le fichier de contrle suivant : Dans SQL*Plus : lcase1.ctl Dans Oracle Enterprise Manager : OEMsqlcase1.ctl Les fichiers sont situs dans le rpertoire LABS. Remarque : Il s'excute en utilisant un fichier de contrle contenant les donnes en entre.
$ cd $HOME/STUDENT/LABS $ sqlldr hr/hr control=lcase1.ctl log=$HOME/lcase1.log SQL*Loader: Release 9.0.1.0.0 - Production on Fri Oct 5 23:18:29 2001 (c) Copyright 2001 Oracle Corporation. All rights reserved. Commit point reached - logical record count 27 ...

Oracle9i Database Administration I C-88

Exercice 19 2 b Utilisez la commande approprie du systme d'exploitation pour observer le fichier journal.
$ more lcase1.log -- Note: Path used: Conventional

c Interrogez la table DEPARTMENTS2 pour vrifier les donnes.


SQL> SELECT * FROM DEPTARTMENTS2; DEPT_ID DEPT_NAME ------- ------------------10 Administration 20 Marketing 30 Purchasing 40 Human Resources 50 Shipping 60 IT 70 Public Relations 27 rows selected

3 Supprimez tous les enregistrements de la table DEPTARTMENTS2.

SQL> TRUNCATE TABLE departments2; Table truncated.

Oracle9i Database Administration I C-89

Exercice 19 4 a Excutez SQL*Loader en mode de chargement des donnes par chemin direct pour charger des donnes dans la table DEPARTMENTS2. Utilisez les fichiers de contrle suivants : Dans SQL*Plus : lcase2.ctl Dans Oracle Enterprise Manager : OEMsqlcase2.ctl Les fichiers sont situs dans le rpertoire LABS. Remarque : Il s'excute en utilisant un fichier de donnes en entre qui charge les donnes
$ cd $HOME/STUDENT/LABS $ sqlldr hr/hr control=lcase2.ctl direct=true log=$HOME/STUDENT/LABS/lcase2.log SQL*Loader: Release 9.0.1.0.0 - Production on Fri Oct 5 10:40:10 2001 (c) Copyright 2001 Oracle Corporation. All rights reserved. Load completed - logical record count 27. ...

b Utilisez la commande approprie du systme d'exploitation pour observer le fichier journal.

$ more lcase2.log -- Note: Path used:

Direct

c Interrogez la table DEPARTMENTS2 pour vrifier les donnes.

SQL> SELECT * FROM DEPARTMENTS2; DEPT_ID DEPT_NAME ------- ------------------10 Administration 20 Marketing 30 Purchasing 40 Human Resources 50 Shipping 60 IT 70 Public Relations 80 Sales 90 Executive 27 rows selected.

Oracle9i Database Administration I C-90

Exercice 19 5 a En tant qu'utilisateur HR, crez une table EMPLOYEES2 partir de la table EMPLOYEES. Videz la table. Effectuez ensuite une slection dans la table EMPLOYEES2 pour vrifier qu'elle ne contient aucune donne.
SQL> CONNECT hr/hr SQL> CREATE TABLE employees2 2 AS SELECT * FROM employees; Table created. SQL> TRUNCATE TABLE employees2; Table truncated. SQL> SELECT * FROM employees2; no rows selected

b Effectuez un chargement par chemin direct de la table EMPLOYEES vers la table EMPLOYEES2 et interrogez cette dernire pour vrifier le chargement.
SQL> INSERT /*+ append */ INTO employees2 2 3 NOLOGGING SELECT * from employees;

107 rows created. SQL> COMMIT; SQL> SELECT employee_id, first_name, last_name 2 FROM employees2; LAST_NAME Seo Patel Rajs Davies EMPLOYEE_ID FIRST_NAME 139 140 141 142 107 rows selected. John Joshua Trenna Curtis

---------- ----------------- -------------------------

Oracle9i Database Administration I C-91

Exercice 19 6 a Videz nouveau la table EMPLOYEES2. Effectuez ensuite une slection dans la table EMPLOYEES2 pour vrifier qu'elle ne contient aucune donne.
SQL> TRUHCATE TABLE employees2; Table truncated. SQL> SELECT * FROM employees2; no rows selected

b Restaurez les donnes l'aide d'un chargement par chemin direct en parallle depuis la table EMPLOYEES. Dfinissez un degr de paralllisme de deux. Vrifiez les donnes.
SQL> ALTER SESSION ENABLE PARALLEL DML; Session altered SQL> INSERT /*+ parallel(employees2,2) */ 2 3 INTO employees2 NOLOGGING SELECT * FROM employees;

107 rows created. SQL> COMMIT; Commit complete. SQL> SELECT employee_id, first_name, last_name 2 FROM employees2; LAST_NAME Seo Patel Rajs Davies EMPLOYEE_ID FIRST_NAME 139 140 141 142 107 rows selected. John Joshua Trenna Curtis

---------- ----------------- -------------------------

Oracle9i Database Administration I C-92

Exercice 20 1 Vrifiez le jeu de caractres de la base de donnes et le jeu de caractres nationaux


SQL> CONNECT sys/oracle AS SYSDBA Connected. SQL> SELECT parameter, value 2 3 FROM WHERE nls_database_parameters parameter LIKE '%CHARACTERSET%'; VALUE WE8ISO8859P1 AL16UTF16

PARAMETER NLS_CHARACTERSET NLS_NCHAR_CHARACTERSET

------------------------------ --------------

2 Quelles sont les valeurs valides pour le jeu de caractres de la base de donnes ?

SQL> SELECT 2 3 4 VALUE FROM WHERE

value v$nls_valid_values parameter = 'CHARACTERSET'

ORDER BY value;

------------------AL16UTF16 AL24UTFFSS AL32UTF8 AR8ADOS710 AR8ADOS710T AR8ADOS720 AR8ADOS720T . . .

Oracle9i Database Administration I C-93

Exercice 20 (suite) les 3 Assurez-vous que toutes les dates affiches dans la session utilisent quatre chiffres pour annes. Modifiez NLS_LANGUAGE en FRENCH. Dans DUAL, slectionnez sysdate.
SQL> ALTER SESSION SET nls_date_format = 'DD-MON-YYYY'; Session altered. SQL> ALTER SESSION SET nls_language = FRENCH; Session modifie. SQL> SELECT sysdate 2 FROM dual; SYSDATE ----------07-OCT-2001

Oracle9i Database Administration I C-94

Solutions des exercices pour Oracle Enterprise Manager

Copyright Oracle Corporation, 2001. Tous droits rservs.

Conventions relatives aux solutions des exercices Les solutions sont destines au stagiaire qui souhaite raliser les exercices avec Oracle Enterprise Manager et SQL*Plus Worksheet. Utiliser SQL*Plus Worksheet Les commandes permettant d'utiliser SQL*Plus et SQL*Plus Worksheet (voir l'Annexe C : Solutions des exercices SQL*Plus) sont identiques. Lorsqu'il existe des exceptions, elles sont signales sous le titre Utiliser SQL*Plus Worksheet. Utiliser la console OEM Lorsque vous pouvez utiliser une console OEM la place de SQL*Plus Worksheet, cette option vous est signale sous le titre Utiliser la console OEM. Utiliser la ligne de commande du systme d'exploitation Vous aurez l'occasion de raliser certaines tches l'aide de la ligne de commande du systme d'exploitation. Dans ce cas, le symbole ! sera utilis par la ligne de commande SQL*Plus pour sortir de SQL*Plus et entrer dans le mode de la ligne de commande du systme d'exploitation. A la fin de votre travail avec cette ligne de commande, vous pouvez utiliser Exit pour revenir la ligne de commande SQL*Plus. Exemple : suppression du fichier de mots de passe en cours situ dans le rpertoire $HOME/ADMIN/PFILE. SQL > !rm $HOME/ADMIN/PFILE/orapw$ORACLE_SID $ > exit Excuter des scripts d'exercice SQL Des scripts ont t intgrs aux exercices pour qu'ils ralisent certaines tches votre place. Il peut s'agir d'une tche que vous n'avez pas encore assimile ce stade ou d'une tche visant vous permettre d'avancer plus facilement dans l'exercice. N'excutez pas un script .sql avant d'avoir revu sa fonction. Cela vous permettra de comprendre parfaitement le processus de cration et ses effets sur la tche raliser. Se connecter en tant que SYS Pour vous connecter en tant qu'utilisateur SYS, vous devrez disposer du privilge SYSDBA. CONNECT / AS SYSDBA Dmarrer et arrter la base de donnes Bien que la console OEM puisse tre utilise pour dmarrer et arrter la base de donnes, vous utiliserez SQL*Plus dans le cadre de ce cours Oracle en salle.

Oracle9i Database Administration I D-2

Exercice 1 1 Parmi les affirmations suivantes, dterminez laquelle est vraie. a Un serveur Oracle est un ensemble de donnes compos de trois types de fichier. b Pour tablir une connexion avec la base de donnes, l'utilisateur doit dmarrer une instance Oracle. c Une connexion est un chemin de communication entre le serveur Oracle et l'instance Oracle. d Une session dmarre une fois que le serveur Oracle a authentifi l'utilisateur. Rponse : D 2 Parmi les zones mmoire suivantes, laquelle ne fait pas partie de la mmoire SGA ? a le cache de tampons de la base de donnes, b la mmoire PGA, c le tampon de journalisation, d la zone de mmoire partage. Rponse : B 3 Identifiez les deux affirmations correctes se rapportant la zone de mmoire partage. a La zone de mmoire partage est compose du cache "library", du cache du dictionnaire de donnes, de la zone SQL partage, de la zone de mmoire Java et de la zone de mmoire LARGE POOL. b La zone de mmoire partage permet de stocker les dernires instructions SQL excutes. c La zone de mmoire partage est utilise pour un objet pouvant tre partag globalement. d Le cache "library" est compos des zones SQL et PL/SQL partages. Rponse : B, D 4 Parmi les zones mmoire suivantes, laquelle permet de mettre en mmoire cache les informations du dictionnaire de donnes ? a le cache de tampons de la base de donnes, b la mmoire PGA, c le tampon de journalisation, d la zone de mmoire partage. Rponse : D 5 La tche principale du tampon de journalisation consiste enregistrer toutes les modifications apportes aux blocs de donnes de la base. a Vrai b Faux Rponse : Vrai 6 La mmoire PGA est une rgion de la mmoire qui contient les donnes et les informations contrle de plusieurs processus serveur ou de plusieurs processus d'arrire-plan. a Vrai b Faux

de

Rponse : Faux. Une mmoire PGA est une rgion de la mmoire qui contient les donnes et les informations de contrle d'un seul processus serveur ou d'un seul processus d'arrire-plan.

Oracle9i Database Administration I D-3

Exercice 1 (suite) 7 Parmi les processus suivants, lequel ou lesquels sont disponibles au dmarrage d'une instance Oracle ? a le processus utilisateur, b le processus serveur, c les processus d'arrire-plan. Rponse : C 8 Indiquez ci-dessous cinq processus d'arrire-plan obligatoires. ________________________________________ ________________________________________ ________________________________________ ________________________________________ ________________________________________ Rponse : DBWR, LGWR, PMON, SMON, CKPT. 9 Affectez chaque processus la tche correspondante. a Database Writer E permet l'criture dans les en-ttes des fichiers de donnes. b Log Writer C se charge de la rcupration de l'instance. c System Monitor D excute des oprations de nettoyage suite l'chec de processus. d Process Monitor B enregistre les modifications de la base de donnes pour permettre la rcupration. e Checkpoint A crit les tampons "dirty" dans les fichiers de donnes. Answer: E,C,D,B,A 10 La structure physique d'une base Oracle est compose de fichiers de contrle, de fichiers de donnes et de fichiers de journalisation. a Vrai b Faux Rponse : Vrai 11 Rtablissez la hirarchie des structures suivantes, en commenant par la base de donnes. a Tablespaces b Extent c Segment d Base de donne e Bloc Rponse : D, A, C, B, E. 12 Indiquez les composants d'un serveur Oracle. ________________________________________ ________________________________________ Rponse : L'instance Oracle et la base de donnes Oracle.

Oracle9i Database Administration I D-4

Exercice 1 (suite) 13 Indiquez les composants d'une instance Oracle. ________________________________________ ________________________________________ Rponse : La zone SGA et les processus d'arrire-plan. 14 Indiquez trois types de fichier composant une base de donnes Oracle. ________________________________________ ________________________________________ ________________________________________ Rponse : Les fichiers de donnes, les fichiers de contrle et les fichiers de journalisation.

Oracle9i Database Administration I D-5

Exercice 2 Cet exercice s'effectue en salle. Votre formateur vous fournira les comptes de connexion et vous aidera vous connecter votre compte. Notez ci-dessous les informations qu'il vous fournira : Nom d'hte : _________________________________ Nom SID : __________________________________ 1 Connectez-vous SQL*Plus en tant que SYSDBA. Indice : Suivez les instructions de votre formateur pour vous connecter. Dmarrez SQL*Plus. Connectez-vous en tant que SYS AS SYSDBA.
$ sqlplus /nolog SQL*Plus: Release 9.0.1.0.0 - Production on Thu Nov 29 15:44:51 2001 (c) Copyright 2001 Oracle Corporation. reserved. SQL> CONNECT / AS SYSDBA Connected. All rights

2 A l'aide de SQL*Plus, excutez l'interrogation suivante pour vrifier que la connexion la base de donnes a t tablie.

SQL> SELECT * FROM DUAL; D X 3 Lancez Oracle Enterprise Manager en mode autonome. - Slectionnez Start > Programs > Oracle-OraHome90 > Enterprise Manager Console. - Slectionnez l'option Launch standalone. - Cliquez sur OK.

Oracle9i Database Administration I D-6

Exercice 2 : initiation au serveur Oracle 4 Lancez Oracle Enterprise Manager l'aide d'Oracle Management Service. Dans le cadre d'un cours en salle Oracle uniquement :

Si vous suivez un cours en salle Oracle, vous devez excuter les quatre tapes suivantes, qui sont propres la configuration de ce type de cours : 1. Cliquez sur l'icne de mise jour de fichier omsconfig sur le bureau. votre Entrez le nom du serveur Unix utilis dans votre cours, qui vous sera fourni par formateur. Veillez l'entrer tel qu'il vous a t communiqu, en respectant la distinction entre les majuscules et les minuscules.

2. Ouvrez une fentre MSDOS. 3. A l'invite de commande, entrez oemctl start oms. Attendez que le message suivant s'affiche : "The Oracleoracle901_homeManagementServer service was started successfully." 4. Fermez la fentre MSDOS. Dmarrez la console OEM et slectionnez l'option Login to the Oracle Management Server. Connectez-vous comme suit : Administrator: sysman Remarque : Respectez la casse. Password: oem_temp Remarque : Respectez la casse. Lorsque vous y tes invit, remplacez le mot de passe par oracle. Remarque : Respectez la casse. Management Server: (information fournie par votre formateur) Une fois que la console OEM est ouverte, accdez au menu principal et procdez comme suit : Slectionnez Navigator > Discover Nodes. La bote de dialogue Discovery Wizard s'ouvre. Slectionnez Next pour poursuivre. - Entrez le nom du noeud que vous souhaitez grer, c'est--dire le nom d'hte du serveur de bases de donnes dsign (information fournie par votre formateur). - Slectionnez Next. pas, Une fois le reprage termin, slectionnez OK. Remarque : Si le reprage n'aboutit informez-en votre formateur. Dveloppez le dossier Database dans l'arborescence de navigation. Cliquez deux fois sur votre base de donnes (qui vous a t indique par votre formateur). -

(suite page suivante)

Oracle9i Database Administration I D-7

Exercice 2 : initiation au serveur Oracle 4 Lancez Oracle Enterprise Manager l'aide d'Oracle Management Service (suite) Fournissez les informations de connexion suivantes : Utilisateur : sys Mot de passe : secure En tant que : SYSDBA Fournissez ensuite les informations d'identification et de connexion au noeud pour les travaux en cours d'excution. Dans le menu principal, slectionnez Configuration > Preferences. Slectionnez la page Preferred Credentials. Accdez au bas de la page et slectionnez l'entre correspondant votre base de donnes. Fournissez les informations suivantes : Username: (information fournie par votre formateur) Password: (information fournie par votre formateur) Confirm Password: Role: SYSDBA 5 Slectionnez OK.

Dmarrez SQL*Plus Worksheet. Procdez comme suit pour dmarrer SQL*Plus Worksheet depuis la console Oracle Enterprise Manager : - Slectionnez Tools > Database Applications > SQL*Plus Worksheet. Vous pouvez galement dmarrer SQL*Plus Worksheet depuis le menu Windows NT : - Slectionnez Start > Programs > Oracle-OraHome90 > Integrated Management Tools > SQLPlus Worksheet. Connectez-vous directement la base de donnes dfinie par votre formateur. Entrez les informations suivantes : Username, Password et Service. Connectez-vous en tant que : SYSDBA. Cliquez sur OK.

Remarque : A chaque fois que vous vous connectez sous un nom diffrent (dans SQL*Plus Worksheet), vous devez intgrer le nom de service la chane de connexion.

Oracle9i Database Administration I D-8

Exercice 3 1 Connectez-vous la base de donnes sous l'ID utilisateur SYS, puis arrtez la base.
SQL> CONNECT / AS SYSDBA Connected. SQL> SQL> SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down.

Remarque : Bien que la console OEM puisse tre utilise pour dmarrer et arrter la base de donnes, vous utiliserez SQL*Plus dans le cadre de ce cours. Les instructions suivantes ont t fournies uniquement pour votre information. Utiliser la console OEM - Slectionnez Instance > Configuration. - Slectionnez la page General. - Dans Instance State, slectionnez l'option Shutdown. - Slectionnez Apply. 2 Une fois la base de donnes arrte, crez un fichier SPFILE partir du fichier PFILE. Placez le fichier SPFILE dans le rpertoire $HOME/ADMIN/PFILE en lui affectant un nom au format spfileSID.ora (o SID correspond au nom de votre instance). Crez le fichier SPFILE partir du fichier PFILE qui se trouve dans le rpertoire $HOME/ADMIN/PFILE. Utiliser la console OEM - Slectionnez Object > Create spfile. - La bote de dialogue Create an spfile from a pfile s'affiche. - Identifiez le fichier PFILE utilis. - Indiquez le nom du fichier SPFILE cr. Exemple : spfile$ORACLE_SID.ora - Cliquez sur OK.

Oracle9i Database Administration I D-9

Exercice 3 (suite) 3 Affichez le fichier SPFILE depuis le systme d'exploitation. Utiliser la ligne de commande du systme d'exploitation
$ more $HOME/ADMIN/PFILE/spfile$ORACLE_SID.ora *.background_dump_dest='/u01/home/dba01/ADMIN/BDUMP' *.compatible='9.0.0' *.control_files='/u01/home/dba01/ORADATA/u01/ctrl01.ctl' *.core_dump_dest='/u01/home/dba01/ADMIN/CDUMP' *.db_block_size=4096 *.db_cache_size=4M *.db_domain='world' *.db_name='dba01' *.global_names=TRUE *.instance_name='dba01' *.java_pool_size='0' *.max_dump_file_size='10240' *.remote_login_passwordfile='exclusive' *.service_names='dba01' *.shared_pool_size=8M *.undo_management='AUTO' *.undo_tablespace='UNDOTBS' *.user_dump_dest='/u01/home/dba01/ADMIN/UDUMP'

Oracle9i Database Administration I D-10

Exercice 3 (suite) 4 Connectez-vous sous l'ID utilisateur SYS, puis dmarrez la base de donnes l'aide du fichier SPFILE.
SQL> CONNECT / AS SYSDBA Connected to an idle instance. SQL> STARTUP ORACLE instance started. Total System Global Area Fixed Size Variable Size Database Buffers Redo Buffers Database mounted. Database opened. 21790412 bytes 278220 bytes 16777216 bytes 4194304 bytes 540672 bytes

Remarque : Bien que la console OEM puisse tre utilise pour dmarrer et arrter la base de donnes, vous utiliserez SQL*Plus dans le cadre de ce cours. Les instructions suivantes ont t fournies uniquement pour votre information. Utiliser la console OEM - Slectionnez Instance > Configuration. - Slectionnez la page General. - Dans Instance State, slectionnez l'option Open. - Slectionnez Apply.

Oracle9i Database Administration I D-11

Exercice 3 (suite) 5 a Arrtez la base de donnes, puis ouvrez-la en mode lecture seule.
SQL> CONNECT / AS SYSDBA Connected. SQL> SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down. SQL> STARTUP MOUNT ORACLE instance started. Total System Global Area 21790412 Fixed Size 278220 Variable Size 16777216 Database Buffers 4194304 Redo Buffers 540672 Database mounted. SQL> ALTER DATABASE OPEN READ ONLY; Database altered.

bytes bytes bytes bytes bytes

Remarque : Bien que la console OEM puisse tre utilise pour dmarrer et arrter la base de donnes, vous utiliserez SQL*Plus dans le cadre de ce cours. Les instructions suivantes ont t fournies uniquement pour votre information. Utiliser la console OEM - Slectionnez Instance > Configuration. - Slectionnez la page General. - Dans Instance State, slectionnez l'option Shutdown. - Slectionnez Apply. - Slectionnez Immediate dans la bote de dialogue Shutdown Options. - Cliquez sur OK. - Cliquez sur Close lorsque le traitement est termin. - Dans Instance State, slectionnez l'option Show All States. - Slectionnez Open. - Slectionnez Apply. - Slectionnez Read Only Mode dans la bote de dialogue Startup Options. - Cliquez sur OK. La bote de dialogue Starting Up s'affiche. - Cliquez sur Close lorsque le traitement est termin.

Oracle9i Database Administration I D-12

Exercice 3 (suite) 5 b Connectez-vous sous l'ID utilisateur HR avec le mot de passe HR, puis insrez une ligne dans la table REGIONS comme suit :
INSERT INTO regions VALUES (5, Mars);

Que se passe-t-il ? Utiliser SQL*Plus Worksheet - Lorsque vous vous connectez, vous devez prciser le nom de service dans la chane connexion. Exemple: CONNECT HR/HR@[service name] - Entrez la commande SQL. - Slectionnez Execute.

de

INSERT INTO regions VALUES ( 5, 'Mars'); INSERT INTO regions VALUES ( 5, 'Mars') * ERROR at line 1: ORA-01552: cannot use system rollback segment for nonsystem tablespace SAMPLE'

5 c Raffectez la base de donnes le mode lecture-criture.

SQL> CONNECT / AS SYSDBA Connected. SQL> SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down. SQL> STARTUP ORACLE instance started.

Remarque : Bien que la console OEM puisse tre utilise pour dmarrer et arrter la base de donnes, vous utiliserez SQL*Plus dans le cadre de ce cours. Les instructions suivantes ont t fournies uniquement pour votre information. Utiliser la console OEM - Slectionnez Instance > Configuration. - Slectionnez la page General. - Dans Instance State, slectionnez l'option Shutdown. - Slectionnez Apply. - Dans Instance State, slectionnez l'option Show All States. - Slectionnez Open. - Cliquez sur OK. La bote de dialogue Starting Up s'affiche. - Slectionnez Close.

Oracle9i Database Administration I D-13

Exercice 3 (suite) 6 a Connectez-vous en tant qu'utilisateur HR avec le mot de passe HR, puis insrez la ligne suivante dans la table REGIONS. Ne validez pas et ne quittez pas la session.
INSERT INTO regions VALUES ( 5, Mars );

de

Utiliser SQL*Plus Worksheet - Lorsque vous vous connectez, vous devez prciser le nom de service dans la chane connexion. - Entrez la commande SQL. - Slectionnez Execute.

HR SESSION

CONNECT hr/hr@[service name] Connected. INSERT INTO regions VALUES (5, 'Mars'); 1 row created.

b Dmarrez SQL*Plus dans une nouvelle session Telnet. Connectez-vous en tant qu'utilisateur SYS AS SYSDBA, puis procdez un arrt en mode Transactional.

SYS SESSION

SQL> CONNECT / AS SYSDBA Connected. SQL> SHUTDOWN TRANSACTIONAL

Oracle9i Database Administration I D-14

Exercice 3 (suite) 6 c Annulez l'insertion dans la session de HR, puis quittez. Que se passe-t-il dans la session de HR ? Que se passe-t-il dans celle de SYS ?
HR SESSION

ROLLBACK; Rollback complete. EXIT; ERROR: ORA-01089: immediate shutdown in progress - no operations are permitted Disconnected

Remarque : La session SYS va se terminer et la base de donnes est sur le point de se fermer.
SYS SESSION

Database closed. Database dismounted.

Oracle9i Database Administration I D-15

Exercice 3 (suite) 7 Remarque : Pour l'exercice suivant, utilisez des sessions SQL*Plus. a Connectez-vous sous l'ID utilisateur SYS, puis dmarrez la base de donnes.
SYS SESSION

SQL> CONNECT / AS SYSDBA Connected to an idle instance. SQL> STARTUP ORACLE instance started.

b Dmarrez une autre session en tant qu'utilisateur HR. Remarque : Conservez les sessions SQL*Plus de SYS et de HR ouvertes.

HR SESSION

SQL> CONNECT hr/hr Connected.

c Sous l'ID utilisateur SYS, activez la session en mode restreint.

SYS SESSION

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; System altered.

Oracle9i Database Administration I D-16

Exercice 3 (suite) 7 d Sous l'ID utilisateur HR, effectuez une slection (SELECT) dans la table REGIONS. L'opration aboutit-elle ? Quittez la session, puis reconnectez-vous sous l'ID utilisateur HR. Que se passe-t-il ?
HR SESSION

SQL> SELECT * 2 FROM regions; REGION_ID REGION_NAME ---------- ------------------------1 Europe 2 Americas 3 Asia 4 Middle East and Africa SQL> EXIT SQL> CONNECT hr/hr ERROR: ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege Warning: You are no longer connected to ORACLE.

Sous l'ID utilisateur SYS, dsactivez la session en mode restreint.

SYS SESSION

SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION;

Remarque : Bien que la console OEM puisse tre utilise pour placer la base de donnes en mode d'accs restreint, vous utiliserez SQL*Plus dans le cadre de ce cours. Les instructions suivantes ont t fournies uniquement pour votre information. Utiliser la console OEM - Slectionnez Instance > Configuration. - Slectionnez la page General. - Sous Database and Instance Information, cliquez sur Yes dans l'option Restricted Mode. - Slectionnez Apply.

System altered.

Oracle9i Database Administration I D-17

Exercice 5 1 Dans la liste suivante, identifiez les affirmations correctes concernant le dictionnaire de donnes : a Le dictionnaire de donnes dcrit la base de donnes et ses objets. b Le dictionnaire de donnes comprend deux types d'objet : des tables de base et des vues. c Le dictionnaire de donnes est un ensemble de tables. d Le dictionnaire de donnes enregistre et vrifie les informations relatives la base de donnes qui lui est associe. Rponse : Toutes les affirmations. 2 Le script catalog.sql permet de crer des tables de base. a Vrai b Faux Rponse : Faux, il s'agit du script sql.bsq. 3 Dans la liste suivante, identifiez les trois affirmations correctes concernant l'utilisation du dictionnaire de donnes : a Le serveur Oracle le modifie lorsqu'une instruction LMD est excute. b Il permet de rechercher des informations sur les utilisateurs, les objets de schma et les structures de stockage. c Les utilisateurs et les administrateurs de base de donnes s'en servent comme rfrence. d Il est indispensable au bon fonctionnement de la base de donnes. Rponse : B, C, D. 4 Les vues du dictionnaire de donnes sont statiques. a Vrai b Faux Rponse : Vrai 5 Les informations d'une vue dynamique des performances peuvent tre extraites partir du fichier de contrle. a Vrai b Faux Rponse : Vrai 6 Dans la liste suivante, identifiez les questions auxquelles une vue dynamique des performances peut rpondre ? a L'objet est-il en ligne et disponible ? b Quels verrous externes sont appliqus ? c Qui est le propritaire de l'objet ? d De quels privilges les utilisateurs disposent-ils ? e La session est-elle active ? Rponse : A, B, E.

Oracle9i Database Administration I D-18

Exercice 5 (suite) 7 Recherchez la liste des vues du dictionnaire de donnes. Utiliser SQL*Plus Worksheet - Lorsque vous vous connectez, vous devez prciser le nom de service dans la chane connexion. - Entrez la commande SQL. - Slectionnez Execute.
CONNECT SYSTEM/MANAGER@[service name] Connected. SELECT table_name FROM dictionary; TABLE_NAME -----------------------------ALL_ALL_TABLES ALL_ARGUMENTS ALL_ASSOCIATIONS ALL_AUDIT_POLICIES ALL_BASE_TABLE_MVIEWS ALL_CATALOG ALL_CLUSTERS ALL_CLUSTER_HASH_EXPRESSIONS ALL_COLL_TYPES . . . 1063 rows selected.

de

Oracle9i Database Administration I D-19

Exercice 5 (suite) 8 Identifiez le nom de la base de donnes, le nom de l'instance et la taille des blocs de base de donnes.
Indice : Interrogez les vues dynamiques des performances V$DATABASE, V$THREAD et V$PARAMETER.

Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Slectionnez Execute aprs chaque commande.

SELECT name FROM v$database; NAME --------DBA01 SELECT instance FROM v$thread; INSTANCE --------dba01 SELECT value FROM v$parameter WHERE name='db_block_size'; VALUE --------4096

9 Affichez la liste des noms des fichiers de donnes. Indice : Interrogez la vue dynamique des performances V$DATAFILE. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Slectionnez Execute.

SELECT name FROM v$datafile; NAME -----------------------------------------------/u01/home/dba01/ORADATA/u01/system01.dbf /u01/home/dba01/ORADATA/u02/undotbs.dbf /u01/home/dba01/ORADATA/u03/users01.dbf /u01/home/dba01/ORADATA/u03/index01.dbf /u01/home/dba01/ORADATA/u02/sample01.dbf /u01/home/dba01/ORADATA/u01/querydata01.dbf 6 rows selected. Oracle9i Database Administration I D-20

Exercice 5 (suite) 10 Identifiez le fichier de donnes qui constitue le tablespace SYSTEM. Indice : Interrogez la vue DBA_DATA_FILES du dictionnaire de donnes pour identifier le fichier de donnes qui constituent le tablespace SYSTEM. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Slectionnez Execute.

SELECT file_name FROM dba_data_files WHERE tablespace_name = 'SYSTEM';

FILE_NAME --------------------------------------/u01/home/dba01/ORADATA/u01/system01.dbf

11 Quel est le volume d'espace libre disponible et le volume d'espace utilis dans la base de donnes ? Indices - Interrogez la vue DBA_FREE_SPACE du dictionnaire de donnes pour afficher la quantit d'espace disponible dans la base de donnes. - Interrogez la vue DBA_SEGMENTS du dictionnaire de donnes pour afficher la quantit d'espace utilis. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Slectionnez Execute aprs chaque commande.

SELECT sum(bytes)/1024 "free space in KB" FROM dba_free_space; free space in KB ---------------42700 SELECT sum(bytes)/1024 "used space in KB FROM dba_segments; used space in KB ---------------131992

Oracle9i Database Administration I D-21

Exercice 5 (suite) 12 Rpertoriez le nom et la date de cration des utilisateurs de la base de donnes. Indice : Interrogez la vue DBA_USERS du dictionnaire de base de donnes pour obtenir la liste des noms et des dates de cration des utilisateurs de la base de donnes. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Slectionnez Execute.

SELECT username, created FROM dba_users; USERNAME SYS SYSTEM ORDPLUGINS OUTLN DBSNMP ORDSYS MDSYS HR OE 9 rows selected. CREATED 07-JUN-01 07-JUN-01 07-JUN-01 07-JUN-01 07-JUN-01 07-JUN-01 07-JUN-01 07-JUN-01 07-JUN-01 ------------------------------ ---------

Oracle9i Database Administration I D-22

Exercice 6 1 O se trouve le fichier de contrle existant et quel est son nom ? Indice : Interrogez la vue dynamique des performances V$CONTROLFILE. Remarque : Vous pouvez galement utiliser la vue V$PARAMETER ou excuter la commande SHOW PARAMETER pour afficher le nom et l'emplacement du fichier de contrle. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Slectionnez Execute.
COL name FORMAT a50 SELECT * FROM STATUS NAME /u01/home/dba01/ORADATA/u01/ctrl01.ctl v$controlfile;

------- --------------------------------------

Utiliser la console OEM - Slectionnez Storage > Controlfile. - Les fichiers de contrle s'affichent dans la fentre de droite.

Oracle9i Database Administration I D-23

Exercice 6 2 a Tentez de dmarrer la base de donnes sans fichier de contrle. Pour simuler cette opration, modifiez le nom du fichier de contrle dans le fichier de paramtres ou renommez-le. Que se passe-t-il ? Indices - Connectez-vous sous l'ID utilisateur SYS. - Fermez la base de donnes l'aide de l'option IMMEDIATE. - Utilisez la ligne de commande du systme d'exploitation pour copier le fichier de contrle .ctl en lui affectant l'extension .bak. - Supprimez le fichier de contrle .ctl. - Dmarrez la base de donnes. donnes Remarque : Pour les besoins de cet exercice ralis en salle, fermez la base de l'aide de SQL*Plus.

Utiliser SQL*Plus

SQL> CONNECT / AS SYSDBA Connected. SQL> SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down.

Utiliser la ligne de commande du systme d'exploitation

$ cp $HOME/ORADATA/u01/ctrl01.ctl $HOME/ORADATA/u01/ctrl01.bak $ rm $HOME/ORADATA/u01/ctrl01.ctl

Utiliser SQL*Plus

SQL> STARTUP ORACLE instance started. Total System Global Area 21790412 bytes Fixed Size 278220 bytes Variable Size 16777216 bytes Database Buffers 4194304 bytes Redo Buffers 540672 bytes ORA-00205: error in identifying controlfile, check alert log for more info

Oracle9i Database Administration I D-24

Exercice 6 2 b Pour remdier cet incident, arrtez la base de donnes, renommez la copie du fichier de contrle de faon approprie, puis dmarrez la base de donnes. Remarque : Pour les besoins de ce cours, fermez la base de donnes l'aide de SQL*Plus. Utiliser SQL*Plus
SQL> SHUTDOWN IMMEDIATE ORA-01507: database not mounted ORACLE instance shut down.

Utiliser la ligne de commande du systme d'exploitation


cp $HOME/ORADATA/u01/ctrl01.bak $HOME/ORADATA/u01/ctrl01.ctl

Utiliser SQL*Plus

SQL> STARTUP ORACLE instance started.

Oracle9i Database Administration I D-25

Exercice 6 (suite) 3 Multiplexez le fichier de contrle existant en utilisant le rpertoire u02, puis nommez le nouveau fichier ctrl02.ctl. Assurez-vous que le serveur Oracle a accs en criture ce nouveau fichier en utilisant, par exemple, la commande chmod 660 sous UNIX. Vrifiez que les deux fichiers de contrle sont utiliss. Indices - Avant d'arrter la base de donnes, modifiez le fichier SPFILE (SCOPE=SPILE) pour ajouter le nouveau fichier de contrle au fichier d'initialisation. Arrtez la base de donnes, puis copiez le fichier de contrle existant dans un nouveau fichier nomm ctrl02.ctl que vous placerez dans le rpertoire u02. Sous Unix, utilisez la commande chmod 660. Normalement, les droits sur le fichier restent inchangs ; cette situation n'est prsente que pour les besoins du cours. Dmarrez la base de donnes. Interrogez la vue dynamique des performances V$CONTROLFILE ou V$PARAMETER, ou utilisez la commande SHOW PARAMETER pour confirmer les deux fichiers de contrle sont utiliss.

que

de

Utiliser SQL*Plus Worksheet - Lorsque vous vous connectez, vous devez prciser le nom de service dans la chane connexion. - Entrez la commande SQL. - Slectionnez Execute.
CONNECT SYS/ORACLE[service name] AS SYSDBA Connected. ALTER SYSTEM SET control_files = '$HOME/ORADATA/u01/ctrl01.ctl', '$HOME/ORADATA/u02/ctrl02.ctl' SCOPE=SPFILE; System altered.

Utiliser SQL*Plus Remarque : Pour les besoins de ce cours, fermez la base de donnes l'aide de SQL*Plus.

SQL> SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down.

Oracle9i Database Administration I D-26

Exercice 6 (suite) 3 (suite) Utiliser la ligne de commande du systme d'exploitation


$ cp $HOME/ORADATA/u01/ctrl01.ctl $HOME/ORADATA/u02/ctrl02.ctl $ chmod 660 $HOME/ORADATA/u02/ctrl02.ctl

Utiliser SQL*Plus Remarque : Pour les besoins de ce cours, fermez la base de donnes l'aide de SQL*Plus.
SQL> STARTUP ORACLE instance started. Database mounted. Database opened.

Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Slectionnez Execute.

SELECT name FROM v$controlfile; NAME -------------------------------------/u01/home/dba01/ORADATA/u01/ctrl01.ctl /u01/home/dba01/ORADATA/u02/ctrl02.ctl

Oracle9i Database Administration I D-27

Exercice 6 (suite) 4 Quelle est la taille initiale de la section de fichier de donnes dans le fichier de contrle ? Indice : Interrogez la vue dynamique des performances V$CONTROLFILE_RECORD_SECTION. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Slectionnez Execute.
SELECT records_total FROM WHERE v$controlfile_record_section type = 'DATAFILE';

RECORDS_TOTAL ------------40

Oracle9i Database Administration I D-28

Exercice 7 1 Rpertoriez le nombre et l'emplacement des fichiers journaux existants et affichez le nombre de groupes de fichiers de journalisation et de membres que contient votre base de donnes. Indices - Interrogez la vue dynamique des performances V$LOGFILE. Utilisez la vue dynamique des performances V$LOG.

Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Slectionnez Execute.


SELECT member FROM v$logfile; MEMBER ------------------------------------/u01/home/dba01/ORADATA/u03/log02a.rdo /u01/home/dba01/ORADATA/u03/log01a.rdo SELECT group#, members FROM v$log; GROUP# 1 2 MEMBERS 1 1 ---------- ----------

Utiliser la console OEM - Slectionnez Storage > Redo Log Groups. - Dveloppez l'arborescence du dossier Redo Log Groups pour visualiser le nombre de groupes. - Slectionnez un groupe pour visualiser le nombre de membres qu'il contient et connatre leur emplacement.

Oracle9i Database Administration I D-29

Exercice 7 2 Dans quel mode la base de donnes est-elle configure ? L'archivage est-il activ ? Indices - Interrogez la vue dynamique des performances V$DATABASE. Interrogez la vue dynamique des performances V$INSTANCE.

Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Slectionnez Execute.

SELECT log_mode FROM v$database; LOG_MODE -----------NOARCHIVELOG SELECT archiver FROM v$instance; ARCHIVE ------STOPPED

Utiliser la console OEM - Slectionnez Instance > Archive Log Mode: NOARCHIVELOG. - Slectionnez ALL INITIALIZATION PARAMETERS, le paramtre LOG_ARCHIVE_START indique si l'archivage est activ.

Oracle9i Database Administration I D-30

Exercice 7 (suite) 3 En respectant les conventions d'appellation suivantes, ajoutez un membre chaque groupe de fichiers de journalisation de la base de donnes stocke sur u04 : Ajoutez un membre au groupe 1 : log01b.rdo Ajoutez un membre au groupe 2 : log02b.rdo Vrifiez le rsultat obtenu. Indices - Excutez la commande ALTER DATABASE ADD LOGFILE MEMBER pour ajouter un membre chaque groupe de fichiers de journalisation. - Interrogez la vue dynamique des performances V$LOGFILE pour vrifier le rsultat. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Slectionnez Execute.
ALTER DATABASE ADD LOGFILE MEMBER '$HOME/ORADATA/u04/log01b.rdo' to Group 1, '$HOME/ORADATA/u04/log02b.rdo' to Group 2; Database altered. COLUMN GROUP# FORMAT 99 COLUMN MEMBER FORMAT a40 SELECT * FROM v$logfile; GROUP# STATUS TYPE MEMBER ------ ------ ------- ------------------------------------2 ONLINE /u01/home/dba01/ORADATA/u03/log02a.rdo 1 STALE ONLINE /u01/home/dba01/ORADATA/u03/log01a.rdo 1 INVALID ONLINE /u01/home/dba01/ORADATA/u04/log01b.rdo Utiliser la console OEM 2 INVALID ONLINE - /u01/home/dba01/ORADATA/u04/log02b.rdo Slectionnez Storage > Redo Log Groups.

- Slectionnez un groupe de fichiers de journalisation et ajoutezlui un nouveau membre dans la feuille de calcul affiche dans la fentre de droite : File Name et File Directory. - Cliquez sur Apply.

Oracle9i Database Administration I D-31

Exercice 7 (suite) 4 En respectant les conventions d'appellation suivantes, ajoutez un groupe de fichiers de journalisation et placez deux membres sur u03 et u04. Vrifiez le rsultat. Ajoutez le groupe 3 : log03a.rdo et log03b.rdo Indices - Excutez la commande ALTER DATABASE ADD LOGFILE pour crer un groupe. - Interrogez la vue dynamique des performances V$LOGFILE pour afficher le nom des nouveaux membres du nouveau groupe. - Interrogez la vue dynamique des performances V$LOG pour afficher le nombre de groupes de fichiers de journalisation et de membres. Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Slectionnez Execute.
ALTER DATABASE ADD LOGFILE GROUP 3('$HOME/ORADATA/u03/log03a.rdo', '$HOME/ORADATA/u04/log03b.rdo') SIZE 1024K; Database altered. COLUMN GROUP# FORMAT 99 COLUMN MEMBER FORMAT a40 SELECT * FROM v$logfile; GROUP# STATUS TYPE MEMBER ------ ------- ------- -----------------------------------2 ONLINE /u01/home/dba01/ORADATA/u03/log02a.rdo 1 STALE ONLINE /u01/home/dba01/ORADATA/u03/log01a.rdo 1 INVALID ONLINE /u01/home/dba01/ORADATA/u04/log01b.rdo 2 INVALID ONLINE /u01/home/dba01/ORADATA/u04/log02b.rdo 3 ONLINE /u01/home/dba01/ORADATA/u03/log03a.rdo 3 ONLINE /u01/home/dba01/ORADATA/u04/log03b.rdo 6 rows selected. SELECT group#, members FROM v$log; GROUP# MEMBERS Utiliser la console OEM --------------- Slectionnez Storage 1 2 > Redo Log Groups. - Slectionnez Create 2 2 dans le menu accessible par le bouton droit de la souris pour entrer 3 le nom et l'emplacement des membres du fichier de journalisation. 2

Cliquez sur Create.

Oracle9i Database Administration I D-32

Exercice 7 (suite) 5 Supprimez le groupe de fichiers de journalisation cr l'tape 4. Indices - Utilisez ALTER SYSTEM SWITCH LOGFILE si les fichiers journaux sont actifs. Le nombre de changements de fichier varie. Remarque : Interrogez la base de donnes pour consulter les fichiers journaux actifs. Dterminez ensuite le nombre de fois que vous devez excuter la commande ALTER SYSTEM SWITCH LOGFILE. Excutez la commande ALTER DATABASE DROP LOGFILE GROUP pour supprimer le groupe de fichiers de journalisation. Interrogez la vue dynamique des performances V$LOG pour vrifier le rsultat. Supprimez du groupe les fichiers du systme d'exploitation.

Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Slectionnez Execute.


ALTER SYSTEM SWITCH LOGFILE; System altered. ALTER SYSTEM SWITCH LOGFILE; System altered. ALTER SYSTEM SWITCH LOGFILE; System altered. ALTER DATABASE DROP LOGFILE GROUP 3; Database altered. SELECT group#, members FROM v$log; GROUP# MEMBERS ------ ---------1 2 2 2 3 2

Utiliser la console OEM - Slectionnez Storage > Redo Log Groups. - Si le groupe 3 est actif, slectionnez le groupe, puis Switch Logfile dans le menu de la souris Supprimez les fichiers du systme d'exploitation du groupe (voir ci-dessous). accessible par le bouton droit de la souris. Slectionnez le groupe 3, puis Remove dans le menu accessible par le bouton droit

Utiliser la ligne de commande du systme d'exploitation


$ rm $HOME/ORADATA/u03/log03a.rdo $ rm $HOME/ORADATA/u04/log03b.rdo Oracle9i Database Administration I D-33

Exercice 7 (suite) 6 Redimensionnez tous les fichiers de journalisation en ligne (online redo log files) la taille de 1024 Ko. Indices ajouter actif. Excutez la commande ALTER SYSTEM SWITCH LOGFILE pour forcer les changements de fichier de journalisation et attribuer au groupe le statut inactif. Le nombre de changements de fichier requis varie. Remarque : Interrogez la base de donnes pour consulter les fichiers journaux actifs. Dterminez ensuite le nombre fois que vous devez excuter la commande ALTER SYSTEM SWITCH Excutez la commande ALTER DATABASE DROP LOGFILE pour supprimer groupes inactifs. Interrogez la vue dynamique des performances V$LOG pour vrifier le rsultat. Il est impossible de redimensionner des fichiers journaux. Par consquent, vous devez en ajouter de nouveaux et supprimer les anciens. Excutez la commande ALTER DATABASE ADD LOGFILE GROUP pour deux nouveaux groupes d'une taille de 1024 Ko. Interrogez la vue dynamique des performances V$LOG pour vrifier le groupe

de LOGFILE. les -

Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Slectionnez Execute.


ALTER DATABASE ADD LOGFILE GROUP 3( '$HOME/ORADATA/u03/log03a.rdo', '$HOME/ORADATA/u04/log03b.rdo ) SIZE 1024K, GROUP 4( '$HOME/ORADATA/u03/log04a.rdo', '$HOME/ORADATA/u04/log04b.rdo ) SIZE 1024K; Database altered. SELECT group#, status FROM v$log; GROUP# -----1 2 3 4 STATUS ---------------ACTIVE CURRENT UNUSED UNUSED

- continued -

Oracle9i Database Administration I D-34

Exercice 7 (suite) 6 (suite)


- continued ALTER SYSTEM SWITCH LOGFILE; System altered. ALTER SYSTEM SWITCH LOGFILE; System altered. ALTER SYSTEM SWITCH LOGFILE; System altered. ALTER DATABASE DROP LOGFILE GROUP 1, GROUP 2; Database altered. SELECT group#, bytes FROM v$log; GROUP# 3 4 BYTES 1048576 1048576

------ ----------

Utiliser la console OEM - Slectionnez Storage > Redo Log Groups. - Utilisez la commande Create dans le menu accessible par le bouton droit de la souris pour ajouter les deux groupes de fichiers de journalisation. - Utilisez Switch Logfile dans le menu accessible par le bouton droit de la souris jusqu' ce que les groupes 1 et 2 deviennent inactifs. - Utilisez Remove dans le menu accessible par le bouton droit de la souris pour supprimer les groupes 1 et 2. - Supprimez les fichiers du systme d'exploitation du groupe (voir ci-dessous).

Oracle9i Database Administration I D-35

Exercice 8 1 Crez des tablespaces permanents associs aux noms et aux paramtres de stockage suivants : Utiliser SQL*Plus Worksheet - Entrez la commande SQL. - Slectionnez Execute. Utiliser la console O - Slectionnez Storage > Tablespaces. - Utilisez la commande Create dans le menu accessible par le bouton droit de la souris pour ajouter le tablespace. a DATA01, gr au moyen du dictionnaire de donnes.

CREATE TABLESPACE data01 DATAFILE '$HOME/ORADATA/u04/data01.dbf' SIZE 2M EXTENT MANAGEMENT DICTIONARY; Tablespace created.

b DATA02, gr localement avec des extents de taille uniforme (assurez-vous que les tailles des extents utiliss dans le tablespace sont des multiples de 100 Ko).

CREATE TABLESPACE data02 DATAFILE '$HOME/