Oracle 11g 

Administration

Olivier HEURTEL  

Résumé
Ce livre sur Oracle 11g s’adresse à tout informaticien désireux de maîtriser les tâches d’administration des bases de données Oracle. Après une présentation générale de l’architecture interne d’un serveur Oracle (mémoire, processus), ce livre détaille les différentes tâches d’administration d’une base de données : installation (sous Windows et sous Linux), configuration Oracle Net, création d’une nouvelle base de données, gestion de la mémoire, gestion du stockage, gestion des utilisateurs et des droits, sauvegardes et restaurations avec RMAN (Recovery Manager). Une attention particulière est apportée aux nouvelles fonctionnalités d’Oracle 11g qui facilitent le travail de l’administrateur : réglage automatique de la mémoire, référentiel de Diagnostique Automatique, mots de passe sensibles à la casse, rétrécissement d’un tablespace temporaire géré localement, nouvelle ergonomie de Oracle Entreprise Manager Database Control, etc. L’ouvrage contient de nombreux conseils pratiques et recommandations et présente les solutions qui peuvent être apportées aux problèmes les plus courants. Des exemples de scripts sont en téléchargement sur cette page.

L'auteur
Après plus de huit ans passés en société de service, où il a successivement occupé les postes de développeur, chef de projet puis directeur de projet, Olivier Heurtel a démarré une activité de consultant/formateur indépendant spécialisé sur les bases de données (Oracle), le développement Web (PHP) et les systèmes décisionnels. Olivier Heurtel est certifié Oracle Certified Professional et cet ouvrage est le fruit de l'expérience acquise au cours de nombreuses prestations de mise en œuvre de bases Oracle en entreprise.

Ce livre numérique a été conçu et est diffusé dans le respect des droits d’auteur. Toutes les marques citées ont été déposées par leur éditeur respectif. La loi du 11 Mars 1957 n’autorisant aux termes des alinéas 2 et 3 de l’article 41, d’une part, que les “copies ou reproductions strictement réservées à l’usage privé du copiste et non destinées à une utilisation collective”, et, d’autre part, que les analyses et les courtes citations dans un but d’exemple et d’illustration, “toute représentation ou reproduction intégrale, ou partielle, faite sans le consentement de l’auteur ou de ses ayants droit ou ayant cause, est illicite” (alinéa 1er de l’article 40). Cette représentation ou reproduction, par quelque procédé que ce soit, constituerait donc une contrefaçon sanctionnée par les articles 425 et suivants du Code Pénal. Copyright Editions ENI

© ENI Editions - All rights reserved - Algeria Educ

- 1-

Installation du serveur 
1. Introduction 
L’installation d’Oracle sur un serveur nécessite une bonne compréhension de l’architecture Oracle et des compétences  minimales  sur  le  système  d’exploitation ;  ces  compétences  sont  réduites  au  strict  minimum  pour  la  plate­forme  Windows mais sont un peu plus avancées pour les autres plates­formes.  Dans tous les cas, il est impératif de se référer à la documentation Oracle spécifique à la plate­forme : 
q

Oracle® Database Installation Guide for ...  Oracle® Database Quick Installation Guide for ...  Oracle® Database Release Notes for ... 

q

q

La  documentation  "Quick  Installation  Guide"  décrit  comment  installer  rapidement  Oracle  en  utilisant  des  options  par  défaut. Cette documentation est en général suffisante pour une première prise en main.  L’objectif de ce chapitre est de présenter les principales étapes et options de l’installation, en se limitant aux plates­ formes Windows et Linux (en l’occurrence Red Hat Enterprise Linux 4) ; ce chapitre n’a pas vocation à remplacer les  manuels  d’installation  fournis  par  Oracle.  Par  ailleurs,  l’ouvrage  dans  son  ensemble  apporte  les  compétences  sur  l’architecture Oracle nécessaires à la compréhension des différentes phases de l’installation.  Sur  OTN  (Oracle  Technology  Network  :  http://www.oracle.com/technology/index.html),  moyennant  une  inscription  gratuite  au  site,  vous  pouvez  télécharger  les  produits  Oracle  à  des  fins  de  développement  ou  d’évaluation. 

Sur  Metalink  (site  du  support  Oracle  :  https://metalink.oracle.com/),  vous  pouvez  trouver  des  notes  d’installation  précises,  à  jour,  pour  chaque  version  d’Oracle,  chaque  système  d’exploitation  et  chaque  architecture (32/64 bits) ; n’hésitez pas à les consulter. 

2. Principales étapes de l’installation 
Installer Oracle sur un serveur comporte trois grandes phases : 
q

pré­installation : préparer le système d’exploitation ;  installation : installer les produits Oracle ;  post­installation : terminer l’installation et configurer certains composants Oracle. 

q

q

Sur plate­forme Windows, la phase de pré­installation est réduite au strict minimum : 
q

vérifier les pré­requis logiciels et matériels ;  se connecter en tant que membre du groupe Administrateur. 

q

Sur plate­forme  Unix  ou  Linux,  la  phase  de  pré­installation comporte par contre, plusieurs étapes. Dans les grandes  lignes, les étapes sont les suivantes : 
q

vérifier les pré­requis logiciels et matériels ;  configurer le noyau (sémaphores, mémoire partagée...) ;  créer les répertoires nécessaires ; 

q

q

© ENI Editions - All rights reserved - Algeria Educ

- 1-

q

créer un groupe et un compte appartenant à ce groupe. 

L’installation  des  produits  Oracle  s’effectue  avec  l’application Oracle  Universal  Installer ;  cet  installeur  est  "universel"  dans la mesure où il est identique (à peu de choses près) sur les différentes plates­formes et est utilisé par différents  produits Oracle (serveur, client, etc.).  Oracle Universal Installer permet : 
q

de  choisir  le  type  d’installation :  Enterprise  Edition,  Standard  Edition,  Personal  Edition  (plate­forme Windows  uniquement) personnalisé ;  de  créer  une  base  de  données  de  départ  avec  différentes  options  de  configuration  pour  le  stockage,  l’administration, la sauvegarde, etc. 

q

À l’issue de cette phase, si vous optez pour une installation avec base de données, vous devriez avoir : 
q

une base de données de départ lancée ;  une configuration Oracle Net par défaut avec un processus d’écoute (listener) lancé ;  Oracle Enterprise Manager Database Control et lancé et accessible à l’aide d’un navigateur ; 

q

q

La phase de post­installation consiste essentiellement à : 
q

télécharger et appliquer d’éventuels patchs Oracle ;  recompiler les modules PL/SQL invalides ;  configurer certains composants Oracle (Oracle Net, etc.) ;  installer des produits supplémentaires ;  configurer l’environnement de travail ;  configurer  le  démarrage  et  l’arrêt  automatiques  des  différents  composants  Oracle  (base  de  données,  processus d’écoute, etc.). 

q

q

q

q

q

Sur  plate­forme  Windows,  si  vous  optez  pour  une  installation  avec  base  de  données  de  départ,  Oracle  Universal Installer crée automatiquement les services associés aux différents composants et les configure en  démarrage  automatique ;  si  l’installation  s’effectue  sans  base  de  départ,  ces  services  doivent  être  créés  et  configurés ultérieurement. Sur plate­forme Linux ou Unix, les services doivent être explicitement créés et configurés  par l’administrateur du système d’exploitation.  Les  différentes  phases  de  l’installation  sont  décrites  ci­après.  Ensuite,  nous  verrons  comment  configurer  l’environnement de travail et configurer le démarrage et l’arrêt automatiques des différents composants Oracle.  Avant  cela,  nous  présenterons  le  standard  Optimal  Flexible  Architecture  (OFA).  OFA  est  un  ensemble  de  recommandations sur l’arborescence et le nommage des fichiers du serveur, destinées à faciliter l’administration des  produits Oracle.  Avant toute installation, il est conseillé de sauvegarder les éléments critiques éventuellement présents sur le  serveur (bases Oracle d’une autre version d’Oracle, autres produits). 

3. Optimal Flexible Architecture (OFA) 
a. Principes généraux 

- 2-

© ENI Editions - All rights reserved - Algeria Educ

OFA  est  un  ensemble  de  recommandations  sur  l’arborescence  et  le  nommage  des  fichiers  du  serveur,  destinées  à  faciliter l’administration des produits Oracle.  Un des points les plus intéressants du standard OFA est de clairement séparer le produit Oracle, les fichiers relatifs à  l’administration  et  les  fichiers  des  bases  de  données,  en  tenant  compte  de  la  possibilité  d’avoir  plusieurs  versions  d’Oracle et/ou plusieurs bases sur le serveur.  Les recommandations varient légèrement selon la plate­forme (voir la documentation "Oracle® Database Installation  Guide" de votre plate­forme).  Oracle Universal Installer est compatible OFA et propose une arborescence par défaut qui respecte ce standard.  Dans le standard OFA, deux répertoires jouent un rôle particulier : les répertoires Oracle Base et Oracle Home.  Le répertoire Oracle Base est le répertoire racine de l’arborescence Oracle.  Le répertoire Oracle Home est un sous­répertoire du répertoire Oracle Base qui contient le logiciel Oracle proprement  dit, pour une version donnée. Dans un répertoire Oracle Base, il est possible d’avoir plusieurs répertoires Oracle Home  correspondant chacun à une certaine version d’un produit Oracle donné (serveur de base de données, client, serveur  d’application, etc.).  Dans  des  configurations  avancées,  il  est  possible  d’avoir  plusieurs  répertoires  Oracle  Base,  pour  installer  plusieurs produits Oracle sur des disques différents.  Chaque  répertoire  Oracle  Home  est,  par  ailleurs,  identifié  par  un  nom,  par  défaut  sous  la  formeOraDb11g_homeN,  N  étant un numéro d’ordre.  Sur  plate­forme  Windows,  les  emplacements  de  ces  deux  répertoires  sont  définis  dans  des  entréesde  la  base  de  registre  (dans  HKEY_LOCAL_ MACHINE\SOFTWARE\ORACLE\KEY_nom,  nom  étant  le  nom  du  Oracle  Home).  Sur  plate­forme  Linux  ou  Unix,  les  emplacements  de  ces  deux  répertoires  sont  généralement  définis  dans  des  variables  d’environnement ORACLE_BASE et ORACLE_HOME du compte dans lequel Oracle est installé.  Sur plate­forme Windows, depuis la version 11, les recommandations sont les suivantes pour ces deux répertoires :  Oracle Base  X:\app\compte, X  étant  un  lecteur  de  disque  et  compte  le  nom  du  compte  utilisé  pour  l’installation.  Exemple :  d:\app\oracle  Oracle Home  ORACLE_BASE\product\ v.v.v\type_n, ORACLE_BASE désignant le répertoire Oracle Base,  product étant une constante  indiquant  que  les  produits  sont  ici,  v.v.v  le  numéro  de  version  du  produit,  type  le  type  de  produit  (db pour  un  serveur de base de données, client pour un client, etc.) et n un numéro d’ordre dans le type.  Exemple : d:\app\oracle\product\11.1.0\db_1  Avant la version 10, le chemin Oracle Base était du type X:\Oracle (par exemple D:\Oracle) et le chemin Oracle Home  du type  ORACLE_BASE\OraVV, VV  étant  le  numéro  de  version  du  produit  (par  exemple  D:\Oracle\Ora92). Le nom du  Oracle Home était de la forme OraHomeVV (par exemple OraHome 92) et la clé de la base de registre de la forme HOMEn,  n  étant  un  numéro  d’ordre  (par  exemple  HOME0).  Puis  en  version  10,  le  chemin  Oracle  Base  était  du  type  X:\oracle\product\v.v.v  et  le  chemin  Oracle  Home  du  type  ORACLE_BASE\type_n  (c’est  le  chemin  Oracle  Base  qui  comportait l’information de version).  Si  vous  installez  Oracle11g  sur  un  système  sur  lequel  une  version  précédente  d’Oracle  est  installée,  l’installeur  va  conserver  l’ancien  chemin  du  répertoire  Oracle  Base  et  adapter  en  conséquence  le  chemin  Oracle Home. En cas de doute, consultez les valeurs dans la base de registre. 

Sur  la  plate­forme  Windows,  il  n’est  pas  habituel  de  créer  un  compte  spécifique  pour  installer  Oracle.  Si  vous utilisez le compte administrateur de la machine, vous pouvez modifier le chemin proposé pour Oracle  Base par l’installeur et mettre oracle en guise de compte.  Sur  plate­forme  Unix  ou  Linux  depuis  la  version  10,  les  recommandations  sont  les  suivantes  pour  ces  deux  répertoires :  Oracle Base  / pm/ ccc/ compte,  pm  étant  un  point  de  montage  d’un  système  de  fichiers  (avec  p  une  chaîne  et  m  un  numéro  d’ordre), ccc une chaîne quelconque et compte le nom du compte utilisé pour l’installation.Exemple : /u01/app/oracle 

© ENI Editions - All rights reserved - Algeria Educ

- 3-

Oracle Home  ORACLE_BASE/product/v.v.v/type_n,ORACLE_BASE désignant le répertoire  Oracle Base,  v.v.v le numéro de version du  produit, type le type de produit (db pour un serveur de base de données, client pour un client, etc.) et n un numéro  d’ordre dans le type. Exemple : /u01/app/oracle/product/11.1.0/db_1  Avant la version 10, les recommandations étaient les mêmes, mais sans la partie type_ n.  La partie type_ n du chemin Oracle Home permet d’installer différents produits avec le même numéro de version sous  le même répertoire Oracle Base. Cela permet aussi d’installer plusieurs fois le même produit, dans la même version,  sous le même répertoire Oracle Base.  En dehors du répertoire Oracle Home, le répertoire Oracle Base est destiné à contenir quatre autres répertoires : 
q

oradata pour les fichiers des bases de données ;  admin pour les fichiers d’administration des bases de données ;  cfgtoollogs pour les fichiers journaux des assistants de configuration ;  diag pour le Référentiel du Diagnostique Automatique (Automatic Diagnostic Repository ­ ADR). 

q

q

q

Puisque plusieurs bases sont susceptibles d’être présentes sur le système, le standard OFA recommande de créer  un sous­répertoire par base, portant le nom de la base (paramètre DB_NAME), dans les répertoires oradata et admin.  Exemple : 

 

- 4-

© ENI Editions - All rights reserved - Algeria Educ

  Sur ces deux exemples, deux bases (ORCL et TEST) sont présentes sur le système.  Les  différents  sous­répertoires  du  répertoire  d’administration  sont  présentés  dans  le  chapitre Création  d’une  nouvelle base de données.  En ce qui concerne les fichiers de la base de données, les recommandations de nommage sont les suivantes :  Fichier de contrôle  control.nn.ctl, nn étant un numéro d’ordre (01, 02, etc.).  Fichier de journalisation  redonn.log, nn étant le numéro du groupe (01, 02, etc.).  Fichiers de données  tablespacenn.dbf, tablespace étant le nom du tablespace et nn le numéro d’ordre du fichier au sein du tablespace  (01, 02, etc.). 

b. Répartition des fichiers de la base de données sur plusieurs disques 
D’une manière générale, il est souhaitable de séparer le stockage du système d’exploitation, du logiciel Oracle et des  bases de données, chaque stockage pouvant être au choix un disque, un volume logique ou un volume RAID.  Dans le cas où vous créez une base de données sur des disques qui ne sont pas organisés en volumes logiques ou  en RAID, il est recommandé de répartir les fichiers de la base de données sur différents disques afin d’améliorer les  performances et la sécurité.  Vous  pouvez  donc  être  amenés  à  utiliser  plusieurs  répertoires oradata  situés  sur  différents  points  de  montage  ou  lecteurs de disque.  Selon la recommandation OFA, ces répertoires  oradata supplémentaires doivent être créés en respectant la même  arborescence que le répertoire oradata principal.  Exemple :  Windows  e:\app\oracle\oradata 

© ENI Editions - All rights reserved - Algeria Educ

- 5-

Unix ou Linux  /u02/app/oradata/oradata  À partir de là, selon les systèmes de stockage disponibles, plusieurs organisations sont disponibles.  Exemple : 

Axe
1  2  3 

Nature
Disque  Disque  N disques en RAID 0+1 

Contenu
Système d’exploitation  Logiciel Oracle  Fichiers de données des  tablespaces   Fichiers de contrôle 

4  5 

N disques en RAID 0+1  Disque 

Fichiers de journalisation  Fichiers de journalisation  archivés  Sauvegardes sur disque 

Sur plate­forme Linux ou Unix, il est possible d’utiliser les liens symboliques pour faire croire que les fichiers  sont situés sous un seul point de montage alors qu’ils sont en fait répartis sur plusieurs. 

Si vous le souhaitez, vous pouvez adopter une organisation OFA non standard, du moment que vous en  respectez la philosophie (séparation des produits Oracle, séparation des bases de données). 

4. Pré­installation 
a. Sur plate­forme Windows 
Se connecter au système Oracle  doit  être  installé  à  l’aide  d’un  compte  membre  du  groupe  Administrateur.  Si  l’installation  s’effectue  sur  un  serveur contrôleur de domaine (principal ou secondaire), le compte doit être membre du groupe Administrateur de  domaine.  Dans  cet  ouvrage,  nous  supposerons  qu’un  compte  nommé  « oracle »,  membre  du  groupe  Administrateur,  a  été  spécialement créé pour l’occasion.  Vérifier les pré­requis logiciels et matériels Oracle11g supporte les systèmes d’exploitation Windows suivants : 
q

Windows 2000 (service pack 1 ou supérieur) ;  Windows Server 2003 (toutes les éditions) ;  Windows XP Professional ;  Windows Vista (Business, Enterprise et Ultimate). 

q

q

q

Dans  cet  ouvrage,  nous  utiliserons  une  plate­forme  Windows  Server  2003  Entreprise  Edition.  L’installation  sur  les  autres plates­formes Windows est identique.  Les exigences matérielles sont les suivantes : 

- 6-

© ENI Editions - All rights reserved - Algeria Educ

q

1 Go de mémoire physique minimum ;  Le double de mémoire virtuelle ;  200 Mo d’espace temporaire ;  Environ 3 Go d’espace disque pour les produits Oracle ;  Environ 2 Go d’espace disque supplémentaire si vous souhaitez créer une base de données de départ lors  de l’installation ;  256 couleurs pour la vidéo. 

q

q

q

q

q

Si vous n’avez que 256 Mo de mémoire physique, vous n’aurez pas suffisamment de mémoire pour créer une  base de données au cours de l’installation ; vous devrez créer la base de données ultérieurement (avec une  petite SGA). 

b. Sur plate­forme Linux 
Se connecter au système en tant qu’utilisateur root Les premières tâches de la phase de pré­installation doivent être effectuées en tant que root .  Vérifier les pré­requis logiciels et matériels Oracle11g supporte les systèmes d’exploitation Linux suivants : 
q

Oracle Enterprise Linux 4 ou Red Hat Enterprise Linux 4 (noyau 2.6.9) ;  Oracle Enterprise Linux 5 ou Red Hat Enterprise Linux 5 (noyau 2.6.18) ;  SUSE Enterprise Linux 10 (noyau 2.6.16.21). 

q

q

Dans cet ouvrage, nous utiliserons une plate­forme Red Hat Enterprise Linux 4. L’installation sur les autres plates­ formes Linux (ou Unix en général) est similaire : les principes sont les mêmes, mais certaines valeurs ou certaines  commandes peuvent différer (reportez­vous au manuel d’installation de votre plate­forme).  Pour chaque distribution, un certain nombre de packages doivent être installés (avec une version minimum).  Exemple pour Red Hat Enterprise Linux 4 :  binutils-2.15.92.0.2-18 compat-libstdc++-33.2.3-47.3 elfutils-libelf-0.97-5 elfutils-libelf-devel-0.97-5 glibc-2.3.4-2.19 glibc-common-2.3.4-2.19 glibc-devel-2.3.4-2.19 glibc-headers-2.3.4-2.19 gcc-3.4.5-2 gcc-c++-3.4.5-2 libaio-devel-0.3.105-2 libaio-0.3.105-2 libgcc-3.4.5 libstdc++-3.4.5-2 libstdc++-devel-3.4.5-2 make-3.80-5 sysstat-5.0.5 unixODBC-2.2.11 unixODBC-devel-2.2.11

© ENI Editions - All rights reserved - Algeria Educ

- 7-

Le script suivant permet de vérifier ces exigences sur Red Hat Enterprise Linux 4 :  echo "* Version du noyau" uname -r echo "* Packages" # Liste des packages listePackages=$(cat < _EOF_ binutils libaio libaio-devel gcc gcc-c++ glibc glibc-common glibc-headers glibc-devel libstdc++ libstdc++-devel compat-libstdc++-33 make sysstat elfutils-libelf elfutils-libelf-devel unixODBC unixODBC-devel _EOF_ ) # Recherche les packages et indique si le package est # installe ou pas. for package in $listePackages; do version=$(rpm -q $package --qf "%{version} %{arch}") if [ $? = 0 -a "$version" ] then printf "+ %-25s %-15s %s\n" $package $version else printf "o %-25s %s\n" $package "?" fi done Résultat :  * Version du noyau 2.6.9-67.0.15.ELsmp * Packages + binutils + libaio + libaio-devel + gcc + gcc-c++ + glibc + glibc-common + glibc-headers + glibc-devel + libstdc++ + libstdc++-devel + compat-libstdc++-33 + make + sysstat + elfutils-libelf + elfutils-libelf-devel + unixODBC + unixODBC-devel

2.15.92.0.2 0.3.105 0.3.105 3.4.6 3.4.6 2.3.4 2.3.4 2.3.4 2.3.4 3.4.6 3.4.6 3.2.3 3.80 5.0.5 0.97.1 0.97.1 2.2.11 2.2.11

i386 i386 i386 i386 i386 i686 i386 i386 i386 i386 i386 i386 i386 i386 i386 i386 i386 i386

Les exigences matérielles sont les suivantes : 
q

1 Go de mémoire physique minimum ;  Espace  swap  :  1,5  fois  la  mémoire  physique  si  cette  dernière  fait  moins  de  2  Go  ou  égal  à  la  mémoire 
© ENI Editions - All rights reserved - Algeria Educ

q

- 8-

8G 6.9- © ENI Editions .6G 30% / /dev/mapper/VolGroup01-LogVol100 9.Algeria Educ .5 Go d’espace disque pour les produits Oracle ;  Environ 2 Go d’espace disque supplémentaire si vous souhaitez créer une base de données de départ lors  de l’installation ;  q q Le script suivant permet de vérifier ces exigences sur Red Hat Enterprise Linux 4 :  echo "* Mémoire (Mo)" free -m echo "* Disque" df -h /tmp /u0* Résultat :  * Memoire (Mo) total used free shared buffers Mem: 1010 966 44 0 4 -/+ buffers/cache: 591 419 Swap: 2559 116 2443 * Disque Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 9.All rights reserved .physique si cette dernière est comprise entre 2 Go et 8 Go ;  q 400 Mo d’espace temporaire (/tmp) ;  Environ 3.4G Configurer le noyau cached 370 4.9G 5.0G 58% /u01 Paramètre semmsl  semmns  semopm  semmni  shmall  shmmax  shmmni  file-max  ip_local_port_range  Valeur 250  32000  100  128  2097152  la moitié de la mémoire physique  4096  65536  1024 65000  Fichier /proc/sys/kernel/sem  /proc/sys/kernel/shmall  /proc/sys/kernel/shmmax  /proc/sys/kernel/shmmni  /proc/sys/fs/file-max  /proc/sys/net/ipv4/ip_  local_port_range  rmem_default  4194304  /proc/sys/net/core/  rmem_default  rmem_max  4194304  /proc/sys/net/core/  rmem_max  wmem_default  262144  /proc/sys/net/core/  .9G 2.

file-max = 102445 net.shmall = 2097152 kernel.ipv4.  La  présence  du  fichier  oraInst.loc  permet  de  déterminer  si  le  groupe  Oracle  Inventory existe déjà.core.ip_local_port_range = 3276861000 net.core.rmem_default = 110592 net.Algeria Educ . Si un des paramètres du  noyau a une valeur inférieure à la valeur recommandée.  Comme  indiqué  dans  le  chapitre  Les  bases  de  l’architecture  Oracle.core.core. Ce fichier contient le chemin vers le répertoire contenant l’inventaire des produits Oracle  installés sur la machine.sem = 250 32000 32 128 fs.loc  (dans  le  répertoire /etc sous Linux).core.core.core.core. ainsi que le nom du groupe Oracle Inventory (typiquement oinstall) utilisé pour protéger  l’accès  au  répertoire  d’inventaire. exécutez la commande suivante :  sysctl -p Créer les groupes et l’utilisateur Ensuite.core.ip_local_port_range net.wmem_max _EOF_ ) for variable in $listeVariables.wmem_default = 110592 net. et de retrouver son nom. vous devez créer deux groupes et un compte utilisateur qui sera utilisé pour l’installation et qui sera donc le  propriétaire des logiciels Oracle.  Lors  de  la  première  installation  d’Oracle  sur  un  système.sem = 250 32000 100 128 net.core.rmem_max = 131071 net.wmem_default = 262144 net.shmmax = 536870912 kernel.file-max net.shmmni kernel. vous pouvez éditer le fichier /etc/sysctl. do sysctl $variable done Résultat :  kernel.core.wmem_max = 131071 Sur cet exemple.wmem_default net.rmem_default net.ipv4.All rights reserved .ipv4.shmall kernel.wmem_max = 262144 Pour que les nouvelles valeurs soient prises en compte immédiatement.wmem_default  wmem_max  262144  /proc/sys/net/core/wmem_max  Le script suivant permet de vérifier ces paramètres sur Red Hat Enterprise Linux 4 :  listeVariables=$(cat << _EOF_ kernel.shmmax kernel.rmem_max = 4194304 net.core. les valeurs en gras ne sont pas conformes aux recommandations Oracle.sem fs.conf et ajouter ou  modifier des lignes de configuration des paramètres :  Exemple de lignes ajoutées dans le fichier :  # modifications pour oracle kernel.shmmni = 4096 kernel.  un  groupe  particulier  (nommé  génériquement  .  l’installeur  crée  un  fichier  oraInst.shmmax = 33554432 kernel.rmem_default = 4194304 net.ip_local_port_range = 1024 65000 net.10 - © ENI Editions .rmem_max net.

then if [ $SHELL = "/bin/ksh" ].conf :  soft hard soft hard nproc nproc nofile nofile 2047 16384 1024 65536 oracle oracle oracle oracle s Ajoutez les lignes suivantes dans le fichier /etc/pam. vous devez augmenter les limites suivantes pour le compte oracle :  Nombre maximum de descripteurs de fichiers ouverts : 65535  Nombre maximum de processus : 16384  Pour augmenter ces limites :  s Ajoutez les lignes suivantes dans le fichier /etc/security/limits.5 Go pour les produits Oracle et 2 Go pour la  base de données de départ.d/login (si elles n’existent pas déjà) :  required required /lib/security/pam_limits.  vous  devez  créer  au  minimum  le  répertoire  parent  du  répertoire Oracle Base.  Traditionnellement.  et  de  définir  le  propriétaire.  Les commandes suivantes permettent de créer les deux groupes et le compte s’ils n’existent pas déjà :  groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle passwd oracle Dans cet ouvrage.OSDBA)  est  utilisé  pour  identifier  les  comptes  utilisateurs  qui  peuvent  se  connecter  AS l’authentification par le système d’exploitation. ce groupe s’appelle dba.11 - . par exemple /u01/app.so pam_limits.  les  groupes  et  les  permissions :  © ENI Editions .  Définir les limites du shell pour le compte oracle Pour améliorer les performances du logiciel.  Les  commandes  suivantes  permettent  de  créer  le  répertoire. adaptez les exemples au nom que vous avez choisi.  le  compte  utilisateur  utilisé  pour  l’installation  s’appelle oracle ;  il  a  le  groupe  Oracle  Inventory  comme groupe principal et le groupe OSDBA comme groupe secondaire.  SYSDBA  en  utilisant  En complément. Si vous  appelez ce compte autrement.Algeria Educ .All rights reserved . Chapitre Les bases de l’architecture Oracle). le terme « compte oracle » désignera le compte utilisé pour l’installation d’Oracle. du moment que vous utilisez bien un répertoire  Oracle Home différent. Traditionnellement. N’oubliez pas qu’il faut prévoir environ 3.so session session s Ajoutez les lignes suivantes dans le fichier /etc/profile (à adapter en fonction de la distribution et du shell par  défaut de l’utilisateur oracle) :  if [ $USER = "oracle" ].  Vous pouvez utiliser un répertoire Oracle Base déjà existant. then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi Créer les répertoires Pour  respecter  le  standard  OFA  présenté  précédemment. il est possible de créer un groupe (traditionnellement nommé oper) pour l’authentification AS SYSOPER (cf.

  OUI propose deux grands modes pour l’installation :  q L’installation de base ;  L’installation avancée. vous devez vous connecter en tant qu’utilisateur oracle. Bash shell (bash) sur SUSE ou Korn shell (ksh) .Algeria Educ .  Des répertoires supplémentaires peuvent être prévus sur d’autres disques pour la base de données et la zone de  récupération  rapide  (flash  recovery  area). SYSMAN et DBSNMP.  Le  propriétaire.  Dans  ce  mode.  les  groupes  et  les  permissions  doivent  être  définis  à  l’identique du premier répertoire.  L’installation  avancée  offre  un  plus  grand  contrôle  sur  l’installation.bash_profile  Bourne shell (sh).  cette  dernière  utilisera  le  système  de  fichiers  pour le stockage et le même mot de passe sera attribué aux comptes SYS. je peux appliquer les éventuels  . SYSTEM.  en  un  petit  nombre  d’étapes.  5. sous peine de recevoir une erreur lors de l’installation. Exemple :  TMP=/home/oracle/tmp TMPDIR=/home/oracle/tmp export TMP TMPDIR Se connecter au système en tant qu’utilisateur oracle Pour la suite de l’installation.  si  vous  choisissez  de  créer  une  base  de  données  de  départ. Installation avec Oracle Universal Installer  a.  sur  les  différentes  plates­ formes.  vous  pourrez  définir  les  variables  d’environnements  TMP et TMPDIR et y indiquer le nom d’un répertoire contenant suffisamment d’espace libre.  En  règle  générale.All rights reserved .  notamment  sur  les  composants  installés  et  la  configuration de la base de données de départ.  Configurer l’environnement du compte oracle Editez le fichier de démarrage du shell de l’utilisateur :  s Bash Shell (bash) sur Red Hat .  à  peu  de  chose  près.profile  C shell (csh ou tcsh) .login  s Ajoutez la ligne suivante dans ce fichier pour définir les droits d’accès par défaut des nouveaux fichiers :  umask 022 Si  le  répertoire  /tmp  ne  comporte  pas  suffisamment  d’espace. bien avoir des droits d’écriture dans  ce répertoire. Cette approche présente deux avantages :  q Après l’installation du produit. Le compte oracle doit donc.  je  dissocie  l’installation  d’Oracle  proprement  dite  de  la  création  de  la  base de données. Vue d’ensemble  Oracle  Universal  Installer  (OUI)  fonctionne  de  la  même  manière.  q L’installation  de  base  permet  d’installer  Oracle  avec  les  options  standards.12 - © ENI Editions .mkdir -p /u01/app chown -R oracle:oinstall /u01/app/ chmod -R 775 /u01/app/ Les répertoires oracle et oraInventory seront créés par l’installeur dans le répertoire parent du répertoire  Oracle Base  (/u01/app/ sur notre exemple). mais avant la création de la base de données.  sauf  pour  un  test  rapide.

All rights reserved .13 - . Lancer Oracle Universal Installer sur plate­forme Windows  c.patchs apparus depuis la sortie du produit. ou à la main (chapitre Création d’une nouvelle base de données). Installation de base  q q Il est possible d’utiliser Oracle Universal Installer en mode non interactif en utilisant un fichier de réponse.  C’est  une  raison  supplémentaire  pour  installer  Oracle  sans  créer  de  base  de  données.  Par  contre. La page d’accueil d’Oracle Universal Installer s’affiche alors.  Les  bases  de  données  de  départ  d’Oracle  sont  intéressantes  pour  avoir  rapidement  un  environnement  opérationnel  pour  le  test  ou  le  développement. je  peux configurer la base de données très précisément en fonction des besoins. Il  est  aussi  possible  de  cloner  une  installation  Oracle  Home  existante.exe  qui  se  trouve  sur  le  média  utilisé  pour  l’installation  (ou  dans le répertoire database si vous avez téléchargé le produit sur le site OTN).  q Lors de la création de la base de données en SQL ou avec l’assistant Configuration de base de données.  Pour  plus  d’informations.  Cette  fenêtre  vérifie  les  pré­requis  puis  lance  Oracle  Universal  Installer  si  les  exigences sont vérifiées.  Avec une telle approche.  Cette partie est donc organisée de la manière suivante :  q b.  lancez  l’application  setup. répond à la  majorité des besoins.Algeria Educ .  consultez  la  documentation « Oracle® Database Installation Guide » de votre plate­forme.  © ENI Editions .  ces  bases  contiennent  un  grand  nombre  de  schémas  et  de  fonctionnalités  qui  ne  sont  pas  forcément  utiles  pour  une  base  de  données  de  production. Lancer Oracle Universal Installer sur plate­forme Windows  s Pour  démarrer  l’installeur. avec création ou non d’une base de données de départ. à l’aide de l’assistant graphique. Une fenêtre de lancement d’Oracle  Universal  Installer  s’affiche. l’installation de base. Lancer Oracle Universal Installer sur plate­forme Linux  d.  b. C’est le seul mode d’installation qui sera présenté dans cet ouvrage.  puis  créer  ensuite  la  base  de  données.

 Le script vérifie les pré­requis puis  lance Oracle Universal Installer si les exigences sont vérifiées.  Vous  devez  donc  démarrer l’interface graphique dans votre session oracle.  lancez  l’application runInstaller  qui  se  trouve  sur  le  média  utilisé  pour  l’installation (ou  dans  le  répertoire database si vous avez téléchargé le produit sur le site OTN).14 - © ENI Editions . reportez­vous à la section Installation de base. par exemple avec la commande startx.  Pour  démarrer  l’installeur.All rights reserved .  en  mode  interactif.  doit  être  lancé  dans  un  environnement  X  Window.  positionnez  la  variable  d’environnement DISPLAY pour déporter l’affichage sur une autre machine.  c.  Si  l’affichage  X  ne  s’effectue  pas  sur  le  système  sur  lequel  le  produit  est  installé.  Pour l’installation de base.Algeria Educ . Lancer Oracle Universal Installer sur plate­forme Linux  Oracle  Universal  Installer.  . La page d’accueil d’Oracle Universal Installer s’affiche  alors.

 reportez­vous à la section Installation de base. Installation de base  Sélectionner une méthode d’installation © ENI Editions .All rights reserved .  d.15 - .  Pour l’installation de base.Algeria Educ .

  Sur plate­forme Linux ou Unix.  .  La méthode Installation de base permet d’installer Oracle très rapidement en saisissant quelques informations sur  le premier écran :  Emplacement du répertoire d’origine Oracle Home  Répertoire de l’installation d’Oracle (Oracle Home). SYSMAN et DBSNMP.16 - © ENI Editions .  Type d’installation  Au choix : Enterprise Edition.olivier-heurtel. Standard Edition. l’option Groupe DBA UNIX est proposée en plus :    Cette  option  permet  de  choisir  le  nom  du  groupe  utilisé  pour  identifier  les  comptes  utilisateurs  qui  peuvent  se  connecter AS SYSDBA en utilisant l’authentification par le système d’exploitation ; le groupe dba. voir la section Création de la base  de données à l’aide de l’assistant graphique dans le chapitre Création d’une nouvelle base de données). SYSTEM.  Nom global de base de données  Nom global de la base de données sous la forme nom_base[. Standard Edition One et Personal Edition (Windows uniquement).  Mot de passe de base de données  Mot de passe des comptes SYS.priv).All rights reserved . précédemment créé à  cet effet et affecté à l’utilisateur oracle.domaine] (par exemple orcl. est proposé.  Créer une base de données de départ (1482 MB) supplémentaire  Permet de créer une base de données de type « universel » (pour plus de détails.  s Saisissez les valeurs souhaitées puis cliquez sur le bouton Suivant.Algeria Educ .

All rights reserved .  Le  répertoire  d’inventaire oraInventory  est  créé  par  défaut  dans  le  répertoire  parent  du  répertoire  Oracle Base et le nom du groupe doit être celui du groupe Oracle Inventory créé précédemment (traditionnellement  oinstall).  s Saisissez. Si vous avez bien respecté les étapes de la phase de pré­installation. lors de la première installation d’un produit Oracle. les informations demandées et cliquez sur le bouton Suivant. si besoin. les valeurs proposées doivent  être  correctes.Sélectionner le répertoire de l’inventaire et les informations d’identification   Cet écran est affiché uniquement sur plate­forme Linux ou Unix. Il  permet de définir les informations relatives au répertoire d’inventaire (chemin et groupe ayant l’accès en écriture sur  ce répertoire).Algeria Educ .  Vérification de pré­requis propres au produit © ENI Editions .17 - .

  s Si la vérification échoue. il ne devrait pas y avoir de problème.All rights reserved .Algeria Educ .18 - © ENI Editions .  L’installeur vérifie que le système est correctement configuré. sélectionnez la ligne concernée et analysez la cause du problème :    . Si vous avez respecté les étapes de la phase de pré­ installation.

  vous  pouvez  cliquer  sur  le  bouton  Suivant  pour  poursuivre  l’installation.  Cette  fonctionnalité  n’est  pas  présentée  plus  en  détail  dans  ce  livre.  consultez  la  documentation  "Oracle®  Configuration  Manager  Installation  and Administration Guide" (à ce jour.  Pour  plus  d’informations.All rights reserved .2).  Ces  informations  sont  envoyées  à  intervalles  réguliers  dans  un  référentiel  du  support  Oracle.s Si possible.  Si vous pensez qu’il n’y a pas de problème. cette documentation existe uniquement en version 10.19 - .  A  noter  qu’elle  peut  être  installée  ultérieurement. elle peut être associée aux informations de configuration collectées  au préalable. une confirmation est demandée :    Vous pouvez alors poursuivre l’installation.  Inscription Oracle Configuration Manager   Cet  écran  est  affiché  uniquement  si  une  base  de  données  de  départ  est  créée  durant  l’installation  ;  il  permet  d’activer Oracle Configuration Manager.  Lorsqu’une  demande  de  service (Service Request) est soumise à Oracle.  © ENI Editions . mais à vos risques et périls. corrigez le problème et recommencez la vérification (bouton Ressayer). vous pouvez cocher la case :  s   Lorsque  les  vérifications  sont  terminées  avec  succès.Algeria Educ . S’il reste une vérification avec un échec.  Oracle  Configuration  Manager  est  utilisé  pour  collecter  des  informations  sur  la  configuration  d’une  installation.

 dans la base de données.All rights reserved .  Résumé   Dans cet écran.  Les langues du produit sont les langues utilisées par OUI lors de l’installation. et non les langues disponibles  dans la base de données Oracle proprement dite.  s Cliquez sur le bouton Installer pour lancer l’installation. Vous pouvez installer Oracle en anglais avec l’installeur et  utiliser plus tard le français.  ainsi que les langues du produit.  Installation et configuration du logiciel Oracle Pendant l’installation. ou d’autres langues.Algeria Educ .  .s Cliquez sur le bouton Suivant.20 - © ENI Editions . un écran présentant l’état d’avancement est affiché. vous pouvez notamment repérer les chemins utilisés pour les répertoires Oracle Base et Oracle Home.

Algeria Educ .    Ces assistants ne sont lancés que si une base de données de départ est créée au cours de l’installation. plusieurs assistants de configuration sont automatiquement lancés par l’installeur.21 - .All rights reserved .  Assistants de configuration À la fin de l’installation. Si  © ENI Editions .

 l’écran suivant s’affiche :  .  Une fenêtre spécifique d’avancement s’affiche pour l’assistant Configuration de base de données :    À la fin de la création de la base de données.Algeria Educ . ces assistants ne sont pas lancés et il faudra configurer Oracle Net ultérieurement.22 - © ENI Editions .ce n’est pas le cas.All rights reserved .

  la  base  de  données  de  départ  d’Oracle  contient  un  grand  nombre  de  comptes  © ENI Editions .  Un  clic  sur  le  bouton  Gestion  des  mots  de  passe…  ouvre  une  fenêtre  de  dialogue  qui  permet  d’activer  ou  désactiver  des  comptes  utilisateur et de définir les mots de passe de ces différents comptes :    Comme  vous  pouvez  le  constater.All rights reserved .Algeria Educ .23 - .  Cet  écran  indique  notamment  l’URL  à  utiliser  pour  accéder  à  la  console  Enterprise  Manager.

  par défaut /usr/local/bin). oraenv et coraenv) dans un répertoire local bin (demandé par le script.Algeria Educ .sh copie trois fichiers (dbhome. Pour verrouiller/déverrouiller un compte.  Il modifie les droits et le groupe du répertoire oraInventory.  Le script orainstRoot.All rights reserved .  Le script root. et vous invite à exécuter des scripts de configuration  en tant qu’utilisateur root.  Exécuter les scripts de configuration   Cet écran est affiché uniquement sur plate­forme Linux ou Unix.sh est exécuté uniquement lors de la première installation d’un produit Oracle sur la machine.utilisateurs. ouvrez une fenêtre de terminal en tant que root :  .  reportez­vous  à  la  documentation  « Oracle®  Database Installation Guide ».  Pour  plus  d’informations  sur  ces  différents  comptes. crée le fichier /etc/oratab (s’il n’existe pas déjà) et y ajoute une entrée pour la base de  données éventuellement créé pendant l’installation.  s Pour exécuter ces deux scripts. Le rôle et l’utilisation de ces différents fichiers seront présentés  ultérieurement. il suffit de cliquer dans la colonne Verrouiller  le compte.24 - © ENI Editions .

  Lorsque le script est terminé.Algeria Educ .25 - . cliquez sur le bouton OK de la fenêtre de dialogue.  s s Fin de l’installation L’installation est terminée ; un dernier écran s’affiche :    © ENI Editions .All rights reserved .  Tapez [Entrée] pour accepter la valeur par défaut proposée par chaque invite affichée par le script root.sh.

26 - . Dans le cas contraire. vous devez aller sur le site Web OracleMetaLink. puis saisissez RDBMS Server.Algeria Educ s s s s .  Une  fois  connecté. Post­installation  a.  Dans le champ Release. Par ailleurs.  Pour  accéder  à  OracleMetaLink.com    À l’heure où cet ouvrage est rédigé.  Dans le champ Platform or Language.All rights reserved .Dans le cas où vous avez créé une base de données de départ.  cliquez  sur  l’onglet  Patches  &  Updates  en  haut  à  droite  de  l’écran  puis  sur  le  lien  Simple  Search.  Dans le champ Patch Type.  s Pour vous connecter. vous devez posséder un identifiant de support qui vous est fourni dans le cadre d’un contrat de support. Télécharger et appliquer des patches Oracle  La version d’Oracle que vous venez d’installer à partir d’un média ou d’un téléchargement sur OTN ne contient pas  les derniers patches applicables au produits.  6.  s Cliquez sur le bouton Quitter pour quitter Oracle Universal Installer (une confirmation vous sera demandée). Oracle est en train de mettre en place une nouvelle version de son site  de support (dorénavant appelé My Oracle Support). Oracle publie régulièrement des patches pour ces produits  et vous pouvez donc être amenés à mettre à jour votre configuration à intervalles réguliers. la zone "n’oubliez pas…" n’est pas affichée.oracle. Il est donc possible que vous ayez des pages légèrement  différentes de celles présentées ici.  vous  devez  disposer  d’un  compte ;  pour  ouvrir  un  compte  (lien  Register  For  Metalink). sélectionnez votre plate­forme.  © ENI Editions .  Pour identifier et télécharger les patches d’un produit.  Cliquez sur le bouton Go pour obtenir la liste des patches disponibles. puis saisissez votre identifiant et votre mot de passe. cliquez sur le lien Login To Metalink. à l’adresse  suivante : http://metalink.  s Dans la page qui s’affiche :  s Dans le champ Search By. cet écran rappelle l’URL à utiliser pour accéder à la  console Enterprise Manager. sélectionnez Product or Family. sélectionnez la version souhaitée du produit. sélectionnez la valeur Patchset/Minipack.

Exemple    À l’heure où cet ouvrage est rédigé.1.  Un Patchset ou Minipack est un regroupement de patches qui corrigent plusieurs problèmes. les  Patchsets  sont  cumulatifs  (le  Patchset  2  reprend  les  corrections  du  Patchset  1)  et  peuvent  être  installés  systématiquement  sans  avoir  besoin  de  les  qualifier ;  Oracle  indique  que  les  correctifs  ont  un  faible  impact  sur  le  système et ont été complètement testés (mais le risque zéro n’existe pas…).All rights reserved .1. Oracle Database est distribué en version 11.  il  est  possible  d’appliquer des  patches  individuels  qui  corrigent  un  problème  précis  (indiquez  Patch  dans  le  champ  Patch  Type) ;  ces  patches  ne  doivent généralement être appliqués qu’en réponse à un problème précis identifié dans la base des bugs.27 - .0.0. En règle générale.7 n’est  pas encore disponible (mais il devrait l’être au moment où vous lirez ce livre).6 et le Patchset 11.Algeria Educ .  Exemple de recherche de patches individuels    © ENI Editions . Sinon.

  pour  afficher  la  note  du  patch  qui  décrit  les  problèmes  corrigés  et  la  procédure  s Cliquez sur l’icône  dans la note).s Cliquez  sur  l’icône  d’installation.  pour télécharger le patch puis procédez à son installation (suivez la procédure indiquée  La  procédure  d’installation  dépend  du  patch.  WE8ISO8859P15  . Configurer l’environnement de travail  Choix du langage et du jeu de caractères Oracle supporte différents langages pour l’interaction avec la base de données. Le langage courant est défini dans la  variable d’environnement NLS_LANG.All rights reserved .  Les jeux de caractères les plus couramment rencontrés sont :  US7ASCII  ASCII 7­bit American.CARACTERES  Avec :  LANGAGE  Langage utilisé pour les messages (ainsi que les noms de jour ou de mois).  Ainsi  AMERICAN_FRANCE.    NLS signifie National Language Support.  CARACTERES  Jeu  de  caractères  utilisé  pour  l’affichage  des  messages  (peut  être  différent  du  jeu  de  caractères  utilisé  pour  le  stockage des chaînes de caractères dans la base de données ­ voir le chapitre Les outils d’administration ­ Création  d’une nouvelle base).  WE8ISO8859P1  ISO 8859­1 West European (ne gère pas le symbole de l’euro).  les  Patchsets  s’installent  avec  Oracle  Universal  Installer et les autres avec l’utilitaire opatch (installé dans le sous­répertoire OPatch du répertoire Oracle Home).  En  règle  générale.  PAYS  Nom du pays (définit des conventions par défaut pour les formats de dates et de nombres. il y a la plupart du temps une procédure de mise à niveau à appliquer aux bases de données  (exécution d’un ou plusieurs scripts). Cette variable a le format suivant : LANGAGE_PAYS.  b.  Exemple :  FRENCH_FRANCE.WE8ISO8859P15 permet d’avoir des messages en anglais mais des conventions françaises par défaut  pour les formats de dates et de nombres.US7ASCII Vous  pouvez  parfaitement  choisir  un  langage  et  un  pays  qui  ne  correspondent  pas.  etc.).WE8ISO8859P15 AMERICAN_AMERICA. le symbole monétaire. Dans  le cas des Patchsets.28 - © ENI Editions .  Oracle  Enterprise  Manager  peut  être  utilisé  pour  récupérer  et  appliquer  des  patches ;  il  peut  même  être  configuré pour télécharger automatiquement les patches disponibles.Algeria Educ .

 soit en modifiant soi­même la  variable PATH.  avant  de  lancer  un  outil.WE8MSWIN1252  pour  une  version  française  de  Windows).  Pour éviter ce genre de problème. la variable d’environnement PATH contient plusieurs chemins  vers les répertoires bin des différents Oracle Home.  Si  vous  souhaitez  utiliser  des  valeurs  différentes.ISO 8859­15 West European (gère le symbole de l’euro).All rights reserved .  sans  problème.  Les  différents  paramètres  présents  dans  la  base  de  registre  sont  décrits  dans  la  documentation  Oracle®  Database Platform Guide for Windows.  sans  mentionner le chemin complet.  Vous  pouvez  donc.  en  y  mettant  notamment  le  chemin vers le répertoire bin.  ce  qui  risque  de  poser  des  problèmes  si  vous  souhaitez  travailler  sur  une  base de données d’un autre Oracle Home (et donc peut­être d’une autre version).  permet  d’avoir  les  accents  dans  les  environnements ligne de commande). Ce paramètre contient le nom de la dernière instance créée  dans le Oracle Home concerné ; c’est l’instance à laquelle vous vous connectez par défaut quand vous lancez un outil  d’administration directement sur le serveur (cf. une première solution consiste à utiliser un chemin complet pour lancer l’outil du  bon Oracle Home.0 UTF­8 Universal (gère le symbole de l’euro).  Lorsque votre système comporte plusieurs Oracle Home.  vous  pouvez  modifier  les  paramètres  de  la  base  de  registre  ou  définir  des  variables  d’environnement  de  même  nom  (dans  le  panneau  de  configuration Système ou dans une fenêtre de commandes).  Plate­forme Windows Sur  plate­forme  Windows.  WE8PC850  IBM­PC  Code  Page  850  8­bit  West  European  (sur  plate­forme  Windows.  WE8PC858  IBM­PC Code Page 858 8­bit West European (gère le symbole de l’euro).  défini  par  défaut  par  l’installeur  en  fonction  de  la  localisation  du  système  d’exploitation  (typiquement  FRENCH_ FRANCE.  © ENI Editions .  c’est  celui  du  Oracle  Home  par  défaut  qui  sera  lancé.Algeria Educ .  il  n’y  a  rien  de  particulier  à  faire :  l’installeur  a  pris  soin  de  positionner  plusieurs  paramètres  dans  la  base  de  registre  et  de  définir  la  variable  d’environnement  PATH. soit en utilisant Oracle Universal Installer :  s Lancez  Oracle  Universal  Installer  (menu  Démarrer ­ Programmes ­ Oracle  ­  nom_oracle_home ­ Oracle  Installation Products ­ Universal Installer).  Si  vous  lancez  un  outil  sans  mentionner  de  chemin  complet.  WE8MSWIN1252  MS Windows Code Page 1252 8­bit West European (gère le symbole de l’euro).  Vous pouvez notamment utiliser le jeu de caractères WE8PC850 si vous souhaitez avoir un affichage correct  des accents dans les outils ligne de commande (permet d’éviter des messages du type Connectú).  la  base  de  registre  contient  une  clé  HKEY_LOCAL_MACHINE\ SOFTWARE\ORACLE\KEY_nom_oracle_home qui stocke plusieurs paramètres relatifs au Oracle Home. dans un certain ordre ; le premier chemin trouvé est.  La  base  de  registre  contient  aussi  un  paramètreNLS_LANG. section SQL*Plus dans le chapitre Les outils d’administration).  lancer  des  outils  Oracle  en  ligne  de  commande  (sqlplus  par  exemple).29 - . La deuxième solution consiste à changer de Oracle Home par défaut.  Pour  chaque  Oracle  Home.  celui  du Oracle  Home  par  défaut.  UTF8  Unicode 3.  Consultez  la  documentation  Oracle®  Database  Globalization  Support  Guide  pour  avoir  plus  d’informations  sur le support des différents langages et pays.  Les paramètres de la base de registre comme ORACLE_SID et NLS_LANG sont utilisés par défaut par les différents outils  Oracle.  Vous y trouverez notamment un paramètreORACLE_SID. en quelque  sorte.

  Plate­forme Unix ou Linux Sur plate­forme Unix ou Linux. Vous pouvez alors sélectionner les  Oracle Home  qui  doivent  apparaître  dans  la  variable  d’environnement  PATH  et  modifier  leur  ordre.  À  chaque  fois  que  vous  utiliserez  ce  compte  pour  administrer  Oracle.  ORACLE_SID.1.s Sur l’écran de bienvenue. et éventuellement ORACLE_HOME et PATH.0/db_1 ORACLE_SID=ORCL PATH=$PATH:$ORACLE_HOME/bin NLS_LANG=FRENCH_FRANCE.30 - © ENI Editions ..  vous  serez  amenés  à  positionner  différentes  variables  d’environnement  :  ORACLE_HOME(et  éventuellement  ORACLE_BASE).  lors  de  chaque  session  ou  être  définies  dans  le  fichier de démarrage du shell de l’utilisateur.  et  éventuellement  plusieurs  Oracle  Home.  openmirrors. cliquez sur le bouton Produits installés.  Cliquez  sur  le  bouton  Appliquer  pour  enregistrer vos modifications.All rights reserved .  il  faut  penser  à  modifier  en  conséquence les variables ORACLE_SID.UTF8 export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH NLS_LANG Si  vous  avez  plusieurs  bases  de  données.  Ces  variables  d’environnement  peuvent  être  définies  à  la  main. cliquez sur l’onglet Environnement :  s   Cet  onglet  liste  les  différents  Oracle  Home  trouvés  sur  le  système.  Exemple :  ORACLE_BASE=/u01/app/oracle ORACLE_HOME=$ORACLE_BASE/product/11..  dans  leur  ordre  d’apparition  dans  la  variable  d’environnement PATH  (affichée  dans  la  zone Chemin).  Dans la fenêtre Inventaire qui s’affiche. l’installeur ne modifie pas l’environnement du compte dans lequel Oracle est installé.Algeria Educ .com .  PATH(chemin  vers  ORACLE_HOME/bin notamment) et éventuellement NLS_LANG.

0/db_1:Y Voir le chapitre Démarrage et arrêt pour l’utilisation de ce fichier dans le contexte du démarrage d’une base  à l’aide du script dbstart et le chapitre Création d’une nouvelle base de données pour la mise à jour de ce  fichier après la création d’une nouvelle base de données. /usr/local/bin/oraenv Ces scripts vous invitent à saisir le nom de l’instance à laquelle vous voulez accéder et modifient en conséquence la  valeur  des  variables  d’environnement  ORACLE_SID. oraenv ORACLE_SID = [oracle] ? ORCL The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.4.0/db_1 is /u01/app/oracle [oracle@srvlinora ~]$ sqlplus / as sysdba SQL*Plus: Release 10.All rights reserved ..31 - .  Si l’instance  n’est pas trouvée dans le fichier oratab.. Ces deux  scripts sont créés pendant l’installation (par le script root..6.  Le  fichier  /etc/oratab est.2. oraenv ORACLE_SID = [ORCL] ? TEST The Oracle base for ORACLE_HOME=/u01/app/oracle/product/10.0/db_1:Y TEST:/u01/app/oracle/product/10....  Pour déterminer la valeur de la variable ORACLE_HOME.  un  référentiel  central  des  différentes  instances  (et  donc  bases  de  données) présentes sur le serveur.1.2. Configurer le démarrage et l’arrêt automatique  Plate­forme Windows Sur  plate­forme  Windows.  Exemple  [oracle@srvlinora ~]$ tail -2 /etc/oratab ORCL:/u01/app/oracle/product/11.  Si le fichier oratab est correctement renseigné (ce qui est conseillé). [oracle@srvlinora ~]$ .  Pour les exécuter.1. lui aussi créé dans l’installation.sh) et se situent par défaut dans /usr/local/bin.0 .0. utilisez une des commandes suivantes :  source /usr/local/bin/coraenv . [oracle@srvlinora ~]$ c.1... . SQL> exit . ces scripts appellent le script dbhome..  en  quelque  sorte.  ORACLE_ HOME  et  PATH  (ajout  du  chemin  $ORACLE_HOME/bin  à  la  variable PATH..0/db_1 is /u01/app/oracle [oracle@srvlinora ~]$ sqlplus / as sysdba SQL*Plus: Release 11.  le  script oraenv  ou coraenv demande de saisir la valeur de la  variable ORACLE_HOME.2. .0.).  l’installeur  crée  automatiquement  les  services  qui  permettent  le  démarrage  et  l’arrêt  © ENI Editions . vous pouvez utiliser un script shell fourni par Oracle : coraenv(C shell) ou oraenv (autres shells).. SQL> exit .1. les scripts oraenv et coraenv sont très pratiques  pour modifier l’environnement du compte et basculer d’une base à une autre.Pour cela.0 ..Algeria Educ .0/db_1:N [oracle@srvlinora ~]$ sqlplus / as sysdba -bash: sqlplus: command not found [oracle@srvlinora ~]$ . Il contient des lignes de la forme :  $ORACLE_SID:$ORACLE_HOME:{Y|N} Exemple :  ORCL:/u01/app/oracle/product/11. Ce dernier se base sur le  fichier /etc/oratab.

 nous allons présenter les actions à effectuer sur une plate­forme Red Hat Enterprise Linux ES 4.  certaines  valeurs  ou  certaines  commandes  peuvent  être  différents  (consultez  la  documentation  Oracle®  Database  Administrator’s  Reference  de  votre  plate­forme  et  la  documentation  de  votre  système  d’exploitation  sur  les  processus de démarrage et d’arrêt).LOG # chemin vers un fichier journal # .log VAR_LOCK=/var/lock/subsys/dbora # # Si le script est appelé sans deuxième paramètre (appel initial). then su .0/db_1 ORACLE_HOME_LISTENER=$ORACLE_HOME ORACLE=oracle LOG=$ORACLE_HOME/dbora.  Les  principes  sont  les  mêmes  pour  les  autres  distributions  (ou  Unix  en  général).ORACLE_HOME_LISTENER # chemin vers le répertoire Oracle Home du listener # .  Il est de la responsabilité de l’administrateur du système (root) de créer un script de démarrage de ces composants  et le faire s’exécuter dans les niveaux d’exécution souhaités.  Dans le répertoire /etc/init.  base  de  données. ’stop’) # indiquer que le service a été stoppé (du moins a priori) rm -f $VAR_LOCK esac exit fi PATH=${PATH}:$ORACLE_HOME/bin export ORACLE_HOME PATH openmirrors.  mais  certains  chemins.  console  Oracle  Enterprise  Manager.All rights reserved . >créez un script nommé dbora avec un contenu similaire au suivant :  #! /bin/sh # # chkconfig: 35 99 01 # description: démarre et arrête les services Oracle # # Modifiez la valeur des variables suivantes pour tenir compte de # votre environnement : # .$ORACLE -c "$0 $1 ORA" case $1 in ’start’) # indiquer que le service a démarré (du moins a priori) touch $VAR_LOCK .   Plate­forme Unix ou Linux Sur plate­forme Unix ou Linux.ORACLE # nom du compte oracle # ..com . l’installeur ne configure aucun composant en démarrage automatique.VAR_LOCK # chemin vers le fichier utilisé par le système pour savoir # si le service est démarré # (normalement /var/lock/subsys/<nom du service>) ORACLE_HOME=/u01/app/oracle/product/11.1.ORACLE_HOME # chemin vers le répertoire Oracle Home des # scripts dbstart et dbshut # .  Nous étudierons plus en détail ces différents composants dans la suite de cet ouvrage. # on le relance sous le compte oracle (du coup avec un deuxième # paramètre) if [ ! "$2" = "ORA" ] .  Connectez­vous en tant que root.Algeria Educ .  Dans cet ouvrage.d.automatique  des  différents  composants  Oracle :  processus  d’écoute.32 - © ENI Editions .  Il n’y a donc rien de particulier à faire à ce stade.

  ce  script  peut  être  adapté.d/K01dbora Ces liens symboliques peuvent être créés par l’utilitaire chkconfig qui exploite les informations contenues dans les  commentaires en début de script :  chkconfig --add dbora Le système est opérationnel.All rights reserved . les scripts dbstart et dbshut prennent en charge le démarrage et l’arrêt du processus  d’écoute.d/K01dbora /etc/rc.d/rc6.d/S99dbora /etc/rc. *) echo "usage: $0 {start|stop}" .  © ENI Editions . il faut plutôt utiliser la version la plus récente  dans  le  script  dbora  (avec  une  variable  $ORACLE_HOME  configurée  en  conséquence).. et un arrêt (plutôt en premier) dans les niveaux  0 (arrêt du système) et 6 (redémarrage du système) :  ln ln ln ln -s -s -s -s /etc/init.d/rc3.  Si plusieurs versions d’Oracle sont installées sur votre serveur.d/rc0.d/dbora /etc/rc. il doit être complété pour prendre en charge la console  Oracle Enterprise Manager.  Changer le groupe du fichier dbora en dba (ou votre groupe OSDBA s’il est différent) et modifier les permissions du  fichier :  chgrp dba dbora chmod 750 dbora Créer des liens symboliques vers le script dbora dans les répertoires des niveaux d’exécution adéquats.d/rc5.d/S99dbora /etc/rc. ’stop’) echo "***** $(date) .33 - .d/dbora /etc/init.  En  conséquence.d/dbora /etc/init.Algeria Educ . par exemple  pour avoir un démarrage (plutôt en dernier) dans les niveaux 3 et 5..  Chapitre  Les  outils  d’administration).  afin  d’utiliser  différents  Oracle Home.$0 : arrêt" > $LOG $ORACLE_HOME/bin/dbshut $ORACLE_HOME_LISTENER > $LOG 2>&1 & .$0 : démarrage" > $LOG $ORACLE_HOME/bin/dbstart $ORACLE_HOME_LISTENER > $LOG 2>&1 & ..  ou  scindé  en  plusieurs  scripts.  Si  besoin. esac exit Depuis la version 11.  La  seule  exception  potentielle  concerne  le  démarrage  de  la  console  Oracle  Enterprise  Manager  (cf.touch $LOG chmod a+r $LOG case $1 in ’start’) echo "***** $(date) . Par contre.d/dbora /etc/init.  le  script  présenté  ci­dessus  permet  le  démarrage  et  l’arrêt  automatique  du  processus d’écoute et des bases de données.

. varient d’une plate­forme à l’autre. En conséquence. reportez­vous à la documentation Oracle spécifique à votre plate­forme  q Oracle® Database Client Installation Guide for.  Oracle® Database Client Release Notes for. en utilisant un fichier de réponse. Les principales étapes sont les suivantes :  q spécification du répertoire d’inventaire (première installation sur plate­forme Linux ou Unix) ;  désignation de l’emplacement des fichiers (Oracle Home) ;  choix d’un type d’installation (voir ci­dessous) ;  choix éventuel des composants à installer (installation personnalisée uniquement) ;  q q q openmirrors.Algeria Educ .. dans cet ouvrage. Pour  plus d’informations. nous présenterons ces procédures de manière très synthétique...  q q q Un client Oracle comporte généralement au minimum le composant Oracle Net qui permet d’accéder à une base Oracle  du réseau.All rights reserved .NET ;  Drivers JDBC ;  pré­compilateurs Pro*C/C++.  post­ installation) ;  Le  standard  OFA.  en  plus  simples.  q q q q q L’installation proprement dite s’effectue avec Oracle Universal Installer.  aux  procédures  d’installation  du serveur..  Oracle® Database Client Quick Installation Guide for.) ;  des produits nécessaires pour le développement ou le déploiement d’applications.com © ENI Editions . Pro*COBOL..Installation du client  Les  procédures  d’installation d’un  client  Oracle  ressemblent  beaucoup.  q q Les similitudes d’installation entre un serveur et un client portent notamment sur :  q Les  différentes  étapes  de  l’installation  (pré­installation.  avec  notamment  un  répertoire  Oracle  Home  (plusieurs  clients  peuvent  être  installés  sur  la  même machine) ;  Les spécificités de chaque plate­forme (variables d’environnement.  installation  avec  Oracle  Universal  Installer. etc.1- .  q Les produits pour le développement ou le déploiement qui peuvent être installés. base de registre. En complément. le client peut comporter :  q des outils d’interrogation ou d’administration (SQL*Plus.  Les principaux produits sont les suivants :  q OCI (Oracle Call Interface ­ API de bas niveau utilisable en C par exemple) ;  Oracle Object For OLE (produit équivalent à OLE DB) ;  Drivers ODBC ;  Provider pour OLE DB ou .) ;  La possibilité d’effectuer une installation non interactive... etc.

  En  cas  de  besoin.  À  ce  stade.  Sur plate­forme Unix ou Linux. SQL*Plus et les drivers JDBC. dans le cas d’une installation autre que InstantClient. Dans  le  cas  d’une  installation  Runtime.  cochez  la  case  Exécuter  la  configuration  standard  puis  cliquez sur le bouton Suivant (deux fois).2- © ENI Editions .q affichage d’un écran de synthèse permettant de confirmer l’installation.  Pour  effectuer  une  configuration  standard.sh  dans une connexion root. Nécessite peu d’espace disque (plus ou moins 150 Mo selon la plate­forme).  l’assistant  propose d’effectuer une configuration standard ou une configuration manuelle.  y  compris  les  outils  d’administration  et  les  produits  de  développement  Runtime : installe un client simple comportant principalement Oracle Net.  avec  un  produit  de  développement précis. afin de configurer le composant Oracle Net.  Administrateur  :  installe  la  quasi­totalité  des  composants. puis sur le bouton Terminer.  l’assistant  Configuration  Oracle  Net  peut  être  relancé  ultérieurement.  Personnalisée : permet de sélectionner précisément les composants et d’installer un client parfaitement adapté à un  besoin  précis  (développeur. il faut configurer Oracle Net (cf. etc.  Pour  utiliser  ce  client  instantané.  déploiement) :  avec  ou  sans  outil  (SQL*Plus  par  exemple).  À la fin de l’installation.  Sur OTN.All rights reserved .  vous  pouvez  tester  une  connexion  avec  votre  base  en  utilisant  la  méthode  de  résolution  de  nom  Easy  Connect :  > sqlplus system/xxxx@//hôte/service Pour utiliser une autre méthode de résolution de nom. La configuration standard est souvent  suffisante.  l’assistant  effectue  une  configuration  standard :  cliquez  simplement  sur  le  bouton  Suivant  puis  sur  le  bouton  Terminer.  L’installation est alors terminée !  L’environnement de travail peut ensuite être configuré comme sur le serveur (cf.  Dans  le  cas  d’une  installation  Administrateur  ou  Personnalisée.  au  moins  pour  démarrer. en mode automatique ou interactif selon le type d’installation.  sans  utiliser  Oracle  Universal  Installer. Chapitre Oracle Net). section Installation du serveur dans le  chapitre Installation). Chapitre Oracle Net).  . il faut exécuter le script root. vous pouvez télécharger un client instantané (instant client) sous la forme d’une archive compressée  qui  s’installe  directement  par  décompression. l’assistant Configuration Oracle Net est  lancé.Algeria Educ .  Les types d’installation proposés par l’installeur sont les suivants :  InstantClient  :  n’installe  que  les  librairies  nécessaires  aux  applications  qui  utilisent  les  OCI  avec  la  fonctionnalité  de  "client instantané" (instant client). après en avoir terminé avec la configuration Oracle Net.  il  faut  juste  ajouter  le  répertoire  d’installation  dans  la  variable  d’environnement  utilisée  pour  le  chargement des librairies (PATH sur plate­forme Windows et LD_LIBRARY_PATH sur plate­forme Unix ou Linux).  La  fonctionnalité  de  "client  instantané"  permet  d’établir  une  connexion  à  une  base  de  données  sans  configuration préalable d’Oracle Net (cf.

ora).  Les  fonctions  essentielles d’Oracle Net sont d’établir des sessions de communication réseau entre deux machines (client ↔ serveur  ou serveur ↔ serveur) et de transférer les données entre les deux machines.  Dans  cet  ouvrage. adresse  du serveur. Ce processus d’écoute se matérialise par un service sur plate­forme Windows et un processus sur  plate­forme Unix ; il est configuré par le fichier listener.  etc.  Les  applications  ont  simplement besoin de connaître un nom de service réseau (sorte d’alias) qui leur permettra d’établir une connexion  avec la base de données souhaitée.  Oracle Net doit être installé côté client et côté serveur ; cette installation est réalisée par défaut par Oracle Universal  Installer. là encore.  nous  nous  intéresserons  uniquement  à  la  communication  entre  un  client  et  un  serveur. un processus d’écoute est chargé de recevoir les demandes de connexion et de les transmettre à la  base concernée. Après installation.  Plusieurs méthodes peuvent être utilisées pour la résolution du nom de service :  Locale (local naming)  Un  fichier  de  configuration  (tnsnames. port de communication (dans le cas du protocole TCP) et nom du service (instance dans le cas qui nous  intéresse).  quel  est  le  protocole  à  utiliser  pour  s’y  connecter. Principes de fonctionnement  Le schéma suivant illustre le fonctionnement (simplifié) d’Oracle Net :    Lorsqu’une  application  cliente  utilise  un  nom  de  service  réseau  pour  se  connecter.  se  charge  de  la  résolution.1- .  Cette  openmirrors.Introduction  1.ora. Rôle d’Oracle Net  Oracle  Net  permet  à  des  produits  Oracle  situés  sur  des  machines  différentes  de  communiquer.  2. côté client et côté serveur.com © ENI Editions .  La  communication  entre  deux  serveurs  est  un  cas  particulier  où  un  serveur  joue  le  rôle  de  client  vis­à­vis  de  l’autre  serveur ; sur ce serveur client. la couche Oracle Net doit être configurée. Oracle Net doit être configuré à la fois en serveur et en client.  situé  sur  le  poste  de  l’utilisateur.All rights reserved .  Oracle Net a pour objectif de rendre le réseau "transparent" pour les applications : les applications n’ont pas besoin  de  savoir  où  se  trouve  le  serveur.  ce  nom  de  service  réseau  est  résolu par Oracle Net en un descripteur de connexion comportant l’adresse du service : protocole à utiliser.Algeria Educ .  Côté serveur.

  en  plus  de  l’identifiant  de  l’instance (SID).  Externe  Un produit tiers se charge de la résolution. Cette méthode est apparue en version 10.  Elle  ne  nécessite  aucune  configuration mais le réseau n’est plus transparent pour l’utilisateur.DB_DOMAIN).  soit par un nom de service.  Les services sont aussi utilisés par Oracle pour faire un suivi d’activité par service (charge.rh Un nom de service peut inclure une identification de domaine.  si  une  base  abrite  deux  applications  (une  application  de  paie  et  une  application  de  gestion  des  ressources humaines). V$ACTIVE_SERVICES. il est possible de désigner l’instance cible.  Connexion simplifiée (easy connect naming)  La connexion s’effectue sans nom de service. Cette méthode nécessite un produit tiers. priorité.fr.2- © ENI Editions . Oracle Net est configuré côté client pour utiliser la méthode de résolution de nom  locale et la connexion simplifiée (si TCP/IP est installé sur le poste client).méthode est la plus couramment utilisée.olivier. performance.).  une  instance  peut  être  identifiée  par  un  ou  plusieurs  noms  de  service. etc.  Par défaut (configuration standard). Ils peuvent aussi être supervisés par plusieurs vues  du dictionnaire de données (DBA_ SERVICES.  Cette  méthode  est  utilisable  uniquement  en  environnement  TCP/IP.  Par  exemple. Ces noms de service peuvent être définis grâce au paramètre SERVICE_NAMES du fichier d’initialisation. Le nom de service de l’instance  peut être vu comme un nom logique.) et gérés par le package DBMS_SERVICE. en utilisant directement une adresse TCP/IP du type [//]hôte[:port] [/service]. etc. soit par son identifiant. Nom de service et nom d’instance  Depuis  Oracle8i. le paramètre SERVICE_NAMES est alors égal par défaut au paramètre  DB_NAME.  Annuaire LDAP (directory naming)  Un annuaire LDAP se charge de la résolution.  .  L’identifiant de l’instance peut être vu comme étant le nom "physique" de l’instance.  Par  défaut. nom de service et nom d’instance  sont égaux. Exemple : paie.  3.  le  paramètre  SERVICE_NAMES  est  égal  au  nom  global  de  la  base  de  données  (DB_NAME.  Ils peuvent être gérés et supervisés dans le Database Control. qui est lui­ même généralement égal au nom de l’instance ; dans ce cas.  Lors de la définition d’un nom de service réseau.  Si  le  paramètre DB_DOMAIN est vide (valeur par défaut). il est possible de définir deux noms de service pour l’instance :  SERVICE_NAMES = paie. correspondant à un service offert par la base de données ouverte par l’instance.All rights reserved .Algeria Educ .

  Cette configuration peut s’effectuer directement dans le fichier listener.oramais cela nécessite de bien comprendre  la structure de ce fichier.  aucun  processus  d’écoute  n’a  encore  été  créé ; dans ce cas.orase  trouve  par  défaut  dans  le  répertoire  $ORACLE_HOME/ network/admin  (plate­forme  Unix  ou  Linux) ou %ORACLE_HOME%\network\admin (plate­forme Windows).  Paramètres généraux   La  configuration  des  paramètres  généraux  s’effectue  dans  les  trois  onglets  Général. le dossier Processus d’écoute est vide.Configuration côté serveur  1. ce qui n’est pas immédiat (voir l’exemple plus loin).Algeria Educ . Le plus simple consiste alors à utiliser  l’application Oracle Net Manager(menu Programmes ­ Oracle ­ nom_oracle_home ­ Outils de configuration et de  migration ­ Net Manager sur plate­forme Windows ou script shell netmgr sur plate­forme Unix).  Le  processus  d’écoute  peut  aussi  être  configuré  et  administré  à  partir  de  la  console  Oracle  Enterprise  Manager.1- .  Journalisation  et  trace  et  Authentification. sélectionnez le menu  Modifier  ­  Créer  et  donnez  un  nom  au  processus  d’écoute  (par  exemple  LISTENER)  dans  la  boîte  de  dialogue  qui  s’affiche. Cet emplacement peut être modifié en définissant la  variable d’environnement TNS_ADMIN.  Le  fichier  listener.com © ENI Editions .All rights reserved .  openmirrors.    Si  aucune  base  de  données  n’a  été  créée  durant  l’installation  d’Oracle. Pour créer un processus d’écoute. c’est­à­dire à indiquer "comment"  et pour quelles bases il "écoute". Configuration du processus d’écoute  La configuration côté serveur consiste à configurer le processus d’écoute LISTENER.

  Le  processus  d’écoute  peut  écouter  à  plusieurs  adresses  (pour  des  protocoles  différents.ora.2- © ENI Editions .  IPC  (Interprocess Communication) :  indique  un  nom  unique  de  service  (nom  de  l’instance  pour  une  base  de  données). les éventuelles modifications effectuées dans  Oracle Net Manager ne sont pas prises en compte. etc.  pour  des  variantes  du  même protocole ­ par exemple deux ports en TCP/IP. ils sont enregistrés dans le fichier listener. les fichiers de traces sont enregistrés par  défaut dans ADR. La trace peut être activée pour aider à résoudre des problèmes  de fonctionnement du processus d’écoute. il faut désactiver l’utilisation d’ADR ; tant que ce n’est pas le cas. Depuis la version 11.  La configuration de l’emplacement d’écoute dépend du protocole :  q TCP/IP : indique le nom ou l’adresse IP du serveur et le port de communication (1521 par défaut).  Le  fichier  journal  enregistre  essentiellement  des  informations  sur  le  démarrage  du  processus  d’écoute et les demandes de connexion reçues.  NMP (Named Pipes) : indique le nom du serveur et le nom du canal (typiquement ORAPIPE). ce fichier (nommé listener.  L’onglet Authentification permet de définir un mot de passe à utiliser pour lancer l’utilitaire lsnrctl (voir plus loin).  Exemple :  PASSWORDS_LISTENER= (54290B53985ADB21 ) TRACE_LEVEL_LISTENER = USER Emplacements d’écoute   Les  emplacements  d’écoute  sont  des  adresses  réseaux  utilisées  par  le  processus  d’écoute  pour  recevoir  les  demandes de connexion à une base de données.  Pour  pouvoir  modifier  l’emplacement  par  défaut.All rights reserved .Algeria Educ .). au même emplacement que le fichier journal.L’onglet  Journalisation  et  trace  permet  d’activer  ou  de  désactiver  la  journalisation  (active  par  défaut)  et  la  trace  (inactive  par  défaut).log) se trouve par  défaut  dans  le  Référentiel  de  Diagnostic  Automatique  (Automatic  Diagnostic  Repository)  :  répertoire  $ORACLE_BASE/diag/tnslsnr/<nom hôte>/<nom listener>/trace  (plate­forme  Unix  ou  Linux)  ou  %ORACLE_BASE% \diag\tnslsnr\<nom hôte>/<nom listener>/trace  (plate­forme  Windows).  Lorsque les paramètres généraux sont personnalisés.ora :  LISTENER = (DESCRIPTION_LIST = . Là encore.  q q Les définitions des emplacements d’écoute sont enregistrées de la manière suivante dans le fichier listener. depuis la version 11.

  2.(DESCRIPTION (ADDRESS = ) (DESCRIPTION (ADDRESS = ) = (PROTOCOL = IPC)(KEY = EXTPROC1521)) = (PROTOCOL = TCP)(HOST = srvwinora)(PORT = 1521)) Les lignes en gras correspondent à une définition d’emplacement d’écoute.  Si  ces  bases  de  données  utilisent  des  versions  différentes  d’Oracle.Algeria Educ . il y a un seul processus d’écoute par serveur.  En règle générale.3- .  éventuellement pour des versions d’Oracle différentes. ou toute autre  valeur) et le chemin du répertoire Oracle Home de la base de données.1.0\db_1) (SID_NAME = ORCL) ) ) Les lignes en gras correspondent à une définition de service de base de données.All rights reserved .  il  faut  plutôt  utiliser  le  processus d’écoute de la version la plus récente.DB_DOMAIN. Gestion du processus d’écoute  openmirrors.  Les  définitions  des  services  de  base  de  données  sont  enregistrées  de  la  manière  suivante  dans  le  fichier  listener. même si le serveur abrite plusieurs bases  de  données.com © ENI Editions .  Services de base de données   Cet écran permet de définir les services de base de données inscrits (ou enregistrés) auprès du processus d’écoute.ora :  SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = d:\app\oracle\product\11.  c’est­à­dire ceux pour lesquels le processus d’écoute accepte des demandes de connexion.  Les bases de données inscrites auprès du processus d’écoute sont définies par l’identifiant de l’instance (SID). ou une des valeurs du paramètre SERVICE_NAMES.  Le  processus  d’écoute  peut  accepter  des  demandes  de  connexion  pour  plusieurs  bases  de  données. le nom  global de la base de données (DB_NAME.

 Sur plate­forme  Windows. 25 sec Sécurité ON: Local OS Authentication SNMP OFF . LSNRCTL> status Connexion à (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUT du PROCESSUS D’ECOUTE ---------------------------Alias LISTENER Version TNSLSNR for 32-bit Windows: Version 11.  RELOAD  Recharge  la  configuration  du  processus  d’écoute  (listener.All rights reserved . disponible sur toutes les plates­formes.  SERVICES  Affiche des informations détaillées sur les services enregistrés auprès du processus d’écoute.0 .0.6.  START  Démarre le processus d’écoute.Production on 22-JUIN -2008 21:26:04 Copyright (c) 1991.Algeria Educ .ora).Production Date de départ 22-JUIN -2008 21:12:45 Durée d’activité 0 jours 0 heures 13 min.Le processus d’écoute se matérialise par un service (Oracle<nom_oracle_home>TNSListener) sur plate­forme Windows  et par un processus (tnslsnr) sur plate­forme Unix ou Linux.0.  Les commandes peuvent être saisies indifféremment en majuscules ou en minuscules.  les  emplacements  d’écoute  et  les  services  enregistrés. sans arrêter ce dernier.  Les principales commandes sont les suivantes :  HELP  Affiche la liste des commandes.  le  processus d’écoute peut aussi être démarré et arrêté en démarrant ou en arrêtant le service associé.  Exemple :  C:\>lsnrctl LSNRCTL for 32-bit Windows: Version 11.4- © ENI Editions .  Le processus d’écoute s’administre grâce à l’utilitaire lsnrctl. tapez "help" pour plus d’informations.1.  HELP commande  Affiche l’aide d’une commande.0 .6. Oracle. 2007.  STATUS  Affiche  des  informations  sur  la  configuration  du  processus  d’écoute.  STOP  Arrête le processus d’écoute.  Permet  d’ajouter  ou  de  modifier  les  services  enregistrés auprès du processus d’écoute.  Syntaxe :  lsnrctl [commande]  Lorsque l’utilitaire est appelé sans commande. All rights reserved.1. il se lance et affiche une invite :  LSNRCTL> Les commandes peuvent alors être saisies sur la ligne d’invite. Bienvenue dans LSNRCTL.

  Sur plate­forme Windows.ora. Démarrage automatique du processus d’écoute  Généralement.  une  instance  non  démarrée  n’est pas connue du processus d’écoute.5- .com © ENI Editions .ora.  en positionnant le service associé (Oracle<nom_oracle_ home>TNSListener) en démarrage automatique.  en  TCP/IP. Failed to open service <OracleOraDb11g_home1TNSListener>.  Pour  effectuer  l’enregistrement  automatique  à  une  autre  adresse.  Ce  script  de  démarrage  appelle  les  scripts  Oracle dbstart  et dbshut qui prennent en charge le  démarrage et l’arrêt du processus d’écoute depuis la version 11.. Le service "ORCL" comporte 1 instance(s)..  Cela  pose  un  problème  si  l’instance  doit  être  démarrée  à  partir  d’un  poste  du  réseau  car  le  processus  d’écoute  refusera  la  demande  de  connexion  (erreur  ORA-12514).  Avec  ces  deux  mécanismes.  il  faut  prévoir  un  enregistrement  statique dans le fichier listener. ce qui est parfois déroutant...  le  processus  d’écoute  peut  être  démarré  automatiquement  grâce  au  script  de  démarrage  présenté  dans  la  section  Installation  du  serveur  du  chapitre  Installation  ­  Configurer  le  démarrage  et  l’arrêt  automatique. le processus d’écoute peut être démarré automatiquement lors du démarrage du système.xml Récapitulatif d’écoute des points d’extrémité. mais le service est alors automatiquement créé et le processus d’écoute est bien démarré :  LSNRCTL> start Starting tnslsnr: please wait.  il  faut  configurer  le  paramètre  d’initialisation  LOCAL_LISTENER  en  y  indiquant  un  nom  de  service  réseau  qui  doit  être  résolu  (par  exemple  avec  le  fichier tnsnames.  une  instance  peut  présenter  plusieurs  services  dans  le  processus  d’écoute.All rights reserved . cela permet de choisir la version du processus  d’écoute à utiliser.Algeria Educ .  Aucune configuration n’est requise dans le fichier listener.\pipe\EXTPROC1521ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=srvwinora)(PORT=1521))) Récapitulatif services... Enregistrement dynamique de services  Depuis Oracle8i.ora Fichier journal du processus d’écoute d:\app\oracle\diag\tnslsnr\srvwinora\listener\alert\ log.  Les noms des services automatiquement enregistrés proviennent du paramètre d’initialisation SERVICES_NAMES.ora. statut UNKNOWN. 3.  openmirrors. si le service associé au processus d’écoute n’existe pas.  L’enregistrement  automatique  s’effectue par défaut auprès du processus d’écoute  sur  le  serveur.  L’enregistrement  dynamique  s’effectue  en  complément  de  l’enregistrement  statique  éventuellement  défini  dans  le  fichier listener.  sur  le  port  1521.  Avec  l’enregistrement  automatique.Fichier de paramètres du processus d’écoute D:\app\oracle\product\ 11.. error 1060. L’instance "ORCL".  Dans  ce  cas.  Extraits du script :  $ORACLE_HOME/bin/dbstart $ORACLE_HOME_LISTENER > $LOG 2>&1 & . une instance est capable d’enregistrer automatiquement des services auprès du processus d’écoute.0\db_1\network\admin\listener..  4. comporte 1 gestionnaire(s) pour ce service La commande a réussi LSNRCTL> Sur plate­forme Windows. (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.  Sur  plate­forme  Unix  ou  Linux. $ORACLE_HOME/bin/dbshut $ORACLE_HOME_LISTENER > $LOG 2>&1 & Les scripts dbstart et dbshut acceptent en paramètre le chemin Oracle Home du processus d’écoute à démarrer ou à  arrêter ; s’il y a plusieurs versions d’Oracle installées sur le serveur. un message d’erreur est affiché  lors du démarrage.1.ora) en une adresse de processus d’écoute.  il  est  souhaitable  que  le  processus  d’écoute  soit  démarré  automatiquement  lors  du  démarrage  du  système.

Il  peut  y  avoir  d’autres  services  enregistrés  auprès  du  processus  d’écoute  correspondant  à  des  fonctionnalités installées dans la base de données (Oracle XML DB par exemple).Algeria Educ .All rights reserved .  .6- © ENI Editions .

 Introduction  Pour configurer le client. il faut :  q sélectionner les méthodes de résolution de noms utilisables par le client ;  configurer les méthodes de résolution de noms sélectionnées. Si la méthode  de résolution de nom locale est utilisée.  Ces deux fichiers se trouvent par défaut dans le répertoire $ORACLE_HOME/network/ admin (plate­forme Unix ou Linux)  ou  %ORACLE_HOME%\network\admin  (plate­forme  Windows).  2.ora et tnsnames. Sélection des méthodes de résolution de noms  Pour  configurer  les  méthodes  de  résolution  de  noms  utilisables  par  le  client. il faut en plus définir un ou plusieurs noms de service réseau dans le fichier  tnsnames.  Cet  emplacement  peut  être  modifié  en  définissant  la  variable d’environnement TNS_ADMIN. il est possible  d’ajouter ou de supprimer des méthodes et de modifier l’ordre dans lequel les méthodes seront utilisées :  openmirrors.com © ENI Editions .All rights reserved .ora peuvent être édités directement mais cela nécessite de bien comprendre leur  structure et de bien connaître la syntaxe et le rôle des différents paramètres.Algeria Educ .  Les fichiers sqlnet.Configuration côté client  1. En utilisant les différents boutons de ce panneau.  q Les méthodes de résolution de noms utilisables par le client sont stockées dans le fichier sqlnet.  Le  plus  simple  consiste  alors  à  utiliser  l’application  Oracle  Net  Manager  (menu  Programmes ­ Oracle ­ nom_oracle_home ­ Outils  de  configuration  et  de  migration ­ Net  Manager  sur  plate­forme  Windows  ou  script  shell netmgr sur plate­forme Unix).  puis  sélectionnez l’élément Affectation de noms dans la liste déroulante :    Dans  une  configuration  standard.ora.  la  méthode  de  résolution  de  nom  locale  (TNSNAMES)  et  la  méthode  de  connexion  simplifiée (EZCONNECT) sont sélectionnées par défaut.1- .ora.  cliquez  sur  l’icône  Profil.

DIRECTORY_PATH contient la liste ordonnée des méthodes de résolution de nom utilisables.  S’il  est  défini  (valeur  X  par  exemple)..  le plus simple est de ne pas définir de nom de domaine par défaut.2- © ENI Editions .  La zone Domaine par défaut permet d’ajouter un nom de domaine par défaut aux noms de service réseau utilisés. @ORCL.  il  est  automatiquement ajouté au nom de service réseau lors de la connexion. une erreur est retournée (erreurORA-12154). Pour éviter ce genre de problème.  3.. Si le nom de service ainsi constitué (ORCL.X). @ORCL devient  CONNECT .  Ce  nom  de  domaine  par  défaut  est  souvent  une  source  de  problème.DEFAULT_DOMAIN (ici en commentaire) contient le nom de domaine par défaut.  Sur l’exemple précédent.. si aucun domaine n’est indiqué (CONNECT .. Résolution de nom locale  Des  noms  de  service  réseau  peuvent  être  définis  dans  le  fichiertnsnames.ora  avec  l’application  Oracle  Net  Manager :    Pour afficher la liste des noms de service réseau déjà définis.ora. Configuration des méthodes de résolution de nom  a. HOSTNAME) # NAMES.  Exemple :  NAMES.  Les différentes informations saisies dans cet écran sont enregistrées dans le fichier sqlnet.  .  sélectionnez  le  dossier  Résolution  de  noms  de  service  puis  sélectionnez le menu Modifier ­ Créer.  Le paramètre NAMES.  Pour  créer  un  nouveau  nom  de  service  réseau.X) ne peut pas être résolu par une  des méthodes de résolution de nom.Algeria Educ . la méthode de résolution de nom d’hôte (HOSTNAME) a été ajoutée dans la liste.DEFAULT_DOMAIN = X Le paramètre NAMES.All rights reserved . TNSNAMES.DIRECTORY_PATH= (EZCONNECT. double cliquez sur le dossier Résolution de noms de  service.

    Sélectionnez le protocole réseau utilisé (TCP/IP dans cet exemple) puis cliquez sur le bouton Suivant.com © ENI Editions .3- .  Saisissez le nom de service réseau souhaité puis cliquez sur le bouton Suivant.All rights reserved .  openmirrors.Algeria Educ .

  Les paramètres du protocole dépendent du protocole sélectionné.    Pour  identifier  l’instance  cible. utilisez le même ici). vous devez indiquer le nom de  la machine et le nom du canal (reprendre la valeur utilisée pour le processus d’écoute. Le choix de l’option Serveur dédié est  nécessaire pour forcer une connexion à un serveur dédié alors que le serveur est configuré en serveur partagé.4- © ENI Editions .  Cliquez sur le bouton Suivant.  . généralement le nom de l’instance). section Configuration côté  serveur dans ce chapitre).Algeria Educ . Dans le cas du protocole Named Pipes.  Le  nom  de  service doit être un des noms de service enregistrés auprès du processus d’écoute (cf.All rights reserved .  La liste déroulante Type  de  connexion permet de définir le type de connexion souhaité : Valeur par défaut de la  base de données (valeur par défaut).  vous  devez  indiquer  un  nom  de  clé  (reprendre  la  valeur  utilisée  pour  le  processus  d’écoute. Serveur dédié ou Serveur partagé. Dans le cas du protocole TCP/IP. habituellement ORAPIPE). saisissez le nom  du serveur Oracle ou son adresse IP et le numéro du port (1521 par défaut. mais si un autre port a été configuré  pour le processus d’écoute.  saisissez  au  choix  un  nom  de  service  ou  un  identifiant  d’instance  (SID).  Dans  le  cas  du  protocole  IPC.  Cliquez sur le bouton Suivant ; l’écran suivant permet de tester le nouveau nom de service réseau.

ora  ne  contient  aucune  information  relative  au  poste ;  il  est  donc  parfaitement  possible  d’en  créer un sur un poste puis de le diffuser sur tous les autres postes.  la  configuration  du  serveur  ne  sera.  si  le  serveur  héberge  plusieurs  bases  de  données.  Exemple :  ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = SRVWINORA)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL) ) ) Après  configuration  du  processus  d’écoute  côté  serveur.  en  restant  sur  le  serveur. sont enregistrés dans le fichier tnsnames.  Le  nouveau  nom  de  service  réseau  apparaît  dans  le  dossier ;  il  peut  être  sélectionné et modifié directement si besoin :    Les noms de service réseau ainsi définis.All rights reserved .  L’adresse de connexion est définie de la manière suivante :  [//]hôte[:port][/service] Avec :  hôte  openmirrors.  si  elle  a  été.  sélectionnée  comme  méthode  de  résolution  de  nom  dans  le  fichier  sqlnet.  de  configurer  un  nom  de  service  réseau  et  de  tenter  une  connexion  à  l’aide  de  ce  nom  afin  de  tester  la  configuration.  Le  fichier  tnsnames.  De  plus.Cliquez  sur  le  bouton  Terminer.  a  priori.  au  préalable.ora.  les  noms  de  service  réseau  pourront  être  utilisés  pour  passer  rapidement  d’une  base  à  l’autre  (pas  besoin  de  modifier  la  variable  d’environnement ORACLE_SID).5- . Connexion simplifiée  La méthode de résolution de nom Easy Connect ne nécessite aucune configuration côté client et peut être utilisée  directement.ora(cf.  section Configuration  des  méthodes  de  résolution  de  nom  dans  ce  chapitre).  b.Algeria Educ .  Ensuite.  pas  en  cause.com © ENI Editions .  Cette  méthode  est  apparue en version 10 et est utilisable uniquement en environnement TCP/IP.  il  est  judicieux.  si  la  configuration  d’un  poste  ne  fonctionne  pas.

  service  Nom  de  service  auquel  se  connecter.  port  Port utilisé par le processus d’écoute (1521 par défaut).  Exemple :  srvwinora/orcl srvwinora:1522/test.  Le  nom  de  service  doit  être  un  des  noms  de  service  enregistrés  auprès  du  processus d’écoute (cf.6- © ENI Editions .Algeria Educ .ora.olivier.fr .Nom du serveur (éventuellement qualifié par un domaine) ou adresse IP du serveur.All rights reserved . Si le nom de service n’est pas spécifié.  le  processus  se  connecte  à  la  base  définie  par  le  paramètre  DEFAULT_SERVICE_<nom_listener>  dans  le  fichier  listener. section Configuration côté serveur dans ce chapitre).

Algeria Educ .  Action(s)  Vérifier que les identifiants d’instance ou les noms de service correspondent bien entre le client et le serveur (utiliser la  commande status ou services dans l’utilitaire lsnrctl).Le port indiqué dans la chaîne de connexion ne correspond pas au port d’écoute  du processus d’écoute.  Cause(s)  Le processus d’écoute n’est pas lancé.All rights reserved .  ORA-12170: TNS : délai de connexion dépassé openmirrors.  ORA-12545: Connexion impossible car l’hôte ou l’objet cible n’existe pas TNS-12545: la connexion a échoué car l’hôte ou l’objet cible n’existe pas Explication  Le serveur indiqué dans la chaîne de connexion n’a pas pu être contacté. En cas de doute.com © ENI Editions .  ORA-12541: TNS : pas de processus d’écoute TNS-12541: TNS : aucun processus d’écoute Explication  Le serveur spécifié par la chaîne de connexion a bien été trouvé. remplacer le nom du serveur par son adresse IP.  Vérifier  si  le  processus  d’écoute est démarré (le démarrer si besoin (ne pas hésiter à le redémarrer en cas de doute)).  ORA-12505: TNS : le processus d’écoute ne connaît pas actuellement le SID indiqué dans le descripteur de connexion ORA-12514: TNS : le processus d’écoute ne connaît pas actuellement le service demandé dans le descripteur de connexion Explication  Le  processus  d’écoute  a  bien  été  contacté  mais  le  SID  ou  le  SERVICE_NAME  indiqué  dans  la  chaîne  de  connexion  ne  correspond à aucune instance écoutée par le processus d’écoute.  Action(s)  Vérifier  que  les  ports  sont  bien  configurés  de  la  même  manière  côté  client  et  côté  serveur. mais aucun processus d’écoute ne répond.Problèmes courants et solutions  Les problèmes possibles de connexion entre un client et un serveur sont nombreux.1- .  Le  SID_NAME  spécifié  dans  le  fichier  de  configuration du processus d’écoute n’est pas bon.  Action(s)  Vérifier la validité du nom du serveur. Vérifier si le  serveur est accessible. utiliser un SID à la place d’un SERVICE_NAME  dans la chaîne de connexion.  Cause(s)  Le nom du serveur est erroné.  Cause(s)  Le  SID  ou  SERVICE_NAME  indiqué  dans  la  chaîne  de  connexion  n’est  pas  bon. Éventuellement.

ora).  Cause(s)  Le  nom  de  service  réseau  utilisé  dans  la  connexion  est  erroné  (faute  de  frappe).ora (penser notamment à l’existence éventuelle d’un nom de domaine par défaut défini  dans  le  fichier  sqlnet. 2007. Le nom de service réseau n’a pas  pu être traduit en adresse IP (méthode de résolution de nom d’hôte). la chaîne de connexion utilisée et  le  temps  mis  pour  contacter  la  cible.ora côté client).  Si  la  méthode de résolution de nom local est utilisée.ora. Le serveur n’est pas accessible ou il y a un problème réseau (coupure.  En  cas  d’échec.All rights reserved . Le nom de service réseau n’a pas pu être résolu  en hôte[:port] [/service] (connexion simplifiée). s’il a pu résoudre le nom de service réseau.  Vérifier  si  le  serveur  est  accessible  et  s’il  n’y  a  pas  de  problème  réseau. Oracle.  Cause(s)  Le nom du serveur (ou l’adresse IP) est erroné.  Si  vous  obtenez  une  erreur  ORA-01033  ou  ORA-01034.  ralentissement). vérifier que le nom de service réseau utilisé dans la connexion est bien  défini dans le fichier tnsnames.  vérifier  que  la  syntaxe  et  la  configuration sont correctes.ora (méthode de résolution locale).6.0.TNS-12535: TNS : le délai imparti à l’opération est écoulé Explication  Le serveur indiqué dans la chaîne de connexion n’a pas pu être contacté dans le délai imparti (défini par le paramètre  SQLNET.0 .2© ENI Editions .  Syntaxe :  tnsping nom_de_service  L’utilitaire tnsping teste si le nom de service passé en paramètre peut être résolu et si la cible peut être contactée.ora Adaptateur TNSNAMES utilisé pour la résolution de l’alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = SRVWINORA)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL))) .1.0\client_1\network\admin\sqlnet.  Si  une  autre  méthode  de  résolution  de  nom  est  utilisée. Éventuellement.Algeria Educ . remplacer le nom du serveur par son adresse  IP. tnsping affiche le nom de la méthode de résolution de nom utilisée. Fichiers de paramètres utilisés : C:\app\oracle\product\11. All rights reserved.INBOUND_CONNECT_ TIMEOUT.  Modifier  la  valeur  du  paramètre  SQLNET.  ORA-12154: TNS : l’identificateur de connexion indiqué n’a pas pu être résolu TNS-03505: Echec de la résolution du nom Explication  Le nom de service réseau utilisé pour la connexion (@) n’a pas pu être résolu par une des méthodes de résolution de  nom autorisées côté client.  tnsping  affiche  un  message  d’erreur. l’utilitaire tnsping peut être utilisé côté client.  Exemples  C:\>tnsping orcl TNS Ping Utility for 32-bit Windows: Version 11.  ainsi  que  le  nom  de  la  méthode de résolution de nom utilisée et la chaîne de connexion utilisée.  Action(s)  Vérifier la validité du nom du serveur ou de l’adresse IP.  Pour aider à établir un diagnostic.  En cas de succès.Production on 24-JUIN-2008 06:52:18 Copyright (c) 1997.  Action(s)  Vérifier  que  les  méthodes  de  résolution  de  nom  souhaitées  sont  bien  configurées  dans  le  fichier  sqlnet. INBOUND_CONNECT_TIMEOUT du fichier sqlnet.  la  configuration  Oracle  Net  n’est  pas  en  cause ;  l’instance  est  arrêtée.1. ou elle est démarrée mais la base n’est pas ouverte.  Il  n’existe  par  de  nom  de  service  réseau correspondant dans le fichier tnsnames.

OK (30 msec) C:\>tnsping srvwinora/orcl … Fichiers de paramètres utilisés : C:\app\oracle\product\11.1.51)(PORT=1521))) OK (20 msec) L’utilitaire tnsping teste uniquement si un processus d’écoute peut être contacté ; il ne teste pas si le nom de  service ou l’identifiant d’instance est connu du processus d’écoute.Algeria Educ .3- .168.All rights reserved .  openmirrors.com © ENI Editions .0\client_1\network\admin\sqlnet.ora Adaptateur EZCONNECT utilisé pour la résolution de l’alias Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=orcl)) (ADDRESS=(PROTOCOL=TCP)(HOST=192.154.

  nous  nous  intéresserons  uniquement  à  SQL*Plus.  nous  présenterons  brièvement  la  documentation  Oracle  (un  autre  « outil »  d’administration bien pratique !) puis nous parlerons des fichiers d’alerte et de trace.)  et  de  développer  et  mettre  au  point  des  programmes  PL/SQL.  dans  ce  chapitre. ainsi que du nouveau Référentiel  de Diagnostic Automatique (Automatic Diagnostic Repository).  etc.  à  Oracle  SQL  Developer  et  à  Oracle  Enterprise  Manager Database Control.  © ENI Editions .1- . Ce  produit  qui  nécessite  une  installation  séparée  est  intéressant  pour  les  entreprises  ayant  un  très  grand  nombre  de  bases de données à administrer.  Oracle  propose  aussi  l’application  Oracle  Administration  for  Windows  (menu  Démarrer  ­  Programmes ­  Oracle ­ nom_oracle_home  ­ Outils  de  configuration  et  de  migration ­  Assistant  d’administration  pour Windows).  vues.  Dans  cet  ouvrage.  permettant  d’administrer  de manière centralisée plusieurs bases de données.  q q q Oracle  Enterprise  Manager  Grid  Control  est  une  infrastructure  d’administration  composée  d’un  serveur  d’application. Oracle Enterprise Manager Grid Control n’est pas présenté dans cet ouvrage.  En  complément. Pour les entreprises ayant quelques bases à administrer.  Sur  plate­forme  Windows.  Oracle  Enterprise  Manager  Database  Control :  application  Web. la version Database Control  est généralement suffisante.All rights reserved .  similaire  à  la  précédente.  permettant  d’administrer  graphiquement  une  seule base de données.  Oracle SQL Developer : application graphique permettant d’exécuter des requêtes ou des scripts SQL. Cette application requiert le produit Microsoft Management Console.Introduction  Oracle propose plusieurs outils d’administration :  q SQL*Plus : outil de base permettant d’éditer et d’exécuter des requêtes SQL.Algeria Educ .  Oracle  Enterprise  Manager  Grid  Control :  application  Web. de gérer  les  objets  d’une  base  de  données  (tables.  d’un référentiel stocké dans une base de données Oracle et d’agents installés sur les différents nœ uds administrés.

  La  connexion  peut  s’effectuer  localement  à  l’instance  définie  par  la  variable  d’environnement  ORACLE_SID(section  Installation du serveur du chapitre Installation) ou bien à travers le réseau à l’instance définie par un nom de service  réseau ou une identification de >connexion simplifiée (cf.  SQL*Plus  permet  de  saisir  et  d’exécuter  des  ordres  SQL  ou  du  code  PL/SQL  et  dispose  en  plus  de  plusieurs  commandes.  mot de passe  Mot de passe de l’utilisateur.]]] Syntaxe de l’option connexion :  [utilisateur]/[mot_de_passe][@service] [AS SYSDBA | AS SYSOPER] Avec :  utilisateur  Nom de l’utilisateur Oracle. Utilisation  a.  Les  anciennes  formes  SQL*Plus Windows. SQL*Plus Worksheet et iSQL*Plus n’existent plus.1- .All rights reserved .  2. Lancer SQL*Plus  La syntaxe pour lancer SQL*Plus en ligne de commande est la suivante :  sqlplus [ connexion | /NOLOG] [@fichier_script [argument [.  Pour  la  connexion  à  travers  le  réseau.  SQL*Plus  est  disponible  uniquement  en  version  ligne  de  commande. section Configuration côté client du chapitre Oracle Net). Pour  plus d’informations.    openmirrors. reportez­vous à la documentation SQL*Plus® User’s Guide and Reference.  service  Nom de service réseau ou identification de connexion simplifiée.  SQL*Plus propose beaucoup de commandes souvent très utiles pour écrire des scripts d’administration.  le  nom  de  service  réseau  ou  l’identification  de  connexion  simplifiée  peuvent  être indiqués lors du lancement de l’outil (voir ci­après) ou être définis dans une variable d’environnement :  q TWO_TASK sur plate­forme Linux ou Unix ;  LOCAL sur plate­forme Windows (éventuellement dans la base de registre). utilisé(e) pour la connexion..Algeria Educ .SQL*Plus  1...  q Exemple :  $ export TWO_TASK=orcl $ export TWO_TASK=srvlinora:1521/orcl C:\>set LOCAL=orcl C:\>set LOCAL=srvwinora:1521/orcl La variable d’environnement TWO_TASK ou LOCAL est prioritaire sur la variable d’environnement ORACLE_SID. Vue d’ensemble  Depuis  la  version  11.com © ENI Editions . dont des commandes d’administration.

0 .sql :  CONNECT sys/ab$12@orcl AS SYSDBA SELECT name FROM v$database.2- © ENI Editions . Avant de se connecter.  /NOLOG  Lance SQL*Plus sans établir de connexion.  fichier_script  Script à exécuter.  argument  Paramètre du script à exécuter.1.sql "/ as sysdba" Avec le script info. la connexion peut être établie  ensuite avec la commande CONNECT. donc éventuellement après un DISCONNECT.  Lorsqu’un script est soumis à SQL*Plus sur la ligne de commande. à la fin du  script. Par ailleurs.  L’option /NOLOG permet de lancer SQL*Plus sans établir de connexion ; dans ce cas.AS SYSDBA |AS SYSOPER  Demande une connexion SYSDBA ou SYSOPER. La connexion en cours est  automatiquement déconnectée.0. EXIT b.All rights reserved .  Syntaxe :  CONNECT [utilisateur]/[ mot_de_passe][ @service] [AS SYSDBA | AS SYSOPER] Les options sont les mêmes que lors du lancement de SQL*Plus en ligne de commande. SQL*Plus ne quitte pas ; en cas de besoin. la connexion peut être assurée par la ligne de  commande ou par le script (dans ce cas.Algeria Educ . il faut donc penser à mettre une commande EXIT.0. Se connecter  La commande CONNECT permet d’établir une nouvelle connexion. SQL> CONNECT system/xy$78@srvlinora:1521/orcl Connecté. . mettre l’option  /NOLOG sur la ligne de commande).  Exemple:  SQL> SET INSTANCE orcl Oracle Database 11g Release 11.  Exemple :  sqlplus sqlplus sqlplus sqlplus /nolog system/xy$78@orcl @info.  La commande DISCONNECT permet de se déconnecter.Production SQL> CONNECT / AS SYSDBA Connecté.  Appeler SQL*Plus sans paramètre sur la ligne de commande provoque l’affichage d’une invite de connexion. il est possible de taper la commande SET INSTANCE service pour définir le nom de service  réseau  ou  l’identifiant  de  connexion  simplifiée  à  utiliser  pour  la  totalité  de  la  session ;  cette  commande  doit  être  saisie sans aucune connexion en cours.  Exemple:  SQL> CONNECT /@orcl AS SYSDBA Connecté.

dbf g:\app\oracle\ oradata\orcl\system01.  Par  ailleurs.Algeria Educ .3- . notamment  dans un script SQL. SQL*Plus accepte le séparateur / (à la place de \) dans la spécification d’un chemin.dbf 1 fichier(s) copié(s). etc.SQL> CONNECT system/xy$78 Connecté.  sur  plate­forme  Windows.com © ENI Editions .  si  SQL*Plus  rencontre  une  variable  de  substitution  non  définie.  nom  de  table.sql. le point d’exclamation (!) peut être utilisé à la place de la commande HOST.  Lors  de  l’exécution d’un  ordre  SQL. Sur plate­forme Unix ou Linux.  Syntaxe  START script @script script est le nom du script SQL à exécuter (avec le chemin si nécessaire) ; l’extension par défaut est .  notamment  dans  un  script.  nom  de  colonne.  Il est possible de contrôler l’invite et d’affecter une valeur à une variable de substitution avant l’exécution de l’ordre  SQL grâce à la commande ACCEPT.  e. Le point d’interrogation  (?)  peut  être  utilisé  comme  raccourci  du  chemin  vers  le  répertoire  Oracle  Home.  il  affiche  une  invite permettant de saisir une valeur. c.All rights reserved .  Syntaxe  HOST commande Exemple  SQL> HOST copy d:\app\oracle\oradata\orcl\system01.  Une variable de substitution est définie par un nom précédé du caractère &. Exécuter une commande du système d’exploitation  La commande  HOST permet d’exécuter une commande du système d’exploitation à partir de SQL*Plus. Utiliser des variables de substitution  SQL*Plus  permet  d’utiliser  des  variables  de  substitution  dans  l’exécution  des  ordres  SQL.  Syntaxe  ACC[EPT] variable [NUM[BER]|CHAR|DATE] [FOR[MAT] format] [DEF[AULT] défaut] [PROMPT texte|NOPR[OMPT]] [HIDE] Avec  variable  Nom de la variable de substitution (sans le caractère &).  format  openmirrors.  Exemple  SQL> @?/rdbms/admin/utlpwdmg d.  Vous serez parfois amenés à exécuter des scripts situés dans l’arborescence Oracle Home. Exécuter un script SQL  Les commandes START ou @ permettent d’exécuter un script SQL. Elle peut être utilisée pour substituer  une  valeur  à  tout  élément  de  l’ordre  SQL :  valeur  dans  une  clause  WHERE.  clause  WHERE complète.

  Lorsque la variable est immédiatement suivie d’une lettre.sql utilisant des variables de substitution  ACCEPT colonnes CHAR DEFAULT empno PROMPT "Colonne(s) : " ACCEPT nom CHAR PROMPT " Nom : "SELECT &colonnes FROM emp WHERE ename = UPPER(’&nom’). il affiche un message donnant l’ordre SQL avant et après la  substitution.  Exemple de script info. lorsque SQL*Plus effectue une substitution. grâce à la commande DEFINE.  texte  Texte de l’invite (à mettre entre apostrophes ou entre guillemets si le texte contient des espaces).  HIDE  Permet de masquer la saisie (comme pour un mot de passe).  défaut  Valeur par défaut si aucune valeur n’est saisie. Exécution du script dans SQL*Plus (saisie en gras)  SQL> @info Colonne(s) : job Nom : blake old 1: SELECT &colonnes FROM emp WHERE ename = UPPER(’&nom’) new 1: SELECT job FROM scott.emp WHERE ename = UPPER(’blake’) JOB --------MANAGER SQL> SET VERIFY OFFSQL> @info Colonne(s) : empno. sans intervention de l’utilisateur.--------. la substitution effectuée par SQL*Plus n’est pas affichée (résultat de la commande  SET VERIFY OFF).  Il  est  possible  d’activer  ou  de  désactiver  cette  fonctionnalité  grâce  à  la  commande SET VERIFY ON | OFF.  Exemple :  .Algeria Educ .4- © ENI Editions .All rights reserved .job. il est nécessaire  d’utiliser un point pour bien délimiter la fin du nom de la variable.  valeur  Valeur de la variable (à mettre entre apostrophes ou entre guillemets si la valeur contient des espaces).  Une variable de substitution peut aussi être définie. d’un chiffre.Format de saisie (mêmes conventions que celles utilisées dans l’option FORMAT de la commande COLUMN).sal Nom : king EMPNO JOB SAL --------.  Par défaut. d’un point ou d’un souligné.  Syntaxe  DEFINE variable = valeur Avec  variable  Nom de la variable de substitution (sans le caractère &).--------7839 PRESIDENT 5000 Notez que dans le deuxième cas.

.  Solution :  SQL> SELECT COUNT(*) FROM &prefixe. En cas de doute.  openmirrors.com © ENI Editions ..  f.SQL> DEFINE prefixe=user_ SQL> SELECT COUNT(*) FROM &prefixetables.All rights reserved . JOB -------MANAGER La valeur passée en paramètre à un script doit être mise entre apostrophes ou entre guillemets si elle contient des  espaces (l’espace est le séparateur des paramètres). &2.Algeria Educ . Passer des valeurs à un script  Les variables de substitution &1.tables.  Exemple de script info. old 1: SELECT COUNT(*) FROM &prefixe. #. SQL*Plus considère que le nom de la variable est prefixetables (et il demande sa valeur puisque  cette variable n’est pas définie). $.sql utilisant des paramètres passés sur la ligne d’appel du script  SET VERIFY OFF SELECT &1 FROM emp WHERE ename = UPPER(’&2’). le point  peut de toute façon être utilisé. le problème ne se pose plus. etc. …  peuvent être utilisées pour faire référence aux paramètres présents sur la  ligne d’appel du script. -.  Le problème ne se pose pas si le caractère qui suit est un délimiteur du type /.5- .tables new 1: SELECT COUNT(*) FROM user_tables COUNT(*) ---------638 Avec le point après le nom de la variable. Exécution du script dans SQL*Plus  SQL> @info job blake JOB -------MANAGER Exécution du script dans la ligne de commande SQL*Plus  > sqlplus scott/tiger @info.sql job blake . Enter value for prefixetables: Sur cet exemple.

  vues.  Oracle  SQL  Developer  peut  être  lancé  par  le  menu  Démarrer  ­  Programmes  ­  Oracle  ­  nom_oracle_home ­ Développement d’applications ­ SQL Developer.  La fenêtre principale d’Oracle SQL Developer a l’allure suivante :    Dans  la  partie  gauche  de  la  fenêtre.  Dans l’ensemble.oracle. cet outil est très convivial et son apprentissage est aisé. l’outil est plutôt  destiné  aux  développeurs  et  il  ne  propose  donc  aucune  fonctionnalité  d’administration.  Sur  plate­forme  Unix  ou  Linux. Comme son nom l’indique. Vous trouverez notamment à cette adresse la documentation et des tutoriaux. Oracle SQL Developer est installé par défaut.  © ENI Editions .html. la zone de travail permet d’éditer et d’exécuter des requêtes SQL et de visualiser le  résultat.  Oracle  SQL  Developer  peut  être  lancé  à  l’aide  du  $ORACLE_HOME/sqldeveloper/sqldeveloper.1- . Vous pouvez utiliser celle fournie par Oracle : %ORACLE_HOME%\jdk\bin\java.All rights reserved . vous pouvez consulter la documentation "Oracle® Database SQL Developer User’s Guide".  il  est  possible  que  l’outil  demande  le  chemin  de  l’application  java.  shell  script  Sur  plate­forme  Windows.  lors  du  premier  lancement.com/technology/products/database/sql_  developer/index. L’application nécessite un environnement graphique.  Oracle SQL Developer est gratuit et peut être téléchargé directement sur le site OTN.Oracle SQL Developer  Oracle SQL Developer est une application graphique permettant d’exécuter des requêtes ou des scripts SQL.  Pour  plus  d’informations  sur  l’utilisation de cet outil.exe.  etc)  et  de  développer  et  mettre  au  point  des  programmes  PL/SQL.exe.  une  structure  arborescente  permet  de  naviguer  dans  les  objets  d’une  ou  de    plusieurs bases de données.sh. Dans la partie droite de la fenêtre.  Sur  plate­forme  Windows. Depuis la version  11 d’Oracle. La page d’accueil d’Oracle SQL  Developer  se  trouve  à  l’adresse  suivante  :  http://www. Un clic sur le bouton  permet de définir une nouvelle connexion.Algeria Educ . de gérer  les  objets  d’une  base  de  données  (tables.

 Architecture  Derrière  une  apparente  simplicité. processus d’écoute) :  openmirrors.  le  Database  Control  repose  sur  une  architecture  relativement  complexe.  Pour administrer la base avec le Grid Control (non traité dans cet ouvrage).Algeria Educ . Oracle vous propose d’administrer cette base de façon centralisée avec  Oracle Enterprise Manager Grid Control ou de façon locale avec Oracle Enterprise Manager Database Control.  Le  Database  Control  est  une  application  J2EE  qui  utilise  une  version  autonome  du  serveur  d’application  OC4J  (Oracle  Containers for J2EE).com © ENI Editions . il faut installer au préalable l’agent Oracle  Management Agent sur le système.All rights reserved . nous utiliserons principalement les expressions "Database Control" ou "console Oracle  Enterprise Manager" pour désigner l’outil Oracle Entreprise Manager Database Control. l’option n’est pas sélectionnable et l’administration avec le  Database Control est proposée par défaut.  Database Control propose toutes les fonctionnalités nécessaires à l’administration et à l’optimisation d’une base de  données Oracle.1- . Si ce n’est pas le cas.  2.  Lors de la création d’une base de données.Oracle Enterprise Manager Database Control  1.  Dans la suite de cet ouvrage. Introduction  Oracle Enterprise Manager Database Control est un outil d’administration graphique accessible par un navigateur : il  est apparu en version 10g d’Oracle.    Le  Database  Control  utilise  différents  composants  pour  surveiller  et  administrer  la  base  de  données  Oracle  et  son  environnement (serveur hôte.

  3. référentiel).  L’utilitaire  agit  sur  le  Database  Control  de  la  base  de  données  ouverte  par  l’instance  définie  par  la  variable  d’environnement ORACLE_SID ; si cette variable d’environnement n’est pas positionnée. l’utilitaire affiche un message  d’erreur.All rights reserved .q une  version  locale  du  service  Oracle  Management  Service  (OMS)  destiné  à  fonctionner  avec  la  base  de  données administrée ;  un référentiel (Oracle Management Repository) installé dans la base de données administrée (schémaSYSMAN).  destiné à stocker des informations utilisées par le Database Control ;  une version locale de l’agent (Oracle Management Agent) dont le rôle est de fournir des informations au service  OMS local. Le compte SYSMAN  est  utilisé  pour stocker le référentiel du Database Control ; il peut aussi être utilisé pour administrer la base de données. un simple navigateur suffit pour utiliser la console ; le navigateur communique avec le service OMS.    .2- © ENI Editions . sur le  port 1158.  Si  plusieurs  bases  de  données  sont  présentes  sur  le  serveur. le service OMS et l’agent communiquent sur le port 3938. Côté serveur. Chapitre Création d’une nouvelle base de données).  La commande emctl status agent peut aussi être utilisée pour afficher des informations détaillées sur l’agent. nous verrons simplement comment Configurer le Database Control lors de la création d’une base  de données (cf.ini stocké dans le répertoire install donne la liste des ports utilisés par les différentes  bases de données présentes sur le serveur. agent. Vous trouverez notamment dans ce manuel comment effectuer  les tâches suivantes :  q configurer le Database Control lors de la création d’une base de données ;  changer les mots de passe de SYSMAN et DBSNMP ;  modifier les ports utilisés ;  sécuriser le Database Control (c’est le cas par défaut en version 11). les ports utilisés sont différents : 5500 et 1830 pour la seconde base de données.  q q Côté client.  Le compte  DBSNMP est utilisé par l’agent pour superviser et gérer la base de données. vous trouverez aussi de nombreuses notes relatives au Database Control.  q q q Sur MetaLink.  Syntaxe :  emctl { start | stop | status } dbconsole Les commandes start et stop permettent respectivement de démarrer et d’arrêter la console ; la commande status  permet de voir le statut. chaque base de données possède sa propre infrastructure (service OMS. Dans un tel cas  de figure.  Dans cet ouvrage.  Le  Database  Control  est  associé  à  une  base  de  données.  Les fichiers utilisés par le Database Control d’une base de données sont stockés dans deux répertoires :  q %ORACLE_HOME%\serveur_sid (plate­forme Windows) ou $ORACLE_HOME/serveur_sid (plate­forme Linux)  %ORACLE_HOME%\oc4j\j2ee\OC4J_DBConsole_serveur_sid  (plate­forme  $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_serveur_sid (plate­forme Linux)  Windows)  ou q La  configuration  du  Database  Control  est  un  sujet  relativement  complexe  qui  est  décrit  dans  la  documentation  Oracle® Enterprise Manager Advanced Configuration. par exemple. Gérer le Database Control  Le Database Control peut être arrêté ou démarré grâce à l’utilitaire ligne de commande emctl.Algeria Educ .  Le fichier portlist.

 Débuter avec le Database Control  a.  la  page  de  connexion  s’affiche.  il  suffit  d’ouvrir  une  fenêtre  de  votre  navigateur et de saisir une URL de la forme : https://serveur:port/em  serveur est le nom ou l’adresse IP du serveur de base de données.  Le  script  actuel  doit  être  modifié  pour  prendre  en  charge  le  démarrage  et  l’arrêt  de  plusieurs  Database  Control  (éventuellement dans des Oracle Home différents) à l’aide de la commande emctl.    Vous pouvez vous inspirer des scripts dbstart et dbshut pour écrire un tel script.  4. un mot de passe et éventuellement de demander une connexion  SYSDBAou SYSOPER(zone Se connecter en tant que) :    openmirrors.*:Y$’) do SID=$(echo $ligne | cut -d: -f1) EM_HOME=$(echo $ligne | cut -d: -f2) export ORACLE_SID=$SID $EM_HOME/bin/emctl start dbconsole > $LOG 2>&1 & done Cet  exemple  de  code  permet  de  démarrer  le  Database  Control  pour  toutes  les  instances  définies  en  démarrage  automatique dans le fichier /etc/oratab.com © ENI Editions .  le  serveur  d’application  peut  être  démarré  automatiquement  grâce  au  script  de  démarrage présenté dans la section Installation du serveur du chapitre Installation. nous allons donner une vue d’ensemble de l’utilisation du Database Control.  Sur  plate­forme  Unix  ou  Linux. Vue d’ensemble  Dans cette partie.  nous  verrons  ensuite  comment  utiliser  le  Database  Control  pour  effectuer  les  différentes  tâches  d’administration.  La page de connexion permet de saisir un nom. le Database Control peut être démarré automatiquement lors du démarrage du système  en positionnant le service associé (OracleDBConsole<SID>) en démarrage automatique. Chapitre Démarrage et arrêt).  Pourdémarrer  une  session  Database  Control.  Si  la  base  n’est  pas  démarrée.All rights reserved . Dans les différents  chapitres  de  l’ouvrage.  Sur plate­forme Windows.Le démarrage du Database Control est assez long (environ 1 minute).  la  page  de  démarrage  s’affiche (cf. port est le numéro du port sur lequel le service  OMS communique (1158 par exemple). Si  vous  utilisez  le  Database  Control  pour  administrer  la  base  de  données.3- .Algeria Educ .  il  est  souhaitable  que  ce  dernier  soit  démarré automatiquement lors du démarrage du système. Exemple  for ligne in $(cat /etc/oratab | egrep ’^[a-zA-Z]+:.  Exemple :  https://srvwinora:1158/em Si  la  base  est  démarrée.

  Les liens Performances.4- © ENI Editions .  le  Database  Control  vous  demandera  de  saisir  des  informations  d’identification  et  de  con­  nexion  à  la  base  de  données  et/ou  au  système hôte.  .Algeria Educ .All rights reserved . et notamment  de définir une adresse de courrier électronique permettant de recevoir une notification en cas de problème (voir la  section Utiliser les alertes dans ce chapitre).  cliquez  sur  le  lien  Informations  d’identification  et  de  connexion  stockées  dans  les  préférences.  En haut de chaque page.  Le lien Préférences affiche une page qui permet de modifier les préférences de l’utilisateur courant.  sauvegarde/restauration). vous arrivez sur la page d’accueil du Database Control :    Cette page d’accueil vous donne une vision globale du fonctionnement général de la base de données.  Une fois connecté. Disponibilité.  b. le Database Control propose 4 liens :    Le lien Installation affiche une page qui permet de configurer le Database Control ; cette page permet notamment  de définir d’autres utilisateurs habilités à utiliser la console.  Pour éviter de devoir saisir ces informations à chaque fois. seuls les comptes Oracle SYS. Schéma. Informations d’identification et de connexion  Pour  certaines  tâches  d’administration  (planification  de  travaux.  Sur  la  page  Préférences. Serveur. Mouvement de données et Logiciel et fichiers associés  affichent des pages de navigation qui permettent d’accéder aux différents outils d’administration. vous pouvez les enregistrer dans vos préférences. Cette page  affiche  notamment  des  informations  synthétiques  sur  les  performances  du  système.  l’utilisation  de  l’espace  et  les  alertes signalées par le système ; différents liens permettent ensuite d’afficher des informations détaillées sur ces  différents aspects. SYSTEM et SYSMANpeuvent utiliser le Database Control.Initialement.

  vous  pouvez  enregistrer  deux  identifications  Oracle  pour  la  base  de  données  (une  identification  "normale".Algeria Educ . hôte).  le  compte  utilisé  doit  par  ailleurs  être  membre  du  groupe  Administrateurs  et  avoir  le  privilège  Ouvrir  une  session  en  tant  que  tâche. procédez de la manière suivante :  s Sélectionnez le menu Démarrer ­ Programmes ­ Outils d’administration ­ Stratégie de sécurité locale. vous devez indiquer un utilisateur du système qui a le droit d’exécuter  des applications dans le répertoire Oracle Home ; c’est le cas des comptes qui sont membres du groupe OSDBA. et  donc notamment du compte utilisé pour l’installation.All rights reserved .  vous  aurez  le  message  d’erreur  suivant  lorsque vous cliquerez sur le bouton Test :    Pour attribuer ce privilège.    Pour  la  base  de  données.  par  exemple  SYS)  ainsi  qu’une  identification pour l’hôte.  openmirrors.5- .  Sur  plate­forme  Windows.  par  exemple  SYSTEM.  Si  ce  n’est  pas  le  cas.com © ENI Editions .  et  une  identification  SYSDBA.  En ce qui concerne l’identification pour l’hôte.  Cliquez sur une des icônes de la dernière colonne pour saisir les informations d’identification de la cible souhaitée  (instance de base de données.

Algeria Educ . cliquez sur le dossier Stratégies locale ­ Attribution des droits utilisateur.  Dans  la  liste  des  stratégies. Définir les seuils des alertes  Sur la page d’accueil. le Database Control est configuré pour signaler différents problèmes sur le fonctionnement de la base  de données : c’est la notion d’alerte.  Lorsqu’une  alerte  est  signalée.All rights reserved . Visualiser les alertes  Par défaut.  s 5. Utiliser les alertes  a.  vous  pouvez cliquer sur le lien associé pour avoir plus d’informations ; selon la nature de l’alerte. vous pouvez cliquer sur le lien Paramètres de mesure et de règle (cadre Liens associés en  bas).  double  cliquez  sur  la  stratégie Ouvrir  une  session  en  tant  que  tâche  et  ajoutez  l’utilisateur souhaité dans la liste.6- © ENI Editions . la page affichée peut  proposer des liens pour faire des actions correctrices ou une analyse supplémentaire. Les alertes sont visibles sur la page d’accueil du Database Control :    La  liste  Alertes  donne  les  alertes  de  l’instance  et  de  la  base  de  données. pour accéder à la page de gestion des seuils de déclenchement des alertes :    Cette page affiche les seuils actuels de déclenchement des alertes pour les différentes mesures.  La  liste  Alertes  associées  donne  les  alertes  d’autres  composants  Oracle  (Oracle  Net  par  exemple)  ou  de  l’hôte. Pour les mesures  .s Dans l’arborescence de gauche.  b.

  q Configurer les méthodes de notification Sur la page d’accueil.  Pour recevoir une notification par messagerie électronique. vous pouvez définir un seuil d’avertissement et un seuil critique.All rights reserved .Algeria Educ . puis sur le lien Méthodes  de notification pour accéder à la page de définition des méthodes de notification :    La première méthode de notification que vous pouvez définir est la notification par messagerie électronique. il suffit d’indiquer l’adresse du serveur de messagerie sortant (et si besoin une authentification pour ce  serveur)  et  d’identifier  l’expéditeur  (le  Database  Control)  par  un  nom  et  une  adresse  électronique. ou toute autre page.  S’abonner à une notification Si vous souhaitez recevoir des notifications par messagerie électronique. procédure PL/SQL.  Si  vous  le  souhaitez.  c.  vous  pouvez  définir  d’autres  méthodes  de  notifications :  SNMP  (Simple  Network  Management  Protocol). pour accéder à la page  de gestion de vos préférences :  openmirrors. vous devez faire deux choses :  q configurer les méthodes de notification du Database Control ;  vous "abonner" à des notifications. ou lors de la configuration du Database  Control avec l’utilitaire emca.souhaitées.  typiquement  par  messagerie  électronique. Recevoir une notification lorsqu’une alerte survient  Il  est  possible  de  recevoir  directement  une  notification  lorsqu’une  alerte  survient. cliquez sur le lien Préférences en haut à droite. cliquez sur le lien Installation en haut à droite.7- .com © ENI Editions .  commande du système d’exploitation.  Sur la page d’accueil. vous devez d’abord associer une adresse  électronique au compte Oracle que vous utilisez pour l’administration.  La  configuration  de  la  méthode  de  notification  par  messagerie  électronique  peut  être  réalisée  lors  de  la  création d’une base de données à l’aide de l’assistant graphique. Pour la  configurer. ou toute autre page.

 la règle "Database Availability and Critical States" déclenche une notification lorsque la base de données  est  arrêtée.  et  un  seuil  critique  est  atteint  sur  plusieurs  mesures  (pourcentage  de  remplissage  de  la  zone  d’archivage.  processus  d’écoute.  En  cochant  la  case  de  la  dernière  colonne  (Abonnement).  c’est­à­dire  demander à être destinataire de la notification.  vous  pouvez  vous  "abonner"  à  la  règle.  C’est le compte Oracle SYSMANqui est propriétaire des règles de notification prédéfinies. Lors de  . pourcentage de remplissage d’un tablespace.  Dans le cadre Adresse email. vous pouvez indiquer une ou plusieurs adresses électroniques.  Plusieurs  règles  de  notification  sont  définies  par  défaut  lors  de  l’installation  du  Database  Control.  Sur  la  page  ci­dessus.  Par  exemple.  Ensuite. vous pouvez cliquer sur le lien Règles pour vous abonner à une notification :    Une  règle  de  notification  est  un  ensemble  de  conditions  qui  déclenche  une  notification :  cible  (base  de  données.  hôte. etc.).All rights reserved .  vous  pouvez  consulter  ou  modifier  une  règle  prédéfinie  ou  créer  de  nouvelles  règles.Algeria Educ .  survenance  d’une  ou  plusieurs  alertes  (avec  seuil  de  gravité).).  etc.8- © ENI Editions . mais celles­ci sont  publiques et peuvent donc être modifiées par les autres utilisateurs habilités du Database Control.  disponibilité  de  la  cible.

 la page de configuration des tâches de maintenance s’affiche :  openmirrors.9- . Les tâches de maintenance automatisées  Trois tâches de maintenance automatisées sont programmées par défaut :  q Collecte des statistiques pour l’optimiseur (voir Chapitre Gestion des tables et des index) ;  Conseil sur le stockage des segments (voir Chapitre Gestion des tables et des index) ;  Conseil sur l’optimisation des requêtes SQL.  puis  sur  le  lien Tâches  de  maintenance  automatisées  (cadre Oracle  Scheduler)  pour  afficher la liste des tâches de maintenance automatisées :    Par  défaut.  et  les  notifications  seront  automatiquement  envoyées  à  cette adresse.  Si vous cliquez sur le bouton Configurer.  ou  lors  de  la  configuration  du  Database  Control  avec  l’utilitaire  emca.  l’adresse  de  messagerie  indiquée  sera  associée  au  compte  SYSMAN.com © ENI Editions .  les  tâches  de  maintenance  automatique  s’exécutent  du  lundi  au  vendredi  entre  22h00  et  2h00  et  le  samedi et le dimanche entre 6h00 et 2h00.la  création  d’une  base  de  données  à  l’aide  de  l’assistant  graphique.  q q Les tâches de maintenance automatisées peuvent être supervisées dans le Database Control.  vous  pouvez  visualiser  le  résultat  de  la  dernière  exécution (sauf pour la collecte des statistiques).  si  vous  configurez  la  notification  par  messagerie  électronique.  Si  vous  cliquez  sur  le  lien  correspondant  au  nom  de  la  tâche.All rights reserved .  6.Algeria Educ . Sur la page d’accueil.  cliquez  sur  le  lien  Serveur.

10 - © ENI Editions .Algeria Educ .  Dans  ces  deux  pages.  À  partir  de  cette  page.  .  modifier  leur  planification  ou  les  configurer  (bouton Configurer).  vous  pouvez  activer  ou  désactiver  les  tâches.All rights reserved .  il  y  a  une  inversion  entre  les  termes  "Désactivé"  et  "Activé"  :  "Désactivé"  veut  dire  "Activé" et réciproquement.

  openmirrors. index. tablespaces.  il  est  conseillé  d’avoir  des  connaissances  préalables  sur  les  bases  de  données relationnelles (savoir ce qu’est une table.  mais  aussi  par  de  nombreuses  copies  d’écrans  d’Oracle  Enterprise  Manager Database Control.  Le  tout  est  abondamment  illustré  par  une  quantité  d’exemples  sur  l’utilisation  des  commandes  et  autres  ordres  SQL.  Dans cet ouvrage. les consolider et découvrir les  nombreuses nouvelles fonctionnalités d’Oracle 11g. etc.  et  présente  les  solutions  qui  peuvent  être  apportées  aux  problèmes  courants. DBA signifie DataBase Administrator.) ;  gestion de la sécurité (utilisateurs et droits) ;  sauvegardes et restaurations avec RMAN (Recovery Manager) ;  q q q q q q q q Ce  livre  contient  de  nombreux  conseils  pratiques  et  de  nombreuses  recommandations. nous emploierons souvent le terme couramment utilisé de DBA pour désigner l’administrateur  de la base de données.Objectifs de l’ouvrage  Cet ouvrage a pour objectif de vous présenter toutes les bases de l’administration d’une base de données Oracle11g :  q compréhension minimale de l’architecture ;  procédures d’installation en environnement Windows et Unix/Linux ;  configuration d’Oracle Net ;  arrêt et démarrage ;  création d’une nouvelle base de données ;  gestion de la mémoire ;  gestion du stockage (fichiers de données. tables. une vue.All rights reserved . INSERT. et qui souhaitent mettre à jour leurs connaissances. UPDATE et  DELETE). mais aussi aux nombreux  administrateurs formés sur le tas. un index) et sur le SQL (ordres SELECT.  Pour  pouvoir  profiter  pleinement  de  ce  livre. En anglais.Algeria Educ . Les différents exemples de cet ouvrage peuvent être téléchargés sur le site des Editions ENI.com © ENI Editions .  Cet ouvrage s’adresse à la fois aux débutants qui souhaitent devenir administrateur Oracle.1- .

 Où la trouver ?  Le média d’installation contient essentiellement la documentation relative à l’installation.  Les principaux livres sont identifiés par des codes proposés sous forme de lien dans le tableau de synthèse de la liste  des livres.com/technology/documentation/index.  en  ligne  à  l’adresse  suivante :  q q La  documentation  Oracle  est  accessible  http://www. notamment :  q Oracle® Database Release Notes ;  Oracle® Database Quick Installation Guide ;  Oracle® Database Installation Guide. Les livres les plus utiles pour l’administration sont les suivants :  Oracle® Database Concepts (CON)  Concepts sur l’architecture et les fonctionnalités d’Oracle.html  2.    La zone Search permet d’effectuer des recherches. notamment sur un numéro d’erreur Oracle.  Le lien Master Book List affiche la liste de tous les livres.1- .oracle.All rights reserved .Algeria Educ .  © ENI Editions . Organisation  La documentation comporte plusieurs "livres" (format HTML ou PDF) regroupés par thème.La documentation Oracle  1.  Oracle® Database Administrator’s Guide (ADM)  Manuel de l’administration.

).Oracle® Database Security Guide (SEC)  Gestion des utilisateurs et des droits.  Oracle® Database Utilities (UTI)  Manuel d’utilisation des outils Data Pump. à l’optimisation.Algeria Educ .  Oracle® Database Backup and Recovery User’s Guide (BAC)  Manuel des sauvegardes et restaurations. Java. Import.  Oracle® Database Reference (REF)  Manuel  de  référence  de  tous  les  paramètres  du  fichier  de  paramètres  et  de  toutes  les  vues  du  dictionnaire  de  données.  Oracle® Database Backup and Recovery Reference (BAC)  Manuel de référence de l’outil RMAN..  Oracle® Database Upgrade Guide (UPG)  Manuel pour la migration d’une base Oracle d’une ancienne version.  Oracle® Database SQL Language Reference (SQL)  Manuel de référence du SQL. Export et SQL*Loader.. à la couche Oracle  Net.  Oracle® Database Error Messages (ERR)  Manuel des erreurs. etc.2- © ENI Editions .com .  La documentation comporte beaucoup d’autres livres relatifs au développement (PL/SQL.All rights reserved .  openmirrors.

1- .  Cette infrastructure introduit deux concepts : les problèmes et les incidents. par défaut.  Pour exploiter le Référentiel de Diagnostic Automatique. Chaque problème est  identifié  par  une  clé  qui  inclut  le  code  de  l’erreur  (par  exemple  ORA-600)  et  éventuellement.  des  paramètres  supplémentaires. sont stockés de façon structurée et centralisée dans un  répertoire de diagnostic : c’est le Référentiel de Diagnostic Automatique (Automatic Diagnostic Repository ­ ADR). processus d’écoute.  Chaque  incident  est  identifié  par  un  numéro  d’incident.  ADR  est  un  répertoire  qui  stocke  de  façon  structurée  et  centralisée  toutes  les  données  de  diagnostic.). tous les fichiers de trace et tous les fichiers journaux des différents composants qui s’exécutent  sur le serveur (bases de données. Ces outils de vérification sont exécutés automatiquement par Oracle lorsqu’une  erreur  critique  se  produit  ;  ils  peuvent  aussi  être  exécutés  à  la  demande. les erreurs du  système d’exploitation (ORA-07445) ou le manque de mémoire dans la Shared Pool (ORA-04031). par exemple des fichiers de trace ou d’alerte. comme les erreurs internes (ORA-00600)..  Un  incident  est  une  occurrence  d’un  problème. la base de données effectue les actions suivantes :  q une entrée est écrite dans le fichier d’alerte de l’instance (voir ci­après) ;  une alerte est envoyée à Oracle Enterprise Manager ;  des  informations  de  diagnostic  sont  capturées  et  enregistrées  dans  des  fichiers  d’incident qui sont marqués  avec le numéro de l’incident et stockés dans un sous­répertoire du Référentiel de Diagnostic Automatique.  Sous  ce  répertoire  de  base. Oracle propose deux outils :  q Le Support Workbench de la console Enterprise Manager  L’outil ligne de commande adrci  q 2.  Lorsqu’un  incident se produit. égal au répertoire Oracle  Base si la variable d’environnement ORACLE_BASE est définie ; sinon. Vue d’ensemble  Depuis la version 11. il est égal.. Le Référentiel de Diagnostic Automatique  Depuis la version 11.Diagnostiquer les problèmes  1.  Le répertoire de base d’ADR est défini par le paramètre DIAGNOSTIC_DEST qui est.  Le  composant  principal  de  cette  infrastructure  est  le  Référentiel  de  Diagnostic  Automatique  (Automatic  Diagnostic  Repository  ­  ADR). Oracle inclut une nouvelle infrastructure pour le diagnostic des problèmes.  Un problème est une erreur critique de la base de données. par défaut. etc. © ENI Editions . au sous­répertoire log du  répertoire  Oracle  Home.  q q Un autre composant de la nouvelle infrastructure est le Health Monitor qui regroupe plusieurs outils de vérification de la  bonne santé de la base de données.Algeria Educ .  Les  résultats  sont  stockés  dans  le  Référentiel de Diagnostic Automatique.All rights reserved .  un  répertoire  diag  est  créé  avec  une  arborescence  du  type  suivant :  diag +---asm +---clients +---crs +---diagtool +---lsnrctl +---netcman +---ofm +---rdbms ¦ +---<nom unique base de données> ¦ ¦ +---<nom instance> ¦ ¦ +---alert ¦ ¦ +---incident ¦ ¦ +---trace ¦ ¦ +---.

 Les fichiers d’alerte et de trace  Oracle maintient un fichier d’alerte dans lequel il écrit des messages d’information ou d’erreur sur la vie de la base de  données :  q Création de la base de données ;  Démarrages et arrêts ;  Modifications de la structure (tablespaces.Algeria Educ ..trc Active Problem Count 1 Active Incident Count 1 Avant  la  version  11.  3.  incident  Fichiers relatifs aux incidents.----------------------------------------------------Diag Enabled TRUE ADR Base d:\app\oracle ADR Home d:\app\oracle\diag\rdbms\orcl\orcl Diag Trace d:\app\oracle\diag\rdbms\orcl\orcl\trace Diag Alert d:\app\oracle\diag\rdbms\orcl\orcl\alert Diag Incident d:\app\oracle\diag\rdbms\orcl\orcl\incident Diag Cdump d:\app\oracle\diag\rdbms\orcl\orcl\cdump Health Monitor d:\app\oracle\diag\rdbms\orcl\orcl\hm Default Trace File d:\app\oracle\diag\rdbms\orcl\orcl\trace\ orcl_ora_4088. NAME VALUE --------------------.value FROM v$diag_info. ils sont automatiquement renseignés par Oracle.  contient  un  sous­répertoire  par  instance  qui  accède  à  la  base  de  données  (en  général  une  seule  instance.com . +---tnslsnr Le  répertoire diag  contient  un  sous­répertoire  par  composant  Oracle.  lui­même.  Pour  les  bases  de  données.  le  répertoire  rdbms  contient  un  sous­répertoire  par  base  de  données  qui.  Depuis la version 11. Les emplacements recommandés par le standard OFA étaient respectivement les sous­ répertoires bdump et udump du répertoire d’administration.  q q q q q openmirrors. S’ils ne sont  pas définis dans le fichier de paramètres de l’instance. les paramètres BACKGROUND_DUMP_DEST et USER_DUMP_DEST sont dépréciés et ignorés..2- © ENI Editions . Les principaux répertoires sont les suivants :  alert  Fichier d’alerte de l’instance au format XML.  trace  Fichiers de trace des processus et version texte du fichier d’alerte de l’instance.  La vue V$DIAG_INFO donne des informations sur le répertoire de diagnostic :  SQL> SELECT name.  sauf  dans  le  cas  d’une  configuration  Real  Application  Clusters).  l’emplacement  des  fichiers  d’alerte  et  de  trace  était  défini  par  les  paramètres  BACKGROUND_DUMP_DEST (fichiers d’alerte et fichiers de trace des processus d’arrière plan) et USER_DUMP_DEST (fichiers de  trace des processus serveur).¦ +---. fichiers de données) ;  Erreurs critiques (incidents) ;  Erreurs de bloc corrompu (ORA-01578) ;  Problèmes relatifs à l’écriture ou à l’archivage des fichiers de journalisation.All rights reserved .  avec  notamment  un  répertoire  rdbms  pour  les  bases  de  données  et  un  répertoire  tnslsnr  pour  le  processus  d’écoute.

 les incidents relatifs au problème sont affichés :  © ENI Editions . Si le contenu d’un fichier d’alerte ou de trace  n’est pas clair. je préfère donc utiliser le nom anglais. cliquez sur le lien  Logiciel et fichiers associés puis sur le lien Prise en charge de workbench. Support Workbench  La  console  Enterprise  Manager  propose  une  fonctionnalité  intitulée Support  Workbench  qui  permet  d’exploiter  très  facilement le Référentiel de Diagnostic Automatique.  Le  fichier  d’alerte au format texte.All rights reserved . Utiliser le Database Control  a.trc.  Le fichier d’alerte est disponible sous deux formes : une version texte et une version XML (nouveau en version 11).  En cliquant sur le lien Afficher.  Il faut périodiquement consulter ces fichiers d’alerte et de trace. il écrit des informations dans un fichier trace.  4.  s Pour accéder à la page d’accueil du Support Workbench à partir de la page d’accueil de la console. lorsqu’un processus rencontre un problème.  Le  nom  des  fichiers  de  trace  des  processus  serveur  est  de  la  forme  <sid>_ora_<id_processus>. Il est automatiquement renommé en log_n.    La page d’accueil du Support Workbench affiche les problèmes survenus au cours des 24 dernières heures.Algeria Educ .En complément.trc. il ne faut pas hésiter à contacter le support Oracle.log ; il se trouve dans le sous­répertoire trace  du répertoire de diagnostic de la base de données.  Le nom du fichier d’alerte au format texte est de la forme alert_<SID>.  Le  fichier  d’alerte  au  format  XML  se  nomme  log. Il est conseillé de le purger régulièrement pour éviter qu’il ne  soit  trop  volumineux ;  le  mieux  est  de  l’archiver  à  intervalles  réguliers  pour  garder  l’historique  de  la  vie  de  la  base.  le  terme  "Support  Workbench"  est  maladroitement  traduit  par  "Prise  en  charge  de  workbench". grossit sans limite.xml lorsqu’il atteint une certaine taille.3- . Dans la suite de ce chapitre.  La  taille  des  fichiers de trace est limitée par le paramètreMAX_DUMP_FILE_SIZE.  Le nom des fichiers de trace des processus d’arrière­plan est de la forme <sid>_<nom_processus>_<id_processus>.xml  et  se  trouve  dans  le  sous­répertoire  alert  du  répertoire  de  diagnostic de la base de données.  Vous  pouvez  supprimer  ou  renommer  le  fichier  d’alerte  au  format  texte  sans  crainte ;  Oracle  le  recréera  lorsqu’il  en  aura besoin.  Dans  la  console.

  Pour afficher le détail d’un incident.com . il suffit ensuite de cliquer sur le lien associé :    Le Support Workbench permet.  s Sur la page d’accueil du Support Workbench. très facilement. de regrouper les données de diagnostic dans un "package" en vue de  les envoyer au support Oracle.All rights reserved .Algeria Educ . cochez le problème concerné puis cliquez sur le bouton Package :    La page suivante s’affiche :    openmirrors.4- © ENI Editions .

All rights reserved .s Sur cette page.  soit à partir de la console. laissez l’option Packaging rapide sélectionnée puis cliquez sur le bouton Continuer. vous devez saisir vos identifiants de connexion à Metalink. le package est néanmoins créé et peut être envoyé ultérieurement au support.  et  même  s’il  n’a  pas  pu  être  envoyé. Comme le montre l’exemple ci­dessus.  des  informations  supplémentaires  sont  affichées dans la page d’accueil du Support Workbench :  © ENI Editions .  Une  fois  que  le  package  est  créé.  vous pouvez saisir un nom et une description pour le package. soit manuellement. pour terminer la création du package et son envoi au support Oracle. Si vous avez déjà créé une demande  de service.  Cliquez trois fois sur le bouton Suivant. une page d’erreur s’affiche :    Comme l’indique le message d’erreur. l’envoi du package au support  Oracle échoue lorsqu’Oracle Configuration Manager n’a pas été correctement installé et configuré lors de l’installation  d’Oracle. Optionnellement.  s s En cas de problème lors de l’envoi du package au support Oracle. consultez la documentation  "Oracle®  Configuration  Manager  Installation  and  Administration  Guide"  (à  ce  jour. Pour plus d’informations sur l’installation et la configuration de ce composant.2). sélectionnez l’option Non pour le bouton radio Créer une demande de service (SR).  La première page de l’assistant s’affiche :    Sur cette page.  cette  documentation  existe  uniquement en version 10.5- .Algeria Educ .

 Consulter le contenu du fichier d’alerte de l’instance  Dans  la  section  Liens  associés  située  dans  le  bas  des  pages  de  la  console.  et  l’onglet  Packages  permet  de  retrouver  les  packages qui ont été générés.  openmirrors. et éventuellement de les envoyer de nouveau si l’envoi initial a échoué.  b.). etc.6- © ENI Editions .  le  lien  Contenu  du  journal  d’alertes  affiche une page de consultation du contenu du fichier d’alerte de l’instance. texte du message.    Le lien Rechercher affiche un formulaire de recherche qui permet d’effectuer une recherche dans le fichier d’alerte de  l’instance (par date.  la  colonne  Packagée  contient  Oui.Algeria Educ .  Pour  le  problème  concerné. Vérificateurs  Pour  accéder  aux  outils  de  vérification  de  la  bonne  santé  de  la  base  de  données.  vous  pouvez  cliquer  sur  le  lien  Centre de conseil (section Liens associés située dans le bas de la page d’accueil de chaque onglet) puis sur le lien  (onglet) Vérificateurs.All rights reserved .com .  c.

  © ENI Editions . est affichée dans cette page.  Les liens de la section Vérificateurs permettent de lancer les différents outils de vérification.  notamment  des  exécutions  automatiques effectuées par Oracle lorsqu’une erreur critique se produit. si elle n’a pas encore été traitée.Algeria Educ .    La cause de l’erreur.  Pour consulter le résultat. vous pouvez cliquer sur le bouton Détails ou sur le lien du nom du traitement.  La  même  information  peut  être  consultée  dans  l’onglet  Résultats  de  recherche  du  vérificateur  du  Support  Workbench.  La  section  Traitements  du  vérificateur  affiche  le  résultat  de  l’exécution  des  outils.7- .All rights reserved .

Oracle.8- © ENI Editions .  HELP commande  Affiche l’aide d’une commande. section Utiliser le Database Control du chapitre Sauvegarde et récupération). All rights reserved.  SHOW HOMES  openmirrors. Juin 30 16:40:29 2008 Copyright (c) 1982.  5.  Toutes  les  commandes  et  options  sont  décrites  dans  la  documentation  "Oracle®  Database  Utilities".  EXIT ou QUIT  Quitte l’outil.  Les commandes les plus utiles sont les suivantes :  HELP   Liste toutes les commandes. il faut s’assurer que l’environnement Oracle est correctement positionné (ORACLE_HOME  et PATH) puis saisir la commande adrci à l’invite du système d’exploitation.  Dans les deux cas.All rights reserved .  Dans  ce  chapitre. vous pouvez cliquer sur le bouton Lancer Recovery Advisor pour réparer le problème à l’aide du  Data Recovery Advisor (cf.  Exemple  C:\>adrci ADRCI: Release 11. ADR base = "d:\app\oracle"adrci> L’outil  propose  un  très  grand  nombre  de  commandes  qui  pour  certaines  d’entre elles.Beta on Lun.Algeria Educ . L’outil ligne de commande adrci  L’outil ligne de commande adrci permet de consulter le contenu du Référentiel de Diagnostic Automatique.0. comportent un grand nombre  d’options. 2007.1.0 .com .6.  Pour lancer l’outil en interactif.  nous  présenterons  brièvement  les  commandes  et  options  les  plus  utiles  pour  effectuer  des  tâches  courantes.

  La commande SET EDITOR doit absolument être utilisée sur une plate­forme Windows car l’éditeur par défaut  est vi qui n’existe pas (en standard) sur cette plate­forme. Sans option.  les  entrées  du  fichier  d’alerte  de  l’instance  correspondant  à  un  critère  particulier (ici. 2008-06-30 12:26:09..593000 +02:00 Thread 1 advanced to log sequence 43 Current log# 1 seq# 43 mem# 0: D:\APP\ORACLE\ORADATA\ORCL\REDO01.  SHOW ALERT [options]  Affiche le contenu d’un  fichier  d’alerte.All rights reserved .  SHOW PROBLEM [options]  Affiche des informations sur les problèmes répertoriés dans ADR. OS id=2856 . la totalité du contenu du fichier d’alerte est affiché avec l’éditeur  externe.9- . diag\rdbms\orcl\orcl diag\rdbms\test\test diag\tnslsnr\srvwinora\listener adrci> SET HOMEPATH diag\rdbms\orcl\orcl q Afficher les 10 dernières entrées du fichier d’alerte de l’instance :  adrci> SHOW ALERT -TAIL 10 2008-06-27 10:07:57.Algeria Educ .Affiche le chemin de la racine du répertoire de diagnostic de chaque composant présent sur le serveur.. la présence d’une certaine erreur) :  q adrci> SHOW ALERT -TERM -P "message_text like ’ORA-1652%’" ADR Home = d:\app\oracle\diag\rdbms\orcl\orcl: ******************************************************************** 2008-06-24 15:33:29.  SET HOMEPATH chemin  Définit le répertoire de diagnostic courant.  SET EDITOR programme  Définit l’éditeur externe à utiliser pour afficher le contenu des fichiers d’alerte ou de trace.  Exemples  q Définir le répertoire de diagnostic courant (celui de l’instance ORCL) :  adrci> SHOW HOMES ADR Homes: .031000 +02:00 ORA-1652: unable to extend temp segment by 128 in tablespace USERS © ENI Editions .LOG Afficher.  SHOW INCIDENT [options]  Affiche des informations sur les incidents répertoriés dans ADR.375000 +02:00 SMCO started with pid=20.312000 +02:00 ORA-1652: unable to extend temp segment by 128 in tablespace USERS 2008-06-24 15:35:07..  dans  la  fenêtre  courante.  Les commandes ne sont pas sensibles à la casse..

593000 +02:00 1 rows fetched Afficher le détail d’un incident :  q adrci> SHOW INCIDENT -MODE DETAIL -P "incident_id = 6529" ADR Home = d:\app\oracle\diag\rdbms\orcl\orcl: *********************************************************** openmirrors.ado Afficher la "structure" du fichier d’alerte (liste les "colonnes" qui peuvent être utilisées dans les recherches) :  q adrci> DESCRIBE alert_ext Name ----------------------------ORIGINATING_TIMESTAMP NORMALIZED_TIMESTAMP ORGANIZATION_ID COMPONENT_ID HOST_ID HOST_ADDRESS MESSAGE_TYPE MESSAGE_LEVEL MESSAGE_ID MESSAGE_GROUP CLIENT_ID MODULE_ID PROCESS_ID THREAD_ID USER_ID INSTANCE_ID DETAILED_LOCATION UPSTREAM_COMP_ID DOWNSTREAM_COMP_ID EXECUTION_CONTEXT_ID EXECUTION_CONTEXT_SEQUENCE ERROR_INSTANCE_ID ERROR_INSTANCE_SEQUENCE MESSAGE_TsEXT MESSAGE_ARGUMENTS SUPPLEMENTAL_ATTRIBUTES SUPPLEMENTAL_DETAILS PARTITION RECORD_ID FILENAME PROBLEM_KEY VERSION Type NULL? --------------.com .exe adrci> SHOW ALERT -P "message_text like ’ORA-1652%’" ADR Home = d:\app\oracle\diag\rdbms\orcl\orcl: *************************************************************** Output the results to file: c:\temp\alert_2348_3036_orcl_2. ce qui nécessite de définir  l’éditeur à utiliser au préalable) :  adrci> SET EDITOR notepad.All rights reserved .10 - © ENI Editions .Algeria Educ .----------timestamp timestamp text(65) text(65) text(65) text(17) number number text(65) text(65) text(65) text(65) text(33) text(65) text(65) text(65) text(161) text(101) text(101) text(101) number number number text(2049) text(129) text(129) text(129) number number text(513) text(65) number q Afficher les incidents répertoriés dans ADR :  adrci> SHOW INCIDENT ******************************************************************** INCIDENT_ID PROBLEM_KEY CREATE_TIME -------------------.----------------------------------------------6529 ORA 600 [kssadd: null parent] 2008-06-24 16:03:16.q La même chose en utilisant un éditeur externe (ici sur une plate­forme Windows.

11 - ..trc OWNER_ID 1 INCIDENT_FILE d:\app\oracle\diag\rdbms\orcl\orcl\incident\ incdir_6529\orcl_ora_2108_i6529.  soit  en  passant  les  commandes  sur  la  ligne  de  commande  (option  exec).Algeria Educ . INCIDENT_FILE d:\app\oracle\diag\rdbms\orcl\orcl\trace\ orcl_ora_2108.. PROBLEM_KEY ORA 600 [kssadd: null parent] FIRST_INCIDENT 6529 FIRSTINC_TIME 2008-06-24 16:03:16.All rights reserved .  © ENI Editions .********************************************************** INCIDENT INFO RECORD 1 ********************************************************** INCIDENT_ID 6529 STATUS ready CREATE_TIME 2008-06-24 16:03:16.  Voir  la  documentation  "Oracle®  Database Utilities" pour plus d’informations.  soit  en  exécutant  un  script  de  commandes  (option  script)..trc 1 rows fetched L’outil  adcri  peut  être  utilisé  en  mode  batch..593000 +02:00 PROBLEM_ID 1 .593000 +02:00 .

  seule  l’instance  est  lancée ;  il  n’y  a  pas  de  base  de  données  associée.Principes  Pour rendre une base accessible à tous les utilisateurs. le fichier de paramètres est lu. correspondant  aux trois phases du démarrage :  q Instance démarrée (état NOMOUNT) ;  Base montée (état MOUT) ;  Base ouverte (état OPEN).  SMON  effectue  la  récupération  de  l’instance.  mais  ne  les  ouvre  pas  et  ne  vérifie  pas  non  plus  leur  présence ;  si  un  fichier  n’est  pas  trouvé.  le  DBA  peut  effectuer  certaines  tâches  d’administration :  renommer  ou  déplacer  un  fichier  de  données  ou  un  fichier  de  journalisation.  aucun  message  d’erreur  n’est  affiché. Si l’un des fichiers de données à  ouvrir n’est pas trouvé ou est endommagé.  l’instance  utilise  le  paramètreCONTROL_FILES du fichier de paramètres pour  localiser les fichiers de contrôle et les ouvrir. Les vues  statiques  du  dictionnaire  ne  sont  notamment  pas  accessibles. l’instance ouvre les fichiers de journalisation et les fichiers de données qui  étaient en ligne au moment de l’arrêt.  q q Une instance peut être démarrée avec trois niveaux successifs de disponibilité de la base de données.  Cet  état  est  principalement  utilisé  lors  de  la  création d’une nouvelle base.  Lors de l’ouverture de la base de données. Le dictionnaire de données est totalement disponible.) sont interrogeables mais pas les vues  dynamiques  relatives  à  la  base  de  données  (V$DATABASE  par  exemple). la SGA est allouée et les processus d’arrière­plan sont  démarrés. Dans le fichier de contrôle. l’instance signale une erreur et la base de données n’est pas ouverte.  Il y a trois grandes phases dans le processus de démarrage :  q démarrage de l’instance ;  montage de la base de données ;  ouverture de la base de données. à l’exception d’un utilisateur ayant le privilège SYSDBA ou SYSOPER.com © ENI Editions .  Dans  cet  état.  Lors  du  montage  de  la  base  de  données.  q q Lors du démarrage de l’instance. l’instance extrait le nom et le statut des fichiers  de  données  et  des  fichiers  de  journalisation. Si la  base  de  données  peut  être  ouverte  mais  que  le  dernier  arrêt  n’était  pas  un  arrêt  propre.  q q De même. effectuer une récupération de la base de données. V$SGA.  À  ce  stade.  Les  vues  dynamiques  relatives à l’instance (V$INSTANCE.  openmirrors.  la  base  de  données  est  accessible  pour  une  utilisation  "normale" :  les  utilisateurs peuvent se connecter. il y a trois grandes phases dans le processus d’arrêt :  q fermeture de la base de données ;  démontage de la base de données ;  arrêt de l’instance. il faut démarrer une instance et ouvrir la base de données avec  cette instance.  À  ce  stade.  À  ce  stade. V$OPTION.  activer  ou  désactiver  l’archivage des fichiers de journalisation. et vérifie la cohérence de la base de données.Algeria Educ . V$PARAMETER.  une  base  de  données  est  associée  à  l’instance (V$DATABASE est maintenant interrogeable) mais n’est pas ouverte pour une utilisation "normale" : personne  ne peut se connecter à la base de données.1- . V$VERSION etc.All rights reserved .

ora. Fichier de paramètres et clause PFILE Les  noms  par  défaut  du  fichier  de  paramètres  texte  et  du  fichier  de  paramètres  serveur  d’une  instance  sont  respectivement init<SID>.  q q Ne  pas  avoir  d’utilisateurs  connectés  pendant  ces  opérations  permet  d’éviter  des  mises  à  jour  concurrentes  intempestives et de réaliser l’opération plus rapidement.  PFILE  nom du fichier de paramètres à utiliser. ce privilège n’est donné qu’aux  administrateurs.1- .  Ce mode restreint peut être utilisé pour effectuer certaines opérations d’administration qui nécessitent que la base  soit ouverte mais qu’il est préférable (pas obligatoire) de réaliser sans utilisateur connecté. la commande STARTUP permet de démarrer une instance et de lui associer une base avec le niveau  de disponibilité souhaité. il est possible de quitter le mode restreint avec l’ordre SQL :  ALTER SYSTEM DISABLE RESTRICTED SESSION.  Syntaxe simplifiée  STARTUP [NOMOUNT | MOUNT [nom_base] | OPEN [nom_base]] [RESTRICT] [PFILE=nom_fichier] Avec  NOMOUNT | MOUNT | OPEN  niveau de disponibilité souhaité.Démarrage  1. Utiliser SQL*Plus  a. Exemples :  q réorganiser le stockage d’une table.  RESTRICT  restreint l’accès à la base aux utilisateurs ayant le privilège RESTRICTED SESSION.ora et spfile<SID>.  L’option RESTRICT Une base de données peut être ouverte (OPEN) dans un mode restreint (option  RESTRICT) où seuls les utilisateurs  ayant  le  privilège  particulier  RESTRICTED SESSION  (voir  la  section  Gestion  des  droits  dans  le  chapitre  Gestion  des  utilisateurs et de leurs droits) peuvent effectivement se connecter ; généralement.Algeria Educ .  L’emplacement par défaut de ces deux fichiers dépend de la plate­forme :  © ENI Editions . reconstruire des index ;  faire un export ou un import ;  faire un chargement de données avec SQL*Loader.  nom_base  nom de la base à monter ou à ouvrir.  Lorsque l’opération est terminée. La commande STARTUP  Dans SQL*Plus.All rights reserved .

 Spécifier la clause PFILE permet  de  démarrer  explicitement  avec  un  fichier  de  paramètres  texte. respectez le nom  et l’emplacement par défaut.ora dans le répertoire par défaut de la plate­ forme  et  d’y  mettre  une  simple  inclusion  vers  le  "vrai"  fichier  de  paramètres.All rights reserved .  grâce  au  paramètre IFILE.ora’<$I[]IFILE> Si la plate­forme le permet. c’est que l’instance a démarré avec un fichier de paramètres texte. dans  l’ordre.  En priorité. Pour vous simplifier la vie. Mode opératoire  Lancez  SQL*PLUS  et  connectez­vous  avec  le  privilège  AS SYSDBA. le nom et l’emplacement recommandés par le standard OFAsont  différents :  init. Si ce paramètre n’a pas été spécifié explicitement.Algeria Educ . il est aussi possible d’utiliser un lien symbolique. S’il est vide.  qui  peut  éventuellement  ne  pas  respecter  le  nom  et/ou l’emplacement par défaut.ora  q q Le fichier spfile.  Sans clause PFILE dans la commande STARTUP. Exemple (Windows) :  SPFILE=’D:\app\oracle\admin\ORCL\pfile\sp.2- © ENI Editions .  Pour démarrer avec un fichier de paramètres serveur situé à un autre emplacement ou ayant un autre nom.  Pour  concilier  l’emplacement par  défaut et le standard OFA.ora  spfile.ora’ La valeur du paramètre SPFILE  peut  être  consultée  après  démarrage  de  l’instance. il est possible de créer un fichier init<SID>.  Exemple  (Windows) :  IFILE=’D:\app\oracle\admin\ORCL\pfile\init.ora  init<SID>.  q En ce qui concerne le fichier de paramètres texte.  b. un fichier :  q spfile<SID>. il faut  démarrer  avec  un  fichier  de  paramètres  texte  contenant  un  paramètre  SPFILE(pas  IFILE)  indiquant  le  chemin  d’accès complet au fichier de paramètres serveur. Oracle recherche.  en  vous  assurant  que  l’instance  souhaitée  est  correctement désignée.com .  Il est recommandé d’utiliser un fichier de paramètres serveur. l’instance recherche donc par défaut un fichier de paramètres serveur.q %ORACLE_HOME%\database (Windows) ;  $ORACLE_HOME/dbs (Unix/Linux). il est affecté en  interne par le serveur. à l’emplacement par défaut de la plate­forme.  Exemple :  q Connexion locale après avoir positionné la variable d’environnement : ORACLE_SID  q Plate­forme Windows :  C:\>set ORACLE_SID=ORCL  C:\>sqlplus /nolog  SQL> CONNECT / AS SYSDBA  openmirrors.ora dans le sous­répertoire  pfiledu  répertoire  d’administration.ora (sans nom d’instance) est principalement utilisé dans le cas d’une configuration Real  Application Cluster. dans la vue V$PARAMETER  ou  à  l’aide de la commande SQL*Plus SHOW PARAMETER.

q Plate­forme Linux :  $ . Total System Global Area 313860096 bytes Fixed Size 1332892 bytes Variable Size 230689124 bytes Database Buffers 75497472 bytes Redo Buffers 6340608 bytes Base de données montée.0\DB_1\DATABASE\SPFILEORCL.3- .1.ORA c. Modifier le niveau de disponibilité de la base de données  Si l’instance a été démarrée avec un état intermédiaire pour la base de données (NOMOUNT ou MOUNT).All rights reserved . VALUE ---------------------------------------------------------D:\APP\ORACLE\PRODUCT\11. il est possible  de la faire passer à l’état suivant grâce à l’ordre SQL ALTER DATABASE. SQL> SELECT value FROM v$parameter WHERE name = ’spfile’.Algeria Educ .  q De NOMOUNT à MOUNT  © ENI Editions .oraenv<$I[]oraenv> <<< ORCL  $ sqlplus /nolog  SQL> CONNECT / AS SYSDBA  q Connexion  à  travers  le  réseau  en  spécifiant  un  <nom  de  service  réseau  grâce  à  la  commande  SET INSTANCE :  > sqlplus /nolog  SQL> SET INSTANCE orcl  SQL> CONNECT / AS SYSDBA  q Connexion à travers le réseau en spécifiant un nom de service réseau dans la chaîne de connexion :  > sqlplus /nolog  SQL> CONNECT /@orcl AS SYSDBA  Tapez la commande STARTUP avec les options souhaitées :  q Démarrer une instance sans associer de base de données (sans doute en vue d’en créer une nouvelle) :  SQL> STARTUP NOMOUNT  q Démarrer  une  instance  et  simplement  monter  la  base  de  données  (pour  effectuer  certaines  tâches  d’administration) :  SQL> STARTUP MOUNT  q Démarrer une instance et ouvrir la base de données pour la rendre accessible à tous les utilisateurs :  SQL> STARTUP  Exemple de démarrage avec le fichier de paramètres serveur par défaut :  SQL> STARTUP Instance ORACLE lancée. Base de données ouverte.

 la colonne STATUS peut prendre les valeurs suivantes :  STARTED  instance démarrée.Algeria Educ .com . il faut passer par l’état MOUNT. la colonne OPEN_MODE peut prendre les valeurs suivantes :  MOUNTED  base montée (MOUNT)  READ WRITE  openmirrors. base montée (MOUNT)  OPEN  instance démarrée. base ouverte (OPEN)  La colonne LOGINS indique si les connexions sont autorisées (valeur ALLOWED) ou restreintes (RESTRICTED).  Dans la vue V$DATABASE.  Il  existe  aussi  des  ordres  SQL ALTER DATABASE CLOSE et  ALTER DATABASE DISMOUNT  qui  permettent  de  fermer  puis  démonter  la  base  de  données. sans base (NOMOUNT)  MOUNTED  instance démarrée.4- © ENI Editions . Récupérer des informations sur l’instance et sur la base de données  Plusieurs  vues  du  dictionnaire  de  données  permettent  de  récupérer  des  informations  sur  l’instance  et  la  base  de  données au cours du démarrage.  Dans la vue V$INSTANCE. q De MOUNT à OPEN  ALTER DATABASE [nom_base] OPEN.  q Dès l’état NOMOUNT :  q V$INSTANCE : informations sur l’instance ;  V$PARAMETER : liste des paramètres actifs ;  V$SGA : informations sur la SGA ;  V$VERSION : version des différents composants d’Oracle  V$OPTION : liste des options Oracle.ALTER DATABASE [nom_base] MOUNT. Pour passer de l’état NOMOUNT à l’état OPEN.  Par  contre.  q q q q q À partir de l’état MOUNT :  q V$DATABASE : information sur la base de données.  q Dans l’état OPEN :  q PRODUCT_COMPONENT_VERSION : version des différents composants d’Oracle.  ces  ordres  ne  peuvent  pas  être  utilisés  pour  fermer  une  base  de  données puis la rouvrir sans passer par un arrêt complet.All rights reserved .  d.

base ouverte (OPEN) en lecture/écriture (par défaut)  READ ONLY  base ouverte (OPEN) en lecture seule  Le  mode  d’ouverture  de  la  base  de  données  peut  être  spécifié  dans  l’ordre  SQL  ALTER DATABASE. la page suivante  s’affiche :    Cette page vous permet soit de démarrer la base de données.  ou  dans  la  commande STARTUP.Algeria Educ . vous pouvez cliquer sur le bouton Démarrer ; une page  d’identification s’affiche :  © ENI Editions . Utiliser le Database Control  Lorsque vous vous connectez au Database Control et que la base de données n’est pas ouverte.  2.All rights reserved . soit d’effectuer une récupération.  Si la base est arrêtée mais qu’elle n’est pas endommagée.5- .

 etc.  une  page  de  choix  d’opérations  s’affiche. la page de confirmation de démarrage s’affiche :    Si  l’instance  est  démarrée. vous pouvez cliquer sur le bouton Options avancées pour sélectionner les  options de démarrage (NOMOUNT.  openmirrors. MOUNT. puis cliquez sur le bouton OK.  Cette  page  vous  permet  de  préciser  l’opération  que  vous  souhaitez  faire :  arrêter  la  base  de  données.com . ouvrir la base de données.  saisissez  une  identification  pour  l’hôte  et  une  identification  SYSDBAou  SYSOPERpour  la  base  de  données.  Sur  cette  page.  Si l’instance est arrêtée. PFILE.  Exemple  (demande d’ouverture pour une base de données montée) :    Sur la page de confirmation de démarrage.6- © ENI Editions . OPEN.) ; les options proposées dépendent du contexte.All rights reserved .  monter  la  base de données. RESTRICT.Algeria Educ . Sélectionnez l’option souhaitée et cliquez sur le bouton Continuer ; la  page  de  confirmation  de  démarrage  s’affiche  avec  des  informations  de  statut  et  d’opération  adaptés.  base  non  montée  (NOMOUNT)  ou  base  montée  (MOUNT).  La séquence de recherche d’un fichier de paramètres est la même que pour le démarrage avec la commande  STARTUP dans SQL*Plus.

Algeria Educ .  q Si la base de données n’est pas ouverte (non montée ou montée).All rights reserved .  cliquez  sur  le  bouton  Oui.  une  page  d’informations  d’activité est affichée.  Pendant  que  l’opération  se  déroule.  q Vous pouvez alors vous reconnecter au Database Control.Pour  lancer  l’opération. la page qui s’affiche dépend du contexte. la page de connexion s’affiche.  Une fois que l’opération est terminée.  © ENI Editions .7- . la page d’informations sur le statut est de  nouveau affichée.  Si la base de données est ouverte.

  q q Un  arrêt  est  forcément  complet ;  il  n’est  pas  possible  de  s’arrêter  dans  un  état  intermédiaire  (MOUNT  ou NOMOUNT). Ce n’est pas  le  cas  de  l’arrêt  ABORT  pour  lequel  le  point  de  synchronisation  n’est  pas  réalisé ;  les  fichiers  de  données  sont  immédiatement  fermés. une récupération de l’instance (automatique) sera nécessaire (voir les principes dans le chapitre Les  bases de l’architecture Oracle).  ABORT  Oracle  déconnecte  tous  les  utilisateurs  (sans  effectuer  de  ROLLBACK  des  éventuelles  transactions  en  cours)  puis  ferme "brutalement" la base de données.  Les arrêts  NORMAL. Utiliser SQL*Plus  a. La commande SHUTDOWN  Dans SQL*Plus. Le redémarrage ultérieur ne nécessitera pas de récupération de l’instance. IMMEDIATE  et TRANSACTIONAL sont propres ; un point de synchronisation (checkpoint)  est  réalisé  sur les fichiers de données. sans effectuer de point de synchronisation (checkpoint). Une récupération  de l’instance sera nécessaire lors du prochain démarrage.  il  faut  avoir  conscience  que  cet  arrêt  peut  être  bloqué  par  une  transaction qui ne termine pas (la transaction est elle­même bloquée ou un utilisateur est parti en laissant un ordre  openmirrors.Arrêt  1. la commande SHUTDOWN permet de fermer la base et d’arrêter l’instance.  L’instance est arrêtée (les processus d’arrière­plan sont arrêtés et la SGA est libérée).  Pour passer une base ouverte (OPEN) en état monté (MOUNT).  L’arrêt TRANSACTIONAL est un peu moins "violent" que l’arrêt IMMEDIATE puisqu’il attend que les transactions en cours  se  terminent  avant  d’arrêter  la  base.  L’arrêt NORMAL est souvent problématique car il attend la déconnexion des utilisateurs.  Syntaxe  SHUTDOWN [NORMAL | IMMEDIATE | TRANSACTIONAL | ABORT] Options :  NORMAL  Oracle  attend  que  tous  les  utilisateurs  soient  déconnectés  (pas  de  nouvelle  connexion  autorisée)  puis  ferme  proprement la base de données.  L’opération d’annulation  des  transactions  peut  prendre  un  peu  de  temps  et  l’arrêt  n’est  pas aussi immédiat.com © ENI Editions .  La base de données est démontée.  Le processus de l’arrêt est le suivant :  q La base de données est fermée. même si ceux­ci sont inactifs.All rights reserved .  IMMEDIATE  Oracle  déconnecte  tous  les  utilisateurs  (en  effectuant  un  ROLLBACK  des  éventuelles  transactions  en  cours)  puis  ferme proprement la base de données.Algeria Educ .  Lors  du  prochain  redémarrage.  Ce  comportement  est  similaire  à  un  arrêt  anormal  de  l’instance. l’arrêt IMMEDIATE peut être utilisé pour déconnecter les utilisateurs ; les transactions éventuellement  en  cours  sont  annulées.  Dans ce cas. il faut arrêter la base (SHUTDOWN) et la redémarrer dans  l’état souhaité (STARTUP MOUNT par exemple).  Par  contre.1- .  TRANSACTIONAL  Oracle  attend  que  toutes  les  transactions  en  cours  se  terminent  avant  de  déconnecter  les  utilisateurs  (pas  de  nouvelle transaction autorisée) puis ferme proprement la base de données.

 Utiliser le Database Control  Sur la page d’accueil du Database Control.’Oui’) trans 2 FROM v$session 3 / Tapez la commande SHUTDOWN avec les options souhaitées :  q Arrêt sans utilisateur connecté :  SQL> SHUTDOWN  q Arrêt avec des utilisateurs connectés en laissant les transactions se terminer :  SQL> SHUTDOWN TRANSACTIONAL  La vue  V$SESSIONpermet de visualiser les utilisateurs connectés ; cette vue sera présentée plus en détail dans la  section Superviser les utilisateurs connectés du chapitre Gestion des utilisateurs et de leurs droits.  2.username.  Dans V$SESSION.  Dans  la  pratique.’’.  par  exemple. il faut vérifier s’il existe d’autres sessions que les sessions correspondant aux processus d’arrière­ plan  (colonne username  vide)  et  que  la  session SYS  (session  utilisée  pour  l’arrêt).  L’arrêt  ABORT  est  le  plus  rapide  (lui  est  immédiat !)  mais  ne  doit  être  utilisé  qu’en  dernier  recours :  blocage  d’un  autre type d’arrêt. Mode opératoire  Lancez  SQL*PLUS  et  connectez­vous  AS SYSDBA.  vous  aurez  une  ou  plusieurs  sessions  SYSMAN et  DBSNMP.  La  requête  présentée  ci­dessus  permet aussi de savoir si les utilisateurs connectés ont une transaction en cours (colonne trans égale à Oui).INSERT/ UPDATE/DELETE en suspens).  soit  arrêter  le  Database  Control (emctl stop dbconsole).  si  le  Database  Control  est  lancé  (service  OMS  et  agent).Algeria Educ . le cadre Général donne le statut actuel et propose un bouton Arrêter qui  permet d’arrêter la base de données :    .serial#.  Pour  arrêter  la  base  de  données.  à  faire  une  sauvegarde.  b.  utilisez  un  SHUTDOWN IMMEDIATE pour être certain que la base de données sera effectivement arrêtée.  vous  devrez  donc.2- © ENI Editions . soit utiliser la commande SHUTDOWN IMMEDIATE. besoin réel d’arrêter la base immédiatement.  en  vous  assurant  que  l’instance  souhaitée  est  correctement  désignée.All rights reserved .  Exemple :  > sqlplus /nolog SQL> SET INSTANCE orcl SQL> CONNECT / AS SYSDBA Vérifiez éventuellement s’il y a des utilisateurs connectés et des transactions en cours :  Exemple :  SQL> SELECT sid.DECODE(taddr.  Dans  un  script  d’arrêt  automatique  destiné.NULL. Les techniques  utilisables  pour  déconnecter  les  utilisateurs  seront  aussi  présentées  dans  la  section  Superviser  les  utilisateurs  connectés du chapitre Gestion des utilisateurs et de leurs droits.

3- openmirrors. IMMEDIATE.) ; un lien est aussi proposé pour visualiser les sessions.  saisissez  une  identification  pour  l’hôte  et  une  identification  SYSDBA  ou  SYSOPER  pour  la  base  de  données.  Pendant  que  l’opération  se  déroule.All rights reserved .Si vous cliquez sur le bouton Arrêter.  Les champs de cette page sont remplis par défaut si vous avez défini des informations d’identification dans  vos  préférences  (cf. etc. cliquez sur le bouton Régénérer pour revenir au Database Control. la page d’identification s’affiche :    Sur  cette  page.  section  Oracle  Enterprise  Manager  Database  Control  du  chapitre  Les  outils  d’administration).  Cliquez  sur  le  bouton  Oui  pour  procéder  à  l’arrêt. puis cliquez sur le bouton OK.  une  page  d’informations  d’activité est affichée :    Au bout de quelques instants. vous pouvez cliquer sur le bouton Options avancées pour sélectionner  les options de l’arrêt (NORMAL.  © ENI Editions .  La page de confirmation d’arrêt est ensuite affichée :    Sur cette page de confirmation de démarrage.Algeria Educ .com . Notez par ailleurs que c’est l’identification SYSDBA indiquée sur cette page qui sera utilisée pour  effectuer l’arrêt et non votre connexion actuelle au Database Control (qui peut être une connexion normale et pas  SYSDBA).

4- © ENI Editions .  Attendez encore quelques instants avant de rafraîchir la page.  Pour une raison inconnue. la page d’accueil habituelle s’affiche. Lorsque l’arrêt est terminé. il arrive fréquemment qu’une page d’erreur soit affichée à ce stade :    Cliquez sur le bouton OK pour revenir à la page précédente et attendez quelques instants pour cliquer de nouveau  sur le bouton Régénérer.All rights reserved . Si le problème persiste. quittez le Database Control puis ouvrez­le à nouveau. la page d’informations sur  le statut doit s’afficher :    .Si l’arrêt n’est pas encore terminé. Attendez encore quelques instants avant de  rafraîchir la page.Algeria Educ .

0/db_1:Y L’emplacement  du  fichier  oratab  peut  varier  selon  le  système  d’exploitation.All rights reserved .  b..  Ce  script  de  démarrage appelle les scripts dbstart et dbshut fournis par Oracle. il suffit de mettre un Y dans le dernier champ de  la ligne correspondant à la base de données.  Exemple (script restart) :  ORACLE_SID=$1 ORAENV_ASK=NO .  Des scripts shell personnalisés similaires à dbstart et dbshut peuvent être très facilement écrits. # Arrêter les bases de données echo "** arrêt des bases de données" >> $LOG $ORACLE_HOME/bin/dbshut $ORACLE_HOME_LISTENER > $LOG 2>&1 & Les scripts  dbstart et  dbshut utilisent le fichier  /etc/oratabpour déterminer quelles sont les bases de données à  démarrer ou arrêter automatiquement.  Pour démarrer ou arrêter automatiquement une base de données. des bases de données peuvent être démarrées ou arrêtées automatiquement grâce  au  script  de  démarrage  présenté  dans  la  section  Installation  du  serveur  du  chapitre  L’installation. Sur plate­forme Unix ou Linux  a.  Extraits du script :  # Démarrer les bases de données echo "** démarrage des bases de données" >> $LOG $ORACLE_HOME/bin/dbstart $ORACLE_HOME_LISTENER > $LOG 2>&1 & . Automatisation  Sur plate­forme Unix ou Linux.Automatisation et scripts  1.  utilisez  les  scripts  dbstart  et  dbshut  de  la  version la plus récente (ajustez la variable d’environnement $ORACLE_HOME en conséquence).  Le script dbstart lance SQL*Plus et utilise la commande STARTUP sans clause PFILE ; la séquence de recherche du  fichier de paramètres est donc la même que pour un démarrage manuel avec la commande STARTUP dans SQL*Plus. oraenv export ORACLE_SID ORAENV_ASK sqlplus /nolog << _EOF_ CONNECT / AS SYSDBA SHUTDOWN IMMEDIATE STARTUP EXIT _EOF_ openmirrors. Ce fichier contient une ou plusieurs lignes de la forme suivante :  <ORACLE_SID>:<ORACLE_HOME>:{Y|N} Exemple :  ORCL:/u01/app/oracle/product/11..1- .com © ENI Editions .  Consultez  la  documentation  Installation Guide de votre plate­forme.  Si  vous  avez  plusieurs  versions  d’Oracle  sur  votre  serveur.1. Scripts  Les scripts dbstart et dbshut peuvent être appelés manuellement pour démarrer ou arrêter les bases de données  configurées à Y dans oratab.Algeria Educ .

  il  peut  être  nécessaire  (en  cas  de  problème  notamment)  de  s’assurer  que  le  paramètre  ORA_<SID>_AUTOSTARTest  bien  à TRUE dans la base de registre. Sur plate­forme Windows  a.  Il  appelle  le  script  oraenv  pour  modifier  l’environnement  puis  SQL*Plus  pour  faire  un  SHUTDOWN  et  un  STARTUP.  le  démarrage  s’effectue  avec  le  fichier  de  paramètres  texte  indiqué. ou n’existe pas.  Les paramètres de la base de registre ont la signification suivante :  ORA_<SID>_AUTOSTART  Indique si l’instance identifiée par <SID> doit être démarrée (valeur TRUE) ou non (valeur FALSE) après le démarrage  du service.  transactional  et  normal.  En  complément. la séquence de recherche du fichier de paramètres s’effectue comme lors  d’un  STARTUP  sans  clause  PFILE  dans  SQL*Plus.  l’instance  ne  démarre  pas  au  redémarrage du service associé.  La  connexion  SYSDBA  s’effectue  avec  une  authentification  par  le  système  d’exploitation.  ORA_<SID>_SHUTDOWN  Indique  si  l’instance  identifiée  par  <SID>  doit  être  arrêtée  (valeur  TRUE)  ou  non  (valeur  FALSE)  lors  de  l’arrêt  du  service. Automatisation  Pour démarrer automatiquement une base au démarrage du système.  augmentez  la  valeur  du  paramètre  ORA_<SID>_SHUTDOWN_TIMEOUT pour éviter d’avoir des arrêts de type ABORT.  les  paramètres  indiqués  HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_nom_oracle_home.  ORAENV_ASK=NO  permet  de  ne  pas avoir de question posée par oraenv. restart ORCL Ce  script  permet  de  redémarrer  une  base  de  données  dont  l’identifiant  d’instance  est  passé  en  paramètre.  immediate  (valeur  par  défaut). Si le service a été créé en démarrage automatique  (chapitre Création d’une nouvelle base de données).All rights reserved . vous pouvez  utiliser la technique du fichier de paramètres texte contenant un paramètre SPFILE.  Si  votre  base  met  plus  de  90  secondes  à  s’arrêter.  2.  ci­dessus  se  trouvent  dans  la  clé  b.  Si  ce  paramètre  contient  une  valeur  erronée.  ORA_<SID>_SHUTDOWN_TIMEOUT  Délai  (en  secondes)  accordé  à  l’instance  identifiée  par  <SID>  pour  s’arrêter  avant  l’arrêt  du  service  (qui  est  alors  équivalent à un SHUTDOWN ABORT).  Dans  la  base  de  registre.Appel :  $ . Normalement.  Si  le  paramètre  est  renseigné.  il  faut  s’assurer  que  le  paramètre  ORA_<SID>_SHUTDOWNest  bien  à  TRUE  dans  la  base  de  registre  et  ajuster  éventuellement  la  valeur  du  paramètreORA_<SID>_SHUTDOWN_TIMEOUT.  il  est  possible  de  définir  un  paramètre  ORA_<SID>_PFILE  qui  donne  le  chemin  d’accès  complet vers le fichier de paramètres texte à utiliser pour le démarrage de l’instance identifiée par <SID>.  ORA_<SID>_SHUTDOWNTYPE  Type  d’arrêt  effectué  sur  l’instance  identifiée  par  <SID> :  abort.  Si ce paramètre est vide. cela doit être le cas. Pour démarrer avec un fichier de paramètres serveur non standard. il faut mettre le service associé à l’instance  (OracleService<SID>) en démarrage automatique. cela doit être le cas.2- © ENI Editions . Scripts  Plusieurs techniques sont possibles pour écrire des scripts de démarrage ou d’arrêt :  q en utilisant la commande système net pour démarrer (net start) ou arrêter le service (net stop) ;  .  Dans  la  base  de  registre.Algeria Educ .  Pour  arrêter  automatiquement  une  base  lors  de  l’arrêt  du  système.

 Valeurs possibles : i (IMMEDIATE.q en utilisant l’utilitaire oradim fourni par Oracle ;  en utilisant un fichier de commandes (.Algeria Educ .  Le  service  du  Database  Control  (OracleDBConsole<SID>)  est  dépendant  du  service  de  l’instance ;  pour  arrêter  le  service  de  l’instance.  type  Indique ce qui doit être arrêté.com © ENI Editions .inst (les  deux).  openmirrors.bat) :  set ORACLE_SID=%1% oradim -shutdown -sid %ORACLE_SID% oradim -startup -sid %ORACLE_SID% Appel :  C:\>restart ORCL Ce script permet de redémarrer une base de données dont l’identifiant d’instance est passé en paramètre.  il  faut  au  préalable  arrêter  le  service  du  Database  Control.bat) qui lance SQL*Plus avec un script SQL sur la ligne de commande  qui démarre ou arrête la base.  démarrer le service du Database Control démarre le service de l’instance.All rights reserved . valeur par défaut).  Inversement. Valeurs possibles : srvc (service) ou  inst (instance. n (NORMAL) ou a (ABORT).  mode  Mode de l’arrêt.  q Syntaxe simplifiée de l’utilitaire oradim :  s Pour le démarrage :  ORADIM -STARTUP -SID sid s Pour l’arrêt :  ORADIM -SHUTDOWN -SID sid [-SHUTTYPE type] [-SHUTMODE mode] Avec :  sid  Identifiant de l’instance. par défaut) ou srvc.3- .  Exemple (fichier de commande restart.

  ORA-01109: base de données non ouverte ORA-01219: BdD fermee : demandes seulement autorisées sur des tables/vues fixes Explication  La base de données n’est pas ouverte mais simplement montée (MOUNT).Algeria Educ .Problèmes courants et solutions  ORA-01033: ORACLE initialization or shutdown in progress Explication  La base de données n’est pas ouverte.  Cause(s)  Vous n’êtes pas connecté à la bonne instance.  reconnectez­vous (après avoir modifié ORACLE_SID ou en utilisant le bon nom de service réseau).  © ENI Editions .  La  base  de  données  est  peut  être  effectivement  en  train  de  démarrer  ou  de  s’arrêter ;  la  base  de  données  est  peut­être aussi  tout simplement non montée ou montée.  Action(s)  Interrogez  V$INSTANCE  pour  vérifier  à  quelle  instance  vous  êtes  connecté.  Cause(s)  Vous  tentez  de  vous  connecter  à  une  base  de  données  non  ouverte  sans  utiliser  de  connexion  SYSDBA.  Si  vous  n’êtes  pas  sur  la  bonne  instance.  Action(s)  Connectez­vous AS SYSDBA et interrogez la colonne STATUS de V$INSTANCE.fermer d’abord le thread Explication  Vous tentez de démarrer une instance déjà démarrée.  ORA-01034: ORACLE not available Explication  L’instance est arrêtée.1- . Pour passer une base  de données de l’état NOMOUNT ou MOUNT à OPEN.  ORA-01081: impossible de lancer ORACLE déjà en cours .  Cause(s)  Vous tentez de vous connecter à une instance Oracle arrêtée sans utiliser de connexion SYSDBA. Vous tentez de passer d’un état NOMOUNT ou MOUNT à OPEN en faisant un  STARTUP.  Action(s)  Connectez­vous AS SYSDBA et démarrez l’instance. utilisez la commande ALTER DATABASE.All rights reserved .  Cause(s)  Vous  tentez  de  faire  une  action  (ORA-01109)  ou  de  lire  une  vue  statique  du  dictionnaire  de  données  (ORA-01219)  qui  nécessite que la base soit ouverte.

Action(s)  Interrogez la colonne STATUS de V$INSTANCE et si c’est le cas (valeur MOUNTED au lieu de OPEN). il y a des utilisateurs connectés. Sur un SHUTDOWN IMMEDIATE.  par  exemple :  interrogation  de  V$DATABASE.Algeria Educ .  Action(s)  Vérifiez la variable et/ou le service associé.  Action(s)  Interrogez  la  colonne  STATUS de  V$INSTANCE et si c’est  le  cas  (valeur STARTED  au  lieu  de MOUNTED). Si cela  ne marche pas..  Action(s)  Ouvrez une autre session de l’outil d’administration. il n’est plus possible d’interroger V$SESSION et donc de déterminer si le problème est  lié à des utilisateurs connectés.  ORA-01507: base de données non montée Explication  La base de données n’est pas montée (NOMOUNT) ; seule l’instance est démarrée.  Sur  plate­forme  Windows. ouvrez d’abord la base  de données.. etc.  Cause(s)  Vous  tentez  de  faire  une  action  qui  nécessite  que  la  base  de  données  soit  montée.All rights reserved .  Cause(s)  La  variable ORACLE_SID  n’est  pas  correctement  positionnée. Sur un SHUTDOWN TRANSACTIONAL.2- © ENI Editions . il y a une très grosse transaction à annuler. ordre SQL ALTER DATABASE OPEN. ou un autre problème.  Lorsqu’un SHUTDOWN est en cours.com .  openmirrors.  montez  d’abord la  base de données (ALTER DATABASE MOUNT).  Sur un SHUTDOWN IMMEDIATE.  le  service  associé  à  l’instance  (OracleService<SID>) n’est pas lancé.  ­ kill des processus sur plate­forme Unix.  ORA-12560: TNS : erreur d’adaptateur de protocole Explication  Le processus d’écoute n’a pas réussi à démarrer un processus pour connecter l’utilisateur à l’instance. il y a des transactions en  cours.  Blocage d’un SHUTDOWN Cause(s)  Sur un  SHUTDOWN NORMAL. il faut "tuer" les processus :  ­ Redémarrage du service associé à l’instance sur plate­forme Windows. soyez patient ! L’arrêt peut prendre plusieurs dizaines de secondes. connectez­vous AS SYSDBA et exécutez un SHUTDOWN ABORT.

 fichiers de journalisation et fichiers de données des  tablespaces "techniques" d’Oracle).  q Création  du  compte  Oracle  qui  va  contenir  les  objets  de  l’application  (chapitre  Gestion  des  utilisateurs  et  de  leurs droits) q Créer le compte.All rights reserved .  Les dimensionner en fonction de l’étude de volumétrie réalisée initialement.  contraintes  d’intégrité  (clés  primaires/uniques/étrangères). Étapes de création d’une nouvelle base de données pour une application  Le processus complet de création d’une nouvelle base de données pour une application comporte les grandes étapes  suivantes :  Conception du modèle physique q Définir  tous  les  objets  (Oracle)  de  l’application : tables.Vue d’ensemble  1.  programmes  stockés  (triggers.  index.  vues.  L’autoriser à utiliser de l’espace dans les tablespaces de l’application.  Dimensionner  chaque  objet  occupant  de  l’espace  de  stockage  (table  et  index)  en  fonction  de  l’étude  de  volumétrie réalisée initialement. la base de données peut être vue comme une "enveloppe" (une "boîte vide") dans laquelle des  structures vont être créées pour une ou plusieurs applications.  Rendre le dictionnaire de données exploitable.  Étudier la volumétrie de l’application (nombre d’utilisateurs. nombre de lignes attendues dans les tables).  Lui donner les privilèges suffisants pour créer les objets.  Créer une nouvelle base de données (fichiers de contrôle.  procédures/  fonctions  stockées.  À ce stade.Algeria Educ .  q Création des utilisateurs finaux de l’application (chapitre Gestion des utilisateurs et de leurs droits) © ENI Editions .1- .  q q Création des objets de l’application dans ce compte Oracle (chapitre Gestion des tables et des index) q Créer les objets Oracle de l’application (généralement sous la forme d’un ou de plusieurs scripts).  packages).  q q q Création des structures de stockage adaptées (chapitres Gestion des tablespaces et des fichiers de données et  Gestion des informations d’annulation) q Créer les tablespaces (avec leurs fichiers de données) destinés à stocker les données de l’application (tables  et index).  q Création de la base proprement dite (ce chapitre) q Créer une nouvelle instance.

  Configurer le Database Control.Algeria Educ .  Lancer SQL*Plus et se connecter AS SYSDBA.q Créer les utilisateurs.  Après ces étapes.  2. Étapes de création de la base de données proprement dite  Les grandes étapes de la création de la base de données proprement dite sont les suivantes :  q Créer les répertoires sur les disques. si possible en respectant les recommandations du standard OFA. mais conseillé).  la  création  de  la  base  de  données  proprement  dite  présentée  dans  ce  chapitre  n’est qu’une petite étape du processus complet (mais une étape fondamentale). généralement par copie d’un ancien. sur les objets créés précédemment dans le  compte propriétaire de l’application).  Préparer un nouveau fichier de paramètres texte.2- © ENI Editions .  Enregistrer la nouvelle instance dans le fichier oratab (plate­forme Unix ou Linux). il est vivement conseillé d’effectuer une sauvegarde  de ces bases de données avant de démarrer le processus de création.  Si le serveur abrite déjà des bases de données Oracle.  Créer un fichier de paramètres serveur (pas obligatoire.  Configurer Oracle Net pour la nouvelle base de données.  Finaliser la création du dictionnaire (quelques scripts à exécuter).e.  Créer la base de données (ordre SQL CREATE DATABASE).com .  Démarrer l’instance en état NOMOUNT.  Positionner la variable d’environnement ORACLE_SID.  Créer  le  service  associé  à  l’instance  (plate­forme  Windows)  ou  créer  le  fichier  de  mot  de  passe  pour  l’identification SYSDBA (plate­forme Unix ou Linux).  q q q q q q q q q q q La création d’une nouvelle base de données suppose l’installation préalable d’Oracle (chapitre Installation).  Comme  vous  pouvez  le  constater.  q Sauvegarde de la base (chapitre Sauvegarde et récupération) q Sauvegarde de référence de la base.All rights reserved .  Leur donner des droits adaptés sur les objets de l’application (i. la nouvelle base de données est ouverte et contient :  q les tablespaces SYSTEM et SYSAUX avec leur(s) fichier(s) de données associé(s) ;  éventuellement un tablespace d’annulation et un tablespace temporaire selon les options utilisées ;  les fichiers de contrôle et de journalisation ;  les deux comptes DBA standard (SYS et SYSTEM) ;  q q q openmirrors.

Algeria Educ .  des  paramètres  peuvent  être  ajustés  ultérieurement  en  fonction  des  caractéristiques  de  l’application) ; utiliser  des  scripts  "génériques"  de  création  de  bases  est  donc  envisageable.  puis  de  les  utiliser  lors  de  la  création  ultérieure  d’une  nouvelle  base  de  données.  © ENI Editions .  L’assistant graphique inclut les étapes suivantes de création des structures de stockage (chapitres Gestion  des fichiers de contrôle et de journalisation et Gestion des tables­ paces et des fichiers de données).q le segment d’annulation SYSTEM ;  le dictionnaire de données.3- .  q À  ce  stade.  la  base  de  données  est  prête  pour  accueillir  des  structures  complémentaires  qui  vont  constituer  l’application.  3.All rights reserved . il est possible de définir ses propres modèles  de  base  de  données. sans créer la base de données ; c’est un bon moyen pour constituer nos  scripts "génériques".  L’assistant  graphique  offre  aussi  la  possibilité  de  générer  les  scripts de création de la base de données.  l’assistant  Configuration de  base  de  données. Les étapes de création  de  la  base  de  données  proprement  dite  sont  toujours  les  mêmes  et  dépendent  (relativement)  peu  des  caractéristiques  de  l’application  (et  en  tout  état  de  cause. il est très simple d’écrire ou de récupérer des scripts et de les réutiliser à chaque fois.  Cet  assistant  facilite  la  création  de  la  base  de  données  en  offrant  la  possibilité  d’utiliser  des  modèles de base de données prêts à l’emploi et/ou en permettant de définir très précisément les caractéristiques de  la nouvelle base de données à l’aide de plusieurs écrans. Méthodes disponibles  La nouvelle base de données peut être créée à la main avec les outils du système d’exploitation et SQL*Plus ; dans  ce cas. Par ailleurs.  La  nouvelle  base  de  données  peut  aussi  être  créée  à  l’aide d’un  assistant  graphique.  comprenant  ou  non  des  fichiers  de  données  prêts  à  l’emploi.

Création de la base de données manuellement 
1. Créer les répertoires sur les disques 
Pour respecter les recommandations du standard OFA (voir le chapitre Installation), vous devez créer : 
q

un répertoire d’administration, portant le nom de la base de données, situé dans le répertoire %ORACLE_BASE% \admin(Windows) ou $ORACLE_BASE/admin (Linux/ Unix),  un répertoire de données, portant le nom de la base de données, situé dans un répertoire oradata lui­même  situé dans ORACLE_BASE ou sur un autre volume. 

q

Depuis  la  version  11  et  l’apparition  du  Référentiel  de  Diagnostic  Automatique,  le  répertoire  d’administration  contient moins de répertoires et de fichiers.  Le répertoire d’administration contient généralement les répertoires suivants :  adump  Répertoire pour des fichiers d’audit.  create ou scripts  Répertoire des scripts de création de la base de données.  exp ou dpdump   Répertoire pour les fichiers d’export.  pfile   Répertoire pour les fichiers de paramètres texte.  Si le serveur comporte plusieurs disques, il sera judicieux de répartir les différents fichiers de la base de données sur  ces  disques  afin  d’optimiser  les  entrées/sorties  et  d’éviter  les  contentions ; dans  ce  cas,  il  faut  créer  d’autres  répertoires de données sur les disques concernés.  Un  répertoire  supplémentaire  peut  être  créé  pour  la  zone  de  récupération  rapide  (voir  le  chapitre  Sauvegarde  et  récupération).    Généralement, la base de données et l’instance portent le même nom.

2. Préparer un nouveau fichier de paramètres texte 
a. Principes 
Comme indiqué dans la section La base de données du chapitre Les bases de l’architecture Oracle, il est conseillé  d’utiliser un fichier de paramètres serveur, celui­ci étant initialement créé à partir d’un fichier de paramètres texte.  Pour respecter le standard OFA, ce fichier de paramètres texte doit s’appeler init.ora et se trouver dans le sous­ répertoire pfiledu répertoire d’administration. Généralement, ce fichier de paramètres texte est créé par duplication  d’un fichier existant ou d’un fichier modèle que vous aurez défini.  Nous ne créerons pas de fichier init<SID>.ora (avec une inclusion du fichier init.ora) à l’emplacement par défaut de  la plate­forme (dbs sous Unix/Linux, database sous Windows) ; ainsi, nous ne risquons pas de démarrer par mégarde  avec un fichier de paramètres texte.  Il y a plus de 250 paramètres documentés par Oracle ! Il n’est évidemment pas question de les spécifier tous ! Sur la  totalité des paramètres, une trentaine de paramètres qu’il convient de connaître, sont suffisants pour la plupart des 

openmirrors.com

© ENI Editions - All rights reserved - Algeria Educ

- 1-

bases de données.  Certains paramètres seront décrits brièvement dans cette partie puis présentés de manière plus détaillée dans des  chapitres ultérieurs. 

b. Les principaux paramètres 
Les paramètres ne sont pas listés dans un ordre alphabétique mais dans un ordre thématique.  Reportez­vous  à  la  section Compléments  sur  les  paramètres  relatifs  à  la  mémoire  pour  avoir  plus  d’informations à ce sujet. 

DB_NAME Nom de la base (jusqu’à 8 caractères). Généralement DB_NAME est égal au nom de l’instance (ORACLE_SID).  Exemple :  DB_NAME = hermes DB_DOMAIN Localisation logique de la base sur le réseau (jusqu’à 128 caractères). Ce paramètre, associé au paramètre DB_NAME,  permet  à  Oracle  de  construire  le  nom  global  de  la  base  de  données<,  sous  la  forme  DB_NAME.DB_DOMAIN.  Ce  paramètre  est  important  si  la  base  de  données  appartient  à  un  système  distribué  (ou  est  susceptible  de  l’être) ; sinon, il peut être ignoré.  Exemple :  DB_DOMAIN = olivier-heurtel.fr DB_UNIQUE_NAME Nom unique de base de données (jusqu’à 30 caractères). Des bases de données ayant le même DB_NAME au sein du  même  DB_DOMAIN  (par  exemple  une  base  de  production  et  une  base  de  test)  doivent  avoir  un  DB_UNIQUE_NAME  différent. Ce paramètre est apparu en version 10. Il est, par défaut, égal à DB_NAME.  Ce paramètre doit être spécifié si vous souhaitez ouvrir simultanément sur un serveur deux bases portant le même  nom (le même DB_NAME) ; il permet de les différencier.  Exemple :  DB_UNIQUE_NAME = hermes_demo COMPATIBLE Indique  un  numéro  de  version  d’Oracle  avec  laquelle  la  base  de  données  doit  être  compatible.  Valeurs  possibles :  10.0.0 jusqu’au numéro de la version actuelle (11.1.0.6). Valeur par défaut : 11.0.0.  Ce paramètre permet d’utiliser une nouvelle version d’Oracle en restant compatible avec une version plus ancienne,  et donc sans avoir besoin de tester les nouvelles fonctionnalités sur la base de données. Certaines fonctionnalités  de la nouvelle version peuvent être restreintes. La valeur du paramètre peut être augmentée ultérieurement, mais il  est ensuite généralement impossible de redescendre (il faut repartir d’une sauvegarde antérieure au changement).  Exemple :  COMPATIBLE = 11.1.0. CONTROL_FILES Emplacement des fichiers de contrôle de la base de données. Il est conseillé d’en spécifier au minimum 2, si possible  sur des disques différents (dans l’idéal, 3 ou 4 sur des disques différents). La recommandation OFA pour le nommage  du fichier est controlN.ctl, N étant un numéro d’ordre (1, 2, etc. ou 01, 02, etc.).  Si le fichier de paramètres a été créé par duplication d’un fichier existant utilisé, n’oubliez pas de modifier ce  paramètre.  En  cas  d’oubli,  vous  risquez  d’écraser  les  fichiers  de  contrôle  présents  dans  cette  directive  et  donc de provoquer un arrêt brutal de la base de données qui les utilise. 

- 2-

© ENI Editions - All rights reserved - Algeria Educ

Exemple :  CONTROL_FILES = ("f:\oracle\oradata\HERMES\control01.ctl", "g:\oracle\oradata\HERMES\control02.ctl") DB_BLOCK_SIZE Taille  de  bloc  "standard"  en  octets,  utilisée  par  défaut  pour  les  fichiers  de  données  des  tablespaces  et  pour  l’organisation du cache de données (buffer cache). La valeur doit être comprise entre 2 Ko et 32 Ko (sauf restriction  spécifique à la plate­forme) et être un multiple de la taille de bloc du système d’exploitation. Ce paramètre ne peut  pas être modifié ultérieurement sans recréer la base de données. Valeur par défaut = 8192 (8 Ko).  La  taille  de  bloc  peut  avoir  un  impact  plus  ou  moins  important  sur  les  performances.  L’exposé  des  avantages  et  inconvénients  respectifs  des  "petits"  blocs  et  des  "grands"  blocs  sort  du  cadre  de  cet  ouvrage.  En  résumé,  les  recommandations d’Oracle sont les suivantes : 
q

Pour un système plutôt transactionnel (généralement caractérisé par des petites requêtes de lecture et de  mises à jour), utilisez des "petits" blocs (4 Ko ou 8 Ko).  Pour un système plutôt décisionnel (généralement caractérisé par des grosses requêtes de lecture), utilisez  des "gros" blocs (16 Ko ou 32 Ko).  Pour les systèmes mixtes, ou dans le doute, utilisez une taille de bloc de 8 ko (valeur par défaut). 

q

q

Exemple :  DB_BLOCK_SIZE = 8192 MEMORY_MAX_TARGET Taille  maximum  de  la  mémoire  utilisable  par  l’instance.  Peut  être  spécifiée  en  octets,  en  Ko  (symbole  K),  en  Mo  (symbole  M)  ou  en  Go  (symbole  G).  Si  ce  paramètre  n’est  pas  spécifié,  il  est  égal  à  la  valeur  du  paramètre  MEMORY_TARGET.  N’oubliez pas que les modifications dynamiques de la mémoire s’effectuent dans la limite de la valeur du paramètre  MEMORY_MAX_TARGET, qui lui n’est pas dynamique (cf. Chapitre Les bases de l’architecture Oracl, section L’instance).  Exemple  MEMORY_MAX_TARGET = 2G MEMORY_TARGET Taille de la mémoire allouée à l’instance. Peut être spécifié en octets, en Ko (symbole K), en Mo (symbole M) ou en Go  (symbole  G).  Valeur  par  défaut :  0.  Valeur  minimale :  148 Mo.  La  valeur  peut  être  arrondie  par  Oracle  au  granule  supérieur. Ce paramètre est apparu en version 11.  Si  ce  paramètre  a  une  valeur  différente  de  zéro,  la  gestion  automatique  de  la  mémoire  (Automatic  Memory  Management ­ AMM) est activée. Dans ce cas, Oracle dimensionne automatiquement la SGA et la PGA en fonction de  leurs  besoins  respectifs  et  de  la  charge  du  système  (cf.  section  L’instance  du  chapitre  Les  bases  de  l’architecture  Oracle).  Exemple  MEMORY_TARGET = 2G SGA_MAX_SIZE Taille maximale de la SGA. Peut être spécifiée en octets, en Ko (symbole K), en Mo (symbole M) ou en Go (symbole G).  Si  ce  paramètre  n’est  pas  spécifié,  Oracle  lui  donne  la  valeur  du  paramètre MEMORY_MAX_TARGET  s’il  est  défini  ou  la  taille de la SGA au démarrage de l’instance.  N’oubliez  pas  que  les  modifications  dynamiques  de  la  SGA  s’effectuent  dans  la  limite  de  la  valeur  du  paramètre  SGA_MAX_SIZE, qui lui n’est pas dynamique (cf. section L’instance du chapitre Les bases de l’architecture Oracle).  Exemple : 

openmirrors.com

© ENI Editions - All rights reserved - Algeria Educ

- 3-

SGA_MAX_SIZE = 1G SGA_TARGET Taille souhaitée pour la SGA. Peut être spécifié en octets, en Ko (symbole K), en Mo (symbole M) ou en Go (symbole  G). Valeur par défaut : 0. Valeur minimale : 64 Mo, annoncée dans la documentation mais plutôt 80 Mo sur une plate­ forme 32 bits et 88 Mo sur une plate­forme 64 bits. La valeur peut être arrondie par Oracle au granule supérieur. Ce  paramètre est apparu en version 10.  Si  la  gestion  automatique  de  la  mémoire  est  activée  (MEMORY_TARGET  est  différent  de  zéro),  ce  paramètre  fixe  une  taille minimale pour la SGA ; s’il  n’est pas spécifié, la valeur 0 lui est attribuée et la taille de la SGA est ajustée en  interne.  Si la gestion automatique de la mémoire est désactivée (MEMORY_TARGET est égal à zéro), et si ce paramètre a une  valeur différente de zéro, le réglage automatique de la mémoire partagée est activé. Dans ce cas, les composantes  suivantes  de  la  SGA  sont  automatiquement  dimensionnées  (cf.  section  L’instance  du  chapitre  Les  bases  de  l’architecture  Oracle) :  Database  Buffer  Cache  (DB_CACHE_SIZE),  Shared  Pool  (SHARED_POOL_SIZE),  Large  Pool  (LARGE_POOL_SIZE), Java Pool (JAVA_POOL_SIZE) et Streams Pool (STREAMS_ POOL_SIZE).  Exemple :  SGA_TARGET = 1G SHARED_POOL_SIZE Taille  en  octets  de  la  Shared  Pool.  Peut  être  spécifiée  en  octets,  en  Ko  (symbole  K),  en  Mo  (symbole  M)  ou  en  Go  (symbole G). La valeur peut être arrondie par Oracle au granule supérieur.  Si le réglage automatique de la mémoire partagée est activé (SGA_TARGET ou  MEMORY_ TARGET différent de zéro), ce  paramètre fixe une taille minimale pour la Shared Pool. S’il n’est pas spécifié, la valeur 0 lui est attribuée et la taille de  la Shared Pool est ajustée en interne par Oracle.  Si  le  réglage  automatique  de  la  mémoire  partagée  est  désactivé  (SGA_TARGET  ou  MEMORY_TARGET  égal  à  zéro),  ce  paramètre fixe la taille de la Shared Pool. S’il n’est pas spécifié, sa valeur par défaut est de 64 Mo sur une plate­forme  32 bits et 128 Mo sur une plate­forme 64 bits.  Il n’y a pas de règle simple ni de formule de calcul pour déterminer la taille de la Shared Pool. Les besoins dépendent  énormément  de  l’application.  Par  contre,  il  peut  être  facilement  audité  ultérieurement  et  modifié  en  cas  de  besoin  (sans arrêter la base car le paramètre est dynamique).  Si  le  partage  des  requêtes  est  bon,  la  taille  de  la Shared  Pool est peu liée au nombre d’utilisateurs.  La  taille  de  la  Shared Pool est plutôt liée au nombre total de requêtes différentes, exécutées par l’application et à leur complexité. Il  est  par  ailleurs  important  de  tenir  compte  des  programmes  PL/SQL  utilisés  par  l’application  (triggers,  procédures/fonctions stockées, packages).  Pour une application moyenne, ayant un bon partage des requêtes (utilisation de variables bind) et n’utilisant pas de  programmes  PL/SQL,  une  valeur  de  l’ordre  de  150  Mo  peut  être  suffisante.  Si  l’application  utilise  des  programmes  PL/SQL, ou si l’application utilise beaucoup de requêtes, il ne faut pas hésiter à augmenter la taille de la Shared Pool  à 300 Mo ou plus.  Si le partage des requêtes est mauvais, avoir une Shared Pool trop importante n’apportera rien, voire dégradera les  performances (l’instance passant beaucoup de temps, en vain, à chercher une requête identique en mémoire).    Si vous utilisez le Database Control, il faut augmenter la taille de la Shared Pool (au moins 80 Mo). Exemple :  SHARED_POOL_SIZE = 128M JAVA_POOL_SIZE Taille  en  octets  de  la  Java  Pool.  Peut  être  spécifiée  en  octets,  en  Ko  (symbole  K),  en  Mo  (symbole  M)  ou  en  Go  (symbole G). La valeur peut être arrondie par Oracle au granule supérieur.  Si  le  réglage  automatique  de  la  mémoire  partagée  est  activé  (SGA_TARGET  ou  MEMORY_TARGET  différent  de  zéro),  ce  paramètre fixe une taille minimale pour la Java Pool. S’il n’est pas spécifié, la valeur 0 lui est attribuée et la taille de la  Java Pool est ajustée en interne par Oracle.  Si  le  réglage  automatique  de  la  mémoire  partagée  est  désactivé  (SGA_TARGET  ou  MEMORY_TARGET  égal  à  zéro),  ce  paramètre fixe la taille de la Java Pool. S’il n’est pas spécifié, sa valeur par défaut est de 24 Mo.  Si vous n’utilisez pas la machine virtuelle Java intégrée au serveur Oracle (pour développer des procédures stockées 

- 4-

© ENI Editions - All rights reserved - Algeria Educ

en Java par exemple), vous pouvez mettre ce paramètre à zéro.  Exemple :  JAVA_POOL_SIZE = 0 LARGE_POOL_SIZE Taille  en  octets  de  la  Large  Pool.  Peut  être  spécifiée  en  octets,  en  Ko  (symbole  K),  en  Mo  (symbole  M)  ou  en  Go  (symbole G). La valeur peut être arrondie par Oracle au granule supérieur.  Si  le  réglage  automatique  de  la  mémoire  partagée  est  activé  (SGA_TARGET ou  MEMORY_TARGET  différent  de  zéro),  ce  paramètre fixe une taille minimale pour la Large Pool. S’il n’est pas spécifié, la valeur 0 lui est attribuée et la taille de  la Large Pool est ajustée en interne par Oracle.  Si  le  réglage  automatique  de  la  mémoire  partagée  est  désactivé  (SGA_TARGET  ou  MEMORY_TARGET  égal  à  zéro),  ce  paramètre fixe la taille de la Large Pool. S’il n’est pas spécifié, sa valeur par défaut est dérivée de la valeur d’autres  paramètres.  Les besoins en Large Pool dépendent énormément de l’application et des fonctionnalités utilisées (exécution parallèle  des  requêtes,  serveurs  partagés,  etc).  Il  peut  être  facilement  audité  ultérieurement  et  modifié  en  cas  de  besoin  (sans arrêter la base car le paramètre est dynamique).  Exemple :  LARGE_POOL_SIZE = 64M DB_CACHE_SIZE Taille du  Database Buffer Cache  pour  la  taille  de  bloc  standard  (pool standard). Peut être spécifiée en octets, en Ko  (symbole K), en Mo (symbole M) ou en Go (symbole G). La valeur peut être arrondie par Oracle au granule supérieur.  Si  le  réglage  automatique  de  la  mémoire  partagée  est  activé  (SGA_TARGET  ou  MEMORY_TARGET  différent  de  zéro),  ce  paramètre fixe une taille minimale pour le Database Buffer Cache. S’il n’est pas spécifié, la valeur 0 lui est attribuée et  la taille du DatabaseBuffer Cache est ajustée en interne par Oracle.  Si  le  réglage  automatique  de  la  mémoire  partagée  est  désactivé  (SGA_TARGET  ou  MEMORY_TARGET  égal  à  zéro),  ce  paramètre fixe la taille du Database Buffer Cache. S’il n’est pas spécifié, sa valeur par défaut est de 48 Mo (ou 4 Mo  multiplié par le nombre de CPU, si cette valeur est plus grande).  Il n’y  a  pas  de  règle  simple  ni  de  formule  de  calcul  pour  déterminer  la  taille  du Database  Buffer  Cache.  Les  besoins  dépendent énormément de l’application. Par contre, il peut être facilement audité ultérieurement et modifié en cas de  besoin (sans arrêter la base car le paramètre est dynamique).  Le Database Buffer Cache est souvent la composante la plus importante de la SGA (les deux tiers ou plus).  Pour une petite base avec peu d’utilisateurs, une taille de 128 à 256 Mo peut être suffisante. Pour les bases plus  volumineuses avec un nombre d’utilisateurs élevé, la taille peut monter à 1 Go ou plus.  Exemple :  DB_CACHE_SIZE = 640M DB_nK_CACHE_SIZE Taille en octets du Database Buffer Cache pour les blocs de n Ko (n valant 2, 4, 8, 16 ou 32, mais pas pour la taille de  bloc standard). Peut être spécifiée en octets, en Ko (symbole K), en Mo (symbole M) ou en Go (symbole G). La valeur  peut être arrondie par Oracle au granule supérieur.  Si  la  base  de  données  utilise  d’autres  tailles  de  bloc  que  la  taille  standard,  il  faut  utiliser  ces  paramètres  pour  dimensionner des pools adaptés dans le Database Buffer Cache.  LOG_BUFFER Taille en octets du Redo  Log  Buffer. Valeur par défaut : 512 Ko (ou 128 Ko multiplié par le nombre de CPU, si cette  valeur est plus grande). La valeur par défaut est généralement suffisante, d’autant plus que cette valeur est dans la  pratique supérieure à ce qui est annoncé dans la documentation.  Exemple :  LOG_BUFFER = 524288 # 512 Ko

openmirrors.com

© ENI Editions - All rights reserved - Algeria Educ

- 5-

PGA_AGGREGATE_TARGET Quantité de mémoire totale allouée à la PGA agrégée de tous les processus serveurs. Peut être spécifiée en octets,  en Ko (symbole K), en Mo (symbole M) ou en Go (symbole G). Valeur par défaut : 10 Mo, ou 20% de la taille de la SGA  si cette valeur est plus grande.  Si  la  gestion  automatique  de  la  mémoire  est  activée  (MEMORY_TARGET  est  différent  de  zéro),  ce  paramètre  fixe  une  taille  minimale  pour  la  PGA  cumulée ; s’il  n’est  pas  spécifié,  la  valeur  0  lui  est  attribuée  et  la  taille  de  la  PGA  est  ajustée en interne.  Si la gestion automatique de la mémoire est désactivée (MEMORY_TARGET est égal à zéro), ce paramètre fixe la taille de  la PGA cumulée.  Oracle alloue la mémoire aux différents processus serveurs en fonction de leur besoins, en essayant de maintenir la  taille totale cumulée de toutes les PGA en dessous de la limite définie par ce paramètre.  Plus ce paramètre est élevé, plus Oracle est capable d’allouer beaucoup de mémoire aux processus serveurs et plus  les processus serveurs sont capables de faire des opérations mémoire volumineuses (tri ou jointure par hachage par  exemple), sans faire de stockage temporaire sur disque (ce qui améliore évidemment les performances).  Il n’y a pas de règle simple ni de formule de calcul pour déterminer la valeur de ce paramètre. En général, dans un  système transactionnel les besoins en mémoire des processus serveurs sont faibles ; une valeur de l’ordre de 512  Ko  à  1  Mo  par  session  peut  être  suffisante.  Par  contre,  dans  un  système  décisionnel,  les  utilisateurs  exécutent  souvent des requêtes qui effectuent des tris sur un gros volume de données ; dans ce cas, il faut compter au moins  10 Mo par session.  Exemple :  PGA_AGGREGATE_TARGET = 200M STATISTICS_LEVEL Niveau de collecte des statistiques sur la base de données et le système d’exploitation, utilisées notamment pour les  fonctionnalités de gestion automatique d’Oracle. Valeurs possibles : ALL, TYPICAL (valeur par défaut) et BASIC.  La  valeur  par  défaut  (TYPICAL)  est  adaptée  pour  la  plupart  des  bases  de  données ; elle  permet  de  bénéficier  des  fonctionnalités de gestion automatique d’Oracle, avec un impact minimum sur le système. La valeur BASIC désactive  les fonctionnalités de gestion automatique d’Oracle. La valeur ALL permet de collecter plus de statistiques mais a un  impact important sur le système ; cette valeur peut être utilisée ponctuellement dans une session particulière, à des  fins d’optimisation.    Laissez la valeur par défaut ! Exemple :  STATISTICS_LEVEL = typical OPEN_CURSORS Détermine  le  nombre  maximum  de  curseurs  qui  peuvent  être  ouverts  simultanément  par  une  session.  Valeur  par  défaut : 50.  Les besoins varient énormément d’une application à l’autre. Mettre une valeur trop élevée par rapport aux besoins  n’a pas d’incidence. Une valeur de 500 doit être suffisante pour un grand nombre d’applications.  Si  une  session  atteint  la  limite,  l’erreur  ORA-01000: nombre maximum de curseurs ouverts dépassé  est  retournée.  Dans ce cas, sauf dysfonctionnement de l’application, augmentez la valeur du paramètre.  Exemple :  OPEN_CURSORS = 500 PROCESSES Nombre  maximum  de  processus  qui  peuvent  se  connecter  simultanément  à  l’instance.  Valeur  par  défaut :  100.  Comptez un pour chaque session utilisateur simultanée, plus un pour chaque processus d’arrière­plan (15 à 20 en  général), plus un certain nombre pour les sessions SYSMAN et DBSNMP utilisées par le Database Control (une dizaine  en général).  Pour  connaître  le  nombre  de  processus  d’arrière­plan  lancés  par  l’instance,  vous  pouvez  interroger  la  vueV$BGPROCESS (filtrez sur paddr <> ’00’). Vous pouvez aussi interroger la vue<V$PROCESS pour connaître le nombre  total de processus démarrés par l’instance. 

- 6-

© ENI Editions - All rights reserved - Algeria Educ

Si  le  nombre  maximum  de  processus  est  atteint  et  qu’un  utilisateur  cherche  à  se  connecter,  il  recevra  le  message  d’erreurORA-00020: nombre maximum de processus (NN) atteint, NN étant la valeur du paramètre.  Exemple :  PROCESSES = 200 SESSIONS Détermine  le  nombre  maximum  de  sessions  qui  peuvent  être  ouvertes  dans  l’instance.  La  valeur  par  défaut  de  ce  paramètre est dérivée de la valeur du paramètrePROCESSES par la formule (1.1 * PROCESSES) + 5. Cette valeur par  défaut est aussi la valeur minimale du paramètre.Ce paramètre doit être considéré dans une configuration serveurs  partagés  où  le  nombre  de  processus  peut  être  faible,  mais  le  nombre  de  sessions  élevé.  Dans  une  configuration  serveurs dédiés, ce paramètre peut être ignoré si le paramètre PROCESSES a été défini.  Exemple :  SESSIONS = 300 SHARED_SERVERS Spécifie le nombre de processus serveurs partagés qui sont créés lorsque l’instance démarre (0 par défaut). Indiquer  une valeur différente de zéro, active la fonctionnalité de serveurs partagés. Laissez cette valeur à zéro pour être en  configuration serveurs dédiés (configuration à utiliser a priori, sauf si le nombre d’utilisateurs simultanés est vraiment  très élevé).  Exemple :  SHARED_SERVERS = 20 JOB_QUEUE_PROCESSES Nombre  maximum  de  processus  qui  peuvent  être  lancés  pour  exécuter  des  tâches  automatiques  (calcul  de  statistiques, rafraîchissement d’une vue matérialisée, etc.). Valeurs possibles : entre 0 et 1000 (valeur par défaut).  La valeur de ce paramètre doit être supérieure au nombre de tâches susceptibles de s’exécuter en parallèle.    Laissez la valeur par défaut !

NLS_LANGUAGE Langage par défaut de l’instance, utilisé pour les messages, les noms de jour et de mois et le tri. Détermine aussi la  valeur  des  paramètres  NLS_DATE_LANGUAGE  et  NLS_SORT.  La  valeur  par  défaut  est  dérivée  de  la  variable  d’environnement NLS_LANG.  Exemple :  NLS_LANGUAGE = french NLS_TERRITORY Territoire par défaut de l’instance, utilisé pour la numérotation des jours et des semaines. Détermine aussi la valeur  par défaut des formats de date, des séparateurs numériques et des symboles monétaires.  Exemple :  NLS_TERRITORY = france UNDO_MANAGEMENT Mode  de  gestion  souhaité  pour  les  segments  d’annulation.  Les  valeurs  possibles  sont  MANUAL  pour  la  gestion  manuelle et  AUTO (par défaut) pour la gestion automatique.La gestion automatique des segments d’annulation est  présentée  en  détail  dans  le  chapitre Gestion  des  informations  d’annulation.  Ce  mode  de  gestion  est  vraiment  très  intéressant  et  doit  être  utilisé.  Il  peut  être  activé  dès  la  création  de  la  base  en  mettant  le  paramètre  UNDO_MANAGEMENT  à AUTO  et  en  créant  un  tablespace  d’annulation  dans  l’ordre  SQL CREATE DATABASE (voir la section  Création de la base de données dans ce chapitre).  Exemple : 

openmirrors.com

© ENI Editions - All rights reserved - Algeria Educ

- 7-

UNDO_MANAGEMENT = auto UNDO_TABLESPACE Nom  du  tablespace  d’annulation  à  utiliser  par  défaut  lors  du  démarrage  de  l’instance.  Si  ce  paramètre  n’est  pas  renseigné, l’instance utilise le premier tablespace d’annulation  qu’elle trouve (cf. Chapitre Gestion des informations  d’annulation).  DIAGNOSTIC_DEST Répertoire  de  base  du  Référentiel  de  Diagnostic  Automatique  (cf.  section  Diagnostiquer  les  problèmes  du  chapitre  Les  outils  d’administration).  Ce  paramètre  est  apparu  en  version  11.  Egal,  par  défaut,  à  la  valeur  de  la  variable  d’environnement  ORACLE_BASE ; si  cette  variable  n’est  pas  définie,  il  est  égal  par  défaut,  au  sous­répertoire  log  du  répertoire Oracle Home.  Arrangez­vous  pour  que  ce  paramètre  soit  égal  au  répertoire  de  base  d’Oracle,  soit  en  définissant  la  variable d’environnement ORACLE_BASE, soit en définissant le paramètre.  Exemple  DIAGNOSTIC_DEST = d:\app\oracle DB_RECOVERY_FILE_DEST Emplacement  de  la  zone  de  récupération  rapide  (flash  recovery  area).  Si  ce  paramètre  est  spécifié,  il  faut  aussi  spécifier  le  paramètre  DB_RECOVERY_FILE_DEST_SIZE.  Voir  le  chapitre  Sauvegarde  et  récupération  pour  plus  d’informations  sur  le  fonctionnement  et  le  rôle  de  la  zone  de  récupération  rapide.  Ce  paramètre  est  apparu  en  version 10.  Exemple :  DB_RECOVERY_FILE_DEST = h:\oracle\flash_recovery_area DB_RECOVERY_FILE_DEST_SIZE Taille  maximale  autorisée  pour  l’ensemble  des  fichiers  stockés  dans  la  zone  de  récupération  rapide.  Peut  être  spécifiée en octets, Ko (symbole K), en Mo (symbole M) ou en Go (symbole G). Ce paramètre est apparu en version  10.  Exemple :  DB_RECOVERY_FILE_DEST_SIZE = 20G LOG_ARCHIVE_DEST et LOG_ARCHIVE_DUPLEX_DEST Spécifient une ou deux destinations pour l’archivage des fichiers de journalisation (Standard Edition). Voir le chapitre  Sauvegarde et récupération pour plus d’informations sur l’archivage des fichiers de journalisation.  Exemple :  LOG_ARCHIVE_DEST = h:\oracle\arch\HERMES LOG_ARCHIVE_DEST_n Spécifie  une  ou  plusieurs  destinations  pour  l’archivage  des  fichiers  de  journalisation  (Enterprise  Edition).  n  est  compris  entre  1  et  10.  Voir  le  chapitre  Sauvegarde  et  récupération  pour  plus  d’informations  sur  l’archivage  des  fichiers de journalisation.  Exemple :  LOG_ARCHIVE_DEST_1 = "LOCATION=h:\oracle\arch\HERMES" LOG_ARCHIVE_FORMAT Définit  le  format  du  nom  des  archives  des  fichiers  de  journalisation.  Doit  inclure  les  variables  %T, %S  et  %R donnant  respectivement le numéro de l’instance (thread), le numéro de séquence du fichier de journalisation et un identifiant 

- 8-

© ENI Editions - All rights reserved - Algeria Educ

d’incarnation. Voir le chapitre Sauvegarde et récupération pour plus d’informations sur ces variables.  Exemple :  LOG_ARCHIVE_FORMAT = redo_%T_%S_%R.arc REMOTE_LOGIN_PASSWORDFILE À positionner selon la stratégie adoptée pour l’identificationSYSDBA (cf. section L’administrateur de base de données  du chapitre Les bases de l’architecture Oracle). Valeurs possibles : 
q

NONE : pas de fichier de mot de passe ; seule l’authentification par le système d’exploitation est active.  EXCLUSIVE : utilisation d’un fichier de mot de passe dédié à la base de données.  SHARED : utilisation d’un fichier de mot de passe partagé entre plusieurs bases de données. 

q

q

Avec un fichier de mot de passe, par défaut, seul le compte SYS a le droit de se connecter avec le privilège SYSDBA ou  SYSOPER. Si le paramètre REMOTE_LOGIN_PASSWORDFILE est égal à EXCLUSIVEde>, il est possible de donner le privilège  SYSDBA  ou  SYSOPER  à  d’autres  utilisateurs  (dans  la  limite  d’un  nombre  maximum  d’utilisateurs  indiqué  lors  de  la  création du fichier de mot de passe). Si le paramètre REMOTE_LOGIN_PASSWORDFILE est égal à SHARED, seul le compte  SYS peut utiliser les privilèges SYSDBA ou SYSOPER.  Exemple :  REMOTE_LOGIN_PASSWORDFILE = exclusive SEC_CASE_SENSITIVE_LOGON Indique si les mots de passe sont sensibles à la casse (true, valeur par défaut) ou non (false). Ce paramètre est  apparu en version 11.  Laissez la valeur par défaut, sauf si cela pose un problème de compatibilité avec votre application.  Exemple  SEC_CASE_SENSITIVE_LOGON = true

c. Un exemple simple 
Vous  pouvez  créer  une  base  de  données  de  démarrage,  utilisant  la  gestion  automatique  de  la  mémoire,  avec  un  fichier de paramètre contenant très peu de paramètres.  Exemple :  DB_NAME = HERMES COMPATIBLE = 11.1.0 CONTROL_FILES = ("d:\oracle\oradata\HERMES\control01.ctl", "d:\oracle\oradata\HERMES\control02.ctl") DB_BLOCK_SIZE = 8192 MEMORY_TARGET = 512M DB_RECOVERY_FILE_DEST = d:\oracle\flash_recovery_area DB_RECOVERY_FILE_DEST_SIZE = 20G Pour les autres paramètres, les valeurs par défaut sont satisfaisantes, au moins dans un premier temps. 

3. Créer le service associé à l’instance ou créer le fichier de mot de passe 
a. Créer le service associé à l’instance (plate­forme Windows) 
Sur plate­forme Windows, il faut créer le service associé à l’instance ; selon les options utilisées, cette étape permet  aussi de créer le fichier de mot de passe utilisé pour l’authentification SYSDBA.  Le service est créé à l’aide de l’utilitaire oradim. 

openmirrors.com

© ENI Editions - All rights reserved - Algeria Educ

- 9-

 lors d’un démarrage automatique.  -SHUTMODE normal | immediate |abort  Type  d’arrêt  effectué  sur  l’instance  lorsque  le  service  s’arrête  (voir  les  options  de  la  commande  STARTUP  dans  la  section  Démarrage  du  chapitre  Démarrage  et  arrêt ­ La  commande  STARTUP).  -TIMEOUT durée  Délai  (en  secondes)  accordé  à  l’instance  pour  s’arrêter  avant  l’arrêt  du  service  (qui  est  alors  équivalent  à  un  .  -MAXUSERS nombre  Indique le nombre d’utilisateurs qui pourront recevoir le privilège SYSDBA ou SYSOPER et qui seront enregistrés dans le  fichier de mot de passe.  Option  par  défaut  si  l’option ­PFILE n’est pas spécifiée.  Ne  pas  oublier  de  positionner  le  paramètre  REMOTE_LOGIN_PASSWORDFILEen conséquence (cf.  -PFILE fichier  Chemin d’accès complet au fichier de paramètres texte à utiliser explicitement pour le démarrage automatique (pas  de  séquence  de  recherche  de  fichier  de  paramètres).  Est  enregistré  dans  le  paramètre  ORA_<SID>_AUTOSTART = FALSE de la base de registre. section L’administrateur de base de données du chapitre Les bases  de l’architecture Oracle).  -STARTMODE auto | manual  Précise le mode de démarrage souhaité pour l’instance :  ­ auto :  l’instance est démarrée lorsque le service démarre (paramètre ORA_<SID>_ AUTOSTART = TRUE dans la base  de registre).  -SYSPWD mot_de_passe  Mot  de  passe  de SYS  pour  le  privilège SYSDBA.Algeria Educ . Nécessite l’utilisation d’un fichier de mot de passe (option précédente).  -SPFILE  Indique  que  l’instance  n’utilise  pas  explicitement  de  fichier  de  paramètres  texte  pour  le  démarrage  automatique.  -SRVCSTART system | demand  Précise le mode de démarrage souhaité pour le service :  ­ system : le service est en redémarrage automatique.  Ne  pas  mettre  cette  clause  si  vous  utilisez  un  fichier  de  paramètres serveur (recommandé).  ­ demand (par défaut) : le service est en redémarrage manuel.10 - © ENI Editions . la séquence de recherche d’un fichier paramètres s’effectue comme  indiquée  dans  la  section  Démarrage  du  chapitre  Démarrage  et  arrêt ­ La  commande  STARTUP.  ­ manual (par défaut) : l’instance n’est pas démarrée lorsque le service démarre (paramètre ORA_<SID>_AUTOSTART = FALSE dans la base de registre).  Dans ce cas.  ce  qui  permet d’avoir une authentification SYSDBA par fichier de mot de passe.Syntaxe simplifiée  ORADIM -NEW -SID sid [-SYSPWD mot_de_passe] [-MAXUSERS nombre] [-STARTMODE auto|manual] [-SRVCSTART system|demand] [-PFILE fichier] [-SPFILE] [-SHUTMODE normal|immediate|abort] [-TIMEOUT durée] Avec  -SID sid  SID de la nouvelle instance.  La  présence  de  cette  option  crée  le  fichier  de  mot  de  passe.All rights reserved . L’option peut être omise en cas d’utilisation  d’une  authentification  SYSDBA  par  le  système  d’exploitation.

C:\> Cet exemple crée un service avec toutes les options qui permettent d’avoir un redémarrage automatique. Un fichier  de paramètres serveur est utilisé et l’authentificationSYSDBA par un fichier de mot de passe est possible (en plus de  l’authentification par le système d’exploitation). Par contre.    © ENI Editions .All rights reserved .  Taper simplement ORADIM sur la ligne de commande permet d’obtenir l’aide de l’outil.  L’option -EDIT de ORADIM permet de modifier les caractéristiques du service et de l’instance.  -SHUTMODE  et  -SRVCSTART.com .11 - openmirrors.  Pour  les  options  -STARTMODE.  Syntaxe  ORAPWD FILE=fichier PASSWORD=mot_de_passe ENTRIES=nombre FORCE=y|n IGNORECASE=y|n Avec  FILE=fichier  Chemin complet vers le fichier de mot de passe à créer.  D’une  manière  plus  générale.  notamment  de  modifier certains paramètres ou de le supprimer (suite à la suppression d’une base par exemple). il n’y a pas de notion de service associé à l’instance.  par  exemple).  la  première  lettre  des  valeurs  suffit  (STARTMODE a. Créer le fichier de mot de passe (plate­forme Unix/Linux)  Sur plate­forme Unix ou Linux.  PASSWORD=mot_de_passe  Mot de passe de SYS pour le privilège SYSDBA. il peut être nécessaire  de créer le fichier de mot de passe utilisé pour l’authentification SYSDBA.  ce  service est désactivé.  ORADIM -NEW crée et démarre le serviceOracleService<SID>. Il crée aussi le service  OracleJobScheduler<SID> utilisé  par l’ordonnanceur  Oracle  (scheduler) pour lancer des travaux au niveau du système d’exploitation ; par  défaut.  ENTRIES=nombre  Indique le nombre d’utilisateurs qui pourront recevoir le privilège SYSDBA ou SYSOPER et qui seront enregistrés dans le  fichier de mot de passe.Algeria Educ .  Cet  utilitaire  existe  aussi  sur  plate­forme  Windows.  Exemple :  C:\>oradim -new -sid HERMES -syspwd wX#12 -startmode a -srvcstart s -spfile Instance créée.  b.  Le fichier de mot de passe est créé à l’aide de l’utilitaire orapwd.  Il  permet  de  créer  ou  de  recréer  le  fichier  de  mot  de  passe sans utiliser oradim.SHUTDOWN ABORT).  l’utilitaire  ORADIM  permet  de  gérer  le  service  associé  à  l’instance. 90 secondes  par défaut. notamment d’activer ou  de désactiver le démarrage automatique.  Syntaxe simplifiée  ORADIM -EDIT -SID sid [-SYSPWD mot_de_passe] [-MAXUSERS nombre] [-STARTMODE auto| manual ] [-SRVCSTART system| demand ] [-PFILE fichier] [-SPFILE] [-SHUTMODE normal| immediate |abort] [-TIMEOUT durée] Les clauses sont les mêmes que pour la création. Est enregistré dans le paramètre ORA_<SID>_SHUTDOWN_TIMEOUT de la base de registre.

12 - © ENI Editions .  Sur plate­forme Windows. vous obtiendrez une erreur ; pour recréer un fichier de mot de passe. Lancer SQL*Plus et se connecter AS SYSDBA  Maintenant  que  les  étapes  à  réaliser  au  niveau  du  système  d’exploitation  sont  terminées.  IGNORECASE=y|n  Mettre y  pour  avoir  un  mot  de  passe  non  sensible  à  la  casse  et n (valeur par défaut) pour avoir un mot de passe  sensible à la casse. il faut  supprimer manuellement le précédent ou utiliser l’option FORCE.Algeria Educ .All rights reserved .  nous  pouvons  lancer  SQL*Plus et nous connecter AS SYSDBA.FORCE=y|n  Mettre y pour forcer la suppression préalable du fichier s’il existe déjà (utile en cas de recréation du fichier de mot de  passe). Exemple :  ORACLE_SID=HERMES PWFILE=$ORACLE_HOME/dbs/orapw$ORACLE_SID orapwd file=$PWFILE password=wX#12 entries=4 Sur plate­forme Unix ou Linux. Avant la version 11.  N’oubliez  pas  de  positionner  le  paramètreREMOTE_LOGIN_PASSWORDFILE  en  conséquence  (section  L’administrateur de base de données du chapitre Les bases de l’architecture Oracle). le mot de passe n’était pas sensible à la casse. le fichier de mot de passe s’appelle généralement pwd<SID>.    Aucun espace ne doit être présent autour du signe =.  Si le fichier de mot de passe existe déjà. Apparu en version 11.  Pour cela :  q Positionner la variable d’environnement ORACLE_SID au niveau du système d’exploitation :  q Sur plate­forme Windows (possible aussi dans la base de registre) :  set ORACLE_SID=HERMES  q Sur plate­forme Unix ou Linux (à adapter en fonction du shell) :  export ORACLE_SID=HERMES  q Démarrer SQL*Plus sans se connecter :sqlplus /nolog  Se connecter AS SYSDBA :  q q Authentifié par le système d’exploitation :  CONNECT / AS SYSDBA  q Authentifié par un fichier de mot de passe :  CONNECT sys/wX#12 AS SYSDBA  .ora  (<SID> désignant le nom  de l’instance) et est situé dans le répertoire %ORACLE_HOME%\database. le fichier de mot de passe s’appelle généralement orapw<SID> (<SID> désignant le nom  de l’instance) et est situé dans le répertoire $ORACLE_HOME/dbs.  4.

  Syntaxe (parenthèse. parenthèse absente ou  surnuméraire. les valeurs des paramètres ne sont  pas  vérifiées ; elles  seront  vérifiées  au  démarrage  de  l’instance..  Le nom et l’emplacement par défaut du fichier de paramètres texte est le suivant :  q %ORACLE_HOME%\database\init<SID>.  il  faut  donc  spécifier  l’emplacement  du  fichier  de  paramètres  texte  utilisé comme source (c’est la seule fois !).. Cette  opération  nécessite  une  connexion  SYSDBA  ou  SYSOPER. Bien noter qu’à ce stade.. Personnellement. le fichier de paramètres serveurs est utilisé.  il  est  remplacé.  La  création  du  fichier  de  paramètres  serveur  peut  s’effectuer ultérieurement. etc. je préconise de le créer dès le début ; ainsi.13 - . un nom par  défaut et un emplacement par défaut sont utilisés (dépend de la plate­forme). notamment le démarrage (voir  le chapitre Démarrage et arrêt).ora’. Si non spécifié.  Syntaxe :  CREATE SPFILE [ = ’nom_spfile’ ] FROM PFILE [ = ’nom_pfile’ ] .  nom_pfile  Chemin d’accès complet (sur le serveur) et nom du fichier de paramètres texte d’origine. guillemet ou apostrophe absent ou surnuméraire.  Le nom et l’emplacement par défaut du fichier de paramètres serveur est le suivant :  q %ORACLE_HOME%\database\spfile<SID>.  En  conséquence.  nous  avons  préconisé  de  ne  pas  créer  de  fichier  de  paramètres  texte  à  l’emplacement  par  défaut.  openmirrors.  q Utiliser le nom et l’emplacement par défaut facilite l’administration ultérieure de la base. Si non spécifié. Avec :  nom_spfile  Chemin d’accès complet (sur le serveur) et nom du fichier de paramètres serveur à créer. un nom par  défaut et un emplacement par défaut sont utilisés (dépend de la plate­forme).ora (Unix/Linux). Chapitre Gestion de l’instance).5.. l’ordre CREATE SPFILE va échouer :  q Nom de paramètre erroné : LRM-00101: unknown parameter name . section Préparer un nouveau fichier de paramètres  texte.ora (Windows) ;  $ORACLE_HOME/dbs/spfile<SID>.  q Dans ce chapitre. Fichier créé.  Exemple :  SQL> CREATE SPFILE FROM 2 PFILE = ’d:\app\oracle\admin\HERMES\pfile\init.. titre Création de la base de données à la main. grâce à l’ordre SQL  CREATE SPFILE.  Chemin du fichier texte : LRM-00109: could not open parameter file . Créer le fichier de paramètres serveur  La création d’un fichier de paramètres serveur s’effectue à partir d’un fichier de paramètres texte.).All rights reserved .ora (Windows) ;  $ORACLE_HOME/dbs/init<SID>.) : LRM-00116: syntax error at .  q q Corrigez le fichier de paramètres texte et recommencez.  dans  l’ordre  SQL  CREATE SPFILE.com © ENI Editions .ora (Unix/Linux).  Si  le  fichier  de  paramètres  serveur  existe  déjà.Algeria Educ . guillemet.  Si le fichier de paramètres texte contient une erreur de syntaxe (nom de paramètre erroné. ce qui permet si besoin de faire des modifications dynamiques  de paramètres en les rendant persistantes dans le fichier de paramètres (cf. etc. dès le premier démarrage de  l’instance..

] ] [ clause_extent_management ] ] [ LOGFILE [GROUP numéro] spécification_fichier_redo [...] ] ] [[ BIGFILE | SMALLFILE ] DEFAULT TEMPORARY TABLESPACE nom [ TEMPFILE spécification_fichier [..  7..spécification_fichier ’nom_fichier’ [ SIZE valeur [K|M|G|T] ] [REUSE] [ clause_auto_extend ] .. la commande STARTUP NOMOUNT va échouer.hh:mi’ | ’region’ } ] [ MAXINSTANCES nombre ] [ MAXLOGFILES nombre ] [ MAXLOGMEMBERS nombre ] [ MAXDATAFILES nombre ] .6.). L’ordre SQL CREATE DATABASE  L’ordre SQL CREATE DATABASE permet de créer la base de données. ... Créer la base de données  a.] ] [ ARCHIVELOG | NOARCHIVELOG ] [ FORCE LOGGING ] [ CHARACTER SET jeu ] [ NATIONAL CHARACTER SET jeu ] [ SET TIME_ZONE = { ’+|.spécification_fichier_redo (’nom_fichier’ [. mauvais chemin. en NOMOUNT puisque la base de données n’existe pas encore :  SQL> STARTUP NOMOUNT Instance ORACLE lancée. Si  le  fichier  de  paramètres  texte  contient  une  erreur  de  valeur  sur  un  paramètre  (valeur  en  dehors  de  la  plage  autorisée.. Corrigez le fichier de paramètres texte. Démarrer l’instance  L’instance peut maintenant être démarrée.clause_auto_extend AUTOEXTEND OFF | AUTOEXTEND ON [ NEXT valeur [K|M|G|T] ] [ MAXSIZE UNLIMITED | valeur [K|M|G|T] ] .] ] [ EXTENT MANAGEMENT LOCAL ] [ UNIFORM [ SIZE valeur [K|M|G|T] ] ] ] [ DEFAULT TABLESPACE nom [ DATAFILE spécification_fichier [. Avec :  ..14 - © ENI Editions ..All rights reserved .] ] [ EXTENT MANAGEMENT LOCAL ] [ SYSAUX DATAFILE spécification_fichier [.clause_extent_management EXTENT MANAGEMENT DICTIONARY | EXTENT MANAGEMENT LOCAL { AUTOALLOCATE | UNIFORM [ SIZE valeur [K|M|G|T] ] } .... etc.  Syntaxe :  CREATE DATABASE [nom_base] [ USER SYS IDENTIFIED BY mot_de_passe ] [ USER SYSTEM IDENTIFIED BY mot_de_passe ] [ CONTROLFILE REUSE ] [ SET DEFAULT { BIGFILE | SMALLFILE } TABLESPACE ] [ DATAFILE spécification_fichier [.] ] [[ BIGFILE | SMALLFILE ] UNDO TABLESPACE nom [ DATAFILE spécification_fichier [....]) [ SIZE valeur [K|M|G] ] [REUSE] . Bien noter qu’à ce stade..Algeria Educ ...  recréez le fichier de paramètres serveur et recommencez. les valeurs de tous les paramètres  ne sont pas vérifiées ; certaines seront vérifiées ultérieurement (par exemple lors de l’exécution de l’ordre SQL CREATE DATABASE).....

  les  vues  et  synonymes  du  dictionnaire de données ne sont pas créés et le dictionnaire est donc peu exploitable.15 - . GROUP 3 (’&chemin\redo03a.Exemple :  CREATE DATABASE hermes USER SYS IDENTIFIED BY wX#12 USER SYSTEM IDENTIFIED BY az#78 SET DEFAULT SMALLFILE TABLESPACE DATAFILE ’&chemin\system01.dbf’ SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1024M DEFAULT TABLESPACE deftbs DATAFILE ’&chemin\deftbs01.All rights reserved .log’. ’&chemin\redo01b.  Par  contre.com © ENI Editions . GROUP 2 (’&chemin\redo02a. ’&chemin\redo02b.  q q q q q q q À  l’arrivée.log’) SIZE 50M.. La finalisation de la création  du dictionnaire est décrite dans le point Finaliser la création du dictionnaire ci­après.log’) SIZE 50M SMALLFILE UNDO TABLESPACE undotbs DATAFILE ’&chemin\undotbs01.log’. d’un tablespace temporaire par défaut et d’un tablespace  permanent par défaut.dbf’ SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 500M EXTENT MANAGEMENT LOCAL AUTOALLOCATE NOARCHIVELOG CHARACTER SET WE8ISO8859P15 NATIONAL CHARACTER SET AL16UTF16 SET TIME_ZONE = ’Europe/Paris’ MAXINSTANCES 1 MAXLOGFILES 16 MAXLOGMEMBERS 4 MAXDATAFILES 128 / Cet exemple utilise une variable de substitution &chemin pour le chemin des fichiers de la base de données ; cette  variable est définie au préalable dans SQL*Plus.dbf’ SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1024M SMALLFILE DEFAULT TEMPORARY TABLESPACE temp TEMPFILE ’&chemin\temp01. en l’occurrence :  q création des fichiers de contrôle ;  création des fichiers de journalisation ;  création du tablespace SYSTEM et de son fichier de données ;  création du tablespace SYSAUX et de son fichier de données ;  création du dictionnaire de données (dans le tablespace SYSTEM) ;  création d’un segment d’annulation (nommé SYSTEM stocké dans le tablespace SYSTEM) ;  création des comptes SYS et SYSTEM (entre autres) ;  création éventuelle d’un tablespace d’annulation.dbf’ SIZE 100M AUTOEXTEND ON NEXT 10M LOGFILE GROUP 1 (’&chemin\redo01a.Algeria Educ .  L’ordre SQL CREATE DATABASE crée la nouvelle base de données.log’.  openmirrors.  la  base  de  données  est  ouverte  et  parfaitement  opérationnelle.  L’ordre SQL CREATE DATABASE dure quelques minutes..log’) SIZE 50M.. ’&chemin\redo03b.dbf’ SIZE 200M AUTOEXTEND ON NEXT 10M EXTENT MANAGEMENT LOCAL SYSAUX DATAFILE ’&chemin\sysaux01. avec la syntaxe DEFINE chemin=.

 nn étant un numéro d’ordre (01.dbf.Toutes les structures stockées dans le tablespace SYSTEM sont créées grâce au script sql. Dans la pratique.  b. 02.  USER { SYS | SYSTEM } IDENTIFIED BY Exemple :  USER SYS IDENTIFIED BY wX#12 USER SYSTEM IDENTIFIED BY az#78 Ces deux clauses permettent de changer les mots de passe de SYS et SYSTEM dès la création de la base de données. l’autre doit l’être aussi. Dans ce cas. ils doivent déjà exister) ;  etc.  Par contre.  Si l’ordre SQL CREATE DATABASE échoue pour une raison ou pour une autre. etc. 02. etc.).  Fichiers de données  tablespacenn. 02. etc. les mots de passe par  défaut sont attribués à SYS (change_on_install) et SYSTEM (manager).  CONTROLFILE REUSE Si l’option est présente et qu’un des fichiers indiqués dans le paramètre CONTROL_FILES existe déjà.  il est préférable de les spécifier toutes (ou presque) afin de bien contrôler les caractéristiques de la nouvelle base.  En ce qui concerne les fichiers de la base de données.bsq qui se trouve dans le  répertoire %ORACLE_HOME%\rdbms\admin ou $ORACLE_HOME/rdbms/admin. nn étant le numéro du groupe (01. Déconnexion imposée).  Du point de vue de la sécurité.  Les causes d’un échec de la création d’une base de données peuvent être multiples :  q manque d’espace ;  chemin erroné pour un fichier (Oracle ne crée par les répertoires. nn. consultez le fichier d’alerte de l’instance qui vous donnera (normalement) des informations détaillées sur la  nature du problème. Par défaut égal au paramètre DB_NAME. les recommandations de nommage sont les suivantes :  Fichier de contrôle  controlnn. il est préférable de ne pas mettre cette option afin d’éviter d’écraser par mégarde un  fichier de contrôle utilisé par une autre base.All rights reserved .log. avant de relancer la création. si l’une est spécifiée.Algeria Educ . Options de l’ordre SQL CREATE DATABASE  Toutes les clauses de l’ordre SQL CREATE DATABASE sont optionnelles et ont des valeurs par défaut. dans la même situation. Provoque une erreur si le nom indiqué ici est  différent de la valeur du paramètre DB_NAME. Oracle le réutilise  et l’écrase.ctl. Si ces clauses ne sont pas spécifiées.  q q Si le message d’erreur affiché à l’écran est sibyllin (du genre ORA-01092: instance ORACLE interrompue.  Bien noter que ces deux clauses ne sont pas obligatoires (mais risquent de le devenir dans une version ultérieure).).  Fichier de journalisation  redonn. il faut supprimer les fichiers  déjà créés (sous peine que le CREATE DATABASE échoue de nouveau. mais cette fois parce que des fichiers existent  déjà). Si l’option est absente.16 - © ENI Editions .  . il est possible que plusieurs des fichiers  de la base de données aient déjà été créés.). tablespace étant le nom du tablespace et nn le numéro d’ordre du fichier au sein du tablespace  (01.  nom_base Nom de la base de données. un message d’erreur s’affiche et la création de la base  est stoppée.

 et ne peut pas être modifié  pour ces deux tablespaces.  NEXT  Espace minimum alloué au fichier lors de l’extension.  SIZE  Taille initiale du fichier. le nom et la taille d’un (ou éventuellement de plusieurs) fichiers de  données pour le tablespace SYSTEM..  Un  tablespace  SMALLFILE  est  le  tablespace  traditionnel  d’Oracle.. chaque fichier pouvant contenir jusqu’à 2^22 blocs Oracle (plus de 4 millions). Le type spécifié ici s’applique notamment aux tablespaces SYSTEM et SYSAUX.  MAXSIZE  Taille maximale du fichier.com © ENI Editions .  Oracle  le  réutilise  et  l’écrase.] Exemple :  DATAFILE ’&chemin\system01..  qui  peut  comporter jusqu’à 1022 fichiers.  La gestion des tablespaces et des fichiers de données sera présentée en détail dans le chapitre Gestion des  tablespaces et des fichiers de données.  Cette  notion  de  tablespace BIGFILE  est  présentée  plus  en  détail  dans  le  chapitre  Gestion  des  tablespaces  et  des  fichiers de données.  La syntaxe est la suivante pour la spécification d’un fichier de données :  .SET DEFAULT { BIGFILE | SMALLFILE } TABLESPACE Cette clause spécifie le type par défaut (BIGFILE ou SMALLFILE) des tablespaces créés lors de la création de la base  de données.  dans  la  même situation.dbf’ SIZE 200M AUTOEXTEND ON NEXT 10M Cette clause permet de préciser l’emplacement.  Si  l’option  est  absente.  openmirrors.clause_auto_extend AUTOEXTEND OFF | AUTOEXTEND ON [ NEXT valeur [K|M|G|T] ] [ MAXSIZE UNLIMITED | valeur [K|M|G|T] ] AUTOEXTEND  Indique  si  le  fichier  de  données  peut  (ON)  ou  non  (OFF)  grossir  une  fois  que  tout  l’espace  initialement  alloué  est  complètement utilisé. La taille peut être omise uniquement si l’option REUSE est utilisée et que le fichier existe déjà. Les  tablespaces BIGFILE sont apparus en version 10. éventuellement non limitée (UNLIMITED). Oracle crée des tablespaces SMALLFILE par défaut.  DATAFILE spécification_fichier [.  . il est préférable de ne pas mettre cette option afin d’éviter d’écraser par mégarde un fichier de données  utilisé par une autre base de données. Du point de vue de  la sécurité.17 - .spécification_fichier ’nom_fichier’ [ SIZE valeur [K|M|G|T] ] [REUSE] [ clause_auto_extend ] nom_fichier  Chemin  d’accès  complet  au  fichier  de  données. un message d’erreur s’affiche et la création de la base de données est stoppée.  normalement  dans  un  répertoire  de  données  (oradata)  pour  respecter le standard OFA.  REUSE  Si  l’option  est  présente  et  que  le  fichier  existe  déjà. Si cette clause est omise.Algeria Educ .  Un tablespace  BIGFILE  est  un  tablespace  qui  ne  comporte  qu’un  seul  fichier  de  données  qui  peut  contenir  jusqu’à  2^32  blocs  Oracle  (plus  de  4  milliards).All rights reserved .

.  La  syntaxe  pour  spécifier  les  caractéristiques  des  fichiers  de  données  de  ce  tablespace  est  la  même  que  pour  le  tablespace  SYSTEM..] Exemple :  SYSAUX DATAFILE ’&chemin\sysaux01.  [ BIGFILE | SMALLFILE ] UNDO TABLESPACE .dbf’ SIZE 100M AUTOEXTEND ON NEXT 10M Cette clause permet de préciser l’emplacement. TABLESPACE  présentée précédemment. Il est conseillé de permettre au fichier de  données du tablespace SYSAUX de s’étendre en fonction des besoins (clause AUTOEXTEND). Go (symbole G)  ou To (symbole T)..18 - © ENI Editions . Les tailles en To ne sont autorisées que pour les tablespaces BIGFILE.  Ce  mode  de  gestion  est  intéressant  et  doit  être  utilisé  dès  la  création  de  la  base..  Les  caractéristiques  du  tablespace SYSAUX seront présentées dans le chapitre Gestion des tablespaces et des fichiers de données.  Un tablespace temporaire par défaut doit être créé dès la création de la base (conseillé par Oracle).  La notion de tablespace géré localement sera présentée dans le chapitre Gestion des tablespaces et des fichiers de  données. La clause optionnelle  BIGFILE ou  SMALLFILE  permet  de  préciser  le  type  de  tablespace ; si  cette  clause est omise.. Exemple :  .. Oracle interMedia.  La  gestion  automatique  des  segments  d’annulation  sera  présentée  en  détail  dans  le  chapitre  Gestion  des  informations  d’annulation.  il  faut  compter  200  à  300  Mo  pour  le  référentiel  AWR  (base  comportant  en  moyenne  une  trentaine  de  sessions  actives)  et  environ  100  Mo  pour  le  référentiel  du  Database  Control  (mais  l’espace utilisé par ces deux composants dépend de nombreux facteurs).. TABLESPACE  présentée précédemment.  EXTENT MANAGEMENT LOCAL Cette clause indique que le tablespace SYSTEM doit être géré localement ; par défaut.  Le  type  (BIGFILE  ou  SMALLFILE)  du  tablespace  SYSAUX  est  déterminé  par  la  clause  SET DEFAULT .  q q Il n’y a pas d’inconvénient (au contraire) à utiliser un tablespace SYSTEM géré localement !  SYSAUX DATAFILE spécification_fichier [. Ko (symbole K).  Si  la  gestion  automatique  des  segments  d’annulation  est  activée  (par  défaut  et  conseillé  par  Oracle). Si aucune option particulière n’est utilisée..  un  tablespace d’annulation doit être créé dès la création de la base de données (conseillé par Oracle).Algeria Educ ..). Exemple :  SMALLFILE UNDO TABLESPACE undotbs DATAFILE ’&chemin\undotbs01. TABLESPACE présentée précédemment.  Oracle Text..Pour le< tablespace SYSTEM. Un seul fichier de données peut être spécifié si le tablespace est de type BIGFILE.  La  syntaxe  de  spécification  du  fichier  de  données  est  la  même  que  le  tablespace  SYSTEM. le nom et la taille d’un (ou éventuellement de plusieurs) fichiers de  données pour le tablespace SYSAUX (apparu en version 10). le type est déterminé par la clause SET DEFAULT .All rights reserved ..  Le  type  (BIGFILE  ou  SMALLFILE)  du  tablespace  SYSTEM  est  déterminé  par  la  clause  SET DEFAULT . il est géré par le dictionnaire. il faut prévoir un fichier de données d’au minimum 200 Mo (si aucune option particulière  n’est  installée)..dbf’ SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1024M Cette clause permet de créer un tablespace d’annulation qui est utilisé pour la gestion automatique des segments  d’annulation.  La taille du tablespace SYSAUX dépendra énormément des fonctionnalités utilisées dans la base de données (OLAP. etc.  En  rythme  de  croisière.. une taille de départ de 100 Mo est  suffisante.  Toutes les tailles peuvent être exprimées en octet (pas de symbole).  et  il  est  vivement  conseillé  de  permettre  à  ce  fichier  de  données  de  s’étendre  en  fonction  des  besoins (clause AUTOEXTEND). Bien noter les conséquences (positives !) de cette clause :  q Tous les tablespaces doivent être gérés localement (conseillé par Oracle).  [ BIGFILE | SMALLFILE ] DEFAULT TEMPORARY TABLESPACE . Mo (symbole M).

  le  type  est  déterminé  par  la  clause  SET DEFAULT . La clause optionnelle BIGFILE ou SMALLFILE  permet  de  préciser  le  type  de  tablespace ; si  cette  clause  est  omise... et ne peuvent pas y créer de segments (voir le chapitre Gestion des utilisateurs  et de leurs droits).log’) SIZE 50M.  LOGFILE Exemple :  LOGFILE GROUP 1 GROUP 2 GROUP 3 (’&chemin\redo01a.]) [ SIZE valeur [K|M|G] ] [REUSE] Avec :  numéro  Numéro du groupe. Ce tablespace sera affecté par défaut. Le tablespace temporaire sera présenté en détail dans le chapitre  Gestion des tablespaces et des fichiers de données. comme  tablespace par défaut des utilisateurs non "système" (autres que SYS. normalement dans un répertoire de données (oradata) pour  respecter le standard OFA. Exemple :  DEFAULT TABLESPACE deftbs DATAFILE ’&chemin\deftbs01.  La  syntaxe  pour  spécifier  les  caractéristiques  des  fichiers  de  données  de  ce  tablespace  est  la  même  que  pour  le  tablespace  SYSTEM.  DEFAULT TABLESPACE nom .)..    openmirrors.log’. ’&chemin\redo01b.  La syntaxe est la suivante :  LOGFILE [GROUP numéro] spécification_fichier_redo [. Le tablespace par défaut d’un  utilisateur  est  le  tablespace  dans  lequel  Oracle  stocke  les  segments  créés  par  l’utilisateur  si  celui­ci  n’a  pas  mentionné explicitement de tablespace. (ce qui est bien).  ayant  le  droit  de  créer  des  segments.  nom_fichier  Chemin d’accès complet à un fichier membre du groupe.dbf’ SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1024M Cette clause permet de créer un tablespace temporaire par défaut.  est  la  même  que  pour  le  tablespace SYSTEM. Elle n’est réellement intéressante que  dans  les  bases  de  données  où  beaucoup  d’utilisateurs.  La  syntaxe  pour  spécifier  les  caractéristiques  des  fichiers  de  données  de  ce  tablespace.log’.log’) SIZE 50M Cette clause permet de préciser l’emplacement.SMALLFILE DEFAULT TEMPORARY TABLESPACE temp TEMPFILE ’&chemin\temp01. composés de plusieurs membres).  La  clause  EXTENT MANAGEMENT  sera  présentée dans le chapitre Gestion des tablespaces et des fichiers de données.. car les utilisateurs non DBA n’ont pas (normalement ­ c’est le cas par défaut)  de quota sur le tablespace SYSTEM. Si l’option est absente.dbf’ SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 500M EXTENT MANAGEMENT LOCAL AUTOALLOCATE Cette clause permet de créer un tablespace permanent par défaut..com © ENI Editions .log’) SIZE 50M.  Le  tablespace  permanent  par  défaut  utilisé  par  défaut  par  Oracle  est  le  tablespace  SYSTEM ; cela  ne  présente  pas  de  risque vis­à­vis du tablespace SYSTEM. (’&chemin\redo03a.. Oracle numérote les groupes 1.  Le  tablespace  est  obligatoirement  de  type  SMALLFILE. etc..log’. Cette notion est intéressante et doit être mise  en œ uvre dès la création de la base de données.  devront  être  gérés ; définir un tablespace permanent par défaut permet de simplifier la création des utilisateurs (chapitre Gestion  des  utilisateurs  et  de  leurs  droits).. le nombre et la taille des fichiers de journalisation (voir le chapitre  Les bases de l’architecture Oracle pour les principes d’organisation en groupes.19 - . SYSTEM.. 2.Algeria Educ . . (’&chemin\redo02a. Cette notion n’est pas fondamentale. ’&chemin\redo03b. mais en remplaçant le mot clé DATAFILE par TEMPFILE..  Le  tablespace  permanent  par  défaut  peut  être  défini  ultérieurement. TABLESPACE présentée précédemment.] spécification_fichier_redo = (’nom_fichier’ [.. ’&chemin\redo02b.All rights reserved ..

CHARACTER SET & NATIONAL CHARACTER SET Exemple :  CHARACTER SET WE8ISO8859P15 La clause CHARACTER SET définit le jeu de caractères utilisé pour le stockage des données dans les colonnes de type  CHAR.  Compte tenu de la syntaxe.  si  possible  sur  des  disques  différents.  La  mise  en  œ uvre  de  l’archivage  après  création  de  la  base  de  données est présentée dans le chapitre Sauvegarde et récupération. Mo (symbole M) ou Go (symbole G).    La clause FORCE LOGGING peut être positionnée sur un tablespace ce qui permet d’avoir un contrôle plus fin.Cette  propriété  de  la  base  de  données  peut  être  modifiée  ultérieurement  par  l’ordre  SQL  ALTER DATABASE [NO] FORCE LOGGING.SIZE  Taille de chaque membre du groupe en octet (pas de symbole). il est relativement simple  d’apporter  des  corrections  en  ajoutant  un  nouveau  groupe  (c’est  simple)  ou  en  augmentant  la  taille  des  groupes  (c’est un peu plus compliqué). Généralement. car cela  peut  être  très  intéressant  du  point  de  vue  des  performances  (pour  la  création  des  index  par  exemple). la  base est toujours créée en mode NOARCHIVELOG puis éventuellement passée ensuite en mode  ARCHIVELOG.  .  Si  l’option  est  absente. ce qui  permet  de  garantir  que  toutes  les  modifications  seront  enregistrées  dans  les  fichiers  de  journalisation.  il  est  classique  d’utiliser  trois  ou  quatre  groupes  de  fichiers  de  journalisation  d’une  taille  comprise  entre 20 (petite activité transactionnelle) et 100 Mo (activité transactionnelle plus importante).  Il  est  préférable  de  ne  pas  mettre  la  base  de  données  dans  le  mode  FORCE LOGGING  et  de  bien  contrôler  les  opérations  réalisées  en  NOLOGGING. Ko (symbole K).  Oracle  le  réutilise  et  l’écrase.  même  si  l’opération concernée est effectuée dans le mode NOLOGGING.  Dans la pratique. il est préférable de ne pas mettre cette option afin d’éviter d’écraser par mégarde un fichier de données  utilisé par une autre base de données. composés chacun d’un membre.  il  est  aussi  conseillé  de  mettre  les  fichiers  de  journalisation  sur  des  disques  dédiés  (pour  éviter  les  contentions sur les entrées/sorties).  celles­ci  ne  peuvent  pas  être  facilement  refaites  en  cas  d’incident.  et  notamment  de  faire  des  sauvegardes  après  les  opérations  de  ce  genre  si. Par contre..Algeria Educ .  Cette  technique  est  intéressante  pour  les  performances  (l’opération  est  plus  rapide) mais peut poser des problèmes pour la récupération : les opérations effectuées en NOLOGGING qui n’ont pas  été sauvegardées ne sont pas récupérables ; il faut les refaire (si c’est possible. a posteriori.  FORCE LOGGING Certains ordres SQL peuvent être exécutés en mode NOLOGGING.20 - © ENI Editions .  il  est  plus  simple  de  recréer  la  base). d’auditer le fonctionnement des fichiers de journalisation afin de voir  si le nombre de groupes et la taille des groupes sont satisfaisants ; en cas de problème. Là encore. La  taille peut être omise uniquement si l’option REUSE est utilisée et que le fichier existe déjà. s’ôter la possibilité de réaliser certaines opérations dans le mode NOLOGGING est dommage. il est  conseillé  d’avoir  au  minimum  deux  membres  par  groupe. il est possible.All rights reserved .  sauf  temporairement.  dans  la  même situation.  Pour  les  performances. rien n’interdit  d’avoir  des  groupes  de  tailles  différentes :  cela  ne  présente  aucun  intérêt.  Pour  démarrer.  Vous devez spécifier au minimum deux groupes. tous les membres d’un groupe ont forcément la même taille. VARCHAR2.  Déterminer le nombre de groupes et la taille des groupes est un sujet complexe pour lequel il n’existe pas de formule  de calcul.  ARCHIVELOG | NOARCHIVELOG Cette clause indique si la base de données fonctionne dans le mode ARCHIVELOG ou NOARCHIVELOG.  durant  une  opération de redimensionnement de la taille des fichiers de journalisation (chapitre Gestion des fichiers de contrôle  et des fichiers de journalisation). Nous verrons tout cela dans le détail dans le chapitre Gestion des fichiers de contrôle  et des fichiers de journalisation. LONG et CLOB. c’est­à­dire sans générer d’activité (ou presque pas)  dans  les  fichiers  de  journalisation..  La clause FORCE LOGGING de l’ordre SQL CREATE DATABASE met la base de données dans le mode FORCELOGGING.).  REUSE  Si  l’option  est  présente  et  que  le  fichier  existe  déjà. Du point de vue de  la sécurité. un message d’erreur s’affiche et la création de la base de données est stoppée. Du point de vue de la sécurité.  Elle  est  enregistrée  dans  la  colonne  FORCE_LOGGING de la vue V$DATABASE. ; il n’est  en effet pas utile d’archiver les fichiers de journalisation remplis lors de la création de la base de données (en cas de  problème.

 sans trop augmenter la taille du fichier de contrôle :  MAXLOGFILES  En  général.  Pour l’Europe de l’ouest.  Le  plus  simple  est  soit  de  ne  rien  mettre  (et  la  valeur  par  défaut.  MAXLOGMEMBERS  Nombre maximum de membres dans un groupe de fichiers de journalisation.  Les  valeurs  minimales. Si cette option n’est pas spécifiée. lui aussi.  Il est.  "pour  être  tranquille".  Si  le  fuseau  horaire  du  système  d’exploitation  n’est  pas  valide.  peut  donc  conduire  à  un  fichier  de  contrôle  démesurément grand (plus de 10 Mo. ou par le nom d’une région (Europe/Paris par exemple). qui par défaut vaut 16 (soit un MAXLOGFILES minimum de  32  !).  et  maximales  dépendent  de  la  plate­forme. doit être indiqué avec soin. Ce fuseau horaire est utilisé par les types de données  TIMESTAMP WITH TIME ZONE et TIMESTAMP WITH LOCAL TIME ZONE. NVARCHAR2 et NCLOB.  MAXDATAFILES  Nombre maximum de fichier de données.  MAXINSTANCES ­ MAXLOGFILES ­ MAXLOGMEMBERS ­ MAXDATAFILES Exemple :  MAXINSTANCES 1 MAXLOGFILES 16 MAXLOGMEMBERS 4 MAXDATAFILES 128 Ces options permettent de limiter le nombre de fichiers de la base de données :  MAXLOGFILES  Nombre maximum de groupes de fichiers de journalisation.com © ENI Editions .  MAXINSTANCES (intéressante uniquement avec l’option RAC). les jeux de caractères WE8ISO8859P1 et WE8ISO8859P15 sont souvent utilisés car ils stockent  les caractères sur 8 bits et permettent donc de conserver les caractères accentués ; le deuxième jeu permet en plus  de stocker le symbole de l’euro.  Oracle  utilise le fuseau UTC. délicat à changer ultérieurement. car il n’est pas simple à changer ultérieurement ; la  valeur par défaut dépend de la plate­forme et de l’installation.  La  clause  NATIONAL CHARACTER SET  définit  le  jeu  de  caractères  utilisé  pour  le  stockage  des  données  dans  les  colonnes de type NCHAR.  SET TIME_ZONE Exemple :  SET TIME_ZONE = ’Europe/Paris’ Cette option permet de définir le fuseau horaire de la base.  Une  autre  approche  peut  consister  à  donner  une  valeur  à MAXINSTANCES  (1 par  exemple) et à mettre MAXLOGFILES à une valeur de l’ordre de 10.All rights reserved .21 - .  une  base  utilise  quatre  ou  cinq  groupes.  mettre  une  valeur  de  l’ordre  de  10  serait  largement  suffisant ; malheureusement.  MAXLOGFILES  a  une  valeur  minimum  égale  à  deux  fois  celle  d’une  autre  option. Le NATIONAL CHARACTER SET peut être omis si vous ne prévoyez pas  d’utiliser un deuxième jeu de caractères dans la base de données ; il est par défaut égal à AL16UTF16.hh:mi donnant le décalage  par rapport à l’heure universelle (+01:00 par exemple).  Les  techniques  de  changement  de  jeu  de  caractères  sont  décrites  dans  la  documentation  Oracle®  Database  Globalization Support Guide. Une autre valeur usuelle est US7ASCII ; ce jeu de caractère anglo­saxon ne permet  pas de stocker les accents. peut le moins et l’espace gaspillé dans le  fichier  de  contrôle  est  négligeable. contre moins de 10 Mo en temps normal). Vous  pouvez interroger la colonne TZNAME de la vue V$TIMEZONE_NAMES pour avoir la liste des noms de région.  par  défaut. bien qu’optionnel. Seuls les jeux  de caractères UTF8 et AL16UTF16 sont autorisés. Le fuseau horaire peut être défini par une chaîne de la forme +|. d’être tranquille. Mettre les valeurs suivantes permet.Ces  paramètrent  impactent  directement la taille des fichiers de contrôle car Oracle réserve le nombre d’entrées nécessaires dans les fichiers de  contrôle ; mettre  des  valeurs  très  grandes. Oracle utilise le  fuseau  horaire  du  système  d’exploitation.  en général. Le jeu Unicode AL32UTF8 est aussi supporté et recommandé par Oracle.  égale  à  la  valeur  minimum  est  largement  suffisante) soit de mettre 32 (ce qui revient au même) : qui peut le plus.    openmirrors.Algeria Educ .Le CHARACTER SET.  donc.

MAXLOGMEMBERS  3  ou  4  (utiliser  trois  membres  par  groupe  offre  normalement  un  niveau  de  sécurité  suffisant. consulter la  documentation SQL*Plus® User’s Guide and Reference.  8. 5 est souvent la valeur maximale autorisée pour cette option.ora) pour pouvoir se connecter à la base de données  sans devoir positionner la variable d’environnement ORACLE_SID. En cas de doute. pour bénéficier éventuellement du redémarrage automatique (voir la section  .sql : vues et synonymes de base ;  catproc.  MAXDATAFILES  De l’ordre de 50 à 100 (éventuellement plus pour les très grosses bases). Classiquement.  il  est  intéressant  d’enregistrer la nouvelle instance dans le fichier  /etc/oratab.sql appellent d’autres scripts.  q Ces différentes configurations ont été présentées dans la section Configuration côté serveur du chapitre Oracle Net et  Configuration côté client du chapitre Oracle Net.  Le passage de catalog et catproc dure environ 10 à 15 minutes. la base de données est parfaitement opérationnelle. ouvrez le script et regardez son en­tête ; la connexion à utiliser  est généralement indiquée. une base moyenne utilise  10 à 20 fichiers de données. Si la table n’existe pas et que  l’utilisateur n’est pas un DBA.  D’autres  fonctions  particulières  d’Oracle  peuvent  nécessiter  l’exécution  de  scripts  supplémentaires ; dans  ce  cas.  Pour  créer  ces  vues  et  ces  synonymes.sqlsitué dans %ORACLE_HOME%\sqlplus\admin ou  $ORACLE_HOME/sqlplus/admin.  9.  q Les scripts catalog.All rights reserved . Pour en savoir plus. interdire l’utilisation de l’ordre  UPDATE dans SQL*Plus). d’une  part. Enregistrer la nouvelle instance dans le fichier oratab  Sur plate­forme  Unix  ou  Linux. Finaliser la création du dictionnaire de données  Après l’exécution de l’ordre SQL CREATE DATABASE.  La table PRODUCT_USER_PROFILE peut être utilisée pour limiter la nature des ordres SQL qu’un utilisateur peut exécuter  avec les outils (par exemple. vous pouvez configurer Oracle Net pour la nouvelle base de données :  q Modification  de  la  configuration  du  processus  d’écoute  (fichier  listener.ora)  pour  avoir  un  enregistrement  statique de l’instance.  le  script à lancer est clairement indiqué dans la documentation.22 - © ENI Editions .Algeria Educ .sql permet d’éviter d’avoir ce message.  10. vous pouvez exécuter (sous SYSTEM) le script pupbld. pour pouvoir changer facilement d’environnement  avec  l’utilitaire oraenv (voir la section Installation du serveur  du chapitre Installation).  Exécuter le script pupbld.  En complément. Ce script est exécuté pour créer une table (PRODUCT_USER_PROFILE) dont la présence est  testée par les outils Oracle (SQL*Plus notamment) lors de la connexion d’un utilisateur. et d’autre part. mais les vues  et les synonymes qui rendent le dictionnaire de données exploitable ne sont pas créés. Configurer Oracle Net pour la nouvelle base de données  À ce stade.sql et catproc.sql  :  compléments  pour  les  options  procédurales  (création  d’un  grand  nombre  de  packages  fournis  par Oracle). un message d’alerte est affiché (mais la connexion est acceptée).  En règle générale.  si  ces  membres  sont  situés sur des disques différents). les scripts doivent être exécutés dans le schéma SYS (propriétaire du dictionnaire de données) et  donc avec une connexion AS SYSDBA.  vous  devez  exécuter  (sous  SYS)  des  scripts  fournis  par  Oracle  (dans  % ORACLE_HOME%\rdbms\admin ou $ORACLE_HOME/rdbms/admin) :  q catalog.  Création d’un nom de service réseau (fichier tnsnames.

 arborescence de fichiers dans le répertoire Oracle Home service sur  plate­forme  Windows)  peut  être  créé  grâce  à  l’utilitaire  ligne  de  commande  emca  (Enterprise  Manager  Configuration  Assistant)Appelé  sans  option. vous pouvez donc appeler successivement  emca -deconfig puis emca -config en omettant à chaque fois  l’option -repos.... 2005.. ce dernier vous pose une série de questions.. L’option -repos drop permet de supprimer le référentiel.... Entrez les informations suivantes : SID de base de données: HERMES Numéro de port du processus d’écoute: 1521 Mot de passe de l’utilisateur SYS: Mot de passe de l’utilisateur DBSNMP: Mot de passe de l’utilisateur SYSMAN: Adresse électronique pour les notifications (facultatif): contact@olivier-heurtel..1.orange..........fr Serveur de messagerie sortant (SMTP) pour les notifications (facultatif): smtp..... version 11.Algeria Educ .com © ENI Editions .  Cet  utilitaire  propose  un  grand  nombre  d’options  qui  permettent de configurer..orange...0 .....0/db_1:Y 11....  l’utilitaire  affiche  une  aide.. Configurer le Database Control  L’environnement du Database Control (référentiel.23 - ..0\db_1 Nom d’hôte local ...  Le deuxième appel permet de supprimer la configuration...1.EMDBPostConfig perform Configuration INFO: >>>>>>> URL de Database Control : https://srvwinora:5500/ em <<<<<<<10 juil......log.... 2008 07:50:38 oracle.sysman.... mettre à jour ou supprimer le Database Control... 2008 08:36:37 oracle.... HERMES Adresse électronique pour les notifications .......  le  référentiel  n’est  pas  supprimé.Automatisation et scripts du chapitre Démarrage et arrêt). Si cette option est absente.... Oracle.emcp... . reconfigurer.EMDBPostConfig invoke openmirrors.. srvwinora Numéro de port du processus d’écoute .Pour  reconfigurer  le  Database  Control  sans  supprimer  le  référentiel.. 10 juil..... le référentiel est supposé déjà exister.  Exemple :  C:\>emca -config dbcontrol db -repos create EMCA DEMARRE à 10 juil..sysman. contact@olivier-heurtel.emcp. Si  cette  option  est  absente.  Exemple :  HERMES:/u01/app/oracle/product/11.... D:\app\oracle\product\11..fr ----------------------------------------------------------------Vous avez indiqué les paramètres suivants Répertoire d’origine ORACLE_HOME de la base de données ..All rights reserved .0.. smtp...fr ----------------------------------------------------------------Voulez-vous continuer ? [oui(Y)/non(N)]: Y 10 juil..emcp. 2008 08:36:34 oracle.EMConfig perform INFO: Cette opération est en cours de journalisation dans D:\app\oracle\cfgtoollogs\emca\HERMES\emca_2008_07_10_07_49_35...Production Copyright (c) 2003. 2008 07:49:35 Assistant Configuration d’EM. Tous droits réservés.... 1521 SID de base de données .1..sysman.  Lorsque vous lancez l’utilitaire pour créer l’environnement.5.  Syntaxe simplifiée :  emca -config dbcontrol db [-repos {create | recreate}] emca -deconfig dbcontrol db [-repos drop] Le  premier  appel  permet  de  configurer  l’environnement  complet...fr Serveur de messagerie sortant (SMTP) pour les notifications ..  L’option  -repos  permet  de  créer  ou  recréer  le  référentiel...

ora.ATTENTION: ************************ WARNING ************************ Le référentiel de gestion a été mis en mode sécurisé : les données Enterprise Manager seront cryptées. Les questions posées sont les  suivantes :  SID de base de données  Identifiant de l’instance. vous pouvez consulter la documentation "Oracle® Database Utilities".  Numéro de port du processus d’écoute  Numéro du port sur lequel le processus d’écoute communique (généralement 1521).  .  12.  Peut  être  laissé  vide  et  configuré  ultérieurement dans le Database Control. vous pouvez utiliser l’appel emca -reconfig ports pour modifier les ports utilisés par le Database Control.1.  Serveur de messagerie sortant (SMTP) pour les notifications (facultatif)  Passerelle  SMTP  utilisée  pour  l’envoi  des  notifications  par  courrier  électronique.  Adresse électronique pour les notifications (facultatif)  Adresse électronique à laquelle les notifications seront envoyées (associé au compte administrateur SYSMAN). La clé de cryptage a été stockée dans le fichier D:\app\oracle\product\11. Peut être  laissé vide et configuré ultérieurement dans le Database Control. Pour plus d’informations sur ces différentes  possibilités. les questions posées sont en gras et les réponses en italique. *********************************************************** Enterprise Manager a été configuré EMCA ARRETE à 10 juil. 2008 08:36:38 Sur l’exemple ci­dessus. La saisie est  masquée.All rights reserved .  Si besoin.  soit  en  spécifiant  les  valeurs  dans  la  ligne  de  commande.  Un message invitant à sauvegarder un fichier contenant une clé de chiffrage.Algeria Educ . Vérifiez que ce fichier est bien sauvegardé.  À la fin de l’installation.  il  est  facile  d’écrire  des  scripts  plus  ou  moins  paramétrés permettant d’automatiser la création d’une nouvelle base de données.  L’utilitaire  emca  peut  aussi  être  utilisé  dans  un  mode  non  interactif. soit en utilisant un fichier de réponse avec l’option -respFile.  q Vous pouvez ensuite vous connecter au Database Control en utilisant l’URL indiquée par l’utilitaire. Résumé : écrire un script de création d’une base de données  En  utilisant  les  caractéristiques  de  chaque  système  d’exploitation.  Mot de passe de l’utilisateur SYSMAN  Mot de passe du compte SYSMAN (créé par l’utilitaire). La saisie est masquée.  Mot de passe de l’utilisateur SYS  Mot de passe du compte SYS (indiquer le mot attribué à SYS lors de la création de la base de données).0\db_1\srvwinora_HERMES\ sysman\config\emkey. car les données cryptées deviendront inutilisables si vous perdez ce fichier.24 - © ENI Editions . emca affiche deux messages importants :  q Un message donnant l’URL à utiliser pour se connecter au Database Control.  Mot de passe de l’utilisateur DBSNMP  Mot de passe du compte DBSNMP (créé par l’utilitaire). La saisie est masquée.

  PROPERTY_VALUE  Valeur de la propriété.  openmirrors.Algeria Educ .  La vue DATABASE_PROPERTIES contient des informations sur les propriétés de la base. Les principales colonnes de cette  vue sont les suivantes :  PROPERTY_NAME  Nom de la propriété.  DB_UNIQUE_NAME  Nom unique de la base de données.  Les colonnes intéressantes de la vue V$DATABASE sont les suivantes :  NAME  Nom de la base de données. Retrouver des informations sur la base de données  Les vues V$DATABASE et DATABASE_PROPERTIES permettent de retrouver des informations sur une base de données.  CREATED  Date/heure de création de la base de données.Vous trouverez des exemples de scripts pour les plates­formes Windows et Unix/Linux sur les sites des Editions ENI.  FORCE_LOGGING  YES ou NO selon que le mode FORCE LOGGING est actif ou non.All rights reserved .  LOG_MODE  Mode de fonctionnement vis­à­vis de l’archivage (ARCHIVELOG ou NOARCHIVELOG).  13.25 - .com © ENI Editions .  PLATFORM_NAME  Nom de la plate­forme.

 à partir de modèles pouvant comporter des fichiers de données prêts à  l’emploi ;  modifier les options installées dans une base de données ;  supprimer une base de données ;  créer des modèles ;  configurer ASM.Algeria Educ . Vue d’ensemble  L’assistant Configuration de base de données permet de :  q créer une nouvelle base de données.  Un  écran  de  bienvenue  s’affiche ; cliquez  sur  le  bouton  Suivant  pour  afficher  l’écran  proposant  les  différentes  opérations :    Les options sont les suivantes :  Créer une base de données  Permet de créer une nouvelle base de données (voir ci­après).  q q q q L’assistant  crée  des  structures  de  stockage  complémentaires  (que  nous  verrons  dans  les  chapitres  Gestion  des  tablespaces et des fichiers de données et Gestion des informations d’annulation).  L’assistant peut être lancé à partir d’une  fenêtre  du  système  d’exploitation par la commande dbca.Création de la base de données à l’aide de l’assistant graphique  1.  Configurer les options de base de données  © ENI Editions .  l’assistant  peut  aussi  être  lancé  par  le  menu  Démarrer  ­ Programmes  ­  Oracle ­nom_oracle_home  ­  Outils de configuration et de migration ­ Assistant Configuration de base de données.All rights reserved .1- .  Sur  plate­forme  Windows.

  Le  modèle  Usage  général  ou  traitement  transactionnel  permet  de  créer  une  base  de  données  pour  une  activité  mixte  ou  orientée application  de  saisie; c’est  le  modèle  choisi  pour  la  suite.  avec  éventuellement  des  données  (données  dans  des  tables  de  nomenclature par exemple).  Pour  plus  d’informations.2- © ENI Editions .  Le  modèle  openmirrors.com .  Un modèle avec fichiers de données est en quelque sorte un clone de base de données (une "sauvegarde") qui peut  déjà  contenir  les  objets  d’une  application. etc. modifier et supprimer des modèles (voir ci­après).All rights reserved .  Supprimer une base de données  Permet de supprimer une base de données.  Sélectionnez l’option souhaitée et cliquez sur le bouton Suivant.  L’assistant  peut  être  utilisé  en  mode  non  interactif  en  utilisant  un  fichier  de  réponse. Création à partir d’un modèle avec fichiers de données  Les  modèles  avec  fichiers  de  données  permettent  de  créer  une  nouvelle  base  très  rapidement.  Configurer Automatic Storage Management  Permet de configurer une instance pour utiliser le système de stockage ASM. d’exécuter les scripts.  Par  contre.  consultez la documentation "Oracle® Database Installation Guide" de votre plate­forme. La base de données créée avec un modèle de ce genre est prête à l’emploi.  Gérer les modèles  Permet de créer.  2. dont deux incluent des fichiers de données prêts à l’emploi ; avec ce  genre de modèle.Algeria Educ .Permet de modifier le mode de connexion par défaut de la base de données (serveur dédié ou serveur partagé) et  d’installer ou de supprimer des options supplémentaires dans la base de données.  Choix du modèle   En standard.  cette  dernière inclut un grand nombre d’options pas forcément utiles pour toutes les applications. Le modèle Data Warehouse permet de créer une base de données plutôt orientée  application  décisionnelle. l’assistant propose trois modèles. l’opération de création d’une nouvelle base est très rapide car il n’est pas nécessaire de créer les  fichiers.

 permet d’afficher des informations sur les modèles.. puis cliquez sur le bouton Suivant.Base  de  données  personnalisée  ne  comporte  pas  de  fichiers  de  données ; ils  devront  donc  être  spécifiés  et  créés  (création  de  base  complète).  saisissez  le  Nom  global  de  la  base  de  données  (sous  la  forme  DB_NAME.  Options de gestion © ENI Editions .  Nous  verrons  l’utilisation d’un  tel  modèle  au  point  Création  à  partir  d’un  modèle  sans  fichier de données de cette section.All rights reserved ..  Le bouton Afficher les détails.  Identification de la nouvelle base   Sur  cet  écran.DB_DOMAIN)  et  le  SID  de  l’instance.3- .Algeria Educ .  Sélectionnez le modèle (Usage général ou traitement transactionnel pour la suite) et cliquez sur le bouton Suivant.

All rights reserved .  indiquez  si  vous  souhaitez  que  la  base  de  données  soit  gérée  ou  non  par  le  Database  Control. Utiliser le même  mot  de  passe  pour  les  différents  comptes  est  pratique  dans  un  environnement  de  test  mais.  saisissez éventuellement les informations demandées pour la notification et la sauvegarde (peut être fait plus tard  dans  le  Database  Control)  puis  cliquez  sur  le  bouton  Suivant.  l’assistant  effectuera  la  configuration  nécessaire  (référentiel.  Mots de passe   Sur cet écran.  répertoires.4© ENI Editions .  Sur  cet  écran. saisissez les mots de passe des différents comptes puis cliquez sur le bouton Suivant.com .  service  sur  plate­forme  Windows).Algeria Educ openmirrors.  déconseillé  en  .  Si  vous  choisissez  d’administrer  la  base  avec  le  Database  Control.

All rights reserved .Algeria Educ . seul le stockage dans un système de fichiers est étudié.5- . indiquez le système de stockage choisi pour la base de données puis cliquez sur le bouton Suivant.  Emplacement des fichiers de la base de données   © ENI Editions .production.  Options de stockage   Sur cet écran.  Dans cet ouvrage.

  vous  pourrez  définir  des  variables  contenant  des  chemins d’accès.All rights reserved . puis cliquez sur le bouton Suivant.  saisissez  l’emplacement  (paramètre  DB_RECOVERY_FILE_DEST)  et  la  taille  (paramètre  DB_RECOVERY_FILE_DEST_SIZE)  de  la  zone  de  récupération  rapide.  Configuration de la récupération   Sur  cet  écran. le format des noms d’archives.. qui pourront être utilisées dans la spécification de l’emplacement des fichiers. etc.Algeria Educ ..Sur  cet  écran.. Si vous activez l’archivage des fichiers de  journalisation. (tous les paramètres LOG_ ARCHIVE_*).  indiquez  l’emplacement  des  fichiers  de  la  base  de  données  puis  cliquez  sur  le  bouton  Suivant.  pour  définir  la  destination des archives.  Contenu de la base de données openmirrors.  vous  pouvez  cliquer  sur  le  bouton  Activer  les  paramètres  du  mode  d’archivage..  indiquez  si  vous  souhaitez  activer  dès  le  départ  l’archivage des fichiers de journalisation.  En  cliquant  sur  le  bouton  Variables  d’emplacement  de  fichier.6- © ENI Editions .com .

. Le bouton  Tous les paramètres d’initialisation.  Sur  cet  écran.  Paramètres d’initialisation   Les quatre onglets de cet écran permettent de spécifier les valeurs de plusieurs paramètres d’initialisation.  © ENI Editions .  Les  schémas  d’exemple  peuvent  être  installés  ultérieurement  (scripts  stockés  dans  le  répertoire  %ORACLE_HOME%\demo\schema ou $ORACLE_HOME/demo/ schema).  indiquez  si  vous  souhaitez  installer  les  schémas  d’exemple  fournis  par  Oracle  (premier  onglet)  et/ou  exécuter  des  scripts  personnels  (deuxième  onglet). permet de consulter tous les paramètres utilisés et si besoin de les modifier.Algeria Educ .  puis  cliquez  sur  le bouton  Suivant..All rights reserved .7- .

  il  est  recommandé  d’utiliser  ces  nouveaux  mécanismes  de  sécurité  (voir  le  chapitre  Gestion  des  utilisateurs  et  de  leurs  droits).  Paramètres de sécurité   Sur  cet  écran..com .  L’onglet Mémoire permet de régler les paramètres relatifs à la mémoire.  Après avoir sélectionné une des deux options.  à  lancer  au  démarrage de l’instance (paramètre SHARED_ SERVERS). l’assistant active la gestion automatique de la mémoire partagée et calcule une répartition  SGA/PGA en fonction du type de base de données du modèle (décisionnel ou usage général) : les valeurs calculées  peuvent  être  visualisées  grâce  au  bouton  Afficher  la  répartition  de  la  mémoire.All rights reserved .  l’assistant  active  la  gestion  automatique  de  la  mémoire  (paramètre  MEMORY_TARGET) ; sinon.Algeria Educ ..  L’onglet Dimensionnement  permet  de  définir  le  nombre  maximum  de  processus  (paramètre PROCESSES).  L’onglet Jeux  de  caractères permet de choisir les jeux de caractères (clause CHARACTER SET  et NATIONAL CHARACTER SET  de  l’ordre  SQL  CREATE DATABASE).8- © ENI Editions . vous pourrez dimensionner individuellement les  différentes structures de la mémoire. vous pouvez cliquer sur le bouton Suivant.  Après avoir saisi les informations requises sur les différents onglets.  Si  l’option  Personnalisé  est  choisie. Si l’option Standard est sélectionnée.. vous  pouvez modifier la quantité de mémoire allouée à l’instance (SGA et PGA). vous pouvez activer ou non la gestion automatique de la mémoire partagée (menu déroulant Gestion de la  mémoire).  vous  pouvez  choisir  d’utiliser  ou  pas  les  nouveaux  paramètres  de  sécurité  apparus  en  version  11  (notamment  les  mots  de  passe  sensibles  à  la  casse  ­  paramètre  SEC_CASE_SENSITIVE_LOGON). l’assistant vous demandera juste de saisir  la taille de la SGA (paramètre <$I[]SGA_TARGET>SGA_TARGET) <et la taille de la PGA (paramètre PGA_AGGREGATE_TARGET).  Tâches de maintenance automatique openmirrors.  L’onglet  Mode  de  connexion  permet  de  choisir  le  mode  de  connexion  par  défaut  de  la  base  de  données  (serveur  dédié  ou  serveur  partagé)  et  éventuellement  d’indiquer  le  nombre  de  processus  serveurs  partagés.  le  langage  par  défaut  (paramètreNLS_LANGUAGE)  et  le  territoire  par  défaut  (paramètre NLS_ TERRITORY).Notez que l’assistant utilise systématiquement un fichier de paramètres serveur. La taille de  bloc  (paramètre  DB_BLOCK_SIZE)  ne  peut  pas  être  modifiée  car  le  modèle  inclut  les  fichiers  de  données  et  ceux­ci  utilisent déjà une certaine taille de bloc.  Si la gestion automatique de la mémoire partagée n’est pas activée. vous pouvez cliquer sur le bouton Suivant. Si l’option Utiliser la gestion automatique  de  la  mémoire  est  cochée. Si la gestion automatique de la mémoire partagée est activée.  A  priori.

  © ENI Editions . conseil sur l’optimisation des requêtes SQL).Algeria Educ . avec un faible impact  sur les performances du serveur. Les paramètres de ces tâches de maintenance. A priori. sont réalisées la nuit et le week­end.  Stockage de la base de données L’écran suivant permet de spécifier les fichiers de la base de données : fichier de contrôle. notamment la planification. peuvent  être modifiés dans le Database Control (cf. fichiers de journalisation et  fichiers de données.  Sur  cet  écran.  il est recommandé d’activer ces tâches automatiques qui.  Après avoir effectué votre choix. conseil sur le stockage des segments. vous pouvez cliquer sur le bouton Suivant. section La documentation Oracle du chapitre Les outils d’administration).All rights reserved .9- .  vous  pouvez  choisir  d’activer  ou  pas  les  tâches  de  maintenance  automatiques  prévues  en  standard  (collecte des statistiques.

10 - © ENI Editions .  Le  dossier  Fichier  de  contrôle  permet  de  configurer  les  fichiers  de  contrôle  (paramètre  CONTROL_FILES).  openmirrors. etc. Par contre.  il  n’est  pas  possible  (à  ce  stade)  d’ajouter  d’autres tablespaces et fichiers de données.  L’onglet  Options permet de définir la valeur des options MAX* (MAXDATAFILES.) de l’ordre SQL CREATE DATABASE. dans  le  cas  de  l’utilisation d’un  modèle  avec  fichiers  de  données  (comme  ici).    Le dossier Fichiers de donnéespermet de modifier l’emplacement et le nom des fichiers de données. ou de modifier la taille des fichiers de données existants ; ces opérations  pourront être faites ultérieurement dans le Database Control.All rights reserved .Algeria Educ .com .

  Options de création   Sur  cette  page.All rights reserved . modifier la taille des groupes.  indiquez  si  vous  souhaitez  créer  la  base  immédiatement  et/ou  enregistrer  les  options  dans  un  nouveau modèle et/ou générer les scripts de création de la base de données.11 - .Algeria Educ .  © ENI Editions .  Le  dossier  Groupes  de  fichiers  de  journalisation  permet  de  configurer  les  fichiers  de  journalisation :  ajouter/supprimer des groupes.  Après avoir saisi les informations requises. ajouter des membres dans les groupes. vous pouvez cliquer sur le bouton Suivant. puis cliquez sur le bouton Terminer.

Algeria Educ . paramétrer et réutiliser.La  troisième  option  est  un  moyen  pratique  pour  générer  des  scripts  de  création  de  base  de  données  que  vous  pourrez ensuite modifier.  Par  contre.com .  L’assistant  crée  automatiquement  un  nom  de  service  réseau  pour  la  nouvelle  instance  dans  le  fichier  tnsnames.).  Lorsque la création de la base de données est terminée.  Dans  cette  section. Création à partir d’un modèle sans fichier de données  Si  vous  utilisez  un  modèle  sans  fichier  de  données.All rights reserved .  l’assistant  ajoute  automatiquement  une  entrée  pour  la  nouvelle  instance  dans  le  fichier /etc/oratab ; par contre.  nous  ne  présentons  que  les  écrans  supplémentaires  ou  différents  de  ceux  présentés  précédemment.  3.  Durant la création de la base de données. une fenêtre donnant quelques informations s’affiche :    Cette fenêtre donne notamment l’URL à utiliser pour se connecter au Database Control.  etc. une fenêtre affiche un état d’avancement. l’instance n’est pas positionnée en redémarrage automatique.  la  configuration  du  processus  d’écoute  n’est  pas  modifiée ; l’instance  n’est  pas  enregistrée de manière statique auprès du processus d’écoute.  Confirmation Un récapitulatif est affiché lorsque vous cliquez sur le bouton Terminer.  La  création  de  la  base  de  données est donc plus longue que lors de l’utilisation d’un modèle avec fichiers de données.  Nouvelle étape : contenu de la base de données openmirrors.12 - © ENI Editions .  vous  pourrez  contrôler  plus  finement  les  options  installées  et  l’assistant  effectue  une  création  complète  (CREATE DATABASE.  Cliquez sur le bouton OK pour lancer l’opération.ora.  catproc.  Sur  plate­forme  Unix/Linux.  catalog.

  Paramètres d’initialisation   Sur le deuxième onglet.All rights reserved . Oracle conseille de laisser ces quatre options.  Stockage de la base de données © ENI Editions .  l’option  Multimedia  (anciennement  interMedia).Algeria Educ . notamment via l’option Configurer les options de base de données proposée  sur le premier écran de l’assistant.  Ces  options  peuvent être installées ultérieurement.  L’onglet Scripts personnalisés permet de désigner des scripts complémentaires à exécuter lors de la création.  Cet  écran  permet  de  sélectionner  les  fonctionnalités  à  installer  dans  la  base  de  données ; chaque  option  se  matérialise  par  l’exécution  d’un  script  supplémentaire  qui  rallonge  la  durée  de  création  de  la  base.13 - .  affiche  un  écran  qui  permet  de  désactiver  quatre  options  installées  par  défaut  par  Oracle :  la  machine  virtuelle  Java.  la  fonctionnalité  Oracle  XML  DB  et  Application  Express  (un  environnement  de  développement  rapide  Web  intégré  à  la  base de données). la taille de bloc peut être spécifiée (paramètre DB_BLOCK_SIZE)..  Le  bouton Composants  de  base  de  données  standard..

  Le premier écran de la gestion des modèles permet de choisir l’opération à réaliser.  Des tablespaces et des fichiers de données peuvent être ajoutés. création ou suppression.  4. Gérer les modèles  L’assistant  permet  de  définir  des  modèles  de  base  de  données  personnalisés.All rights reserved .Algeria Educ .com . supprimés et modifiés (taille notamment).  pouvant  éventuellement  inclure  des  fichiers de données prêts à l’emploi.  openmirrors.14 - © ENI Editions .

All rights reserved . etc. puis de lancer l’assistant.ctl qui est une copie du fichier de contrôle de la base de données et un fichier .  Notez  que  les  fichiers  Seed_Database.  L’option  A  partir  d’un  modèle  existant  permet  de  choisir  un  modèle  puis  de  dérouler  les  différentes  étapes  de  la  création pour modifier les options souhaitées (comme pour une création de base de données).dfb qui contient  les  fichiers  de  données.dbc qui contient la définition du  modèle.  Il  n’en  est  pas  de  même  pour  les  modèles  sans  fichiers  de  données.  taille de la SGA. un fichier .dfb sont  communs  aux  deux  modèles avec fichiers de données fournis par Oracle.  Un modèle avec fichiers de données créé sur une plate­forme (Windows par exemple) ne peut pas être utilisé  sur  une  autre  plate­forme  (Unix  par  exemple). mais sans inclure les fichiers de la base de données.).15 - .  L’option A  partir  d’une  base  de  données  existante  (structure  seulement) permet de reprendre la structure d’une  base de données existante.  © ENI Editions .  Plusieurs options sont proposées pour la création.  Un  modèle  sans  fichiers  de  données  comporte  un  seul  fichier  XML  .  L’option A partir d’une base de données existante (structure et données) permet de reprendre la structure d’une  base de données existante avec les fichiers de données (et donc les données qui sont stockées dedans) : c’est en  quelque  sorte  un  clone  de  la  base  de  données  d’origine  qui  pourra  être  utilisé  pour  créer  une  nouvelle  base  de  données identique (sauf modifications de configuration effectuées lors de la création de la base de données : nom.Algeria Educ .ctl  et  Seed_Database.dbt  qui  contient  la  définition  du  modèle.  Les  modèles  sont  stockés  par  défaut  dans  le  répertoire  %ORACLE_HOME%\assistants\ dbca\templates  (plate­forme  Windows) ou $ORACLE_HOME/assistants/dbca/ templates (plate­forme Unix/Linux).  Un  modèle  avec  fichiers  de  données  est  composé  de  trois  fichiers :  un  fichier  XML  .  Pour  créer  une  base  de  données  à  partir  du  modèle  sur  un  autre  serveur.  il  suffit  de  copier  les  fichiers  du  modèle  dans le répertoire templates du serveur.

  les  fonctionnalités  présentées  dans  cet  ouvrage  sont  communes  aux  trois  éditions  ;  toute  fonctionnalité  nécessitant  © ENI Editions .1- openmirrors. À titre d’exemple :  q Oracle  Real  Application  Clusters  (RAC)  :  permet  d’utiliser  Oracle  sur  des  serveurs  en  cluster  (haute  disponibilité.  Total  Recall  (nouveau  en  version  11g)  :  solution  permettant  le  stockage  sur  le  long  terme  de  données  historiques.  fonctionnellement  identique  à  l’édition  Standard.  Cette  édition  ne  permet pas de faire fonctionner les options avancées d’Oracle11g (voir ci­dessous) et est limitée à des serveurs ou  des clusters de serveurs avec une capacité maximale de 4 processeurs.com . en standard ou en option. avec quelques petites  contraintes. répartition de charge). Oracle commercialise  aussi  une  édition  Standard  One.Algeria Educ . Depuis quelques temps. particulièrement destinée au développeur ; elle offre le  même niveau de fonctionnalité que l’édition Entreprise. Introduction  Cet  ouvrage  présente  l’administration  d’Oracle  Database  11g. permettant d’améliorer la disponibilité et les capacités de  montée en charge des grosses bases de données.).  mais  limitée  à  des  serveurs  bi­ processeurs.  Advanced  Security  Option  :  offre  des  fonctionnalités  avancées  sur  la  gestion  de  la  sécurité  (cryptage.  q q L’édition  Standard  comporte  toutes  les  fonctionnalités  de  base  permettant  de  mettre  en  œ uvre  des  applications  client­serveur  ou  Internet/Intranet.  qui  sera  le  plus  souvent  désignée  par  le  terme  "Oracle11g". sur plate­forme Windows uniquement. etc.All rights reserved .  Les  bases  de  l’architecture  et  de  l’administration  sont  les  mêmes  pour  les  trois  éditions.  pour  un  groupe  de  travail  ou  un  département  d’entreprise. Windows).  Oracle OLAP et Oracle Data Mining : fonctionnalités destinées à la mise en place de systèmes décisionnels.  q q q q q q q Oracle Real Application Clusters est une option de l’édition Entreprise mais est incluse. et d’en faciliter l’administration et l’optimisation.  Real  Application  Testing  (nouveau  en  version  11g)  :  permet  de  capturer  l’activité  réelle  d’une  base  de  données et de rejouer cette activité sur un autre système. Linux.  Oracle  Tuning  Pack  :  module  d’administration  permettant  de  faciliter  l’optimisation  des  performances  de  la  base de données.Présentation d’Oracle11g  1.  Sauf  exception.  Advanced  Compression  (nouveau  en  version  11g)  :  permet  la  compression  de  tout  type  de  données  (structurées et non structurées).  L’édition  Entreprise  est  plus  particulièrement  destinée  aux  applications  critiques  de  l’entreprise  et  propose  des  fonctionnalités supplémentaires. dans l’édition Standard (pas Standard One) !  L’édition Personnelle est une version monolicence du produit.  Oracle11g est commercialisé selon trois gammes :  q Edition Entreprise (Enterprise Edition) ;  Edition Standard (Standard Edition) et Edition Standard One (Standard Edition One) ;  Edition Personnelle (Personal Edition).  Oracle Partitioning : permet de subdiviser le stockage des gros objets (tables et index) en plusieurs éléments  appelés partitions. Du point de vue de l’administration.  authentification. les différences entre les  plates­formes sont minimes.  Oracle  Database  11g  est  un  Système  de  Gestion  de  Bases  de  Données  Relationnelles  (SGBDR)  disponible  sur  un  grand nombre de plates­formes (Unix.

  Amélioration de la création et de la récupération d’une sauvegarde de long terme.  Chiffrage du fichier d’export généré par Data Pump.  Nouveau référentiel pour faciliter le diagnostic des incidents (Automatic Diagnostic Repository).2- . par défaut.  © ENI Editions .  Configuration de la base de données.  Extension des techniques de flashback à l’annulation d’une transaction validée (Flashback Transaction).  Index invisibles.  Amélioration de la gestion des fichiers de journalisation archivés dans RMAN (Recovery Manager).  Tables en lecture seule.com/technology/index. même dans un environnement transactionnel.  Colonnes virtuelles.  Assistant pour la récupération des données (Data Recovery Advisor).  Nouveau cache pour stocker le résultat des requêtes.  Opérateurs PIVOT et UNPIVOT.  Compression de la totalité du fichier d’export généré par Data Pump.oracle.l’édition Entreprise sera clairement signalée.  Les  différents  produits  Oracle  peuvent  être  téléchargés  sur  le  site  Oracle  Technology  Network  (http://www.  Base de données transportable entre Linux et Windows.  Gestion complètement automatique de la mémoire totale utilisée par l’instance.  Gestion automatique de l’annulation activée par défaut.  Amélioration de la détection des blocs corrompus.  2. Principales nouveautés de la version 11  La version 11 apporte un grand nombre de nouveautés et d’améliorations dans de nombreux domaines.  Sauvegarde et restauration parallélisée des très gros fichiers de données.Algeria Educ q q q q q q q q q q q q q q q q q q q q q q . plus sécurisée.All rights reserved .  Amélioration des performances des sauvegardes compressées dans RMAN. Pour n’en  citer que quelques­unes :  q Installation et mise à niveau simplifiées.  Gestion simplifiée de l’espace temporaire.html) ;  ils  peuvent  être  utilisés  gratuitement  pour  le  développement  ou  le  prototypage d’une application (mais pas pour l’utilisation d’une application).  Compression des tables.  Gestion simplifiée des paramètres d’initialisation (SPFILE).

  Utilisation du LogMiner à travers l’interface graphique d’Oracle Enterprise Manager Database Control.  openmirrors.  q q q Bien évidemment.  Chiffrage d’un tablespace.3- .q Nouvel assistant pour résoudre un problème relatif à un ordre SQL (SQL Repair Advisor).  Amélioration de l’interface utilisateur d’Oracle Enterprise Manager Database Control. cette liste n’est pas exhaustive.Algeria Educ .com © ENI Editions .All rights reserved .

Options :  paramètre  Nom du paramètre. Les ordres SQL ALTER SYSTEM et ALTER SESSION  Les  ordres  SQL  ALTER SESSION  et ALTER SYSTEM  permettent  de  modifier  dynamiquement  la  valeur  des  paramètres  d’initialisation. Peut être obligatoire pour certains  paramètres (ceux dont la colonne ISSYS_MODIFIABLE vaut DEFERRED dans la vue $PARAMETER). Les types de paramètres  Les paramètres peuvent être classés en deux catégories :  q les paramètres dynamiques ;  les paramètres statiques. le paramètre est modifiable au niveau de la session et/ou du système (pour toutes  les sessions).All rights reserved . Modifier les paramètres d’initialisation  a. pas celles actuellement connectées.  N’a de sens que si la mémoire est la cible de la modification (voir la clause SCOPE). Inséré dans le fichier de paramètres serveur si ce dernier est  la cible de la modification (voir la clause SCOPE) ; visible dans la colonne UPDATE_ COMMENT de la vue V$PARAMETER si la  mémoire est la cible de la modification (voir la clause SCOPE). la modification peut être immédiate (s’applique aux sessions actuelles) ou différée  (s’applique aux sessions futures uniquement). respectivement au niveau de la session et du système.  COMMENT = ’texte’  Commentaire associé à la modification du paramètre.. Au niveau système. b.] . et DEFERRED ou IMMEDIATE selon qu’il est modifiable en différé ou immédiatement.  q Les  paramètres  dynamiques  peuvent  être  modifiés  par  un  ordre  SQL  alors  que  l’instance  est  en  cours  de  fonctionnement.  La  colonne  ISSES_MODIFIABLE  vaut  TRUE  ou  FALSE  selon  que  le  paramètre  est  modifiable  ou  non  au  niveau  de  la  session.    © ENI Editions .1- .  valeur  Valeur attribuée au paramètre.  Les  paramètres  statiques  ne  peuvent  pas  être  modifiés  dynamiquement  alors  que  l’instance  est  en  cours  de  fonctionnement ; il faut modifier la valeur du paramètre dans le fichier de paramètres et redémarrer l’instance..  Les colonnes ISSES_MODIFIABLE et ISSYS_MODIFIABLE de la vue V$PARAMETER donnent des informations sur le type de  paramètre. ALTER SYSTEM SET paramètre = valeur [.  DEFERRED  Si présente.    Les différents paramètres sont décrits dans la documentation Oracle® Database Reference.  Syntaxe simplifiée :  ALTER SESSION SET paramètre = valeur [.Gestion des paramètres d’initialisation  1. Selon les cas.] [ COMMENT = ’texte’ ] [ DEFERRED ] [ SCOPE = MEMORY | SPFILE | BOTH ] . indique que la modification ne concerne que les futures sessions.  La  colonne  ISSYS_MODIFIABLE  vaut FALSE  si  le  paramètre  n’est  pas  modifiable  au  niveau  du  système..Algeria Educ ..

  La  clause  SCOPE = MEMORY  s’applique  uniquement  à  la  mémoire  (instance  en  cours)  et  est  prise  en  compte  immédiatement. Cette option n’est  pas autorisée pour les paramètres statiques (aspect MEMORY). OH du 10/07/2008’ 3 SCOPE = SPFILE.  Exemple :  Modification d’un paramètre uniquement dans le fichier de paramètres serveur :  SQL> ALTER SYSTEM SET PROCESSES = 200 2 COMMENT = ’Modif.  vous  devez d’abord faire un STARTUP (NOMOUNT suffit).  Pour  supprimer  un  paramètre  du  fichier  de  paramètres  serveur. au prochain démarrage.  Les  ordres  SQL  ALTER SYSTEM  de  modification  de  paramètres  sont  enregistrés dans le fichier d’alerte de l’instance.  Cette  option  n’est  pas  autorisée  pour  les  paramètres  statiques (aspect MEMORY). Elle ne peut être spécifiée que si l’instance a démarré  avec  un  fichier  de  paramètres  serveur  (aspect  SPFILE).2- © ENI Editions . C’est la seule option possible pour  les paramètres statiques.  ­ SPFILE : le fichier de paramètres serveur seulement.Algeria Educ .  Cette  option  n’est  pas  autorisée  pour  les  paramètres  statiques.  procédez de la manière suivante :  q Modifiez le paramètre avec l’ordre SQL ALTER SYSTEM et la clause SCOPE=SPFILE.  Syntaxe simplifiée :  ALTER SYSTEM RESET paramètre [ SCOPE = SPFILE ] . Après la suppression. avant de modifier le paramètre par l’ordre SQL ALTER SYSTEM et de  redémarrer.SCOPE  Définit la cible de la modification :  ­ MEMORY : la mémoire seulement (instance en cours).  ­ BOTH : les deux.  C’est  la  seule  option  possible  si  l’instance  a  démarré  avec  un  fichier  de  paramètres  texte ; c’est la valeur par défaut dans ce cas.  vous  pouvez  utiliser  une  variante  de  l’ordre  SQL  ALTER SYSTEM. Système modifié.  q Si  l’instance  est  arrêtée  et  que  vous  souhaitez  modifier  un  paramètre  statique  pour  le  prochain  démarrage. Si vous utilisez un fichier de paramètres serveur (conseillé) et que vous souhaitez modifier un paramètre statique. la  valeur  par  défaut  du  paramètre  sera  utilisée. OH du 10/07/2008’ 3 SCOPE = BOTH.com . L’ordre SQL ALTER SYSTEM nécessite que l’instance soit démarrée.  La  modification  ne  survit  pas  à  l’arrêt  de  la  base.All rights reserved .  La clause SCOPE = SPFILE ne peut être spécifiée que si l’instance a démarré avec un fichier de paramètres serveur.  La  modification  s’applique  uniquement  au  fichier  de  paramètres  serveur  et  n’est  pas  prise  en  compte  immédiatement ; elle sera prise en compte uniquement au prochain démarrage.  La  modification  est  persistante  dans  le  fichier  de  paramètres  serveur  (aspect  SPFILE).  La clause SCOPE = BOTH s’applique à la mémoire (instance en cours) et est prise en compte immédiatement (aspect  MEMORY).  Redémarrez l’instance (SHUTDOWN IMMEDIATE puis STARTUP).  openmirrors. Options :  paramètre  Nom du paramètre  La clause SCOPE = SPFILE est optionnelle ; c’est la seule autorisée. Modification d’un paramètre en mémoire et dans le fichier de paramètres serveur :  SQL> ALTER SYSTEM SET MEMORY_TARGET = 500M 2 COMMENT = ’Modif. Système modifié.

 FALSE si non modifié.All rights reserved .  DISPLAY_VALUE  Valeur du paramètre dans un format d’affichage plus convivial (par exemple 252M au lieu de 264241152). Les paramètres dans le dictionnaire de données  Plusieurs vues du dictionnaire permettent de visualiser les paramètres :  q V$SYSTEM_PARAMETER : valeur actuelle des paramètres dans l’instance.  VALUE  Valeur du paramètre.  V$PARAMETER  et  V$PARAMETER2  :  même  contenu  que  les  vues  V$SYSTEM_ PARAMETER  et  V$SYSTEM_PARAMETER2  mais avec les valeurs actuelles des paramètres dans la session courante ; ces vues donnent donc la valeur  des paramètres qui ont été éventuellement modifiés dans la session (par un ALTER SESSION). FALSE sinon.3- . FALSE sinon.  ISMODIFIED  Indique si le paramètre a été modifié depuis le démarrage de l’instance. FALSE sinon. MODIFIED si modifié au niveau de la session  courante.  ISSES_MODIFIABLE  TRUE si le paramètre est modifiable au niveau de la session.  q q q Principales colonnes des vuesV$SYSTEM_PARAMETER. V$SYSTEM_PARAMETER2. V$PARAMETER et V$PARAMETER2 :  NAME  Nom du paramètre (en minuscules).  ISDEPRECATED  TRUE si le paramètre est déprécié (risque de disparaître dans une prochaine version).  ISSYS_MODIFIABLE  FALSE si le paramètre n’est pas modifiable au niveau du système. et DEFERRED ou IMMEDIATE selon qu’il est modifiable  en différé ou immédiatement.  UPDATE_COMMENT  Commentaire associé à la modification la plus récente (option COMMENT de l’ordre SQL ALTER SYSTEM).  ISDEFAULT  TRUE si le paramètre est égal à sa valeur par défaut.Algeria Educ .  Principales colonnes de la vue V$SPPARAMETER :  NAME  © ENI Editions .  V$SPPARAMETER : contenu  actuel  du  fichier  de  paramètres  serveur  actif ; le  contenu  de  la  vue  est  vide  si  l’instance n’utilise pas de fichier de paramètres serveur.2. SYSTEM_MOD si modifié au niveau du système.  V$SYSTEM_PARAMETER2 : même chose que V$SYSTEM_PARAMETER mais avec un affichage sur plusieurs lignes des  paramètres qui ont une liste de valeurs (comme le paramètre CONTROL_FILES par exemple).

  DISPLAY_VALUE  Valeur du paramètre dans un format d’affichage plus convivial (par exemple 252M au lieu de 264241152).) est le même que pour l’ordre SQL CREATE SPFILE  (voir  la  section  Création  d’une  base  de  données  à  la  main  du  chapitre  Création  d’une  nouvelle  base  de  données). etc.  Si  une  chaîne  est  spécifiée  lors  de  l’appel.Nom du paramètre (en minuscules).Algeria Educ . 4 sp.L’utilisation de cet ordre SQL nécessite notamment une connexion SYSDBA ou SYSOPER.  Syntaxe  CREATE PFILE [ = ’nom_pfile’ ] FROM SPFILE [ = ’nom_spfile’ ].name 10 AND p.  Par  défaut. Cet ordre SQL peut  être utilisé instance arrêtée !  openmirrors.name = ’processes’ 11 / NAME ACTUEL SPFILE -------------------.display_value spfile 5 FROM 6 v$parameter p.4- © ENI Editions .  Exemple  SQL> SHOW PARAMETERS memory NAME -------------------------------hi_shared_memory_address memory_max_target memory_target shared_memory_address TYPE ----------integer big integer big integer integer VALUE -----------0 500M 400M 0 3. FALSE sinon.display_value actuel.  les  commandes  SHOW PARAMETERS [chaîne]  et SHOW SPPARAMETERS [chaîne]  affichent  la  valeur  des  paramètres  respectivement  dans  la  session  courante  et  dans  le  fichier  de  paramètres  serveur.com .  Exemple : comparaison entre V$PARAMETER et V$SPPARAMETER  SQL> SELECT 2 p.  VALUE  Valeur du paramètre. Le fonctionnement (signification des paramètres.  UPDATE_COMMENT  Commentaire associé à la modification la plus récente (option COMMENT de l’ordre SQL ALTER SYSTEM).  ces  commandes  affichent  la  valeur  de  tous  les  paramètres. 7 v$spparameter sp 8 WHERE 9 p.name. valeurs par défaut.  ces  commandes  affichent la valeur de tous les paramètres dont le nom contient cette chaîne.  ISSPECIFIED  TRUE si le paramètre est spécifié dans le fichier de paramètres serveur.All rights reserved . Exporter un fichier de paramètres serveur  Un fichier de paramètres serveur peut être réexporté au format texte par l’ordre SQL CREATE PFILE.  Notez  que  la  vue  V$SPARAMETER  donne  la  valeur  du  paramètre  dans  le  fichier  de  paramètres  serveur ; la  valeur  actuelle peut être différente si le paramètre a été modifié pour l’instance courante uniquement (SCOPE=MEMORY). 3 p.--------------processes 100 200 Dans  SQL*Plus.name = sp.-------------------.

Fichier créé.Exemple :  SQL> CREATE PFILE = ’d:\app\oracle\admin\HERMES\pfile\init. celui­ci ne peut pas être remplacé alors qu’il est en cours d’utilisation ; vous devez donc arrêter  la base de données (SHUTDOWN IMMEDIATE) avant de recréer le fichier de paramètres serveur à l’aide  de  l’ordre SQL  CREATE SPFILE (qui lui aussi fonctionne instance arrêtée !).  avec  l’option  RAC ­ Real Application Clusters). il est possible de créer un fichier de  paramètres texte ou un fichier de paramètres serveur à partir des valeurs des paramètres actuellement en mémoire  (instance en cours). *. Contenu du fichier (extrait)  *.. pour recréer le fichier de  paramètres serveur à partir du fichier de paramètres texte modifié (à l’aide de l’ordre SQL  CREATE SPFILE .ora’ 2 FROM SPFILE. le symbole *  désignant  n’importe  quelle  instance  (*. *. Les principes de fonctionnement sont les mêmes que pour les autres variantes de syntaxe de ces deux ordres SQL.  Le fichier ainsi généré peut être utilisé à des fins de simple consultation ou de modification. Ces  lignes  en  gras  correspondent  à  des  paramètres  dont  la  valeur  avait  été  modifiée  précédemment  avec  l’option  COMMENT.. les paramètres peuvent être spécifiés sous la forme instance.  Dans  l’optique  de  l’utilisation d’un  fichier  de  paramètres  commun  à  plusieurs  instances  (par  exemple..Depuis la version 11. FROM PFILE)... Utiliser le Database Control  Dans le Database Control.All rights reserved .  Le  commentaire  est  présent  dans  le  fichier  de  paramètres  serveur  (voir  aussi  le  contenu  de  la  colonne  UPDATE_COMMENT dans la vue V$SPPARAMETER). cliquez sur le lien Serveur sur la page d’accueil puis sur le lien Paramètres d’initialisation  (cadre Configuration de base de données) pour accéder à la page de gestion des paramètres d’initialisation :  © ENI Editions .  4. *.__db_cache_size=152M . OH du 10/07/2008 ...Algeria Educ .  ou  pour  effectuer  des  démarrages  particuliers.__shared_pool_size=72M . OH du 10/07/2008 . CREATE SPFILE [ = ’nom_spfile’ ] FROM MEMORY..  Cette  syntaxe  est  utilisée  lors  de  l’export  d’un  fichier  de  paramètres serveur.  Syntaxe  CREATE PFILE [ = ’nom_pfile’ ] FROM MEMORY...memory_target).paramètre.processes=200#Modif.db_name=’HERMES’ .  Notez  que  si  l’instance  a  démarré  avec  un  fichier  de  paramètres serveur..memory_target=524288000#Modif..5- . *.

  Pour  affecter  l’instance en cours et le fichier de paramètres serveur (SCOPE=BOTH).All rights reserved .Algeria Educ .  Sur l’onglet En cours.  Pour  affecter  l’instance  en  cours et le fichier de paramètres serveur (SCOPE=BOTH). vous pouvez consulter et modifier la valeur des paramètres dans le fichier de paramètres  serveur :    Par  défaut.com .6- © ENI Editions . Seuls les paramètres  dynamiques sont modifiables.  les  modifications  affectent  uniquement  l’instance  en  cours  (SCOPE=MEMORY). vous pouvez consulter et modifier la valeur actuelle des paramètres.  Sur l’onglet Fichier SPFILE. cochez la case Appliquer  les  modifications  en  mode  SPFILE  aux  instances  en  cours  d’exécution  avant  de  cliquer  sur  le  bouton  Appliquer.  Si  vous  cochez  cette  case et que vous modifiez un paramètre statistique.  Par  défaut. le Database Control vous proposera de redémarrer (seul moyen  pour appliquer la modification à "l’instance en cours").  openmirrors. cochez la case Appliquer au fichier SPFILE les modifications  dans  le  mode  des  instances  en  cours  d’exécution avant de cliquer sur le bouton  Appliquer.  les  modifications  affectent  uniquement  le  fichier  de  paramètres  serveur  (SCOPE=SPFILE).

 Pour créer le fichier de paramètres texte.  q Si  l’instance  démarre.  Deux cas peuvent se produire :  q L’instance démarre mais la base de données ne peut pas être montée ou ouverte. Using parameter settings in server-side spfile D:\APP\ORACLE\PRODUCT\11.  c. vous pouvez copier­coller les valeurs  des paramètres qui sont écrites dans le fichier d’alerte de l’instance à chaque démarrage.  Exemple :  Starting up ORACLE RDBMS Version: 11.0.Algeria Educ . b.  ou  le  supprimer.  q q En dernier ressort. les ordres SQL  CREATE PFILE  et  CREATE SPFILE  fonctionnent  même  si  l’instance  n’est  pas  démarrée  (il  faut  juste  une  connexion  SYSDBA).0\DB_1\DATABASE\SPFILEHERMES. Fichier de paramètres serveur perdu ou endommagé  Si le fichier de paramètres serveur est perdu ou endommagé..7- . Problèmes courants et solutions  a. puis recréer  le fichier de paramètres serveur à partir du fichier texte (CREATE SPFILE FROM PFILE).  Si un fichier de paramètres texte valide est disponible. vous pouvez au choix :  q Si l’instance est démarrée.  avec  l’ordre  SQL ALTER SYSTEM  (SET ou RESET).1. le recréer à partir des valeurs des paramètres actuellement en mémoire (CREATE SPFILE FROM MEMORY). vous pouvez créer un fichier de paramètres texte à la main puis recréer le fichier de paramètres  serveur à partir de ce fichier texte. Valeur erronée qui empêche le démarrage  Une  valeur  erronée  dans  le  fichier  de  paramètres  serveur  peut  empêcher  le  démarrage  "normal"  de  la  base  de  données. le recréer à partir de ce fichier texte (CREATE SPFILE FROM PFILE).  Le restaurer à partir d’une sauvegarde (voir le chapitre Sauvegarde et récupération).1.Le  bouton  Réinitialiser  permet  de  supprimer  le  paramètre  sélectionné  du  fichier  de  paramètres  serveur  (ALTER SYSTEM RESET).6.ORA System parameters with non-default values: processes = 150 nls_language = "FRENCH" nls_territory = "FRANCE" memory_target = 252M .  vous  pouvez  créer  un  fichier  de  paramètres  texte  à  partir  du  fichier  de  paramètres  serveur (CREATE PFILE FROM SPFILE).  Si  l’instance  ne  démarre  pas.  5.0. Erreur lors d’un ALTER SYSTEM  ORA-02065: option interdite pour ALTER SYSTEM  Explication  L’option spécifiée n’est pas supportée. Pour mémoire.  vous  pouvez  modifier  le  paramètre  erroné.  L’instance ne démarre pas. corriger la valeur du paramètre dans le fichier de paramètre texte..  © ENI Editions .All rights reserved .

  ORA-02096: Le paramètre d’initialisation indiqué ne peut pas être modifié avec cette option  Explication  Le paramètre est modifiable mais pas avec l’option utilisée.8- © ENI Editions .Cause(s)  Le nom du paramètre est incorrect. vous avez utilisé l’option  DEFERRED pour un paramètre pour lequel c’est interdit.All rights reserved .  Action(s)  Utilisez la clause SCOPE=SPFILE.  Cause(s)  En règle générale.  Cause(s)  Vous n’avez pas utilisé l’option DEFERRED pour un paramètre qui le nécessite ou à l’inverse.  Action(s)  Consultez la documentation du paramètre et corrigez l’ordre SQL.Algeria Educ .  ORA-02095: Le paramètre d’initialisation indiqué ne peut pas être modifié  Explication  Le paramètre ne peut pas être modifié. cette erreur survient lorsque la valeur spécifiée est trop grande ou trop petite.  ORA-02097: le paramètre ne peut pas être modifié.  Action(s)  Consultez la documentation du paramètre et corrigez l’ordre SQL.  Cause(s)  Le paramètre est statique et ne peut pas être modifié pour l’instance en cours.com . car la valeur indiquée n’est pas valide  Explication  Le paramètre est modifiable mais la valeur est incorrecte.  openmirrors.  Action(s)  Vérifiez et corrigez le nom du paramètre.

value. sans devoir arrêter la base.8. Informations sur la mémoire  La commande SQL*Plus SHOW SGA ou la vue V$SGA donne des informations synthétiques sur la taille de la SGA.display_value FROM v$parameter 2 WHERE name IN (’sga_target’.  vous  pouvez  obtenir  un  message  d’erreur  si  la  valeur  demandée est trop grande ou trop petite (cf. 3 ’memory_target’.  au démarrage de l’instance.4.  et  depuis  Oracle11g.Gestion dynamique de la mémoire  1.  la  mémoire  partagée  peut  être  gérée  automatiquement.-------------------.’memory_max_target’).  Plusieurs  paramètres  relatifs  à  la  gestion  de  la  mémoire  (PGA  ou  SGA)  sont  modifiables  dynamiquement  par  l’intermédiaire de l’ordre SQL ALTER SYSTEM :  q MEMORY_TARGET  SGA_TARGET  DB_CACHE_SIZE et éventuellement les différents paramètres DB_nK_CACHE_SIZE (n valant 2.---------------sga_max_size 524288000 500M sga_target 0 0 memory_target 419430400 400M memory_max_target 524288000 500M © ENI Editions .16 ou 32)  SHARED_POOL_SIZE  LARGE_POOL_SIZE  JAVA_POOL_SIZE  STREAMS_POOL_SIZE  RESULT_CACHE_MAX_SIZE  PGA_AGGREGATE_TARGET  q q q q q q q q Seule la taille du Redo Log Buffer (paramètre LOG_BUFFER) ne peut pas être modifiée dynamiquement (mais sa valeur  par défaut est généralement satisfaisante). c’est à dire augmentées ou diminuées.Algeria Educ . Principes  Depuis Oracle9i. la quantité SGA_MAX_SIZE est virtuellement affectée à la SGA. section Gestion dynamique de la mémoire). depuis  Oracle10g. Elles peuvent être modifiées dynamiquement alors que l’instance  est en cours de fonctionnement.  SQL> SELECT name.1- . la SGA et la PGA sont dynamiques. Ces deux paramètres ne sont pas dynamiques et sont calculés.All rights reserved . par défaut.  La taille maximum de la mémoire de l’instance est définie par le paramètre MEMORY_MAX _TARGET et la taille maximum  de la SGA par le paramètre SGA_MAX_SIZE.’sga_max_size’.  la  totalité  de  la  mémoire  (SGA et PGA) peut l’être aussi (voir la section L’instance du chapitre Les bases de l’architecture Oracle). s’ils ne sont pas définis dans le fichier de paramètres.  N’oubliez pas que toutes les valeurs des paramètres de dimensionnement de la mémoire sont arrondies au  granule supérieur (à l’exception du paramètre RESULT_ CACHE_MAX_SIZE dont la valeur est définie par pas de  32 Ko).  2. Dans  les deux cas. NAME VALUE DISPLAY_VALUE -------------------. De plus.  Lors  de  la  modification  dynamique  d’une  structure  mémoire.

NAME VALUE -------------------.---------Fixed Size 2145984 Variable Size 356516160 Database Buffers 159383552 Redo Buffers 3891200 *** TOTAL *** 521936896 La vue V$SGAINFO donne des informations plus détaillées sur la SGA.  Des informations plus complètes sur les structures dynamiques de la mémoire (SGA et PGA) sont disponibles dans la  vue V$MEMORY_DYNAMIC_COMPONENTS. et donc la quantité de mémoire supplémentaire qui peut être allouée à la SGA en cas de besoin  (soit  automatiquement.  MIN_SIZE  Taille minimum de la structure depuis le démarrage de l’instance.  CURRENT_SIZE  Taille actuelle de la structure.---------Fixed SGA Size 2 Redo Buffers 3.8 Startup overhead in Shared Pool 44 Free SGA Memory Available 260 size_mb.  LAST_OPER_TYPE  .  ainsi  que  la  taille  du  granule  (ligne  Granule Size).Algeria Educ openmirrors.  La même information est disponible dans la vue V$SGA_DYNAMIC_FREE_MEMORY qui donne la quantité de mémoire SGA  disponible pour une opération de redimensionnement dynamique (seule et unique colonne CURRENT_SIZE). et s’avère à l’usage plus intéressante que la vue  V$SGA.  soit  manuellement  selon  la  configuration).  Il  faut  noter  que. NAME SIZE_MB -------------------------------. Les principales colonnes sont les suivantes :  COMPONENT  Nom de la structure.1) 2 FROM v$sgainfo.2© ENI Editions .  La  colonne  RESIZEABLE  indique  si  la  taille  de  la  structure correspondante peut être modifiée dynamiquement.resizeable RES --No No Yes Yes Yes Yes Yes Yes No No No Cette  vue  donne  notamment  la  taille  actuelle  réelle  des  différentes  composantes  de  la  SGA.SQL> SELECT name.  MAX_SIZE  Taille maximum de la structure depuis le démarrage de l’instance.  dans  le  cas  où  la  gestion  automatique de la mémoire de l’instance est activée.ROUND(bytes/(1024*1024).SUM(value) FROM v$sga.value FROM v$sga 2 UNION ALL 3 SELECT ’*** TOTAL ***’.  La ligne Free SGA Memory Available donne la différence entre la taille maximum de la SGA (SGA_MAX_SIZE) et la taille  actuelle de la SGA. cette mémoire "libre" inclut la quantité de mémoire allouée à la  PGA et n’est donc pas réellement disponible en totalité pour la SGA.All rights reserved .  USER_SPECIFIED_SIZE  Valeur affectée au paramètre.  SQL> SELECT name.7 Buffer Cache Size 152 Shared Pool Size 72 Large Pool Size 4 Java Pool Size 4 Streams Pool Size 0 Shared IO Pool Size 0 Granule Size 4 Maximum SGA Size 497.  Toutes  les  tailles  sont  en  octets.com .

COMPONENT CURRENT_MB -----------------------------.  soit  2  granules.  3.  réservés  pour  les  structures  non  dynamiques  de  la  SGA  (Redo Log Buffer et SGA fixe).).  vous  pouvez  interroger  la  vue  V$MEMORY_RESIZE_OPS  pour  avoir  l’historique  des  800  dernières  opérations de redimensionnement de la mémoire et V$MEMORY_ CURRENT_RESIZE_OPS pour avoir des informations sur  un éventuel redimensionnement en cours. Avec la gestion automatique de la mémoire partagée  Lorsque  la  gestion  automatique  de  la  mémoire  partagée  est  activée  (paramètre  SGA_TARGET  différent  de  zéro).3- . ainsi que la répartition de la SGA entre ces différentes composantes. IMMEDIATE. nous  voyons  qu’il  y  a  8  Mo  (240­72­4­4­152).  Il  existe  des  vues  équivalentes.  GRANULE_SIZE  Taille du granule.  apparues  en  version  10.  Elle  peut  être  diminuée  jusqu’à  une  valeur  minimale  déterminée  par  Oracle  en  tenant  de  différents  éléments. SHRINK.All rights reserved .  Exemple :  SQL> SELECT component. Modifier la mémoire dynamiquement  a.---------shared pool 72 large pool 4 java pool 4 streams pool 0 SGA Target 240 DEFAULT buffer cache 152 KEEP buffer cache 0 RECYCLE buffer cache 0 DEFAULT 2K buffer cache 0 DEFAULT 4K buffer cache 0 DEFAULT 8K buffer cache 0 DEFAULT 16K buffer cache 0 DEFAULT 32K buffer cache 0 Shared IO Pool 0 PGA Target 160 ASM Buffer Cache 0 Par l’intermédiaire de cette vue.).  Toutes les tailles sont en octets.Algeria Educ . nous pouvons voir la quantité de mémoire allouée à la SGA (ligne SGA Target) et à la  PGA (ligne PGA Target). etc.  V$SGA_RESIZE_OPS  et  V$SGA_CURRENT_RESIZE_OPS.  © ENI Editions . Sur cet exemple.  dont  la  taille  que  vous avez éventuellement affectée aux composantes non prises en charge par la gestion automatique (paramètres  DB_nK_CACHE_SIZE  par  exemple)  mais  aussi  de  la  taille  minimale  que  vous  avez  pu  définir  pour  les  composantes  gérées automatiquement.  Les  vues  V$MEMORY_*  sont  apparues  en  version  11  et  tiennent  compte  de  la  PGA.  LAST_OPER_MODE  Mode de la dernière opération (MANUAL.Information sur la dernière opération réalisée sur la structure (GROW.  La  valeur  de  ce  paramètre  peut  être  augmentée  jusqu’à  la  valeur  du  paramètre  SGA_MAX_SIZE.  LAST_OPER_TIME  Date/heure de la dernière opération.  En  complément.  mais  limitées  à  la  SGA : V$SGA_ DYNAMIC_COMPONENTS.  la  taille de la SGA peut être modifiée dynamiquement en modifiant la valeur du paramètre SGA_TARGET.current_size/(1024*1024) current_mb 2 FROM v$memory_dynamic_components. etc.

current_size/1024/1024 current_size.Lorsque le paramètre SGA_TARGET est modifié. Si vous mettez la valeur à 0.current_size/1024/1024. vous diminuez implicitement la quantité de  mémoire  disponible  pour  la  gestion  automatique ; cette  quantité  de  mémoire  va  être  automatiquement  enlevée aux paramètres gérés automatiquement (Oracle décide de la répartition). Système modifié. vous pouvez aussi modifier la valeur des paramètres gérés manuellement et/ou la valeur des  paramètres gérés automatiquement (dans ce dernier cas vous définissez alors un minimum pour le paramètre).  Si  vous  diminuez  la  valeur  d’un  paramètre  géré  automatiquement.com .contenu du script memoire.-----------.All rights reserved .------------------shared pool 72 0 large pool 4 0 java pool 4 0 SGA Target 252 252 DEFAULT buffer cache 164 0 PGA Target 64 64 *** LIBRE SGA *** 48 SQL> -. si le nouveau minimum est supérieur à la valeur actuelle. vous augmentez la valeur minimale de  ce paramètre. Oracle pourra diminuer la valeur  actuelle du paramètre pour attribuer de la mémoire à une autre structure.-----------. seules les composantes gérées automatiquement sont modifiées.  Si vous le souhaitez.augmentation de SGA_TARGET à 300M SQL> ALTER SYSTEM SET SGA_TARGET = 300M.------------------shared pool 72 0 openmirrors. mais pas sa valeur actuelle si. En cas de besoin. mais pas sa valeur actuelle.Algeria Educ . Oracle ne descendra pas en dessous de la valeur  minimale que vous avez pu définir pour une ou plusieurs composantes.situation de départ SQL> SELECT name. user_specified_size/1024/1024 user_specified_size FROM v$memory_dynamic_components WHERE current_size 0 UNION ALL SELECT ’*** LIBRE SGA ***’.null FROM v$sga_dynamic_free_memory / SQL> -. En cas de diminution.  Si vous augmentez la valeur d’un paramètre géré automatiquement.display_value FROM v$parameter 2 WHERE name IN (’sga_target’. celle­ci est actuellement supérieure au nouveau minimum.sql SQL> HOST more memoire. vous  n’imposez plus de minimum. Par  contre. SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE -----------------------------. et  la  répartition  entre  les  différentes  composantes  est  automatiquement  déterminée  par  Oracle ; les  composantes  gérées manuellement restent inchangées. la valeur est immédiatement augmentée.  q q q Exemple :  SQL> -.’sga_max_size’).  Le comportement est le suivant :  q Si vous diminuez la valeur d’un paramètre géré manuellement.  vous  ne  diminuez  en  fait  que  la  valeur  minimale de ce paramètre.sql COL component FOR A30 SELECT component.4- © ENI Editions .  et Oracle diminue en contrepartie les autres paramètres automatiques (Oracle décide de la répartition).----------------sga_max_size 300M sga_target 252M SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE -----------------------------.  Si vous augmentez la valeur d’un paramètre géré manuellement. vous augmentez implicitement la quantité de  mémoire  disponible  pour  la  gestion  automatique ; la  mémoire  supplémentaire  va  être  automatiquement  réattribuée aux paramètres gérés automatiquement (Oracle décide de la répartition). NAME DISPLAY_VALUE --------------------.

 et il n’y a plus de mémoire libre pour la SGA. Avec la gestion automatique de la mémoire  Lorsque  la  gestion  automatique  de  la  mémoire  est  activée  (paramètre  MEMORY_TARGET).large pool java pool SGA Target DEFAULT buffer cache PGA Target *** LIBRE SGA *** 4 4 300 212 64 0 0 0 300 0 64 SQL> -.  car  la  valeur  actuelle  était  inférieure  au  nouveau minimum.  Les  autres  paramètres  ne  peuvent  pas  être  diminués : DB_16K_CACHE_SIZE  est  géré  manuellement  et  les  autres  sont  à  leur  valeur  minimale. Le Buffer Cache est diminué en conséquence (plus de mémoire libre pour la SGA).  Lors  de  la  diminution  de  SGA_TARGET  à  168  Mo.  Lorsque le paramètre MEMORY_TARGET est modifié. Système modifié. Oracle détermine une nouvelle répartition de la mémoire entre la  PGA  (PGA_AGGREGATE_TARGET)  et  la  SGA  (SGA_TARGET).  puis  une  nouvelle  répartition  de  la  SGA  entre  ces  différentes  © ENI Editions .  Lors  de  l’affectation d’une  valeur  au  paramètre DB_16K_CACHE_SIZE  (géré  manuellement)  et  d’une  valeur  à  SHARED_POOL_SIZE (minimum puisque le paramètre est automatique). Système modifié. SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE -----------------------------.  La valeur de ce paramètre peut être augmentée jusqu’à la valeur du paramètre  MEMORY_ MAX_TARGET. nous voyons les choses suivantes :  q Lors  de  l’augmentation  de  SGA_TARGET  à  300  Mo.------------------shared pool 96 0 large pool 4 0 java pool 4 0 SGA Target 300 300 DEFAULT buffer cache 156 0 DEFAULT 16K buffer cache 32 32 PGA Target 64 64 *** LIBRE SGA *** 0 SQL> -. un cache pour les blocs de 16 Ko est  alloué  à  la  valeur  demandée  et  la  Shared  Pool  est  augmentée.  la  totalité  de  la  mémoire  supplémentaire  est  allouée  au  Buffer Cache.5- .  q q b. SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE -----------------------------.diminution de SGA_TARGET SQL> ALTER SYSTEM SET SGA_TARGET = 168M.------------------shared pool 96 96 large pool 4 0 java pool 4 0 SGA Target 168 168 DEFAULT buffer cache 24 0 DEFAULT 16K buffer cache 32 32 PGA Target 64 64 *** LIBRE SGA *** 132 Sur cet exemple.  le  Buffer  Cache  est  diminué.-----------.-----------.All rights reserved . Il peut être  diminué jusqu’à une valeur minimale déterminée par Oracle en tenant compte de différents éléments (comme pour  la gestion automatique de la mémoire partagée).affectation d’une valeur à DB_16K_CACHE_SIZE SQL> -.et d’un minimum à SHARED_POOL_SIZE SQL> ALTER SYSTEM SET 2 DB_16K_CACHE_SIZE = 32M 3 SHARED_POOL_SIZE = 96M .Algeria Educ .  la  taille  de  la  mémoire  allouée  à  l’instance  (SGA  et  PGA)  peut  être  modifiée  dynamiquement  en  modifiant  la  valeur  du  paramètre  MEMORY_TARGET.

  En  complément. Par contre.-----------.  SGA_TARGET  et  PGA_ AGGREGATE_TARGET  imposent  simplement  un  minimum  respectivement pour la SGA et pour la PGA.Algeria Educ openmirrors. NAME DISPLAY_VALUE --------------------. la valeur est immédiatement  augmentée.display_value FROM v$parameter 2 WHERE name IN (’memory_target’.’memory_max_target’). user_specified_size/1024/1024 user_specified_size FROM v$memory_dynamic_components WHERE current_size 0 UNION ALL SELECT ’*** LIBRE SGA ***’.  Oracle  pourra  diminuer  la  valeur actuelle du paramètre pour attribuer de la mémoire à une autre structure.------------------shared pool 72 0 large pool 4 0 java pool 4 0 SGA Target 240 0 DEFAULT buffer cache 152 0 PGA Target 160 0 *** LIBRE SGA *** 260 SQL> -.sql COL component FOR A30 SELECT component.  Toutes  les  règles  exposées  précédemment  sur  la  modification  des  paramètres  gérés  manuellement et des paramètres gérés automatiquement demeurent valable (voir le titre précédent).  Exemple :  SQL> -.------------------shared pool 72 0 large pool 4 0 java pool 4 0 SGA Target 240 0 DEFAULT buffer cache 152 0 .sql SQL> HOST more memoire. n’oubliez pas que le paramètre statique SGA_MAX_SIZE.  Du point de vue de la SGA.  si  vous  le  souhaitez. current_size/1024/1024 current_size.  mais  pas  leur  valeur  actuelle  si.  q Par ailleurs.  Le comportement est le suivant :  q Si vous augmentez la valeur de  SGA_TARGET ou  PGA_AGGREGATE_TARGET.All rights reserved .-----------. vous n’imposez plus de minimum.contenu du script memoire.  vous  pouvez  aussi  modifier  la  valeur  des  paramètres  SGA_TARGET  et  PGA_AGGREGATE_TARGET.  En  cas  de  besoin.augmentation de MEMORY_TARGET à 500M SQL> ALTER SYSTEM SET MEMORY_TARGET = 500M. Système modifié. Si vous mettez la valeur à  0.----------------memory_target 400M memory_max_target 500M SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE -----------------------------. selon les mêmes règles que pour la gestion automatique de la mémoire partagée. si le nouveau minimum est supérieur à la valeur actuelle.  Si vous diminuez la valeur de SGA_TARGET ou PGA_AGGREGATE_TARGET.  Dans  ce  cas. SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE -----------------------------.  mais  pas  leur  valeur  actuelle. vous ne diminuez en fait que la valeur  minimale  de  ces  paramètres.  celle­ci  est  actuellement  supérieure  au  nouveau  minimum. s’il est défini.situation de départ SQL> SELECT name.com .6© ENI Editions . vous augmentez la valeur minimale  de  ces  paramètres.null FROM v$sga_dynamic_free_memory / SQL> -. la gestion automatique de la mémoire n’est qu’une extension de la gestion automatique  de  la  mémoire  partagée.current_size/1024/1024. impose une taille maximum pour la  SGA.  et  Oracle  diminue  en  contrepartie  les  autres  paramètres  automatiques  (Oracle  décide  de  la  répartition).composantes.

7- . SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE -----------------------------. Système modifié.  Lors de la diminution de  MEMORY_TARGET à 352 Mo. Système modifié. SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE -----------------------------.diminution de MEMORY_TARGET SQL> ALTER SYSTEM SET MEMORY_TARGET = 352M. un cache pour les  blocs de 16 Ko est alloué à la valeur demandée et le Buffer Cache est diminué en conséquence (comme pour  la gestion automatique de la mémoire partagée).  q q q c.------------------shared pool 72 0 large pool 4 0 java pool 4 0 SGA Target 300 300 DEFAULT buffer cache 180 0 DEFAULT 16K buffer cache 32 32 PGA Target 200 0 *** LIBRE SGA *** 200 SQL> -. nous voyons les choses suivantes :  q Lors de l’augmentation de MEMORY_TARGET à 500 Mo. Sans la gestion automatique  © ENI Editions .  la  SGA  est  augmentée  immédiatement  car  la  valeur  actuelle  était  inférieure  au  nouveau  minimum ; la  quantité  de  mémoire  supplémentaire  est  intégralement allouée au Buffer Cache.PGA Target 260 0 *** LIBRE SGA *** 260 SQL> -. la PGA est diminuée. La SGA ne peut pas être diminuée  car elle est à la valeur minimale imposée par SGA_TARGET.-----------.affectation d’une valeur à SGA_TARGET SQL> ALTER SYSTEM SET SGA_TARGET = 300M.------------------shared pool 72 0 large pool 4 0 java pool 4 0 SGA Target 300 300 DEFAULT buffer cache 180 0 DEFAULT 16K buffer cache 32 32 PGA Target 52 0 *** LIBRE SGA *** 200 Sur cet exemple.affectation d’une valeur à DB_16K_CACHE_SIZE SQL> ALTER SYSTEM SET DB_16K_CACHE_SIZE = 32M. SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE -----------------------------.  Lors  de  l’affectation  d’une  valeur  (minimum)  à  SGA_TARGET. Système modifié.  Lors de l’affectation d’une valeur au paramètre DB_16K_CACHE_SIZE (géré manuellement).------------------shared pool 72 0 large pool 4 0 java pool 4 0 SGA Target 240 0 DEFAULT buffer cache 120 0 DEFAULT 16K buffer cache 32 32 PGA Target 260 0 *** LIBRE SGA *** 260 SQL> -.Algeria Educ .-----------. la totalité de la mémoire supplémentaire est allouée à  la PGA.-----------.All rights reserved .

  4.Algeria Educ . le Database Control montre l’historique de la répartition  de la mémoire entre la SGA et la PGA. par contre.  qui était utilisée au moment de l’arrêt (a priori optimale). la configuration mémoire.All rights reserved . sera rétablie.  Ils  donnent  la  quantité  de  mémoire  actuellement  allouée  à  chaque  structure  gérée  automatiquement ; le  paramètre  « normal »  (non  préfixé  par  les  deux  caractères  soulignés)  donne  la  valeur  minimale  du  paramètre.  Pour affecter une valeur minimum à un paramètre de la SGA géré automatiquement.  b. ou simplement de la mémoire partagée. Conclusion et conseil  Oracle  recommande  d’utiliser  la  gestion  automatique  de  la  mémoire  qui  simplifie  beaucoup  le  travail  de  l’administrateur : il  suffit  juste  de  définir  le  paramètre  MEMORY_TARGET  (et  éventuellement  le  paramètre  MEMORY_MAX_TARGET).  toujours  dans  la  limite  de  SGA_MAX_SIZE et MEMORY_MAX_TARGET (s’il est défini).Si vous n’utilisez pas la gestion automatique de la mémoire ni la gestion automatique de la mémoire partagée. cliquez sur le lien Serveur sur la page d’accueil puis sur le lien Fonctions de conseil sur  la  mémoire  (cadre  Configuration  de  base  de  données)  pour  accéder  à  la  page  de  gestion  des  paramètres  de  mémoire.  vous  devez  passer  par  la  page  Paramètres  d’initialisation (cf.  d.  La  valeur  de  ces  paramètres  internes  est  enregistrée dans le fichier de paramètres serveur (s’il est utilisé) ; en cas de redémarrage.  En  interne.  éviter  d’imposer  trop  de  contraintes  à  Oracle  en  donnant  des  valeurs  minimums  aux  paramètres  gérés  automatiquement. Utiliser le Database Control  a.  Si vous utilisez la gestion automatique de la mémoire.  openmirrors. il faut.com .  Le contenu de la page dépend du mode de gestion de la mémoire.8- © ENI Editions . Accès à la page de gestion de la mémoire  Dans le Database Control.  telle  que  vous  avez  pu  la  définir  (0  sinon). Avec la gestion automatique de la mémoire  Lorsque la gestion automatique de la mémoire est activée. les  modifications  apportées  aux  paramètres  sont  immédiatement  prises  en  compte. la section Gestion des paramètres d’initialisation). ou pour affecter une  valeur  à  un  paramètre  de  la  SGA  géré  manuellement.  les  paramètres  __*  (__db_cache_size  par  exemple)  sont  utilisés  par  les  fonctionnalités  de  gestion  automatique.

 l’onglet SGA affiche la répartition de la SGA entre les différentes composantes  (avec l’historique de la répartition) et l’onglet PGA. quelques informations sur la PGA :    © ENI Editions .  Dans la deuxième partie de l’écran.All rights reserved .Algeria Educ .9- .

  la  taille  maximum  de  la  mémoire  (paramètre  MEMORY_MAX_TARGET).  c.  Dans la première partie de la fenêtre.  openmirrors.  Dans la nouvelle configuration.    Vous pouvez cocher la case Appliquer les modifications uniquement au fichier SPFILE (tout en bas de l’écran) si  vous souhaitez que les modifications n’affectent que le fichier de paramètres serveur (SCOPE=SPFILE).Algeria Educ . les  modifications  affectent  l’instance  actuelle  et  le  fichier  de  paramètres  serveur  (SCOPE=BOTH) ; le  Database  Control  vous  proposera  en  conséquence  de  redémarrer  si  vous  modifiez  la  taille  maximum  de  la  mémoire  (paramètre  statique). la zone Taille totale de mémoire permet de modifier la taille de la mémoire  (paramètre  MEMORY_TARGET) et la zone  Taille  maximale  de  mémoire.  Cliquez  sur  le  bouton  Désactiver  si  vous  souhaitez  désactiver  la  gestion  automatique  de  la  mémoire. Par défaut.10 - © ENI Editions .  le  Database  Control  permet  de  régler  séparément la taille de la SGA et la taille de la PGA. Avec la gestion automatique de la mémoire partagée  Lorsque  la  gestion  automatique  de  la  mémoire  partagée  est  activée.com .All rights reserved . la gestion automatique de la mémoire partagée est activée.

 le Database Control affiche quelques informations sur la PGA. La zone Cible d’agrégation de la  mémoire PGA permet de modifier la taille de la PGA (paramètre PGA_AGGREGATE_TARGET).  La  zone Taille  totale  de  mémoire  SGA  (Mo)  permet  de  modifier  la  taille  de  la  SGA  (paramètre SGA_TARGET) et la zone Taille maximale de mémoire SGA (MB).  le  Database  Control  affiche  la  répartition  de  la  SGA  entre  les  différentes  composantes  (avec  l’historique  de  la  répartition). la taille maximum de la SGA (paramètre  SGA_MAX_SIZE).    Dans l’onglet PGA.All rights reserved .  © ENI Editions .Algeria Educ .  Dans  l’onglet  SGA.11 - .

com . Le Database Control vous invite alors à régler la taille des différents composants de la SGA  qui sont gérés automatiquement :    d. l’onglet SGA se présente ainsi :  openmirrors.Algeria Educ . dans l’onglet SGA.All rights reserved .12 - © ENI Editions . Le  Database Control vous invite alors à régler la taille de la mémoire (paramètre MEMORY_TARGET) et la taille maximum  de la mémoire (paramètre MEMORY_MAX_TARGET) :    À l’inverse. vous pouvez cliquer sur le bouton Désactiver pour désactiver la gestion automatique  de la mémoire partagée. Le Database Control vous proposera notamment de redémarrer si vous modifiez la taille maximum  de la SGA (paramètre statique).La case Appliquer les modifications uniquement au fichier SPFILE a le même rôle qu’avec la gestion automatique  de la mémoire.  En haut de l’écran. vous pouvez cliquer sur le bouton Activer pour activer la gestion automatique de la mémoire. Sans la gestion automatique  Lorsque la gestion automatique de la mémoire partagée est désactivée.

 Le Database Control vous invite alors à régler la taille de la SGA (SGA_TARGET) :    Comme  dans  le  point  précédent. sur plate­forme Linux.  redimensionnez  /dev/shm  ou  diminuez  la  valeur  de  MEMORY_TARGET  (voir  la  © ENI Editions .  le  bouton  Activer  situé  tout  en  haut  de  l’écran  permet  d’activer  la  gestion  automatique de la mémoire.  La Database Control affiche la taille des structures de la SGA qui sont gérées automatiquement.  Cliquez  sur  le  bouton  Activer  de  l’onglet  SGA  si  vous  souhaitez  activer  la  gestion  automatique  de  la  mémoire  partagée.  Action(s)  Si  vous  êtes  sur  une  plate­forme  Linux.  Cause(s)  La plate­forme n’est pas supportée ou. /dev/shm n’est pas dimensionné correctement. ainsi que la taille  maximum de la SGA.  5. et permet de les modifier (voir ci­dessus pour le fonctionnement).All rights reserved .Algeria Educ .13 - . Problèmes courants et solutions  ORA-00845: MEMORY_TARGET non pris en charge sur ce système  Explication  La gestion automatique de la mémoire partagée ne peut pas être activée.

  Lorsque  vous  modifiez  la  valeur  d’un  paramètre  de  mémoire  avec  une  valeur  erronée  (trop  grande  ou  trop  petite)  vous  obtenez  une  erreur  ORA-02097  (cf.  Les principaux cas sont les suivants :  s MEMORY_TARGET trop grand  ORA-00837: la valeur de MEMORY_TARGET est supérieure à celle de MEMORY_MAX_TARGET  s MEMORY_TARGET trop petit  ORA-00838: la valeur de MEMORY_TARGET est trop petite .All rights reserved .Algeria Educ .  suivie  d’une  deuxième  erreur qui précise la nature du problème.14 - © ENI Editions .documentation "Administrator’s Reference for Linux and UNIX­Based Operating Systems"). elle doit être de nnn Mo au minimum  ORA-00846: impossible de réduire MEMORY_TARGET a la valeur indiquée  s SGA_TARGET trop grand  ORA-00823: la valeur de sga_target est supérieure a celle de sga_max_size  s SGA_TARGET trop petit  ORA-00827: impossible de réduire sga_target a la valeur indiquée  s PGA_AGGREGATE_TARGET trop grand par rapport à MEMORY_TARGET  ORA-00840: la valeur de PGA_AGGREGATE_TARGET ne peut pas être changée pour la valeur indiquée  s PGA_AGGREGATE_TARGET hors limites  ORA-00093: pga_aggregate_target doit être compris entre 10M et 4096G-1  s DB_CACHE_SIZE (ou DB_nk_CACHE_SIZE) trop grand par rapport à la mémoire disponible pour la SGA  ORA-00384: mémoire insuffisante pour faire évoluer le cache  s *_POOL_SIZE trop grand par rapport à la mémoire disponible pour la SGA  ORA-04033: mémoire insuffisante pour augmenter la taille du pool  s *_POOL_SIZE trop petit  ORA-04034: impossible de réduire le pool a la taille indiquée.  openmirrors.  section  Gestion  des  paramètres  dans  ce  chapitre).com .

  même  si  les  autres  fichiers  de  la  base  de  données  sont  présents  (l’instance  reste  dans  le  statut  NOMOUNT). Si le fichier de contrôle  ne  peut  pas  être  trouvé  (ou  est  endommagé). Rappel sur le fichier de contrôle  Le fichier de contrôle contient des informations de contrôle sur la base de données :  q le nom de la base de données ;  la date/heure de création de la base de données ;  l’emplacement des autres fichiers de la base de données (fichiers de données et fichiers de journalisation) ;  le numéro de séquence actuel des fichiers de journalisation ;  des informations sur les points de reprise (checkpoint).Gestion des fichiers de contrôle  1.  Vous pouvez aussi interroger la vue V$CONTROLFILE_RECORD_SECTION pour obtenir des informations sur le contenu des  différentes sections du fichier de contrôle :  SQL> SELECT type.-----------DATABASE 1 1 CKPT PROGRESS 4 0 REDO THREAD 1 1 REDO LOG 16 3 DATAFILE 128 6 FILENAME 2370 13 TABLESPACE 128 7 © ENI Editions . le fichier de contrôle est le premier fichier ouvert.  il  est  possible  de  créer  une  base  de  données avec un seul fichier de contrôle mais il est vivement conseillé d’utiliser plusieurs copies.---------.CTL IS_ BLOCK_SIZE FILE_SIZE_BLKS --. La colonne IS_RECOVERY_ DEST_FILE indique si le fichier de contrôle  est  stocké  dans  la  zone  de  récupération  rapide  (telle  que  définie  par  le  paramètre  DB_RECOVERY_FILE_DEST).records_used 2 FROM v$controlfile_record_section.All rights reserved .  Lorsqu’une instance est lancée pour ouvrir une base de données.-------------NO 16384 618 NO 16384 618 La colonne STATUS est normalement toujours vide. STATUS NAME ------.------------------------------F:\ORADATA\HERMES\CONTROL01.  la  base  de  données  ne  peut  pas  être  montée. Trouver des informations sur les fichiers de contrôle  La vue V$CONTROLFILEdonne la liste des fichiers de contrôle :  SQL> SELECT * FROM v$controlfile. etc.1- . mais ce sont des scénarios relativement complexes.  Différents  scénarios  de  restauration  sont  alors  disponibles  en  fonction  de  la  situation  (présence  ou  non  d’une  sauvegarde  du  fichier  de  contrôle.  Pour  des  raisons  de  sécurité.  q q q q Le  fichier  de  contrôle  est  automatiquement  mis  à  jour  par  Oracle  lors  de  chaque  modification  de  la  structure  de  la  base de données (ajout ou déplacement d’un fichier par exemple).CTL G:\ORADATA\HERMES\CONTROL02.  Plusieurs fichiers de contrôle peuvent être spécifiés lors de la création de la base (chapitre Création d’une nouvelle  base de données) ou ultérieurement (voir ci­après). notamment) pour redémarrer la base de données. La taille du fichier de contrôle est déterminée par  Oracle.  2.  c’est­à­dire  de  disposer  de  plusieurs  copies  gérées  en  miroir  (multiplexées)  par  Oracle.  Le  produit FILE_SIZE_ BLKS x BLOCK_SIZE donne la taille des fichiers de contrôles en octets.  Techniquement. même si le serveur  ne comprend qu’un disque (cela met à l’abri d’une suppression accidentelle).records_total. Il  permet ensuite.------------.  il  est  donc  conseillé  de  multiplexer  le  fichier  de  contrôle. à l’instance de localiser et d’ouvrir les autres fichiers de la base de données.Algeria Educ . TYPE RECORDS_TOTAL RECORDS_USED ---------------------------.

  CONTROLFILE_CHANGE#  Dernier numéro SCN (System Change Number) enregistré dans le fichier de contrôle..  CURRENT_SCN  Numéro SCN courant.  3.  CHECKPOINT_CHANGE#  Numéro SCN du dernier point de reprise. Si vous utilisez  un fichier de paramètres serveur (conseillé). 2 ’g:\oradata\hermes\control02.ctl > e:\oradata\hermes\control03. Certaines limites proviennent des valeurs attribuées aux options MAX* de l’ordre SQL  CREATE DATABASE (MAXDATAFILES par exemple).All rights reserved . dupliquer un fichier de contrôle existant vers le nouvel emplacement.ctl’.  CONTROLFILE_SEQUENCE#  Numéro de séquence du fichier de contrôle. si possible sur des disques différents (dans l’idéal. mentionner le nouveau fichier  de contrôle dans le paramètre CONTROL_FILES (paramètre statique) et redémarrer la base de données.  avant  d’exécuter  l’ordre SQL  CREATE DATABASE (voir le chapitre Création d’une nouvelle base de données). vous devez modifier le paramètre CONTROL_ FILES avant d’arrêter la base  de données..  CONTROLFILE_TIME  Date/heure de dernier enregistrement dans le fichier de contrôle. 3 ’e:\oradata\hermes\control03. Cette  vue  indique  notamment  le  nombre  maximum  d’enregistrements  possibles  dans  les  différentes  sections  et  le  nombre d’enregistrements actuellement utilisés.ctl’ 4 SCOPE = SPFILE.  en  spécifiant  la  liste  des  fichiers  de  contrôle  souhaités  dans  le  paramètre CONTROL_FILES. sur les 128 possibles. q arrêter la base proprement (pas ABORT !) :  SQL> SHUTDOWN IMMEDIATE q dupliquer un fichier de contrôle existant vers le nouvel emplacement :  SQL> HOST copy f:\oradata\hermes\control01.2- © ENI Editions . Multiplexer le fichier de contrôle  Comme indiqué précédemment.com . il est conseillé de faire fonctionner la base de données avec au moins.ctl openmirrors. il faut arrêter proprement la  base de données. deux fichiers  de contrôle. Pour cela. il y a 6 enregistrements de fichiers de données  utilisés.  Le  multiplexage  des  fichiers  de  contrôle  peut  être  mis  en  œ uvre  lors  de  la  création  de  la  base  de  données. 3 ou 4 sur des disques différents). incrémenté lors des mises à jour du fichier de contrôle.  Le multiplexage peut aussi être mis en  œ uvre (ou renforcé) ultérieurement.  Certaines colonnes de la vue V$DATABASE donnent aussi des informations sur les fichiers de contrôle :  CONTROLFILE_CREATED  Date de création du fichier de contrôle. Dans notre exemple.Algeria Educ .  Le mode opératoire est alors le suivant :  q spécifier l’emplacement du nouveau fichier de contrôle dans le fichier de paramètres serveur :  SQL> ALTER SYSTEM SET CONTROL_FILES = ’f:\oradata\hermes\control01..ctl’.

  cliquez  sur  le  lien  Serveur  sur  la  page  d’accueil  puis.CTL E:\ORADATA\HERMES\CONTROL03.q redémarrer la base de données :  SQL> STARTUP q Vérifier :  SQL> SELECT name FROM v$controlfile. et comment récupérer une base de données en cas de perte d’un fichier de contrôle. une erreur se produira au redémarrage.  En complément.All rights reserved . Si la copie du fichier de contrôle n’est pas jugée cohérente par  Oracle.CTL Une  technique  similaire  peut  être  utilisée  pour  déplacer  un  fichier  de  contrôle  d’un  emplacement  à  un  autre  ou  supprimer un fichier de contrôle.  4.  V$DATABASE et V$CONTROLFILE_RECORD_SECTION. Le Database Control ne propose pas de moyen simple pour multiplexer  les fichiers de contrôle.  Il  ne  faut  donc  pas  dupliquer  le  fichier  de  contrôle  alors  que  la  base  de  données  est  ouverte  ou  après  un  SHUTDOWN ABORT  (le  fichier de contrôle n’a pas été fermé proprement).  La  duplication  du  fichier  de  contrôle  doit  se  faire  sur  un  fichier  de  contrôle  cohérent.  sur  le  lien  Fichiers  de  contrôle  (cadre Stockage) pour accéder à la page d’information sur les fichiers de contrôle :    Les  trois  onglets  donnent  des  informations  sur  les  fichiers  de  contrôle.3- .CTL G:\ORADATA\HERMES\CONTROL02. Utiliser le Database Control  Dans  le  Database  Control>.Algeria Educ .  © ENI Editions . nous verrons au chapitre Sauvegarde et récupération quand et comment sauvegarder le fichier de  contrôle. NAME ----------------------------------------------F:\ORADATA\HERMES\CONTROL01.  en  provenance  des  vues  V$CONTROLFILE.

  Il  est  donc  conseillé  d’utiliser au minimum deux ou trois membres par groupe (multiplexage).  le  nombre  de  groupe est déterminé ; il n’augmente pas dynamiquement.  À  l’intérieur  d’un  groupe.  les  membres  sont  écrits  simultanément  en  miroir  par  l’instance  Oracle  (processus  LGWR)  et  contiennent  la  même  information.  elle  écrase  les  informations  qui  y  sont  stockées ; ces  informations ne sont donc plus disponibles en cas de besoin. par exemple pour une restauration de média. la base de données peut continuer  à fonctionner.  ils  sont  appliqués  à  une  sauvegarde de fichier de données.Gestion des fichiers de journalisation  1.All rights reserved . Trouver des informations sur les fichiers de journalisation  Plusieurs vues du dictionnaire permettent d’obtenir des informations sur les fichiers de journalisation :  q V$LOG : informations sur les groupes ;  V$LOGFILE : informations sur les membres ;  V$LOG_HISTORY : informations sur l’historique des fichiers de journalisation.  V$LOG  GROUP#  Numéro du groupe.  Le  passage d’un groupe à un autre est appelé basculement (switch).  l’instance  Oracle  repasse  au  premier. Afin de  garantir  cette  possibilité  d’effectuer  des  restaurations  complètes. avant que l’instance ne les réutilise.  2.1- .  Lorsqu’un groupe est plein (c’est­à­dire lorsque les membres sont pleins). l’instance Oracle passe au groupe suivant  et  ainsi  de  suite  jusqu’au  dernier ; lorsque  le  dernier  groupe  est  plein.Algeria Educ .  Tous  les  membres  d’un  groupe  ont  la  même  taille  définie  lors  de  la  création  du  groupe ; un  fichier  de  journalisation  contient  donc  une  quantité  maximale  d’informations.  par  défaut.com © ENI Editions .  il  faut  activer  le  mécanisme  d’archivage  (chapitre  Sauvegarde  et  récupération)  qui  permet  d’archiver  les  fichiers  de  journalisation  (en  l’occurrence  un  membre  du  groupe) lorsqu’ils sont pleins. si possible sur des disques différents.  Les  fichiers  de  journalisation  sont  organisés  en  groupes  (au  minimum  2)  composés  d’un  ou  de  plusieurs  membres  (minimum  1) ; ils  sont  créés  lors  de  la  définition  de  la  base  (chapitre  Création  d’une  nouvelle  base  de  données).  périodiquement écrasées.    Lorsque  l’instance  Oracle  revient  dans  le  premier  groupe.  Les  fichiers  de  journalisation  sont  utilisés  pour  la  restauration  de  l’instance  après  un  arrêt  anormal  et  pour  la  restauration  de  média  si  un  fichier  de  données  est  perdu  ou  endommagé ; dans  ce  cas.  q q Les colonnes intéressantes des différentes vues sont présentées ci­après.  Si un groupe possède plusieurs membres et qu’un des membres soit indisponible.  Les  fichiers  de  journalisation  sont  très  importants  pour  la  sécurité  de  la  base  de  données. Ils sont  organisés  en  groupes  écrits  de  manière  circulaire ; les  informations  sauvegardées  sont  donc.  De  même. Rappel sur les fichiers de journalisation  Les fichiers de journalisation (redo log) enregistrent toutes les modifications apportées à la base de données.  openmirrors. pour rejouer toutes les modifications survenues entre la sauvegarde et l’incident  ayant endommagé le fichier.

SEQUENCE#  Numéro de séquence du groupe (s’incrémente à chaque basculement).  BYTES  Taille en octets.  MEMBERS  Nombre de membres.  ARCHIVED  Groupe archivé (YES ou NO).  STATUS  Statut du groupe : 
q

UNUSED : groupe jamais écrit (sans doute nouveau) ;  CURRENT : groupe courant (groupe en cours d’écriture) ;  ACTIVE : groupe encore nécessaire en cas de restauration d’instance (point de reprise non terminé) ;  INACTIVE : groupe inutile pour une restauration d’instance (point de reprise terminé). 

q

q

q

FIRST_CHANGE#  Plus petit numéro SCN écrit dans le groupe.  FIRST_TIME  Date et heure du plus petit numéro SCN.  V$LOGFILE  GROUP#  Numéro du groupe.  STATUS  Statut du membre : 
q

INVALID : fichier inaccessible ;  STALE : fichier incomplet (statut des nouveaux membres) ;  DELETED : fichier supprimé, plus utilisé ;  vide : fichier utilisé. 

q

q

q

MEMBER  Nom complet du fichier membre  IS_RECOVERY_DEST_FILE  Indique (YES ou NO) si le membre est stocké dans la zone de récupération rapide (telle que définie par le paramètre 
- 2© ENI Editions - All rights reserved - Algeria Educ

DB_RECOVERY_ FILE_DEST).  V$LOG_HISTORY  SEQUENCE#  Numéro de séquence du groupe.  FIRST_CHANGE#  Plus petit numéro SCN écrit dans le groupe.  NEXT_CHANGE#  Plus grand numéro SCN écrit dans le groupe.  FIRST_TIME  Date et heure du plus petit numéro SCN écrit dans le groupe.  Exemple :  SQL> SELECT group#,sequence#,bytes/(1024*1024) size_mo,members,status 2 FROM v$log; GROUP# SEQUENCE# SIZE_MO MEMBERS STATUS ------ ---------- ---------- ---------- ---------------1 16 50 2 INACTIVE 2 17 50 2 CURRENT 3 18 50 2 INACTIVE SQL> SELECT group#,status,member,is_recovery_dest_file 2 FROM v$logfile 3 ORDER BY group#; GROUP# STATUS MEMBER IS_RECOVERY_DEST_FILE ------ ------- ------------------------------ --------------------1 F:\ORADATA\HERMES\REDO01A.LOG NO 1 G:\ORADATA\HERMES\REDO01B.LOG NO 2 F:\ORADATA\HERMES\REDO02A.LOG NO 2 G:\ORADATA\HERMES\REDO02B.LOG NO 3 F:\ORADATA\HERMES\REDO03A.LOG NO 3 G:\ORADATA\HERMES\REDO03B.LOG NO SQL> SELECT sequence#,TO_CHAR(first_time,’DD/MM HH24:MI’) first_time 2 FROM v$log_history; SEQUENCE# FIRST_TIME --------- -----------1 16/07 14:53 2 16/07 14:55 3 16/07 14:56 15 16/07 15:17 16 16/07 15:19 17 16/07 15:25

3. Dimensionner les fichiers de journalisation 
Déterminer le nombre de groupes et la taille des groupes est un sujet complexe pour lequel il n’existe pas de formule  de calcul. Par contre, il est possible, a posteriori, d’auditer le fonctionnement des fichiers de journalisation afin de voir  si le nombre de groupes et la taille des groupes sont satisfaisants ; en cas de problème, il est relativement simple  d’apporter des corrections en ajoutant un nouveau groupe ou en augmentant la taille des groupes (cette action est  un peu plus complexe).  L’objectif est simple : 
q

Utiliser  des  fichiers  de  journalisation  de  taille  suffisante  pour  éviter  des  basculements  trop  fréquents,  pénalisants pour les performances. La recommandation d’Oracle  est  d’avoir un basculement toutes les 20 à 

openmirrors.com

© ENI Editions - All rights reserved - Algeria Educ

- 3-

30 minutes environ. 
q

Utiliser un nombre suffisant de groupes pour permettre aux points de reprise et à l’archivage de se terminer  avant que l’instance ne revienne sur un fichier de journalisation. Si le point de reprise ou l’archivage ne sont  pas terminés, le processus LGWR attend, ce qui est très mauvais pour les performances. 

Avoir des basculements peu fréquents (plus de 4 heures par exemple), et donc des points de reprise peu fréquents,  combinés à une forte activité de mise à jour (possible avec des fichiers de journalisation volumineux), est bénéfique  pour les performances mais cela risque, en cas d’arrêt anormal de l’instance, d’augmenter la durée de la récupération  de l’instance et donc, la durée du redémarrage. La recommandation d’Oracle est de trouver un bon compromis entre  la performance en fonctionnement normal et la performance du redémarrage, en cas d’arrêt anormal de l’instance.  Le  fichier  d’alerte  de  l’instance  (voir  la  section  Diagnostiquer  les  problèmes  du  chapitre  Les  outils  d’administration)  peut  être  utilisé  comme  premier  outil  d’audit  simple  de  l’activité  des  fichiers  de  journalisation.  Les  informations  à  surveiller sont les suivantes : 
q

Basculement de fichier de journalisation :  Wed Jul 16 15:25:04 2008 Thread 1 advanced to log sequence 17 Current log# 2 seq# 17 mem# 0: F:\ORADATA\HERMES\REDO02A.LOG Current log# 2 seq# 17 mem# 1: G:\ORADATA\HERMES\REDO02B.LOG

q

Attente lors d’un basculement de fichier de journalisation : 
q

Point de reprise non terminé  Wed Jul 16 15:17:28 2008 Thread 1 cannot allocate new log, sequence 15 Checkpoint not complete

q

Archivage non terminé  Wed Jul 16 15:19:02 2008 Thread 1 cannot allocate new log, sequence 16 All online logs needed archiving

La vue V$LOG_HISTORY peut aussi être utilisée pour analyser la vitesse de basculement des fichiers de journalisation.  Si la durée qui sépare les messages de ce type est systématiquement courte, les fichiers de journalisation sont mal  dimensionnés. Si cette situation de basculements rapprochés (ou de basculements temporairement bloqués) est rare  (une  fois  par  jour  par  exemple),  le  dimensionnement  est  satisfaisant  (la  situation  est  peut  être  liée  à  un  batch  qui  génère un pic de l’activité transactionnelle).  En cas de basculement trop rapide (largement inférieur à 20/30 minutes), il faut augmenter la taille des groupes.  En  cas  d’attentes  fréquentes  lors  d’un  basculement,  il  faut  ajouter  un  groupe  (le  processus  LGWR  mettra  plus  de  temps  à  faire  le  tour  des  groupes,  ce  qui  laissera  plus  de  temps  au  point  de  reprise  ou  à  l’archivage  pour  se  terminer).  Les opérations d’ajout d’un groupe ou d’augmentation de la taille des groupes sont présentées dans la suite de ce  chapitre. 

4. Administrer les fichiers de journalisation 
a. Vue d’ensemble 
Différentes opérations d’administration peuvent être effectuées sur les fichiers de journalisation : 
q

Ajouter  un  nouveau  membre  dans  un  groupe permet d’améliorer la sécurité des fichiers de journalisation  (multiplexage).  Ajouter  un  nouveau  groupe  permet  d’améliorer  la  disponibilité  des  fichiers  de  journalisation  pour  le  processus LGWR, en augmentant la durée d’un cycle complet de rotation. 

q

- 4-

© ENI Editions - All rights reserved - Algeria Educ

q

Déplacer un membre permet d’améliorer la répartition des entrées/sorties par exemple.  Supprimer un groupe peut être utilisé dans une opération d’augmentation de la taille des groupes (ajout  d’un nouveau groupe plus gros puis suppression d’un ancien).  Supprimer un membre d’un groupe s’il est endommagé par exemple.  Forcer le basculement du groupe courant au suivant peut être utilisé dans l’opération d’augmentation de  taille. 

q

q

q

Il n’existe pas de commande pour modifier la taille des groupes ; la technique consiste à ajouter des groupes ayant  la taille souhaitée et à supprimer les anciens groupes. Supprimer un groupe ne sera pas possible si c’est le groupe  courant ; la commande permettant de forcer un basculement peut alors être utilisée pour éviter d’attendre. Sinon,  supprimer un groupe ou forcer le basculement du groupe courant au suivant sont des opérations rarement utilisées  en elles­mêmes. 

b. Ajouter un nouveau membre à un groupe (multiplexage) 
Nous avons vu que le multiplexage des fichiers de journalisation pouvait être mis en œ uvre lors de la création de la  base  de  données  (voir  la  section  Création  de  la  base  de  données  à  la  main  du  chapitre  Création  d’une  nouvelle  base  de  données).  Il  suffit  de  spécifier  plusieurs  membres  pour  chaque  groupe  listé  dans  la  clause  LOGFILE  de  l’ordre SQL CREATE DATABASE.  Le multiplexage des fichiers de journalisation peut aussi être mis en œ uvre (ou renforcé) ultérieurement, à l’aide de  l’ordre SQL ALTER DATABASE.  Syntaxe simplifiée :  ALTER DATABASE ADD LOGFILE MEMBER ’nom_fichier’ [,...] TO GROUP numéro; Exemple :  ALTER DATABASE ADD LOGFILE MEMBER ’e:\oradata\HERMES\redo01c.log’ TO GROUP 1; La  taille  du  fichier  n’a  pas  besoin  d’être  spécifiée ; le  nouveau  fichier  a  forcément  la  même  taille  que  les  autres  membres du groupe. Notez aussi que le nouveau membre aura un statut INVALID dans V$LOGFILE ; c’est normal et  le statut changera lorsque le fichier sera utilisé.  Même  s’il  est  techniquement  possible  d’avoir  des  groupes  qui  n’ont  pas  le  même  nombre  de  membres,  c’est  normalement  une  situation  temporaire.  Bien  protéger  tous  les  groupes  sauf  un,  est  périlleux ; la  loi  de  Murphy  indique que si un incident doit se produire, il aura lieu sur le groupe mal protégé. 

c. Ajouter un nouveau groupe 
Ajouter un nouveau groupe peut être réalisé à l’aide de l’ordre SQL ALTER DATABASE.  Syntaxe :  ALTER DATABASE ADD LOGFILE [GROUP numéro] spécification_fichier_redo [,...] ; - spécification_fichier_redo (’nom_fichier’ [,...]) [ SIZE valeur [K|M|G] ] [REUSE] Avec :  numéro  Numéro du groupe. Si l’option est absente, Oracle numérote les groupes 1, 2... (ce qui est bien).  nom_fichier  Chemin d’accès complet à un fichier membre du groupe, normalement dans un répertoire de données (oradata) pour  respecter le standard OFA. 

openmirrors.com

© ENI Editions - All rights reserved - Algeria Educ

- 5-

SIZE  Taille de chaque membre du groupe en octets (pas de symbole), Ko (symbole K), Mo (symbole M) ou Go (symbole G).  La taille peut être omise uniquement si l’option REUSE est utilisée et que le fichier existe déjà.  REUSE  Si l’option est présente et que le fichier existe déjà, Oracle le réutilise et l’écrase.  Si  l’option est absente, dans la  même situation, un message d’erreur s’affiche et la création de la base de données est stoppée. Du point de vue de  la  sécurité,  il  est  préférable  de  ne  pas  utiliser  cette  option  afin  d’éviter  d’écraser  par  mégarde  un  fichier  de  journalisation utilisé par une autre base de données.  Exemple :  ALTER DATABASE ADD LOGFILE GROUP 4 (’e:\oradata\hermes\redo04a.log’, ’g:\oradata\hermes\redo04b.log’) SIZE 50M; Sauf  opération  d’augmentation de la taille des groupes, le nouveau groupe présente normalement la même taille  que les autres ; avoir des groupes de tailles différentes ne présente aucun intérêt. 

d. Déplacer un membre 
Le mode opératoire pour déplacer un fichier de journalisation est le suivant : 
q

arrêter la base de données (proprement, pas ABORT) :  SQL> SHUTDOWN IMMEDIATE

q

déplacer le(s) fichier(s) de journalisation vers le nouvel emplacement :  SQL> HOST move e:\oradata\hermes\redo04a.log > f:\oradata\hermes\redo04a.log

q

monter la base de données :  SQL> STARTUP MOUNT

q

utiliser l’ordre SQL ALTER DATABASE RENAME FILE pour indiquer à Oracle le nouvel emplacement :  SQL> ALTER DATABASE 2 RENAME FILE ’e:\oradata\hermes\redo04a.log’ 3 TO ’f:\oradata\hermes\redo04a.log’;

q

ouvrir la base de données :  SQL> ALTER DATABASE OPEN;

La syntaxe de l’ordre SQL ALTER DATABASE RENAME FILE est la suivante :  ALTER DATABASE RENAME FILE ’ancien_nom_complet’ [,...] TO ’nouveau_nom_complet’ [,...]; Exemple :  ALTER DATABASE RENAME FILE ’e:\oradata\hermes\redo04a.log’ TO ’f:\oradata\hermes\redo04a.log’; Notez bien que l’ordre SQL ALTER DATABASE RENAME FILE ne renomme pas, ni ne déplace le fichier physique ; cette  opération  doit  être  effectuée  par  une  commande  du  système  d’exploitation.  L’ordre  SQL  ALTER DATABASE RENAME
- 6© ENI Editions - All rights reserved - Algeria Educ

FILE  sert  juste  à  indiquer  à  Oracle  le  nouvel  emplacement  ou  le  nouveau  nom  d’un  fichier  (Oracle  met  à  jour  en  conséquence  le  fichier  de  contrôle).L’ancien  nom  complet  doit  correspondre  à  un  fichier  appartenant  à  la  base  de  données,  mais  il  peut  ne  plus  exister  physiquement ; par  contre,  Oracle  vérifie  que  le  fichier  existe  bien  avec  le  nouveau nom et/ou dans le nouvel emplacement (et que le fichier est valide). 

e. Supprimer un groupe 
Supprimer un groupe peut être réalisé à l’aide de l’ordre SQL ALTER DATABASE.  Syntaxe :  ALTER DATABASE DROP LOGFILE GROUP numéro ; Exemple :  ALTER DATABASE DROP LOGFILE GROUP 4; La base de données doit avoir au moins 3 groupes de fichiers de journalisation pour pouvoir en supprimer un (il doit  rester au moins 2 groupes).  Seul un groupe au statut INACTIVE peut être supprimé. Le groupe courant (celui dans lequel le processus LGWR est  en  train  d’écrire)  ne  peut  pas  être  supprimé ; il  en  est  de  même  si  le  groupe  a  le  statut  ACTIVE  (groupe  encore  nécessaire en cas de restauration d’instance). En mode ARCHIVELOG, un groupe non encore archivé ne peut pas être  supprimé.  Les fichiers concernés ne sont pas physiquement supprimés par Oracle ; il faut les supprimer manuellement, à l’aide  d’une commande du système d’exploitation. 

f. Supprimer un membre d’un groupe 
Supprimer un membre d’un groupe peut être réalisé à l’aide de l’ordre SQL ALTER DATABASE.  Syntaxe :  ALTER DATABASE DROP LOGFILE MEMBER ’nom_fichier’ [,...] Exemple :  ALTER DATABASE DROP LOGFILE MEMBER ’g:\oradata\hermes\redo01b.log’; Le groupe concerné doit avoir au moins 2 membres pour pouvoir en supprimer un (il doit toujours au moins exister  un membre  valide  par  groupe) ; si  le  groupe  a  deux  membres  dont  un  invalide,  vous  ne  pourrez  pas  supprimer  le  membre valide. Pour supprimer tous les membres d’un groupe, il faut en fait supprimer le groupe (point précédent).  Le tableau suivant indique si un membre peut être supprimé en fonction du statut du groupe : 

Status du groupe
CURRENT  ACTIVE  INACTIVE 

Membre supprimable ?
Non  Non  Oui 

En mode ARCHIVELOG, un membre d’un groupe non encore archivé ne peut pas être supprimé. Les fichiers concernés  ne sont pas physiquement supprimés par Oracle ; il faut les supprimer manuellement, à l’aide d’une commande du  système d’exploitation. 

g. Forcer le basculement du groupe courant au suivant 
Forcer le basculement du groupe courant au suivant peut être réalisé à l’aide de l’ordre SQL ALTER SYSTEM. 

openmirrors.com

© ENI Editions - All rights reserved - Algeria Educ

- 7-

Syntaxe :  ALTER SYSTEM SWITCH LOGFILE; Le basculement manuel provoque les mêmes événements qu’un basculement automatique : 
q

point de reprise ;  archivage (si l’archivage est activé). 

q

5. Contrôler la fréquence des points de reprise 
Par défaut, les points de reprise se déclenchent lors d’un basculement de fichier de journalisation.  Lorsque les fichiers de journalisation sont gros et que les basculements sont peu fréquents, cela peut conduire à des  redémarrages un peu longs en cas d’arrêt anormal de l’instance (beaucoup de modifications à apporter aux fichiers  de données pour les remettre en état).Dans ce genre de situation, il peut être intéressant de contrôler la fréquence  des  points  de  reprise  et  de  faire  en  sorte  d’avoir  des  points  de  reprise  intermédiaires,  entre  les  basculements  de  fichiers de journalisation.  La méthode recommandée consiste à utiliser le paramètre FAST_START_MTTR_TARGET qui indique le nombre maximum  de  secondes  souhaité  pour  le  redémarrage  de  l’instance,  après  un  arrêt  anormal.  Une  fois  que  ce  paramètre  est  positionné, l’instance ajuste automatiquement la fréquence des points de reprise afin de ne pas avoir trop d’activité à  rejouer dans les fichiers de données, en cas d’arrêt anormal de l’instance.  Des  points  de  reprise  trop  fréquents  peuvent  dégrader  les  performances  de  l’activité  courante ; il  faut  trouver le juste équilibre …  La vue  V$INSTANCE_RECOVERY peut être utilisée pour superviser le temps estimé de restauration de l’instance. Cette  vue contient notamment les colonnes suivantes :  TARGET_MTTR  Objectif  réel  de  durée  de  récupération  maximum,  recalculé  par  Oracle,  en  fonction  du  contexte ; tient  compte  de  la  valeur du paramètre FAST_START_MTTR_TARGET mais aussi, d’autres facteurs.  ESTIMATED_MTTR  Durée de récupération estimée actuellement compte tenu de l’activité de l’instance.  OPTIMAL_LOGFILE_SIZE  Taille  optimale  des  fichiers  de  journalisation  (en  Mo)  permettant  d’atteindre l’objectif  (valeur  actuelle  du  paramètre  FAST_START_ MTTR_TARGET)  uniquement  avec  les  points  de  reprises  liés  aux  basculements  des  fichiers  de  journalisation.  Si  le  paramètre  FAST_START_MTTR_TARGET  est  réglé  à  une  valeur  trop  basse,  la  durée  effective  de  recouvrement  est  déterminée  au  mieux  de  ce  que  le  système  est  capable  de  faire,  compte  tenu  du  contexte.  Si  le  paramètre  FAST_START_MTTR_TARGET est réglé à une valeur élevée, telle que, même dans le pire des cas, le recouvrement serait  plus  court,  la  durée  effective  de  recouvrement  est  estimée  par  rapport  au  scénario  le  pire : tous  les  blocs  sont  modifiés  dans  le  Buffer  Cache,  pour  des  transactions  validées,  et  aucun  n’a  encore  été  écrit  sur  disque,  dans  les  fichiers de données.  Exemple :  SQL> SELECT value FROM v$parameter 2 WHERE name = ’fast_start_mttr_target’; VALUE -------------------60 SQL> SELECT target_mttr,estimated_mttr,optimal_logfile_size 2 FROM v$instance_recovery; TARGET_MTTR ESTIMATED_MTTR OPTIMAL_LOGFILE_SIZE ----------- -------------- --------------------

- 8-

© ENI Editions - All rights reserved - Algeria Educ

30

18

99

Si  le  paramètre  FAST_START_MTTR_TARGET n’est  pas  défini,  la  colonne  TARGET_MTTR est  égale  à  0  et  la  colonne  OPTIMAL_LOGFILE_SIZE est vide ; par contre, la colonne ESTIMATED_MTTR est renseignée. 

6. Utiliser le Database Control 
Dans  le  Database  Control,  cliquez  sur  le  lien Serveur sur la page d’accueil  puis,  sur  le  lien Groupes  de  fichiers  de  journalisation (cadre Stockage) pour accéder à la page de gestion des fichiers de journalisation : 

  À partir de cette page, vous pouvez effectuer diverses actions sur les groupes de fichiers de journalisation : 

  créer un nouveau groupe (bouton Créer ou menu Créer comme) ;  supprimer un groupe (bouton Supprimer) ;  forcer le basculement du groupe courant au suivant (menu Changer de fichier journal) ;  forcer un point de reprise (menu Forcer l’application d’un point de reprise). 

q

q

q

q

En cliquant sur le lien du numéro de groupe ou en cliquant sur les boutons Modifier ou Visualiser, vous arrivez sur la  page de gestion des membres du groupe : 

openmirrors.com

© ENI Editions - All rights reserved - Algeria Educ

- 9-

  Cette page permet d’ajouter,  supprimer,  ou  modifier  un  membre.  Notez  que  le  Database  Control  n’effectue aucune  action  sur  les  fichiers  physiques  (suppression,  déplacement,  renommage) ; ces  opérations  doivent  être  effectuées  manuellement au niveau du système d’exploitation. 

- 10 -

© ENI Editions - All rights reserved - Algeria Educ

 Vue d’ensemble  Un  tablespace  est  une  unité  logique  de  stockage  composée  d’un  ou  plusieurs  fichiers  physiques  (fichiers  de  données).  si possible.Un tablespace peut être ONLINE (accessible) ou OFFLINE. les informations sur les extensions libres et allouées  sont stockées dans l’en­tête des fichiers de données du tablespace.  et  non  au  niveau des fichiers de données.Vue d’ensemble et directives  1.  q Une base de données possède toujours au minimum deux tablespaces nommés SYSTEM et SYSAUX (tablespace SYStem  AUXiliaire. les fichiers sont généralement situés sur des  disques différents avec deux objectifs possibles :  q allouer de l’espace supplémentaire à un tablespace dont le fichier de données initial ne peut plus s’étendre ;  répartir le stockage du tablespace sur plusieurs disques (striping au niveau d’Oracle).1- q q openmirrors.  Dans  le  Database  Control.  Normalement.  utilisés  en  interne  par  Oracle : le  tablespace  d’annulation  (chapitre  Gestion  des  informations  d’annulation)  et  le  tablespace  temporaire.  dorénavant  appelé  tablespace SMALLFILE.  nous  utiliserons le terme "tablespace". de rendre une application inaccessible sans toucher à une autre. répartir les fichiers de données de ces tablespaces sur des disques différents.  ou  si  la  base  de  données  abrite  plusieurs  applications. soit  tout de même plus de 4 millions de blocs).  Le  tablespace  SYSTEM  contient  le  dictionnaire  de  données. le stockage est organisé en segments.com . les informations sur les extensions libres et allouées sont stockées dans des tables du dictionnaire  de données ; dans le second cas (tablespace géré localement).Algeria Educ . Dans le premier cas (tablespace< géré par  le dictionnaire). Un tablespace peut être READ WRITE (en lecture/écriture) ou READ ONLY (en lecture seule).  les  tablespaces  SYSTEM  et  SYSAUX  ne  doivent  pas  contenir  de  données  utilisateur.  Les  tablespaces  autres  que  le  tablespace  d’annulation  et  le  tablespace  temporaire  sont  appelés  "tablespaces  permanents". mais de taille plus limitée ("seulement" 2^22 blocs Oracle. Oracle a introduit la notion de tablespace BIGFILE : un tablespace BIGFILE est un tablespace composé  d’un  seul  fichier  de  données  qui  peut  être  particulièrement  volumineux  (jusqu’à  2^32  blocs  Oracle  soit  plus  de  4  milliards  de  blocs).  2. Rendre un tablespace OFFLINE est un moyen de  rendre  certaines  données  de  l’application  temporairement  inaccessibles.  À l’intérieur d’un tablespace.  Ces extensions peuvent être gérées "par le dictionnaire" ou "localement". une base de données contient souvent (vivement conseillé) deux tablespaces particuliers.  le  tablespace  est  appelé  "espace  disque  logique" ; dans  cet  ouvrage.  un  tablespace  traditionnel. Directives  Les principales directives sur l’organisation des tablespaces sont les suivantes :  q ne pas mettre de données utilisateur dans les tablespaces SYSTEM et SYSAUX ;  en plus des tablespaces SYSTEM et SYSAUX.  Avant  la  version  10. composés d’une ou plusieurs extensions (extent). créer au minimum ; un tablespace pour les segments d’annulation  (tablespace  d’annulation) ;  un  tablespace  pour  les  segments  temporaires  (tablespace  temporaire) ;  un  tablespace pour les tables ; un tablespace pour les index.  © ENI Editions .    Le tablespace SYSTEM doit toujours être ONLINE.  Ces  tablespaces  "techniques"  ne  peuvent  pas  contenir  de  données  utilisateur.  A  contrario.  Lorsqu’un tablespace SMALLFILE contient plusieurs fichiers de données.  La  majorité  des  opérations  d’administration  relatives  au  stockage  s’effectue  au  niveau  du  tablespace. Rendre un tablespace READ ONLY est un moyen simple de garantir que les données qu’il contient ne seront jamais modifiées.  peut  contenir  plusieurs fichiers de données (jusqu’à 1 022 fichiers).All rights reserved .  En version 10. En complément.  Le  tablespace  SYSAUX  contient  les  données  de  certains  composants  Oracle.  ces  données  étaient  stockées  dans  plusieurs tablespaces ; l’utilisation d’un tablespace unique permet donc réduire le nombre de tablespaces utilisés par  une  base  de  données.  apparu  en  version  10).

  En  clair. de répartir au mieux les entrées/sorties sur les différents disques.  Les recommandations d’Oracle vis­à­vis du stockage des fichiers de la base de données tiennent en un sigle : SAME  (Strip  And  Mirror  Everything).  Dans une telle configuration.  Dans  la  pratique.  Le tablespace  SYSAUX peut être utilisé pour vos besoins d’administration (création de tables particulières) ; dans ce  cas. utilisez un schéma séparé. créez des tablespaces de tables et d’index différents pour chaque application. l’idéal est d’avoir aussi les tablespaces SYSTEM. Le serveur Oracle idéal doit posséder  au  minimum  une  dizaine  de  disques. De plus.Algeria Educ . si le serveur possède plusieurs disques.  Des  variantes  sont  possibles  concernant  l’organisation  des  tablespaces.  q q q q q Pour  les  bases  de  données  volumineuses  et  les  serveurs  comprenant  plusieurs  disques.  vous  pouvez  utiliser  deux  tablespaces (ou plus) pour les tables et deux tablespaces (ou plus) pour les index et répartir les fichiers de données  des tablespaces sur les différents disques. dans ce cas.  .All rights reserved . et de dédier d’autres disques aux fichiers de journalisation. La règle fondamentale est donc d’utiliser  plusieurs  tablespaces  pour  séparer  au  maximum  les  différents  types  d’éléments  et  garantir  une  plus  grande  souplesse dans les opérations d’administration.  nous  disposons  bien  souvent  de  moyens  limités.  Si  la  base  de  données  abrite  plusieurs  applications.Le tablespace est l’unité de base de nombreuses tâches d’administration. SYSAUX. il sera possible de  répartir  les  fichiers  de  données  des  tablespaces  sur  les  différents  disques  pour  éviter  les  contentions  sur  les  entrées/sorties.  Utiliser plusieurs tablespaces permet :  q de séparer les données de l’application des données du dictionnaire Oracle ;  de séparer les données de plusieurs applications stockées dans la même base de données ;  de séparer le stockage des différents types d’objets ;  de répartir les entrées/sorties sur plusieurs disques ;  de réaliser des sauvegardes/restaurations partielles ;  de contrôler la disponibilité des données.  et  nous  essayons. annulation et temporaire sur des  disques différents.2- © ENI Editions .  Oracle  recommande  d’utiliser  une  technologie  de  type  RAID0+1  sur  chaque  axe : "Strip" (RAID0) pour les performances et "Mirror" (RAID1) pour la sécurité.

] [ clause_gestion_extension ] [ clause_gestion_segment ] [ MINIMUM EXTENT valeur [K|M] ] [ DEFAULT [ clause_compression ] [ clause_stockage ] ] [ BLOCKSIZE valeur [K] ] [ LOGGING | NOLOGGING ] [ FORCE LOGGING ] [ FLASHBACK { ON | OFF } ] [ ONLINE | OFFLINE ] .1- . ..All rights reserved .dbf’ SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE 800M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M SEGMENT SPACE MANAGEMENT AUTO.clause_gestion_extent EXTENT MANAGEMENT DICTIONARY | EXTENT MANAGEMENT LOCAL { AUTOALLOCATE | UNIFORM [ SIZE valeur [K|M|G|T] ] } .clause_auto_extension AUTOEXTEND OFF | AUTOEXTEND ON [ NEXT valeur [K|M|G|T] ] [ MAXSIZE UNLIMITED | valeur [K|M|G|T] ] .  Les options de l’ordre SQL CREATE TABLESPACE sont :  openmirrors.clause_gestion_segment SEGMENT SPACE MANAGEMENT { MANUAL | AUTO } .. Création d’un tablespace permanent  L’ordre SQL CREATE TABLESPACE permet de créer un tablespace permanent.spécification_fichier ’nom_fichier’ [ SIZE valeur [K|M|G|T] ] [REUSE] [ clause_auto_extension ] .Algeria Educ . avec une gestion locale uniforme des extensions :  CREATE TABLESPACE data DATAFILE ’e:\oradata\hermes\data01.com © ENI Editions . avec une gestion locale automatique des extensions :  CREATE TABLESPACE indx DATAFILE ’e:\oradata\hermes\indx01. Toutes les opérations relatives aux tablespaces et aux fichiers de données sont enregistrées dans le fichier  d’alerte de l’instance.  Syntaxe simplifiée  CREATE [ BIGFILE | SMALLFILE ] TABLESPACE nom DATAFILE spécification_fichier [..clause_compression COMPRESS [ FOR { ALL | DIRECT_LOAD } OPERATIONS ] | NOCOMPRESS Exemple :  Tablespace pour les tables.dbf’ SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE 800M EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO.Tablespace permanent  1.clause_stockage STORAGE ( [ INITIAL valeur [K|M] ] [ NEXT valeur [K|M] ] [ MINEXTENTS valeur ] [ MAXEXTENTS { valeur | UNLIMITED } ] [ PCTINCREASE valeur ] ) . Tablespace pour les index.

  La syntaxe est la suivante pour la spécification d’un fichier de données :  ’nom_fichier’ [ SIZE valeur [K|M|G|T] ] [REUSE] [ clause_auto_extend ] nom_fichier  Chemin d’accès complet au fichier de données.  SIZE  Taille initiale du fichier. Si le fichier est autoextensible.  il  est  préférable  de  ne  pas  sélectionner  cette  option  afin  d’éviter  d’écraser  par  mégarde  un  fichier  de  données utilisé par une autre base de données.  un  message  d’erreur  s’affiche  et  la  création  du  tablespace  est  stoppée.  DATAFILE spécification_fichier Cette  clause  permet  de  préciser  l’emplacement.  dans  la  même  situation.BIGFILE | SMALLFILE Cette clause indique si le tablespace est un tablespace BIGFILE ou SMALLFILE.  nom Nom du tablespace. Mo (symbole M). jusqu’à la taille limite autorisée pour le  fichier. La taille peut être omise uniquement si l’option REUSE est utilisée et que le fichier existe déjà.  un  message  d’erreur  se  produira  si  un  segment  stocké  dans  le  tablespace concerné n’a pas suffisamment d’espace lors de sa création initiale ou de son extension.  NEXT  Espace minimum alloué au fichier lors de l’extension. la taille minimum d’extension est spécifiée par l’option NEXT. Go (symbole G)  ou To (symbole T).  REUSE  Si  l’option  est  présente  et  que  le  fichier  existe  déjà.All rights reserved . Oracle utilise  le type par défaut défini au niveau de la base de données (voir la section Remarques sur les tablespaces BIGFILE).Algeria Educ .clause_auto_extend AUTOEXTEND OFF | AUTOEXTEND ON [ NEXT valeur [K|M|G|T] ] [ MAXSIZE UNLIMITED | valeur [K|M|G|T] ] AUTOEXTEND  Indique si le fichier de données peut (ON) ou non (OFF) grossir une fois que tout l’espace initialement alloué est utilisé.  Oracle  le  réutilise  et  l’écrase.  le  nom  et  la  taille  d’un  (ou  éventuellement  plusieurs)  fichier  de  données pour le tablespace. La taille réelle de  chaque extension sera égale à NEXT si la taille demandée est inférieure à NEXT et égale à la taille demandée dans le  cas contraire. Un seul fichier de données peut être spécifié si le tablespace est de type BIGFILE. normalement dans un répertoire de données (oradata) pour respecter  le standard OFA. Ko (symbole K). éventuellement non limitée (UNLIMITED).  Si  l’option  est  absente.2- © ENI Editions .  . Si cette clause est omise.  Si  le  fichier  de  données  n’est  pas  autoextensible.  Du  point  de  vue  de  la  sécurité.  Toutes les tailles peuvent être exprimées en octets (pas de symbole). Les tailles en To ne sont autorisées que pour les tablespaces BIGFILE.  Exemple avec un NEXT de 500K :  q taille demandée = 200 Ko : 500 Ko alloués au fichier ;  . Rendre le fichier  de données autoextensible permet de s’affranchir de ce genre de problème.  MAXSIZE  Taille maximale du fichier.

 Cette clause n’est valide que pour un tablespace  géré par le dictionnaire (un peu plus loin dans ce chapitre Organisation du stockage à l’intérieur d’un tablespace). Cette fonctionnalité. LOGGING  est  l’option  par  défaut.3- openmirrors. un tablespace peut être chiffré (clause ENCRYPTION).  EXTENT MANAGEMENT .All rights reserved . La valeur par défaut est la taille de bloc standard définie par le  paramètre DB_BLOCK_SIZE. 4.  Pour  plus  d’informations.  L’option NOLOGGING  est  ignorée  si  le  tablespace  ou  la  base  de  données  sont  dans  le  mode  FORCE LOGGING. Pour utiliser une taille de bloc non standard pour un tablespace. Les valeurs autorisées sont 2 Ko.. Le stockage des segments est détaillé au chapitre Gestion des tables et des index. NOLOGGING supprime la journalisation de certaines opérations  (insertion par chargement direct. vous obtiendrez l’erreur suivante   ORA-29339: la taille de bloc de tablespace nnnn ne correspond pas aux tailles de blocs configurées LOGGING | NOLOGGING Cette clause définit le mode de journalisation par défaut des segments qui seront stockés dans le tablespace et pour  lesquels aucun mode de journalisation n’aura été défini. 16 Ko et  32 Ko (certaines plates­formes sont plus restrictives).)  n’est  valide  que  pour  un  tablespace  géré par le dictionnaire ; la partie clause_compression est valide quel que soit le mode de gestion du tablespace.  n’est  pas  présentée  dans  cet  ouvrage..  L’organisation  du  stockage  dans  un  tablespace  est  présentée  au  point  Organisation  du  stockage  à  l’intérieur  d’un  tablespace. 8 Ko. qui nécessite  l’option  Advanced  Security.  FORCE LOGGING Cette clause place le tablespace dans le mode FORCE LOGGING. création de table à partir d’une requête.q taille demandée = 750 Ko : 750 Ko alloués au fichier. il est préférable d’avoir un  message d’erreur d’Oracle indiquant qu’il a atteint la limite spécifiée plutôt que d’obtenir un message d’erreur  d’Oracle répercutant un message d’erreur du système indiquant que le disque est plein.  DEFAULT [ COMPRESS | NOCOMPRESS ] clause_stockage Cette  clause  permet  de  définir  une  clause  de  stockage  par  défaut  pour  les  segments  qui  seront  créés  dans  le  tablespace  sans  clause  de  stockage..  La  partie  clause_stockage  (STORAGE.  SEGMENT SPACE MANAGEMENT { MANUAL | AUTO } Cette clause permet de définir le mode de gestion de l’espace libre des segments stockés dans le tablespace (voir le  chapitre Gestion des tables et des index). 16 ou  32).  consultez  la  © ENI Editions .  ONLINE | OFFLINE Cette clause indique si le tablespace est créé ONLINE (défaut) ou OFFLINE. Toutes les extensions allouées  dans le tablespace auront une taille multiple de la taille minimale. Dans la pratique.com .  Depuis la version 11.  BLOCKSIZE valeur [K] Cette clause définit la taille de bloc utilisée par le tablespace.  FLASHBACK { ON | OFF } Cette  clause  indique  si  le  tablespace  participe  ou  non  aux  opérations  de  FLASHBACK DATABASE  (voir  le  chapitre  Sauvegarde et récupération). vous devez configurer un  pool pour cette taille de bloc dans le Buffer Cache. 8. Cette clause n’est valide que pour un tablespace géré localement.Algeria Educ .  même  si  l’opération  concernée  est  effectuée  dans  le  mode  NOLOGGING. création ou reconstruction d’index). Cette clause permet de définir le mode de gestion des extensions à l’intérieur du tablespace (par le dictionnaire ou  localement).  Attention à l’option UNLIMITED. 4 Ko. L’organisation du stockage dans un tablespace est présentée plus loin.  MINIMUM EXTENT valeur [K|M] Cette clause permet de définir la taille minimale des extensions dans le tablespace. ce qui permet de garantir que toutes les modifications  seront  enregistrées  dans  les  fichiers  de  journalisation. grâce à un des paramètres DB_nK_ CACHE_SIZEn valant 2.. Le disque dur n’est pas "illimité". Si ce n’est pas le cas.

 Si cette clause est omise.dbf’ SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 500M . Le type par défaut actuel peut être consulté dans la vue DATABASE_PROPERTIES pour la propriété DEFAULT_TBS_TYPE :  SQL> SELECT property_value FROM database_properties 2 WHERE property_name = ’DEFAULT_TBS_TYPE’..  Depuis  la  version  10. Oracle stocke le segment dans le tablespace par défaut de l’utilisateur.documentation "Oracle® Database Advanced Security Administrator’s Guide". Dans la pratique.  certaines  opérations  peuvent  être  réalisées  directement  sur  le  tablespace  BIGFILE  (par  un  ordre SQL ALTER TABLESPACE) et non sur les fichiers de données. ce comportement par défaut ne pose pas de  problème car les utilisateurs non DBA n’ont  pas  (normalement ­ c’est le cas par défaut) de quotas sur le tablespace  SYSTEM.Algeria Educ .  Exemple de tablespace BIGFILE  CREATE BIGFILE TABLESPACE je_suis_gros DATAFILE ’e:\oradata\hermes\je_suis_gros. Les tablespaces BIGFILE sont plutôt destinés à être utilisés avec un gestionnaire de volumes logiques qui supporte le  striping ou le RAID. Tablespace permanent par défaut  Lorsqu’un  utilisateur  crée  un  segment  sans  préciser  de  tablespace  (voir  la  section  Organisation  du  stockage  à  l’intérieur d’un tablespace). et ne peuvent y créer de segments (voir le chapitre Gestion des utilisateurs et de leurs droits). Ce tablespace est affecté par défaut aux utilisateurs lors de leur création.  grâce  à  la  clause  DEFAULT TABLESPACE de l’ordre SQL CREATE DATABASE.All rights reserved .  dans  le  but  de  simplifier  la  gestion  des  utilisateurs.  Syntaxe  [ DEFAULT TABLESPACE nom [ DATAFILE spécification_fichier [. lorsque la clause  DEFAULT TABLESPACE  de  l’ordre  SQL  CREATE USER  est  omise.  Les tablespaces BIGFILE sont forcément gérés localement (EXTENT MANAGEMENT LOCAL) avec une gestion automatique  de l’espace dans les segments (SEGMENT SPACE MANAGEMENTAUTO). Remarques sur les tablespaces BIGFILE  Les tablespaces BIGFILE simplifient l’administration en offrant une transparence du fichier de données. Si ce n’est pas le cas.  2.  Cette  technique  n’empêche  pas  d’utiliser  d’autres  tablespaces permanents affectés spécifiquement à des utilisateurs pour des besoins particuliers.  Le  tablespace  permanent  par  défaut  peut  être  défini  lors  de  la  création  de  la  base  de  données. comme c’est le cas pour un tablespace SMALLFILE.] ] [ clause_extent_management ] ] Exemple :  DEFAULT TABLESPACE deftbs DATAFILE ’e:\oradata\hermes\deftbs01. soit ultérieurement grâce à l’ordre  SQL ALTER DATABASE. Comme nous  le  verrons  par  la  suite. PROPERTY_VALUE--------------------------------------------------SMALLFILE 3. c’est le tablespace SYSTEM qui  est affecté comme tablespace par défaut à l’utilisateur.  Ce tablespace par défaut est défini grâce à la clause DEFAULT TABLESPACE des ordres SQL CREATE USER et ALTER USER  (voir le chapitre Gestion des utilisateurs et de leurs droits).  Un type par défaut SMALLFILE ou BIGFILE peut être défini au niveau de la base de données. soit lors de la création de  la base de données (clause SET DEFAULT TABLESPACE  de  l’ordre SQL CREATE DATABASE ­ voir la section Création de la  base de données à la main du chapitre Création d’une nouvelle base de données)..  Syntaxe :  ALTER DATABASE SET DEFAULT { SMALLFILE | BIGFILE } TABLESPACE .  il  est  possible  de définir  un  tablespace  permanent par défaut.. il est possible de rencontrer des problèmes de performance avec l’exécution  en parallèle des requêtes ou la parallélisation des sauvegardes RMAN.dbf’ SIZE 10G.4- © ENI Editions .

com © ENI Editions . vous devez :  q créer un tablespace permanent. FLASHBACK ON / OFF.EXTENT MANAGEMENT LOCAL AUTOALLOCATE Notez que le tablespace ainsi défini est obligatoirement de type SMALLFILE.  Pour retrouver le nom du tablespace permanent par défaut. nom doit désigner un tablespace permanent qui existe déjà. grâce à l’ordre SQL CREATE TABLESPACE présenté précédemment ;  le définir comme tablespace permanent par défaut.  Lorsque cet ordre SQL est exécuté. notamment pour :  q le renommer ;  lui allouer de l’espace supplémentaire ;  déplacer le(s) fichier(s) de données ;  le passer OFFLINE / ONLINE ;  le passer READ ONLY / READ WRITE ;  modifier ces autres caractéristiques (LOGGING / NOLOGGING. Vue d’ensemble  Après création. tous les utilisateurs à qui l’ancien tablespace permanent par défaut était affecté  se voient automatiquement attribuer le nouveau.  Pour créer et définir un tablespace permanent par défaut après la création de la base de données.Algeria Educ . il est possible de modifier un tablespace.  openmirrors.All rights reserved . etc. PROPERTY_VALUE -----------------------------DEFTBS 4. FORCE LOGGING.  Il est possible d’allouer de l’espace supplémentaire à une base de données :  q en ajoutant un nouveau tablespace (avec un ou plusieurs fichiers de données) ;  en ajoutant un fichier de données à un tablespace existant ;  en augmentant la taille d’un fichier de données d’un tablespace.  q Syntaxe  ALTER DATABASE DEFAULT TABLESPACE nom . grâce à la clause DEFAULT TABLESPACE de l’ordre SQL ALTER DATABASE.  q q La  syntaxe  complète  de  l’ordre  SQL  ALTER TABLESPACE  est  "excessivement  longue" ; nous  n’allons  donc  pas  la  présenter dans son intégralité mais indiquer la syntaxe à utiliser pour différentes opérations.  q q q q q Ces opérations s’effectuent selon les cas avec l’ordre SQL ALTER TABLESPACE ou ALTER DATABASE. vous pouvez interroger la vue DATABASE_PROPERTIESpour  la propriété DEFAULT_PERMANENT_TABLESPACE :  SQL> SELECT property_value FROM database_properties 2 WHERE property_name = ’DEFAULT_PERMANENT_TABLESPACE’ .5- .). Modification d’un tablespace permanent  a.

  La spécification du fichier de données (spécification_fichier) est la même que lors de la création du tablespace  (section Création d’un tablespace permanent).. Exemple :  q Tout type de tablespace  ALTER DATABASE DATAFILE ’f:\oradata\hermes\data02.  Notez  que  dans  le  cas  du  tablespace OFFLINE. Renommer un tablespace  Renommer un tablespace s’effectue avec l’ordre SQL ALTER TABLESPACE.  c..  Syntaxe  ALTER DATABASE DATAFILE ’nom_complet’ | numéro_fichier [. mais ce  n’est  pas  le  cas ; Oracle  ne  cherche  pas  à  modifier  l’en­tête du fichier de données et enregistre juste le nouveau  nom dans le fichier de contrôle (l’en­tête sera modifié lorsque le tablespace repassera en lecture/écriture). Exemple :  ALTER TABLESPACE data ADD DATAFILE ’f:\oradata\hermes\data02.  Syntaxe  ALTER TABLESPACE ancien_nom RENAME TO nouveau_nom. La clause RESIZE donne la nouvelle taille souhaitée (à la hausse ou à la baisse) pour le fichier de données.dbf’ SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE 500M. Cette possibilité est apparue en version 10. Cette opération est interdite pour un tablespace BIGFILE.  d.. Ajouter un fichier de données à un tablespace  Ajouter un fichier de données à un tablespace s’effectue avec l’ordre SQL ALTER TABLESPACE.  Syntaxe  ALTER TABLESPACE nomADD DATAFILE spécification_fichier [. q Tablespace BIGFILE uniquement  ALTER TABLESPACE je_suis_gros RESIZE 1T. ainsi que les tablespaces OFFLINE. cette méthode est utilisée pour allouer un nouveau fichier de données sur un autre  disque  que  le  disque  actuellement  utilisé  par  le  tablespace  (sinon. ALTER TABLESPACE nom_tablespace_bigfile RESIZE valeur [K|M|G|T]. Les tablespaces SYSTEM et SYSAUX.dbf’ RESIZE 200M.]..  que  le  fichier  de  données  est  "hors  ligne"  (OFFLINE)..] RESIZE valeur [K|M|G|T]. Ajouter  un  fichier  de  données  à  un  tablespace  est  un  premier  moyen  pour  lui  allouer  de  l’espace  supplémentaire ; généralement. ou l’ordre SQL ALTER TABLESPACE  dans le cas d’un tablespace BIGFILE. Modifier la taille d’un fichier de données  Modifier la taille d’un fichier de données s’effectue avec l’ordre SQL ALTER DATABASE..  le  message  d’erreur  indique  en  fait.b.Algeria Educ .  .  ce  qui  empêche  Oracle  de  modifier  l’en­tête  du  fichier  de  données  pour  y  enregistrer  le  nouveau nom du tablespace.6- © ENI Editions . Un problème similaire pourrait se poser avec un tablespace en lecture seule. ne peuvent pas être renommés. Exemple :  ALTER TABLESPACE deftbs RENAME TO tbsdef.All rights reserved .  autant  modifier  la  taille  du  fichier  de  données  existant ­ voir ci­après).

All rights reserved . Désactiver l’extension automatique d’un fichier de données peut être envisagé (et même conseillé)  s’il n’y a plus d’espace disponible sur un disque. q Activation (ou modification) de la clause AUTOEXTEND  ALTER DATABASE DATAFILE ’e:\oradata\hermes\data01.. un message d’erreur est affiché et la taille du fichier est inchangée :  ORA-03297: le fichier contient des données utilisées au-delà de la valeur RESIZE requise e. ALTER TABLESPACE nom_tablespace_bigfile clause_auto_extension.  Syntaxe  ALTER DATABASE DATAFILE ’nom_complet’ | numéro_fichier[.  En  cas  de  tentative de cette sorte. de récupérer de l’espace inutilisé alloué au tablespace ;  dans le cas d’une augmentation.  Exemple :  q Désactivation de la clause AUTOEXTEND  ALTER DATABASE DATAFILE ’e:\oradata\hermes\data01.] clause_auto_extension.dbf’ AUTOEXTEND ON NEXT 200M MAXSIZE 800M.com © ENI Editions . Exemple :  q Désactivation  openmirrors. Activer l’extension automatique d’un fichier de données permet à ce dernier de grossir automatiquement en cas de  besoin  d’espace  supplémentaire  pour  un  segment  (nouveau  ou  déjà  présent)  dans  le  tablespace ; c’est  un  bon  moyen  pour  éviter  les  problèmes  et  ne  pas  avoir  à  augmenter  soi­même  la  taille  d’un  fichier  de  données  (voir  précédemment). Passer un tablespace OFFLINE / ONLINE  Passer un tablespace OFFLINE / ONLINE s’effectue avec l’ordre SQL ALTER TABLESPACE. Modifier l’extension automatique d’un fichier de données  Modifier l’extension automatique d’un fichier de données s’effectue avec l’ordre SQL ALTER DATABASE.7- .  Syntaxe  ALTER TABLESPACE nom ONLINE | OFFLINE. la taille du fichier de données ne peut pas descendre en dessous de la position de la  dernière  extension  occupée  par  un  segment  dans  le  tablespace  (visible  dans  la  vue  DBA_EXTENTS).Algeria Educ .Modifier la taille d’un fichier de données permet :  q dans le cas d’une diminution.  q Dans le cas d’une diminution. q Exemple avec un tablespace BIGFILE  ALTER TABLESPACE je_suis_gros AUTOEXTEND ON NEXT 1G MAXSIZE 100G. La spécification de la clause d’extension automatique (clause_auto_extension) est la même que lors de la création  du tablespace (section Création d’un tablespace permanent)..dbf’ AUTOEXTEND OFF. d’allouer de l’espace supplémentaire à un tablespace.  f. ou l’ordre SQL  ALTER TABLESPACE dans le cas d’un tablespace BIGFILE..

 copier ou déplacer le fichier :  SQL> HOST move e:\oradata\hermes\data01.  Le mode opératoire.  g.  déplacer  un  de  ces  fichiers  de  données)  ou  tout  simplement  pour  rendre  certaines  données temporairement inaccessibles. L’utilisation de l’ordre SQL ALTER DATABASE. q Activation  ALTER TABLESPACE data ONLINE.dbf > f:\oradata\hermes\data01. base  montée.  Dans  le  cas  de  l’utilisation  de  l’ordre  SQL  ALTER TABLESPACE. Cette possibilité est intéressante si le  tablespace  est  plein  et  qu’il  ne  reste  plus  d’espace  disponible  sur  le  disque  sur  lequel  il  est  actuellement  situé ; dans ce cas.Algeria Educ . Renommer ou déplacer un fichier de données  Renommer ou déplacer un fichier de données s’effectue avec l’ordre SQL ALTER TABLE.8- © ENI Editions . lors de l’utilisation de l’ordre SQL ALTER TABLESPACE.  Ces deux ordres SQL ne manipulent pas physiquement le fichier. Ils se contentent de mettre à jour le fichier  de contrôle.ALTER TABLESPACE data OFFLINE.SPACE ou ALTER DATABASE. avant d’exécuter l’ordre SQL. Le fichier de données doit être renommé/copié /déplacé à l’aide d’une commande du système  d’exploitation. le tablespace sera dans l’état où il était lors de l’arrêt. est nécessaire pour déplacer un fichier de données du tablespace SYSTEM puisque ce dernier ne peut pas  être mis OFFLINE. . Désactiver  un  tablespace  peut  être  nécessaire  pour  effectuer  certaines  opérations  d’administration  sur  le  tablespace  (par  exemple.  Il existe des options sur le OFFLINE qui doivent être utilisées si le tablespace à désactiver est endommagé (voir le  chapitre Sauvegarde et récupération). il est envisageable de déplacer le fichier de données du tablespace vers un disque où il reste de  l’espace disponible puis de faire grossir le fichier (ou l’autoriser à grossir).  la  base  de  données  doit  être  ouverte  mais  le  tablespace  concerné  doit  être  OFFLINE.  Le  statut  d’un  tablespace  (OFFLINE / ONLINE) est conservé lors de l’arrêt ; au  prochain  démarrage  de  la  base  de  données.All rights reserved .  Dans  le  cas  de  l’utilisation  de  l’ordre  SQL  ALTER DATABASE.dbf q Exécuter l’ordre SQL ALTER TABLESPACE :  .  Le  tablespace  SYSTEM  ne  peut  pas  être  mis  OFFLINE ; un  message  d’erreur  s’affiche  en  cas  de  tentative.ALTER TABLESPACE ALTER TABLESPACE nom RENAME DATAFILE ’ancien_nom_complet’ TO ’nouveau_nom_complet’.  le  tablespace  concerné doit être OFFLINE ou la base de données en état MOUNT. est le suivant :  q Se connecter en tant que DBA :  SQL> CONNECT system/xxxx q Passer le tablespace OFFLINE :  SQL> ALTER TABLESPACE data OFFLINE.ALTER DATABASE ALTER DATABASE RENAME FILE ’ancien_nom_complet’ TO ’nouveau_nom_complet’. "Renommer" un fichier de données est surtout utilisé pour déplacer le fichier. q Par une commande du système d’exploitation.  Syntaxe  . renommer.  Le  tablespace SYSAUX peut être passé OFFLINE mais certaines fonctionnalités risquent de ne plus fonctionner.

 copier ou déplacer le fichier :  SQL> HOST move e:\oradata\hermes\system01. Exemple  ALTER TABLESPACE data DROP DATAFILE ’E:\ORADATA\HERMES\DATA02. q Repasser le tablespace ONLINE :  SQL> ALTER TABLESPACE data ONLINE. h. Supprimer un fichier de données  Supprimer un fichier de données d’un tablespace s’effectue avec l’ordre SQL ALTER TABLESPACE.Les restrictions suivantes s’appliquent :  q Le fichier de données doit être vide (ne doit contenir aucune extension) ;  Le fichier de données ne peut pas être le premier fichier créé pour le tablespace ;  Le fichier de données ne doit pas appartenir à un tablespace en lecture seule ;  Le fichier de données doit être en ligne (ONLINE) ;  Le fichier ne doit pas appartenir au tablespace SYSTEM.dbf’.Algeria Educ . Le fichier de données est physiquement supprimé par Oracle.DBF’.SQL> ALTER TABLESPACE data 2 RENAME DATAFILE ’e:\oradata\hermes\data01. est le suivant :  q Se connecter AS SYSDBA :  SQL> CONNECT / AS SYSDBA q Passer la base de données en état MOUNT :  SQL> SHUTDOWN IMMEDIATE SQL> STARTUP MOUNT q Par une commande du système d’exploitation.  q q q q i.dbf’. q Ouvrir la base de données :  SQL> ALTER DATABASE OPEN. Le mode opératoire.dbf q Exécuter l’ordre SQL ALTER DATABASE :  SQL> ALTER DATABASE 2 RENAME FILE ’e:\oradata\hermes\system01. lors de l’utilisation de l’ordre SQL ALTER DATABASE.dbf’ 3 TO ’f:\oradata\HErmes\data01.com © ENI Editions .dbf’ 3 TO ’f:\oradata\hermes\system01. renommer.  Syntaxe  ALTER TABLESPACE nom DROP DATAFILE ’nom_complet’ | numéro_fichier.dbf > f:\oradata\hermes\system01.9- . Autres opérations  openmirrors.All rights reserved .

 Si le tablespace n’est pas vide et que l’option n’est pas utilisée.Il est recommandé de  passer le tablespace OFFLINE avant de le supprimer. Un message  est écrit dans le fichier d’alerte de l’instance pour chaque fichier physique supprimé par Oracle. .10 - © ENI Editions . C’est  un  ordre  DDL  (Data  Definition  Language) : il  n’y  a  pas  de  ROLLBACK.  de  supprimer  les  contraintes  d’intégrité  référentielle  définies  sur  des  tables  hors  du  tablespace et qui référencent des tables à l’intérieur du tablespace. l’erreur ORA-01549 est retournée :  ORA-01549: le tablespace n’est pas vide .    Sinon.READ ONLY / READ WRITE ALTER TABLESPACE nom { READ ONLY | READ WRITE } . n’est pas récupérable. Suppression d’un tablespace permanent  L’ordre SQL DROP TABLESPACE permet de supprimer un tablespace permanent. .All rights reserved .Algeria Educ . ils ne sont pas supprimés. .  Le tablespace  SYSTEM et le tablespace permanent par défaut ne peuvent pas être supprimés. Exemple :  DROP TABLESPACE data INCLUDING CONTENTS AND DATAFILES . l’erreur ORA-02449 est retournée :  ORA-02449: clés uniques/primaires de la table référencées par des clés étrangères<$I[]ORA-02449> . utiliser l’option INCLUDING CONTENTS AND DATAFILES Cette option de la clause précédente permet en plus.  Syntaxe  DROP TABLESPACE nom [ INCLUDING CONTENTS [ AND DATAFILES ] [ CASCADE CONSTRAINTS ] ].  Les options de l’ordre SQL DROP TABLESPACE sont :  INCLUDING CONTENTS Cette clause est nécessaire si le tablespace n’est pas vide.  La  seule  solution  est  de  repartir  d’une  sauvegarde ; le fichier physique. 5. pour forcer la suppression préalable des segments qui y  sont stockés.FORCE LOGGING ALTER TABLESPACE nom [NO] FORCE LOGGING .L’ordre SQL ALTER TABLESPACE peut être utilisé pour modifier les caractéristiques du tablespace :  .LOGGING / NOLOGGING ALTER TABLESPACE nom LOGGING | NOLOGGING . de supprimer les fichiers physiques du tablespace. Si de telles contraintes existent et que l’option  n’est pas utilisée. même s’il n’est pas supprimé.FLASHBACK ON / OFF ALTER TABLESPACE nom FLASHBACK ON | OFF . CASCADE CONSTRAINTS Cette  clause  permet  en  plus.

 et ainsi de suite.Algeria Educ .com © ENI Editions .  les  informations  relatives  à  la  gestion  de  l’espace  (extensions  libres/allouées) sont enregistrées dans le dictionnaire de données. Toutes les extensions allouées à un  segment  sont  dans  le  tablespace  de  création  du  segment. le premier étant réservé à l’en­tête du segment  (ne  contient  pas  de  données  utiles  mais  la  carte  des  extensions  allouées  au  segment).  Des  créations/suppressions fréquentes de segments dans un tablespace peuvent donc conduire à une fragmentation de  l’espace disponible dans ce tablespace.  mais  pas  forcément  côte  à  côte. il existe quatre types principaux de segments :  q les segments de table : espace occupé par les tables ;  les segments d’index : espace occupé par les index ;  les segments d’annulation : espace temporaire utilisé pour stocker les informations permettant d’annuler une  transaction ;  les segments temporaires : espace temporaire utilisé notamment lors d’un tri.  Dans  un  tablespace  "géré  par  le  dictionnaire".  openmirrors.  Lorsqu’un segment est créé dans un tablespace. Principes  L’organisation du stockage à l’intérieur d’un tablespace peut être résumée par le schéma ci­après.  les  extensions  qu’il  occupe  sont  libérées  et  rendues  disponibles  pour  d’autres  segments.  Il  en  est  de  même  pour  chaque fichier de données du tablespace ; le premier bloc est un bloc d’en­tête (nous verrons bientôt que l’en­tête du  fichier peut contenir davantage de blocs).    À l’intérieur d’un tablespace.  Un tablespace peut être "géré par le dictionnaire" ou "géré localement".  ni  forcément  dans  le  même  fichier  de  données  (si  le  tablespace  est  composé  de  plusieurs  fichiers  de  données).  Nous verrons au chapitre Gestion des tables et des index qu’il est possible.  Lorsque  l’espace  initialement  alloué  est  plein  (suite  à  l’insertion  de  données  par  exemple). Oracle alloue une nouvelle extension au segment.  Pour mémoire.  Lorsqu’un  segment  est  supprimé. sous certaines conditions.All rights reserved .1- . Oracle lui alloue une (ou plusieurs) extension(s) dans un des fichiers  de  données  du  tablespace. le stockage est organisé en segments contenant une ou plusieurs extensions (extents).  une extension étant un ensemble de blocs Oracle contigus. de libérer des  extensions sans supprimer le segment.Organisation du stockage à l’intérieur d’un tablespace  1.  q q q La première extension d’un segment contient au minium deux blocs.

 les informations relatives à la gestion de l’espace (extensions libres/allouées)  sont  enregistrées  dans  une  bitmap.  q Par  défaut.  Les  tablespaces  gérés  localement  sont  apparus  dans  Oracle8i.  2.  gérés localement (sauf le tablespace SYSTEM qui est.  Oracle propose deux variantes pour les tablespaces gérés localement :  q Une gestion dite "automatique" : la taille des extensions est déterminée automatiquement par Oracle. C’est le seul type de tablespace  qui sera étudié dans cet ouvrage. géré par le dictionnaire ­ voir plus loin).  . Spécifier le stockage d’un segment  Les clauses TABLESPACE et STORAGE peuvent être utilisées dans les ordres de création des segments pour spécifier le  stockage du segment.  un  tablespace  permanent  géré  localement  est  en  gestion  automatique  des  extensions ; la  gestion  uniforme doit être spécifiée.All rights reserved .  Un  tablespace  temporaire  géré  localement  est  obligatoirement  en  gestion  uniforme  des  extensions  (détaillé  ultérieurement). Les options de la clause STORAGE sont :  INITIAL  Taille de la première extension allouée.  les  tablespaces  sont. par défaut. intitule VARCHAR2(20) ) TABLESPACE data STORAGE (INITIAL 500K) .  Depuis  Oracle9i.  Syntaxe de la clause TABLESPACE  TABLESPACE nom_tablespace Syntaxe de la clause STORAGE  STORAGE ( [ [ [ [ [ INITIAL valeur [K|M] ] NEXT valeur [K|M] ] MINEXTENTS valeur ] MAXEXTENTS { valeur | UNLIMITED } ] PCTINCREASE valeur ] ) Exemple pour une table :  CREATE TABLE categorie ( identifiant NUMBER(6).  égale  à  une  valeur  définie  lors  de  la  création du tablespace.Dans un tablespace "géré localement".  par  défaut.2- © ENI Editions .  NEXT  Taille de la deuxième extension allouée. Il est fort probable que les tablespaces gérés par le dictionnaire ne soient  plus supportés par Oracle dans une prochaine version.  Une  gestion  dite  "uniforme" : la  taille  des  extensions  est  uniforme.  MINEXTENTS  Nombre initial d’extension(s) allouée(s).  Oracle recommande fortement d’utiliser des tablespaces gérés localement.Algeria Educ .  dans  l’en­tête  de  chaque  fichier  de  données  du  tablespace.  Chaque  bit  de  la  bitmap correspond à une extension et vaut 0 ou 1 selon que l’extension est libre ou allouée.

  à  partir  de  la  troisième. Dans le cas d’un tablespace géré localement.  AUTOALLOCATE  Indique que les extensions sont automatiquement gérées par Oracle.dbf’ SIZE 10M EXTENT MANAGEMENT LOCAL AUTOALLOCATE. Des clauses DEFAULT STORAGE et MINIMUM EXTENT peuvent être  indiquées en complément. le segment hérite de la clause DEFAULT STORAGE éventuellement  définie  au  niveau  du  tablespace.  La manière dont la clause STORAGE est utilisée par Oracle dépend du mode de gestion des extensions à l’intérieur du  tablespace. seule l’option INITIAL a réellement  de l’importance puisqu’elle indique à Oracle la taille initiale souhaitée pour le segment. Dans la pratique.  3.  UNIFORM  openmirrors. la taille des extensions est éventuellement ajustée pour devenir un multiple de cette  taille minimum.  La clause STORAGE a vraiment beaucoup d’importance pour le stockage des segments dans un tablespace géré par le  dictionnaire. q Tablespace géré localement avec des extensions gérées par Oracle  CREATE TABLESPACE tbs_local_auto DATAFILE ’d:\oradata\hermes\tbs_local_auto. Spécifier le mode de gestion d’un tablespace  La  clause  EXTENT MANAGEMENT  de  l’ordre  SQL  CREATE TABLESPACE  permet  de  spécifier  le  mode  de  gestion  d’un  tablespace. la  clause STORAGE a beaucoup moins d’importance car.  par  rapport  à  la  précédente.  LOCAL  Indique que le tablespace est géré localement. PCTINCREASE = 50).MAXEXTENTS  Nombre maximal d’extensions allouables.com © ENI Editions . Les options de la clause EXTENT MANAGEMENT sont :  DICTIONARY  Indique que le tablespace est géré par le dictionnaire. puisqu’elle permet de spécifier précisément le stockage du segment.  PCTINCREASE  Pourcentage  d’augmentation  (0  à  100)  de  la  taille  des  extensions.  Syntaxe :  EXTENT MANAGEMENT DICTIONARY | LOCAL [ AUTOALLOCATE | UNIFORM [ SIZE valeur [K|M] ] ] Exemple :  q Tablespace géré localement avec des extensions uniformes  CREATE TABLESPACE tbs_local_uniform DATAFILE ’e:\oradata\hermes\tbs_local_uniform. Si une clause  MINIMUM EXTENT est  définie au niveau du tablespace.dbf’ SIZE 10M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K.All rights reserved . le tablespace impose des contraintes sur la  taille des extensions (taille choisie par Oracle ou taille uniforme). Les clauses DEFAULT STORAGE et MINIMUM EXTENT sont interdites.Algeria Educ . NEXT = 5 blocs Oracle.  Si  cette  dernière  est  elle­même  absente. En cas d’absence de clause STORAGE. de par sa définition.3- .  Oracle  utilise  des  valeurs  par  défaut  (INITIAL = 5 blocs Oracle.

 ce qui permet de stocker une bitmap plus grande et donc  de gérer d’entrée de jeu.  Par  défaut  (clause  EXTENT MANAGEMENT  absente). ou d’effectuer une migration de  tablespace  géré  par  le  dictionnaire  en  tablespace  géré  localement  (et  réciproquement).Indique que les extensions ont une taille uniforme définie par la clause SIZE.Algeria Educ .  1  Mo.All rights reserved .  le  résultat  obtenu  est  meilleur  en  créant  un  nouveau  tablespace  géré  localement  et  en  transférant  les  segments  de  l’ancien tablespace dans le nouveau ; par contre.  La  taille  peut  être  donnée  en  octets  (pas  de  symbole). il faut en tenir compte dans la spécification de  la clause SIZE.  64  Mo)  et  tente  d’allouer  côté  à  côte  des  extensions  de  même  taille.  un  tablespace  temporaire  géré  localement  est  obligatoirement  en  gestion  uniforme des extensions (UNIFORM).  Dans  ce  dernier  cas.  Compte  tenu  de  ce  mode  de  gestion.  Lorsqu’un  tablespace  permanent  est  géré  localement. 64 Ko  pour un tablespace AUTOALLOCATE).  par  défaut. l’opération est plus longue.  4. La taille du fichier de données doit donc être au minimum égale à trois  blocs plus la taille d’une extension (valeur explicite ou par défaut de la clause SIZE pour un tablespace UNIFORM. Si la taille initiale du fichier de données est supérieure à 64 Ko plus la taille d’une  extension. MINEXTENTS  et PCTINCREASE de la clause  STORAGE :  q si MINEXTENTS = 1 alors INITIAL (c’est le cas le plus fréquent) ;  . en Ko (symbole K) ou en Mo (symbole M).  Le  package  DBMS_SPACE_ADMIN  <propose  différentes  procédures  qui  permettent  de  diagnostiquer  et  réparer  les  tablespaces gérés localement (en cas d’endommagement de la bitmap par exemple).  La taille initiale du segment est calculée à l’aide des valeurs  INITIAL. Gestion des extensions à l’intérieur d’un tablespace géré localement  Dans  le  cas  d’une  gestion  automatique  des  extensions. etc.  Cette  technique  permet  de  limiter  les  risques  de  fragmentation  de  l’espace  disponible : si  un  segment  contenant  de  nombreuses  extensions  est  supprimé. avec  une  gestion  automatique  des  extensions. un plus grand nombre d’extensions. Si la clause SIZE n’est pas spécifiée.  q q L’algorithme utilisé par Oracle pour calculer la taille des extensions dans un tablespace géré localement.  SIZE  Spécifie  la  taille  des  extensions  pour  les  tablespaces  LOCAL UNIFORM.  activée  (clause  SEGMENT SPACE MANAGEMENT AUTO  implicite  dans  l’ordre  SQL  CREATE TABLESPACE) ; nous étudierons ce mode de gestion plus en détail dans le chapitre Gestion des tables et des index.  la  gestion  automatique  de  l’espace  libre  à  l’intérieur  des  segments  est.  un  tablespace  permanent  est  géré  localement  avec  une  gestion  automatique des extensions (AUTOALLOCATE).  l’espace  libéré  peut  être  réutilisé de différentes manières.  les  extensions  doivent  contenir  au  minimum  cinq  blocs ; dans  le  cas  d’un  tablespace géré localement avec une gestion uniforme des extensions.  Les  valeurs  indiquées  ici  sont  des  valeurs  constatées pour la création d’une table dans un tablespace vide.La taille d’extension initialement choisie pour un segment dépend de la taille initiale  du segment :  q 64 Ko pour un segment de moins de 1 Mo ;  1 Mo pour un segment de moins de 64 Mo ;  8 Mo pour un segment de moins de 1 024 Mo.  en  nombre  suffisant pour occuper de l’espace potentiellement utilisable pour une extension de taille supérieure (16 extensions  de  64  Ko  =   une  extension  potentielle  de  1  Mo). la  taille par défaut est 1 Mo.4- © ENI Editions . un en­tête de 64 Ko est en fait alloué au fichier.  Comme  nous  le  verrons  ultérieurement.  Oracle  utilise  un  petit  nombre  de  tailles  d’extension  différentes  (64  Ko. sous peine d’obtenir l’erreur suivante :  ORA-03249: UNIFORM SIZE pour le tablespace géré par un espace de segment AUTO doit avoir au moins 5 blocs L’en­tête  de  chaque  fichier  de  données  d’un  tablespace  géré  localement  utilise  au  minimum  trois  blocs  (contre  un  pour un tablespace géré par le dictionnaire). NEXT.  n’est  pas  documenté.  8  Mo.  Dans le cas d’une gestion uniforme des extensions toutes les extensions ont la même taille définie par l’option SIZE  de la clause EXTENT MANAGEMENT (1 Mo par défaut).

 etc.8  arrondi  à  l’entier  supérieur  =   8 extensions  de  64  Ko  pour  la  table  (une  taille  d’extension de 64 Ko est choisie par Oracle car la taille initiale du segment est inférieure à 1 Mo).  MINEXTENTS  et  MAXEXTENTS  ne  sont  pas  d’une  grande  utilité  pour  un  tablespace géré localement.dbf’ SIZE 10M 3 EXTENT MANAGEMENT LOCAL AUTOALLOCATE. le fonctionnement est le suivant  lorsqu’une  taille  initiale  de  64  Ko  a  été  utilisée : tant  que  le  segment  a  moins  de  16  extensions.  Par  ailleurs.  PCTINCREASE.  La valeur calculée pour la taille initiale devient la nouvelle valeur INITIAL (même si l’espace réellement alloué est  supérieur.création de trois tables : deux "petites" et une "grosse" SQL> CREATE TABLE table200k(c NUMBER) 2 TABLESPACE test 3 STORAGE(INITIAL 200K).  Exemple :  SQL> -.  Lorsque  l’espace  initialement  alloué  au  segment  est  plein. Table créée.  Oracle  alloue  (400+100)/64  =   7.  Oracle  tente  d’allouer  consécutivement  des  extensions  de  même  taille. toutes les extensions complémentaires allouées au segment  ont la même taille.All rights reserved .  Si  le  segment  est  stocké  dans  un  tablespace  AUTOALLOCATE.  Si  la  même  table  est  créée  dans  un  tablespace  géré  localement. compte tenu de l’arrondi sur le nombre d’extensions).  jusqu’à  obtenir  un  nombre  d’extensions consécutives occupant un espace égal à la taille d’extension supérieure. Tablespace créé.  puis  il  passe  à  des  extensions  de  1  Mo.  s s s Conclusion : les  options  NEXT.  Les informations enregistrées dans le dictionnaire de données (vue DBA_TABLES et consoeurs) sont les suivantes :  s Les valeurs MINEXTENTS et MAXEXTENTS sont ignorées et forcées respectivement à 1 (même si plusieurs extensions  ont été allouées au segment) et UNLIMITED..  Oracle  alloue  des  extensions  de  64 Ko.  Oracle  alloue  alors  une  ou  plusieurs  extensions  (sans  tenir  compte  du  MINEXTENTS  initial). Oracle alloue (400+100)/128 = 3.  Pour un tablespace AUTOALLOCATE.  Pour  un  tablespace UNIFORM. NEXT est mis égal à la taille des extensions du tablespace (option SIZE de la clause  UNIFORM du tablespace) et PCTINCREASE est mis égal à 0 (toutes les extensions ont la même taille).  avec  une  gestion  automatique  des  extensions.q si MINEXTENTS = 2 alors INITIAL+NEXT ;  si MINEXTENTS = 3 alors INITIAL+NEXT+NEXT*(1+PCTINCREASE/100).  des  extensions  supplémentaires  sont  allouées  au  segment. les valeurs NEXT et PCTINCREASE sont ignorées et mises à NULL (c’est Oracle qui  décide).  À  titre  d’exemple.5 arrondi à l’entier supérieur = 4 extensions de 128 Ko pour la table.  jusqu’à  64  Mo.  Si le segment est stocké dans un tablespace UNIFORM. SQL> CREATE TABLE tablexk(c NUMBER) sans clause STORAGE openmirrors. Visiblement. SQL> -.  c’est  Oracle  qui  détermine  la  taille  des  nouvelles  extensions allouées au segment.  supposons  que  la  table  suivante  soit  créée  dans  un  tablespace  géré  localement  avec  des  extensions uniformes de 128 Ko :  CREATE TABLE adherent (. telle qu’enregistrée dans le dictionnaire de données.  q La valeur calculée devient la nouvelle valeur INITIAL.Algeria Educ .  de  taille  uniforme  (cas  UNIFORM) ou de taille déterminée en interne (cas AUTOALLOCATE).création d’un tablespace géré localement avec SQL> -.com © ENI Editions ..  puis  à  des  extensions  de  8 Mo. pour obtenir une taille initiale égale ou supérieure à  la taille calculée précédemment.une gestion automatique des extensions SQL> CREATE TABLESPACE test 2 DATAFILE ’e:\oradata\hermes\test01.5- . selon un algorithme non documenté.) TABLESPACE tbs_local_uniform STORAGE (INITIAL 400K NEXT 100K PCTINCREASE 0 MINEXTENTS 2).

.  La syntaxe suivante doit être utilisée :  CREATE TABLESPACE sysaux .  et  dans  ce  cas.2 TABLESPACE test.  q q Dans l’ordre  SQL CREATE DATABASE.  ce  qui  lui  permet  d’avoir  un  total  de  16  extensions  de  64  Ko  consécutives  (soit  potentiellement  une  extension  de  1  Mo  en  cas  de  libération  de  ces  extensions). Cas des tablespaces SYSTEM et SYSAUX  Depuis  Oracle9i  release  2  (version  9.  Oracle a laissé de l’espace libre entre les petites tables et la grosse table : 704 Ko. Créer un  tablespace SYSTEM géré localement a les conséquences (positives) suivantes :  q Tous les tablespaces doivent être gérés localement (conseillé par Oracle) ;  Un tablespace temporaire par défaut doit être créé dès la création de la base (conseillé par Oracle) ;  Si  la  gestion  automatique  des  segments  d’annulation  est  activée  (conseillé  par  Oracle).  q 5. il est géré par le dictionnaire.  le  tablespace SYSTEM  peut  être  géré  localement.All rights reserved .Algeria Educ .. soit 11 extensions de 64  Ko.  forcément  avec une gestion automatique des extensions (EXTENT MANAGEMENT LOCAL AUTOALLOCATE) et une gestion manuelle de  l’espace dans les segments (SEGMENT SPACE MANAGEMENT MANUAL)..supervision du stockage dans le tablespace SQL> @info_stockage_tablespace BLOCK_ID EXTENT_ID SEGMENT_NAME BLOCKS TAILLE_KO ---------. SQL> -. Table créée.2)..dbf’ SIZE 200M AUTOEXTEND ON NEXT 10M EXTENT MANAGEMENT LOCAL .  En cas de mise à niveau d’une base de données.  un  tablespace  d’annulation doit être créé dès la création de la base de données (conseillé par Oracle). Table créée. DATAFILE ’e:\oradata\hermes\system01.6- © ENI Editions .  la  clause EXTENT MANAGEMENT LOCALpermet de spécifier que le tablespace SYSTEM  est géré localement :  CREATE DATABASE hermes . Par défaut.---------.---------9 0 TABLE200K 8 64 17 1 TABLE200K 8 64 25 2 TABLE200K 8 64 33 3 TABLE200K 8 64 41 0 TABLEXK 8 64 49 *** LIBRE *** 88 704 137 0 TABLE2M 128 1024 265 1 TABLE2M 128 1024 393 *** LIBRE *** 888 7104 Cet exemple illustre les points suivants:  q Oracle a choisi des extensions de 64 Ko pour les "petites" tables et des extensions de 1 Mo pour la "grosse"  table. Le  tablespace  SYSAUX  est  obligatoirement  géré  localement  avec  une  gestion  automatique  des  extensions  (EXTENT MANAGEMENT LOCAL AUTOALLOCATE)  et  une  gestion  automatique  de  l’espace  dans  les  segments  (SEGMENT SPACE MANAGEMENT AUTO) ; il n’y a rien à spécifier lors de la création de la base de données. le tablespace SYSAUX est créé par un ordre SQL CREATE TABLESPACE.  Cet  espace  est  plutôt  réservé  à  des  extensions  de  64  Ko.--------------.---------. SQL> CREATE TABLE table2M(c NUMBER) 2 TABLESPACE test 3 STORAGE(INITIAL 2M).

openmirrors.7- .All rights reserved .Algeria Educ .com © ENI Editions .DATAFILE spécification_fichier EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO.

  Si le tri ne tient pas en mémoire. les différents tablespaces temporaires du groupe pourront être utilisés par les différents  processus serveur qui traitent la requête.1- .All rights reserved .. un seul segment de tri est créé.  Dans  le  cas  de  l’utilisation  d’un  tablespace temporaire.  ce  qui  posait  parfois  des  problèmes de contentions au niveau des entrées/sorties. il y a moins d’allocation dynamique d’extensions.  © ENI Editions . Cela ne présente réellement un intérêt du point de vue des performances  que si les fichiers de données des différents tablespaces temporaires sont stockés sur des disques différents. MINUS) ;  CREATE INDEX ;  calcul des statistiques ;  jointures par tri­fusion (sort merge join).  Depuis  la  version  10.  Les  tablespaces  temporaires  sont  aussi  utilisés  pour  le  stockage  des  tables  temporaires  créées  par  l’ordre  SQL  CREATE GLOBAL TEMPORARY TABLE. plusieurs processus serveur traitaient la requête en  parallèle  et  chaque  processus  pouvait  solliciter  un  accès  au  tablespace  temporaire.Tablespace temporaire  1.  et de préférence un tablespace temporaire géré localement.  q q q q q q Utiliser  un  tablespace  permanent  comme  tablespace  temporaire  est  possible  (c’est  ce  qui  passe  par  défaut  avec  le  tablespace  SYSTEM)  mais  ce  n’est  pas  conseillé. par le premier tri. Il est possible de créer un tablespace temporaire géré  par le dictionnaire mais les performances sont alors limitées et ce choix est déprécié par Oracle ; c’est pourquoi nous  ne l’évoquerons pas davantage. Rôle du tablespace temporaire  Lorsqu’une requête nécessite un tri (clause ORDER BY par exemple). dans la  PGA du processus serveur qui exécute la requête.  Oracle recommande donc de créer un tablespace dédié. une requête ne pouvait utiliser qu’un seul tablespace temporaire. de type TEMPORARY.  Un  segment  temporaire  peut  être  créé  dans  n’importe  quel  tablespace  mais  ce  n’est  pas  souhaitable  pour  les  performances.  En  effet.. INTERSECT..  il  est  possible  de  définir  des  groupes  de  tablespaces  temporaires.  Les requêtes qui peuvent demander un tri sont les suivantes :  q SELECT .. ce qui posait des problèmes de  performance si la requête s’exécutait en parallèle.  les  segments  temporaires  sont  alloués  et  libérés  à  chaque  tri ; c’est  mauvais  pour  les  performances  et  cela  risque  de  fragmenter  l’espace  disponible  du  tablespace.  dans  un  tablespace  permanent. Oracle tente de faire le tri en mémoire. pour stocker les segments temporaires.  Dans  le  cas  de  l’exécution  d’une requête en parallèle. ;  requêtes ensemblistes (UNION. Groupe de tablespaces temporaires  Avant la version 10. et les performances s’en  trouvent optimisées. Oracle le découpe en morceaux et trie chaque morceau individuellement en stockant  des résultats intermédiaires sur disque dans des segments temporaires.  notamment  du  point  de  vue  des  performances.  Le segment temporaire peut être partagé par plusieurs tris (mais pas les extensions) et il est libéré uniquement lors  de l’arrêt de l’instance ; de cette manière.  Un tablespace permanent géré localement ne peut pas être utilisé comme tablespace temporaire ; ce n’est  pas le cas d’un tablespace permanent géré par le dictionnaire. et réutilisé par les tris suivants.Algeria Educ . ORDER BY ;  SELECT ... GROUP BY ;  SELECT DISTINCT .  2. Dans ce cas.

 Les  clauses EXTENT MANAGEMENT LOCAL et UNIFORM sont donc optionnelles.dbf’ SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1G .  Un  tablespace  temporaire  géré  localement  utilise  obligatoirement  la  taille  de  bloc  standard ; il  n’est  pas  possible d’employer une autre taille de bloc.com .  Si  cette  clause  est  omise.  La  clause  SIZE  peut  être  utilisée  pour  spécifier une autre taille ; dans ce cas.  grâce  à  la  clause  TEMPORARY TABLESPACE des ordres SQL CREATE USER et ALTER USER (voir le chapitre Gestion des utilisateurs et de leurs  droits).  lorsque  le  dernier  tablespace  temporaire est retiré du groupe.  Les fichiers de données d’un tablespace temporaire géré localement sont spécifiés par le mot clé TEMPFILE et  non DATAFILE.  L’espace  de  nommage  des  groupes  de  tablespaces  temporaires  est  d’ailleurs  celui  des  tablespaces ; un  groupe de tablespace temporaires ne peut pas porter le même nom qu’un tablespace.  4.  Vous pouvez néanmoins noter les points suivants :  q Un tablespace temporaire géré localement peut être un tablespace BIGFILE ; dans ce cas. le tablespace temporaire n’appartient à aucun groupe.Le  nom  d’un groupe de tablespaces temporaires peut être utilisé partout où un nom de tablespace temporaire est  employé. Par défaut..2© ENI Editions .spécification_fichier ’nom_fichier’ [ SIZE valeur [K|M|G|T] ] [REUSE] [ clause_auto_extend ] .  3. Création d’un tablespace temporaire géré localement  L’ordre SQL CREATE TEMPORARY TABLESPACEpermet de créer un tablespace temporaire géré localement.  Un tablespace temporaire géré localement est obligatoirement ONLINE.clause_auto_extend AUTOEXTEND { OFF | ON [ NEXT valeur [K|M|G|T] ] [ MAXSIZE { UNLIMITED | valeur [K|M|G|T] } ] } Exemple :  CREATE TEMPORARY TABLESPACE tempo TEMPFILE ’e:\oradata\hermes\tempo01.] [ EXTENT MANAGEMENT LOCAL ] [ UNIFORM [ SIZE valeur [K|M] ] ] [ TABLESPACE GROUP nom_groupe ] . il est  implicitement créé.  q q q q q La clause TABLESPACE GROUP permet d’affecter le tablespace temporaire à un groupe ; si le groupe n’existe pas.Algeria Educ openmirrors. un seul fichier de  données peut être spécifié. .  Un groupe de tablespaces temporaires n’est pas explicitement créé ou supprimé. FORCE LOGGING et  FLASHBACK  sont  interdites  pour  un  tablespace  temporaire  géré localement.  Un tablespace temporaire géré localement présente forcément une gestion uniforme de ses extensions. Il est implicitement créé lorsqu’un  premier  tablespace  temporaire  est  affecté  au  groupe  et  implicitement  supprimé. la taille des extensions est  de  1  Mo ; elle  est  satisfaisante  dans  une  grande  majorité  des  cas. Les options de l’ordre SQL CREATE TEMPORARY TABLESPACE ont la même signification que les options de même nom de  l’ordre SQL CREATE TABLESPACE (voir la section Tablespace permanent)..All rights reserved . le mot clé UNIFORM doit être mentionné. Tablespace temporaire par défaut  Un  tablespace  temporaire  n’est  réellement  utilisé  que  lorsqu’il  est  "affecté"  aux  utilisateurs.  Syntaxe  CREATE [ BIGFILE | SMALLFILE ] TEMPORARY TABLESPACE nom TEMPFILE spécification_fichier [.  Les  clauses LOGGING. Par défaut.  c’est  le  tablespace  SYSTEM  qui  est  affecté  comme  tablespace  temporaire  à  ..  NOLOGGING.

  © ENI Editions .l’utilisateur.  un  message est écrit dans le fichier d’alerte de l’instance..] [ EXTENT MANAGEMENT LOCAL ] [ UNIFORM [ SIZE valeur [K|M] ] ] Exemple :  DEFAULT TEMPORARY TABLESPACE temp TEMPFILE ’e:\oradata\hermes\temp01. grâce à l’ordre SQL CREATE TEMPORARY TABLESPACE présenté précédemment ;  le  définir  comme  tablespace  temporaire  par  défaut.  Syntaxe  [ BIGFILE | SMALLFILE ] DEFAULT TEMPORARY TABLESPACE nom TEMPFILE spécification_fichier [.  vous  devez  utiliser la clause DEFAULT TEMPORARY TABLESPACE de l’ordre SQL CREATE DATABASE. ALTER DATABASE pour la gestion des fichiers  de données et DROP TABLESPACE.  Un  tablespace  temporaire  géré  localement  est  créé  selon  la  spécification  et  défini  comme  tablespace  temporaire  par  défaut. et donc affecté comme  tablespace temporaire aux utilisateurs créés durant cette opération (notamment SYS et SYSTEM). de créer et définir un tablespace temporaire par défaut dès la création de la base.  Pour  créer  et  définir  un  tablespace  temporaire  par  défaut  lors  de  la  création  de  la  base  de  données.  et  s’il  est  utilisé  comme  tablespace  temporaire  par  défaut. PROPERTY_VALUE -----------------------------TEMP 5. dans ce cas.3- ..  q Syntaxe  ALTER DATABASE DEFAULT TEMPORARY TABLESPACE nom .  Pour créer et définir un tablespace temporaire par défaut après la création de la base de données.  grâce  à  la  clause  DEFAULT TEMPORARY TABLESPACE  de  l’ordre SQL ALTER DATABASE.  Notez  bien  que  le  tablespace temporaire par défaut ainsi créé est forcément géré localement (ce qui est conseillé par Oracle).  Le tablespace temporaire ainsi créé est pris en compte dès la création de la base de données. tous les utilisateurs qui avaient l’ancien tablespace temporaire par défaut comme  tablespace temporaire se voient automatiquement attribuer le nouveau. vous devez :  q créer un tablespace temporaire. avec quelques restrictions : ALTER TABLESPACE.  ou  ultérieurement.  Un  tablespace  SYSTEM  géré  localement  ne  peut  pas  être  utilisé  comme  tablespace  temporaire  par  défaut..  Si  le  tablespace SYSTEM  est  géré  par  le  dictionnaire. nom doit désigner un tablespace temporaire ou un groupe de tablespaces temporaires qui existe déjà.Algeria Educ . il est possible de définir un tablespace temporaire  par  défaut.  dès  la  création  de  la  base  de  données.  d’où  la  nécessité. Administration des tablespaces temporaires géré localement  L’administration  d’un  tablespace  temporaire  géré  localement  s’effectue  avec  les  ordres  SQL  présentés  pour  les  tablespaces permanents. ce qui est mauvais pour les performances.  Cette  technique  n’empêche  pas  d’utiliser  d’autres tablespaces temporaires affectés spécifiquement à des utilisateurs pour des besoins particuliers. vous pouvez interroger la vue DATABASE_PROPERTIES pour  la propriété DEFAULT_TEMP_TABLESPACE :  SQL> SELECT property_value FROM database_properties 2 WHERE property_name = ’DEFAULT_TEMP_TABLESPACE’ .  Pour résoudre ce problème et faciliter la gestion des utilisateurs. La  syntaxe  est  la  même  que  celle  de  l’ordre  SQL  CREATE TEMPORARY TABLESPACE.  Pour retrouver le nom du tablespace temporaire par défaut.All rights reserved .dbf’ SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1024M   Cette clause doit être présente si le tablespace SYSTEM est géré localement.  Lorsque cet ordre SQL est exécuté.

 il suffit de supprimer le tablespace.Algeria Educ . Ce  n’est  pas  très  grave  puisqu’un  tablespace  temporaire  ne  contient  pas  de  données  permanentes ; en  cas  de  problème. -..  Par  contre. en cas de perte ou d’endommagement d’un de ces fichiers.. la récupération (RECOVER)  n’est pas possible.. puis de le recréer.  De même.. il faut le supprimer et le récréer. RENAME DATAFILE (puisqu’il ne peut pas être passé OFFLINE).  Les opérations suivantes sont autorisées :  q Ajout d’un fichier de données temporaire à un tablespace temporaire géré localement  ALTER TABLESPACE nom_tablespace ADD TEMPFILE spécification_fichier . Par contre.Les  fichiers  de  données  d’un  tablespace  temporaire  géré  localement  sont  particuliers ; Oracle  les  appelle  d’ailleurs  "fichiers de données temporaires". q Tablespace BIGFILE uniquement  ALTER TABLESPACE nom_tablespace_bigfile clause_auto_extension. un tablespace temporaire géré localement ne peut pas être passé OFFLINE.supprimer le fichier de données temporaire SQL> ALTER DATABASE<$IALTER DATABASE. où plus simplement le fichier de données. renommer un fichier de données temporaire avec un  ALTER DATABASE RENAME FILE  est  possible  (base  montée).le recréer SQL> ALTER TABLESPACE temp ADD openmirrors.. et donc aussi pour le déplacer. Les différences avec un fichier de données ordinaire sont les suivantes :  q Ils sont toujours en mode NOLOGGING ;  Ils ne peuvent pas être désactivés ;  Ils ne peuvent pas être passés en lecture seule.] clause_auto_extension.  Exemple :  -.4- © ENI Editions . Base de données modifiée.  q q Les  fichiers  de  données  temporaires  des  tablespace  temporaires  gérés  localement  étant  en  mode  NOLOGGING..All rights reserved ..dbf’ DROP 3 INCLUDING DATAFILES..TEMPFILE DROP> 2 TEMPFILE ’e:\oradata\hermes\temp01. q Modification de la clause AUTOEXTEND d’un fichier de données temporaire  q Tout type de tablespace  ALTER DATABASE TEMPFILE ’nom_complet’ [.  Pour  renommer  un  fichier  de  données  temporaire  base  ouverte.com . Par contre. q Tablespace BIGFILE uniquement  ALTER TABLESPACE nom_tablespace_bigfile RESIZE valeur [K|M|G|T].] RESIZE valeur [K|M|G|T] .  Les fichiers de données temporaires sont administrés avec les ordres SQL ALTER TABLESPACE et  ALTER DATABASE. q Modification de la taille d’un fichier de données temporaire  q Tout type de tablespace  ALTER DATABASE TEMPFILE ’nom_complet’ [. un fichier de données temporaire ne peut pas être renommé par l’ordre SQL ALTER TABLESPACE . en  remplaçant le mot clé DATAFILE par le mot clé TEMPFILE.  les  modifications  ne  sont  pas  enregistrées  dans  les  fichiers  de  journalisation  (intéressant  pour  les  performances).

  Lorsqu’un  tablespace  temporaire  est  retiré  d’un  groupe.  Syntaxe :  ALTER TABLESPACE nom_tablespace TABLESPACE GROUP nom_groupe | ’’ . Oracle tente de libérer le maximum d’espace.  Lors  de  l’affectation  d’un  tablespace  temporaire  à  un  groupe. Notez l’utilisation de l’option INCLUDING DATAFILES qui permet de supprimer physiquement le fichier.  le  groupe  est  implicitement  supprimé  s’il  ne  contient  plus  de  tablespace  temporaire.  le  groupe  est  implicitement  créé  s’il  n’existe  pas.  Il  en  est  de  même  pour  tout  tablespace  temporaire  appartenant  à  un  groupe  de  tablespaces  temporaires  utilisé  comme  tablespace  temporaire  par  défaut.  Un fichier de données temporaire peut aussi être supprimé par un ordre SQL ALTER TABLESPACE .  Syntaxe  ALTER TABLESPACE nom SHRINK SPACE [ KEEP taille [K|M|G] ] . Tablespace modifié. depuis la version 11.. une erreur est retournée :  ORA-03214: La taille de fichier indiquée est inférieure au minimum requis Curieusement. Si la clause KEEP  est trop basse.  le  tablespace  temporaire  par  défaut  ne  peut  pas  être  supprimé.  La  clause  KEEP  définit  une  taille  minimum  à  conserver  pour  le  tablespace ou le fichier ; si cette clause est absente.Algeria Educ ..  par  un  tri  volumineux  qui  vient  de  se  terminer. Vous  pouvez  utiliser  une  chaîne  vide  pour  n’affecter  le  tablespace  à  aucun  groupe.  Enfin. le changer de groupe ou le retirer  d’un groupe.  Par ailleurs. DROP TEMPFILE.5- .  © ENI Editions .All rights reserved . Cette  commande  est  intéressante  pour  libérer  l’espace  utilisé. il est possible de rétrécir un tablespace temporaire géré localement. vous pouvez utiliser la clause TABLESPACE GROUP de l’ordre SQL ALTER TABLESPACE. ALTER TABLESPACE nom SHRINK TEMPFILE ’nom_complet’ | numéro_fichier [ KEEP taille [K|M|G] ] .  par  exemple.  Vous ne pouvez pas retirer le dernier tablespace temporaire d’un groupe si ce groupe est utilisé comme tablespace  temporaire par défaut. La première syntaxe permet de rétrécir tous les fichiers de données temporaires du tablespace alors que la  deuxième  syntaxe  travaille  sur  un  fichier  spécifique.  Pour placer un tablespace temporaire dans un groupe de tablespaces temporaires. cette erreur est aussi retournée si la clause KEEP est absente et qu’Oracle tente de rétrécir le fichier à  une taille inférieure au minimum requis.2 TEMPFILE ’f:\oradata\hermes\temp01.dbf’ SIZE 100M 3 AUTOEXTEND ON NEXT 10M MAXSIZE 1G.

All rights reserved .  par  l’intermédiaire d’ordre  SQL  SELECT.  Lorsque  les  extensions  sont  gérées  par  Oracle.  q q q Quel  mode  de  gestion  choisir  pour  les  extensions  des  tablespaces  de  tables  et  d’index ?  Préférez  une  gestion  automatique des extensions.  en  le  créant  dès  la  création  de  la  base  de  données.  le  processus  SMON  fusionnera  les  extensions  adjacentes  libres  du  tablespace : c’est  l’opération  de  coalesce.  Le  risque  de  fragmentation  disparaît  complètement  dans  un  tablespace  géré  localement  avec  une  gestion  uniforme  des  extensions : toutes les extensions allouées dans le tablespace ont forcément la même taille et une extension libérée  pourra obligatoirement être réutilisée.  Dans un tablespace géré par le dictionnaire.  Choisissez  une  gestion  uniforme  des  extensions  si  vous  souhaitez contrôler l’allocation des extensions et que vous ayez une bonne vision de vos besoins en espace.  Si  les  besoins  sont  connus  avec  précision. lorsque l’instance alloue ou libère une extension. des problèmes de fragmentation de l’espace disponible. Recommandations  Oracle recommande d’utiliser des tablespaces gérés localement :  q pour le tablespace SYSTEM ;  pour  le  tablespace  temporaire.  pour  avoir  en  plus  un  tablespace temporaire par défaut ;  pour les segments d’annulation (chapitre Gestion des informations d’annulation) ;  pour les tablespaces des tables et des index.  utiliser  des  tablespaces  gérés  localement avec une gestion uniforme des extensions n’est pas forcément immédiat. Dans un tablespace géré localement. lié à la mise à jour du dictionnaire de données ;  extensions adjacentes libres automatiquement identifiées. et d’autre part en allouant  consécutivement des extensions qui.  Lors  de  la  mise  à  jour  du  dictionnaire.  Cette  fragmentation  de  l’espace  disponible  peut  survenir  suite  à  une  forte  activité  d’allocation/libération d’extensions : il  peut  y  avoir  beaucoup  d’espace  disponible  dans  le  tablespace  mais  sous  la  forme  d’une  multitude  de  petites  extensions  non  adjacentes. il faut sans doute employer plusieurs tablespaces pour séparer les segments  en grandes catégories. peuvent constituer une extension de taille supérieure. regroupées.  INSERT.Conclusions  1. d’une part en utilisant un petit nombre de tailles différentes d’extensions. voire de gestion récursive de l’espace.  Plus  tard. cette opération n’est pas nécessaire car les extensions adjacentes  libres sont automatiquement identifiées dans la bitmap (zéros qui se suivent). voire disparition.  Les  tablespaces  gérés  localement  avec  une  gestion  automatique  des  extensions  sont  intéressants  lorsque  la  volumétrie  des  segments  est  complètement  inconnue ; ils  permettent  une  gestion  plus  saine  de  l’espace  que  les  tablespaces  gérés  par  le  dictionnaire. si vous n’avez pas une bonne vision des besoins en espace et que vous ne souhaitiez  exercer  aucun  contrôle  sur  l’allocation  des  extensions. Exemple :  © ENI Editions .  en  tâche  de  fond  ou  en  cas  de  recherche  d’une grande  extension.  pénalisante  pour  les  performances. Ces problèmes disparaissent en grande partie avec les tablespaces gérés localement.  l’instance  utilise  un  algorithme  qui  vise  à  réduire  le  risque  de  fragmentation. Avantages des tablespaces gérés localement  Les tablespaces gérés localement présentent de nombreux avantages :  q moins de SQL récursif.  UPDATE ou  DELETE ; ces  différents  ordres  sont  appelés  "SQL  récursif"  et  sont  susceptibles  d’utiliser  de  l’espace  d’annulation  dans  le  segment  d’annulation  SYSTEM. lorsqu’une extension est libérée. elle doit lire puis mettre  à  jour  le  dictionnaire  de  données.com .  q q Avec un tablespace géré par le dictionnaire. Oracle ne regarde pas immédiatement  si  elle  est  adjacente  à  une  extension  déjà  libre.  Cette  opération  peut  prendre  beaucoup  de  temps  s’il  y  a  un  grand  nombre  d’extensions  libres  dans  le  tablespace.  Un des objectifs des tablespaces gérés localement est de rationaliser l’utilisation de l’espace dans les tablespaces et  d’éviter  le  phénomène  de  fragmentation  de  l’espace  disponible.1- openmirrors.  2. ce qui élimine les opérations de fusion (coalesce)  des extensions adjacentes libres ;  limitation.Algeria Educ . notamment pour déterminer la  bonne taille d’extension ; dans ce cas.  Oracle  peut  manquer  de  place  dans  la  table  du  dictionnaire  ou  dans  le  segment  d’annulation : il  en  résulte  une  allocation  récursive  d’espace.

2- © ENI Editions .  nous  verrons  comment  estimer  la  taille  des  segments  à  une  échéance donnée.  q q Dans  le  chapitre  Gestion  des  tables  et  des  index. entre 2 Mo et 64 Mo) : un tablespace avec des extensions de 2 Mo ;  les "gros" (par ex.q les "petits" (par ex.  . au delà de 64 Mo) : un tablespace avec des extensions de 64 Mo (et sans doute plusieurs  tablespaces).Algeria Educ . entre 0 et 2 Mo) : un tablespace avec des extensions de 64 Ko ;  les "moyens" (par ex.All rights reserved .

  dont  le  tablespace  temporaire  par  défaut.  STATUS  Statut du tablespace (ONLINE. SYSTEM : gestion automatique  des  extensions  (tablespace  géré  localement). Tablespaces et fichiers de données  Plusieurs vues du dictionnaire de données permettent d’obtenir des informations sur les tablespaces et les fichiers de  données :  q DBA_TABLESPACES ou V$TABLESPACE : informations sur les tablespaces ;  DBA_DATA_FILES  ou  V$DATAFILE : informations  sur  les  fichiers  de  données  <(sauf  ceux  des  tablespaces  temporaires gérés localement) ;  DBA_TEMP_FILES ou V$TEMPFILE : informations sur les fichiers de données des tablespaces temporaires gérés  localement ;  DBA_TABLESPACE_GROUPS : informations sur les groupes de tablespaces temporaires ;  DATABASE_PROPERTIES : propriétés  de  la  base  de  données. LOCAL : le tablespace est géré localement.    openmirrors.All rights reserved .  FORCE_LOGGING  Indique si le tablespace est en FORCE LOGGING (YES ou NO).  DBA_TABLESPACES  TABLESPACE_NAME  Nom du tablespace.  BLOCK_SIZE  Taille de bloc du tablespace.  EXTENT_MANAGEMENT  DICTIONARY : le tablespace est géré par le dictionnaire. OFFLINE ou READ ONLY).1- .  le  tablespace permanent par défaut et le type de tablespace par défaut (BIGFILE ou SMALLFILE).com © ENI Editions .  CONTENTS  Type du tablespace (PERMANENT ou TEMPORARY ou UNDO).  q q q q Les colonnes intéressantes des différentes vues sont présentées ci­après.Algeria Educ .Trouver  des  informations  sur  les  tablespaces  et  les  fichiers  de  données  1.  ALLOCATION_TYPE  USER : gestion  des  extensions  par  "l’utilisateur"  (tablespace  géré  par  le  dictionnaire). UNIFORM : gestion  uniforme  des  extensions  (tablespace  géré  localement).  LOGGING  Mode de journalisation par défaut (LOGGING ou NOLOGGING).

--------.All rights reserved .SEGMENT_SPACE_MANAGEMENT  Indique si l’espace libre dans les segments est géré manuellement (MANUAL) ou automatiquement (AUTO).  STATUS  Statut du fichier (INVALID ou AVAILABLE).  TABLESPACE_NAME  Nom du tablespace auquel le fichier de données appartient.extent_management.  AUTOEXTENSIBLE  Indicateur d’autoextensibilité (YES ou NO). TABLESPACE_NAME CONTENTS EXTENT_MAN ALLOCATIO BIG BLOCK_SIZE --------------.bigfile.  Exemple :  SQL> SELECT tablespace_name.---------.Algeria Educ .  RELATIVE_FNO  Numéro relatif du fichier par rapport au tablespace.---------SYSTEM PERMANENT LOCAL SYSTEM NO 8192 UNDOTBS UNDO LOCAL SYSTEM NO 8192 SYSAUX PERMANENT LOCAL SYSTEM NO 8192 TEMP TEMPORARY LOCAL UNIFORM NO 8192 DEFTBS PERMANENT LOCAL SYSTEM NO 8192 DATA PERMANENT LOCAL UNIFORM NO 8192 INDX PERMANENT LOCAL SYSTEM NO 8192 JE_SUIS_GROS PERMANENT LOCAL SYSTEM YES 8192 DBA_DATA_FILES et DBA_TEMP_FILES  FILE_NAME  Nom du fichier de données (chemin complet).  BYTES  Taille du fichier en octets.2- © ENI Editions .  BIGFILE  Indique si le tablespace est un tablespace BIGFILE (YES ou NO). 2 allocation_type.status 3 FROM dba_tablespaces.  BLOCKS  Taille du fichier en blocs Oracle.--------.  FILE_ID  Identifiant du fichier de données.  MAXBLOCKS  STATUS -----ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE .  MAXBYTES  Taille maximum du fichier en octets.block_size.--.contents.

Taille maximum du fichier en blocs Oracle.DBF AVAILABLE 14080 14072 4194302 DEFTBS E:\ORADATA\HERMES\DEFTBS01.com .DBF AVAILABLE 29440 29432 4194302 UNDOTBS E:\ORADATA\HERMES\UNDOTBS01.status.3- AUT --- YES YES YES YES YES YES YES NO YES openmirrors.DBF AVAILABLE 20480 20472 131072 SYSAUX E:\ORADATA\HERMES\SYSAUX01.---------------------------------------.---------SYSTEM F:\ORADATA\HERMES\SYSTEM01.DBF AVAILABLE 12800 12672 131072 V$TABLESPACE  TS#  Numéro du tablespace.DBF AVAILABLE 25600 24320 64000 JE_SUIS_GROS E:\ORADATA\HERMES\JE_SUIS_GROS.DBF AVAILABLE 128 112 0 TEMP F:\ORADATA\HERMES\TEMP01.--------BLOCKS USER_BLOCKS MAXBLOCKS ---------.  BIGFILE  Indique si le tablespace est un tablespace BIGFILE (YES ou NO).  NAME  Nom du tablespace.  FILE#  Identifiant du fichier de données.file_name. TABLESPACE_NAME FILE_NAME STATUS --------------. 2 blocks.----------.  USER_BYTES  Taille utile du fichier en octets (généralement taille du fichier moins les blocs d’en­tête).  © ENI Editions .  INCREMENT_BY  Taille de l’incrément de l’autoextension en blocs Oracle.maxblocks 3 FROM ( SELECT * FROM dba_data_files 4 UNION ALL SELECT * FROM dba_temp_files).user_blocks.DBF AVAILABLE 64000 63992 102400 DATA F:\ORADATA\HERMES\DATA02.Algeria Educ .All rights reserved .  Exemple :  SQL> SELECT tablespace_name.DBF AVAILABLE 6400 6392 64000 DATA F:\ORADATA\HERMES\DATA01.  V$DATAFILE et V$TEMPFILE  TS#  Numéro du tablespace auquel le fichier de donnée appartient.DBF AVAILABLE 64000 62720 102400 INDX E:\ORADATA\HERMES\INDX01.  USER_BLOCKS  Taille utile du fichier en blocs Oracle (généralement taille du fichier moins les blocs d’en­tête).autoextensible.

DBF ONLINE READ WRITE 421362 3 E:\ORADATA\HERMES\SYSAUX01.DBF SYSTEM READ WRITE 421362 2 E:\ORADATA\HERMES\UNDOTBS01. FILE# NAME STATUS ENABLED CHECKPOINT ----.  BYTES  Taille du fichier en octets.status.  CHECKPOINT_TIME  Date et heure du dernier point de reprise (n’existe pas dans V$TEMPFILE).  CHECKPOINT_CHANGE#  Numéro SCN du dernier point de reprise (n’existe pas dans V$TEMPFILE).NAME  Nom du fichier de données (chemin complet).DBF ONLINE READ WRITE 421362 8 F:\ORADATA\HERMES\DATA02. ONLINE.4- © ENI Editions .----------------------------------.name.DBF ONLINE READ WRITE 421362 6 E:\ORADATA\HERMES\INDX01.  BLOCKS  Taille du fichier en blocs Oracle.Algeria Educ . SYSTEM ou RECOVER).DBF ONLINE READ WRITE 421362 5 F:\ORADATA\HERMES\DATA01.DBF ONLINE READ WRITE 421362 DBA_TABLESPACE_GROUPS  GROUP_NAME  Nom du groupe.  ENABLED  Disponibilité du fichier de données (DISABLED.  CREATE_BYTES  Taille du fichier à sa création en octets.  BLOCK_SIZE  Taille de bloc du fichier de données.------.DBF ONLINE READ WRITE 421362 9 E:\ORADATA\HERMES\JE_SUIS_GROS.DBF ONLINE READ WRITE 421362 4 E:\ORADATA\HERMES\DEFTBS01.checkpoint_change# 2 FROM v$datafile .  Exemple :  SQL> SELECT file#. READ WRITE). READ ONLY.  STATUS  Statut du fichier de données (OFFLINE.enabled.  CREATION_TIME  Date et heure de création du fichier.  TABLESPACE_NAME  .---------1 F:\ORADATA\HERMES\SYSTEM01.All rights reserved .---------.

INDEX.  q q q q Les colonnes intéressantes des différentes vues sont présentées ci­après.5- openmirrors.    © ENI Editions .Nom du tablespace.com .  PROPERTY_VALUE  Nom du tablespace. Supervision du stockage dans les tablespaces  Plusieurs  vues  du  dictionnaire  de  données  permettent  d’obtenir  des  informations  sur  le  stockage  à  l’intérieur  des  tablespaces :  q DBA_FREE_SPACE : informations sur l’espace disponible à l’intérieur d’un tablespace ;  DBA_SEGMENTS : informations sur les segments alloués à l’intérieur d’un tablespace ;  DBA_EXTENTS : informations sur les extensions allouées à l’intérieur d’un tablespace ;  V$SORT_SEGMENT : supervision du stockage des segments temporaires ;  V$SYSAUX_OCCUPANTS : informations sur les composants qui utilisent de l’espace dans le tablespace SYSAUX.property_value 2 FROM database_properties 3 WHERE property_name IN (’DEFAULT_TEMP_TABLESPACE’.).---------------DEFAULT_TEMP_TABLESPACE TEMP DEFAULT_PERMANENT_TABLESPACE DEFTBS DEFAULT_TBS_TYPE SMALLFILE 2.  DEFAULT_PERMANENT_TABLESPACE : tablespace permanent par défaut. etc.  DEFAULT_TEMP_TABLESPACE : tablespace temporaire par défaut (peut être un groupe de tablespaces temporaires). PROPERTY_NAME PROPERTY_VALUE -----------------------------. 4 ’DEFAULT_PERMANENT_TABLESPACE’.  Exemple  SQL> SELECT property_name.All rights reserved .Algeria Educ .  DATABASE_PROPERTIES  PROPERTY_NAME  Nom de la propriété :  DEFAULT_TBS_TYPE : type de tablespace par défaut (SMALLFILE ou BIGFILE). 5 ’DEFAULT_TBS_TYPE’).  SEGMENT_NAME  Nom du segment. ROLLBACK. TYPE2 UNDO.  SEGMENT_TYPE  Type du segment (TABLE.  DBA_SEGMENTS  OWNER  Nom du propriétaire du segment.

-----------------.  BYTES  Taille de l’extension libre en octets.  Exemple :  SQL> SELECT segment_name.---------.blocks.Algeria Educ .extents 3 FROM dba_segments WHERE tablespace_name=’TEST’.All rights reserved .TABLESPACE_NAME  Nom du tablespace qui contient le segment.    Un tablespace qui n’a pas d’extension libre n’a pas de ligne dans DBA_FREE_SPACE.segment_type.  BLOCKS  Taille de l’extension libre en blocs Oracle.---------.  INITIAL_EXTENT  Taille initiale du segment.  EXTENTS  Nombre d’extensions allouées au segment. 2 initial_extent/1024 initial_ko.  .  BLOCKS  Taille du segment en blocs Oracle.  BLOCK_ID  Numéro du premier bloc de l’extension libre. SEGMENT_NAME SEGMENT_TYPE INITIAL_KO BLOCKS EXTENTS --------------.---------TABLE2M TABLE 2048 256 2 TABLE200K TABLE 200 32 4 DBA_FREE_SPACE  TABLESPACE_NAME  Nom du tablespace qui contient l’extension libre. DBA_EXTENTS  OWNER  Nom du propriétaire du segment auquel l’extension appartient.  BYTES  Taille du segment en octets.6© ENI Editions .  FILE_ID  Identifiant du fichier de données qui contient l’extension libre.  SEGMENT_NAME  Nom du segment auquel l’extension appartient.

segment_name. TYPE2 UNDO. par  exemple DBA_INDEXES et DBA_TABLES.bytes/1024 taille_ko 3 FROM dba_extents WHERE tablespace_name=’TEST’ 4 UNION 5 SELECT block_id. INDEX.  BLOCKS  Taille de l’extension en blocs Oracle.bytes/1024 size_ko 7 FROM dba_free_space WHERE tablespace_name=’TEST’.  Exemple :  SQL> SELECT block_id.extent_id.---------. BLOCK_ID EXTENT_ID SEGMENT_NAME BLOCKS TAILLE_KO ---------.’*** LIBRE ***’.  EXTENT_SIZE  Taille des extensions.---------. ROLLBACK.All rights reserved .---------9 0 TABLE200K 8 64 17 1 TABLE200K 8 64 25 2 TABLE200K 8 64 33 3 TABLE200K 8 64 41 *** LIBRE *** 96 768 137 0 TABLE2M 128 1024 265 1 TABLE2M 128 1024 393 *** LIBRE *** 888 7104 V$SORT_SEGMENT  TABLESPACE_NAME  Nom du tablespace. 6 blocks.).  FILE_ID  Identifiant du fichier de données qui contient l’extension.com © ENI Editions .SEGMENT_TYPE  Type du segment (TABLE.  EXTENT_ID  Numéro de l’extension (0 pour la première).  TABLESPACE_NAME  Nom du tablespace qui contient l’extension.  En complément.NULL. plusieurs vues possèdent une colonne TABLESPACE indiquant le nom du tablespace de stockage.  TOTAL_EXTENTS  openmirrors.Algeria Educ . etc.  BLOCK_ID  Numéro du premier bloc de l’extension.  BYTES  Taille de l’extension en octets.7- .--------------. 2 blocks.

2 max_used_blocks.sql_id = s.used_blocks. USERNAME TABLESPACE SEGTYPE EXTENTS BLOCKS ---------.total_blocks.  OCCUPANT_DESC  Description du composant.sql_text 3 FROM v$tempseg_usage t. TABLESPACE_NAME TOTAL_BLOCKS USED_BLOCKS MAX_USED_BLOCKS MAX_SORT_BLOCKS --------------.  MAX_USED_SIZE  Nombre maximum d’extensions utilisées par tous les tris (simultanément).max_sort_blocks 3 FROM v$sort_segment.t.  MAX_USED_BLOCKS  Nombre maximum de blocs utilisés par tous les tris (simultanément).segtype. V$TEMPSEG_USAGE.---------.Nombre total d’extensions dans le segment.    .  Exemple :  SQL> SELECT t.c3 V$SYSAUX_OCCUPANTS  OCCUPANT_NAME  Nom du composant.8© ENI Editions .  USED_BLOCKS  Nombre total de blocs Oracle actuellement alloués à des tris actifs.t.c2.t.--------------TEMP 256 0 256 64 Il existe aussi une vue.---------SQL_TEXT ----------------------------------------------------OHEU TEMP SORT 2 256 SELECT * FROM t ORDER BY c1.--------.  Exemple :  SQL> SELECT tablespace_name.--------------.  TOTAL_BLOCKS  Nombre total de blocs Oracle dans le segment.  MAX_SORT_SIZE  Nombre maximum d’extensions utilisées par un tri (le plus gros tri).Algeria Educ . qui peut être utile pour identifier les sessions (et les requêtes) qui utilisent  actuellement de l’espace temporaire.sql_id.v$sql s 4 WHERE t.  USED_EXTENTS  Nombre d’extensions actuellement allouées à des tris actifs. 2 s.All rights reserved .username.-----------.----------.  MAX_SORT_BLOCKS  Nombre maximum de blocs utilisés par un tri (le plus gros tri).extents.t.---------.blocks.tablespace.

  MOVE_PROCEDURE_DESC  Description de la procédure de déplacement. OCCUPANT_DESC SPACE_USAGE_KBYTES ---------------------------------------------------. deux composants utilisent un espace important :  q le référentiel des fonctionnalités de gestion automatique de la base de données (SM/AWR) ;  le référentiel du Database Control (EM).com © ENI Editions .SCHEMA_NAME  Nom du schéma dans lequel le composant est stocké.Advisor Framework 7744 Server Manageability .  Exemple :  SQL> SELECT occupant_desc.Algeria Educ .SCN to TIME mapping 448 PL/SQL Identifier Collection 384 Oracle Streams 1024 Analytical Workspace Object Table 1408 OLAP API History Tables 1408 Server Manageability .All rights reserved .9- .Other Components 5952 Enterprise Manager Repository 127424 Enterprise Manager Monitoring User 1536 Oracle Transparent Session Migration User 256 SQL Management Base Schema 1728 Automated Maintenance Tasks 320 Unified Job Scheduler 384 Dans une installation de base.  SPACE_USAGE_KBYTES  Espace actuellement utilisé par le composant (en Ko).  Certains  composants  ne  peuvent pas être déplacés (par exemple les composants relatifs à la gestion automatique de la base de données).Automatic Workload Repository 29184 Server Manageability .  Cette  opération  s’effectue  généralement  à  l’aide  d’une  procédure  d’un  package  dont  les  références  sont  données  dans  la  colonne  MOVE_PROCEDURE  de  la  vue  V$SYSAUX_OCCUPANTS.  MOVE_PROCEDURE  Nom de la procédure permettant de déplacer le composant dans un autre tablespace.-----------------LogMiner 7744 Logical Standby 1024 Transaction Layer . il est possible d’envisager de le déplacer dans  un  autre  tablespace. sans options particulières.Optimizer Statistics History 4608 Server Manageability .  q Si un composant utilise beaucoup de place dans le tablespace SYSAUX.space_usage_kbytes 2 FROM v$sysaux_occupants WHERE space_usage_kbytes <0>.  openmirrors.

 relatives à la base de données ou à l’application (nom de table. ils peuvent être saisis indifféremment en majuscules ou  en minuscules. mais en essayant de ne pas trop alourdir mon propos.  mot en minucules  Valeurs à saisir.  Par ailleurs. que vous avez pu définir par  exemple lors d’une installation. elles sont sensibles à la casse).  |  Indique un choix entre plusieurs options. etc).  {}  Délimite une liste d’options.  Exemple : OracleServiceSID ou OracleService<SID>  Et pour terminer. Dans ce cas. l’éternelle question : que faut­il faire des termes techniques en anglais ? Les traduire ou pas ? Dans  les  commandes.  elles  peuvent  être  saisies  indifféremment  en  majuscules  ou  en  minuscules.  Si  vous  utilisez  les  outils  graphiques en français.. nom de colonne. Dans la pratique. ce qui est parfois déroutant  (d’autant  que  certaines  traductions  sont  un  peu  "bizarres").. des noms de menus qui peuvent contenir  une chaîne de caractères correspondant à une valeur spécifique de votre environnement. vous constaterez que beaucoup de ces termes ont été traduits.Conventions d’écriture  Cet  ouvrage  utilise  les  conventions  d’écriture  suivantes  pour  les  ordres  SQL.All rights reserved .]  La clause précédente peut être répétée plusieurs fois.Dans la pratique.  sauf  si  elles  figurent  entre  apostrophes  (dans ce cas. et parfois même entre les signes < et > s’il y a ambiguïté. Dans ce  cas.Algeria Educ .  les  termes  techniques  sont  en  anglais.  © ENI Editions . des noms de fichiers.  d’où  la  nécessité  de  les  connaître.  Dans  cet  ouvrage. la chaîne à substituer avec la valeur correspondant à votre environnement  est mise en italique.  mot souligné  Valeur par défaut. les notations Windows et Unix/Linux sont utilisées :  q Windows : %VARIABLE%  Unix/Linux : $VARIABLE  q Parfois. l’ouvrage fait aussi référence à des chemins. l’ouvrage fait très souvent référence à des variables d’environnement du système d’exploitation..  les  commandes  SQL*Plus  et  les  commandes RMAN :  MOT EN MAJUSCULES  Mots clés de la commande (CREATE TABLE).  []  Clause optionnelle.1- .  [.  j’ai  donc  tenté  de  donner  les  correspondances systématiquement.

 cliquez sur le lien Serveur sur la page d’accueil puis sur le lien Espaces disque logiques  (cadre Stockage) pour accéder à la page de gestion des tablespaces :    À partir de cette page. Espace disque logique (tablespace)  Dans le Database Control.1- .Algeria Educ .All rights reserved . vous pouvez effectuer diverses actions sur les tablespaces :    créer un nouveau tablespace (bouton Créer ou menu Créer comme) ;  supprimer un tablespace (bouton Supprimer) ;  modifier un tablespace (bouton Modifier) ;  ajouter un fichier de données à un tablespace (menu Ajouter un fichier de données) ;  q q q q openmirrors.com © ENI Editions .Utiliser le Database Control  1.

 Fichier de données  Dans le Database Control. cliquez sur le lien Serveur sur la page d’accueil puis sur le lien Fichiers de données (cadre  Stockage) pour accéder à la page de gestion des fichiers de données :  . en français.  vous  arrivez sur la page de définition d’un tablespace.    Dans la terminologie du Database Control.    L’onglet Général permet de définir le nom et les caractéristiques générales du table­ space : mode de gestion.  ou  en  cliquant  sur  les  boutons  Créer.  2.2- © ENI Editions .  en  lecture  écriture  (menu  Rendre  accessible en écriture). l’activer (menu Mettre en ligne). mode de gestion de l’espace dans les segments. Les alertes sont visible sur la page d’accueil du Database Control.Algeria Educ . L’onglet  Seuils  permet  de  définir  des  seuils  d’alerte  sur  le  remplissage  du  tablespace<.q placer  un  tablespace  en  lecture  seule  (menu  Mettre  en  lecture  seule). Par défaut.  statut.  cet  onglet  est  présent  uniquement  lors  de  la  consultation  ou  modification  d’un tablespace.All rights reserved . le Database Control utilise un seuil  d’avertissement à 85 % et un seuil critique à 97 %.  Modifier  ou  Visualiser. le désactiver (menu Mettre hors ligne). un "ensemble de blocs contigus" est une extension.  En  cliquant  sur  le  lien  du  nom  de  tablespace. type.  L’onglet Stockage permet de préciser des informations relatives au stockage : gestion uniforme ou automatique des  extensions. taille de bloc.

  s s s En  cliquant  sur  le  lien  du  nom  du  fichier  de  données. vous pouvez effectuer diverses actions sur les fichiers de données :    ajouter un fichier de données à un tablespace (menu Créer comme) ;  modifier le fichier de données (bouton Modifier) ;  supprimer le fichier de données (bouton Supprimer).  vous  arrivez sur la page de définition d’un fichier de données :  openmirrors.  À partir de cette page.com © ENI Editions .Algeria Educ .3- .  ou  en  cliquant  sur  les  boutons  Modifier ou  Visualiser.All rights reserved .

Algeria Educ .  ou  si  vous  le  changez  de  répertoire. cliquez sur le lien Serveur sur la page d’accueil puis sur le lien Groupes d’espaces disque  logiques temporaires (cadre Stockage) pour accéder à la page de gestion des groupes de tablespaces temporaires. cliquez sur le bouton Créer ; vous arrivez sur la page de définition d’un groupe :  .  le  Database  Control  va  simplement  réaliser  un  ALTER DATABASE RENAME FILE ; il  ne  va  effectuer  aucune  action  sur  le  fichier  physique.    Pour créer un nouveau groupe.4- © ENI Editions . Groupe de tablespace temporaire  Dans le Database Control.  Si  vous  modifiez  le  nom  d’un  fichier  de  données.  L’opération échouera si le fichier de données n’a pas été au préalable renommé et/ou déplacé.All rights reserved .  3.

TABLESPACE GROUP qui aura pour  effet.  Le Database Control exécutera tout simplement un ordre SQL ALTER TABLESPACE ..All rights reserved . de créer implicitement le groupe s’il n’existait pas.  openmirrors..5- .com © ENI Editions .  Indiquez  le  nom  du  groupe  puis  cliquez  sur  le  bouton  Ajouter/Enlever  pour  ajouter  un  tablespace  temporaire  au  nouveau groupe.Algeria Educ .

) ;  ­ soit en autorisant un fichier de données du tablespace à s’étendre automatiquement (ALTER DATABASE TEMPFILE . l’affecter aux utilisateurs (chapitre Gestion des utilisateurs et de leurs droits) et/ou le définir comme  tablespace  temporaire  par  défaut  (ALTER DATABASE DEFAULT TEMPORARY TABLESPACE.. Ne peut se produire que lorsque le  tablespace utilisé pour stocker les segments temporaires est permanent (SYSTEM..  © ENI Editions ..  Action(s)  Il faut augmenter l’espace disponible dans le tablespace :  ­ soit en lui allouant un nouveau fichier de données (ALTER TABLESPACE.) ;  ­ soit en augmentant la taille d’un fichier de données du tablespace (ALTER DATABASE TEMPFILE .  Nous  verrons  d’autres  problèmes  possibles...  Ce problème peut se produire sur toute requête qui sollicite un tri... RESIZE ..).  Cause(s)  Le  segment  temporaire  n’arrive  pas  à  s’étendre  car  le  tablespace  dans  lequel  il  est  stocké  n’a  pas  suffisamment  d’espace disponible et ne peut lui­même s’étendre. AUTOEXTEND ON . tablespace X Explication  Le segment temporaire n’arrive pas à s’étendre (lors d’un tri par exemple).  Cause(s)  Le  segment  temporaire  n’arrive  pas  à  s’étendre  car  il  atteint  son  nombre  maximum  d’extensions.) et l’affecter aux utilisateurs (cf.All rights reserved .  Si  non.  la  vue  V$TEMPSEG_USAGE  peut  être  employée  pour  superviser  en  temps  réels  les  opérations  qui  utilisent de l’espace temporaire.1- . ADD TEMPFILE . Chapitre Gestion des utilisateurs et de leur droits) et/ou le  définir comme tablespace temporaire par défaut.. Si oui. par exemple).)..Problèmes courants et solutions  Ce  n’est  qu’un  début.  ORA-01652: impossible d’étendre le segment temporaire deN dans le tablespace X Explication  Le segment temporaire n’arrive pas à s’étendre (lors d’un tri par exemple).  relatifs  au  stockage  dans  un  tablespace  dans le chapitre Gestion des tables et des index (stockage des tables et des index).  défini  par  le  MAXEXTENTS de la clause DEFAULT STORAGE du tablespace dans lequel il est stocké.  ORA-01630: nbre max.Algeria Educ ...  en  créer  un  (CREATE TEMPORARY TABLESPACE...  Action(s)  Interroger la colonne CONTENTS de la vue DBA_TABLESPACES pour savoir s’il existe un tablespace temporaire dans la base  de données... d’ensembles de blocs contigus (N) atteint dans segment temp.  En  cas  de  besoin.

  Si  un  utilisateur  interroge  une  table  en  cours  de  mise  à  jour  dans  une  autre  transaction.  Cette  connaissance  était  généralement  difficile  à  maîtriser  a  priori.  la  version  précédente  des  données  sera  remise  à  la  place  de  la  nouvelle.  si  nécessaire.  en  fonction  de  la  nature  de  la  mise  à  jour  et  de  la  présence  ou  non  d’index  (les  valeurs  précédentes  des  entrées  d’index  sont  aussi  stockées  dans  les  informations  d’annulation).  q 2.  ORA-01562. et il était souvent nécessaire de redimensionner les segments d’annulation en cours d’exploitation.  Les informations d’annulation sont stockées dans des segments d’annulation.  Les  besoins  en  informations  d’annulation  varient  énormément.)  ou  de  problèmes  de  performance.  q q q Le segment d’annulation est une structure utilisée par Oracle pour stocker temporairement la version précédente des  données  en  cours  de  modification  dans  une  transaction.  Si  la  transaction  est  validée  (COMMIT).  Les  segments  d’annulation  sont  aussi  utilisés  par  certaines  fonctionnalités  de  flashback  qui  permettent  de  lire  (et  récupérer)  les  données  telles  qu’elles  étaient  à  un  instant  donné  dans  le  passé  (voir  chapitre  Sauvegarde  et  récupération).com © ENI Editions .  Un UPDATE ou un  DELETE est plus coûteux en espace d’annulation et d’autant plus coûteux que l’image avant  (les valeurs précédentes des colonnes mises à jour pour un UPDATE et la ligne complète pour un DELETE) est de  taille importante.  Ce qu’il faut retenir :  q Un  INSERT  est  peu  coûteux  en  espace  d’annulation : c’est  normal.  les  segments  d’annulation  devaient  être  gérés  par  le  DBA.  Elles sont principalement utilisées pour :  q l’annulation de la transaction (ROLLBACK) ;  la lecture cohérente ;  certaines fonctionnalités de flashback;  la récupération de la base de données (RECOVER). Définitions  Lorsque  des  modifications  de  données  sont  en  cours.  Oracle  utilisera  la  valeur précédente des données.  pour  annuler  les  modifications. pour répondre à la requête. stockée dans les segments d’annulation.  Depuis  Oracle9i.  à  l’aide  d’un  tablespace d’annulation (tablespace de type UNDO).  Les segments d’annulation sont par ailleurs utilisés par Oracle pour le mécanisme de lecture cohérente.  Oracle  propose  une  gestion  "automatique"  des  informations/segments  d’annulation.  "before  image"  en  anglais)  et  l’identification des blocs concernés.  dans  un  état  cohérent  vis­à­vis  des  transactions  et  des  règles  de  gestion.Vue d’ensemble  1.  juste  des  informations de contrôle.  les  segments  d’annulation  sont  utilisés  lors  d’une  récupération  de  la  base  de  données  pour  annuler  les  modifications  non  validées  qui  avaient  déjà  été  écrites  dans  les  fichiers  de  données  (voir  les  principes  au  chapitre  Sauvegarde et récupération).  Pour  dimensionner  correctement  les  segments d’annulation (nombre et taille). le DBA devait posséder une connaissance assez précise du fonctionnement  de  la  base  de  données  et  des  besoins  de  l’application. La notion de  lecture cohérente correspond au fait que les données en cours de modification dans une transaction ne sont pas vues  des  autres  utilisateurs  tant  que  la  transaction  n’est  pas  validée ; les  autres  utilisateurs  voient  les  données  telles  qu’elles  étaient  avant  le  début  de  la  transaction.  Oracle  génère  des  informations  d’annulation  qui  seront  utilisées. Un mauvais  dimensionnement  pouvait  être  à  l’origine  d’erreurs  (ORA-01552. Gestion  Avant  Oracle9i.  openmirrors.  il  n’y  a  pas  d’image  avant.Algeria Educ . l’espace  occupé  sera  libéré ; si  la  transaction  est  annulée  (ROLLBACK).  etc.1- .All rights reserved .  Enfin.  Ces  informations  d’annulation contiennent essentiellement la  valeur  précédente  des  données  qui  sont  modifiées  par  la  transaction  ("image  avant".  ORA-01555.

 même si les structures  adaptées au mode de gestion choisi (tablespace d’annulation dans le cas de la gestion automatique) n’existent pas.  Oracle  règle  la  durée  de  conservation  à  une  valeur  légèrement supérieure à la durée de la requête la plus longue.  les  structures  adaptées  doivent  être  créées  pour  permettre  l’exécution  de  transactions  dans  d’autres  tablespaces  que  le  tablespace  SYSTEM. une lecture cohérente longue qui a commencé avant ou pendant une transaction peut encore avoir besoin de  l’image  avant.  les  modifications  apportées  aux  blocs  de  segments  d’annulations dans le Database Buffer Cache sont enregistrées dans les fichiers de journalisation.  3. en  cas  de  restauration  d’instance  ou  de  restauration  de  média.  Seule la gestion automatique est présentée dans cet ouvrage. ces informations peuvent encore être utiles pour une lecture  cohérente.2- © ENI Editions .  il  existe  une  durée  de  conservation  (rétention)  des  informations  d’annulation  (undo  retention  period) ; c’est  la  durée  minimale  pendant  laquelle  Oracle  tente  de  conserver  les  informations  d’annulation  des  transactions  validées.  pour  des  transactions  non  validées au moment de l’incident. Par contre.  une  opération flashback  peut  avoir  besoin  d’informations  d’annulation anciennes.  L’existence de ce segment d’annulation permet toujours à la base de données de démarrer.  De  même.  En  version  9. Structure  Comme tous les segments.  Les  informations  d’annulation  des  transactions validées sont dites expirées (expired) si elles sont plus anciennes que la période de conservation actuelle. À l’inverse. Oracle règle la durée de conservation à la plus grande valeur  q .  la  durée  de  conservation  des  informations  d’annulation  était  définie  par  le  paramètre  UNDO_RETENTION.  5. et stocké dans le tablespace SYSTEM. un segment d’annulation est stocké dans un tablespace et est. mais ce n’est pas recommandé par Oracle qui conseille vivement l’emploi de la gestion automatique. De cette manière. Le segment d’annulation SYSTEM  Quel  que  soit  le  mode  de  gestion  des  informations  d’annulation.  Il est important de comprendre que les segments d’annulation correspondent avant tout à une structure physique (un  segment)  dont  les  blocs  sont  chargés  en  mémoire  (dans  le  Database  Buffer  Cache)  en  fonction  des  besoins ; si  l’instance  a  besoin  d’espace  dans  le  Database  Buffer  Cache.Algeria Educ . Durée de rétention des informations d’annulation  Lorsqu’une transaction se termine.Depuis  la  version  10. si le paramètre UNDO_RETENTION  est défini. et Oracle tente de préserver l’espace qu’elles occupent pour satisfaire les lectures cohérentes  et les opérations flashback.  Si  cette  image  avant  ancienne  n’est  plus  disponible  (l’espace  a  été  réutilisé par une autre transaction). il impose une valeur minimum à Oracle. Dans ce cas.  Oracle  est  en  mesure  de  reconstituer  les  segments  d’annulation  et  d’annuler  les  modifications  déjà  écrites  dans  les  fichiers  de  données.  la  durée  de  conservation  des  informations  d’annulation  est  réglée  automatiquement par Oracle.  Dans  la  documentation  Oracle.  Pour  mémoire  (chapitre  Les  bases  de  l’architecture  Oracle).  une  erreur (ORA-01552) se produira lors de la première transaction dans un tablespace autre que le tablespace SYSTEM. composé d’extensions. les informations d’annulation  des  transactions  validées  sont  dites  non  expirées  (unexpired)  si  elles  sont  plus  récentes  que  la  période  de  conservation actuelle.  cette  fonctionnalité  est  appelée  Automatic  Undo  Management  et  souvent  désignée par le sigle AUM ; la terminologie System Managed Undo (SMU) est aussi utilisée. il  est souhaitable de conserver les informations d’annulation aussi longtemps que possible après la fin de la transaction.Pour ces deux raisons.  En effet.  Si le tablespace d’annulation est de taille fixe.  Avec  la  gestion  automatique  de  l’annulation.  les  blocs  de  segments  d’annulations  sont  susceptibles  d’être écrits sur disque.  il  existe  toujours  un  segment  d’annulation  nommé  SYSTEM. il est toujours possible d’utiliser une gestion "manuelle" des segments  d’annulation.  après  la  fin  de  la  transaction.All rights reserved . créé lors de la création de la base de données.  avant  de  réutiliser  l’espace.  Cependant. Deux cas se présentent :  q Si  le  tablespace  d’annulation  est  auto­extensible. C’est le mode par défaut depuis la version 11.  4.  Si  la  base  de  données  ne  contient  que  le  segment  d’annulation SYSTEM. les informations d’annulation la concernant ne sont plus nécessaires pour effectuer  une annulation de la transaction (ROLLBACK).  Ce segment d’annulation est utilisé pour les transactions sur les segments stockés dans le tablespace SYSTEM.  en  anglais. une erreur ORA-01555 (la "fameuse" erreur snapshot too old) est retournée.  et l’espace qu’elles occupent peut être réutilisé par de nouvelles transactions.Pour des raisons de compatibilité ascendante.

  Modifier  la  taille  du  tablespace d’annulation ou son seuil d’alerte a donc.com © ENI Editions . Oracle tentera  d’allouer une extension au segment en respectant l’ordre suivant :  q Utilisation d’une extension expirée du segment d’annulation. et qu’une transaction a encore besoin d’espace dans ce segment.  non expirée : l’extension n’est plus active mais elle contient des informations d’annulation non expirées.  si  le  tablespace  d’annulation n’est pas défini avec la garantie de rétention. Il faut noter que pour le calcul. la priorité est donnée par défaut aux transactions ; Oracle est alors susceptible de réutiliser  l’espace occupé par des informations d’annulation non expirées.  Utilisation d’une extension non expirée du segment d’annulation.All rights reserved .  une  erreur  est  toujours  possible  lors  d’une  opération flashback ; dans  ce  cas. ce qui peut provoquer l’apparition d’erreurs snapshot  too old. l’erreur snapshot too old ne doit normalement jamais se produire lors d’une lecture cohérente.  il  faut  augmenter  la  valeur  du  paramètre UNDO_RETENTION pour conserver plus longtemps les informations d’annulation. À partir du moment où une transaction est inscrite  dans un segment d’annulation. Si nécessaire.  compte  tenu  de  la  taille  du  tablespace  et  de  l’activité  de  la  base  de  données.  expirée : l’extension n’est plus active et elle contient des informations d’annulation expirées. Oracle utilise le seuil d’alerte du remplissage du  tablespace  d’annulation  (85%  par  défaut)  et  non  100%  de  la  taille  du  tablespace. un impact direct sur la durée de conservation. Oracle tentera d’activer un segment d’annulation inactif ou créera un nouveau segment d’annulation s’il n’y en  a pas.  Si  Oracle  manque  de  place  dans  le  tablespace  d’annulation. La priorité est en quelque  sorte donnée aux lectures.  Dans  ce  cas.  si  le  paramètre UNDO_RETENTION est défini. et l’erreur snapshot too old peut survenir.  il  est  possible  d’activer  une  "garantie  de  rétention"  au  niveau  du  tablespace d’annulation.  Acquisition (transfert) d’une extension expirée d’un autre segment d’annulation.  depuis  la  version  10.  Dans le premier cas.  Dans  les  deux  configurations. si le tablespace d’annulation n’est pas défini  avec la garantie de rétention. Si aucun segment d’annulation n’est libre (pas de transaction  active). il fera échouer les ordres de mises à jour pour garantir la durée de rétention. Oracle agrandit  automatiquement le tablespace d’annulation pour honorer la durée de conservation. Si une taille maximum est définie  pour  le  tablespace  et  que  cette  taille  maximum  soit  atteinte.  Allocation d’une extension libre (allouée à aucun segment) du tablespace d’annulation.  Dans le deuxième cas. un segment d’annulation lui est automatiquement attribué par Oracle. elle ne peut pas en changer ni en utiliser un deuxième.possible.  openmirrors. il est ignoré (sauf si le tablespace d’annulation est défini avec la garantie  de rétention ­ voir ci­dessous). cette durée de conservation peut être insuffisante pour les opérations  flashback.  Oracle  est  susceptible  de  ne  plus  pouvoir  satisfaire  la  durée de conservation.  q q q q q Si aucune extension ne peut être allouée au segment.  elle  inscrit  son  identifiant  dans  l’en­tête  du  segment  puis utilise les blocs dont elle a besoin dans le reste du segment. Dans la mesure du possible.  en  cas  de  manque  d’espace  dans  le  tablespace  d’annulation  (taille  fixe  trop  faible  ou  taille maximum atteinte).  Oracle  s’arrange  pour  avoir  un  nombre  suffisants  de  segments  d’annulation  afin  d’y  répartir  les  transactions  (dans  l’idéal une seule transaction par segment d’annulation).  6. Fonctionnement d’un segment d’annulation  Lorsqu’une transaction démarre. De même.  Acquisition  (transfert)  d’une  extension  non  expirée  d’un  autre  segment  d’annulation. l’erreur snapshot too old peut se produire si le tablespace d’annulation est trop petit et donc la  durée de conservation trop faible.  q q Si un segment d’annulation est plein.  Lorsque  une  transaction  commence  à  utiliser  un  segment  d’annulation. Une extension d’un segment d’annulation peut avoir trois états :  q active : l’extension contient des informations d’annulation d’au moins une transaction active.  Extension  d’un  fichier  de  données  du  tablespace  d’annulation  (si  possible)  puis  allocation  d’une  extension  libre.3- . il est garanti qu’une information d’annulation ne sera pas écrasée tant qu’elle  n’est  pas  expirée  (sa  durée  de  conservation  n’est  pas  écoulée). Les segments  d’annulation  sont  utilisés  de  manière  concurrente  par  l’ensemble  des  transactions  de  la  base  de  données. Dans ce cas. une erreur (ORA-30036) est générée. Par  contre.Algeria Educ .  Pour  résoudre  ce  problème.

4- © ENI Editions .  . Les extensions non expirées sont réutilisées le plus tard possible  pour satisfaire la durée de conservation.  le  segment d’annulation libère des extensions expirées en commençant par les plus anciennes.  Ce  mécanisme n’existe pas avec la gestion manuelle.  Un  segment  d’annulation  qui  a  grossi  pourra  rétrécir  quand  l’activité  transactionnelle  diminuera.Il faut noter qu’avec la gestion automatique de l’annulation.All rights reserved . une extension expirée (voire non expirée) d’un segment  d’annulation  peut  être  transférée  à  un  autre  segment  d’annulation  qui  a  besoin  d’espace  supplémentaire.  Pour  rétrécir. Il permet de retarder le moment où le tablespace d’annulation est  agrandi ou le moment où une erreur est générée.Algeria Educ .

 Ce paramètre est statique ; il faut redémarrer la base de données pour changer  le mode de gestion des informations d’annulation.  En configuration standard.  Le  nom  de  n’importe quel tablespace d’annulation peut être indiqué. vous devez positionner le paramètre UNDO_RETENTION à au moins 86400 (secondes) et prévoir de  l’espace dans le tablespace d’annulation.  La  durée  de  rétention actuellement utilisée peut être consultée dans la colonne TUNED_ UNDORETENTION de la vue V$UNDOSTAT. sauf  si la base de données a des besoins spécifiques à des moments particuliers de son fonctionnement.  Comme indiqué précédemment. Démarrage de la base de données en mode automatique  Si  le  paramètre UNDO_TABLESPACE  est  défini.  3.  UNDO_RETENTION Ce  paramètre  spécifie. Ce paramètre est dynamique. Par défaut.  UNDO_TABLESPACE Ce  paramètre  spécifie  le  nom  du  tablespace  d’annulation  à  utiliser  lors  du  démarrage  de  l’instance.  Le  paramètre  UNDO_TABLESPACE  est  surtout  intéressant  si  la  base  de  données  dispose  de  plusieurs  tablespaces  d’annulation ; il  permet  d’indiquer  le  nom  du  tablespace  d’annulation  à  utiliser  lors  du  démarrage  de  l’instance.All rights reserved . définir ce paramètre ne présente réellement un intérêt que si  vous souhaitez utiliser les fonctionnalités de flashback ou si le tablespace d’annulation est défini avec la garantie de  rétention.  et  éventuellement  affecter  des  valeurs  aux  paramètres  UNDO_TABLESPACE et UNDO_RETENTION ;  créer au moins un tablespace d’annulation. lors de la définition de la base de données.  le  paramètre  UNDO_RETENTION  peut  être  modifié  dynamiquement  (pas  besoin  de  redémarrer  la  base de données).  ce  paramètre  spécifie  une  limite  inférieure  pour  la  durée  de  rétention  des  informations  d’annulation. Dans ce cas. le  paramètre  peut  être  utilisé  pour  indiquer  le  tablespace  d’annulation  à  utiliser  au  démarrage  de  l’instance. la durée de rétention des informations d’annulation est réglée  automatiquement  par  Oracle.  Ce  paramètre est particulièrement utile en configuration Real Application Clusters pour que chaque instance qui ouvre la  base de données utilise un tablespace spécifique.  Si  le  tablespace  d’annulation  est  de  taille  fixe.  ce  paramètre  est  ignoré  (sauf  si  le  tablespace d’annulation est défini avec la garantie de rétention) ; si le tablespace d’annulation est auto­extensible.Algeria Educ .  Les  valeurs  possibles  sont  AUTO (valeur par défaut) ou MANUAL. si vous souhaitez pouvoir interroger les données telles qu’elles étaient 24 heures plus tôt à l’aide d’une  requête flashback.  la  durée  de  rétention  des  <informations  d’annulation  dans  les  segments  d’annulation.Mise en œuvre de la gestion automatique  1. ou ultérieurement. il faut :  q positionner  le  paramètre  UNDO_MANAGEMENT  à  AUTO. il est plutôt rare d’avoir plusieurs tablespaces d’annulation dans la base de données.  En  cas  de  nécessité. Ce paramètre est dynamique. Les paramètres d’initialisation  UNDO_MANAGEMENT Ce  paramètre  indique  le  mode  de  gestion  souhaité  pour  les  informations  d’annulation. Principe  Pour mettre en œ uvre la gestion automatique des informations d’annulation.1- . La valeur doit être comprise entre 0 et 2^32­1 (plus de 49 000 jours) ; la valeur par défaut est de 900  (soit 15 minutes).  Si  le  tablespace  n’existe pas (ou n’est  openmirrors. depuis la version 10. ce paramètre est vide et le premier tablespace  d’annulation  trouvé  dans  la  base  de  données  est  utilisé  (voir  plus  loin) ; le  paramètre  UNDO_TABLESPACE  est  alors  renseigné par Oracle. il sera possible de changer  de tablespace d’annulation actif sans redémarrer la base de données.  Avec le réglage automatique de la durée de rétention.  Ultérieurement.  en  secondes.  Par exemple.com © ENI Editions . en modifiant dynamiquement la valeur de ce paramètre (ALTER SYSTEM).  le  tablespace  indiqué  est  utilisé.  q 2.

  l’instance  utilise  le  premier  tablespace  d’annulation  disponible  et  indique  son  nom  dans  le  paramètre  UNDO_ TABLESPACE. mais uniquement avec le segment d’annulation SYSTEM.  .pas correct ou indisponible). vous  obtiendrez l’erreur ORA-01552 :  ORA-01552: imposs util.Algeria Educ . segment d’annul. n’oubliez pas de créer un tablespace d’annulation. lors  de la première transaction portant sur un segment stocké dans un tablespace autre que le tablespace SYSTEM. Déconnexion imposée La cause de l’erreur est indiquée dans le fichier des alertes :  ORA-30012<: tablespace d’annulation ’xxx’ inexistant ou de type erroné Conclusion : si  le  paramètre  UNDO_TABLESPACE  est  spécifié  au  démarrage  de  l’instance. Dans ce cas.2- © ENI Editions .  Si  elle  n’en  trouve  aucun. le démarrage échoue avec l’erreur ORA-01092 :  ORA-01092: instance ORACLE interrompue.  Si  le  paramètre  UNDO_TABLESPACE  n’est  pas  défini  ou  est  vide. ’DATA’ Conclusion : en gestion automatique.  l’instance  démarre  quand même et ouvre la base de données. système pour le tablespace non syst.  il  est  important  que  le  tablespace indiqué existe et soit correct.All rights reserved .

  Vous pouvez créer le tablespace d’annulation après la définition de la base de données grâce à l’ordre SQL CREATE UNDO TABLESPACE.. etc. il est forcément READ WRITE.  Les  segments  d’annulation  ainsi  créés  ne  sont  pas  supprimés ; si  Oracle  estime  ne  plus  en  avoir  besoin  (baisse  de  l’activité  transactionnelle).  avec  un  fichier  de  données  de  10 Mo.  2.) est sans effet.  il  les  passe  OFFLINE. les segments d’annulation stockés dans le tablespace d’annulation actuellement actif sont  automatiquement  activés.  3.  Il  est  impossible  et  interdit  de  créer  d’autres  segments  (table.  dimensionnement.. pourquoi le  faire puisque tout est automatique.  Si  l’instance  en  a  de  nouveau besoin ultérieurement.  Ils  sont  nommés  sous  la  forme_SYSSMU*.  Oracle  crée  un  tablespace  d’annulation  par  défaut. Création d’un tablespace d’annulation  Vous  pouvez  créer  le  tablespace  d’annulation  lors  de  la  création  de  la  base  de  données  grâce  à  la  clause  UNDO TABLESPACE de l’ordre SQL CREATE DATABASE.  En fonction des besoins..1- . elle les repassera ONLINE. Oracle ne retourne pas d’erreur mais ne fait rien. positionné en AUTOEXTEND.  et  dimensionnés  (nombre  et  taille)  automatiquement  en  fonction  des besoins.  Il  est  possible  de  changer  de  tablespace d’annulation dynamiquement.  En  version  9.  désactivation.  Plusieurs  tablespaces  d’annulation  (contenant  leurs  propres  segments  d’annulation)  peuvent  être  créés  dans  la  base  de  données  mais  seulement  un  est  actif  (utilisé).  mais  Oracle retournera une erreur à l’ouverture de la base (voir la section Mise en œ uvre de la gestion automatique).  la  base  sera  bien  créée  avec  le  tablespace  spécifié  dans  la  clause  UNDO TABLESPACE.  Syntaxe  [ BIGFILE | SMALLFILE ] UNDO TABLESPACE nom [ DATAFILE spécification_fichier [.] ] Exemple :  SMALLFILE UNDO TABLESPACE undotbs DATAFILE ’e:\oradata\hermes\undotbs01.  ce  paramètre n’existe plus et tout se passe comme s’il était à TRUE. et utiliser n’importe quelle taille de bloc  (pas uniquement la taille de bloc standard).  Oracle  retournait  une  erreur  si  une  opération  interdite  était  tentée.  index)  dans  un  tablespace  d’annulation. Caractéristiques du tablespace d’annulation  Le  tablespace  d’annulation  est  obligatoirement  géré  localement.  suppression. De toute façon.  Syntaxe  openmirrors.  s’il  le  juge  nécessaire. Le tablespace d’annulation actif ne peut pas être désactivé (passé OFFLINE)  ou supprimé.Algeria Educ .Gestion du tablespace d’annulation  1.  Tenter  de  gérer  directement  les  segments  d’annulation  (ajout. des segments d’annulation sont automatiquement créés et gérés par Oracle (et par  lui  seul).com © ENI Editions .  Il  était  possible  de  faire  disparaître  ces  erreurs  en  mettant  le  paramètre  UNDO_SUPPRESS_ ERRORSà  TRUE.  Autrement.  Si  le  paramètre  d’initialisation  UNDO_MANAGEMENT  est  positionné  à  AUTO  et  que  la  clause  UNDO TABLESPACE  n’est  pas  présente.  nommé  SYS_UNDOTBS.  avec  une  gestion  automatique  des  extensions  (EXTENT MANAGEMENT LOCAL AUTOALLOCATE).All rights reserved . LOGGING et PERMANENT. Fonctionnement du tablespace d’annulation  Dans un tablespace d’annulation.  Oracle  crée  automatiquement  de  nouveaux  segments  d’annulation  dans  le  tablespace  d’annulation  actif. Il peut être SMALLFILE ou BIGFILE.  activation.dbf’ SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1024M Si un nom a été indiqué dans le paramètre d’initialisation UNDO_TABLESPACE.  Depuis  la  version  10.  à  un  instant  donné  par  l’instance. Par contre. utilisez le même nom dans la clause UNDO TABLESPACE.

  L’ancien  tablespace  reste  ONLINE ; ce  sont  les  segments  d’annulation  qu’il  contient  qui  sont  OFFLINE.  Les segments d’annulation stockés dans le nouveau tablespace d’annulation sont activés (passés ONLINE).  le  tablespace  d’annulation  courant  est  désactivé  mais  aucun  n’est  activé  à  la  place.dbf’ SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE 1024G RETENTION GUARANTEE .CREATE [ BIGFILE | SMALLFILE ] UNDO TABLESPACE nom DATAFILE spécification_fichier_data [.2- © ENI Editions . nom doit être le nom d’un  tablespace  d’annulation valide  (doit  être ONLINE  notamment).  Si  un  des  segments  d’annulation  est  utilisé  par  des  transactions  actives. Modification d’un tablespace d’annulation  Le  tablespace  d’annulation  peut  être  modifié  avec  les  ordres  SQL  habituels  ALTER TABLESPACE  ou  ALTER DATABASE  .  avec  une  gestion automatique des extensions.  peut  être  utilisée  pour  effectuer  des  opérations  d’administration  sur  le  tablespace d’annulation (voir plus loin).  Cette  situation. il n’est pas immédiatement passé OFFLINE mais mis PENDING OFFLINE (vue V$ROLLSTAT) ; il n’est plus utilisable  pour de nouvelles transactions et il passera définitivement OFFLINE lorsqu’il ne contiendra plus de transaction active. les segments  d’annulation  vont  grossir.L’option  GUARANTEE  est  généralement  utilisée  en  conjonction  avec  les  fonctionnalités  de  flashback ; elle  permet  de  garantir  la  capacité  à  interroger  les  données  telles  qu’elles  étaient  à  tout  instant  dans  le  passé.  Il  est  donc  très  important  de  dimensionner  en  conséquence  le  tablespace  d’annulation  et/ou  de  lui  permettre  de  grossir  en  cas  de  besoin  (clause  AUTOEXTEND  à  ON  sur  un  des  fichiers  de  données  du  tablespace).  normalement  temporaire..  Si  la  modification  est  différée  (SCOPE = SPFILE). Utilisez l’option GUARANTEE en connaissance de cause : en cas de problème d’espace.All rights reserved . Exemple (ici utilisation d’un tablespace BIGFILE) :  CREATE BIGFILE UNDO TABLESPACE bigundotbs DATAFILE ’e:\oradata\hermes\bigundotbs. Oracle fera échouer  les  mises  à  jour  pour  garantir  la  durée  de  rétention  des  informations  d’annulation. Il peut être désactivé  (passé OFFLINE) si nécessaire.  Si la durée de rétention est élevée et qu’il y a une forte activité de mise à jour sur la base de données.  Si  nom est une chaîne vide (’’).  Un  tablespace  d’annulation  actif  ou  un  tablespace  d’annulation  qui  a  des  segments d’annulation  PENDING OFFLINE ne peut être ni supprimé. les segments d’annulation stockés dans l’ancien tablespace  d’annulation  sont  désactivés  (passés  OFFLINE).] [ RETENTION GUARANTEE | NOGUARANTEE ] [ BLOCKSIZE valeur [K] ] .  4. la clause EXTENT MANAGEMENT n’est pas utile.  La clause RETENTION indique si la rétention est garantie (GUARANTEE) ou non (NOGUARANTEE) ; NOGUARANTEE est l’option  par défaut..Algeria Educ .  Lors d’un changement de tablespace d’annulation actif. Les  options  des  deux  syntaxes  ont  la  même  signification  que  les  options  de  même  nom  de  l’ordre  SQL  CREATE TABLESPACE (voir la section Tablespace permanent du chapitre Gestion des tablespaces et des fichiers de données). voir la section Mise en œ uvre de la gestion automatique).. aucune vérification n’est  faite  sur  le  nom indiqué. Changement de tablespace d’annulation actif  Si la base dispose de plusieurs tablespaces d’annulation. mais un tablespace d’annulation portant ce nom devra exister lors du prochain redémarrage (sous peine  d’erreur ORA-01092. il est possible de changer de tablespace actif en modifiant  la valeur du paramètre UNDO_TABLESPACE(paramètre dynamique). ni désactivé (passé OFFLINE).  Il  n’est  simplement plus le tablespace actif pour l’annulation (défini par le paramètre UNDO_TABLESPACE).  dans  la  limite  du  paramètre  UNDO_RETENTION.  Syntaxe  ALTER SYSTEM SET UNDO_TABLESPACE = nom [ clause_SCOPE ].  Dans les deux cas.  5. Elle peut être indiquée. mais la seule valeur autorisée  est  EXTENT MANAGEMENT LOCAL AUTOALLOCATE  :  le  tablespace  d’annulation  est  forcément  géré  localement. Si la modification est immédiate (SCOPE = MEMORY ou  BOTH).

Algeria Educ .  Un tablespace d’annulation peut être supprimé même s’il contient des informations d’annulation qui n’ont pas  encore  expirées  (vis­à­vis  de  la  valeur  du  paramètre  UNDO_RETENTION). vous pouvez modifier la clause RETENTION :  ALTER TABLESPACE nom_tablespace RETENTION GUARANTEE | NOGUARANTEE .com © ENI Editions .All rights reserved .  openmirrors. cela même si le tablespace  d’annulation a été défini avec la clause RETENTION GUARANTEE. Suppression d’un tablespace d’annulation  La suppression d’un tablespace d’annulation s’effectue avec l’ordre SQL habituel DROP TABLESPACE. Un tablespace d’annulation actif ou un tablespace d’annulation qui a des segments d’annulation PENDING OFFLINE ne  peut pas être désactivé (passé OFFLINE).(pour la gestion des fichiers de données).  La  clause  INCLUDING CONTENTS  est  implicite ; les  segments  d’annulation  stockés  dans  le  tablespace  sont  automatiquement supprimés.  En complément. Par contre.  Un  tablespace  d’annulation  peut  être  passé  OFFLINE  même  s’il  contient  des  informations  d’annulation  qui  n’ont pas encore expirées (vis­à­vis de la valeur du paramètre UNDO_RETENTION). la clause doit être mentionnée avec l’option AND DATAFILES pour supprimer  les fichiers de données associés.  cela  même  si  le  tablespace  d’annulation a été défini avec la clause RETENTION GUARANTEE.3- .  6.  Un tablespace d’annulation actif ou un tablespace d’annulation qui a des segments d’annulation PENDING OFFLINE ne  peut pas être supprimé.

  q q q q En  complément.  TABLESPACE_NAME  Nom du tablespace d’annulation qui contient l’extension.  STATUS  Statut  des  informations  d’annulation  stockées  dans  l’extension.status 2 FROM dba_undo_extents © ENI Editions .  BLOCKS  Taille de l’extension en blocs Oracle.  la  vue  DBA_UNDO_EXTENTS  donne  plus  spécifiquement  des  informations  sur  les  extensions  allouées  dans les tablespaces d’annulation :  DBA_UNDO_EXTENTS  SEGMENT_NAME  Nom du segment d’annulation auquel l’extension appartient.extent_id.blocks.  BLOCK_ID  Numéro du premier bloc de l’extension.  vis­à­vis  des  transactions : ACTIVE.  FILE_ID  Identifiant du fichier de données qui contient l’extension.  Exemple :  SQL> SELECT tablespace_name.All rights reserved .Algeria Educ .segment_name.  EXPIRED.1- .  BYTES  Taille de l’extension en octets.  UNEXPIRED.  EXTENT_ID  Numéro de l’extension (0 pour la première).Trouver des informations sur la gestion de l’annulation  1. Trouver des informations sur le tablespace d’annulation  Les  vues  présentées  au  chapitre  Gestion  des  tablespaces  et  des  fichiers  de  données  peuvent  être  utilisées  pour  retrouver des informations sur les tablespaces d’annulation et leurs fichiers de données :  q DBA_TABLESPACESou V$TABLESPACE : informations sur les tablespaces ;  DBA_DATA_FILESou V$DATAFILE : informations sur les fichiers de données ;  DBA_FREE_SPACE : informations sur l’espace disponible à l’intérieur d’un tablespace ;  DBA_SEGMENTS : informations sur les segments alloués à l’intérieur d’un tablespace ;  DBA_EXTENTS : informations sur les extensions allouées à l’intérieur d’un tablespace.

SEGMENT_NAME EXTENT_ID BLOCKS ------------------------.extent_id.  q q Les colonnes intéressantes des différentes vues sont présentées ci­après.---------. Trouver des informations sur les segments d’annulation  Plusieurs vues du dictionnaire permettent d’obtenir des informations sur les segments d’annulation :  q DBA_ROLLBACK_SEGS : informations sur les segments d’annulation ;  V$ROLLNAME : liste des segments d’annulation actuellement ONLINE ou PENDING OFFLINE ;  V$ROLLSTAT : statistiques sur les segments d’annulation actuellement ONLINE ou PENDING OFFLINE.  DBA_ROLLBACK_SEGS SEGMENT_NAME  Nom du segment d’annulation.All rights reserved .  SEGMENT_ID  Numéro du segment d’annulation. UNDOTBS UNDOTBS UNDOTBS UNDOTBS ..segment_name.com .  V$ROLLSTAT USN  Numéro du segment d’annulation. BY tablespace_name.3 ORDER TABLESPACE ---------UNDOTBS UNDOTBS UNDOTBS UNDOTBS ..2- © ENI Editions ..  EXTENTS  openmirrors.  STATUS  Statut du segment d’annulation.---------_SYSSMU10_1216212870$ 0 8 _SYSSMU10_1216212870$ 1 8 _SYSSMU10_1216212870$ 2 128 _SYSSMU10_1216212870$ 3 128 _SYSSMU7_1216212870$ _SYSSMU7_1216212870$ _SYSSMU7_1216212870$ _SYSSMU8_1216212870$ 0 1 2 0 8 8 128 8 STATUS --------UNEXPIRED UNEXPIRED UNEXPIRED UNEXPIRED EXPIRED UNEXPIRED ACTIVE UNEXPIRED 2.  V$ROLLNAME USN  Numéro du segment d’annulation.Algeria Educ .  TABLESPACE_NAME  Nom du tablespace qui contient le segment d’annulation..  NAME  Nom du segment d’annulation.

 Les colonnes intéressantes  de la vue V$UNDOSTAT sont les suivantes :  V$UNDOSTAT BEGIN_TIME  Date/heure de début de la plage.  3.3- .Algeria Educ .  EXTENDS  Nombre de fois où le segment d’annulation s’est étendu (allocation d’une nouvelle extension).  Cette vue était très pratique pour superviser le fonctionnement des segments d’annulation en gestion manuelle ; elle  présente moins d’intérêt en gestion automatique.All rights reserved .  UNDOBLKS  Nombre de blocs d’annulation utilisés en cumulé sur la période.  nombre  de  fois  où  les  transactions  ont  pu  changer  d’extension sans allocation d’une nouvelle extension).  AVEACTIVE  Taille moyenne active du segment d’annulation.  SHRINKS  Nombre de fois où le segment d’annulation a rétréci.  © ENI Editions .  END_TIME  Date/heure de fin de la plage.  WRAPS  Nombre  de  fois  où  le  segment  d’annulation  a  "tourné"  (i.  STATUS  Statut (ONLINE ou PENDING OFFLINE).  WRITES  Nombre d’octets écrits dans le segment d’annulation.  RSSIZE  Taille actuelle utile (sans le bloc d’en­tête) en octets du segment d’annulation.Nombre d’extensions dans le segment d’annulation.e. Se documenter sur les informations d’annulation et les transactions  La vue V$UNDOSTAT permet de trouver des informations sur les informations d’annulation.  HWMSIZE  Plus  grande  taille  jamais  atteinte  en  octets  par  le  segment  d’annulation  (High  Water  Mark  "ligne  de  plus  hautes  eaux").  TXNCOUNT  Nombre de transactions totales sur la période.

used_ublk.v$sql sq 4 WHERE tr.start_time.----------.sql_text 3 FROM v$transaction tr.  SQL> SELECT 2 TO_CHAR(begin_time. USERNAME START_TIME XIDUSN USED_UBLK ------------------------.  une  pour  chaque  plage  de  10  minutes sur les 4 derniers jours.  La valeur QAS peut être estimée en analysant la valeur de la colonne UNDOBLKS de la vue V$UNDOSTAT ; cette colonne  donne le nombre de blocs d’annulation utilisés sur chaque période analysée (soit sur 10 minutes). La première ligne de la vue correspond à la plage en cours (peut faire moins de 10  minutes).tr.Algeria Educ . 2 sq.  La  vue  V$UNDOSTAT  donne  des  statistiques  sur  les  informations  d’annulation  générées  sur  les  4  derniers  jours.tr. Dimensionner le tablespace d’annulation  La vue V$UNDOSTAT peut être utilisée pour dimensionner le tablespace d’annulation. En complément.username.  La  collecte  est  effectuée  par  plages  de  10  minutes ; la  vue  contient  donc  576  lignes.ses_addr = se. Il peut exister moins de lignes si l’instance a démarré depuis moins de 4 jours.---------. et éventuellement le paramètre  UNDO_RETENTIONsi vous avez des erreurs snapshot too old. il convient  peut­être de positionner le paramètre UNDO_RETENTION en conséquence.---------SQL_TEXT -------------------------------------------------------------------OHEU 07/19/08 17:24:04 5 268 DELETE FROM t 4.------------------19/07 16:23 19/07 16:28 15 936 1656 19/07 16:13 19/07 16:23 37 635 1475 19/07 16:03 19/07 16:13 71 1239 2079 19/07 15:53 19/07 16:03 144 638 1479 19/07 15:43 19/07 15:53 38 1242 2082 19/07 15:33 19/07 15:43 268 641 1481 19/07 15:23 19/07 15:33 33 1244 2084 openmirrors. 5 maxquerylen. 3 TO_CHAR(end_time.  Exemple  SQL> SELECT se.’DD/MM HH24:MI’) end_time.MAXQUERYLEN  Durée en secondes de la requête la plus longue sur la période. la vue V$TRANSACTION peut être utilisée pour identifier les transactions courantes.saddr AND se.All rights reserved .-------------------.  MAXCONCURRENCY  Nombre maximum de transactions simultanées sur la période.----------.  TUNED_UNDORETENTION  Durée de rétention compte tenu du réglage automatique réalisé par l’instance. BEGIN_TIME END_TIME UNDOBLKS MAXQUERYLEN TUNED_UNDORETENTION ----------.---------. 6 tuned_undoretention 7 FROM 8 v$undostat.4- © ENI Editions .com . et  en s’assurant que cette valeur est supérieure à la valeur de la colonne MAXQUERYLEN ; si ce n’est pas le cas.v$session se.sql_id = sq.  La  quantité  totale  d’espace  d’annulation  nécessaire  pour  satisfaire  la  durée  de  rétention  peut  être  estimée  par  la  formule DR x QAS.xidusn.  Cette  vue  est  utile  pour  estimer  la  taille  du  tablespace  d’annulation  (voir  la  section  Dimensionner  le  tablespace  d’annulation).sql_id.’DD/MM HH24:MI’) begin_time. DR étant la durée de rétention et QAS la quantité d’espace d’annulation par seconde.tr.  La valeur DR peut être estimée en analysant la valeur de la colonne TUNED_ UNDORETENTION de la vue V$UNDOSTAT. Un historique au­delà de 4  jours est disponible dans la vue DBA_HIST_UNDOSTAT. 4 undoblks.

 soit un peu moins de 133  blocs par secondes.------------------------ 1484 2088 1488 900 Sur cet exemple.MAX(tuned_undoretention) 2 FROM v$undostat..19/07 15:13 19/07 15:23 40 643 19/07 15:03 19/07 15:13 31 1249 19/07 14:53 19/07 15:03 156 648 19/07 14:43 19/07 14:53 33 47 . l’instance a utilisée 79560 blocs en 10 minutes.  © ENI Editions .  La taille de bloc étant de 8 Ko. MAX(UNDOBLKS) MAX(TUNED_UNDORETENTION) ------------.29 Go. Cette estimation est a priori une estimation haute qui considère que le pic d’activité de mise à jour se  produit au moment où la durée de rétention est la plus longue (ce qui n’est pas forcément le cas).All rights reserved . SQL> SELECT MAX(undoblks).5- . en prenant un peu de marge  (10 à 20%).  Lors d’un pic d’activité (traitement batch ?).Algeria Educ . la durée de rétention la plus longue est de 2261 secondes. la quantité totale d’espace d’annulation nécessaire peut être estimée à 2261 x 133 x  8 Ko soit 2.. Le tablespace d’annulation peut être dimensionné en conséquence.

  openmirrors.  La première partie de la fenêtre vous donne des informations sur la configuration actuelle :    Le bouton Modifier un espace disque logique permet de changer de tablespace d’annulation actif.  L’onglet Activité du système affiche des informations sur l’activité passée du système.  le  lien  Segments  d’annulation  (cadre  Stockage)  permet  d’accéder  à  la  page  de  gestion  des  segments d’annulation manuels. modifier la taille d’un fichier de données.Utiliser le Database Control  Le  tablespace  d’annulation et ses fichiers de données s’administrent  à  partir  des  pages Espaces  disque  logiques et  Fichiers de données (voir la section Utiliser le Database Control du chapitre Gestion des tablespaces et des fichiers de  données).com © ENI Editions .  Toujours sur la page Serveur.). etc.1- . cette page n’est d’aucune utilité.  La deuxième partie de la fenêtre vous fournit des conseils sur la configuration :    Le  bouton  Modifier  l’espace  disque  logique  d’annulation  (undo  tablespace)  permet  de  modifier  le  tablespace  d’annulation actif (ajouter un fichier de données.Algeria Educ .  Sur  la  page  Serveur. En gestion automatique des segments d’annulation. le lien Gestion automatique de l’annulation (cadre Configuration de base de données)  permet d’accéder à la page de gestion automatique de l’annulation.All rights reserved .

 mais aussi la durée de rétention maximale possible ("meilleur choix  possible")  compte  tenu  de  la  taille  maximale  possible  du  tablespace  d’annulation  (3371  minutes  pour  1022  Mo  sur  l’exemple ci­dessus). le conseiller propose une taille minimum et une taille recommandée pour le tablespace d’annulation..  le  champ  Durée  (cadre  Période  d’analyse)  et  la  taille  minimale  du  tablespace d’annulation (cadre Résultats d’analyse) sont mis à jour en conséquence.  En résultat. Vous pouvez modifier ces valeurs dans le cadre Période d’analyse puis cliquer sur le bouton  Exécuter l’analyse pour mettre à jour les résultats. un  bouton  Appliquer  s’affiche  dans  la  fenêtre.  .  vous  appliquez  la  nouvelle  durée  au  paramètre UNDO_RETENTION (ALTER SYSTEM SET UNDO_RETENTION = .  Le  lien  Afficher  le  graphique  permet  d’afficher  un  graphique  qui  donne  une  estimation  de  la  taille  du  tablespace  d’annulation (en Mo) en fonction de la durée de conservation des informations d’annulation (en minutes) :    Le graphique montre notamment l’espace disque requis pour la durée de rétention actuelle réglée automatiquement  (304 Mo pour 31 minutes sur l’exemple ci­dessus).All rights reserved .Le  bouton  Modifier  la  conservation  pour  annulation  (undo)  permet  de  modifier  la  valeur  du  paramètre  UNDO_RETENTION.).Algeria Educ .  Si  vous  cliquez  sur  un  point  du  graphique.  veillez  à  utiliser  une  période  d’analyse  représentative  de  l’activité  de  votre  base  de  données.2- © ENI Editions ..  Si  vous  cliquez  sur  ce  bouton.  L’analyse est basée sur une période d’analyse (par défaut les sept derniers jours) et une durée de conservation des  informations d’annulation.  Si vous avez modifié le champ Durée du cadre Période d’analyse (manuellement ou en cliquant sur le graphique).  Pour  les  analyses.

nommé "XXXX".All rights reserved . segment d’annul.  Action(s)  Si  le  tablespace  d’annulation  est  trop  petit  par  rapport  à  la  durée  de  rétention..  Typiquement.1- ...  redémarrez  la  base  de  données  en  activant  la  gestion  automatique.  dans  le  temps  ou  dans  l’espace.  Cause(s)  Le  segment  d’annulation  n’arrive  pas  à  s’étendre  car  le  tablespace  dans  lequel  il  est  stocké  n’a  pas  suffisamment  d’espace disponible et ne peut lui­même s’étendre.. Dans le cas contraire.. Si le tablespace d’annulation est déjà très volumineux.  Action(s)  Vérifiez si la base a démarré en gestion automatique des segments d’annulation (paramètre UNDO_MANAGEMENT).  ORA-30036: impossible d’étendre le segment par N dans le tablespace d’annulation’XXXX’ Explication  Un segment d’annulation n’arrive pas à s’étendre. une forte activité de mise à jour et des  lectures longues. vous pouvez envisager  de le mettre en RETENTION GUARANTEE.  ORA-01555: clichés trop vieux : rollback segment no N. trop petit Explication  C’est  la  "fameuse"  erreur snapshot  too  old  ("cliché  trop  vieux").). simultanément sur une table.) ;  soit  en  autorisant  un  fichier  de  données  du  tablespace  à  s’étendre  automatiquement (ALTER DATABASE DATAFILE ..  Cause(s)  La  gestion  automatique  des  segments  d’annulation  n’est  pas  active...Algeria Educ . Dans le  cas  contraire. créez­en un.Problèmes courants et solutions  ORA-01552: imposs util.) ;  soit  en  augmentant  la  taille  d’un  fichier  de  données  du  tablespace  (ALTER DATABASE DATAFILE .. système pour le tablespace non syst.. car elle requiert une ancienne valeur qui n’est plus présente dans le segment d’annulation. avec le risque de voir certaines mises à jour échouer (généralement avec une  erreur ORA-30036).  Vérifiez  s’il  existe  un  tablespace  d’annulation (dans la vue DBA_TABLESPACES)..’XXXX’ Explication  Il  n’y  a  pas  de  segment  d’annulation  actif  (ONLINE)  autre  que  le  segment  d’annulation  SYSTEM  (vérifiable  dans  V$ROLLNAME) et une transaction concerne le tablespace XXXX.  l’activité de mise à jour et l’activité de lecture :  openmirrors.  augmentez  sa  taille  (voir  l’erreur  précédente pour les actions possibles). RESIZE .  Une  autre  approche  pour  résoudre  ce  problème  consiste  à  essayer  de  séparer.  Une  lecture  cohérente  n’a  pas  pu  être  menée  à  son  terme.  La  gestion  automatique  des  segments  d’annulation est active mais il n’y a pas de tablespace d’annulation actif.  Action(s)  Il faut augmenter l’espace disponible dans le tablespace :­ soit en lui allouant un nouveau fichier de données (ALTER TABLESPACE . ce problème se produit lorsqu’il y a..  Cause(s)  Le tablespace d’annulation n’est pas en RETENTION GUARANTEE et a manqué d’espace ; il n’a pas pu honorer la durée de  rétention. ADD DATAFILE .com © ENI Editions . AUTOEXTEND ON .

  lancer  l’édition  du  volumineux  rapport  qui  pose  problème  à  un  moment  plus  propice dans la journée ;  dans  l’espace : par  exemple.  q .Algeria Educ .q dans  le  temps : par  exemple.2- © ENI Editions .  mettre  en  place  un  petit  mécanisme  de  réplication  et  lancer  l’édition  du  volumineux rapport qui pose problème sur les tables répliquées.All rights reserved .

 les droits des utilisateurs sont gérés avec la notion de privilège. non­ réutilisation avant un certain  temps.) ;  de définir les droits de chaque utilisateur à l’intérieur de la base de données.com © ENI Editions .1- . etc. Oracle permet :  q de  définir  les  utilisateurs  qui  peuvent  se  connecter  à  la  base  de  données  (avec  une  identification  par  le  système d’exploitation ou par la base de données) ;  de définir dans quel(s) tablespace(s) un utilisateur peut créer des objets (éventuellement aucun) ;  de limiter l’utilisation des ressources système ;  d’imposer une politique de gestion de mots de passe (expiration périodique. Pour en savoir plus. vous pouvez consulter la documentation Oracle® Database Security Guide.  q Les  privilèges  peuvent  être  attribués  directement  aux  utilisateurs  ou  par  l’intermédiaire  de  rôles.Algeria Educ .All rights reserved . mettre à jour les données de la table CLIENT) : c’est la  notion de privilège objet. créer une table) : c’est la notion de privilège système ;  d’accéder à un objet d’un autre utilisateur (par exemple.  Un privilège est le droit :  q d’exécuter un ordre SQL en général (par exemple.  openmirrors.  q q q q Dans une base de données Oracle.  Un  rôleest  un  regroupement  nommé  de  privilèges  (systèmes  et  objets)  qui  peut  être  attribué  en  tant  que  tel  à  un  utilisateur ; cet  utilisateur reçoit alors automatiquement les privilèges contenus dans le rôle. Les rôles facilitent la gestion des droits.Principes  Pour la gestion de la sécurité.  Oracle  propose  par  ailleurs  une  fonctionnalité  d’audit  qui  permet  de  tracer  l’activité  des  utilisateurs  dans  la  base  de  données.

  Les fonctionnalités de gestion des mots de passe proposées par Oracle ne sont pas utilisables (ce n’est pas Oracle  qui gère le mot de passe).  Pour faire le lien entre le nom de l’utilisateur dans le système d’exploitation et le nom de l’utilisateur dans la base  de données.  Syntaxe  CREATE USER nom IDENTIFIED { BY mot_de_passe | EXTERNALLY } [ DEFAULT TABLESPACE nom_tablespace ] [ TEMPORARY TABLESPACE nom_tablespace ] [ QUOTA { valeur [K|M] | UNLIMITED } ON nom_tablespace [. Mode d’identification de l’utilisateur  Un  utilisateur  peut  être  identifié  par  Oracle  ou  par  le  système  d’exploitation.  Par exemple.  Les  deux  modes  d’identification  sont  utilisables simultanément dans la même base de données.  le  nom  de  domaine.  Le paramètre REMOTE_OS_AUTHENTpeut. Identification par le système d’exploitation  L’utilisateur se connecte à la base sans saisir de nom ni de mot de passe.. Exemple :  © ENI Editions .All rights reserved .  2.  Oracle  vérifie  le  nom  et  le  mot  de  passe de l’utilisateur..Algeria Educ . valeur par défaut). Les fonctionnalités de gestion des mots de passe proposées par Oracle sont utilisables. Création d’un utilisateur  L’ordre SQL CREATE USER permet de créer un nouvel utilisateur.Créer et modifier les utilisateurs  1.  SQL> CONNECT / Connecté.  ou  à  défaut.  a.1- . Mettre le paramètre REMOTE_OS_AUTHENT à  TRUE peut être dangereux si le réseau n’est pas sécurisé.  SQL> CONNECT oheu/rx239$ Connecté. être positionné à TRUE pour indiquer si les utilisateurs distants sont  identifiables par cette méthode (FALSE pour interdire. le nom de l’utilisateur au niveau  du système d’exploitation et le nom de l’utilisateur dans Oracle sont identiques.] ] [ PROFILE nom_profil ] [ PASSWORD EXPIRE ] [ ACCOUNT { LOCK | UNLOCK } ] . Oracle ne vérifie pas le mot de passe mais contrôle simplement que le nom de l’utilisateur.  fait  partie  du  nom  de  l’utilisateur : SRVWINORA\VDEP  par  exemple.  Le préfixe peut être égal à une chaîne vide (OS_AUTHENT_PREFIX = "") ; dans ce cas. Ce paramètre est déprécié en version 11. l’utilisateur ayant pour nom vdep au niveau du système d’exploitation pourra se connecter à la base  par un CONNECT / uniquement s’il existe un compte Oracle ops$vdep. au niveau du système  d’exploitation.  le  nom  de  la  machine. correspond à un nom d’utilisateur dans la base de données.. Identification par Oracle  L’utilisateur  se  connecte  à  la  base  en  saisissant  un  nom  et  un  mot  de  passe. L’identification initiale a été réalisée par  le système d’exploitation. de plus. Oracle utilise un préfixe défini par le paramètre OS_AUTHENT_PREFIX(par défaut égal à OPS$).  Sur  plate­forme  Windows.  b.  C’est  ce  nom  complet  qui  doit  être  préfixé  pour  constituer  le  nom  du  compte Oracle (le tout en majuscules) : OPS$SRVWINORA\VDEP par exemple.

q Utilisateur identifié par l’OS avec uniquement les clauses obligatoires  CREATE USER "OPS$SRVWINORA\VDEP" IDENTIFIED EXTERNALLY. le tablespace temporaire par défaut de la base de données est affecté à l’utilisateur (voir la  section Tablespace temporaire du chapitre Gestion des tablespaces et des fichiers de données).Algeria Educ .  Vous  pouvez  indiquer  le  nom  d’un  tablespace  temporaire.All rights reserved .  soit  d’interdire  temporairement  à  un  utilisateur  de  se  connecter  sans  supprimer  son  compte.  par  exemple). Le nom de l’utilisateur doit respecter les règles de nommage d’Oracle présentées à la section La  base  de  données  du  chapitre  Les  bases  de  l’architecture  Oracle. Gérer les droits).  Si  ce  n’est  pas  le  cas. Par la suite.  TEMPORARY TABLESPACE Cette  clause  indique  dans  quel  tablespace  les  segments  temporaires  de  l’utilisateur  sont  créés  (lors  d’un  tri.  il  faut  placer  le  nom  entre  guillemets. le mot de passe initial de l’utilisateur est spécifié.  Si la clause est omise.  ou  le  nom  d’un  groupe  de  tablespaces  temporaires.  DEFAULT TABLESPACE Cette clause indique dans quel tablespace les segments de l’utilisateur sont créés par défaut (c’est­à­dire si aucune  clause TABLESPACE n’est présente lors de la création du segment).  Cette  clause  présente  surtout  un  intérêt  pour  les  utilisateurs qui peuvent créer des segments : les développeurs.  il  suffit  d’affecter  la  valeur FALSE au paramètre SEC_CASE_SENSITIVE_LOGON (mais ce n’est pas conseillé pour la sécurité).  Pour qu’un  nouvel  utilisateur  puisse  effectivement  se  connecter.2- © ENI Editions . Notez  la  syntaxe  particulière  pour  spécifier  le  nom  de  l’utilisateur  OPS$SRVWINORA\ VDEP : les  guillemets  sont  nécessaires car le nom contient des caractères non autorisés (barre oblique inverse). et jusqu’à quelle limite.  Cette  fonctionnalité  peut  toujours  être  utilisée  mais  il  est  plus  simple  de  verrouiller/déverrouiller  explicitement le compte (ACCOUNT LOCK | UNLOCK). il faudra toujours  utiliser la même syntaxe pour gérer cet utilisateur. sauf si la fonctionnalité de contrôle  de la complexité des mots de passe est mise en œ uvre (nouveauté de la version 8 ­ voir plus loin).  Il  est  donc  possible  d’avoir  des  comptes  pour  les  utilisateurs  sans  que  ces  derniers  aient  le  droit  de  se  connecter.  IDENTIFIED Cette  clause  indique  si  l’utilisateur  est  identifié  par  le  système  d’exploitation  (EXTERNALLY)  ou  par  Oracle  (BY mot_de_passe). le tablespace permanent par défaut de la base de données est affecté à l’utilisateur (voir la  section Tablespace permanent du chapitre Gestion des tablespaces et des fichiers de données).  Dans le cas d’une identification par Oracle.  Cette  fonctionnalité  était  intéressante  en  version  7  puisqu’elle  permettait  soit  de  préparer  des  comptes  utilisateur  sans  les  activer  tout  de  suite. q Utilisateur identifié par Oracle avec des clauses supplémentaires  CREATE USER oheu IDENTIFIED BY tempo DEFAULT TABLESPACE data QUOTA UNLIMITED ON data PASSWORD EXPIRE. plus rarement les utilisateurs finaux.  Depuis la version 11.  Si la clause est omise.  Pour le mot de passe. les règles de nommage d’Oracle doivent être respectées.  openmirrors.  Si  vous  souhaitez  avoir  des  mots  de  passe  non  sensibles  à  la  casse.  en  lui  attribuant le privilège système CREATE SESSION (cf.  il  faut  en  plus  lui  donner  le  droit  de  le  faire.  La notion de tablespace par défaut n’empêche pas l’utilisateur de créer des objets dans un autre tablespace (s’il a un  quota  sur  le  tablespace  en  question) ; elle  permet  simplement  de  spécifier  un  tablespace  par  défaut  si  l’utilisateur  omet  la  clause  TABLESPACE  lors  de  la  création  d’un  segment. les mots de passe sont par défaut.  QUOTA Cette clause indique dans quel(s) tablespace(s) l’utilisateur peut créer des objets.com . sensibles à la casse (paramètre SEC_CASE_SENSITIVE_LOGON  égal  à TRUE  par  défaut).  Les options de l’ordre SQL CREATE USER sont :  nom Nom de l’utilisateur. les testeurs.

Algeria Educ .  Par défaut.  le  compte  existe  mais  l’utilisateur  ne  peut  pas  se  connecter.  L’ordre  SQL  ALTER USER  pourra  être  utilisé  plus  tard  pour  déverrouiller  le  compte  de  l’utilisateur  (cf. une erreur est retournée :  q Aucun quota sur le tablespace  ORA-01950: pas de privilèges sur le tablespace ’DATA’ q Dépassement de quota sur le tablespace  ORA-01536: dépassement du quota d’espace affecté au tablespace ’DATA’ PROFILE Cette clause indique le profil attribué à l’utilisateur. © ENI Editions . La notion de profil est présentée à la section Utiliser les profils.  En  l’occurrence.  le  compte  "propriétaire"  de  l’application)  et  uniquement  sur  les  tablespaces  strictement  nécessaires  et  suffisants.All rights reserved ..  il  ne  faut  donner  des  quotas  qu’aux  utilisateurs  qui  en  ont  besoin  (les  développeurs. Modification d’un utilisateur  L’ordre SQL ALTER USER permet de modifier un utilisateur.  Le  fait  qu’une  clause  DEFAULT TABLESPACE  ait  été  utilisée  ne  donne  aucun  quota  sur  le  tablespace  en  question ; ce sont deux mécanismes différents. les utilisateurs n’ont aucun quota sur aucun tablespace. sera invité à changer  le mot de passe qui lui a été attribué initialement.  Cette fonctionnalité ne concerne que les utilisateurs qui peuvent créer des segments.  Si le compte est créé avec l’option PASSWORD EXPIRE.  PASSWORD EXPIRE Cette clause permet de forcer une modification du mot de passe lors de la première connexion (le mot de passe de  l’utilisateur est expiré).  Créer  et  modifier  les  utilisateurs).  Si  un  utilisateur  a  le  droit  de  créer  des  segments. il vaut mieux éviter de donner des quotas à ces utilisateurs sur le tablespace SYSTEM ou le tablespace  SYSAUX.  3. l’utilisateur.La notion de QUOTA permet de limiter l’espace qu’un utilisateur peut employer dans un tablespace avec les segments  qu’il crée.  Dans  la  pratique. Cette clause est sans objet si l’utilisateur est identifié par le système d’exploitation.. sauf les DBA qui ont un quota illimité sur tous les  tablespaces.  Si  le  compte  est  créé  avec  l’option  LOCK.  Si un utilisateur cherche à créer un segment dans un tablespace sur lequel il n’a pas de quota ou qui aurait pour effet  de dépasser le quota alloué à cet utilisateur. lors de sa première connexion.  Syntaxe  ALTER USER nom [ IDENTIFIED { BY mot_de_passe | EXTERNALLY } ] [ DEFAULT TABLESPACE nom_tablespace ] [ TEMPORARY TABLESPACE nom_tablespace ] [ QUOTA { valeur [K|M] | UNLIMITED } ON nom_tablespace [.  ACCOUNT LOCK : le compte est verrouillé et la connexion interdite (erreur ORA-28000: compte verrouillé).  La notion de quota est sans objet pour le tablespace temporaire et le tablespace d’annulation.  UNLOCK : le compte n’est pas verrouillé et la connexion autorisée (valeur par défaut).] ] [ PROFILE nom_profil ] [ PASSWORD EXPIRE ] [ ACCOUNT { LOCK | UNLOCK } ] . et non les utilisateurs finaux  d’un  applicatif  qui  se  contentent  d’employer  des  objets  déjà  existants  et  qui  appartiennent  généralement  à  un  compte distinct (en quelque sorte le "propriétaire" de l’application).3- ..  il  faut  lui  donner  explicitement  un  quota  sur  au  moins  un  tablespace.

Les clauses sont les mêmes que pour la création.  Diminuer un quota.4- © ENI Editions . q Déverrouillage d’un compte  ALTER USER oheu ACCOUNT UNLOCK. l’erreur ORA-01922 est retournée :  ORA-01922: CASCADE à indiquer pour supprimer ’OPS$SRVWINORA\VDEP’ C’est un ordre DDL   openmirrors. ne supprime pas les objets déjà créés par l’utilisateur. q Verrouillage d’un compte  ALTER USER oheu ACCOUNT LOCK.  Le deuxième exemple permet de modifier le tablespace par défaut de l’utilisateur et de lui attribuer des quotas sur  deux tablespaces. Si  l’utilisateur  possède  des  objets.  Modifier le mot de passe de SYS modifie le mot de passe de SYSDBAenregistré dans le fichier de mot de passe  (si un fichier de mot de passe est utilisé). Suppression d’un utilisateur  L’ordre SQL DROP USER permet de supprimer un utilisateur.com . q Modification du tablespace par défaut et attribution de quotas  ALTER USER oheu DEFAULT TABLESPACE test QUOTA UNLIMITED ON test QUOTA 10M ON data. ou le mettre à 0.All rights reserved .  Le  troisième  exemple  peut  être  utilisé  pour  interdire  temporairement  à  un  utilisateur  de  se  connecter.  Syntaxe  DROP USER nom [ CASCADE ] .  Exemples :  q Modification du mot de passe d’un utilisateur  ALTER USER oheu IDENTIFIED BY tempo PASSWORD EXPIRE.  4. Exemple :  DROP USER "OPS$SRVWINORA\VDEP" CASCADE.Algeria Educ . Si l’utilisateur possède des objets et que l’option CASCADE soit absente. il n’est pas déconnecté.  l’option  CASCADE  doit  être  présente  pour  forcer  la  suppression  préalable  des  objets.  S’il  est  actuellement connecté. Le  premier  exemple  permet  de  modifier  le  mot  de  passe  d’un  utilisateur  en  le  forçant  à  en  changer  lors  de  sa  première connexion ; cette technique peut être employée si l’utilisateur a perdu son mot de passe (le DBA n’a aucun  moyen de connaître le mot de passe des utilisateurs).  Le quatrième exemple peut être utilisé pour autoriser de nouveau un utilisateur à se connecter.

  TEMPORARY_TABLESPACE  Tablespace temporaire de l’utilisateur. Trouver des informations sur les utilisateurs  Plusieurs vues du dictionnaire de données permettent d’obtenir des informations sur les utilisateurs :  q DBA_USERS : informations sur les utilisateurs ;  DBA_TS_QUOTAS : informations sur les quotas des utilisateurs.  5. UNLOCKED.5- .: il n’a pas de ROLLBACK possible.  Un utilisateur actuellement connecté ne peut pas être supprimé :  ORA-01940: impossible de supprimer un utilisateur qui est connecté Avant  suppression  d’un  utilisateur.  il  est  possible  d’exporter  les  objets  qui  lui  appartiennent ; ces  objets  pourront  ultérieurement être réimportés dans un autre schéma.  DEFAULT_TABLESPACE  Tablespace par défaut de l’utilisateur. etc. EXPIRED.Algeria Educ .  © ENI Editions .  CREATED  Date de création de l’utilisateur.  ACCOUNT_STATUS  Statut du compte (OPEN.  EXPIRY_DATE  Date d’expiration du mot de passe.  LOCK_DATE  Date du verrouillage (si le compte est verrouillé).  PROFILE  Profil.All rights reserved .).  PASSWORD  Mot de passe (crypté) de l’utilisateur.  USER_ID  Identifiant de l’utilisateur. LOCKED.  q Les colonnes intéressantes des différentes vues sont présentées ci­après.  DBA_USERS USERNAME  Nom de l’utilisateur.

6- © ENI Editions . en octets.Algeria Educ . actuellement utilisé par l’utilisateur.  BYTES  Espace. en octets. en blocs. de l’utilisateur sur le tablespace (1).  USERNAME  Nom de l’utilisateur qui a un quota dans le tablespace.  BLOCKS  Espace.  MAX_BLOCKS  Quota.DBA_TS_QUOTAS TABLESPACE_NAME  Nom du tablespace.All rights reserved .  MAX_BYTES  Quota.  (1) ­1 si quota UNLIMITED  openmirrors. en blocs. de l’utilisateur sur le tablespace (1).com . actuellement utilisé par l’utilisateur.

1- .  Une  instance  ne  peut  ouvrir  qu’une  base  de  données  à  la  fois  et.All rights reserved .  Dans  une  architecture client/serveur.  Néanmoins. ces processus utilisateurs sont situés sur le poste de l’utilisateur et communiquent avec le  serveur à travers le réseau grâce à la couche Oracle Net (voir le chapitre Oracle Net pour une présentation d’Oracle  Net).  il  est  possible  de  considérer  que  l’instance  représente  une  application  (par  exemple  Microsoft  Word)  et  la  base  de  données. Notions d’instance et de base de données    Un serveur Oracle comporte deux éléments distincts.  De  manière  imagée.Présentation générale  1.  L’instance se compose d’une structure de mémoire partagée et d’un ensemble de processus.Algeria Educ .  un  logiciel  spécifique.  2.).  il  existe  des  processus  utilisateurs  correspondant  à  l’application  utilisée  par  l’utilisateur  pour  se  connecter  à  la  base  de  données  (SQL*Plus.  le  document  (par  exemple  un  document  Microsoft  Word) ;  pour  pouvoir  accéder  à  la  base de données (l’équivalent du document Microsoft Word). l’instance et la base de données.  un  progiciel.  En  dehors  des  processus  de  l’instance.  moyennant  la  mise  en  œ uvre  de  l’option  Real  Application  Clusters (RAC).  dans  la  grande  majorité  des  cas.  La  base  de  données  se  compose  d’un  ensemble  de  fichiers  physiques  qui  contiennent  notamment  les  données. Ces deux éléments sont  intimement liés mais doivent être bien distingués.  etc. une base de données peut être ouverte par plusieurs instances situées sur des nœ uds distincts d’un  cluster de serveurs ; cette option RAC est intéressante pour la haute disponibilité.  une  base  de  données  est  ouverte  par  une  seule  instance.  Un fichier de paramètres est utilisé par l’instance lors de son démarrage pour se configurer et faire le lien avec la base  de données. La base de données    Une base de données est constituée :  © ENI Editions . il faut l’ouvrir avec une instance Oracle (l’équivalent de  l’application Microsoft Word).

 pas partie de la base de données. olivier-heurtel.  D’au minimum un fichier de contrôle qui contient des informations de contrôle sur la base de données.  Le  rôle  des  différents  fichiers  de  la  base  de  données  est  décrit  plus  en  détail  dans  le  titre  La  base  de  données.  Chaque base de données porte un nom défini lors de sa création ; ce nom est défini par le paramètre d’initialisation  DB_NAME <du fichier de paramètres (hermes par exemple). En complément.  Les différentes composantes de l’instance sont décrites plus en détail dans la section L’instance. à proprement parler.  Lors  de  l’administration.  le  DBA  désigne  l’instance  sur  laquelle  il  souhaite  travailler  grâce  à  la  variable  d’environnementORACLE_SID  ;  c’est  particulièrement  important  si  plusieurs  instances  sont  lancées  sur  le  serveur.  les  processus  sont  effectivement  des  processus  (process)  du  système  d’exploitation  (c’est  le  cas  des  plates­formes  Unix  en  général)  ou  des  threads  d’un  unique  processus  (c’est  le  cas  de  la  plate­forme Windows). De même. L’instance    Une instance est constituée :  q D’une zone de mémoire partagée appelée System Global Area (SGA) ;  D’un ensemble de processus d’arrière­plan (background process) ayant chacun un rôle bien précis ;  D’un ensemble de processus serveur (server process) chargés de traiter les requêtes des utilisateurs. section L’instance ­ Les processus d’arrière­plan dans ce chapitre). section L’instance ­ La SGA dans ce chapitre).  q q Nous  verrons  ultérieurement  que  les  fichiers  de  journalisation  peuvent  être  archivés ;  ces  fichiers  de  journalisation  archivés ne font. l’emplacement de la base de données sur le  réseau  peut  être  défini  grâce  au  paramètreDB_DOMAIN  (olivier-heurtel.fr  par  exemple).All rights reserved .  chaque  instance  a  sa  propre  SGA  et  ses  propres  processus.DB_DOMAIN  (hermes.fr  par  exemple).com .  La  base  de  données  peut  alors  être  aussi  identifiée  par  son  nom  global  défini  par  DB_NAME.2- © ENI Editions .  3.q D’un ou de plusieurs fichiers de données qui contiennent les données proprement dites.  Selon  la  plate­forme.Algeria Educ .  Le  nom (identifiant) de l’instanceest souvent désigné par le terme SID.  D’au minimum deux groupes de fichiers de journalisation qui enregistrent toutes les modifications apportées à  la base. Plusieurs instances peuvent  être  lancées  simultanément  sur  le  même  serveur  ;  dans  ce  cas.  Par ailleurs. chaque processus a de la mémoire privée appelée PGA (Program Global Area).  q q Toutes les composantes de la SGA ne sont pas représentées sur le schéma ci­dessus (cf.  openmirrors. la liste des processus d’arrière­plan présentée sur le schéma n’est pas  complète (cf.

 il faut parfois faire des compromis et déterminer des priorités. généralement sous la forme de petites transactions ;  un nombre plus ou moins important d’utilisateurs concurrents ;  une exigence de temps de réponse court.  q q Une base de données décisionnelle se caractérise par :  q une forte activité d’interrogation (SELECT) généralement sur des gros volumes de données (cette activité peut  être interactive et/ou batch) ;  une mise à jour périodique sous forme de batch avec des gros traitements de mise à jour ;  une exigence de temps de réponse raisonnablement court.  Une base de données transactionnelle se caractérise par :  q une forte activité de mise à jour (INSERT/UPDATE).  Oracle  fait  la  distinction  entre  les  bases  de  données  "transactionnelles"  (ou  OLTP  pour  OnLine  Transaction  Processing)  et  les  bases  de  données  "décisionnelles"  (ou  DSS  pour  Decision  Support  Systems). les bases de données mixtes étant les plus  difficiles à régler ; dans ce cas. il y a les bases de données "mixtes" qui sont à la fois transactionnelles et décisionnelles.3- .  dans  la  documentation.All rights reserved .  © ENI Editions .  Beaucoup de réglages dépendent de la catégorie de la base de données. Les différentes catégories de base de données  Très  souvent.Algeria Educ . le poids respectif de  chaque activité étant variable.4.  q q Et puis.

  Pour  en  savoir  plus.  Par  défaut. Ce profil est attribué  par  défaut  aux  utilisateurs.All rights reserved .  la  lecture  logique  correspond  aussi  à  une  lecture  physique). Création d’un profil  L’ordre SQL CREATE PROFILE permet de créer un nouveau profil. La mise en oeuvre de cette fonctionnalité  s’effectue  grâce  au  packageDBMS_RESOURCE_MANAGER.1- .  2.Algeria Educ .com © ENI Editions .  consultez  la  documentation  Oracle®  Database Administrator’s Guide.  Syntaxe  CREATE PROFILE nom LIMIT [ SESSIONS_PER_USER { valeur | UNLIMITED | DEFAULT } ] [ CPU_PER_SESSION { valeur | UNLIMITED | DEFAULT } ] [ CPU_PER_CALL { valeur | UNLIMITED | DEFAULT } ] [ CONNECT_TIME { valeur | UNLIMITED | DEFAULT } ] [ IDLE_TIME { valeur | UNLIMITED | DEFAULT } ] openmirrors.  q q q q q Une lecture logique correspond à une lecture de bloc lors d’une requête. les profils peuvent aussi être utilisés pour mettre en œ uvre une politique de gestion des mots de  passe.  espace  d’annulation.  depuis la version 11.  Depuis la version 8.  Si  vous  souhaitez  contrôler  plus  précisément  l’attribution  de  ressources  (CPU.  durée  d’inactivité)  à  des  utilisateurs  ou  groupes d’utilisateurs.  Les fonctionnalités suivantes peuvent être mises en oeuvre :  q verrouillage  de  compte  (et  durée  de  verrouillage)  au­delà  d’un  certain  nombre  d’échecs  de  tentative  de  connexion ;  durée de vie des mots de passe (avec éventuellement une période de grâce) ;  non­réutilisation d’un mot de passe avant un certain temps ou avant un certain nombre de changements ;  complexité du mot de passe. Présentation  Un profil est un ensemble nommé de limitations de ressources qui peut être attribué à un utilisateur. ce profil comporte des limites pour les mots de passe (voir ci­après).Utiliser les profils  1. que ce bloc soit déjà présent en mémoire  (dans  le  Database  Buffer  Cache)  ou  lu  sur  disque  (dans  ce  cas. vous pouvez utiliser le Database  Resource  Manager.  q q q Le profil nommé  DEFAULTest automatiquement créé lors de la création de la base de données.  La  limitation  des  ressources  à  l’aide  des  profils  n’offre  pas  de  nombreuses  possibilités.  ce  profil  DEFAULT  n’impose  aucune  limite  pour  les  ressources ; par  contre.  Les ressources suivantes peuvent être limitées :  q temps CPU par appel et/ou par session ;  nombre de lectures logiques par appel et/ou par session ;  nombre de sessions ouvertes simultanément par un utilisateur ;  temps d’inactivité par session ;  durée totale de la session ;  quantité de mémoire privée dans la SGA (configuration serveurs partagés uniquement).

  Pour  la  limite COMPOSITE_LIMIT.  CPU_PER_SESSION  CPU totale par session (1/100 s).  IDLE_TIME  Durée d’inactivité (minutes). Les limitations de ressources sont les suivantes :  SESSIONS_PER_USER  Nombre de sessions simultanées.  LOGICAL_READS_PER_SESSION  Nombre de lectures logiques par session.  PRIVATE_SGA  Quantité de mémoire privée dans la SGA.  LOGICAL_READS_PER_CALL  Nombre de lectures logiques par appel.Algeria Educ .  COMPOSITE_LIMIT  Somme pondérée de CPU_PER_SESSION. LOGICAL_READS_PER_SESSION et PRIVATE_SGA.All rights reserved .  Les limitations relatives aux mots de passe sont les suivantes :  . CONNECT_TIME. Exemple :  CREATE PROFILE exploitation LIMIT SESSIONS_PER_USER 3 IDLE_TIME 30 FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_TIME 180 PASSWORD_LOCK_TIME UNLIMITED PASSWORD_GRACE_TIME 3 PASSWORD_VERIFY_FUNCTION verif_mdp_exploitation .  CPU_PER_CALL  CPU totale par appel (1/100 s).  CONNECT_TIME  Durée totale de connexion (minutes).  la  vue  RESOURCE_COST  permet  de  consulter  les  pondérations  utilisées  et  l’ordre  SQL  ALTER RESOURCE COST de modifier les pondérations.2© ENI Editions .[ [ [ [ [ [ [ [ [ [ [ LOGICAL_READS_PER_SESSION { valeur | UNLIMITED | DEFAULT } ] LOGICAL_READS_PER_CALL { valeur | UNLIMITED | DEFAULT } ] COMPOSITE_LIMIT { valeur | UNLIMITED | DEFAULT } ] PRIVATE_SGA { valeur [K|M] | UNLIMITED | DEFAULT } ] FAILED_LOGIN_ATTEMPTS { valeur | UNLIMITED | DEFAULT } ] PASSWORD_LIFE_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_REUSE_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_REUSE_MAX { valeur | UNLIMITED | DEFAULT } ] PASSWORD_LOCK_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_GRACE_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_VERIFY_FUNCTION { nom_fonction | NULL | DEFAULT } ] .

FAILED_LOGIN_ATTEMPTS  Nombre d’échecs de tentative de connexion autorisés avant verrouillage du compte.  PASSWORD_REUSE_TIME  Nombre de jours pendant lequel un mot de passe ne peut pas être réutilisé. 10 dans le profil DEFAULT. Modification d’un profil  L’ordre SQL ALTER PROFILE permet de modifier un profil.  DEFAULT : le paramètre hérite de la valeur du profil nommé DEFAULT.  Les limites PASSWORD_REUSE_TIME et PASSWORD_REUSE_MAX ne peuvent pas être spécifiées simultanément : le contrôle de  la réutilisation d’un mot de passe est indiqué soit par une durée.3- . 7 dans le profil DEFAULT. l’autre limite doit être UNLIMITED.  PASSWORD_LIFE_TIME  Durée de vie du mot de passe (jours).  Des mots clés peuvent être utilisés pour spécifier la valeur d’une limite :  q UNLIMITED : aucune limitation.sql (répertoire %ORACLE_HOME%\rdbms\admin ou $ORACLE_ HOME/rdbms/admin) contient un exemple de  fonction de vérification qui est affectée au profil DEFAULT si le script est exécuté.  son  nouveau  mot  de  passe et son ancien mot de passe) et retourner un booléen.  il  est  possible  d’utiliser  des  nombres  décimaux  représentant  des  fractions de jour (par exemple 1/24 = une heure).  PASSWORD_REUSE_MAX  Nombre de changements de mot de passe avant qu’un mot de passe puisse être réutilisé.Algeria Educ . si le mot de  passe saisi par l’utilisateur respecte bien certaines règles.  q Une limite non spécifiée dans un profil prend la valeur DEFAULT.  PASSWORD_LOCK_TIME  Durée du verrouillage (jours).  PASSWORD_GRACE_TIME  Période de grâce après expiration du mot de passe (jours). Une valeur NULL permet de ne pas utiliser de fonction de  vérification.  La limite PASSWORD_VERIFY_FUNCTION permet de spécifier une fonction PL/SQL qui sera utilisée pour vérifier.  Cette  fonction  doit  accepter  trois  paramètres  en  entrée  (le  nom  de  l’utilisateur. 180 dans le profil DEFAULT. soit par un nombre de changements. 1 dans le profil DEFAULT.All rights reserved .  Syntaxe  ALTER PROFILE nom LIMIT [ SESSIONS_PER_USER { valeur | UNLIMITED | DEFAULT } ] [ CPU_PER_SESSION { valeur | UNLIMITED | DEFAULT } ] [ CPU_PER_CALL { valeur | UNLIMITED | DEFAULT } ] [ CONNECT_TIME { valeur | UNLIMITED | DEFAULT } ] [ IDLE_TIME { valeur | UNLIMITED | DEFAULT } ] openmirrors.  3.  Le scriptutlpwdmg. Si l’une des  deux limites a une valeur (différente de UNLIMITED).  PASSWORD_VERIFY_FUNCTION  Fonction de vérification de la complexité du mot de passe.  Pour  les  différentes  limites  spécifiées  en  jours.com © ENI Editions .

passe de 3 à 5 IDLE_TIME UNLIMITED -.  La  modification  d’un  profil  n’affecte  les  utilisateurs  qu’à  leur  prochaine  connexion ; elle  n’est  pas  prise  en  compte  immédiatement pour les utilisateurs déjà connectés. q Réaffectation du profil DEFAULT  .All rights reserved .prend la valeur par défaut (5) -.[ [ [ [ [ [ [ [ [ [ [ LOGICAL_READS_PER_SESSION { valeur | UNLIMITED | DEFAULT } ] LOGICAL_READS_PER_CALL { valeur | UNLIMITED | DEFAULT } ] COMPOSITE_LIMIT { valeur | UNLIMITED | DEFAULT } ] PRIVATE_SGA { valeur [K|M] | UNLIMITED | DEFAULT } ] FAILED_LOGIN_ATTEMPTS { valeur | UNLIMITED | DEFAULT } ] PASSWORD_LIFE_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_REUSE_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_REUSE_MAX { valeur | UNLIMITED | DEFAULT } ] PASSWORD_LOCK_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_GRACE_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_VERIFY_FUNCTION { nom_fonction | NULL | DEFAULT } ] .le reste est inchangé Les options sont les mêmes que pour l’ordre SQL CREATE PROFILE.les autres paramètres gardent la valeur par défaut (UNLIMITED) Modification d’un autre profil  q ALTER PROFILE exploitation LIMIT SESSIONS_PER_USER 5 -. -. Exemple :  q Modification du profil DEFAULT  ALTER PROFILE default LIMIT SESSIONS_PER_USER 3 IDLE_TIME 30 FAILED_LOGIN_ATTEMPTS 5.  Modifier le profil DEFAULT affecte aussi les profils qui ont des limites spécifiées à DEFAULT. Affectation d’un profil à un utilisateur  Un profil peut être attribué à un utilisateur :  q lors de la création de l’utilisateur (CREATE USER) ;  lors d’une modification de l’utilisateur (ALTER USER).4- © ENI Editions . Lors d’une modification de l’utilisateur  q Affectation d’un profil  ALTER USER oheu PROFILE exploitation. -.  q Exemples :  Lors de la création de l’utilisateur  CREATE USER xgeo IDENTIFIED BY tempo TEMPORARY TABLESPACE temp PROFILE exploitation PASSWORD EXPIRE.  4.Algeria Educ .suppression de la limite FAILED_LOGIN_ATTEMPTS DEFAULT.

  Les fonctionnalités de gestion des mots de passe fonctionnent même si le paramètre RESOURCE_LIMIT est à FALSE. Activation de la limitation des ressources  Par défaut.  RESOURCE_NAME  Nom de la ressource contrôlée. le contrôle de la limitation des ressources n’est pas activé. Créer des profils et les affecter aux utilisateurs  n’a aucun effet. dont le profil attribué (colonne PROFILE) ;  DBA_PROFILES : informations sur les profils. l’option CASCADE doit être présente. impossible d’effectuer la suppression sans CASCADE Le  profil  DEFAULT  est  affecté  en  remplacement  aux  utilisateurs  concernés.  openmirrors.com © ENI Editions . l’erreur ORA-02382 est retournée :  ORA-02382<: Le profil EXPLOITATION a des utilisateurs.  Par défaut. Exemple :  DROP PROFILE exploitation CASCADE. Si le profil est attribué à des utilisateurs.All rights reserved . un utilisateur est créé avec le profil DEFAULT.Le profil DEFAULT ne peut pas être supprimé.  7. il faut passer le paramètre RESOURCE_LIMIT à TRUE (FALSE par  défaut) :  ALTER SYSTEM SET RESOURCE_LIMIT = TRUE [ clause_SCOPE ].  Syntaxe  DROP PROFILE nom [ CASCADE ] .  Pour activer le contrôle de la limitation des ressources.Algeria Educ . Trouver des informations sur les profils  Plusieurs vues du dictionnaire de données permettent d’obtenir des informations sur les profils :  q DBA_USERS : informations sur les utilisateurs.  DBA_PROFILES PROFILE  Nom du profil.  6.La  suppression  d’un  profil  n’affecte  les  utilisateurs qu’à leur prochaine connexion.ALTER USER oheu PROFILE DEFAULT. Suppression d’un profil  L’ordre SQL DROP PROFILE permet de supprimer un profil.  q Les colonnes intéressantes de la vue DBA_PROFILES sont présentées ci­après.  5. Si le profil est attribué à des utilisateurs  et que l’option CASCADE soit absente. L’affectation d’un nouveau profil à des utilisateurs ne prend effet qu’à leur prochaine connexion. N’oubliez pas d’utiliser  la  clause SCOPE = BOTH pour rendre la modification persistante en cas de redémarrage de la  base de données.5- .

6- © ENI Editions .RESOURCE_TYPE  Type de la ressource contrôlée (KERNEL ou PASSWORD).Algeria Educ .All rights reserved .  .  LIMIT  Limite de la ressource.

 Privilège système  a.  Chaque ordre SQL a généralement. En version 8 ou 8i. Attribution d’un privilège système à un utilisateur  openmirrors. il  fallait  donner  aux  utilisateurs  le  privilège  SELECT ANY TABLE.  Certains privilèges système reprennent le nom de l’ordre SQL avec le mot clé ANY.  SELECT ANY DICTIONARY  Donne  le  droit  à  l’utilisateur d’interroger  n’importe quel objet du dictionnaire de données dans le schéma  SYS.com © ENI Editions .  le  privilège  pour  créer  un  tablespace  est CREATE TABLESPACE ; il n’y  a  pas de CREATE ANY TABLESPACE (un tablespace n’appartient pas à un schéma). etc.1- . En version 7. par exemple créer une table. Dans ce cas. au compte propriétaire d’une application et très rarement à l’utilisateur final  d’une application. aux développeurs. DROP USER. le rôle SELECT_CATALOG_ROLE peut être utilisé pour atteindre le  même objectif ; ce rôle existe toujours en version 10 pour des raisons de compatibilité ascendante. GRANT ANY ROLE) et ceux qui permettent de  supprimer des objets (DROP ANY TABLE. le privilège système  permet  d’exécuter l’ordre  dans  n’importe  quel  schéma  de  la  base  de  données. plutôt destinés  aux administrateurs. l’ordre SQL CREATE TABLE possède un privilège système associé CREATE TABLE (donne le droit de créer  une table dans son propre schéma). surtout ceux qui concernent la gestion des utilisateurs  et des droits (CREATE USER.  Les privilèges système sont source de pouvoir et de danger.  ce  qui  était  susceptible  de  poser  des  problèmes  de  sécurité puisque l’utilisateur pouvait aller lire dans n’importe quel schéma. ALTER USER. il pourra modifier les comptes utilisateur  (changer les mots de passe par exemple).Algeria Educ .  Quelques privilèges système particuliers :  CREATE SESSION  Donne le droit à l’utilisateur de se connecter. l’erreur ORA-01031 est retournée :  ORA-01031: privilèges insuffisants La vue SYSTEM_PRIVILEGE_MAP donne la liste de tous les privilèges système.  Si  un  utilisateur  n’a  pas  le  privilège  CREATE SESSION.  Si un utilisateur n’a pas le privilège nécessaire pour réaliser une action.  Par  exemple. connexion refusée Le privilège SELECT ANY DICTIONARYest intéressant car il permet de donner à un utilisateur le droit de lire les vues  DBA sans pour autant être DBA.) ; les privilèges système doivent donc être attribués  avec parcimonie (notamment les privilèges ANY). Définition  Un privilège système est le droit d’exécuter un ordre SQL en général. il n’y  a  pas  de  privilège ANY (ANY  veut  dire  dans  n’importe  quel  schéma) : par  exemple.Gérer les droits  1. Ce  privilège est nécessaire pour les utilisateurs non DBA qui souhaitent employer le Database Control. dont le vôtre.  Pensez que si vous donnez le privilège ALTER USER à un utilisateur.  le  privilège  système  CREATE ANY TABLE donne le droit de créer une table dans n’importe quel schéma de la base de données.  Les privilèges système sont principalement utilisés pour contrôler l’emploi des ordres DDL et donc. un privilège système associé qui porte le même nom que l’ordre SQL. DROP TABLESPACE.  Par exemple. au moins.  l’erreur  ORA-01045  est  retournée  lors  d’une  tentative  de  connexion :  ORA-01045: l’utilisateur OHEU n’a pas le privilège CREATE SESSION .  b.All rights reserved . GRANT ANY PRIVILEGE.  Lorsque l’ordre SQL concerné n’est pas relatif aux objets d’un schéma.

All rights reserved . Exemple :  GRANT CREATE SESSION.. Il en est de même pour PUBLIC : vous ne pouvez pas révoquer à PUBLIC un privilège  non attribué à PUBLIC en pensant l’enlever ainsi à tout le monde. il faut avoir reçu :  q le privilège en question avec la clause WITH ADMIN OPTION ;  ou le privilège système GRANT ANY PRIVILEGE.. La clause WITH ADMIN OPTION  est donc doublement dangereuse...] FROM { nom_utilisateur | PUBLIC } [.  Tous  les  privilèges  système  peuvent  être  attribués  d’un  seul  coup  avec  le  mot  clé  ALL PRIVILEGES  (GRANT ALL PRIVILEGES TO . il faut avoir reçu :  q le privilège en question avec la clause WITH ADMIN OPTION ;  ou le privilège système GRANT ANY PRIVILEGE.  Le privilège attribué est immédiatement actif...2- © ENI Editions .  L’ordre REVOKE  permet  de  révoquer  uniquement  les  privilèges  qu’un utilisateur a reçu en direct (non les privilèges  qu’il a implicitement via PUBLIC). Révocation d’un privilège système à un utilisateur  L’ordre SQL REVOKE permet de révoquer un privilège système.  Syntaxe  GRANT nom_privilège [.  révoquer le privilège de Pierre est sans effet sur le privilège transmis par Pierre à Paul..).. il faut révoquer le privilège et l’attribuer de nouveau sans l’option.. CREATE TABLE TO oheu. Exemple :  REVOKE CREATE TABLE FROM oheu.  .] .). la révocation de l’utilisateur est sans effet sur la possibilité  pour l’utilisateur de continuer à exercer le privilège : il le possède toujours via PUBLIC.  Pour révoquer un privilège système.] [ WITH ADMIN OPTION ] . Le privilège peut être attribué à un utilisateur ou à tous les utilisateurs (PUBLIC)..  Pour attribuer un privilège système.L’ordre SQL GRANT permet d’attribuer un privilège système.  Si un privilège a été attribué à un utilisateur et à PUBLIC...  q Il n’y a pas de cascade dans la révocation d’un privilège système qui a été transmis grâce à la clause WITH ADMIN OPTION.  Tous  les  privilèges  système  peuvent  être  révoqués  d’un  seul  coup  avec  le  mot  clé  ALL PRIVILEGES  (REVOKE ALL PRIVILEGES FROM .  Si vous avez attribué un privilège avec l’option WITH ADMIN OPTION et que vous souhaitiez enlever cette possibilité  de transmission.  La clause WITH ADMIN OPTION donne au bénéficiaire le droit de transmettre le privilège système.  Syntaxe  REVOKE nom_privilège [.  Si  un  privilège  a  été  attribué  à  Pierre  avec  l’option  WITH ADMIN OPTION  et  que  Pierre  l’ait transmis à Paul.  c..  q Plusieurs  privilèges  peuvent  être  attribués  à  plusieurs  utilisateurs  en  un  seul  ordre.  Cette  possibilité est à manipuler avec beaucoup de précautions. Le privilège est immédiatement révoqué et ne peut plus être exercé...Algeria Educ ..] TO { nom_utilisateur | PUBLIC } [.

  DELETE  © ENI Editions . il est possible d’attribuer l’un ou l’autre de ces privilèges à d’autres utilisateurs. il est très rare d’attribuer les privilèges SYSOPER et surtout SYSDBA (qui donne un contrôle total sur  la base) à d’autres utilisateurs ; le compte SYSDBA/SYSOPER habituellement utilisé est le compte SYS (il est destiné à  cela). soit par une appartenance à un groupe particulier du système d’exploitation.d.  Les principaux privilèges objet sont les suivants :  Privilège  SELECT  INSERT  UPDATE  DELETE  EXECUTE  Table  x  x  x  x  Vue  x  x  x  x  x  Séquence  x  Programme  Dans le tableau.  2. Privilège objet  a.  La vue V$PWFILE_USERS <permet de lister les utilisateurs qui ont reçu les privilèges SYSDBA ou SYSOPER ; cette vue est  toujours vide siREMOTE_LOGIN_PASSWORDFILE= NONE.  L’attribution et la révocation s’effectuent avec les ordres SQL GRANT et REVOKE. par défaut. seul le propriétaire d’un objet a le droit d’y accéder.  Ces privilèges peuvent être contrôlés.  Dans la pratique.  Par défaut. Pour qu’un autre utilisateur puisse accéder à l’objet.com . Les privilèges système SYSDBA et SYSOPER  Nous  avons  déjà  vu  que  les  privilègesSYSDBA  et  SYSOPER  étaient  nécessaires  pour  réaliser  certaines  opérations  d’administration (démarrage/arrêt/création de base). mettre à jour les données de  la table CLIENT.3- openmirrors.  le propriétaire de l’objet doit lui donner un privilège objet.  il  faut  être  connecté AS SYSDBA ; pour  attribuer  le  privilège  SYSOPER.  il  faut  être  connecté AS SYSDBA ou AS SYSOPER. la colonne "Programme" désigne les procédures et fonctions stockées et les packages.  Si  le  fichier  de  mot  de  passe<  est  exclusivement  associé  à  la  base  (paramètre  REMOTE_ LOGIN_PASSWORDFILE=EXCLUSIVE).  Pour  attribuer  le  privilège  SYSDBA.  UPDATE  Droit de mise à jour des données (exécution de l’ordre SQL UPDATE).All rights reserved .  INSERT  Droit de création des données (exécution de l’ordre SQL INSERT). seul SYS a reçu les privilèges SYSDBA et SYSOPER.  Ces privilèges donnent les droits suivants :  SELECT  Droit de lecture des données (exécution de l’ordre SQL SELECT).  Dans le cas de l’utilisation d’un fichier de mot de passe.Algeria Educ .  soit par un fichier de mot de passe. Définition  Un privilège objet est le droit d’accéder à un objet d’un autre utilisateur : par exemple.

  Pour attribuer un privilège objet. même public.  Syntaxe  GRANT { nom_privilège[(liste_colonnes)] [. Oracle pense que vous cherchez à accéder à un objet dans votre schéma). le mot clé ALL désigne uniquement tous les privilèges que l’utilisateur a reçus. Oracle considère que l’utilisateur n’a normalement aucun moyen de savoir que l’objet accédé  existe : il indique donc que l’objet n’existe pas.  Le mot clé ALL permet d’attribuer tous les privilèges.  EXECUTE  Droit d’exécution du programme (appeler la procédure. Oracle retourne l’erreur ORA-00942: Table ou vue inexistante.  Plusieurs  privilèges  peuvent  être  attribués  à  plusieurs  utilisateurs  en  un  seul  ordre ; par  contre. Exemple :  GRANT SELECT.  Oracle  retourne  l’erreur  ORA-01031: insuffisants. aux objets de l’application créés dans un compte "propriétaire" de l’application (car par  défaut..] [ WITH GRANT OPTION ] .  La clause WITH GRANT OPTION donne au bénéficiaire le droit de transmettre le privilège objet. le droit  de faire un DELETE dans la table CLIENT).prenom) ON adherent TO oheu..  une  liste  de  colonnes  peut  être  spécifiée  afin  de  limiter  le  privilège  aux  colonnes indiquées.]nom_objet TO { nom_utilisateur | PUBLIC } [. Dans le deuxième cas. Pour faciliter l’écriture  des requêtes et rendre le schéma propriétaire des objets transparent. INSERT. Pour  les  privilèges  INSERT  et  UPDATE.. est déterminé différemment si l’utilisateur possède ou non au moins un privilège sur l’objet :  q Si l’utilisateur n’a aucun privilège sur l’objet. mais un utilisateur qui a reçu certains privilèges sur l’objet avec le droit de les transmettre  (clause WITH GRANT OPTION).. ne donne aucun droit sur l’objet sous­jacent. le droit de faire un INSERT dans la table COMMANDE). seul le propriétaire d’un objet a le droit d’y accéder).Algeria Educ . Dans le cas où l’utilisateur qui attribue tous les droits n’est pas  le propriétaire de l’objet. il faut utiliser des synonymes. la fonction ou le package à partir d’un autre programme). Par exemple : le droit de créer une  commande (i.  Le privilège attribué est immédiatement actif.. le droit de supprimer une fiche client (i.] | ALL [PRIVILEGES] } ON [nom_schéma.  Réciproquement.  b. directement ou  via une interface utilisateur.All rights reserved . il faut :  q être propriétaire de l’objet ;  .e.4- © ENI Editions . en l’occurrence  plutôt des synonymes publics.Droit de suppression des données (exécution de l’ordre SQL DELETE).  Les privilèges objet sont destinés à contrôler l’accès à des objets bien identifiés.  l’attribution  des  privilèges objet s’effectue objet par objet. lorsqu’un utilisateur n’a pas le privilège requis pour réaliser une action sur  un objet.  Le message d’erreur retourné par Oracle..e.  Si  l’utilisateur  a  au  moins  un  privilège  sur  l’objet.  Avoir un droit sur un objet ne dispense pas de devoir qualifier l’objet par le nom du propriétaire si l’on souhaite y  accéder (sinon. Oracle considère que l’utilisateur peut savoir  que l’objet existe : il indique donc que le privilège est insuffisant. Attribution d’un privilège objet à un utilisateur  L’ordre SQL GRANT permet d’attribuer un privilège objet.  Le privilège peut être attribué à un utilisateur ou à tous les utilisateurs (PUBLIC). l’existence d’un synonyme.  privilèges q Dans le premier cas. UPDATE(nom.  Ils sont principalement employés pour permettre aux utilisateurs finaux d’une application d’accéder.

  le  programme  stocké  peut  être  conçu  pour  s’exécuter  avec  les  droits  de  l’appelant (invoker rights).Algeria Educ . sauf s’il existe un synonyme sur l’objet.  Certains  privilèges  système  donnent  implicitement  des  privilèges  objet  sur  tous  les  objets. Avant la version 9..  Syntaxe  AUTHID { CURRENT_USER | DEFINER } openmirrors.  Le comportement souhaité se définit lors de la création du programme stocké grâce à la clause AUTHID. il a aussi le privilège système ANY OBJECT PRIVILEGE  qui lui permet d’attribuer un privilège objet sur n’importe quel objet. FROM .  d. UPDATE ON client FROM oheu..  c. il faut :  q être propriétaire de l’objet ;  avoir reçu le privilège en question avec la clause WITH GRANT OPTION ;  ou avoir reçu le privilège système ANY OBJECT PRIVILEGE..  Le  DBA  a  les  privilèges  système  ANY  indiqués  précédemment ; c’est  la  raison  pour  laquelle  il  peut  accéder  à  n’importe quel objet sans privilège objet.  Il  en  est  de  même  par  défaut  pour  les  programmes  stockés : le  programme  stocké  s’exécute  avec  les  droits  du  propriétaire  (definer  rights).] .  q Un utilisateur qui retransmet un privilège qu’il a reçu avec l’option WITH GRANT OPTION doit qualifier le nom de l’objet  avec le nom du propriétaire (car l’objet ne lui appartient pas). il faut révoquer le privilège et l’attribuer de  nouveau sans l’option..5- .. ce n’était pas possible. Révocation d’un privilège objet à un utilisateur  L’ordre SQL REVOKE permet de révoquer un privilège objet.] | ALL [PRIVILEGES] } ON [nom_schéma.  Exemple : SELECT ANY TABLE.  Pour enlever un privilège objet.. Exemple :  REVOKE INSERT. L’ordre  REVOKE  permet  de  révoquer  à  un  utilisateur  uniquement  ce  qu’il  a  reçu  en  direct  (pas  les  privilèges  qu’il a  implicitement via PUBLIC)..)..q avoir reçu le privilège en question avec la clause WITH GRANT OPTION ;  ou avoir reçu le privilège système ANY OBJECT PRIVILEGE.  Au  besoin.  Si  un  privilège  a  été  attribué  à  un  utilisateur  et  à  PUBLIC.. Privilèges sur les vues et les programmes stockés  Un utilisateur qui a un droit sur une vue n’a pas besoin d’avoir les droits sur les objets manipulés par la vue.  Syntaxe  REVOKE { nom_privilège [. Il en est de même pour PUBLIC : vous ne pouvez pas révoquer à PUBLIC un privilège non  attribué à PUBLIC en pensant l’enlever ainsi à tout le monde.  q q Il y a cascade dans la révocation d’un privilège objet qui a été transmis grâce à la clause WITH GRANT OPTION.All rights reserved .]nom_objet FROM { nom_utilisateur | PUBLIC } [.. Le privilège est immédiatement enlevé et ne peut plus être exercé.com © ENI Editions . Si un  privilège  a  été  attribué  à  Pierre  avec  l’option  WITH GRANT OPTION  et  que  Pierre  l’ait  transmis  à  Paul. sans avoir reçu le privilège en question WITH GRANT OPTION. Depuis la version 9. Le fonctionnement n’est pas le même que pour les privilèges  système.Tous les privilèges objet peuvent être révoqués d’un seul  coup avec le mot clé ALL (REVOKE ALL ON .  révoquer  le  privilège de Pierre révoque également celui de Paul. Si vous avez attribué un privilège avec l’option WITH GRANT OPTION et que vous souhaitiez enlever cette possibilité de transmission.  le  révoquer  à  l’utilisateur  est  sans  effet ; l’utilisateur  continue d’exercer le privilège : il l’a toujours via PUBLIC.

  q q .  Il  est  aussi  possible  de  "placer"  sa  session  dans  le  schéma  d’un autre utilisateur. etc.  3.adherent.Le mode de fonctionnement par défaut (droits du propriétaire) est très intéressant car il permet d’utiliser les vues et  les programmes stockés comme couche intermédiaire pour l’accès aux objets de la base de données. Lorsque la requête SELECT * FROM adherent est exécutée. Définition  Un rôle est un regroupement nommé de privilèges (système et objet) qui peut être attribué à un utilisateur. il l’utilise. Tous  les  privilèges  regroupés  dans  le  rôle  sont  alors  simultanément  attribués  à  l’utilisateur. il remplace le synonyme par sa définition.  Exemple :  ALTER SESSION SET CURRENT_SCHEMA = diane.6- © ENI Editions .adherent.Algeria Educ .  q e. Lorsqu’un  objet  est  référencé  dans  un  ordre  SQL.  Ces  fonctionnalités  sont  décrites  dans  la  documentation Oracle® Database Security Guide ; elles sont basées sur l’utilisation du package DBMS_RLS. Il est possible  de construire une application dans laquelle la partie cliente n’accède jamais directement aux tables de la base de  données mais passe par des vues et/ou des programmes stockés.  Oracle  regardera  si  un  tel  objet  existe  dans  l’autre  schéma  avant  de  rechercher un éventuel synonyme public. Oracle regarde si l’utilisateur a les privilèges nécessaires  pour accéder à l’objet.  Les principales caractéristiques des rôles sont les suivantes :  q Un rôle peut être attribué à un autre rôle. Il faut bien noter que les deux techniques ne donnent pas de droit en soi ; ce sont juste des techniques de  résolution de nom.  Depuis la version 8i. Ce genre d’approche permet principalement :  q de  masquer  la  structure  réelle  des  tables  et  de  pouvoir  la  faire  évoluer  avec  le  minimum  d’impacts  sur  la  partie cliente ;  d’implémenter des règles de gestion (contrôles. Une fois que le nom est résolu. Des synonymes publics peuvent être définis pour simplifier l’écriture des requêtes et les rendre indépendantes du  nom du propriétaire :  CREATE PUBLIC SYNONYM adherent FOR diane. Oracle regarde d’abord dans le schéma courant s’il existe  un objet nommé adherent. Aller plus loin sur la gestion des droits  Oracle propose des fonctionnalités de Virtual Private Database (VPD) et de Fine­Grained Access (FGA) qui permettent  de  placer  des  mécanismes  de  filtres  sur  les  lignes  des  tables. S’il en trouve un.) côté serveur. calculs. Rôle  a.  Les  rôles  permettent  de  simplifier la gestion des droits. Si ce n’est pas le cas.  Un rôle n’appartient à personne. sécurité. il doit préfixer le nom de l’objet par le nom de  son propriétaire pour pouvoir y accéder :  SELECT * FROM diane. il recherche un synonyme public portant ce  nom. Si c’est le cas.All rights reserved . Nommer un objet d’un autre schéma  Même si un utilisateur a un privilège sur un objet d’un autre schéma.  f.  Un utilisateur peut avoir plusieurs rôles.

com © ENI Editions .  Syntaxe  ALTER ROLE nom [ IDENTIFIED { BY mot_de_passe | EXTERNALLY | USING nom_package} | NOT IDENTIFIED ]..  NOT IDENTIFIED  Indique qu’aucune identification n’est nécessaire pour activer le rôle. C’est la valeur par défaut.] [ WITH ADMIN OPTION ] . section Rôle ­ Activation ou désactivation d’un rôle. il est possible de préciser par quel mécanisme le rôle pourra être activé : un mot de  passe.. Exemple :  CREATE ROLE mailing. c.7- . en l’occurrence le mode d’identification pour pouvoir l’activer.. Les options sont :  IDENTIFIED BY mot_de_passe  Indique qu’un mot de passe est nécessaire pour activer le rôle.  Lors de la création d’un rôle.  Syntaxe pour les privilèges système  GRANT nom_privilège [. il faut avoir le privilège système CREATE ROLE.. une identification externe (système d’exploitation) ou un package.  IDENTIFIED USING nom_package  Indique que seul le package peut activer le rôle. openmirrors. Le mécanisme d’activation sera présenté  dans ce chapitre. Attribution d’un privilège à un rôle  L’ordre SQL GRANTpermet d’attribuer des privilèges système ou des privilèges objet à un rôle.] TO nom_rôle [..  IDENTIFIED EXTERNALLY  Indique qu’une identification externe est nécessaire pour activer le rôle.  L’ordre SQL ALTER ROLE>permet de modifier un rôle.La mise en œ uvre s’effectue en trois étapes :  q création du rôle ;  attribution des privilèges (système et objet) au rôle ;  attribution du rôle aux utilisateurs. Création d’un rôle  L’ordre SQL CREATE ROLE permet de créer un rôle..  Pour créer un rôle.Algeria Educ .  q q b.All rights reserved .  Syntaxe  CREATE ROLE nom [ IDENTIFIED { BY mot_de_passe | EXTERNALLY | USING nom_package} | NOT IDENTIFIED ].

INSERT ON adherent TO mailing.] | ALL [PRIVILEGES] } ON [nom_schéma. rôle ou PUBLIC) que ce qui a été attribué explicitement à cette  "cible"..  Syntaxe pour les privilèges système  REVOKE nom_privilège [ . Les  syntaxes  sont  les  mêmes  que  pour  l’attribution  directe  à  un  utilisateur..  Syntaxe  . Attribution d’un rôle à un utilisateur ou à un rôle  L’ordre SQL GRANT permet d’attribuer un rôle à un utilisateur ou à un rôle. ou avoir le privilège système ANY OBJECT PRIVILEGE. GRANT SELECT.8- © ENI Editions .. Les  syntaxes  sont  les  mêmes  que  pour  la  révocation  directe  à  un  utilisateur.  il  n’est  pas  possible  de  l’enlever  directement  à  un  utilisateur qui a reçu le rôle.  si  un  privilège  a  été  attribué  à  un  rôle.  Les privilèges attribués sont immédiatement actifs pour les utilisateurs connectés qui ont le rôle actif.  Attention au mélange attribution directe et attribution à un rôle : si un privilège est attribué à un rôle et le rôle à  l’utilisateur et qu’en parallèle le privilège est attribué en direct à l’utilisateur.  à  l’exception de la clause  WITH GRANT OPTION qui n’est pas permise pour l’attribution d’un privilège objet à un rôle.Algeria Educ . il faut être propriétaire de l’objet. révoquer le privilège de l’utilisateur ne  l’empêchera pas de pouvoir continuer à l’exercer (via le rôle).  il  faut  avoir  reçu  le  privilège  en  question  avec  la  clause  WITH ADMIN OPTION  ou  avoir  le  privilège  système  GRANT ANY PRIVILEGE.  En  l’occurrence. du moment qu’il a le droit d’attribuer le privilège ; c’est en  cela que le rôle n’appartient à personne. du moment qu’il a le droit de révoquer le privilège (le  rôle  n’appartient  à  personne).All rights reserved . pour attribuer un privilège système à un rôle.  Les privilèges sont immédiatement révoqués et ne peuvent plus être exercés par les utilisateurs connectés qui ont  le  rôle  actif.  Tout utilisateur a le droit de révoquer un privilège d’un rôle... Exemple :  GRANT CREATE SESSION. En l’occurrence. ou avoir le privilège système ANY OBJECT PRIVILEGE. REVOKE UPDATE ON adherent FROM mailing... avoir reçu le privilège en question avec la  clause WITH GRANT OPTION..  section  Rôle ­  Activation  ou  désactivation d’un rôle.] .. CREATE TABLE TO mailing. il faut avoir  reçu le privilège en question avec la clause WITH ADMIN OPTION ou avoir le privilège système GRANT ANY PRIVILEGE. Révocation d’un privilège à un rôle  L’ordre SQL REVOKEpermet de révoquer des privilèges système ou des privilèges objet à un rôle...  Pour attribuer un privilège objet à un rôle.  Pour  révoquer un privilège objet d’un rôle..  section  Rôle  ­  Activation  ou  désactivation d’un rôle.D’une  manière  générale...  d.Syntaxe pour les privilèges objet  GRANT { nom_privilège[(liste_colonnes)] [.  Tout utilisateur a le droit d’attribuer un privilège à un rôle...] .  Par  exemple.  La  notion  de  rôle  actif  sera  présentée  un  peu  plus  loin  dans  ce  chapitre. avoir reçu le privilège en question avec  la clause WITH GRANT OPTION.  pour  révoquer  un  privilège  système  d’un  rôle. La notion de  rôle  actif  sera  présentée  un  peu  plus  loins  dans  ce  chapitre  Gérer  les  droits.  e.  l’ordre SQL  REVOKE ne permet d’enlever à une "cible" (utilisateur.]nom_objet FROM nom_rôle [. Syntaxe pour les privilèges objet  REVOKE { nom_privilège [.]nom_objet TO nom_rôle [. il faut être propriétaire de l’objet. Exemple :  REVOKE CREATE TABLE FROM mailing..] | ALL [PRIVILEGES] } ON [nom_schéma.] .] FROM nom_rôle [..

 il peut donc enlever le rôle. les privilèges se cumulent (il n’y a pas de privilège "négatif").  l’activation  immédiate  n’est  pas  automatique.. il faut avoir reçu le rôle  en  question  avec  la  clause WITH ADMIN OPTION  ou  avoir  le  privilège  système GRANT ANY ROLE.. Révocation d’un rôle à un utilisateur ou à un rôle  L’ordre SQL REVOKE permet de révoquer un rôle.  La clause WITH ADMIN OPTION donne aussi le droit de modifier (ordre SQL ALTER ROLE) et de supprimer le rôle (ordre  SQL DROP ROLE).  f.com © ENI Editions .  il  est  possible  de  définir  ceux  qui  sont  effectivement  openmirrors.  g..Algeria Educ . Exemple :  GRANT mailing TO oheu.9- . Activation ou désactivation d’un rôle  Un rôle attribué à un utilisateur (directement ou via un autre rôle) est par défaut automatiquement activé lors de la  connexion de l’utilisateur.. Exemple :  REVOKE mailing FROM oheu. jusqu’à la fin de la session ou jusqu’à la désactivation du rôle.  L’utilisateur  peut activer le rôle grâce à l’ordre SQL SET ROLE.GRANT nom_rôle [.  parmi  les  rôles  attribués  à  l’utilisateur... Exemple :  DROP ROLE mailing.  les  utilisateurs  connectés  avec  le  rôle  actif  peuvent  continuer  à  exercer  les  privilèges  associés. Pour enlever un rôle.  De  plus.  Syntaxe  REVOKE nom_rôle [.. il faut avoir reçu le rôle en question avec la clause  WITH ADMIN OPTION ou avoir le privilège  système  GRANT ANY ROLE.  Le rôle est immédiatement enlevé aux utilisateurs ; les privilèges associés ne peuvent plus être exercés. Suppression d’un rôle  L’ordre SQL DROP ROLE permet de supprimer un rôle.  Lorsqu’un  rôle  est  révoqué.All rights reserved .] TO { nom_utilisateur | PUBLIC | nom_rôle } [.] .  Pour attribuer un rôle...  Le  créateur  du  rôle  ayant reçu ce dernier avec la clause WITH ADMIN OPTION..  h. La syntaxe est la même que pour la révocation d’un privilège système.  Le  créateur  d’un  rôle  n’est  pas  propriétaire  du  rôle  mais  le  rôle  lui  est  attribué  avec  l’option WITH ADMIN OPTION ; il peut donc attribuer le rôle qu’il a créé...  Syntaxe  DROP ROLE nom_rôle .] FROM { nom_utilisateur | PUBLIC | nom_rôle } [.  Le rôle attribué n’est pas immédiatement actif si l’utilisateur est déjà connecté. La syntaxe est la même que pour l’attribution d’un privilège système. Pour supprimer un rôle.  Un utilisateur peut avoir plusieurs rôles ; dans ce cas. il faut avoir reçu le rôle en question avec la clause WITH ADMIN OPTION ou avoir le privilège  système DROP ANY ROLE.] [ WITH ADMIN OPTION ] .  Si  l’utilisateur  est  connecté  au  moment  de  l’attribution.

.10 - © ENI Editions ...  . ne sont pas définis par  défaut. il est possible d’en désactiver certains pour en activer d’autres.  Syntaxe  ALTER USER nom_utilisateur DEFAULT ROLE { nom_rôle [.  NONE  Aucun des rôles attribués à l’utilisateur n’est activé par défaut.. Ce sont les rôles par défaut définis par un ordre SQL  ALTER USER.. La clause EXCEPT permet d’en enlever certains.. Exemple :  -.All rights reserved . Exemple :  ALTER USER oheu DEFAULT ROLE mailing.  en  dehors  de  l’application  en  question.. Les options sont :  IDENTIFIED BY  Donne le mot de passe qui permet d’activer le rôle...  Utiliser plusieurs rôles sans qu’ils soient tous actifs simultanément présente deux intérêts :  q Il  existe  un  paramètre.  en  fournissant  le  mot  de  passe. L’utilisateur peut ensuite activer les autres grâce à l’ordre SQL SET ROLE.  Syntaxe  SET ROLE { nom_rôle [ IDENTIFIED BY mot_de_passe ] [.  ALL  Tous les rôles attribués à l’utilisateur sont activés.  NONE  Aucun des rôles attribués à l’utilisateur n’est activé (désactive donc tous les rôles).  q L’ordre SQL ALTER USER permet de définir les rôles par défaut d’un utilisateur. ALTER USER vdep DEFAULT ROLE ALL EXCEPT mailing.] ] | NONE } .  Cet ordre SQL annule et remplace la situation actuelle des rôles par défaut ; elle n’ajoute pas ou n’enlève pas les  rôles à la liste actuelle.] | ALL [ EXCEPT nom_rôle [. Si un utilisateur est susceptible d’employer un nombre de rôles supérieur  à cette limite.L’utilisateur VDEP active le rôle MAILING SET ROLE mailing..  mais  inactifs  par  défaut.  L’ordre SQL SET ROLE permet d’activer ou de désactiver un rôle.automatiquement activés lors de la connexion de l’utilisateur.  De  cette  manière.  protégés  par  des  mots  de  passe. Les rôles attribués à un utilisateur qui a déjà des rôles par défaut.] | ALL [ EXCEPT nom_rôle [.  qui  limite  le  nombre  de  rôles  actifs  simultanément pour un utilisateur. La clause EXCEPT permet d’en enlever certains. l’utilisateur n’a aucun moyen d’activer et d’utiliser le rôle (et éventuellement de faire des erreurs).] ] | NONE } ... et sans donner le mot de passe à l’utilisateur ; ce sont alors les applications qui activent les rôles  dont  elles  ont  besoin. Les options sont :  ALL  Tous les rôles attribués à l’utilisateur sont activés par défaut.  peuvent  être  attribués  à  des  utilisateurs.  Des  rôles.  MAX_ENABLED_ROLES  (30  par  défaut).Algeria Educ .

  Avant  cette  version. pas à travers un rôle.2. Rôles prédéfinis  Oracle propose en standard un grand nombre de rôle prédéfinis. il faut avoir  reçu des droits en direct sur les objets.All rights reserved .Algeria Educ .  La  procédure  SET_ROLE  du  package  DBMS_SESSION  permet  de  faire  la  même  chose  (voir  la  documentation  "PL/SQL  Packages and Types Reference").  i. le rôle CONNECT ne suffit pas ; par contre.  le  rôle  CONNECT  ne  contient  plus  que  le  privilège  système  CREATE SESSION.Les rôles doivent avoir préalablement été attribués à un utilisateur ; il n’est donc pas possible de s’autoattribuer un  rôle en l’activant (heureusement)..) ou de modifier la session (privilège système ALTER SESSION).2  (10  g  Release  2).11 - . Trouver des informations sur les droits  a.  lors  de  l’exécution  d’un  programme  stocké. Depuis la version 10.  ce  rôle  contenait  d’autres  privilèges  qui  permettaient  de  créer  les  principaux  objets  d’un schéma (table. si  vous avez besoin d’attribuer de tels droits à un utilisateur. Limitation des rôles  Pour développer un objet (une vue ou un programme stocké) qui utilise des objets d’un autre schéma.  Par  ailleurs.  L’option ALL ne peut pas être utilisée sur des rôles protégés par un mot de passe.  Les  rôles  définis  avec  l’option  IDENTIFIED USING nom_package  ne  peuvent  être  activés  de  la  sorte  qu’à  partir  du  package spécifié.com © ENI Editions .). vue.Depuis  la  version  10.Oracle préconise de ne pas utiliser les rôles prédéfinis CONNECT.  MGMT_USER  Permet d’utiliser le Database Control en tant qu’administrateur.  j. Privilèges système  Plusieurs vues du dictionnaire de données permettent d’obtenir des informations sur les privilèges système :  q DBA_SYS_PRIVS : privilèges système attribués aux utilisateurs (ou aux rôles) ;  SESSION_PRIVS : privilèges  système  actuellement  actifs  dans  la  session  (obtenus  directement  ou  via  un  rôle) ;  SYSTEM_PRIVILEGE_MAP : liste de tous les privilèges système.  Cet ordre SQL annule et remplace les rôles actuellement actifs (pas d’ajout)..  DBA  Donne tous les privilèges système avec l’option WITH ADMIN OPTION. vue.  les  rôles  activés  de  l’utilisateur  appelant  ne  sont  pris  en  compte  que  si  le  programme  stocké  est  conçus  pour  s’exécuter  avec  les  droits  de  l’appelant  (clause  AUTHID CURRENT_USER). parmi lesquels :  CONNECT  Autorise la connexion (contient uniquement le privilège système CREATE SESSION). etc.  Les  vues  DBA_SYS_PRIVS  et  DBA_TAB_PRIVS  permettent  de  connaître  les  privilèges  regroupés  dans  ces  rôles  prédéfinis. RESOURCE et DBA mais de créer ses propres  rôles.  q q openmirrors.  RESOURCE  Permet la création des principaux objets d’un schéma (table. vous pouvez  attribuer ces droits directement à l’utilisateur ou via un rôle spécifique que vous créez.  4.

  b.  GRANTOR  Nom de l’utilisateur qui a attribué le privilège.All rights reserved .Algeria Educ .  q q Les colonnes intéressantes des différentes vues sont présentées ci­après.  SYSTEM_PRIVILEGE_MAP NAME  Nom du privilège.  DBA_SYS_PRIVS GRANTEE  Nom de l’utilisateur ou du rôle qui a reçu le privilège système.  TABLE_NAME  Nom de l’objet (pas forcément une table.12 - © ENI Editions .  ADMIN_OPTION  Privilège reçu avec la clause WITH ADMIN OPTION (YES ou NO). malgré le nom).  PRIVILEGE  Privilège système reçu.  PRIVILEGE  .  DBA_TAB_PRIVS GRANTEE  Nom de l’utilisateur ou du rôle qui a reçu le privilège objet.  OWNER  Nom de l’utilisateur propriétaire de l’objet.Les colonnes intéressantes des différentes vues sont présentées ci­après.  SESSION_PRIVS PRIVILEGE  Nom du privilège. Privilèges objet  Plusieurs vues du dictionnaire de données permettent d’obtenir des informations sur les privilèges objet :  q DBA_TAB_PRIVS : privilèges objet attribués aux utilisateurs (ou aux rôles) sur la totalité de l’objet   DBA_COL_PRIVS: privilèges  objet  attribués  aux  utilisateurs  (ou  aux  rôles)  sur  certaines  colonnes  de  l’objet  uniquement ;  TABLE_PRIVILEGE_MAP : liste de tous les privilèges objet.

  TABLE_PRIVILEGE_MAP NAME  Nom du privilège.Algeria Educ .com © ENI Editions . voir précédemment ;  DBA_ROLE_PRIVS : rôles attribués aux utilisateurs ou aux rôles ;  q q q q q openmirrors.All rights reserved . Rôles  Plusieurs vues du dictionnaire de données permettent d’obtenir des informations sur les rôles :  q DBA_ROLES : liste des rôles existant dans la base ;  DBA_APPLICATION_ROLES : description des rôles ayant une activation par un package ;  DBA_SYS_PRIVS : privilèges système attribués aux rôles (ou aux utilisateurs).  COLUMN_NAME  Nom de la colonne.13 - .Privilège objet reçu.  c.  GRANTABLE  Privilège reçu avec la clause WITH GRANT OPTION (YES ou NO).  GRANTABLE  Privilège reçu avec la clause WITH GRANT OPTION (YES ou NO).  GRANTOR  Nom de l’utilisateur qui a attribué le privilège.  voir  précédemment ;  DBA_COL_PRIVS : privilèges  objet  attribués  aux  rôles  (ou  aux  utilisateurs)  sur  certaines  colonnes  de  l’objet  uniquement.  PRIVILEGE  Privilège objet reçu.  TABLE_NAME  Nom de l’objet (table ou vue).  OWNER  Nom de l’utilisateur propriétaire de l’objet.  DBA_COL_PRIVS GRANTEE  Nom de l’utilisateur ou du rôle qui a reçu le privilège objet. voir précédemment ;  DBA_TAB_PRIVS : privilèges  objet  attribués  aux  rôles  (ou  aux  utilisateurs)  sur  la  totalité  de  l’objet.

  ADMIN_OPTION  Rôle reçu avec la clause WITH ADMIN OPTION (YES ou NO).Algeria Educ .  PACKAGE  Nom du package utilisé pour l’activation.14 © ENI Editions .  ROLE_SYS_PRIVS ROLE  Nom du rôle.  q q q Les colonnes intéressantes des différentes vues sont présentées ci­après.  SCHEMA  Schéma du package utilisé pour l’activation. NO ou GLOBAL).  DBA_ROLE_PRIVS GRANTEE  Nom de l’utilisateur ou du rôle qui a reçu le rôle.  GRANTED_ROLE  Nom du rôle reçu.  PASSWORD_REQUIRED  Indique si un mot de passe est nécessaire pour activer le rôle (YES.q ROLE_SYS_PRIVS : privilèges système attribués aux rôles (uniquement pour les rôles auxquels l’utilisateur a  accès) ;  ROLE_TAB_PRIVS : privilèges  objet  attribués  aux  rôles  (uniquement  pour  les  rôles  auxquels  l’utilisateur  a  accès) ;  ROLE_ROLE_PRIVS : rôles  attribués  à  d’autres  rôles  (uniquement  pour  les  rôles  auxquels  l’utilisateur  a  accès) ;  SESSION_ROLES : rôles actuellement actifs dans la session.  DBA_ROLES ROLE  Nom du rôle.  PRIVILEGE  Nom du privilège système reçu via le rôle.All rights reserved .  DBA_APPLICATION_ROLES ROLE  Nom du rôle.    .

  ROLE_TAB_PRIVS ROLE  Nom du rôle.  ADMIN_OPTION  Rôle reçu avec la clause WITH ADMIN OPTION (YES ou NO).  TABLE_NAME  Nom de l’objet (pas forcément une table.Algeria Educ .  OWNER  Nom de l’utilisateur propriétaire de l’objet.  ROLE_ROLE_PRIVS ROLE  Nom du rôle.  GRANTED_ROLE  Nom du rôle attribué au rôle.ADMIN_OPTION  Privilège reçu avec la clause WITH ADMIN OPTION (YES ou NO).com © ENI Editions .  openmirrors.  PRIVILEGE  Privilège objet reçu.All rights reserved .15 - .  SESSION_ROLES ROLE  Nom du rôle. malgré le nom).  COLUMN_NAME  Nom de la colonne (si applicable).

  Les  comptes  des  utilisateurs  finaux  n’ont  besoin  d’aucun  quota  dans  les  tablespaces.  lorsque  vous  créez  une  base  de  données  avec  l’assistant  graphique  Configuration  de  base  de  données). pour contrôler l’utilisation de certaines ressources ou mettre en œ uvre une  politique de gestion des mots de passe.  Utilisez une politique de gestion de mot de passe avec un nombre limité d’échecs de tentative de connexion  autorisés et des règles sur la complexité des mots de passe.Synthèse  1.  avec  des  lettres  majuscules.  il  peut  être  judicieux  de  prévoir  un  tablespace  dédié  et  de  définir  un  quota  uniquement  sur  ce  tablespace. Les comptes d’administration ont.  Utilisez  des  mots  de  passe  complexes  (10  caractères  au  minimum.  des  lettres  minuscules.  Verrouillez  et  expirez  le  mot  de  passe  des  comptes  par  défaut  qui  ne  sont  pas  utilisés  (c’est  le  cas.Algeria Educ .  et  c’est  généralement  tout..  Pour  les  comptes  de  développement.  Développement / Hébergement du schéma applicatif Un  tel  compte  a  les  privilèges  système  nécessaires  pour  la  création  des  différents  types  d’objets  (tables.  q q q q q © ENI Editions .  Interdisez l’authentification par le système d’exploitation à travers le réseau (le paramètre REMOTE_OS_AUTHENT  doit être à FALSE).  Les  seuls  comptes  par  défaut  qui  doivent  être  obligatoirement  ouverts  sont  SYS  et SYSTEM.  Utilisateur final Un  tel  compte  a  besoin  de  très  peu  de  privilèges  système : CREATE SESSION  (obligatoire).  2. notamment pour la gestion des structures de stockage et la  gestion des utilisateurs.  il  possède  des  privilèges  objet  sur  les  objets  du  schéma  applicatif.  Les profils peuvent être utilisés en plus. SYSMAN et  DBSNMP).  par  défaut.  ALTER SESSION  (parfois  nécessaire).  Modifiez les mots de passe par défaut des comptes par défaut que vous utilisez (au premier rang desquels  SYS. au fichier de paramètre et aux fichiers  de trace ou d’alerte de chaque instance Oracle).Les privilèges système requis peuvent être obtenus  par l’intermédiaire des rôles CONNECT et RESOURCE.  Administration Un tel compte a tous les privilèges système nécessaires. ou d’un rôle équivalent que vous avez créé (conseillé). Les différents types de comptes  Une base Oracle contient en général quatre types de comptes. SYSTEM. Quelques conseils pour sécuriser votre base de données  Voici quelques conseils simples (souvent de bon sens) qui permettent de sécuriser votre base de données :  q Limitez les accès au serveur (notamment au fichier de mot de passe.  ainsi  que SYSMAN et DBSNMP si vous utilisez le Database Control. Vous pouvez interroger la vue DBA_USERS_WITH_DEFPWD pour avoir la liste des  utilisateurs qui ont encore leur mot de passe par défaut.  procédures..  Ils  accèdent  aux  objets  du  schéma  applicatif  grâce  aux  privilèges  objet  et  l’écriture  des  requêtes  est  simplifiée  par  l’utilisation  de  synonymes  publics ou par l’exécution de l’ordre SQL ALTER SESSION SET CURRENT_SCHEMA.  vues. de plus. un accès complet au dictionnaire de données.  Dans  l’idéal.  Par  contre.  Le  compte  "propriétaire"  d’une  application  a  généralement  des  quotas  illimités  sur  les  tablespaces  (de  tables  et  d’index) dédiés à l’application. généralement par l’intermédiaire d’un rôle. des chiffres et des caractères spéciaux).1- .  Ces privilèges peuvent être obtenus par l’intermédiaire du rôle DBA ou d’un rôle équivalent.) et il possède un quota sur au moins un tablespace.All rights reserved .  il  est  préférable  d’utiliser  une  base  de  données  à  part  pour  le  développement.

  Ce  point est assez complexe car ces packages sont utilisés par de nombreux comptes Oracle (SYS notamment).  Attribuez un rôle à un utilisateur que s’il a réellement besoin de tous les privilèges contenus dans le rôle.2- © ENI Editions .q Ne stockez pas les mots de passe en clair dans des tables ou des scripts.All rights reserved . créez un autre rôle plus restrictif.  q q q q q q q openmirrors.  Révoquez  les  privilèges  EXECUTE  attribués  par  défaut  à  PUBLIC  sur  plusieurs  packages  potentiellement  dangereux  pour  la  sécurité : DBMS_LOB.  UTL_SMTP. Si  ce n’est pas le cas.  Utilisez  des  rôles  pour  gérer  les  droits. vous serez amenés à réattribuer les  droits  nécessaires  directement  aux  utilisateurs  concernés  (vous  pouvez  interroger  la  vue  DBA_DEPENDANCIES  pour connaître les comptes qui utilisent ces packages).  DBMS_SYS_SQL.  protégez­le  par  un  mot  de  passe.com .  UTL_HTTP. Si  vous enlevez le privilège  EXECUTE attribués à PUBLIC sur ces packages.  UTL_TCP.  N’attribuez aucun privilège objet à PUBLIC (autre que ceux attribués par défaut).  DBMS_JOB.Algeria Educ .  UTL_FILE.  N’attribuez aucun privilège système à PUBLIC (il n’y en a aucun par défaut).  Si  le  rôle  est  activé  par  une  application.  Définissez vos propres rôles et n’utilisez pas les rôles prédéfinis par Oracle.  Attribuez le moins de privilèges possible aux utilisateurs (notamment les privilèges système ANY).

username.------------------------1 3 SYSTEM .  USERNAME  Nom de l’utilisateur (compte Oracle). INACTIVE ou KILLED).  STATUS  Statut de la session (ACTIVE.  SCHEMANAME  Nom du schéma de l’utilisateur (peut être différent de USERNAME si la session a exécuté l’ordre SQL ALTER SESSION SET CURRENT_ SCHEMA).1- .  MACHINE  Nom de la machine de l’utilisateur au niveau du système d’exploitation.status FROM SID SERIAL# USERNAME OSUSER ---..osuser.  SERIAL#  Numéro de série de la session.  OSUSER  Nom de l’utilisateur au niveau du système d’exploitation.  TERMINAL  Nom du terminal de l’utilisateur au niveau du système d’exploitation.  © ENI Editions . STATUS -------ACTIVE INACTIVE ACTIVE   Les sessions sans valeur dans la colonne USERNAME sont celles des processus d’arrière­plan.All rights reserved .  LOGON_TIME  Date et heure de connexion..---------. Les colonnes intéressantes de la vue V$SESSION sont les suivantes :  SID  Identifiant de la session.--------.Superviser les utilisateurs connectés  La vue V$SESSION permet d’identifier les utilisateurs actuellement connectés :  SQL> SELECT sid.Algeria Educ .serial#.  SERVER  Type de processus serveur (DEDICATED ou SHARED).  PROGRAM  Nom du programme employé par l’utilisateur pour se connecter à la base de données. 10 10494 VDEP vdep 14 450 SYSTEM Administrateur v$session.

 Par contre.  vous  pouvez  aussi  interroger  la  vue V$SESSION_LONGOPS  pour  obtenir  des  informations  sur  les  opérations  longues (en cours depuis plus de 6 secondes).All rights reserved . vous pouvez utiliser l’ordre SQL ALTER SYSTEM. Exemple :  ALTER SYSTEM KILL SESSION ’10.  Syntaxe  ALTER SYSTEM KILL SESSION ’sid.serial#’.  un  message  d’erreur  lui  indiquant  qu’il  a  été  déconnecté.10494’.  sans  attendre  la  fin  d’une  éventuelle  transaction  en  cours  (cette  dernière  est  annulée).  Si  un  utilisateur  est  déconnecté  alors  qu’il  est  actif..com .Pour déconnecter un utilisateur.2- © ENI Editions . l’ordre SQL ALTER SYSTEM DISCONNECT SESSION ..  la connexion est fermée mais la session reste visible dans V$SESSION avec le statut KILLED jusqu’à ce que l’utilisateur  ait été notifié de la déconnexion lors de sa prochaine action (avec la même erreur ORA-00028). POST_TRANSACTION attend que la transaction  en cours se termine.  sa  requête  est  interrompue. IMMEDIATE sont équivalents : ils  ferment  la  session  immédiatement..  openmirrors.  Au  besoin. Les ordres SQL ALTER SYSTEM KILL SESSION et ALTER SYSTEM DISCONNECT SESSION . ou  ALTER SYSTEM DISCONNECT SESSION ’sid.  lui  est  retourné (ORA-00028<$I[]ORA-00028>: votre session a été fermée) et la session disparaît de V$SESSION.serial#’ { IMMEDIATE | POST_TRANSACTION}..  SERVICE_NAME  Nom de service de la session (service auquel l’utilisateur s’est connecté).Algeria Educ .SQL_ID  Identifiant de la requête SQL en cours d’exécution (une jointure avec V$SQL ou V$SQLAREA sur la même colonne permet  de voir l’ordre SQL en question).  Un  utilisateur  en  train  d’exécuter  une  requête  a  un  statut  ACTIVE  (INACTIVE  sinon). S’il est inactif.

 cliquez sur le lien Serveur puis sur le lien Utilisateurs (cadre Sécurité) pour accéder à la page  de gestion des utilisateurs ci­après.Utiliser le Database Control  1.  Modifier  ou  Visualiser.  q q q q q En  cliquant  sur  le  lien  du  nom  de  l’utilisateur. Utilisateurs  Sur la page d’accueil.1- .    À partir de cette page.  vous  arrivez sur la page de définition d’un utilisateur :  © ENI Editions .All rights reserved . vous pouvez effectuer diverses actions sur les utilisateurs :    créer un nouvel utilisateur (bouton Créer ou menu Créer comme) ;  supprimer un utilisateur (bouton Supprimer) ;  modifier un utilisateur (bouton Modifier) ;  faire expirer le mot de passe (menu Expiration du mot de passe) ;  verrouiller ou déverrouiller le compte (menus Verrouiller l’utilisateur ou Déverrouiller l’utilisateur).Algeria Educ .  ou  en  cliquant  sur  les  boutons  Créer.

2- © ENI Editions .  cliquez  sur  le  lien  Serveur  puis  sur  le  lien Rôles  (cadre Sécurité)  pour  accéder  à  la  page  de  gestion des rôles :    À partir de cette page. quotas.com . Rôles  Sur la page d’accueil.All rights reserved .Algeria Educ .  Les  onglets  (sous  forme  de  liens)  de  cette  page  permettent  de  gérer  les  différentes  propriétés  de  l’utilisateur : identification.  2. vous pouvez effectuer diverses actions sur les rôles :    créer un nouveau rôle (bouton Créer ou menu Créer comme) ;  q openmirrors. droits.

 cliquez sur le lien Serveur puis sur le lien Profils (cadre Sécurité) pour accéder à la page de  gestion des profils :    À partir de cette page. vous pouvez effectuer diverses actions sur les profils :    Créer un nouveau profil (bouton Créer ou menu Créer comme) ;  Supprimer un profil (bouton Supprimer) ;  q q © ENI Editions .3- . privilèges attribués.  q q En cliquant sur le lien du nom de rôle. ou en cliquant sur les boutons Créer. rôles attribués. Profils  Sur la page d’accueil. Modifier ou Visualiser.All rights reserved .q supprimer un rôle (bouton Supprimer) ;  modifier un rôle (bouton Modifier) ;  voir les utilisateurs qui ont le rôle (menu Afficher les bénéficiaires).  3. vous arrivez sur  la page de définition d’un rôle :    Les  onglets  (sous  forme  de  liens)  de  cette  page  permettent  de  gérer  les  différentes  propriétés  du  rôle : authentification.Algeria Educ .

  q En cliquant sur le lien du nom de profil. Modifier ou Visualiser. vous arrivez sur  la page de définition d’un profil :    Les deux onglets (sous forme de liens) de cette page permettent de gérer les deux aspects du profil : limitation des  ressources et gestion des mots de passe. ou en cliquant sur les boutons Créer.  openmirrors.Algeria Educ .q Modifier un profil (bouton Modifier) ;  Voir les utilisateurs qui ont le profil (menu Afficher les dépendances).4- © ENI Editions .com .All rights reserved .

 Par ailleurs.  Il  est  intéressant  lorsque  la  colonne n’est pas interrogée directement (colonne opérateur valeur) mais avec la fonction (fonction(colonne) opérateur valeur).All rights reserved .  Index  à  clé  inversée : index  B­tree  qui  indexe  non  pas  la  valeur  de  la  colonne  mais  une  valeur  résultant  de  l’inversion  des  octets  de  la  colonne  (intéressant  pour  l’indexation  de  colonnes  qui  sont  insérées  en  ordre  croissant et interrogées par égalité).  l’option  partitionnement  permet  de  découper  le  stockage  physique des tables et des index en morceaux plus petits appelés partitions.  Index  basé  sur  des  fonctions : index  B­tree  qui  indexe  non  pas  la  valeur  de  la  colonne  mais  le  résultat  de  l’application  d’une  fonction  SQL  (UPPER.  seuls  les  tables  et  les  index  occupent  de  l’espace  de  stockage  en  dehors de leur définition dans le dictionnaire.  Les tables et les index sont des segments ; le stockage est donc organisé en extensions.)  à  la  valeur  de  la  colonne. l’organisation du stockage dans les blocs a de l’importance. piloté par la clause STORAGE  et par les caractéristiques du tablespace. mais ces derniers sortent du périmètre de cet  ouvrage :  q Vues matérialisées : structure analogue à une table et dont le contenu est périodiquement mis à jour à partir  d’une requête SELECT.  Tables  et  index  partitionnées : depuis  la  version  8.1- .  IOT (Index Organised Table ­ table organisée en index) : table dont le stockage est organisé dans l’index de la  clé primaire de la table.  LOWER.  q q q De même.  etc.  Clusters : structures  qui  permettent  de  stocker  physiquement  ensemble  des  tables  fréquemment  interrogées  par jointure.  Index Bitmap : index dont le stockage est organisé différemment des index B­tree et qui est plutôt destiné à  l’indexation  des  colonnes  à  faible  cardinalité  dans  un  environnement  décisionnel  (l’index  bitmap  est  très  coûteux en mise à jour).  q q q © ENI Editions .  Il existe d’autres types d’objets qui occupent de l’espace de stockage.  Cet  espace  de  stockage  doit  être  planifié  correctement  pour  éviter  les  erreurs  liées  au  manque  d’espace  ou  les  problèmes de performance.Algeria Educ . il existe plusieurs types d’index :  q Index B­tree : index classique qui sera étudié dans cet ouvrage.Vue d’ensemble  Parmi  les  principaux  types  d’objets  d’un  schéma.

  L’en­tête  est  stocké  dans  la  partie  haute  du  bloc  et  les  données  sont  insérées  à  partir  du  bas.  Structure d’une ligne L’en­tête d’une ligne contient quelques informations sur la ligne (nombre de colonnes. un répertoire des lignes et  des entrées pour les transactions.  le  répertoire  des  lignes  situé  dans  l’en­tête  grossit ; si  les  lignes  sont  ensuite  supprimées. Le  reste du bloc contient les données (une à plusieurs lignes de la table) et de l’espace libre. Par exemple. verrou).1- . Principes    Structure du bloc L’en­tête du bloc contient l’adresse du bloc. le répertoire des lignes ne rétrécit pas (l’espace est conservé et pourra être réutilisé si des lignes sont  de nouveaux insérées dans le bloc). chaînage éventuel. quelle que soit la valeur stockée dans la  colonne. La  taille de l’en­tête de lignes est variable (3 octets minimum). si 100  lignes  sont  insérées  dans  le  bloc.  La  longueur  totale  d’une  ligne  dépend  du  nombre  de  colonnes  et  de  la  valeur  stockée  dans  chaque  colonne. chaque colonne est stockée avec un en­tête de  colonne (qui donne la longueur de la colonne sur 1 à 3 octets) suivi de la valeur de la colonne. La taille de l’en­tête du bloc est variable.Algeria Educ .com © ENI Editions .  la  longueur de la colonne dépendant du type de données. Organisation du stockage dans les blocs  a.  L’en­tête  est  susceptible  de  grossir  (vers  le  bas)  en  fonction  de  l’activité dans le bloc ; il ne rétrécit jamais.All rights reserved . le type de segment.  Exemple :  Type  CHAR(n)  Longueur du stockage  Longueur fixe (n octets). Ensuite.Gestion des tables  1. un répertoire des tables. de l’ordre de 100 octets à 200 octets.  openmirrors.

  Longueur fixe (8 octets).  PCTFREE Dans la définition d’une table. Gestion de l’espace dans les blocs  L’espace libre à l’intérieur du segment peut être géré automatiquement ou manuellement.  Oracle  va  déplacer  la  ligne  dans  un  autre  bloc  avec  des  impacts négatifs sur les performances que nous verrons dans la suite de cet ouvrage. En effet. Dans ce dernier cas.  La gestion automatique de l’espace dans les segments (Automatic Segment­Space Management ­ ASSM) présente de  nombreux  avantages : facilité  d’utilisation  (pas  de  paramètre  PCTUSED  à  spécifier). utilisées en interne par Oracle. Oracle  cherche à réaliser la modification en conservant la ligne à l’intérieur du bloc où elle est stockée : cela ne pose pas de  problème si la longueur globale de la ligne diminue (remplacement de PIERRE par PAUL dans une colonne) mais peut  en poser si la ligne grossit (remplacement de PAUL par PIERRE dans une colonne). le paramètre PCTUSED est sans objet.  Dans  le  cas  de  la  gestion  "manuelle". La disponibilité ou la non­disponibilité d’un bloc pour l’insertion est contrôlée par deux  paramètres de la définition de la table : PCTFREE et PCTUSED. jusqu’à 2^32 blocs Oracle.  meilleure  utilisation  de  l’espace.  b.  c’est  que  le  bloc  ne  contient  pas  que  des  données  utiles ; il  y  a  des  données  de  contrôle.  pour  chaque  segment. lorsqu’une ligne est modifiée. pour les futures mises à jour des lignes stockées dans le bloc.y)  DATE  CLOB.  le  paramètre  PCTUSED  spécifie  le  pourcentage  .  Longueur variable (entre 1 et 21 octets) dépendant de la valeur stockée  dans la colonne.  Gestion manuelle : PCTUSED Dans  la  définition  d’une  table.  en  gestion  manuelle  uniquement.  meilleure  concurrence  d’accès  pour  les  insertions  simultanées.  Ce  qu’il  faut  retenir. Dans  ce cas.  La  gestion  automatique  de  l’espace  dans  les  segments  est  disponible  uniquement  dans  les  tablespaces  gérés  localement  et  spécifiée  au  niveau  du  tablespace  (pas du segment individuel) par la clause SEGMENT SPACE MANAGEMENT AUTO (voir le chapitre Gestion des tablespaces  et des fichiers de données) ; elle est activée par défaut.  Oracle  gère  une  liste  de  blocs  disponibles  pour  l’insertion de lignes (freelist). une ligne comprenant 3 colonnes  stockant  30  octets  de  données  utiles  emploiera  en moyenne  35  octets  d’espace  dans  le  bloc  et  une  ligne  comprenant 15 colonnes stockant 145 octets de données utiles emploiera en moyenne 160 octets d’espace dans  le bloc. La gestion automatique est apparue en version 9.Algeria Educ . Oracle utilise une bitmap afin de connaître le taux de  remplissage de chaque bloc alloué au segment et en déduire ceux dans lesquels il peut insérer des données.  NUMBER(x.2- © ENI Editions . À titre d’exemple.  résultat  d’une  expression)  permettent  de  connaître respectivement la taille en octets du stockage interne de la valeur et la représentation interne de la valeur. pour chaque segment.  Dans le cas de la gestion "automatique". s’il n’y a pas  suffisamment  d’espace  disponible  à  l’intérieur  du  bloc. dépendant de la valeur stockée dans la  colonne. BLOB  Une valeur NULL occupe un octet en milieu de ligne et aucun en fin de ligne.  Longueur variable. le paramètre PCTFREE spécifie le pourcentage de l’espace du bloc laissé libre pour les  modifications des lignes stockées dans le bloc :    La clause PCTFREE permet de ne pas remplir les blocs à 100 % et de conserver de l’espace disponible à l’intérieur du  bloc.VARCHAR2(n)  Longueur variable (0 à n octets).  Les  fonctions  SQL  VSIZE  et  DUMP  appliquées  à  une  valeur  (colonne. de surcharge.All rights reserved .

  entre  50  et  75 % d’espace libre. Nous n’évoquerons  pas PCTUSED et ne donnerons aucun conseil sur sa valeur.  par  suppression  de  ligne  ou  diminution  de  la  taille  d’une  ligne  lors  d’une  modification. SQL> UPDATE adherent SET prenom = ’Olivier’ 2 WHERE ROWID = ’AAAER2AACAAADdiAAA’.  position  dans  le  bloc).All rights reserved .  Dans la suite de ce chapitre. Compression des données dans les blocs  Depuis Oracle9i Release 2.  Dans la structure interne du ROWID.  c. le package DBMS_ROWID offre plusieurs fonctions qui permettent d’extraire les différentes  openmirrors. nom. la compression est plutôt destinée à des tables accédées en lecture. prenom FROM adherent.  Ce  type  de  compression  peut  donc  aussi  être  utilisé  dans  une  base  transactionnelle.3- .  Le  paramètre  PCTUSED  permet  de  contrôler  le  moment  où  le  bloc  redeviendra  candidat  à  l’insertion.d’occupation auquel le bloc doit redescendre avant de redevenir candidat à l’insertion :    Lorsque  le  bloc  atteint  un  taux  de  remplissage  correspondant  à  la  clause PCTFREE..  Cette colonne virtuelle peut être interrogée comme les autres colonnes de la table :  SQL> SELECT ROWID.  entre  0  et  25 %  d’espace  libre.. une fois  qu’elles ont été construites ou reconstruites (par exemple. Un exemple est donné à la section Réorganiser le stockage d’une table..  Gestion automatique En gestion automatique. Le ROWID  Le ROWID est une colonne virtuelle présente dans chaque table qui donne l’adresse physique de stockage de la ligne. il est possible d’activer la compression pour toutes les opérations.  la  reconstruction  d’une  table  (ordre  SQL  ALTER TABLE .  c’est le moyen le plus rapide pour accéder à une ligne.  Avant  la  version  11. dans une base décisionnelle). entre 75 et 100 % d’espace libre. nous considérerons que la gestion automatique est utilisée.  Oracle compresse les données au niveau du bloc en factorisant dans une table de symboles. intitulé OLTP Table Compression.  aucune  insertion  n’est possible  avant  que  de  l’espace  dans  le  bloc  soit  libéré. MOVE)  ou  les  insertions  en  chemin  direct  (ordre  SQL  INSERT /*+ APPEND */ . cette gestion interne du bloc (disponible ou non pour l’insertion) est coûteuse en temps de traitement.. Oracle a toutes les informations nécessaires à la localisation physique de la ligne  dans  un  fichier  de  données  (fichier. car l’espace libéré n’est peut­être pas suffisant  pour  réellement  insérer  une  ligne  et  d’autre  part.). d’une part. Pour les insertions ou modifications individuelles ultérieures (ordres SQL INSERT et UPDATE).com © ENI Editions .  Depuis la version 11. AS SELECT). nécessite l’option Advanced Compression. Oracle utilise une  bitmap pour connaître le taux de remplissage de chaque bloc alloué au  segment : 0 %  d’espace  libre  (plein).  suite  à  la  libération  d’espace.  car  le  bloc  risque  de  redevenir  non  disponible  dès  la  première  insertion ; or. y compris les insertions ou  modifications  individuelles. les valeurs répétées  stockées dans le bloc..  Oracle  utilisera  la  bitmap  pour  déterminer  dans  quel  bloc  il  peut  insérer  la  ligne.  Lors  de  l’insertion  d’une  nouvelle  ligne.  Ce  paramètre  permet  d’éviter  que  le  bloc  ne  redevienne  immédiatement  candidat à l’insertion dès que le moindre octet se libère. Dans ce cas. numero.  entre  25  et  50 %  d’espace  libre. S’il est connu. les données ne  sont pas compressées..Algeria Educ .  la  compression  s’effectue  uniquement  au  moment  de  la  création  du  bloc. Le ROWID permet de localiser physiquement la ligne ; il est utilisé en interne par Oracle dans les index.  numéro  de  bloc.  lors  d’opérations  comme  la  création  d’une  table  à  partir  d’une  requête  (ordre  SQL  CREATE TABLE . il est possible de compresser les données dans les blocs des tables.  Un  ROWID  n’est  pas  directement  compréhensible ; par contre.  2.  PCTUSED  va  donc  permettre  d’attendre  que  suffisamment  d’espace  ait  été  libéré  dans  le  bloc  avant  d’autoriser  de  nouvelles insertions dans le bloc.  Cette fonctionnalité.

  Le  phénomène  de  migration  peut  (et  même  doit)  être  évité. Oracle la stocke dans plusieurs blocs chaînés  par  des  pointeurs : c’est  le  phénomène  de  chaînage  d’une  ligne.All rights reserved .clause_stockage STORAGE ( [ INITIAL valeur [K|M] ] [ NEXT valeur [K|M] ] [ MINEXTENTS valeur ] [ MAXEXTENTS { valeur | UNLIMITED } ] [ PCTINCREASE valeur ] ) Exemple :  CREATE TABLE adherent (numero NUMBER(6). nom VARCHAR2(40).4- © ENI Editions .Algeria Educ .  La clause PCTFREE donne la valeur du PCTFREE (entre 0 et 99.  Pour  lire  cette  ligne.  Le phénomène de chaînage est difficilement évitable.  N’oubliez  pas  que  la  clause  STORAGE  est  traitée  différemment  selon  que  le  tablespace  est  géré  par  le  dictionnaire ou localement. prenom VARCHAR2(30)) TABLESPACE data PCTFREE 30 STORAGE ( INITIAL 10M ) . Le paramètre PCTFREE sera donc positionné avec soin sur les tables pour lesquelles la taille  des lignes insérées est sensiblement inférieure à la taille des lignes après modification(s). Spécifier le stockage d’une table  Le stockage d’une table peut être spécifié lors de la création de la table. Dans un tablespace géré localement. Chaînage et migration  En  règle  générale.  Oracle  n’a  besoin de lire qu’un seul bloc. tant que la ligne n’est pas supprimée.  Oracle  a  alors  besoin  de  lire  plusieurs blocs. seule l’option INITIAL est utile.composantes du ROWID.  en  laissant  suffisamment  d’espace  disponible  dans  les  blocs pour les mises à jour. Modifier une ligne ne change pas son  ROWID puisque la ligne est.  Oracle  déplace la ligne dans un autre bloc pointé par l’en­tête de la ligne resté dans le bloc d’origine : c’est le phénomène de  migration  d’une  ligne.  ce  qui  dégrade  les  performances  des  accès  par  index. . sauf en augmentant la taille des blocs.  Utiliser le ROWID dans une application (dans les clauses WHERE des ordres SQL) se révèle très intéressant du point de  vue  des  performances : Oracle  obtient  directement  l’adresse  physique  de  la  ligne  à  lire  ou  modifier.  Oracle  a  besoin  de  lire  deux  blocs.  mais  pour  lire  cette  ligne. 10 par défaut). Cela peut être insuffisant pour les très grandes lignes.  4.  .  Syntaxe simplifiée  CREATE TABLE nom_table (spécification des colonnes) [ TABLESPACE nom_tablespace ] [ PCTFREE valeur ] [ PCTUSED valeur ] [ clause_stockage ] [ NOCOMPRESS | COMPRESS [ FOR { ALL | DIRECT_LOAD } OPERATIONS ]] [ LOGGING | NOLOGGING ] . Les  clauses  TABLESPACE et  STORAGE  ont  déjà  été  présentées  au  chapitre  Gestion  des  tablespaces  et  des  fichiers  de  données.  Si la ligne est intrinsèquement trop grande pour tenir dans un seul bloc.  Pour  lire  la  ligne. Il faut donc y penser lors  de la création de la base de données ou du tablespace.  Le  ROWID  de  la  ligne  modifiée  et  migrée  n’a  pas  changé.  et  qu’il  ne  reste  plus  suffisamment  d’espace  libre  dans  le  bloc. dans l’ordre SQL CREATE TABLE.  Si  une  ligne  grandit  suite  à  une  modification. modifiée à l’intérieur du bloc où elle a été insérée ; ce sera aussi le cas si la ligne  est migrée vers un autre bloc par manque d’espace disponible (ce qui n’est pas bénéfique comme nous le verrons ci­ après).  sans  devoir  lire  toute la table ni passer par un index.  L’intérêt  de  cette  technique  est  qu’Oracle n’a pas besoin de modifier le ROWID de la ligne dans les index lors d’une mise à jour de la ligne.  3. a priori.  une  ligne  d’une  table  est  stockée  en  totalité  à  l’intérieur  d’un  bloc.  Le ROWID d’une ligne ne change jamais.

 Il n’est donc pas possible.  Néanmoins.  Par  défaut.  si  vous  le  souhaitez  ou  le  pouvez.  éventuellement  définie  au  niveau  du  tablespace  dans  lequel  elle  est  stockée.La clause PCTUSED donne la valeur du PCTUSED (entre 0 et 99. 1 an. c’est le cas par défaut). de  cette manière.  Les  caractéristiques  modifiées  sont  prises  en  compte  uniquement  pour  les  futures  opérations.  openmirrors.  Par définition.  L’idée  est  de  choisir  des  caractéristiques  de  stockage  adaptées  à  la  nature  de  la  table  (petite.  Syntaxe simplifiée  ALTER TABLE nom_table [ PCTFREE valeur ] [ PCTUSED valeur ] [ NOCOMPRESS | COMPRESS [ FOR { ALL | DIRECT_LOAD } OPERATIONS ] ] [ LOGGING | NOLOGGING ] [ clause_stockage_restreinte ] . Cette clause est ignorée si la table est  stockée dans un tablespace géré localement avec une gestion automatique de l’espace dans les segments. il est souvent pertinent de réaliser une sauvegarde de la base de  données.  La clause NOLOGGING permet de ne pas journaliser certaines opérations effectuées sur la table (création à partir d’une  sous­requête et insertion en chemin direct essentiellement) ; les mises à jour individuelles sont. par contre.  de  préférence  gérés localement (c’est le cas par défaut) avec une gestion automatique de l’espace dans les segments (c’est le cas  par défaut). Recommandations pour le stockage des tables  a.  Si  cette  recommandation  numéro  un  est  respectée.  La  clause  NOLOGGING  est  sans  effet  si  la  table  est  stockée  dans  un  tablespace  défini  en  mode  FORCE LOGGING. PCTFREE+PCTUSED doit être strictement inférieur à 100.All rights reserved .  Plus  tard.  éventuellement  définie  au  niveau  du  tablespace dans lequel elle est stockée.  la  table  hérite  de  l’option  LOGGING  ou  NOLOGGING. Vue d’ensemble  La  recommandation  numéro  un  est  de  stocker  les  tables  dans  un  ou  plusieurs  tablespaces  dédiés.  adapté  à  la  volumétrie  estimée  à  une  échéance donnée.  au  moins pour les tables les plus importantes de l’application :  q recommandation numéro deux : régler PCTFREE avec soin (voir Estimation de PCTFREE) ;  recommandation  numéro  trois : allouer  un  espace  initial  à  la  table. de modifier l’espace initialement alloué à la table ou le remplissage  ou la compression des blocs déjà utilisés. si possible lointaine (6 mois. toujours  journalisées.  vous  allez  bénéficier  de  nombreux  mécanismes  de  gestion  automatique du stockage qui permettent éventuellement de ne rien faire de plus.  La clause COMPRESS permet de compresser les données dans les blocs. 2 ans ou plus).  vous  pouvez  utiliser  des tablespaces gérés localement avec une gestion uniforme de la taille des extensions (EXTENT MANAGEMENT LOCAL UNIFORM) et/ou spécifier avec soin l’option INITIAL de la clause STORAGE.  nous  étudierons  la  clause  MOVE  de  l’ordre  SQL  ALTER TABLE  qui  permet  de  reconstruire  physiquement  le  stockage  d’une  table.  reconstruction de la table ou chargement par des insertions en chemin direct) ; c’est la valeur par défaut. Dans ce cas.  5.Algeria Educ .  La  clause  NOLOGGING est intéressante pour améliorer les performances de certaines opérations mais rend la table irrécupérable  en cas d’incident ; après une opération NOLOGGING. clause_stockage_restreinte STORAGE ( [ NEXT valeur [K|M] ] [ MAXEXTENTS { valeur | UNLIMITED } ] [ PCTINCREASE valeur ] ) L’ordre SQL ALTER TABLE n’a pas d’effet rétroactif sur le stockage déjà alloué à la table. utilisez de préférence  des  tablespaces  gérés  localement  avec  une  gestion  automatique  de  la  taille  des  extensions  (EXTENT MANAGEMENT LOCAL AUTOALLOCATE. de changer la table de tablespace. 40 par défaut).  ou  si  la  base  de  données  elle­même  est  en  mode  FORCE LOGGING.  Par  défaut.com © ENI Editions . uniquement lors des opérations de chargement direct (création de la table à partir d’une sous­requête.  volumineuse. L’ordre SQL ALTER TABLEpeut être utilisé pour modifier certaines caractéristiques du stockage de la table. L’option ALL  indique  que  les  blocs  sont  compressés  pour  toutes  les  opérations  (y  compris  les  insertions  ou  modifications  individuelles).  la  table  hérite  de  l’option  COMPRESS  ou  NOCOMPRESS.  q Si  vous  souhaitez  contrôler  plus  précisément  le  stockage  des  tables  (ou  de  certaines  tables).5- . L’option DIRECT_LOAD indique que les blocs sont  compressés.  deux  recommandations  supplémentaires  peuvent  être  étudiées.

 notamment sur la longueur moyenne des données saisies (le nom  du client stocké sous la forme d’un VARCHAR2(80) comprendra­t­il en moyenne 40 caractères. et donc avoir le temps nécessaire pour réagir si l’estimation initiale est mauvaise.’ADHERENT’) Procédure PL/SQL terminée avec succès. Estimer la volumétrie d’une table à une échéance donnée  La méthode la plus simple (et la plus pragmatique) pour estimer la volumétrie d’une table à une échéance donnée  consiste à :  q estimer le nombre de lignes attendues ;  créer la table dans les conditions d’exploitation (taille de bloc et PCTFREE notamment) ;  charger la table avec un jeu de données représentatives ;  calculer le nombre de blocs occupés par ce jeu d’essai (par exemple à partir des statistiques de la table ou à  l’aide du package DBMS_SPACE ­ voir ci­après) ;  en déduire le nombre de blocs pour le nombre de lignes attendues (règle de trois).  Par ailleurs.  nous  pouvons  estimer  que  la  table  utilisera  13 800  blocs dans deux ans.  L’utilisation du package DBMS_STATS sera présenté à la section Superviser l’espace occupé par une table. 60 ?).gather_table_stats(’DIANE’.  car  il  y  a  de  nombreuses  incertitudes :  q sur le nombre de lignes estimé à l’échéance (N +/­ 10% par exemple) ;  sur la représentativité du jeu de données.  .  Le fait qu’une table soit stockée dans un grand nombre d’extensions ne pose pas de problème du point de  vue des performances.Algeria Educ .6- © ENI Editions . SQL> SELECT blocks FROM dba_tables 2 WHERE table_name=’ADHERENT’.All rights reserved .  etc. 50.  donc.  b.  q Supposons par exemple que la table ADHERENT (schéma DIANE) ait été chargée avec 10 000 lignes et qu’elle doive en  contenir 1 000 000 à une échéance de 2 ans.  pas  un  résultat  exact  à  l’octet  près.)  et  d’anticiper  à  une  échéance  suffisamment  lointaine  pour  être  tranquille  pendant quelque temps. il ne faut pas hésiter à dédier des tablespaces au stockage des tables volumineuses.  q q q q Cette  méthode  ne  donne  qu’une  estimation. BLOCKS ---------138 SQL> SELECT 138/10000*1000000 estimation FROM dual. ESTIMATION ---------13800 Le  jeu  de  données  utilise  138  blocs. un calcul de ce genre peut être effectué à intervalles réguliers pour voir la tendance et vérifier  si les hypothèses de départ étaient bonnes.  les  extensions doivent avoir une taille d’au moins 5 blocs. Nous pouvons réaliser le calcul suivant :  SQL> EXEC dbms_stats.  à  croissance  régulière.statique.  Dans  un  tablespace  géré  localement  avec  une  gestion  automatique  de  l’espace  dans  les  segments.  En production.  par  règle  de  trois.

 la taille des lignes insérées  initialement  n’est  pas  représentative  de  la  taille  finale  de  la  ligne  après  modification(s).  DELETES  nombre approximatif de lignes supprimées. Pour une table faisant l’objet d’insertion et de mises à jour. Cette formule est  surtout  destinée  à  calculer  la  valeur  de PCTFREE concernant les tables pour lesquelles. Oracle a introduit une fonctionnalité permettant de mettre une table "sous surveillance". Surveiller l’utilisation d’une table  En version 9.c.  Pour  les  autres  tables.  Oracle trace le nombre approximatif d’ordres SQL INSERT. cette fonctionnalité devait être activée explicitement ; depuis la version 10.  6.  INSERTS  nombre approximatif de lignes insérées.  Les valeurs de Ti et Tf peuvent être estimées à partir des statistiques de la table (AVG_ROW_LEN).  TIMESTAMP  date/heure de la dernière mise à jour de la statistique.  Ce  mécanisme  de  surveillance  est  avant  tout  destiné  à  la  fonctionnalité  de  calcul  automatique  des  statistiques ; les  informations ainsi collectées permettent à Oracle de déterminer les tables dont les statistiques ne sont plus à jour. par défaut.    openmirrors. UPDATE et DELETE exécutés sur la table. mettre un PCTFREE plus  élevé pour éviter les phénomènes de migration (10 à 50 en fonction du risque que les mises à jour fassent grossir  plus ou moins les lignes).  l’estimation sans calcul. ce qui est déconseillé).  En version 9. les tables sont.  Les  informations  sur  les  tables  surveillées  peuvent  être  consultées  dans  la  vue  DBA_TAB_ MODIFICATIONS  (et  consœ urs).7- . Estimation de PCTFREE  Avec calcul La valeur optimale de PCTFREE peut être estimée par la formule suivante :  PCTFREE = 100 x (1 -Ti / Tf)  Ti = taille moyenne initiale de la ligne en octets (au moment de l’insertion) ;  Tf = taille moyenne finale de la ligne en octets (après les mises à jour). présentée ci­après.Algeria Educ .  sous surveillance (sauf si le paramètre STATISTICS_LEVEL est égal à BASIC.  Sans calcul Pour  une  table  "statique"  ou  faisant  uniquement  l’objet  d’insertions. peut être utilisée.  UPDATES  nombre approximatif de lignes modifiées.com © ENI Editions .All rights reserved .  Ce mécanisme de surveillance peut aussi être utilisé pour analyser l’activité sur les tables et identifier les tables les  plus  sollicitées  en  mise  à  jour ; ce  sont  les  tables  sur  lesquelles  vous  devez  plus  particulièrement  porter  votre  attention en ce qui concerne le stockage (réglage de PCTFREE notamment). mettre un  PCTFREE faible pour obtenir un bon  remplissage des blocs (0 à 5).  TABLE_NAME  nom de la table. Dans ce mode.  Les principales colonnes de la vue sont les suivantes :  TABLE_OWNER  propriétaire de la table.

Algeria Educ .  La HWM marque pour Oracle l’emplacement du dernier bloc où il est susceptible de trouver une ligne ; au­delà de la  HWM.  Les  statistiques de surveillance sont donc collectées et cumulées depuis la dernière génération de statistiques sur la table  (voir la colonne LAST_ANALYZED de la vue DBA_TABLES).  La HWM augmente lors des insertions mais ne diminue pas lors des suppressions :    La HWM permet donc de connaître le nombre total maximum de blocs utilisés par la table dans toute son existence. générées par le package DBMS_STATS ou calculer des informations à l’aide du package DBMS_SPACE.  7.  . la procédure FLUSH_DATABASE_MONITORING_INFO du packageDBMS_ STATS peut être utilisée pour forcer la mise  à jour immédiate du dictionnaire.  pour  les  besoins  de  l’optimiseur.  Pour obtenir des informations plus détaillées sur le stockage d’une table.  Le  délai  annoncé  est  entre  quelques  secondes  et  plusieurs  heures.  Au besoin. Superviser l’espace occupé par une table  a.TRUNCATED  indication pour savoir si la table a été tronquée (YES ou NO).  b.All rights reserved . Vue d’ensemble  Les vues DBA_SEGMENTS  et DBA_EXTENTS présentées au chapitre Gestion des tablespaces et des fichiers de données  permettent de voir l’espace global alloué à la table. il ne  parcourt pas tous les blocs alloués à la table mais uniquement ceux situés sous la HWM. Le package DBMS_SPACE  Le package  DBMS_SPACE  propose  plusieurs  procédures  qui  peuvent  être  utilisées  pour  superviser  le  stockage  d’une  table (plus généralement d’un segment) :  FREE_BLOCKS  informations sur les blocs libres dans un segment dont l’espace est géré manuellement.  Ce dernier propose plusieurs procédures qui permettent notamment de calculer des informations sur l’espace libre et  l’espace utilisé à l’intérieur d’un segment. Lorsque Oracle réalise un parcours complet de la table. ni leur remplissage.  Pour  une  bonne  analyse. il n’y a pas de ligne. vous pouvez utiliser le package DBMS_SPACE.  mais pas le nombre de blocs actuellement utilisés. mais elles ne donnent pas d’informations sur le nombre de blocs  réellement utilisés. vous pouvez utiliser les statistiques de la  table.  Par  ailleurs.  à  l’aide  du  package  DBMS_STATS ; certaines  de  ces  statistiques  donnent  des  informations  relatives  au  stockage.  SPACE_USAGE  informations sur l’occupation des blocs dans un segment dont l’espace est géré automatiquement.  La  colonne  TIMESTAMP  de  la  vue  DBA_TAB_MODIFICATIONS  permet de connaître la fraîcheur de l’information.  Pour obtenir des informations plus détaillées sur le stockage d’une table.  Oracle  calcule  périodiquement  des  statistiques  sur  les  tables  (et  les  index).  Pour chaque table (et plus généralement chaque segment). Oracle connaît le dernier bloc utilisé par la table : c’est la  high water mark (HWM ­ "ligne de plus hautes eaux").  il  est  important  de  réaliser  des  relevés  périodiques  afin  de  voir  l’évolution  de  l’activité  et  identifier d’éventuelles périodes de pointes.  Les  statistiques  sur  l’utilisation  d’une  table  ne  sont  pas  déversées  en  temps  réel  dans  le  dictionnaire.  Il  faut  bien  noter  que  les  statistiques  de  surveillance  sont  supprimées  lors  de  la  génération  des  statistiques. une seule chose est sûre.8- © ENI Editions .

 nous présenterons leur utilisation à travers l’interface graphique  du Database Control. 24 unformatted_blocks => v_unformatted_blocks. 5 v_fs1_bytes NUMBER. Non formatés = 0 Procédure PL/SQL terminée avec succès.  plus  complexes  à  utiliser. 75 à 100% d’’espace libre = ’||v_fs4_blocks). 25 à 50% d’espace libre = 40 . 10 v_fs4_blocks NUMBER. 42 p(’.  Pour plus d’informations sur le package DBMS_SPACE.com © ENI Editions . Non formatés = ’||v_unformatted_blocks). 34 full_blocks => v_full_blocks. 25 à 50% d’’espace libre = ’||v_fs2_blocks). 18 BEGIN 19 dbms_space. 4 v_fs1_blocks NUMBER.  ne  sont pas présentées dans cet ouvrage. 39 p(’. 41 p(’. 7 v_fs2_bytes NUMBER. 11 v_fs4_bytes NUMBER. 12 v_full_blocks NUMBER. 37 p(’Blocs :’). Par contre.  Le package  DBMS_SPACE  possède  d’autres procédures ou fonctions qui permettent d’estimer la taille d’une  table  ou  d’un  index  ou  la  tendance  de  croissance  d’un  segment.  Ces  procédures  et  fonctions. 30 fs3_blocks => v_fs3_blocks.  Exemple :  SQL> SET SERVEROUTPUT ON SQL> DECLARE 2 v_unformatted_blocks NUMBER. 31 fs3_bytes => v_fs3_bytes. 13 v_full_bytes NUMBER.  reportez­vous à la documentation PL/SQL Packages and Types  Reference. 50 à 75% d’espace libre = 4 . 0 à 25% d’’espace libre = ’||v_fs1_blocks).space_usage 20 ( 21 segment_owner => ’DIANE’.put_line(v_texte). 45 / Blocs : . 50 à 75% d’’espace libre = ’||v_fs3_blocks). 75 à 100% d’espace libre = 33 . 43 p(’.UNUSED_SPACE  informations sur les blocs inutilisés d’un segment. 40 p(’. 23 segment_type => ’TABLE’. 25 unformatted_bytes => v_unformatted_bytes. 29 fs2_bytes => v_fs2_bytes. 33 fs4_bytes => v_fs4_bytes.9- . 9 v_fs3_bytes NUMBER. 3 v_unformatted_bytes NUMBER. 32 fs4_blocks => v_fs4_blocks. Pleins = ’||v_full_blocks).Algeria Educ . 6 v_fs2_blocks NUMBER. 8 v_fs3_blocks NUMBER. 27 fs1_bytes => v_fs1_bytes. 22 segment_name => ’ADHERENT’. 26 fs1_blocks => v_fs1_blocks. 44 END. 17 END.All rights reserved . 28 fs2_blocks => v_fs2_blocks. 14 PROCEDURE p(v_texte VARCHAR2) IS 15 BEGIN 16 dbms_output. openmirrors. 38 p(’. 0 à 25% d’espace libre = 0 . Pleins = 128 . 35 full_bytes => v_full_bytes 36 ).

10 © ENI Editions . 18 total_blocks => v_total_blocks. 23 last_used_extent_block_id => v_last_extent_block. 17 segment_type => ’TABLE’. 12 END. Total = ’||v_total_blocks). Sur les blocs utilisés. 4 qui ont entre 50 et 75% d’espace libres et 33 qui ont entre 75 et 100%  d’espace  libre. Les statistiques sur une table  La procédure GATHER_TABLE_STATS du package DBMS_STATS permet de calculer des statistiques sur une table. Inutilisés = 7 . 13 BEGIN 14 dbms_space.Algeria Educ . BLOCKS -----------224 Sur cet exemple.  40 qui ont entre 25 et 50% d’espace libre. 20 unused_blocks => v_unused_blocks. 8 v_last_used_block NUMBER.  Exemple :  EXECUTE dbms_stats. SQL> SELECT blocks FROM dba_segments 2 WHERE segment_name=’ADHERENT’ AND owner=’DIANE’. 3 v_total_bytes NUMBER.SQL> DECLARE 2 v_total_blocks NUMBER. 26 p(’Blocs :’). 7 v_last_extent_block NUMBER. 28 p(’. Utilisés = ’||(v_total_blocks-v_unused_blocks)). 31 / Blocs : . 19 total_bytes => v_total_bytes. 5 v_unused_bytes NUMBER.  c. 30 END. 22 last_used_extent_file_id => v_last_extent_file.gather_table_stats(’DIANE’. Utilisés = 217 Procédure PL/SQL terminée avec succès.put_line(v_texte). 29 p(’. Sur ces 224 blocs.  Cette procédure a deux paramètres obligatoires en entrée :  ownname  Nom du schéma propriétaire de la table. nous voyons que la table ADHERENT a 224 blocs alloués. il y en a 128 qui sont pleins. 4 v_unused_blocks NUMBER. 21 unused_bytes => v_unused_bytes. 27 p(’. Inutilisés = ’||v_unused_blocks). 16 segment_name => ’ADHERENT’. 9 PROCEDURE p(v_texte VARCHAR2) IS 10 BEGIN 11 dbms_output.  soit  un  total  de  205  blocs.unused_space ( 15 segment_owner => ’DIANE’.  tabname  Nom de la table. Total = 224 .’ADHERENT’) La  procédure  GATHER_TABLE_STATS  a  beaucoup  d’autres  paramètres  dont  la  valeur  par  défaut  est  généralement  . 217 sont utilisés (c’est la  HWM) et 7 sont inutilisés (jamais aucun ligne insérée à l’intérieur).  Les  12  blocs  manquants  pour  arriver  à  217  sont  des  blocs  de  bitmap  utilisés pour la gestion automatique (ils ne sont pas comptabilisés par la procédure SPACE_USAGE). 6 v_last_extent_file NUMBER.All rights reserved . 24 last_used_block => v_last_used_block 25 ).

---------.----------.avg_row_len.  la  taille  de  l’échantillon  peut  être spécifiée grâce au paramètre estimate_percent).  Le  calcul  de  statistiques  est  effectué  sur  un  échantillon  des  données.  Exemple :  SQL> EXEC dbms_stats.  SAMPLE_SIZE  Nombre de lignes dans l’échantillon utilisé pour le calcul des statistiques.’ADHERENT’) Procédure PL/SQL terminée avec succès. il n’est donc pas nécessaire d’utiliser cette procédure. Problèmes possibles sur le stockage  Les problèmes possibles sur le stockage d’une table sont les suivants :  q espace inutilisé alloué à une table ;  faible taux d’occupation moyen des blocs. NUM_ROWS BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED ---------.  par  contre.  ou  après une mise à jour massive des données d’une table (insertion.’DD/MM HH24:MI’) last_analyzed 3 FROM dba_tables WHERE table_name=’ADHERENT’ and owner=’DIANE’.  les  statistiques  peuvent  aussi  être  calculées  à  l’aide  des  clauses  COMPUTE  ou ESTIMATE  de  l’ordre  SQL  ANALYZE TABLE. SQL> SELECT num_rows.------------11488 217 91 11488 20/07 15:47 Nous retrouvons les 217 blocs utilisés.11 - openmirrors.  s’avérer  utile  si  vous  venez  de  créer  et  de  charger  une  table. y compris les informations d’en­tête.  Cette  possibilité  est  maintenue  pour  des  raisons  de  compatibilité  ascendante.  même  si  les  statistiques  ne  sont  pas  calculées  sur  la  totalité  de  la  table.com .Algeria Educ . calculés à l’aide du package DBMS_SPACE.sample_size.adaptée.  nous  verrons  que  les  statistiques  sont  calculées  automatiquement  par Oracle à intervalles réguliers.gather_table_stats(’DIANE’. Générer  manuellement  des  statistiques  peut.  Historiquement.----------. modification. suppression).  LAST_ANALYZED  Date/heure de la dernière analyse de la table.  BLOCKS  Nombre de blocs sous la High Water Mark (HWM). il faut utiliser le package DBMS_STATS (depuis Oracle8i).blocks.  q Espace inutilisé alloué à une table © ENI Editions .  La  taille  de  l’échantillon  est  choisie  automatiquement  par  Oracle  en  fonction  des  caractéristiques  de  la  table  (au  besoin. En temps normal.  d.  Les statistiques d’une table peuvent être consultées dans la vueDBA_TABLES (et "consœ urs") :  NUM_ROWS  Nombre de lignes dans la table. 2 TO_CHAR(last_analyzed.  AVG_ROW_LEN  Longueur moyenne d’une ligne.  La  valeur  BLOCKS  est  toujours  exacte.  Pour calculer les statistiques sur les tables et les index.All rights reserved .  Au point Les statistiques et l’optimiseur  Oracle.

adherent LIST CHAINED ROWS.  Si la proportion de blocs moyennement remplis ou faiblement remplis est importante.  Après  exécution  de  l’ordre  SQL  ANALYZE.  Ce deuxième problème a des incidences sur les performances et sur l’utilisation de l’espace dans le Database Buffer  Cache.owner 5 AND t.owner=’DIANE’. Pleins .table_name 4 AND s.All rights reserved . 25 à 50% d’espace libre .  et  si  peu  de  nouvelles  lignes  vont  être  insérées.  donc moins de blocs à lire et moins de blocs dans le Database Buffer Cache.blocks "alloués" 2 FROM dba_tables t.  Le nombre de blocs occupés est donné par la valeur de la colonne BLOCKS de la vue DBA_TABLES (ou par un calcul à  l’aide  du  package  DBMS_SPACE)  et  le  nombre  de  blocs  alloués  par  la  valeur  de  la  colonne  BLOCKS  de  la  vue  DBA_SEGMENTS.Il  y  a  de  l’espace  inutilisé  alloué  à  la  table  si  le  nombre  de  blocs  occupés  (sous  la  HWM)  est  faible  par  rapport  au  nombre de blocs alloués. et si la table ne va plus grossir (ou peu). si les lignes actuelles ne vont  pas  grossir. Non formatés = = = = = = 71 0 38 31 65 0 Dans  cet  exemple.  cette  table  contient les ROWID des lignes migrées ou chaînées.  Exemple :  SQL> @?\rdbms\admin\utlchain.  Exemple :  Blocs : .  nous  pouvons  considérer  qu’il  y  a  un  problème  de  remplissage des blocs.table_name=’ADHERENT’ AND t. occupés alloués ---------. SQL> ANALYZE TABLE diane. Table analysée.12 - © ENI Editions . 0 à 25% d’espace libre . Détecter les problèmes de migration ou de chaînage  La clause LIST CHAINED ROWS de l’ordre SQL ANALYZE TABLE permet d’identifier les lignes migrées ou chaînées. Pour un nombre de lignes donné.sql.s.segment_name=t. la table CHAINED_ROWS doit être créée à l’aide  du  scriptutlchain.---------217 224 Ce premier problème n’a pas d’incidence sur les performances (les blocs au­delà de la HWM ne sont jamais lus) ; il  conduit juste à un gaspillage d’espace disque.sql Table créée. qui se trouve dans le répertoire % ORACLE_HOME%\rdbms\admin  ou  $ORACLE_ HOME/rdbms/admin. dba_segments s 3 WHERE s.Algeria Educ .  Syntaxe  ANALYZE TABLE nom_table LIST CHAINED ROWS. 50 à 75% d’espace libre .owner=t.  Ce mauvais remplissage des blocs peut être lié à une valeur inadaptée de PCTFREE ou à une suppression importante  de données. 75 à 100% d’espace libre .  Exemple :  SQL> SELECT t. Au préalable.blocks "occupés". un taux de remplissage élevé nécessite moins de blocs pour le stockage.  38  blocs  moyennement  remplis  et  96  faiblement  remplis. .  8.  Faible taux d’occupation moyen des blocs Pour les tables dont l’espace est géré automatiquement. le taux d’occupation moyen des blocs peut être analysé à  l’aide du résultat donné par la procédure SPACE_USAGE du package DBMS_SPACE.  nous  voyons  que  la  table  a  71  blocs  pleins.

  il  s’agit  sûrement d’un problème de migration.  S’il  y  a  90  %  de  lignes  migrées  ou  chaînées  mais  que  ces  lignes  ne  sont  jamais  interrogées. l’analyse stocke le ROWID des lignes qui ont un problème de chaînage ou de migration ; à  l’aide  d’une  sous­requête. Le pourcentage en  soi  n’est  pas  suffisant ; cela  dépend  aussi  de  l’activité  qui  existe  sur  les  lignes  en  question.  il  s’agit  d’un  problème  de  chaînage..  Pour savoir s’il s’agit d’un problème de chaînage ou de migration. Réorganiser le stockage d’une table  a.  La  statistique AVG_ROW_LEN  dans DBA_TABLES  donne  une  indication  a  priori ; si  la  longueur  moyenne  des  lignes  est  assez  largement  inférieure  à  la  taille  de  bloc.  s’il  n’y  a  que  1  %  de  lignes  migrées  ou  chaînées  mais  que  ces  lignes  soient  utilisées  dans  toutes  les  requêtes.13 - .adherent 2 WHERE ROWID = ’AAACmIAAKAAAA3sAAf’.Algeria Educ .  ANALYZE_TIMESTAMP  Date/heure de l’analyse.  il  s’agit  d’un  problème  de  migration  (la  ligne  pourrait  tenir  dans  un  bloc) ; si  la  ligne  est  plus  longue  que  la  taille  du  bloc.  9.  il  est  possible  de  lister  les  lignes  proprement  dites. il convient dont de supprimer de CHAINED_ROWS  l’ancien résultat ou d’utiliser la colonne ANALYZE_TIMESTAMP pour extraire le résultat. La table CHAINED_ROWS contient notamment les colonnes suivantes :  OWNER_NAME  Nom du schéma propriétaire de la table analysée.  Déterminer à partir de quel pourcentage de lignes chaînées ou migrées il faut agir n’est pas simple. il risque d’y avoir un problème de performance.  HEAD_ROWID  ROWID de la ligne qui a un problème de migration ou de chaîne.  Dans la table CHAINED_ROWS.All rights reserved . HEAD_ROWID -----------------AAACmIAAKAAAA3sAAf SQL> SELECT * FROM diane.com © ENI Editions .  il  n’y  a  pas  de  problème  de  performance ; à  l’inverse. .. Si la ligne est plus courte  que  la  taille  du  bloc. COUNT(HEAD_ROWID) ----------------16 SQL> SELECT head_rowid FROM chained_rows 2 WHERE table_name=’ADHERENT’ AND owner_name=’DIANE’ 3 AND ROWNUM = 1. il faut interroger la ligne.  Les  résultats  s’accumulent  dans  la  table ; lors d’une nouvelle analyse d’une table préalablement analysée. Vue d’ensemble  Les besoins de réorganisation d’une table sont variés :  q libérer de l’espace libre au­dessus de la HWM ;  améliorer le taux de remplissage des blocs ;  corriger un problème de migration ;  q q openmirrors.  TABLE_NAME  Nom de la table analysée.SQL> SELECT COUNT(head_rowid) FROM chained_rows 2 WHERE table_name=’ADHERENT’ AND owner_name=’DIANE’.

  Plusieurs techniques sont à notre disposition pour réorganiser le stockage d’une table :  q ordre SQL ALTER TABLE . DEALLOCATE UNUSED ;  recréer la table / des lignes de la table ;  export/import ;  ordre SQL ALTER TABLE .  Historiquement.Algeria Educ .  Améliorer le taux de remplissage des blocs permet aussi éventuellement de libérer de l’espace inutilisé (l’espace libre  des blocs).  Pour le reste. DEALLOCATE UNUSED permet de libérer l’espace d’une table situé au­dessus de la HWM.All rights reserved . ALTER TABLE adherent DEALLOCATE UNUSED KEEP 1M. DEALLOCATE UNUSED. Exemple :  ALTER TABLE adherent DEALLOCATE UNUSED. etc.  .. MOVE. SHRINK SPACE ;  ordre SQL ALTER TABLE ..  réduction  du  nombre  d’extensions..  q q q q Le tableau suivant résume les techniques envisageables (√) et indique lesquelles sont les mieux adaptées (☺) à tel  ou tel besoin :  DEALLOCATE  Recréer  Export/  Import  √  SHRINK  MOVE  Libérer de l’espace au­ dessus de la HWM  Améliorer le taux de  remplissage des blocs  Corriger un problème  de migration  Réorganisation plus  globale  ☺  √  √  √  √  √  ☺  ☺  ☺  √  ☺  √  √  ☺  À l’exception de l’ordre SQL ALTER TABLE .. MOVE (depuis la 8i) et ALTER TABLE ..  Libérer de l’espace situé au­dessus de la HWM permet de récupérer de l’espace alloué à la table mais jamais utilisé  (et estimé jamais utilisable). situé cette fois au­dessous de la HWM.  certaines  techniques  sont  mieux  adaptées  que  d’autres à tel ou tel besoin. L’ordre SQL ALTER TABLE ..q réorganiser  plus  globalement  le  stockage  de  la  table : changement  de  tablespace.14 - © ENI Editions .. ALTER TABLE adherent DEALLOCATE UNUSED KEEP 0... SHRINK SPACE (depuis la 10)  sont a priori les bons outils pour "reconstruire" une table. l’export/import est la technique de base pour les réorganisations un peu massives ; c’est d’ailleurs  toujours la bonne technique pour une réorganisation complète de la base.. les techniques citées peuvent a priori être utilisés  indifféremment  pour  régler  les  différents  problèmes ; néanmoins. les ordres SQL ALTER TABLE ...  Syntaxe  ALTER TABLE nom_table DEALLOCATE UNUSED [ KEEP valeur [K|M] ] . L’option KEEP indique l’espace à conserver au­dessus de la HWM. notamment en cas de changement de la  taille du bloc.. DEALLOCATE UNUSED  L’ordre SQL ALTER TABLE ..  b... changement de PCTFREE.

  Exemple :  CREATE TABLE temp AS SELECT * FROM adherent WHERE . les  contraintes  d’intégrités  sont  vérifiées  et  les  triggers  sont  déclenchés.  Exemple :  -.  améliorer  le  taux  de  remplissage  des  blocs.Algeria Educ . Pour ces différentes variantes.com . elle  permet  d’améliorer  le  taux  de  remplissage  des  blocs  (de  libérer  de  l’espace  sous  la  HWM)  et  de  résoudre  un  problème de migration.  Cet  ordre  ne  peut  pas  être  utilisé  pour  libérer  de  l’espace  au­dessous  de  la  HWM  (espace  potentiel  libre  suite à des suppressions de lignes.  Une autre variante. les outils d’export/import peuvent être utilisés pour sauvegarder les données puis les  © ENI Editions .  Cette  méthode  présente  un  inconvénient  majeur : les  objets  dépendants  sont  supprimés  (triggers.  lorsque  la  table  est  stockée  dans  un  tablespace  géré  localement.  il  faut  penser  à  recréer  tous  les  objets  dépendants  et  remettre  les  droits...  Par  contre. Recréer la table ou des lignes de la table  Supprimer la table puis la récréer permet évidemment d’en réorganiser le stockage.  éventuellement ajustée dans le dictionnaire de données. il convient de désactiver les contraintes et/ou les triggers qui posent des difficultés. -. La table n’étant pas supprimée.. Si la  table est stockée dans un tablespace géré localement.  il  n’est  pas  possible  de  tronquer  une  table  qui  possède  une  contrainte  de  clé  primaire  référencée  par  ailleurs ; il faut au préalable désactiver les contraintes de clé étrangère concernées.  le  traitement peut être long sur une table volumineuse. avec une gestion automatique des extensions.recréer les objets dépendants La  table  étant  recréée  avec  de  bonnes  clauses  de  stockage.  Exemple :  CREATE TABLE temp AS SELECT * FROM adherent.  De  plus. lors de l’insertion.. DROP TABLE adherent. vues).  privilèges...  avec  une  gestion  uniforme  des  extensions. utilisable pour corriger un problème de migration sur un petit nombre de lignes. Il faut donc bien penser à tout recréer avec la table.. PCTFREE . la taille initiale de la table est préservée : l’ordre ne libérera pas d’espace si la HWM est inférieure  à la taille initiale de la table (valeur de la colonne INITIAL_EXTENT de la vue DBA_SEGMENTS).  Avec la clause KEEP. AS SELECT).  ce  qui  peut  aussi  poser  des  problèmes : là  encore.Sans clause KEEP. Oracle ne libérera que des extensions entières ; une extension ne peut pas être "coupée" en deux. par exemple). RENAME temp TO adherent. les objets dépendants sont préservés.. Cette variante offre moins de possibilités pour la réorganisation puisque la table n’est pas recréée ; néanmoins. De plus..  Par  contre.  Au préalable.  contraintes.15 - openmirrors.  L’espace libéré est rendu disponible pour d’autres segments (vue DBA_FREE_SPACE). cette méthode peut poser des difficultés avec les contraintes de clé étrangère et  les triggers. AS SELECT * FROM adherent.. INSERT INTO adherent SELECT * FROM temp. INSERT INTO adherent SELECT * FROM temp.  résoudre  un  problème  de  migration. consiste à ne  supprimer et recréer que les lignes fautives.. il n’y a pas de difficulté avec les objets dépendants. l’espace spécifié est conservé (éventuellement aucun avec KEEP 0) et la taille initiale de la table. DELETE FROM TABLE adherent WHERE . Par contre. TRUNCATE TABLE adherent. STORAGE .All rights reserved .  Une  première  variante  possible  consiste  à  ne  pas  supprimer  la  table  mais  à  la  tronquer  (ordre  SQL  TRUNCATE TABLE) ; dans ce cas. là encore.. La table n’étant pas supprimée.créer une table de travail avec les bonnes clauses de stockage CREATE TABLE temp TABLESPACE ..  c.. index) ou invalidés (procédures stockées.  cette  variante  peut  être  utilisée  pour  réorganiser  complètement  le  stockage  de  la  table. Oracle peut  "couper" une extension en tenant compte des règles internes qu’il applique sur la taille des extensions. il n’y a pas de problème avec les objets  dépendants. il faudra sauvegarder les données dans une table de travail (ordre SQL CREATE TABLE .  Par  ailleurs.

. 50 à 75% d’espace libre = . . 0 à 25% d’espace libre = 0 . 50 à 75% d’espace libre = 214 . Par  défaut.16 - © ENI Editions .  aucune  de  ces  différentes  variantes  n’est  vraiment  simple  à  mettre  en  œ uvre. Pleins = 0 .  Dans  la  pratique. SQL> COMMIT. Total = 256 . SHRINK SPACE  L’ordre SQL ALTER TABLE . ajuste la HWM et libère l’espace ainsi récupéré. Par  défaut. Pleins = .  mais  sans  ajuster  la HWM  ni  libérer  d’espace.  De  plus.2) = 0. Total = 256 .réinsérer.. 7655 ligne(s) supprimée(s).  d. Inutilisés = 28 .  Exemple  SQL> -. 0 à 25% d’espace libre = ..situation de départ SQL> @dbms_space TEST Blocs : .  avec  les  deux premières variantes. L’ordre SQL ALTER TABLE .  Lors  du  déplacement  des  lignes  et  de  la  modification du ROWID.  un  tel  déplacement  n’est  pas  autorisé. SHRINK SPACE permet de compacter les lignes d’une table.  Pour  autoriser  le  déplacement  des  lignes  de  la  table. SQL> -. Inutilisés = 28 . Utilisés = 228 SQL> -..  L’exécution ultérieure d’un autre ordre SQL ALTER TABLE .  L’opération de SHRINK peut être effectuée en ligne et des mises à jour parallèles sont possibles ; un verrou exclusif  est posé sur la table uniquement au moment du compactage du segment proprement dit (déplacement de la HWM et  libération de l’espace récupéré).  Oracle  se  contente  de  compacter  les  lignes..  Le  compactage  du  segment  peut  poser  des  problèmes  si  des  longues  requêtes  de  lecture  sont  en  cours  sur  la  table ; c’est la raison pour laquelle il est possible de dissocier les deux phases du traitement. Validation effectuée. Non formatés = 0 Blocs : . Non formatés = 0 Blocs : .  vous  pouvez  exécuter  l’ordre  SQL  ALTER TABLE nom_table ENABLE ROW MOVEMENT. 25 à 50% d’espace libre = 2 .la table est pleine de trous ! SQL> @dbms_space TEST Blocs : .suppression d’une ligne sur deux SQL> DELETE FROM test WHERE MOD(n..  Syntaxe  ALTER TABLE nom_table SHRINK SPACE [COMPACT] [CASCADE] .  L’option  CASCADE  permet  de  réaliser  la  même  opération  sur  les  segments  dépendants  de  la  table. 75 à 100% d’espace libre = 0 . Utilisés = 228 216 0 0 0 0 SQL> -. Oracle met à jour les index. 25 à 50% d’espace libre = . Avec  l’option  COMPACT. Oracle compacte aussi le segment.tentative de SHRINK SQL> ALTER TABLE test SHRINK SPACE.  notamment  les  index. mais uniquement pour une  table stockée dans un tablespace géré localement avec une gestion automatique de l’espace dans les segments.Algeria Educ .All rights reserved .  Cette opération nécessite un déplacement des lignes et donc une modification du  ROWID des lignes déplacées. 75 à 100% d’espace libre = . SHRINK SPACE permettra de terminer l’opération. la table n’est pas disponible pendant la réorganisation.

 il faudra reconstruire les index (ordre  SQL  ALTER INDEX .  Le principe mis en œ uvre est de recopier physiquement les données des extensions actuellement allouées vers une  ou plusieurs nouvelles extensions allouées ailleurs. Table modifiée.All rights reserved .  les  objets  dépendants sont préservés. 25 à 50% d’espace libre .. 75 à 100% d’espace libre . Les  options  sont  les  mêmes  que  celles  de  l’ordre  SQL  CREATE TABLE. 0 à 25% d’espace libre . Utilisés = 118 = = = = = = 107 0 1 0 0 0 Le script  dbms_space.. MOVE  est  très  intéressant  car  toutes  les  options  de  stockage  peuvent  être  modifiées.  De  plus.17 - openmirrors. SQL> @dbms_space TEST Blocs : .cette fois c’est bon SQL> ALTER TABLE test SHRINK SPACE.  Syntaxe  ALTER TABLE nom_table MOVE [ TABLESPACE nom_tablespace ] [ PCTFREE valeur ] [ clause_stockage ] [ NOCOMPRESS | COMPRESS [ FOR { ALL | DIRECT_LOAD } OPERATIONS ] ] [ LOGGING | NOLOGGING ] .. L’ordre SQL ALTER TABLE . Pleins .Après avoir reconstruit la table.=> erreur SQL> -. Les extensions initiales sont libérées à la fin du traitement : la  table initiale est donc intacte en cas d’échec.. MOVEpermet  de  réorganiser  complètement  le  stockage  physique  d’une  table  sans  la  supprimer.clause_stockage STORAGE ( [ INITIAL valeur [K|M] ] [ NEXT valeur [K|M] ] [ MINEXTENTS valeur ] [ MAXEXTENTS { valeur | UNLIMITED } ] [ PCTINCREASE valeur ] ) Exemple :  ALTER TABLE adherent MOVE PCTFREE 20 STORAGE (INITIAL 10M) .  dont  le  tablespace.com .. .ALTER TABLE test SHRINK SPACE * ERREUR à la ligne 1 : ORA-10636: ROW MOVEMENT is not enabled SQL> -. Non formatés Blocs : .Algeria Educ .sql appelle les procédures  SPACE_USAGE et  UNUSED_SPACE  du  package DBMS_SPACE  pour  afficher  des informations sur l’espace utilisé dans un segment.  les  statistiques  de  la  table  deviennent  invalides  et  de  nouvelles  © ENI Editions .  e..L’ordre  SQL  ALTER TABLE . Inutilisés = 2 .il faut autoriser le déplacement de ligne SQL> ALTER TABLE test ENABLE ROW MOVEMENT. mais il faut un espace disponible au moins égal à la taille initiale de la  table pendant la reconstruction. dont le nom est passé en paramètre.  De  même. Total = 120 . SQL> -. Table modifiée. les ROWID changent mais les index ne sont pas mis à jour en temps réel  par Oracle ; ils sont invalidés (statut UNUSABLE)..  Les lignes étant physiquement déplacées.  Sur cet exemple. 50 à 75% d’espace libre . REBUILD). MOVE  L’ordre  SQL ALTER TABLE . nous voyons que le SHRINK SPACE a bien compacté les lignes dans des blocs et libéré l’espace..

TABLESPACE_NAME BLOCKS EXTENTS -----------------------------.Algeria Educ .------------49907 659 86 49907 20/07 19:20 SQL> SELECT COUNT(head_rowid) FROM chained_rows 2 WHERE table_name=’ADHERENT’ AND owner_name=’DIANE’.sample_size.extents FROM dba_segments 2 WHERE segment_name=’ADHERENT’ AND owner=’DIANE’.extents FROM dba_segments 2 WHERE segment_name=’ADHERENT’ AND owner=’DIANE’.---------DATA 1280 1 SQL> SELECT num_rows.----------. COUNT(HEAD_ROWID) ----------------0 Dans la situation de départ.  C’est  sans  conteste  LA  technique  à  utiliser  depuis  la version  8i  pour  réorganiser  le  stockage  d’une  table  (ou  d’un  tablespace.  q .blocks. NUM_ROWS BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED ---------.sample_size.---------.  que  les  techniques  de  recréation.’DD/MM HH24:MI’) last_analyzed 3 FROM dba_tables WHERE table_name=’ADHERENT’ and owner=’DIANE’. Cette technique de reconstruction est plus simple à mettre en  œ uvre.’DD/MM HH24:MI’) last_analyzed 3 FROM dba_tables WHERE table_name=’ADHERENT’ and owner=’DIANE’. Situation à l’arrivée (après calcul des statistiques et analyse des lignes chaînées ou migrées)  q SQL> SELECT tablespace_name. et donc moins  risquée.  la  table  n’est  pas  disponible  en  mise  à  jour ; par  contre.----------.adherent MOVE 2 TABLESPACE data 3 PCTFREE 20.  Pendant  le  traitement.----------.blocks.---------.18 - © ENI Editions .  Exemple 1  q Situation de départ  SQL> SELECT tablespace_name.---------.---------SYSTEM 768 21 SQL> SELECT num_rows.----------. 2 TO_CHAR(last_analyzed.avg_row_len.  Elle  a  plus  de  10  %  de  lignes  migrées  (les  lignes  sont  petites  donc  il  ne  s’agit  pas  d’un  problème  de  chaînage).---------.blocks. TABLESPACE_NAME BLOCKS EXTENTS -----------------------------.statistiques doivent être collectées. la table ADHERENT présente deux problèmes majeurs :  q Elle est stockée dans le tablespace SYSTEM.------------49907 751 86 49907 20/07 19:20 SQL> SELECT COUNT(head_rowid) FROM chained_rows 2 WHERE table_name=’ADHERENT’ AND owner_name=’DIANE’.  en  réalisant  l’opération  sur  toutes  les  tables  du  tablespace). NUM_ROWS BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED ---------. COUNT(HEAD_ROWID) ----------------5894 Reconstruction  q SQL> ALTER TABLE diane.avg_row_len.All rights reserved .blocks. 2 TO_CHAR(last_analyzed.  elle  est  accessible  en  lecture  (le  segment initial est préservé).

---------. le tablespace DATA est un tablespace géré localement avec une gestion uniforme des extensions (10 Mo.’DD/MM HH24:MI’) last_analyzed 3 FROM dba_tables WHERE table_name=’ADHERENT’ and owner=’DIANE’.Algeria Educ .  soit  1  280  blocs)  et  une  gestion  automatique  de  l’espace  dans  les  segments ; il  peut  être  mieux  adapté  à  la  volumétrie future de la table.blocks.----------.  q q q q Les vues DBA_SEGMENTS et DBA_EXTENTS ont été présentées à la section Trouver des informations sur les tablespaces et  les fichiers de données du chapitre Gestion des tablespaces et des fichiers de données. q Situation à l’arrivée (après calcul des statistiques)  SQL> SELECT num_rows.La table est donc reconstruite :  q dans le tablespace DATA ;  avec un PCTFREE plus élevé.blocks.  q Par ailleurs.All rights reserved .  Les colonnes intéressantes des différentes vues sont présentées ci­après.’DD/MM HH24:MI’) last_analyzed 3 FROM dba_tables WHERE table_name=’ADHERENT’ and owner=’DIANE’.sample_size.----------. NUM_ROWS BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED ---------. Trouver des informations sur les tables  Plusieurs vues du dictionnaire de données permettent d’obtenir des informations sur les tables :  q DBA_TABLES : informations sur les tables ;  DBA_TAB_COLUMNS : informations sur les colonnes des tables ;  DBA_SEGMENTS : informations sur les segments (dont ceux de type table) ;  DBA_EXTENTS : informations sur les extensions allouées aux segments (dont ceux de type table) ;  DBA_TAB_MODIFICATIONS : informations sur les tables surveillées.----------.avg_row_len.avg_row_len. obtenu avec la compression.adherent MOVE 2 COMPRESS. 2 TO_CHAR(last_analyzed. 2 TO_CHAR(last_analyzed.com © ENI Editions .sample_size. parfois spectaculaire.----------.-----------50966 92 86 50966 20/07 19:41 Cet exemple illustre le gain.  Exemple 2  q Situation de départ  SQL> SELECT num_rows.---------.  10.-----------50966 602 86 50966 20/07 19:41 Reconstruction avec compression  q SQL> ALTER TABLE diane. NUM_ROWS BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED ---------.19 - .  DBA_TABLES TABLE_NAME  openmirrors.

  AVG_ROW_LEN  Longueur moyenne d’une ligne en octets.  NUM_ROWS  Nombre de lignes dans la table.Nom de la table.  DBA_TAB_COLUMNS TABLE_NAME  Nom de la table.  SAMPLE_SIZE  Taille de l’échantillon utilisé lors du calcul des statistiques.  OWNER  Propriétaire de la table.  PCT_FREE  Valeur du PCTFREE.All rights reserved .Algeria Educ . en tenant compte des informations de contrôle.  LAST_ANALYZED  Date et heure de la dernière analyse réalisée sur la table.  BLOCKS  Nombre de blocs sous la HWM.  COLUMN_NAME  .  LOGGING  Indique si le mode LOGGING est actif ou non pour la table (YES ou NO).  TEMPORARY  Indique s’il s’agit d’une table temporaire (Y ou N).  TABLESPACE_NAME  Nom du tablespace dans lequel la table est stockée.  ROW_MOVEMENT  Indique si le déplacement de lignes est autorisé (ENABLED ou DISABLED).  OWNER  Propriétaire de la table.20 - © ENI Editions .  COMPRESSION  Indique si la table est compressée (DISABLED ou ENABLED).

  NULLABLE  Indique si la colonne accepte les valeurs NULL (Y ou N).  SAMPLE_SIZE *  Date et heure de la dernière analyse réalisée sur la table. calculées par défaut lorsque les statistiques sont générées sur la table.  DATA_SCALE  Échelle.com © ENI Editions .All rights reserved .  DATA_DEFAULT  Valeur par défaut de la colonne.  DBA_TAB_MODIFICATIONS TABLE_OWNER  Propriétaire de la table.  NUM_DISTINCT *  Nombre de valeurs distinctes dans la colonne.  NUM_NULLS *  Nombre de valeurs NULL dans la colonne.Algeria Educ .  DATA_PRECISION  Précision.  COLUMN_ID  Numéro de la colonne.  * Statistiques sur les colonnes.Nom de la colonne.21 - .  TABLE_NAME  Nom de la table.  DATA_LENGTH  Longueur.  LAST_ANALYZED *  Taille de l’échantillon utilisé lors du calcul des statistiques.  DATA_TYPE  Type de données.  AVG_COL_LEN *  Longueur moyenne de la colonne.  INSERTS  openmirrors.

  .  TRUNCATED  Indique si la table a été tronquée (YES ou NO).  DELETES  Nombre approximatif de lignes supprimées.  TIMESTAMP  Date/heure de la dernière mise à jour de la statistique.Algeria Educ .  UPDATES  Nombre approximatif de lignes modifiées.Nombre approximatif de lignes insérées.22 - © ENI Editions .All rights reserved .

 il est plus rapide de regarder  d’abord dans l’index.  Les index sont automatiquement actualisés et utilisés par Oracle :  q utilisés lors des recherches si une clé d’index est mentionnée dans la clause WHERE d’une requête ;  actualisés à chaque mise à jour (INSERT.  Un index peut être composé (concaténé).  Les  valeurs  NULL  ne  sont  pas  stockées  dans  les  index  B­tree  et  ne  sont  donc  pas  prises  en  compte  vis­à­vis  de  l’unicité : deux lignes de la table peuvent avoir la valeur NULL dans la colonne concernée.com © ENI Editions .  Les  index  non  uniques. la clé d’index contient plusieurs colonnes de la table ; elles ne  sont pas toujours adjacentes dans la table.  doivent être créés explicitement. ce dernier donnant les numéros des pages qui contiennent le mot.  Non unique : une valeur de la clé d’index peut être présente plusieurs fois dans la table. ni forcément placées dans le même ordre que dans la table.  La maintenance des index dégrade les performances des mises à jour.  q Oracle préconise de ne pas créer d’index unique explicitement mais de définir des contraintes d’intégrité (PRIMARY KEY  ou  UNIQUE)  pour  lesquelles  Oracle  crée  automatiquement  des  index  uniques. DELETE).Gestion des index B­tree  1. Un index est physiquement  et logiquement indépendant de la table.  par  contre.1- .All rights reserved . UPDATE.Algeria Educ . Un index nécessite son propre espace de stockage.  Un index peut être unique ou non unique :  q Unique: une valeur de la clé d’index n’est présente qu’une fois dans la table. Structure d’un index B­tree  Structure générale openmirrors.  q La  présence  ou  l’absence d’un  index  est  complètement  transparente  pour  l’application ; c’est  Oracle  qui  utilise  (ou  non) les index automatiquement.  2. Vue d’ensemble  Un index est une structure définie sur une ou plusieurs colonnes d’une table ; la (les) colonne(s) constitue(nt) la clé  de l’index. Il peut être créé/supprimé sans affecter la table de base (sauf impact sur les  performances lorsque l’index est supprimé).  La  notion  d’index est analogue à celle de l’index d’un livre : pour rechercher un mot dans un livre. Dans ce cas.  L’index  permet  un  accès  rapide  aux  lignes  de  la  table  lors  d’une  recherche  basée  sur  la  clé  de  l’index.

 UDATE  et DELETE) qui utilisent la clé de l’index dans la clause  WHERE.  Lorsque  l’index  est  utilisé  pour  rechercher  une  valeur  de  clé.  Pourquoi un index B­tree est­il performant ?  Prenons l’exemple d’un index sur une date :  .  un  bloc  d’index comprend les données proprement dites et des informations de contrôle (en­ tête de bloc.  ou pour la suite de la vie de l’index.  Les blocs branches (branch blocks) contiennent des données qui pointent vers des blocs de niveau inférieur.  Il n’y a pas de PCTUSED pour les index. il existe un seul ROWID par valeur de clé ; pour un index non unique.  à  la  création  de  l’index  uniquement.  Le  paramètre PCTFREE est donc important lors de la création d’un index sur une colonne non vide. Les blocs  branches  permettent  d’assurer  un  aiguillage  d’un  bloc  racine  vers  les  blocs  feuilles.  L’arbre  est  maintenu  équilibré  par  Oracle. Pour cela.  En conséquence. Avantages et inconvénients des index B­tree  Avantages L’index améliore la performance des requêtes (SELECT.  "B"  signifie  balanced  (balancé). Oracle va trouver le(s) ROWID(s) de la ou les lignes  qui contiennent la valeur de la clé et pouvoir ainsi les lire directement dans la table.  Les données sont stockées dans des blocs Oracle. Pour un index unique. etc.2- © ENI Editions .  Les blocs feuilles (leaf blocks) contiennent les différentes valeurs de la clé d’index avec les ROWID des lignes de la table  correspondante.Algeria Educ . les données sont triées sur la clé puis sur le ROWID ; la valeur de la clé  est répétée à chaque fois.  3.All rights reserved .  La  recherche  de  n’importe  quelle  valeur  de  clé  prend  toujours à peu près le même temps.  c’est­à­dire  qu’Oracle  s’arrange pour maintenir son arbre équilibré au fur et à mesure des mises à jour de l’index. Les blocs feuilles pointent vers les lignes de la table. plusieurs  ROWID sont possibles pour chaque valeur de clé.  le  bloc  racine  est  lu.  Dans les blocs feuilles d’un index non unique.  Structure d’un bloc À l’image  de  la  table.  Les valeurs de clé NULL ne sont pas présentes dans l’index.  puis  le  bloc  feuille  de  niveau  inférieur  correspondant  à  la  branche  qui  contient  la  valeur  de  clé  est  lu  à  son  tour.  Le  remplissage  du  bloc.  et  ainsi  de  suite  jusqu’au  bloc  feuille qui contient la valeur de clé ; associé à cette valeur de clé.  en  éliminant  des  branches  à  chaque niveau.  Les blocs feuilles sont doublement chaînés pour faciliter le parcours de l’index.). en­tête de ligne. Dans les autres cas. le paramètre n’est pas utilisé. toutes les valeurs de la clé dans les blocs feuilles sont situées à la même profondeur de l’arbre et  donc  accessibles  en  parcourant  le  même  nombre  de  blocs.  Dans  "B­tree".  peut  être  contrôlé  par  le  paramètrePCTFREE. Oracle peut  couper des blocs en cas de besoin (notion de split).

 que les valeurs de la colonne soient relativement uniques (beaucoup de  valeurs distinctes). cette dégradation est sensible dès  l’existence  du  premier  index.All rights reserved . si les colonnes utilisées dans les différentes clauses de la requête sont toutes présentes dans l’index.  3  entrées/sorties  sont  suffisantes  dans  l’index  plus  une  entrée/sortie dans la table afin de lire chaque ligne. cela ne devient sensible  que si la table comprend un grand nombre d’index ; pour une mise à jour massive.  l’espace  disponible  dans  le  bloc  est  égal  à  8  192  octets  ­ taille de l’en­tête (entre 100 et 200 octets.  Ces  deux  inconvénients  sont  deux  bonnes  raisons  pour  ne  pas  indexer  toutes  les  colonnes d’une table.  comme  critère de sélection ou de jointure.  Avec  une  taille  de  bloc  (DB_BLOCK_SIZE)  de  8  Ko.Le second inconvénient d’un  index est qu’il dégrade les performances des mises à jour. Directives pour la création des index B­tree  a.Algeria Educ . il faut analyser les requêtes SELECT.  Prenons  l’exemple  de  la  table  ADHERENT  comprenant  100  000  personnes  avec  une  répartition  homogène  homme/femme.  Il est inutile d’indexer les petites tables.  q q q q De plus.001 %  20 000 / 100 000 = 20 %  50 000 / 100 000 = 50 %  Ces exemples montrent que la colonne NUMERO est intrinsèquement sélective mais que certaines requêtes basées  sur cette colonne peuvent ne pas l’être ; par contre.  Un bloc peut donc stocker environ 7 200 / 20 = 360 clés. prenom FROM adherent WHERE nom = ’HEURTEL’.  Pour  retrouver  une  valeur  parmi  les  466  millions. prenons 192 octets pour notre exemple) = 8 000 octets. rempli à  90 % = 7 200 octets.  Pour trouver les bonnes colonnes candidates à l’indexation.  openmirrors.  4. la  requête suivante n’accède pas à la table :  SELECT nom. Il ne faut donc pas indexer  les colonnes ayant peu de valeurs distinctes (la colonne sexe par exemple).  le  nombre  moyen  de  lignes  ramenées  par  une  requête  divisé  par  le  nombre  total de lignes.  La  performance  d’un index dépend de sa sélectivité intrinsèque et de la sélectivité des requêtes qui l’utilisent.PRENOM) de la table ADHERENT. Cela implique donc. il faut s’assurer que les requêtes correspondantes sont sélectives et ramènent moins de 5 à 10 %  des lignes de la table.  et rechercher les colonnes les plus fréquemment utilisées dans les clauses WHERE (critère de sélection et jointure). et que les conditions qui les utilisent soient elles­mêmes sélectives. Inconvénients Le premier inconvénient d’un index est qu’il nécessite un volume de stockage important. Oracle  n’a pas besoin d’accéder à la table. La  sélectivité  peut  être  définie  comme.  Un arbre d’une profondeur de 3 peut donc gérer 360 x 360 x 360 = 466 millions de clés.com © ENI Editions . Considérons les clauses WHERE suivantes :  Clause WHERE  WHERE numero =12345  WHERE numero BETWEEN 1 AND 20000  WHERE sexe = ’F’  Sélectivité  1 / 100 000 = 0. UPDATE et DELETE. Si un index composé existe sur les colonnes (NOM. Pour des mises à jour unitaires.3- . la colonne SEXE n’est pas intrinsèquement sélective.q La longueur d’une ligne de l’index est égale à 8 octets (longueur du type DATE) + 6 octets (longueur du ROWID)  + quelques octets pour les informations de contrôle (arrondi à 6 octets) = 20 octets. Principes généraux  Les  colonnes  candidates  à  l’indexation  sont  les  colonnes  fréquemment  présentes  dans  les  clauses WHERE.  En complément.

  si  les  colonnes  C1  et  C2  d’une  table  sont  fréquemment  utilisées ensembles dans les clauses WHERE et qu’il existe 10 valeurs distinctes pour C1 (sélectivité de 10 %) et 10  valeurs  distinctes  pour  C2  (sélectivité  de  10  %).  Dans  certaines  situations. Oracle  est susceptible de subdiviser l’index  en  sous­index (un pour chaque valeur de la première colonne) et de  parcourir chaque sous­index.  Or. la requête suivante n’utilise pas l’index :  SELECT * FROM adherent WHERE prenom = ’Olivier’.Une  colonne  ayant  peu  de  valeurs  distinctes  est  intrinsèquement  non  sélective.  En  effet.  un  index  est  moins  performant  que  le  parcours  complet ; si  la  taille  de  la  table  est  inférieure  à  2 x DBFMRC  blocs.C2)  est  de  1 %  (dans  l’hypothèse où il n’y a pas de corrélation entre C1 et C2).All rights reserved .  il  faudra  d’abord  identifier  les  colonnes  qui  sont  systématiquement  présentes  ensembles  dans  la  clause  WHERE : ce  sont  de  bonnes  candidates  à  la  création  d’un  index  composé  qui  est  généralement  plus  sélectif  qu’un  index  simple. C’est néanmoins un bon critère de départ. si la première colonne de l’index a très peu de valeurs distinctes (par exemple 2). SELECT * FROM adherent WHERE nom = ’HEURTEL’.  Les  valeurs  NULL  ne  sont  pas  stockées  dans  les  index  B­tree ; donc.  si  la  taille  de  la  table  est  inférieure  à  DBFMRC  blocs. Par contre.  Hormis  les  index  uniques.  Si un index composé existe sur les colonnes (NOM.  Parmi  les  colonnes  candidates  à  l’indexation. Compléments sur les index composés  L’ordre des colonnes est important dans un index composé. si une requête  utilisant  un  index  ramène  plus  de  10  %  des  lignes. Oracle peut lire DBFMRC blocs en une entrée/sortie lors  d’un  parcours  complet  de  table.  Lors  des  tests  sur  les  index. Abuser  de  cette  astuce  et  placer  de  nombreuses  colonnes  dans  la  clé  d’index  peut  rendre  l’index  moins  performant.  indexer  des  tables  comprenant  quelques  dizaines de blocs n’apporte rien.  Parmi  les  colonnes  candidates.  Donc.  il  ne  faut  pas  oublier  de  vérifier  si  les  index  ne  dégradent pas trop les performances des mises à jour.PRENOM) de la table ADHERENT.Algeria Educ .  Indexer les petites tables ne sert à rien car le nombre minimum d’entrées/sorties lors d’un accès par index est de 2  (1  entrée/sortie  au  minimum  pour  l’index  et  1  entrée/sortie  au  minimum  pour  la  table).  Pour  la  requête  suivante.  b. Dans les grandes lignes.  il  faut  donc  identifier  celles  qui  sont  intrinsèquement  sélectives  et  utilisées  dans  des  requêtes  elles­ mêmes  sélectives ; une  colonne  sera  effectivement  une  bonne  candidate  à  l’indexation  si  la  sélectivité  (de  la  colonne et des requêtes qui l’utilisent) est inférieure à environ 5 à 10 %.  la  sélectivité  théorique  du  couple  (C1.4- © ENI Editions .  un  index  est  aussi  performant  (mais  pas  plus)  que  le  parcours  complet.  Oracle  se  révèlera  plus  performant  en  réalisant  un  parcours  complet de la table qu’en passant par l’index.  Dans certains cas.  ajouter  la  colonne  NUMERO_TELEPHONE  dans  l’index  composé  qui  existe  sur  les  colonnes  (NOM.  il  peut  être  intéressant  d’ajouter  dans  la  clé  d’index  des  colonnes  présentes  dans  la  clause SELECT.  Ainsi. SELECT * FROM adherent WHERE prenom = ’Olivier’ AND nom = ’HEURTEL’.  Plus  la  clé  d’index  est  longue. L’ordre des colonnes n’a pas d’importance dans la clause WHERE.  en  général.  Cette règle des 5 à 10 % n’est pas en soi une garantie de performance effective de l’index ; de nombreux autres  facteurs entrent en ligne de compte.  indexer  une  colonne  pour  améliorer  les  recherches  IS NULL  ne  sert  à  rien.  moins  il  y  a  de  clés  par  bloc. les trois requêtes suivantes utilisent  l’index :  SELECT * FROM adherent WHERE nom = ’HEURTEL’ AND prenom = ’Olivier’. qu’il faut valider en réalisant des  tests. pour éviter d’accéder à la table. Un index composé est utilisé si les colonnes de tête de  la clé d’index sont présentes dans la condition.  et  plus  l’index  est  volumineux  et  .PRENOM) permet d’éviter l’accès à la table  SELECT numero_telephone FROM adherent WHERE nom = ’HEURTEL’ AND prenom = ’Olivier’.  grâce  au  paramètreDB_FILE_MULTIBLOCK_READ_COUNT  (DBFMRC ci­après).  il  n’est  jamais  certain  qu’un  index  soit  réellement  performant ; il  faut  donc  le  tester.

 ce qui augmente le nombre d’entrées/sorties pour parcourir l’index. .  C’est  l’optimiseur  Oracle  qui  décidera  d’utiliser  ou  non  un  index. que l’index est réellement utilisé.Algeria Educ .  "se termine par").  nom LIKE ’H%’  Le début de la chaîne est connu.com © ENI Editions .1) =’H’  Et  plus  généralement.clause_stockage STORAGE ( [ INITIAL valeur [K|M] ] [ NEXT valeur [K|M] ] [ MINEXTENTS valeur ] [ MAXEXTENTS { valeur | UNLIMITED } ] [ PCTINCREASE valeur ] ) openmirrors.  en  fonction  des  caractéristiques  de  la  requête. "entre" utilisent l’index. Spécifier le stockage d’un index  a. dans l’ordre SQL CREATE INDEX.  Ce n’est pas parce qu’une requête n’empêche pas l’utilisation d’un index.’DUPOND’)nom < > ’HEURTEL’  Les recherches "différent de" n’utilisent pas l’index.1.  Exemples de clauses WHERE où l’index présent sur la colonne nom n’est pas utilisé :  nom IS NULL  Les valeurs NULL ne sont pas dans l’index.5- .  lorsqu’une  fonction  est  appliquée  à  la  colonne.  ou  que  la  colonne  est  utilisée  dans  une  expression.  5.  nom LIKE ’%TEL’  Les recherches LIKE n’utilisent pas l’index si le début de la chaîne n’est pas connu (recherches du type "contient".  SUBSTR(nom. "supérieur". Index indépendant  Le stockage d’un index peut être spécifié lors de la création de l’index.  nom NOT IN(’DUPONT’. de la table et des index (c’est un vaste sujet). exemples de clauses WHERE où l’index est utilisé :  nom > ’HEURTEL’  Les recherches de type "inférieur". il faut s’assurer que l’écriture des requêtes n’empêche pas l’index d’être utilisé.profond.  Par contre.  c. S’assurer que les requêtes sont bien écrites  Par ailleurs.All rights reserved .  Syntaxe simplifiée  CREATE [UNIQUE] INDEX nom_index ON nom_table(liste_colonnes) [ TABLESPACE nom_tablespace ] [ PCTFREE valeur ] [ clause_stockage ] [ ONLINE ] [ NOCOMPRESS | COMPRESS [n] ] [ LOGGING | NOLOGGING ] .

q nom_index : nom d’un index qui existe déjà. VALIDATE STUCTURE présenté plus loin).  Pour  obtenir  un  résultat  optimal. comme pour une table. Les considérations sont les mêmes que pour une table (cf. Gestion des tables) mais  un  index  est  moins  critique  qu’une  table ; si  un  index  n’est  pas  récupérable. 10 par défaut).Exemple :  CREATE INDEX adherent$nom#prenom ON adherent(nom.  N’oubliez  pas  que  la  clause  STORAGE  est  traitée  différemment  selon  que  le  tablespace  est  géré  par  le  dictionnaire ou localement.  La clause PCTFREE donne la valeur du PCTFREE (entre 0 et 99. Index d’une contrainte de clé primaire ou unique  Le stockage de l’index d’une clé primaire ou unique peut être spécifié lors de la définition de la contrainte grâce à  l’option USING INDEX de la clause CONSTRAINT. .  L’option  n  permet de préciser le nombre de colonnes de la clé à compresser.  La  clause  NOLOGGING  permet  de  ne  pas  journaliser  la  création  de  l’index ; les  mises  à  jour  individuelles  sont.  La  clause  COMPRESS [n]  permet  de  compresser  la  clé  d’index.prenom) TABLESPACE indx PCTFREE 20 STORAGE ( INITIAL 2M ) .spécification_stockage [ TABLESPACE nom_tablespace ] [ PCTFREE valeur ] [ clause_stockage ] [ ONLINE ] [ NOCOMPRESS | COMPRESS [n] ] [ LOGGING | NOLOGGING ] .  Il existe aussi un ordre SQL ALTER INDEX mais. Dans un tablespace géré localement. Compresser la clé des index  composés  peut  permettre  de  réduire  sensiblement  la  taille  de  l’index. Les clauses TABLESPACE et STORAGE ont déjà été présentées au chapitre Gestion des tablespaces et des fichiers de  données. il n’a pas d’effet rétroactif sur ce qui est déjà  alloué ; généralement.6© ENI Editions .  q Exemple :  q Définition des clauses de stockage de l’index  ALTER TABLE adherent ADD CONSTRAINT adherent$pk PRIMARY KEY(numero) USING INDEX TABLESPACE indx PCTFREE 0 STORAGE (INITIAL 2M) .Algeria Educ .prenom. seule l’option INITIAL est utile.  b.  par  contre.USING INDEX> [ spécification_stockage | nom_index | (ordre_création_index) ] . en cas de besoin.  n est égal au nombre de colonnes  moins un pour un index unique et au nombre de colonnes pour un index non unique.  il  faut  compresser sur la portion de tête de la clé comprenant le plus grand nombre de répétitions (cette information peut  être obtenue avec l’ordre SQL ANALYZE INDEX .All rights reserved . q Spécification d’un index déjà existant  ALTER TABLE adherent ADD CONSTRAINT adherent$uk01 UNIQUE (nom..  Syntaxe  CONSTRAINT nom_contrainte { PRIMARY KEY | UNIQUE } (liste_colonnes) USING INDEX<$ICONSTRAINT. Par défaut.  uniquement  dans  le  cas  d’un  index  composé. l’index sera plutôt reconstruit.  Oracle  élimine  les  occurrences  répétées  des  valeurs  des  colonnes  de  la  clé.telephone) USING INDEX adherent$ix01 .  il  est  toujours  possible  de  le  reconstruire.  Pour  compresser  la  clé  d’index. toujours journalisées.  La clause ONLINE permet d’autoriser les mises à jour sur la table pendant la construction de l’index.  ordre_création_index : ordre SQL de création d’index tel que vu précédemment..

  q q q q La vue DBA_CONSTRAINTScontient deux colonnes. Oracle crée un index unique pour  vérifier la contrainte.  Par défaut. lorsqu’une contrainte de clé primaire ou de clé unique est créée ou activée.telephone) TABLESPACE indx .  Depuis Oracle9i.telephone) TABLESPACE indx PCTFREE 25 STORAGE (INITIAL 10M) ) . la clause USING INDEX peut :  q mentionner explicitement le nom d’un index à utiliser pour vérifier la contrainte ;  inclure un ordre SQL CREATE INDEX pour créer explicitement l’index associé à la contrainte. ALTER TABLE adherent ADD CONSTRAINT adherent$pk PRIMARY KEY (nom.q Création complète de l’index  ALTER TABLE adherent ADD CONSTRAINT adherent$uk01 UNIQUE (nom.  Si  l’index  est  non  unique.  mais  doit  posséder  une  clé  égale à ou commençant par la clé de la contrainte.  L’index mentionné ou créé peut être unique ou non unique mais il doit être "compatible" avec la contrainte de clé  primaire ou unique. la clé de l’index doit être égale à la clé de la contrainte (mêmes colonnes.  la  clé  de  l’index  doit  être  égale  à  ou  commencer  par  la  clé  de  la  contrainte. Oracle regarde s’il existe un  index  utilisable  pour  vérifier  la  contrainte. INDEX_OWNER  et INDEX_NAME. Par défaut. généralement plus  "longue" que la clé de la contrainte ;  de créer explicitement un index non unique (voir l’intérêt ci­après). de créer un index avec un nom précis. Si l’index est unique.prenom.  créer  l’index  avant  la  contrainte  et  le  mentionner  dans  l’ordre  de  création  de  la  contrainte  équivaut strictement à créer l’index dans l’ordre de définition de la contrainte.  q Dans les deux cas. l’option  USING INDEX  de  la  clause CONSTRAINT permet de spécifier les caractéristiques de stockage de cet index. lorsqu’une clé primaire ou unique est supprimée :  q L’index associé est supprimé s’il est unique.  Exemple :  CREATE INDEX adherent$ix01 ON adherent(nom.prenom. les autres options de la clause USING INDEX sont interdites.All rights reserved .com © ENI Editions .7- .Algeria Educ .  openmirrors. sur une clé précise. Fonctionnellement.  dans  le  même  ordre). index dont la clé est égale à la clé de la contrainte. Dans ce cas.telephone) USING INDEX ( CREATE INDEX adherent$ix01 ON adherent(nom.prenom.  Utiliser une des deux clauses USING INDEX apparues dans Oracle9i permet :  q d’être plus explicite ;  de désigner un index précis si plusieurs index peuvent être utilisés pour vérifier la contrainte ;  de créer un autre index que celui qui serait utilisé par défaut (avec une autre clé) ;  si aucun index n’existe déjà.  Cet  index  peut  être  unique  ou  non  unique.prenom) USING INDEX adherent$ix01 . Si un tel index n’existe pas. qui permettent de faire le lien  entre une contrainte de clé primaire ou de clé unique et son index associé (vue DBA_INDEXES).

 déjà existant. et laisse en tout état de cause le choix de conserver ou non l’index lors de la suppression  ou de la désactivation de la contrainte. A  priori.  il  est  possible  d’indiquer  explicitement  si  l’index  associé  à  une  contrainte  supprimée  doit  être  conservé ou supprimé. car très souvent.All rights reserved . Recommandations pour le stockage des index  a.Algeria Educ .  Créer systématiquement des index non uniques pour gérer les contraintes de clé primaire et de clé unique  est intéressant.q L’index associé est conservé s’il est non unique. adapté à la volumétrie  estimée à une échéance donnée (pas forcément très lointaine.  Depuis  Oracle9i.  L’origine de l’index (créé par Oracle.  même  lorsque  la  contrainte  est  supprimée. Elle permet aussi d’être plus explicite et de ne pas se  préoccuper du fonctionnement par défaut.  Par  contre.  b.8- © ENI Editions . créé dans l’ordre de définition de la contrainte) n’a pas d’impact.  au moins pour les index les plus importants ;  recommandation numéro trois (moins importante) : allouer un espace initial à l’index.  Si  une  contrainte  de  clé  primaire  ou  de  clé  unique  est  supprimée. le plus simple et le plus pragmatique consiste à procéder comme pour une table :  q estimer le nombre de lignes attendues ;  créer l’index dans les conditions d’exploitation (taille de bloc et PCTFREE notamment) ;  charger la table avec un jeu de données représentatives ;  q q . Estimer la volumétrie d’un index à une échéance donnée  Là encore.  La nouvelle clause est intéressante pour aller à l’encontre du fonctionnement par défaut : supprimer un index qui  serait conservé ou conserver un index qui serait supprimé. de  préférence  gérés  localement  (c’est  le  cas  par  défaut)  avec  une  gestion  automatique  de  l’espace  dans  les  segments (c’est le cas par défaut) ;  recommandation  numéro  deux  (moins  importante) : régler  PCTFREE  avec  soin  (voir  Estimation  de  PCTFREE). les index sont reconstruits  à intervalles réguliers).  peut  améliorer  la  performance de création de l’index.  q q Définir  un  index  en  spécifiant  un  INITIAL  adapté  à  la  volumétrie  estimée  de  l’index.  c’est  notamment  que  l’unicité  n’est  plus  souhaitée ; supprimer  l’index  associé  est  donc  logique.  Syntaxe  ALTER TABLE DROP CONSTRAINT { nom_contrainte | PRIMARY KEY } KEEP INDEX | DROP INDEX .  conserver  un  index  unique  lors  de  la  suppression  d’une  contrainte  de  clé  primaire  ou  unique  n’a  pas  de  sens : l’unicité est toujours vérifiée au niveau de l’index.  L’approche  par  défaut  d’Oracle  est  relativement  logique. en diminuant le nombre d’extensions allouées pendant l’opération.  6.  un  index  non  unique  ne  vérifie  pas  l’unicité  et  peut  donc  être  conservé. Vue d’ensemble  Les recommandations sont les mêmes que pour les tables (section Gestion des tables) :  q recommandation numéro un (fondamentale) : stocker les index dans un ou plusieurs tablespaces dédiés.

  Pour mémoire.  q Dans ce cas.  Vous pouvez positionner PCTFREE à une valeur faible (éventuellement 0) dans les cas suivants :  q Si l’index est créé sur une colonne qui sera rarement mise à jour (ni UPDATE ni INSERT).All rights reserved . Nous pouvons réaliser le calcul suivant pour un de ces index :  SQL> ANALYZE INDEX adherent$ix01 VALIDATE STRUCTURE. donc par règle de trois.  Nf est une valeur relativement arbitraire.q calculer  le  nombre  de  blocs  d’index  occupés  par  ce  jeu  d’essai  (par  exemple. que la table ADHERENT (schéma DIANE) ait été chargée avec 10 000 lignes et qu’elle doit en  contenir 250 000 à une échéance de 6 mois.  Si l’index est créé sur une colonne qui va continuer à faire l’objet d’insertions avec des valeurs appartenant  à la plage des valeurs actuelles (ces entrées viendront s’intercaler dans les blocs existants).  openmirrors. ESTIMATION ---------1475 L’index pour le jeu de données utilise 59 blocs.  Si l’index est créé sur une colonne qui va continuer à faire l’objet d’insertions avec des valeurs en dehors de  la plage des valeurs actuelles (ces entrées d’index iront dans de nouveaux blocs). VALIDATE STRUCTURE est présenté plus loin. Index analysé.9- .Ni étant le nombre de lignes à insérer dans l’index avant que tout  l’espace  laissé  libre  initialement  soit  occupé  (statistiquement).  à  partir  des  statistiques  de  l’index ou à l’aide du package DBMS_SPACE. PCTFREE peut être estimé par la formule suivante :  PCTFREE = 100 x (1 -Ni / Nf) Ni = nombre initial de lignes ;  Nf = nombre final de lignes (à une échéance donnée).  L’emploi de l’ordre SQL ANALYZE INDEX .  Vous devez par contre positionner PCTFREE à une valeur élevée dans les cas suivants :  q Si l’index est créé sur une colonne qui sera souvent mise à jour (UPDATE). il est possible de mettre un PCTFREE faible ou nul. Estimation de PCTFREE  Vous n’avez pas besoin de vous préoccuper de PCTFREE si la colonne indexée est vide lors de la création de l’index.  c..  sachant  qu’il  est  facile  de  superviser  le  stockage  d’un index et de le reconstruire en cas de besoin.  q Supposons.Algeria Educ . Si pour une raison quelconque. nous pouvons estimer que l’index utilisera 1  475 blocs dans 6 mois. PCTFREE est pris en compte uniquement à la création de l’index et n’est effectivement utilisé que si la  colonne à indexer est non vide. les futures insertions de clés ne risquent pas de venir  dans les blocs déjà utilisés. l’objectif de PCTFREE est simple : réserver de l’espace dans  les  blocs  pour  les  éventuelles  futures  insertions  de  clés  dans  les  blocs  d’index  initialement  utilisés  (les  clés  sont  triées dans les blocs feuilles). SQL> SELECT lf_blks+br_blks FROM index_stats 2 WHERE name=’ADHERENT$IX01’. par exemple. LF_BLKS+BR_BLKS --------------59 SQL> SELECT 59/10000*250000 estimation FROM dual..  Une valeur arbitraire de  PCTFREE  peut  être  utilisée  (10  à  20  %).  et  que  Oracle  doit  commencer  à  réorganiser  son  arbre d’index. Nf .  q Dans le cas où l’index est créé sur une colonne non vide. voir ci­après) ;  en déduire le nombre de blocs pour le nombre de lignes attendues (règle de trois).com © ENI Editions .

...  Lorsque  des  entrées sont supprimées dans un bloc d’index.  Pour obtenir des informations plus détaillées sur le stockage d’un index.All rights reserved . mais elles ne donnent pas d’informations sur le nombre de blocs  réellement utilisés. il faut que le bloc soit complètement vide...  Nous allons par contre.Lorsqu’une  clé  d’index  est  modifiée.  HEIGHT  hauteur de l’arbre. L’ordre SQL ANALYZE INDEX .  l’entrée  correspondante  est  supprimée  et  recréée.  b.10 © ENI Editions . il faut ajouter l’option CASCADE.  7. VALIDATE STRUCTURE  L’ordre  SQL  ANALYZE INDEX . vous trouverez de nombreuses similitudes avec les tables ..  Les vues DBA_SEGMENTS et DBA_EXTENTS présentées au chapitre Gestion des tablespaces et des fichiers de données  permettent de voir l’espace global alloué à l’index..  q q Les statistiques générées par le package DBMS_STATS ne sont pas suffisantes pour réaliser une analyse détaillée du  stockage de l’index (mais elles sont suffisantes pour l’optimiseur) ; nous ne les évoquerons donc. VALIDATE STRUCTURE.. Superviser l’espace occupé par un index  a.    .  BLOCKS  nombre de blocs alloués au segment. VALIDATE STRUCTURE ne vérifie pas la cohérence de l’index vis­à­vis de la table ; pour  vérifier une telle cohérence. Exemple :  ANALYZE INDEX adherent$ix01 VALIDATE STRUCTURE. VALIDATE STRUCTURE  permet  de  vérifier  l’intégrité  de  l’index  et  d’obtenir  des  informations détaillées sur le stockage de l’index.  LF_BLKS  nombre de blocs feuilles dans l’index... l’espace libéré ne peut être réutilisé que pour des entrées  dont c’est la place (les données sont triées dans les blocs feuilles). vous pouvez :  q utiliser les informations calculées par le package DBMS_SPACE (voir le point Gestion des tables) ;  employer les statistiques générées par le package DBMS_STATS ;  utiliser d’autres statistiques calculées par l’ordre SQL ANALYZE INDEX .. présenter l’utilisation de l’ordre SQL ANALYZE INDEX . Le résultat peut être consulté dans la vue INDEX_STATS :  NAME  nom de l’index. VALIDATE STRUCTURE.  Syntaxe  ANALYZE INDEX nom_index VALIDATE STRUCTURE. L’ordre SQL ANALYZE INDEX . pas ici (description  de la vue DBA_INDEXES au point Trouver des informations sur les index). Pour pouvoir réutiliser un bloc et y placer des  valeurs complètement différentes.Algeria Educ .. Vue d’ensemble  Là encore.

  comme  nous  l’avions  indiqué  précédemment.-------.-------.  DEL_LF_ROWS  nombre de lignes supprimées dans l’index. 2 lf_rows..-------. Problèmes possibles sur le stockage  Les problèmes possibles sur le stockage d’un index sont les suivants :  openmirrors.  mais  avec une dégradation du taux d’occupation. La colonne DEL_LF_ROWS montre que des entrées ont été supprimées. VALIDATE STRUCTURE  ne  sont  pas  utilisées  par  l’optimiseur.11 - .  c.  une  modification de clé d’index se traduit par une suppression (d’où les DEL_LF_ROWS) puis une insertion (d’où l’utilisation  éventuelle de nouveaux blocs). HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------.pct_used.com © ENI Editions .    La vue INDEX_STATS ne donne que le résultat du dernier ANALYZE INDEX .del_lf_rows 3 FROM index_stats WHERE name=’ADHERENT$IX01’.br_blks.-------.  c’est­à­dire  le  nombre  de  blocs  dans  lequel il existe au moins une ligne ; PCT_USED donne le pourcentage moyen d’occupation des blocs utilisés.blocks..-------.  PCT_USED  pourcentage de l’espace alloué à l’index qui est utilisé (entre 0 et 100).  nous  voyons  que  des  blocs  supplémentaires  ont  été  alloués  à  l’index  et  ont  été  utilisés.  La  somme  LF_BLKS+BR_BLKS  donne  le  nombre  de  blocs  utilisés  par  l’index.lf_blks. HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------.----------2 57 1 64 89 9949 0 Situation après une forte activité de mises à jour (uniquement UPDATE) sur la table  q SQL> SELECT height.  Exemple :  q Situation de départ (juste après la création de l’index)  SQL> SELECT height.-------.blocks.All rights reserved .-------.  alors  qu’il  n’y  a  eu  aucune  suppression  dans  la  table ; mais.-------..  OPT_CMPR_COUNT  Nombre de colonnes de la clé d’index à utiliser pour avoir une compression optimale.----------2 115 1 128 70 13177 3228 Dans  cet  exemple.-------.del_lf_rows 3 FROM index_stats WHERE name=’ADHERENT$IX01’. VALIDATE STRUCTURE.-------.BR_BLKS  nombre de blocs branches dans l’index.br_blks.pct_used.  OPT_CMPR_PCTSAVE  Pourcentage d’espace qui peut être économisé en compressant la clé d’index selon le nombre de colonnes indiqué. Les  statistiques  générées  par  l’ordre  SQL  ANALYZE INDEX .Algeria Educ .  LF_ROWS  nombre de lignes (valeurs) dans l’index. 2 lf_rows..lf_blks.

  q q Un  mauvais  remplissage  des  blocs  peut  être  lié  à  une  valeur  inadaptée  de  PCTFREE  lors  de  la  création  de  l’index  et/ou  à  un  index  très  volatile  (nombreuses  mises  à  jour).  c’est  davantage  la  dégradation  au  fil  du  temps  (surtout  si  la  volumétrie  de  la  table  reste  par  ailleurs.-------.pct_used.  stable)  qu’une  situation à un instant donné.  le  stockage  de  l’index  s’est  dégradé  au  fil  du  temps  (alors  que  la  volumétrie  de  la  table  n’a  pratiquement pas changé).ROUND(del_lf_rows/lf_rows*100) PCT_DEL 2 FROM index_stats WHERE name=’ADHERENT$IX01’.blocks "alloués" 2 FROM index_stats WHERE name=’ADHERENT$IX01’.-------2 70 24 Sur  cet  exemple.ROUND(del_lf_rows/lf_rows*100) PCT_DEL 2 FROM index_stats WHERE name=’ADHERENT$IX01’. HEIGHT PCT_USED PCT_DEL -------.q espace inutilisé alloué à l’index ;  faible taux d’occupation moyen des blocs et/ou profondeur importante de l’arbre.-------116 128 Ce premier problème n’a pas d’incidence sur les performances (les blocs au­delà de la HWM ne sont jamais lus) ; il  conduit juste à un gaspillage d’espace disque.  La profondeur de l’arbre d’index (HEIGHT) est élevée (strictement supérieure à 5).  Exemple :  q Avant  SQL SELECT height.pct_used.  Un  index  créé  sur  une  table  très  volumineuse  peut  avoir  un  arbre  profond. plus l’index  est volumineux et profond. Moins les blocs sont pleins.-------.  .  Ce  deuxième  problème  a  des  incidences  sur  les  performances et sur l’utilisation  de  l’espace dans le Database Buffer Cache.  Ce  qu’il  faut  donc  surveiller.  Le  nombre  de  blocs  occupés  est  donné  par  la  somme  de  la  valeur  des  colonnes  LF_BLKS  et  BR_BLKS  de  la  vue  INDEX_STATS et le nombre de blocs alloués par la valeur de la colonne BLOCKS de la vue INDEX_STATS.  q Espace inutilisé alloué à un index Il y a de l’espace inutilisé alloué à un index si le nombre de blocs occupés est faible par rapport au nombre de blocs  alloués. et si l’index ne va plus grossir (ou peu). ce qui augmente le nombre d’entrées/sorties pour le parcours de l’arbre. occupés alloués -------.  Le pourcentage d’occupation (PCT_USED) est faible (inférieur à 70 %).-------2 89 0 Après  q SQL> SELECT height.All rights reserved .  Faible taux d’occupation moyen des blocs et/ou profondeur importante de l’index Le  stockage  interne  d’un  index  peut  être  considéré  comme  dégradé  si  une  ou  plusieurs  des  conditions  suivantes  sont vérifiées :  q Le rapport DEL_LF_ROWS/LF_ROWS est élevé (supérieur à 10 % ou 20 %).Algeria Educ .12 - © ENI Editions . HEIGHT PCT_USED PCT_DEL -------.  Exemple :  SQL> SELECT lf_blks+br_blks "occupés".

..  mais  une  reconstruction  (ordre  SQL  ALTER INDEX . DEALLOCATE UNUSED  L’ordre SQL ALTER INDEX . L’ordre SQL ALTER INDEX . il peut être intéressant de supprimer tout  ou partie des index de la table avant le traitement et de les recréer ensuite...8..  Le tableau suivant résume les techniques envisageables (√) et celles qui sont les mieux adaptées (☺) à tel ou tel  besoin :  DEALLOCATE  Libérer de l’espace au­dessus de la  HWM  Améliorer le taux de remplissage des  blocs  Réorganiser plus globalement  ☺  COALESCE  SHRINK  √  REBUILD  √  ☺  ☺  ☺  ☺  Réorganiser le stockage d’un index est moins compliqué que réorganiser le stockage d’une table car les données ne  sont pas affectées et la table est toujours accessible et pleinement opérationnelle..  Plusieurs techniques sont à notre disposition pour réorganiser le stockage d’un index :  q Ordre SQL ALTER INDEX .  b.. Améliorer le taux de remplissage des blocs permet aussi éventuellement de libérer de  l’espace inutilisé (l’espace libre des blocs) situé cette fois. etc.  Lors d’un traitement massif sur une table (chargement.  q q Libérer de l’espace situé au­dessus de la HWM permet de récupérer de l’espace alloué à l’index mais jamais utilisé  (et estimé jamais utilisable). Vue d’ensemble  Les besoins de réorganisation d’un index sont variés :  q libérer de l’espace libre au­dessus de la HWM ;  réorganiser un index dont la structure s’est dégradée ;  réorganiser  plus  globalement  le  stockage  de  l’index : changement  de  tablespace.13 - . SHRINK SPACE ;  Ordre SQL ALTER INDEX .. en dessous de la HWM...  Syntaxe  ALTER INDEX nom_index DEALLOCATE UNUSED [ KEEP valeur [K|M] ] . DEALLOCATE UNUSED permet de libérer l’espace d’un index situé au­dessus de la HWM. REBUILD)  se  révèle  généralement  plus  intéressante. REBUILD..All rights reserved .  réduction  du  nombre  d’extensions.. Exemple :  openmirrors.Algeria Educ . COALESCE ;  Ordre SQL ALTER INDEX . DEALLOCATE UNUSED ;  Ordre SQL ALTER INDEX .com © ENI Editions . changement de PCTFREE. purge).  q q q Il est évidemment aussi possible de supprimer l’index  (ordre  SQL DROP INDEX) puis de le créer de nouveau (ordre  SQL  CREATE INDEX). La performance globale est  meilleure et l’index est neuf (non dégradé) à l’arrivée... Réorganiser le stockage d’un index  a.

 Grosso modo.  N’oubliez  pas  que  l’espace  initialement  alloué  est  par  défaut  préservé ; il  faut  utiliser  la  clause  KEEP  pour  libérer  de  l’espace  à  l’intérieur  de  l’espace  initialement alloué à l’index.lf_blks.  cette  simple  opération  de  COALESCE  est  suffisante  pour  retrouver  un  index  performant. Situation à l’arrivée (après ANALYZE INDEX .  aucune  opération  sur  les  blocs  branches ; la  profondeur  de  l’arbre  ne  change  pas.  .-------. 2 lf_rows.. deux blocs feuilles adjacents qui ont 50 % d’espace libre peuvent être fusionnés en  un seul bloc.  Dans  de  nombreuses  situations.-------.----------3 580 3 640 78 83580 33785 Opération de COALESCE  q SQL> ALTER INDEX diane.-------. ce qui libère un bloc.  Exemple :  q Situation de départ  SQL> SELECT height.  Par  contre.-------. VALIDATE STRUCTURE)  q SQL> SELECT height.-------.blocks. L’ordre SQL ALTER INDEX . Le  fonctionnement  est  le  même  que  pour  une  table  (Gestion  des  tables).-------.  la  profondeur de l’arbre n’a pas changé.-------.del_lf_rows 3 FROM index_stats WHERE name=’ADHERENT$IX01’.blocks.----------3 370 3 640 88 49838 43 L’opération  de  COALESCE  a  permis  de  réduire  le  nombre  de  blocs  utilisés.ALTER INDEX adherent$pk DEALLOCATE UNUSED.-------.All rights reserved .-------.-------.lf_blks.br_blks.lf_blks.del_lf_rows 3 FROM index_stats WHERE name=’ADHERENT$IX01’. HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------. 2 lf_rows. COALESCE  L’ordre SQL ALTER INDEX .adherent$ix01 COALESCE..-------. ALTER INDEX adherent$pk DEALLOCATE UNUSED KEEP 1M.pct_used.  et  de  retrouver  un  pourcentage  d’occupation  satisfaisant  et  un  faible  taux  de  lignes  supprimées  (il  en  reste  quelques­unes).-------.del_lf_rows 3 FROM index_stats WHERE name=’ADHERENT$IX01’..blocks.-------.br_blks..-------..  par  contre.  c. HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------..br_blks.  Syntaxe  ALTER INDEX nom_index COALESCE . COALESCE permet de fusionner le contenu de blocs feuilles adjacents qui contiennent  de l’espace libre.  Cette  opération  est  relativement  rapide  et  ne  nécessite  pas  d’espace  de  stockage supplémentaire.. L’ordre  SQL  ALTER INDEX . HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------.. COALESCE  n’effectue.pct_used.-------.Algeria Educ .----------2 257 1 384 90 64000 0 Situation après des modifications importantes dans la table : l’index est dégradé (la profondeur a changé)  q SQL> SELECT height. 2 lf_rows. ALTER INDEX adherent$pk DEALLOCATE UNUSED KEEP 0.14 - © ENI Editions .pct_used.

d.-------. 2 lf_rows..  L’ordre SQL ALTER INDEX . L’ordre SQL ALTER INDEX ..clause_stockage STORAGE ( [ INITIAL valeur [K|M] ] [ NEXT valeur [K|M] ] openmirrors. SHRINK SPACE  L’ordre SQL ALTER INDEX .All rights reserved .-------.pct_used. SHRINK SPACE permettra de terminer l’opération. SHRINK SPACE est analogue à l’ordre SQL ALTER TABLE .. ajuste la  HWM et libère l’espace ainsi récupéré. sauf sur les  blocs utilisés (400 contre 640) ; l’espace a été libéré.-------.-------.pct_used. SHRINK SPACE COMPACT est équivalent à l’ordre SQL ALTER INDEX .-------.... e. L’ordre SQL ALTER INDEX . Avec  l’option  COMPACT.  mais  sans  ajuster  la  HWM  ni  libérer  d’espace.. Oracle compacte aussi le segment.blocks. SHRINK SPACE : il permet de  compacter les lignes d’un index. REBUILD permet de reconstruire en totalité un index (blocs branches et blocs feuilles)  et donc... VALIDATE STRUCTURE)  q SQL> SELECT height.br_blks.-------. l’opération de SHRINK SPACE donne le même résultat que l’opération de COALESCE...com © ENI Editions .  Oracle  se  contente  de  compacter  les  lignes.adherent$ix01 SHRINK SPACE.. HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------.  Syntaxe  ALTER INDEX nom_index REBUILD [ TABLESPACE nom_tablespace ] [ PCTFREE valeur ] [ clause_stockage ] [ ONLINE ] [ NOCOMPRESS | COMPRESS [n] ] [ LOGGING | NOLOGGING ] .-------.del_lf_rows 3 FROM index_stats WHERE name=’ADHERENT$IX01’.    L’opération de COALESCE est légèrement plus rapide que l’opération de SHRINK SPACE. HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------.. Situation à l’arrivée (après ANALYZE INDEX . de réorganiser son stockage.----------3 580 3 640 78 83580 33785 Opération de SHRINK SPACE   q SQL> ALTER INDEX diane.  SQL> SELECT height.15 - .blocks.  Exemple  q Situation après des modifications importantes dans la table : l’index est dégradé. 2 lf_rows.-------.  Syntaxe  ALTER INDEX nom_index SHRINK SPACE [COMPACT] .lf_blks.-------.  L’exécution ultérieure d’un autre ordre SQL ALTER TABLE .br_blks.Algeria Educ . mais uniquement pour un index stocké dans un tablespace géré localement avec  une gestion automatique de l’espace dans les segments..----------3 374 3 400 87 49800 0 À quelques blocs près.-------. .lf_blks....del_lf_rows 3 FROM index_stats WHERE name=’ADHERENT$IX01’. COALESCE.. REBUILD  L’ordre SQL ALTER INDEX . Par défaut.

.  L’inconvénient  majeur  par  rapport  à  une  recréation  est  qu’il  faut  de  l’espace  disponible  pour  faire  cohabiter  temporairement l’ancien index et le nouveau. HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------. REBUILD  reconstruit  l’index  avec  les  mêmes  clauses  de  stockage.pct_used. Les options sont les mêmes que celles de l’ordre SQL CREATE INDEX.  q Les performances sont donc globalement améliorées pour tout le monde. Situation à l’arrivée (après ANALYZE INDEX .br_blks..-------.blocks. du fait d’une forte activité de mise à jour.lf_blks.  Cette  syntaxe  peut  être  utilisée  pour  reconstruire  un  index  dont  les  clauses  de  stockage  sont  bonnes  mais  qui  s’est  dégradé au fil du temps.16 © ENI Editions ..adherent$ix01 REBUILD.br_blks.-------.---------------.-------------.  Exemple 2  q Situation de départ : index non compressé  SQL> SELECT lf_blks.. 2 lf_rows.-------.----------3 580 3 640 78 83580 33785 Opération de REBUILD  q SQL> ALTER INDEX diane.br_blks.[ MINEXTENTS valeur ] [ MAXEXTENTS { valeur | UNLIMITED } ] [ PCTINCREASE valeur ] ) Exemple :  ALTER INDEX adherent$pk REBUILD PCTFREE 40 STORAGE ( INITIAL 10M ) ..  L’ancien index est toujours disponible : les requêtes peuvent l’utiliser.  L’ordre SQL ALTER INDEX .pct_used.Algeria Educ .blocks.-------. HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------.  l’ordre SQL  ALTER INDEX ..  Exemple 1  q Situation après des modifications importantes dans la table : l’index est dégradé  SQL> SELECT height.-------. VALIDATE STRUCTURE)  q SQL> SELECT height. LF_BLKS BR_BLKS BLOCKS OPT_CMPR_COUNT OPT_CMPR_PCTSAVE -------.opt_cmpr_count..-------. 2 lf_rows.lf_blks. Index modifié.del_lf_rows 3 FROM index_stats WHERE name=’ADHERENT$IX01’.-------..  Sans  option.All rights reserved . REBUILD est plus intéressant que la recréation (DROP+CREATE) pour deux raisons :  q L’index est reconstruit à partir de l’index existant : aucun tri n’est nécessaire.-------.del_lf_rows 3 FROM index_stats WHERE name=’ADHERENT$IX01’.-------. MOVE par exemple).blocks.opt_cmpr_pctsave 2 FROM index_stats WHERE name=’ADHERENT$IX01’.----------2 364 1 384 89 49805 0 L’index a été complètement reconstruit : il a retrouvé une profondeur de 2 et utilise un peu moins de blocs.-------.  Ces  deux  avantages  disparaissent  si  l’index  d’origine  est  UNUSABLE(suite  à  l’exécution  d’un  ordre  SQL  ALTER TABLE .-------.-------.

---------------41 1 48 2 0 L’index a été reconstruit avec une compression sur les deux premières colonnes. Surveiller l’utilisation d’un index  Depuis Oracle9i.58 1 72 2 28 q Compression sur les deux premières colonnes  SQL> ALTER INDEX diane. il est possible de surveiller les index afin de déterminer s’ils sont utilisés ou non.17 - openmirrors. Exemple :  ALTER INDEX adherent$ix01 MONITORING USAGE .blocks. Un index non utilisé  peut être supprimé pour libérer de l’espace et améliorer les performances des mises à jour.-------------.. si vous avez des problèmes de place. mais vous ne libérez pas d’espace pour d’autres segments.Algeria Educ . VALIDATE STRUCTURE)  q SQL> SELECT lf_blks.  TABLE_NAME  Nom de la table sur laquelle l’index est créé.All rights reserved . La clause MONITORING USAGE peut aussi être utilisée dans l’ordre SQL CREATE INDEX pour activer la surveillance dès la  création de l’index (NOMONITORING par défaut).  9.8 %.  L’ordre SQL ALTER INDEX permet d’activer ou de désactiver la surveillance d’un index :  ALTER INDEX nom_index MONITORING USAGE | NOMONITORING USAGE . le SHRINK SPACE peut être  envisagé ; il présente l’avantage de libérer l’espace récupéré.    © ENI Editions .  f. Le gain annoncé était de 28 % ; il  est de 28.opt_cmpr_pctsave 2 FROM index_stats WHERE name=’ADHERENT$IX01’. utilisez en priorité  cette technique pour réorganiser le stockage d’un index : vous obtiendrez le meilleur résultat.  MONITORING  Indique si l’index est actuellement sous surveillance (YES ou NO).  USED  Indique si l’index a été utilisé au moins une fois pendant sa surveillance (YES ou NO).. Situation à l’arrivée (après ANALYZE INDEX .com .opt_cmpr_count.  Par contre.br_blks.  La  vue  V$OBJECT_USAGE  sera  ensuite  interrogée  pour  déterminer  si  un  index  a  été  utilisé  pendant  qu’il  était  sous  surveillance :  INDEX_NAME  Nom de l’index.-------. Conclusion  Si  le  fait  que  le REBUILD  nécessite  temporairement  de  l’espace ne vous pose pas de problème.-------. vous pouvez employer le COALESCE pour un résultat généralement  très satisfaisant. LF_BLKS BR_BLKS BLOCKS OPT_CMPR_COUNT OPT_CMPR_PCTSAVE -------.adherent$ix01 REBUILD COMPRESS 2. Dans ce cas.

. l’index ADHERENT$IX01 créé sur la table ADHERENT a été utilisé au moins une fois depuis que l’index  est sous surveillance ; l’index est toujours sous surveillance (la colonne END_MONITORING est vide).    . INDEX_NAME TABLE_NAME MONITORING USED --------------.  TABLE_NAME  Nom de la table sur laquelle l’index est créé.--------------. Exemple :  SQL> SELECT * FROM v$object_usage 2 WHERE index_name = ’ADHERENT$IX01’ .All rights reserved .START_MONITORING  Date/heure du début de la surveillance de l’index.  10. VALIDATE STRUCTURE ;  DBA_SEGMENTS : informations sur les segments (dont ceux de type index) ;  DBA_EXTENTS : informations sur les extensions allouées aux segments (dont ceux de type index)  q q q q Les vues DBA_SEGMENTS et DBA_EXTENTS ont été présentées à la section Trouver des informations sur les tablespaces  et les fichiers de données du chapitre Gestion des tablespaces et des fichiers de données.  La vue INDEX_STATS a été présentée à la section Gestion des index B­tree.  OWNER  Nom du propriétaire de l’index.    La vue V$OBJECT_USAGE doit être interrogée sous le compte du propriétaire de l’index..  END_MONITORING  Date/heure de la fin de la surveillance de l’index (vide si la surveillance est en cours).Algeria Educ ..---START_MONITORING END_MONITORING ------------------.---------. L’ordre SQL ANALYZE INDEX .  DBA_INDEXES INDEX_NAME  Nom de l’index..  Les colonnes intéressantes des différentes autres vues sont présentées ci­après.18 © ENI Editions . Trouver des informations sur les index  Plusieurs vues du dictionnaire de données permettent d’obtenir des informations sur les index :  q DBA_INDEXES : informations sur les index ;  DBA_IND_COLUMNS : informations sur les colonnes des index ;  INDEX_STATS : résultat du dernier ANALYZE INDEX . VALIDATE STRUCTURE.------------------ADHERENT$IX01 ADHERENT YES YES 01/04/2005 10:37:40 Dans cet exemple.

  BLEVEL *  Profondeur de l’arbre au niveau des branches (ne tient pas compte des feuilles).All rights reserved .  AVG_DATA_BLOCKS_PER_KEY *  Nombre moyen de blocs de données (table) par valeur de la clé.  STATUS  Statut de l’index (VALID ou UNUSABLE).  CLUSTERING_FACTOR *  Facteur de regroupement des données dans la table.  PREFIX_LENGTH  Nombre de colonnes dans le préfixe de la compression.19 - .  COMPRESSION  Indique si la compression de l’index est active (ENABLED ou DISABLED).  SAMPLE_SIZE *  openmirrors.  LOGGING  Indique si le mode LOGGING est actif ou non pour l’index (YES ou NO).  DISTINCT_KEYS *  Nombre de valeurs distinctes dans l’index.  AVG_LEAF_BLOCKS_PER_KEY *  Nombre moyen de blocs feuilles par valeur de la clé.  TABLESPACE_NAME  Nom du tablespace dans lequel l’index est stocké.  NUM_ROWS *  Nombre de lignes dans l’index.TABLE_OWNER  Nom du propriétaire de la table.  LEAF_BLOCKS *  Nombre de blocs feuilles dans l’index.  UNIQUENESS  Nature de l’index (UNIQUE ou NONUNIQUE).  PCT_FREE  Valeur du PCTFREE. 0 si le bloc racine est égal au bloc  feuille.com © ENI Editions .Algeria Educ .

  TABLE_NAME  Nom de la table sur laquelle l’index est créé.20 - © ENI Editions .  .  LAST_ANALYZED *  Date et heure de la dernière analyse réalisée sur l’index.  DBA_IND_COLUMNS INDEX_NAME  Nom de l’index. calculées par défaut lorsque les statistiques sont générées sur la table.Algeria Educ .All rights reserved .  OWNER  Nom du propriétaire de l’index.  COLUMN_NAME  Nom de la colonne utilisée dans la clé de l’index.Taille de l’échantillon utilisé lors du calcul des statistiques.  COLUMN_POSITION  Position de la colonne dans la clé de l’index.  * Statistiques sur l’index.  TABLE_OWNER  Nom du propriétaire de la table. Ces dernières sont  utilisées par l’optimiseur.

All rights reserved .  Oracle  Enterprise  Manager  Database  Control  du  chapitre Les Outils d’administration). NUM_ROWS BLOCKS SAMPLE_SIZE LAST_ANA ---------. SQL> SELECT num_rows.Algeria Educ . Ces  statistiques sont calculées avec le package DBMS_STATS.  Par défaut. cette tâche de maintenance collecte les statistiques sur les objets de la base de données qui n’ont pas de  statistiques  ou  qui  ont  des  statistiques  jugées  obsolètes  (si  plus  de  10%  des  lignes  de  l’objet  sous­jacent  ont  été  modifiées) ; la  procédure  traite  en  priorité  les  objets  qui  en  ont  le  plus  besoin.  Oracle  recommande  de  faire  fonctionner  l’optimiseur  dans  le  mode  CBO  (Cost  Based Optimizer  ­ Optimiseur  basé  sur  les  coûts). DBA_TAB_ COLUMNSet DBA_INDEXES.  cette  collecte  s’effectue par l’intermédiaire d’une tâche de maintenance automatisée (cf. cliquez sur le lien  Serveur sur la page d’accueil  puis  sur  le  lien Gérer  les  statistiques  de  l’optimiseur (cadre Optimiseur d’interrogation). c’est­à­dire la manière dont Oracle va  exécuter la requête.  q q Les paramètres sont les suivants :  ownname  Nom du schéma (NULL pour le schéma courant).  Pour fonctionner.----------.  Vous pouvez collecter les statistiques en exécutant manuellement certaines procédures du package DBMS_STATS :  q GATHER_TABLE_STATS(owname.indname) : statistiques sur un index ;  GATHER_SCHEMA_STATS(owname) : statistiques sur toutes les tables et index d’un schéma.  seul  le  mode  CBO  est  supporté ; le  mode  RBO  (Rule Based Optimizer ­ Optimiseur basé sur les règles) n’est plus supporté.  les  statistiques  sont  automatiquement  collectées  par  Oracle.gather_schema_stats(’DIANE’) Procédure PL/SQL terminée avec succès.  Depuis  maintenant  plusieurs  versions.---------. les colonnes et les index.  Exemple :  SQL> EXEC dbms_stats.tabname) : statistiques sur une table (et par défaut sur les colonnes et index de la  table) ;  GATHER_INDEX_STATS(owname.-------9964 137 9964 20/07/08 Le  Database  Control  permet  de  gérer  les  statistiques  de  l’optimiseur.  indname  Nom de l’index.  Les  paramètres  de  cette  tâche  automatique  peuvent  être  configurées  dans  le  Database  Control  (cf.last_analyzed 2 FROM dba_tables WHERE table_name=’ADHERENT’ AND owner=’DIANE’.1- .com © ENI Editions .  tabname  Nom de la table.  Depuis  la  version  10.  Depuis  la  version  10. Oracle Enterprise Manager Database Control  du chapitre Les Outils d’administration). l’optimiseur dans le mode CBO a besoin de statistiques sur les tables. afin que l’optimiseur ne travaille pas avec des données obsolètes.  Les statistiques peuvent êtres consultées dans les vuesDBA_TABLES.  Pour  accéder  à  la  page  de  gestion  des  statistiques  de  l’optimiseur.  openmirrors.sample_size. il était de la responsabilité du DBA de programmer une tâche périodique de collecte des  statistiques.  Ces  procédures  ont  d’autres  paramètres  dont  les  valeurs  par  défaut  sont  a  priori  satisfaisantes  (au  moins  dans  un  premier temps).Les statistiques et l’optimiseur Oracle  L’optimiseur Oracle est chargé de déterminer le plan d’exécution des requêtes.  En  version 11.  Dans les versions précédentes.blocks.

 leur schéma ou leur nom.  À partir de cette page.Algeria Educ . vous pouvez effectuer diverses actions sur les tables :    créer une nouvelle table (bouton Créer ou menu Créer comme ) ;  supprimer une table (bouton Supprimer avec des options) ;  modifier une table (bouton Modifier) ;  créer un index sur une table (menu Créer un index) ;  extraire la définition d’une table (menu Générer du code DDL) ;  collecter les statistiques sur une table (menu Gérer les statistiques de l’optimiseur) ;  q q q q q q © ENI Editions . Les tables  Dans le Database Control.Utiliser le Database Control  1.    La section Rechercher permet de rechercher des objets selon leur type.All rights reserved .1- . cliquez sur le lien Schéma sur la page d’accueil puis sur le lien Tables  (cadre Objets de  base de données) pour accéder à la page de gestion des tables.

Algeria Educ . Modifier ou Visualiser.q réorganiser une table (menu Réorganiser) ;  exécuter le conseiller sur les segments (menu Exécuter la fonction de conseil sur les segments) ;  compacter (SHRINK) la table (menu Réduire le segment).  q q En cliquant sur le lien du nom de table.2- © ENI Editions . vous arrivez sur  la page de définition d’une table :    Cette page propose plusieurs onglets (sous forme de liens) permettant de gérer les différentes caractéristiques de la  table.com .  openmirrors. Il peut être utilisé pour estimer la volumétrie d’une table ou d’un index à une échéance donnée.All rights reserved .  L’onglet Segments permet de voir l’espace utilisé par la table et ces index :    Le  graphique  donne  la  tendance  d’utilisation  de  l’espace  pour  le  segment  sélectionné  dans  la  liste  et  la  période  indiquées. ou en cliquant sur les boutons Créer.

 Modifier ou Visualiser.3- . cliquez sur le lien Schéma sur la page d’accueil puis sur le lien Index (cadre Objet de base  de données) pour accéder à la page de gestion des index. leur schéma ou leur nom. ou en cliquant sur les boutons Créer. vous pouvez effectuer diverses actions sur les index :    créer un nouvel index (bouton Créer ou menu Créer comme) ;  supprimer un index (bouton Supprimer) ;  modifier un index (bouton Modifier) ;  extraire la définition d’un index (menu Générer du code DDL) ;  collecter les statistiques sur l’index (menu Gérer les statistiques de l’optimiseur) ;  réorganiser un index (menu Réorganiser) ;  exécuter le conseiller sur les segments (menu Exécuter la fonction de conseil sur les segments) ;  compacter (SHRINK) un index (menu Réduire le segment).Algeria Educ .2. Les index  Dans le Database Control.  À partir de cette page.All rights reserved . vous arrivez sur  la page de définition d’un index :  © ENI Editions .    La section Rechercher permet de rechercher des objets selon leur type.  q q q q q q q q En cliquant sur le lien du nom d’index.

  Les  boutons  Définir  les  attributs et  Définir  les  attributs  par  type  permettent  de  spécifier  les  caractéristiques  de  stockage : nouveau tablespace.4- © ENI Editions .  il  faut  réaliser  les  modifications  nécessaires  avant  de  lancer  l’opération.  3.All rights reserved . PCTFREE. L’onglet Segments permet de voir l’espace utilisé par l’index (comme pour une table). taille initiale.  Cette page propose plusieurs onglets (sous forme de liens) permettant de gérer les différentes caractéristiques de  l’index.  Les principales étapes de l’assistant sont les suivantes :  Définir la liste des objets à réorganiser Sur cette page. vous pouvez définir la liste des objets à réorganiser en cliquant sur les boutons Ajouter et Enlever.  Programmation Cette  page  permet  de  nommer  le  travail.Algeria Educ . Cet assistant peut aussi être appelé en cliquant sur le lien Réorganiser les  objets dans le cadre Objets de base de données de l’onglet Schéma.  de  fournir  les  informations  d’identification  et  de  connexion. Réorganiser une table ou un index  Le  menu  Réorganiser  disponible  sur  les  tables. etc.  les  index  et  les  tablespace  permet  d’exécuter  un  assistant  de  réorganisation du stockage des objets.  Rapport d’impact Cette page donne des informations sur les problèmes potentiels qui peuvent survenir au cours de la réorganisation  (manque  d’espace  par  exemple) ; si  c’est  le  cas.com .  Définir les caractéristiques de la réorganisation Cette page permet notamment d’indiquer si la réorganisation doit s’effectuer en ligne ou hors ligne. La réorganisation  en  ligne  privilégie  la  disponibilité  de  l’objet  au  détriment  de  la  vitesse ; c’est  l’inverse  pour  la  réorganisation  hors  ligne.  et  de  programmer l’exécution du travail (maintenant ou ultérieurement).  Récapitulatif openmirrors.

 pour pouvez voir rapidement s’il y  a des recommandations sur les segments :    © ENI Editions .  Cet assistant peut être appelé en utilisant le menu Exécuter la fonction de conseil sur les segments disponible sur  les  tables.All rights reserved ..  Cet assistant utilise une des techniques suivantes :  q réorganisation d’un index : ordre SQL ALTER INDEX .  Par  défaut.  les  index  et  les  tablespace  ou  en  cliquant  sur  le  lien  Fonction  de  conseil  sur  les  segments sur la page  Centre de conseil (accessible par le lien Centre de conseil à partir de la page d’accueil). dans le cadre Récapitulatif de l’espace.  4. Le conseiller sur les segments  Le  Database  Control  dispose  d’un  conseiller  sur  les  segments  (Segment  Advisor).  Ce  conseiller  donne  des  recommandations sur l’opportunité ou non de compacter (SHRINK) un segment.  Sur la page d’accueil du Database Control.5- .. En cliquant sur le bouton radio Script complet..  Vous  serez  donc  rarement  amené  à  lancer le conseiller manuellement.  Cette page donne un récapitulatif du travail qui va être effectué. MOVE ;  réorganisation d’une table en ligne : package DBMS_REDEFINITION.  Cliquez  sur  le  bouton  Soumettre  un  travail  pour lancer l’opération.Algeria Educ .  Oracle  Enterprise  Manager  Database  Control  du  chapitre  Les  Outils  d’administration).  cet  assistant  est  aussi  programmé  pour  s’exécuter  en  tâche  de  maintenance  automatisée  (cf. vous  pouvez  consulter  (et  récupérer)  le  script  complet  de  la  réorganisation. REBUILD ;  réorganisation d’une table hors ligne : ordre SQL ALTER TABLE .  q q Le résultat du travail peut être consulté en cliquant sur le lien Travaux de la page d’accueil (cadre Liens associés en  bas)..

 vous pouvez afficher la liste des recommandations :    Si vous cliquez sur le bouton Détails  des  recommandations. Le Database Control  affiche alors la page suivante :    Cette page vous permet de choisir une option de réduction (SHRINK SPACE ou SHRINK SPACE COMPACT) et de soumettre  le travail (bouton Implémenter).All rights reserved .En cliquant sur le lien associé.  il  vous  suffit  de  sélectionner  une  ou  plusieurs  tâches  dans  la  liste  et  de  cliquer sur le bouton Implémenter.  D’une  manière  plus  générale. vous pouvez consulter le détail de la recommandation  sélectionnée :    Pour  implémenter  les  recommandations.  les  résultats  des  différents  conseillers  sont  visibles  lorsque  vous  affichez  la  page  Centre de conseil :  .6© ENI Editions . Le résultat du travail peut être consulté en cliquant sur le lien Travaux de la page  Serveur (cadre Oracle Scheduler).Algeria Educ openmirrors. ou de cliquer directement sur le bouton Réduire d’une tâche.com .

  En cliquant sur le lien correspondant à une tâche. vous pouvez visualiser les recommandations du conseiller.  © ENI Editions .Algeria Educ .All rights reserved .7- .

Algeria Educ .  Les  fichiers  de  journalisation  sont  organisés  en  groupes  (au  minimum  2)  composés  d’un  ou  de  plusieurs  membres  (minimum un) ; ils sont créés lors de la création de la base (cf. l’instance Oracle passe au groupe suivant et  ainsi de suite jusqu’au dernier ; lorsque le dernier groupe est plein.  Les  fichiers  de  journalisation  sont  utilisés  pour  la  récupération  de  l’instance  après  un  arrêt  anormal  et  pour  la  récupération  de  média  si  un  fichier  de  données  est  perdu  ou  endommagé ;  dans  ce  cas. Fichier de journalisation  Les fichiers de journalisation (redo log) enregistrent toutes les modifications apportées à la base de données.  Différents  scénarios  de  restauration  sont  alors  disponibles  en  fonction  de  la  situation  (présence  ou  non  d’une  sauvegarde  du  fichier  de  contrôle  notamment)  pour  redémarrer  la  base  de  données. il est donc conseillé de multiplexer le fichier de contrôle.  Lorsqu’un groupe est plein (c’est­à­dire lorsque les membres sont pleins).  ils  sont  appliqués  à  une  sauvegarde de fichier de données. l’instance Oracle repasse au premier. pour rejouer toutes les modifications survenues entre la sauvegarde et l’incident  ayant endommagé le fichier.  Tous  les  membres  d’un  groupe  ont  la  même  taille.  openmirrors. la base de données ne peut pas être ouverte. La taille du fichier de contrôle est déterminée par Oracle.com © ENI Editions .  q q q q Le fichier de contrôle est automatiquement mis à jour par Oracle lors de chaque modification de la structure de la base  de données (ajout ou déplacement d’un fichier par exemple).  De  même.  même  si  le  serveur  ne  comporte  qu’un disque (cela met à l’abri d’une suppression accidentelle).  2.1- .  Pour des raisons de sécurité. Ils sont  organisés en groupes écrits de manière circulaire ; les informations sauvegardées sont donc périodiquement écrasées.La base de données  1.  le  nombre  de  groupes est déterminé ; il n’augmente pas dynamiquement. même si les autres fichiers  de  la  base  de  données  sont  présents  (l’instance  reste  dans  le  statut NOMOUNT ­ voir  le  chapitre Démarrage  et  arrêt). Fichier de contrôle  Le fichier de contrôle contient des informations de contrôle sur la base de données :  q le nom de la base de données ;  la date/heure de création de la base de données ;  l’emplacement des autres fichiers de la base de données (fichiers de données et fichiers de journalisation) ;  le numéro de séquence actuel des fichiers de journalisation ;  des informations sur les points de reprise (checkpoint). Il  permet ensuite à l’instance de localiser et d’ouvrir les autres fichiers de la base de données. il est possible de créer une base de données avec  un  seul  fichier  de  contrôle  mais  il  est  vivement  conseillé  d’utiliser  plusieurs  copies. etc.  mais  ce  sont  des  scénarios  relativement complexes.All rights reserved . Le passage  d’un groupe à un autre est appelé basculement (switch).  définie  lors  de  la  création  du  groupe ;  un  fichier  de  journalisation  contient  donc  une  quantité  maximale  d’informations. Si le fichier de contrôle ne  peut pas être trouvé (ou est endommagé).  Plusieurs  fichiers  de  contrôle  peuvent  être  spécifiés  lors  de  la  création  de  la  base  (chapitre Création  d’une  nouvelle  base de données) ou ultérieurement (chapitre Gestion des fichiers de contrôle et de journalisation). À  l’intérieur  d’un  groupe.  Lorsqu’une instance est lancée pour ouvrir une base de données. le fichier de contrôle est le premier fichier ouvert. Techniquement. c’est­à­dire d’en avoir plusieurs  copies gérées en miroir (multiplexées) par Oracle.  les  membres  sont  écrits  simultanément  en  miroir  par  l’instance  Oracle  (processus  LGWR)  et  contiennent  la  même  information. Chapitre Création d’une nouvelle base de données).

Algeria Educ .  La gestion des tablespaces et des fichiers de données est présentée dans le chapitre Gestion des tablespaces et  des fichiers de données. Fichiers de données  a. Définitions  Les  fichiers  de  données  contiennent  les  données  proprement  dites  de  la  base  de  données  (tables  et  index  notamment).  elle  écrase  les  informations  qui  y  sont  stockées ;  ces  informations  ne  sont  donc  plus  disponibles  en  cas  de  besoin.  Les  fichiers  de  journalisation  seront  abordés  dans  les  chapitres  Création  d’une  nouvelle  base  de  données  (création  initiale) et Gestion des fichiers de contrôle et de journalisation (manipulation ultérieure).  une  base  de  données  comportera  donc  d’autres  fichiers  de  données  appartenant  à  d’autres  tablespaces.  Une  base  de  données  comporte  au  minimum  deux  fichiers  de  données  appartenant  à  deux  tablespaces  réservés  pour Oracle (le tablespace SYSTEM et le tablespace SYSAUX. parfois appelé tablespace smallfile.  b.  Les tablespaces bigfile permettent de gérer des volumes de données beaucoup plus importants.  il  faut  activer  le  mécanisme  d’archivage  (chapitre  Sauvegarde et récupération) qui permet d’archiver les fichiers de journalisation (en l’occurrence un membre du groupe)  lorsqu’ils sont pleins.  Si un groupe comporte plusieurs membres et qu’un des membres est indisponible. apparu en version 10).  Dans  la  pratique.  La  quasi­totalité  des opérations d’administration relatives au stockage s’effectue en travaillant sur le tablespace et non sur le fichier  de données. Les tablespaces SYSTEM et SYSAUX  ne doivent normalement contenir aucune donnée applicative.  Oracle  a  introduit  la  notion  de  tablespace  bigfile.All rights reserved .2- © ENI Editions . mais qui peut être beaucoup plus gros qu’un fichier de données traditionnel. si possible sur des disques différents.  Il  est  donc  conseillé  d’utiliser au minimum deux ou trois membres par groupe (multiplexage).  3.  Pour  garantir  cette  possibilité  d’effectuer  des  récupérations  complètes. avant que l’instance ne les réutilise. Ils sont logiquement regroupés en tablespaces :    Un  tablespace  est  une  unité  logique  de  stockage  composée  d’un  ou  plusieurs  fichiers  physiques.  Par  opposition.  par  exemple  pour  une  récupération  de  média.  transparence  du  fichier  de  données).  Les  fichiers  de  journalisation  sont  très  importants  pour  la  sécurité  de  la  base  de  données.  Un  tablespace  bigfile  est  un  tablespace  qui  ne  contient qu’un seul fichier de données. tout en simplifiant la  gestion  du  stockage  (moins  de  fichiers.  Lorsque  l’instance  Oracle  revient  dans  le  premier  groupe.  En  version  10. Organisation du stockage  .  le  tablespace  traditionnel est maintenant. la base de données peut continuer  à fonctionner.

3- openmirrors.  © ENI Editions ..  q q q Un segment appartient à un tablespace et est constitué d’extensions (extents).  Lorsqu’un segment (table. une ou plusieurs extensions lui sont allouées.  Lorsque cette nouvelle extension est pleine.All rights reserved .    Dans Oracle Enterprise Manager.). index). index.  Lorsqu’une  instance  Oracle  lit  un  fichier  de  données. l’espace occupé  sera libéré ; si la transaction est annulée (ROLLBACK).Algeria Educ . une nouvelle extension est allouée ; cette extension est  située  dans  le  même  tablespace.  utilisés  en  interne  par  Oracle :  le  tablespace  d’annulation (pour les segments d’annulation) et le tablespace temporaire (pour les segments temporaires).  mais  pas  forcément  à  côté  de  la  première  (d’autres segments ont peut­être  été  créés  entre­temps). ensuite. qui se charge d’allouer de l’espace à ce segment dans l’un des fichiers de  données du tablespace. La notion de "bloc Oracle" est fondamentale ; nous allons la retrouver partout. nous serons  donc  amenés  à  créer  deux  autres  tablespaces  "techniques".  Les fichiers de données sont découpés en blocs d’une taille donnée (4 Ko. Tous les fichiers de données sont organisés en blocs Oracle et ont donc une taille  multiple  de  la  taille  du  bloc. Une extension est un ensemble de  blocs contigus dans un fichier de données.  Les segments temporaires et les segments d’annulation seront étudiés plus en détail dans les chapitres Gestion des  tablespaces et des fichiers de données et Gestion des informations d’annulation.  L’espace  occupé  par  un  objet  dans  un  tablespace  est  désigné  par  le  terme  générique  de segment.  Le  segment  d’annulation  est  une  structure  utilisée  par  Oracle  pour  stocker  temporairement  la  version  précédente  des données en cours de modification dans une transaction. etc. Lorsque ces premières extensions  sont pleines (suite à l’insertion de données par exemple). le processus se reproduit.com .  Il  y  a  quatre  types principaux de segments :  q les segments de table : espace occupé par les tables ;  les segments d’index : espace occupé par les index ;  les segments d’annulation : espace temporaire utilisé pour stocker les informations permettant d’annuler une  transaction ;  les segments temporaires : espace temporaire utilisé notamment lors d’un tri. Un bloc Oracle est la plus petite unité  d’entrée/sortie utilisée par Oracle.  ni  même  dans  le  même  fichier  de  données  (si  le  tablespace  a  plusieurs  fichiers  de  données). la version précédente des données sera remise à la place de la  nouvelle. Si la transaction est validée (COMMIT).  Lors de la création d’un segment.  elle  lit  les  blocs  Oracle  du  fichier  et  les  charge dans des blocs Oracle du cache de données.  Le  bloc  Oracle  est  aussi  l’unité  d’organisation  du  cache  de  données  (Database  Buffer  Cache)  dans  la  SGA. il est placé (explicitement par le créateur ou implicitement par Oracle)  dans un tablespace ; c’est Oracle. les extensions sont appelées "ensembles de blocs contigus".  En dehors des tablespaces destinés aux données proprement dites de notre application (tables..) est créé. 8 Ko.

  4.  . il existe des clauses qui permettent d’indiquer dans quel tablespace créer  le segment et de définir la taille initiale du segment. apparu en version 10.  Lors  de  l’utilisation d’un  système  de  fichiers.  q Cette  possibilité  d’utiliser  plusieurs  tailles  de  bloc  est  surtout  intéressante  pour  la  fonctionnalité  de  transport  de  tablespace.  Ces différents mécanismes seront revus dans le chapitre Gestion des tablespaces et des fichiers de données. trigger)  q q q q q Chaque utilisateur d’une base de données Oracle a un schéma potentiel. mais seuls les utilisateurs habilités pourront  effectivement créer des objets dans ce schéma.  il  est  conseillé  d’utiliser  plusieurs  disques.  aux  sauvegardes  et  aux  restaurations. Dans le cas de l’utilisation d’un système de fichiers. Cette limitation est  levée  depuis  Oracle9i  puisque  différents  tablespaces  d’une  même  base  de  données  peuvent  utiliser  des  tailles  de  bloc différentes : un tablespace ayant une taille de bloc de 4 Ko peut être transporté dans une base de données  utilisant des blocs de 8 ko. ASM utilise une instance spéciale (instance ASM). 16 Ko et  32 Ko (certaines plates­formes sont plus restrictives). beaucoup de nouvelles fonctionnalités apparues en version 10. sans système de fichier) ou à l’aide d’ASM (Automatic  Storage Management). il est possible d’utiliser plusieurs tailles de bloc dans la base de données :  q Une taille de bloc "standard" est définie par le paramètre d’initialisation DB_BLOCK_SIZE. car c’est la destination par défaut des sauvegardes. Système de stockage  Les  fichiers  de  données  d’une  base  de  données  Oracle  peuvent  être  stockés  dans  un  système  de  fichiers  (cas  classique). Notion de schéma  Le terme schéma désigne l’ensemble des objets qui appartiennent à un utilisateur.  Cela  permet  d’améliorer  les  performances en répartissant les entrées/sorties. Par ailleurs. fonction.All rights reserved . Ces différentes notions seront étudiées plus en détail dans le chapitre  Gestion des utilisateurs et de leurs droits. avec l’option TRANSPORT_TABLESPACES.  Pour  fonctionner.  Les principaux types d’objets sont les suivants :  q Table  Vue  Synonyme  Index  Séquence  Programme PL/SQL (procédure.  Les  autres  types  d’objet  n’ont  qu’une  définition  stockée  dans  le  dictionnaire de données Oracle. est en quelque sorte un gestionnaire de volumes spécialement conçu pour Oracle.Algeria Educ . Un des pré­requis pour l’utilisation de  cette fonctionnalité dans Oracle8i est que les deux bases doivent utiliser la même taille de bloc. package. qui va  chercher  à  exploiter  au  mieux  les  disques  qui  lui  sont  attribués  (répartition  des  entrées/sorties  notamment).  Depuis la version 9 d’Oracle.4- © ENI Editions . 4 Ko.  Cette  fonctionnalité.  5.  Sur les différents types d’objets présentés ci­dessus. seuls les tables et les index stockent des données et occupent  de  l’espace  de  stockage  dans  des  tablespaces. dans des raw device (directement dans des partitions. il est conseillé d’utiliser un disque séparé  des disques contenant les données.  permet  de  transporter  un  tablespace  d’une  base  de  données  source  vers  une  base  de  données  cible  et  de  le  rattacher  à  la  base  de  données  cible  ;  cette  opération  s’effectue grâce à l’utilitaire Data Pump. 8 Ko. et d’améliorer la sécurité en multiplexant les fichiers de contrôle et  les fichiers de journalisation.Dans l’ordre SQL de création du segment. relatives à la  sécurité  des  données.  sont  basées  sur  la  mise  en  place  d’une  zone  de  récupération  rapide  (flash  recovery  area).  ASM.  Jusqu’à 5 autres tailles de bloc peuvent être utilisées : les valeurs permises sont 2 Ko.  Cette  zone  de  récupération  rapide  peut  être  stockée  dans  un  système  de  fichiers ou à l’aide d’ASM.  apparue  dans  Oracle8i.

  propriétaire des tables EMP et DEPT).  Des  schémas  d’exemple  sont  fournis  par  Oracle. Règles de nommage  Un nom de structure Oracle (table. etc. mais Oracle sait s’y retrouver.  dont  le  fameux  (mais  réduit)  schéma  SCOTT  (mot  de  passe  TIGER. notamment pour le nom de la base de données  qui est limité à 8 caractères.) doit respecter les règles suivantes :  q contenir 30 caractères maximum ;  doit commencer par une lettre ;  peut contenir des lettres.  les  objets  des  différents  schémas  sont  mélangés. soit dans le dictionnaire de données Oracle. tablespace.5- . Des schémas d’exemple plus évolués sont décrits dans la documentation Oracle®  Database Sample Schemas.com © ENI Editions . soit dans les tablespaces. Ils peuvent être installés lors de la création d’une base de données ou ultérieurement.  6.  openmirrors. des chiffres et trois caractères spéciaux (_$#) ;  n’est pas sensible à la casse ;  ne doit pas être un mot réservé Oracle.La  notion  de  schéma  est  une  notion  purement  logique.All rights reserved .  Physiquement.Algeria Educ .  q q q q Il y a évidemment des exceptions à ces règles de nommage.

  © ENI Editions .... d’ensembles de blocs contigus (N) atteint dans table X.  ORA-01502: l’index ’xxx. RESIZE .  Action(s)  Reconstruisez l’index (ALTER INDEX … REBUILD). Ce problème ne peut pas se produire si le segment  est stocké dans un tablespace géré localement (nombre d’extensions illimité). ORA-01632: nbre max.  Cause(s)  Le segment (table ou index) n’arrive pas à s’étendre car le tablespace dans lequel il est stocké n’a pas suffisamment  d’espace disponible et ne peut pas s’étendre lui­même.. de N dans le tablespace Y ORA-01654: impossible d’étendre l’index X.  À  noter  que  cette  erreur  se  produit  uniquement  si  le  paramètre  SKIP_UNUSABLE_INDEXES  est  à  FALSE.1- . de N dans le tablespace Y Explication  Un segment (table ou index) n’arrive pas à s’étendre.  Action(s)  Il faut augmenter l’espace disponible dans le tablespace :  ­ soit en lui allouant un nouveau fichier de données (ALTER TABLESPACE . ADD DATAFILE ..  S’il  est  à  TRUE  (valeur par défaut)..Problèmes courants et solutions  ORA-01653: impossible d’étendre la table X.Algeria Educ .) ;  ­ soit en augmentant la taille d’un fichier de données du tablespace (ALTER DATABASE DATAFILE ..  Action(s)  Utilisez un tablespace géré localement et choisissez éventuellement une taille d’extension adaptée à la volumétrie du  segment. d’ensembles de blocs contigus (N) atteint dans index X.All rights reserved .  Cause(s)  La table a peut­être été reconstruite par un ALTER TABLE … MOVE.) ;  ­ soit en autorisant un fichier de données du tablespace à s’étendre automatiquement (ALTER DATABASE DATAFILE . Explication  Un segment (table ou index) n’arrive pas à s’étendre. l’optimiseur ne tente pas d’utiliser les index inutilisables et l’erreur ne se produit pas ; par contre. ce qui a rendu les index de la table inutilisables..). AUTO.  les performances risquent de se dégrader fortement (parcours complet de table)...EXTEND ON ..  ORA-01631: nbre max..  Cause(s)  Le segment (table ou index) n’arrive pas s’étendre car il est stocké dans un tablespace géré par le dictionnaire et il a  atteint son nombre maximum d’extensions défini par MAXEXTENTS.yyy’ ou sa partition est inutilisable Explication  Un index est inutilisable (UNUSABLE) et ne peut pas être utilisé pour exécuter une requête.

  openmirrors. c’est  qu’il y a un problème avec le segment temporaire nécessaire au tri (voir les problèmes courants et solution du  chapitre Gestion des tablespaces et des fichiers de données).All rights reserved .2- © ENI Editions .Si vous obtenez une erreur ORA-01630 ou ORA-01652 lors de la création ou de la reconstruction d’un index.Algeria Educ .com .

Principes 
1. Vue d’ensemble 
Assurer la sécurité des données est une des tâches principales de l’administrateur.  Cette sécurité est assurée par : 
q

la mise en œ uvre d’une protection des fichiers sensibles de la base : 
q

fichiers de contrôle ;  fichiers de journalisation. 

q

q

la mise en place d’une stratégie de sauvegarde/restauration : 
q

adaptée aux contraintes de l’entreprise ;  testée et documentée. 

q

La  protection  des  fichiers  de  contrôle  et  des  fichiers  de  journalisation  s’effectue  par  multiplexage  (voir  le  chapitre  Gestion des fichiers de contrôle et des fichiers de journalisation).  Les questions à se poser pour définir la stratégie sont les suivantes : 
q

Est­il acceptable de perdre des données ?  Est­il possible d’arrêter périodiquement la base ?  Est­il possible de réaliser une sauvegarde complète de la base pendant l’arrêt ? 

q

q

La réponse à la question "est­il acceptable de perdre des données ?" est rarement "oui". Si exceptionnellement, la  réponse est "oui", il faut déterminer jusqu’à quelle limite : 1 jour, 2 jours, 1 semaine ?  Il est également nécessaire de déterminer la nature de l’activité sur la base : 
q

Les données sont­elles mises à jour quotidiennement par les utilisateurs ? C’est typiquement le cas dans une  application transactionnelle.  Les  données  sont­elles  mises  à  jour  périodiquement  (toutes  les  nuits,  toutes  les  semaines)  et  simplement  consultées dans la journée ? C’est typiquement le cas avec une application décisionnelle. 

q

2. L’archivage des fichiers de journalisation 
Comme  nous  l’avons  déjà  vu,  les  fichiers  de  journalisation  constituent  un  journal  des  modifications  apportées  à  la  base. Ils sont organisés en groupes écrits de manière circulaire : les informations sauvegardées sont donc par défaut  périodiquement écrasées.  Ces fichiers de journalisation peuvent être réappliqués à une sauvegarde de fichier de données, pour rejouer toutes  les modifications survenues entre la sauvegarde et un incident ayant endommagé le fichier (restauration de média), à  condition  d’avoir  conservé  tous  les  fichiers  de  journalisation ; ceci  est  possible  en  faisant  fonctionner  la  base  de  données  en  mode  ARCHIVELOG.  Ce  mode  de  fonctionnement  permet  de  garantir  zéro  perte  de  données  en  cas  d’incident sur un fichier de données.  Le principe de récupération en mode ARCHIVELOG est le suivant : 

© ENI Editions - All rights reserved - Algeria Educ

- 1-

  À un instant T0, une sauvegarde d’un fichier de données est réalisée. Après T0, l’activité de mise à jour se poursuit,  générant des entrées dans les fichiers de journalisation. L’archivage étant activé, les fichiers de journalisation pleins  sont archivés.  À  l’instant  T1,  un  incident  se  produit  et  le  fichier  de  données  est  perdu.  La  récupération  du  fichier  de  données  consiste  à  prendre  la  dernière  sauvegarde  du  fichier  (qui  ne  contient  évidemment  pas  les  modifications  effectuées  depuis) et à appliquer sur cette sauvegarde les fichiers de journalisation archivés (qui eux, contiennent la trace des  modifications  apportées  depuis  la  dernière  sauvegarde),  afin  de  ramener  le  fichier  de  données  dans  l’état  où  il  se  trouvait juste avant l’incident (pour être plus précis, dans l’état de la dernière transaction validée). 

3. Solutions de sauvegarde et récupération 
Pour effectuer des sauvegardes et des récupérations, vous avez deux possibilités : 
q

utiliser l’outil Recovery Manager (RMAN) fourni par Oracle : c’est la méthode recommandée ;  procéder "à la main" avec des commandes du système d’exploitation et des scripts SQL. 

q

RMAN est un outil ligne de commande qui facilite grandement les opérations de sauvegarde et de récupération, en  limitant notamment les risques de fausse manoeuvre. RMAN peut être utilisé à travers une interface graphique dans  le  Database  Control.  Toutes  les  opérations  de  sauvegarde  et  de  récupération  présentées  dans  cet  ouvrage  sont  basées sur l’utilisation du Recovery Manager. 

4. Stratégies de sauvegarde disponibles 
Une sauvegarde peut être cohérente ou incohérente.  Une  sauvegarde cohérente  est  une  sauvegarde  de  la  totalité  de  la  base  de  données  après  un arrêt  propre  de  la  base de données (pas après un SHUTDOWN ABORT ou un arrêt anormal de l’instance) ; ce type de sauvegarde est aussi  souvent appelé "sauvegarde base fermée". Après un arrêt propre de la base de données, toutes les modifications  ont été écrites dans les fichiers de données qui sont bien synchrones. Une base de données restaurée à partir d’une  sauvegarde cohérente peut être ouverte immédiatement : il est inutile d’appliquer les fichiers de journalisation. C’est  le seul mode de sauvegarde disponible lorsque la base de données fonctionne en mode NOARCHIVELOG.  Une sauvegardeincohérente est une sauvegarde effectuée alors que la base de données est ouverte et que l’activité  de  mise  à  jour  se  poursuit  pendant  la  sauvegarde ; ce  type  de  sauvegarde  est  aussi  souvent  appelé  "sauvegarde  base  ouverte".  Les  fichiers  sauvegardés  ne  sont  pas  synchrones  du  point  de  vue  des  modifications  enregistrées.  Lorsqu’une  base  de  données  est  restaurée  à  partir  d’une  sauvegarde  incohérente,  il  faut  appliquer  les  fichiers  de  journalisation  pour  rendre  les  fichiers  cohérents.  Les  sauvegardes  incohérentes  ne  sont  possibles  que  lorsque  la  base de données fonctionne en mode ARCHIVELOG.  Une sauvegarde peut être complète, partielle ou incrémentale. Une sauvegarde complète est une sauvegarde de  la totalité de la base de données. Une sauvegarde partielle est une sauvegarde incluant uniquement une partie de 

openmirrors.com

- 2-

© ENI Editions - All rights reserved - Algeria Educ

la  base  de  données.  Les  sauvegardes  partielles  sont  forcément  incohérentes  entre  elles.  Pour  qu’elles  soient  exploitables en restauration (ce qui est normalement l’objectif), il faut que la base de données fonctionne en mode  ARCHIVELOG.  Une  sauvegarde  incrémentale  est  une  sauvegarde  qui  ne  contient  que  les  blocs  modifiés  depuis  la  dernière sauvegarde ; une sauvegarde incrémentale peut être complète ou partielle.  Une sauvegarde cohérente complète nécessite de pouvoir arrêter la base de données et la sauvegarder en totalité  pendant l’arrêt. 

5. Quelle stratégie pour le mode de fonctionnement de la base ? 
Le tableau suivant résume les possiblités :  Pertes de données acceptables  Oui  Sauvegarde base  fermée possible  Oui  ARCHIVELOG NOARCHIVELOG  ARCHIVELOG  Non  ARCHIVELOG 

Non 

ARCHIVELOG 

Le mode ARCHIVELOG est obligatoire si au moins une des contraintes suivantes existe : 
q

Aucune perte de donnée n’est autorisée.  La base de données ne peut pas être fermée pour être sauvegardée. 

q

Le mode NOARCHIVELOG est possible si : 
q

Des pertes de données sont acceptables.  La base de données peut être fermée pour être sauvegardée. 

q

Un autre avantage du mode ARCHIVELOG est que la base de données peut rester ouverte lorsqu’un incident survient  sur un fichier de données qui n’appartient ni au tablespace SYSTEM, ni au tablespace UNDO actif. 

6. Quelle stratégie pour la sauvegarde ? 
La première règle est de réaliser des sauvegardes fréquentes (au minimum tous les jours) et de conserver plusieurs  cycles de sauvegarde (en cas de problème avec une sauvegarde).  Si la base de données fonctionne en mode ARCHIVELOG, vous pouvez réaliser des sauvegardes bases ouvertes ; il n’y  a pas de raison de s’en priver.  Si la durée de sauvegarde et la taille des sauvegardes ne posent pas de problème (même en conservant plusieurs  sauvegardes), vous pouvez réaliser systématiquement (tous les jours) des sauvegardes complètes.  Si  la  durée  de  sauvegarde  et/ou  la  taille  des  sauvegardes  posent  un  problème,  vous  pouvez  réaliser  des  sauvegardes  incrémentales  et/ou  des  sauvegardes  partielles.  Dans  le  cas  de  sauvegardes  partielles,  vous  devez  simplement  être  très  rigoureux  dans  le  suivi  et  veiller  à  tout  sauvegarder  sur  un  cycle  complet  de  sauvegardes  partielles.  Il  est  important  de  réaliser  des  sauvegardes  très  fréquemment  pour  pouvoir  procéder  à  une  restauration  en  un  temps  raisonnable : partir  d’une  sauvegarde  datant  d’un  mois  et  réappliquer  tous  les  fichiers  de  journalisation  archivés depuis un mois risque de se révéler très long si la base de données est activement mise à jour. 

© ENI Editions - All rights reserved - Algeria Educ

- 3-

Archivage des fichiers de journalisation 
1. Vue d’ensemble 
Activer  l’archivage  des  fichiers  de  journalisation  s’effectue  en  mettant  la  base  de  données  dans  le  modeARCHIVELOG : ce mode permet de garantir qu’un  groupe  de  fichiers  de  journalisation  ne  sera  pas  réutilisé  tant  qu’il n’a pas été archivé.  Depuis  la  version  10,  placer  la  base  de  données  en  mode  ARCHIVELOG  démarre  automatiquement  deux  processus  d’archivage (ARC0 et ARC1) lors de l’ouverture de la base de données ; dans les versions précédentes, il fallait le faire  explicitement.  Par  contre,  il  est  toujours  opportun,  même  en  version  10,  de  positionner  certains  paramètres  d’initialisation qui concernent les processus d’archivage.  La  base  de  données  peut  être  créée  d’entrée  de  jeu  en  mode ARCHIVELOG.  Généralement,  la  base  de  données  est  créée en mode NOARCHIVELOG puis passée en ARCHIVELOG. Archiver les fichiers de journalisation générés par la création  de la base de données présente un faible intérêt (mais un volume d’archives important). 

2. Mode opératoire 
Le mode opératoire est le suivant : 
q

Modifier  dans  le  fichier  de  paramètres  serveur  les  paramètres  d’initialisation  qui  concernent  les  processus  d’archivage  ALTER SYSTEM SET log_archive_format=’redo_%S_%R_%T.arc’ SCOPE=SPFILE; ALTER SYSTEM SET log_archive_dest_1=’LOCATION=h:\oradata\arch\HERMES’ SCOPE=SPFILE; Arrêter proprement la base de données (pas ABORT) 

SQL> 2 3 SQL> 2 3
q

SQL> SHUTDOWN IMMEDIATE
q

Monter la base de données 

SQL> STARTUP MOUNT
q

Passer la base de données en mode ARCHIVELOG 

SQL> ALTER DATABASE ARCHIVELOG;
q

Sauvegarder  la  base  de  données  (permet  une  sauvegarde  T0  du  nouveau  mode  de  fonctionnement  de  la  base de données)  Ouvrir la base de données 

q

SQL> ALTER DATABASE OPEN;

Le  mode  ARCHIVELOG/NOARCHIVELOG  est  une  propriété  de  la  base  qui  se  modifie  par  l’ordre  SQL  ALTER DATABASE.  Ce  mode  de  fonctionnement  est  mémorisé  dans  le  fichier  de  contrôle  de  la  base  de  données ; il  n’est pas nécessaire de le repréciser à chaque démarrage.  L’ordre SQL ALTER DATABASE NOARCHIVELOGpermet, au besoin, de repasser en mode NOARCHIVELOG. 

3. Les paramètres du processus d’archivage 
© ENI Editions - All rights reserved - Algeria Educ - 1-

openmirrors.com

LOG_ARCHIVE_FORMAT Ce paramètre définit le format souhaité pour le nom des archives.  Le format doit inclure les variables suivantes :  %s ou %S  Numéro de séquence du fichier de journalisation.  %t ou %T  Numéro d’instance (thread).  %r ou %R  Identifiant de remise à zéro des fichiers de journalisation (voir la section Récupération).  Lorsque le nom de la variable est en majuscules, le nombre est complété à gauche par des 0.  Exemple :  LOG_ARCHIVE_FORMAT = "redo_%S_%R_%T.arc" LOG_ARCHIVE_DEST et LOG_ARCHIVE_DUPLEX_DEST Le  paramètre  LOG_ARCHIVE_DEST  définit  une  première  destination  de  l’archivage  et  le  paramètre  LOG_ARCHIVE_DUPLEX_DEST  une  deuxième  destination  d’archivage  (dupliquée).  Ces  paramètres  sont  utilisables  en  Standard Edition.  Syntaxe  LOG_ARCHIVE_[DUPLEX_]DEST = "chemin_local" Exemple :  LOG_ARCHIVE_DEST = "h:\oradata\arch\HERMES" LOG_ARCHIVE_DEST_n (n de 1 à 10) Ces  paramètres  définissent  jusqu’à  10  destinations  parallèles  d’archivage.  Ils  sont  utilisables  uniquement  en  Enterprise Edition.  Syntaxe simplifiée pour une destination locale (au moins une obligatoire)  LOG_ARCHIVE_DEST_n = "LOCATION=chemin_local" Exemple :  LOG_ARCHIVE_DEST_1 = "LOCATION=h:\oradata\arch\HERMES" Les  paramètres  LOG_ARCHIVE_DEST_n  permettent  de  spécifier  plusieurs  destinations  parallèles  pour  les  archives ; parmi les destinations, une au moins doit être locale. En dehors d’une destination disque ou bande, il est  possible de désigner une base de secours comme cible (configuration Data Guard) ; cette technique avancée permet  d’avoir une base de données sur un deuxième serveur vers laquelle il est possible de basculer en cas de problème  sur  la  base  de  données  source : la  base  de  données  de  secours  est  mise  à  jour  par  transfert  et  application  des  fichiers de journalisation archivés.  Dans  la  spécification  de  la  destination,  il  ne  faut  pas  mettre  d’espace  autour  du  signe  =   dans  la  clause  LOCATION.  D’autres  paramètres  permettent  de  piloter  le  fonctionnement  des  destinations  multiples  (destinations  obligatoires,  facultatives, nombre minimum de destinations réussies, etc.).  Remarques sur les destinations d’archivage

- 2-

© ENI Editions - All rights reserved - Algeria Educ

L’archivage  direct  sur  bande  pouvant  être  long  (et  bloquer  >LGWR  si  l’archivage d’un  fichier  de  journalisation  n’est  pas  terminé),  une  technique  classique  consiste  à  archiver  sur  disque,  au  niveau  d’Oracle,  puis  à  transférer  les  archives sur bande au niveau du système d’exploitation (par un processus non Oracle à mettre en place).  Les répertoires de destination ne sont pas créés par Oracle ; c’est à vous de le faire.  Si  aucune  destination  d’archivage  n’est  définie,  mais  qu’une  zone  de  récupération  rapide  soit  spécifiée  (paramètre  DB_RECOVERY_FILE_DEST), la zone de récupération rapide est utilisée comme destination d’archivage.  ARCHIVE_LAG_TARGET Ce paramètre permet de définir une durée maximale en secondes entre deux archivages.  Une valeur nulle désactive la fonctionnalité (valeur par défaut). Les valeurs autorisées sont comprises entre 60 (une  minute) et 7 200 (2 heures). Ce paramètre permet de forcer l’archivage de façon périodique et donc de garantir une  périodicité d’archivage stable, indépendante de la fréquence de basculement des fichiers de journalisation qui peut  varier en fonction du moment de la journée.  Exemple :  ARCHIVE_LAG_TARGET = 1800 # 30 minutes S’il n’y a rien à archiver, Oracle ne génère pas d’archive.  À l’origine, ce paramètre est destiné au fonctionnement de l’instance dans une configuration Data Guard. Dans cette  configuration,  le  paramètre  ARCHIVE_LAG_TARGET  détermine  la  durée  maximale  d’informations  de  journalisation  qui  seraient perdues (non transférées sur la base de données de secours) en cas de plantage de la base de données  principale.  Le  paramètre  fonctionne  même  si  la  configuration  Data  Guard  n’est  pas  utilisée,  et  même  s’il  n’y  a  pas  archivage ; dans ce dernier cas, le paramètre conditionne la fréquence de basculement des fichiers de journalisation. 

4. Trouver des informations sur l’archivage 
Dans SQL*Plus, vous pouvez utiliser la commande  ARCHIVE LOG LIST(dans une connexion  SYSDBA) pour obtenir des  informations sur l’archivage ;  SQL> CONNECT / AS SYSDBA Connecté. SQL> ARCHIVE LOG LIST mode Database log mode Archive Archivage automatique Activé Destination de l’archive h:\oradata\arch\HERMES Séquence de journal en ligne la plus ancienne 19 Séquence de journal suivante à archiver 21 Séquence de journal courante 21 Plusieurs vues du dictionnaire de données permettent d’obtenir des informations sur l’archivage : 
q

V$DATABASE : mode de fonctionnement de la base de données (colonne LOG_MODE) ;>  V$LOG : statut des groupes vis­à­vis de l’archivage (colonne ARCHIVED) ;<  V$ARCHIVED_LOG : informations sur les fichiers de journalisation archivés ;  V$ARCHIVE_DEST : informations sur les destinations d’archivage. 

q

q

q

Les colonnes intéressantes de la vue V$ARCHIVED_LOG sont les suivantes :  RECID  Identifiant de l’enregistrement.  NAME  Chemin complet de l’archive. 

openmirrors.com

© ENI Editions - All rights reserved - Algeria Educ

- 3-

SEQUENCE#  Numéro de séquence du fichier de journalisation correspondant.  FIRST_CHANGE#  Plus petit numéro SCN écrit dans l’archive.  FIRST_TIME  Date et heure du plus petit numéro SCN.  NEXT_CHANGE#  Plus grand numéro SCN écrit dans l’archive.  NEXT_TIME  Date et heure du plus grand numéro SCN.  COMPLETION_TIME  Date et heure de l’archivage.  Les colonnes intéressantes de la vue V$ARCHIVE_DEST sont les suivantes :  DEST_NAME  Nom de la destination.  DESTINATION  Chemin de la destination.  STATUS  Statut de la destination (VALID, ERROR, etc.).  ERROR  Message d’erreur (en cas d’erreur).  Exemple :  SQL> SELECT log_mode FROM v$database; LOG_MODE -----------ARCHIVELOG SQL> SELECT group#,sequence#,status,archived 2 FROM v$log; GROUP# SEQUENCE# STATUS ARC ---------- ---------- ---------------- --1 25 INACTIVE YES 2 26 CURRENT NO 3 24 INACTIVE YES SQL> SELECT sequence#,name FROM v$archived_log; SEQUENCE# NAME ---------- ---------------------------------------------------20 H:\ORADATA\ARCH\HERMES\REDO_00020_0545650779_001.ARC ... SQL> SELECT destination,status,error FROM v$archive_dest 2 WHERE dest_name=’LOG_ARCHIVE_DEST_1’;

- 4-

© ENI Editions - All rights reserved - Algeria Educ

DESTINATION --------------------------------------------------------STATUS ERROR --------- ----------------------------------------------h:\oradata\arch\HERMES ERROR ORA-19504: échec de création du fichier ""

5. Problème courant et solution 
L’archivage peut être bloqué lorsqu’il y a un problème avec la destination d’archivage : 
q

plus d’espace disponible ;  destination inaccessible. 

q

Cela peut conduire à un blocage de LGWR si tous les fichiers de journalisation en ligne ont besoin d’être archivés.  Une telle situation est détectable grâce à la vue V$ARCHIVE_DEST (colonne STATUS) ou par des messages dans le fichier  des alertes de l’instance :  Sun Aug 3 12:43:25 2008 Errors in file d:\oracle\admin\hermes\bdump\hermes_arc1_1504.trc: ORA-19504: échec de création du fichier "H:\ORADATA\ARCH\HERMES\ REDO_00029_0545650779_001.ARC" ORA-27044: impossible d’écrire le bloc d’en-tête du fichier OSD-04008: échec de Writefile() ; écriture impossible dans le fichier O/S-Error: (OS 112) Espace insuffisant sur le disque. Pour débloquer la situation, il suffit de résoudre le problème qui existe sur la destination d’archivage, par exemple en  déplaçant des archives vers une autre destination afin de libérer de l’espace.  Si vous ne pouvez pas résoudre le problème avec la destination d’archivage, modifiez temporairement la destination  d’archivage :  ALTER SYSTEM SET log_archive_dest_1=’LOCATION=d:\temp’ SCOPE=MEMORY; Il peut être nécessaire ensuite d’exécuter  l’ordre SQL  ALTER SYSTEM ARCHIVE LOG START  pour  relancer  le  processus  d’archivage. 

openmirrors.com

© ENI Editions - All rights reserved - Algeria Educ

- 5-

Présentation du Recovery Manager 
1. Introduction 
RMAN est un outil ligne de commande qui permet de réaliser des sauvegardes et des récupérations d’une  base  de  données appelée base de données cible (target database).  RMAN utilise un référentiel (repository) pour stocker des informations sur sa configuration, les sauvegardes réalisées,  la structure de la base cible, les fichiers de journalisation archivés, etc.  Ce  référentiel  est  toujours  stocké  dans  le  fichier  de  contrôle  de  la  base  cible.  La  durée  de  conservation  des  informations  dans  le  fichier  de  contrôle  est  déterminée  par  le  paramètre  d’initialisation  CONTROL_FILE_RECORD_KEEP_TIME (7 jours par défaut).  Le référentiel peut aussi être stocké dans un catalogue de récupération  (recovery catalog) qui se matérialise par un  schéma  dans  une  autre  base  de  données.  Un  seul  catalogue  de  récupération  peut  être  utilisé  pour  centraliser  les  référentiels  RMAN  de  plusieurs  bases  de  données  cibles.  Employer  un  catalogue  de  récupération  séparé  est  intéressant car les informations de sauvegarde sont préservées si tous les fichiers de contrôle de la base cible sont  perdus.  Les  fichiers  de  contrôle  sont  donc  encore  plus  importants  lorsque  vous  utilisez  RMAN  sans  catalogue  de  récupération. Si vous perdez tous les fichiers de contrôle de la base cible, RMAN n’a plus d’informations sur  les  sauvegardes  disponibles.  Si  vous  repartez  d’une  sauvegarde  de  fichier  de  contrôle,  RMAN  n’aura  pas  d’informations sur les sauvegardes réalisées après la sauvegarde du fichier de contrôle. Si vous n’utilisez pas de  catalogue  de  récupération,  vous  avez  également  intérêt  à  augmenter  la  valeur  du  paramètre  CONTROL_FILE_RECORD_KEEP_TIME (au moins 10 à 15 jours).  Si  vous  définissez  une  zone  de  récupération  rapide  (flash  recovery  area),  à  l’aide  des  paramètres  DB_RECOVERY_FILE_DEST et DB_RECOVERY_FILE_DEST_SIZE, vous pouvez bénéficier des fonctionnalités de sauvegarde et  de restauration automatiques sur disque proposées par RMAN. En complément, vous pouvez définir une politique de  conservation  (retention  policy)  indiquant  combien  de  temps  une  sauvegarde  doit  être  conservée.  RMAN  se  charge  alors de gérer l’espace de la zone de récupération rapide en supprimant, si nécessaire, les sauvegardes obsolètes ou  les sauvegardes recopiées sur bande.  Pour  chaque  opération  de  sauvegarde,  copie,  restauration,  RMAN  utilise  un  canal  (channel).  Un  canal  est  une  connexion  entre  le  client  RMAN  et  un  processus  serveur  de  la  base  de  données  cible  qui  accède  à  un  périphérique  (disque ou bande).  Une  sauvegarde  RMAN  peut  se  faire  sous  la  forme  d’une  copie  image  (image  copy)  ou  d’un  jeu  de  sauvegarde  (backup  set).  Une  copie  image  est  une  copie  à  l’identique  du  fichier  (analogue  à  une  copie  par  une  commande  du  système d’exploitation). Un jeu de sauvegarde contient un ou plusieurs fichiers sauvegardés. Un jeu de sauvegarde  comprend  un  ou  plusieurs  fichiers ; chaque  fichier  d’un  jeu  est  appelé  élément  de  sauvegarde  (backup  piece).  Par  défaut, un jeu de sauvegarde comprend un seul élément de sauvegarde, mais il est possible de limiter la taille de ces  éléments ; dans ce cas, un jeu de sauvegarde peut contenir plusieurs éléments de sauvegarde si la taille totale de la  sauvegarde est supérieure à la limite. Le jeu de sauvegarde a un format propriétaire RMAN.  Pour réaliser des sauvegardes sur bande, RMAN s’interface avec un logiciel de gestion de média fourni par le vendeur  du système de sauvegarde.  RMAN offre un très grand nombre de fonctionnalités et d’options et peut être utilisé de différentes manières. Dans cet  ouvrage,  nous  présenterons  les  fonctionnalités  de  base  de  RMAN,  nécessaires  et  suffisantes  pour  mettre  en  place  des  stratégies  de  sauvegarde/récupération  simples,  adaptées  à  un  grand  nombre  de  cas.  Nous  supposerons  notamment  qu’une  zone  de  récupération  rapide  a  été  définie,  ce  qui  permet  de  simplifier  un  grand  nombre  d’opérations, et qu’aucun catalogue de récupération séparé n’a été mis en place.  Les fonctionnalités de base de RMAN sont décrites dans la documentation  Oracle® Database Backup and Recovery  User’s Guide. 

2. Lancer RMAN 
Pour lancer RMAN, il suffit d’exécuter la commande rman à l’invite du système d’exploitation.  Syntaxe  rman [liste_options] Les options suivantes peuvent être utilisées :   
© ENI Editions - All rights reserved - Algeria Educ - 1-

]  Définit  une  ou  plusieurs  valeurs  pour  des  variables  de  substitution  qui  peuvent  être  utilisées  dans  un  fichier  de  commandes RMAN.  CMDFILE [=] fichier  Chemin vers un fichier contenant des commandes RMAN à exécuter.6...Algeria Educ .  TWO_TASK)..1.TARGET [=] connexion  Chaîne de connexion à la base de données cible. n étant un entier. connecté à la base de données cible : H E R M E S ( D B I D = 3 5 3 5 8 9 2 6 4 7 ) q Lancer  RMAN  en  se  connectant  à  la  base  cible  (utilisation  d’un  nom  de  service  réseau  et  authentification  SYSDBA par un fichier de mot de passe)  > rman target sys/wX#12@hermes .  Exemple :  q Lancer RMAN sans se connecter  > rman Recovery Manager: Release 11.2- © ENI Editions . RMAN> q Lancer  RMAN  en  se  connectant  à  la  base  cible  (utilisation  des  variables  d’environnement  et  authentification  SYSDBA par le système d’exploitation)  > rman target / Recovery Manager: Release 11. Par ailleurs. Oracle.Production on Lun.0 .  APPEND  Indique que le fichier journal doit être ouvert en mode ajout. Août 4 07:48:22 2008 Copyright (c) 1982.log append . Oracle. Dans le fichier de commande RMAN.  USING valeur [.. All rights reserved. Août 4 07:37:14 2008 Copyright (c) 1982.1.  utilisation  d’un  nom  de  service  réseau.6.. 2007.0.  LOCAL.0. les variables de substitution sont définies par la syntaxe &n  (éventuellement suivi d’un point). All rights reserved.. la connexion à la base cible s’effectue implicitement AS SYSDBA.rcv log=backup. RMAN est lancé en mode interactif ; il affiche une invite et vous pouvez saisir  openmirrors.com .  CATALOG [=] connexion  Chaîne de connexion à la base de données du catalogue de récupération. q Lancer RMAN et exécuter un fichier de commande (qui effectue la connexion)  > rman cmdfile=backup.Production on Lun.  Les  principes  de  connexion  à  la  base  cible  sont  les  mêmes  qu’avec  SQL*Plus : utilisation  par  défaut  des  variables  d’environnement  (ORACLE_SID.All rights reserved .  Les  variables d’environnement  comme NLS_DATE_FORMATetNLS_LANG  influent  aussi  sur  le  format  des  dates  et  la  langue  des messages affichés par RMAN.  LOG [=] fichier  Chemin vers un fichier journal de l’activité RMAN.  etc.0 . Si vous n’utilisez  pas  l’option CMDFILE. 2007.

SQL "requête" .  Chaque base de données possède un identifiant unique appelé DBID.  SPOOL LOG TO fichier [APPEND]  Écrit la sortie RMAN dans un fichier. Avec l’option CMDFILE. RMAN est lancé en mode batch ; il exécute les commandes contenues dans le  fichier de commande puis quitte.  SET ECHO ON | OFF  Active ou désactive l’écho des commandes.des commandes.  CONNECT TARGET connexion  Établit une connexion à la base de données cible.  SPOOL LOG OFF  Arrête l’écriture de la sortie RMAN dans un fichier.  Les commandes suivantes peuvent être utilisées dans RMAN :  @fichier  Exécute un fichier de commande.  ALTER DATABASE MOUNT | OPEN .  Vous  avez  intérêt  à  noter  ce  DBID  quelque  part.3- .Algeria Educ .  Les  commandes RMAN sont saisies indifféremment en majuscules ou en minuscules.  les  autres  non.  Exécute  une  commande  du  système  d’exploitation  ou  ouvre  une  session  du  système  d’exploitation  (si  aucune  commande n’est spécifiée).  © ENI Editions .  il  peut  en  effet  se  révéler utile pour certaines opérations.  Les  commandes  RMAN  nécessitant  un  point­virgule  peuvent  être  saisies  sur  plusieurs  lignes.  Monte ou ouvre une base de données.  d’autres  non  (point­virgule  optionnel).All rights reserved .  SHUTDOWN [option]  Arrête la base de données ; les options sont les mêmes que dans SQL*Plus.  CONNECT CATALOG connexion  Établit une connexion à la base de données du catalogue. Le DBID de la base cible est affiché par  RMAN  lorsque  vous  vous  connectez. HOST ["commande"] .  @@fichier  Exécute un fichier de commande dans le même répertoire que le fichier de commande actuel.  SQL ’requête’ .  STARTUP [option]  Démarre la base de données ; les options sont les mêmes que dans SQL*Plus. Quelques commandes utiles  Certaines  commandes  RMAN  doivent  se  terminer  par  un  point­virgule.  HOST [’commande’] .  3.

Exécute une requête SQL sur la base de données cible. # default CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ’%F’.com . # default CONFIGURE MAXSETSIZE TO UNLIMITED. # default CONFIGURE BACKUP OPTIMIZATION OFF. il est possible de grouper des commandes RMAN dans un bloc délimité par des accolades et d’exécuter ce  bloc avec la commande RUN :  RUN { .  Par  ailleurs. SPOOL LOG OFF SET ECHO OFF Si  vous  souhaitez  placer  un  commentaire  en  fin  de  ligne. # default Le commentaire # default indique que le paramètre est égal à sa valeur par défaut. SET)  exécutées  à  l’intérieur d’un  bloc  ont  une  portée  limitée  au  bloc. # default CONFIGURE DEFAULT DEVICE TYPE TO DISK. # default CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET. utilisation du fichier de contrôle de la base de données cible au lieu du catalogue de récupération les paramètres de configuration RMAN de la base de données ayant le db_unique_name HERMES sont les suivants : CONFIGURE RETENTION POLICY TO REDUNDANCY 1. l’exécution du bloc s’arrête.  Exemple :  RMAN> SHOW ALL ..  vous  devez  terminer  la  commande  par  un  point­virgule  (même si le point­virgule est optionnel pour la commande).4- © ENI Editions . elles doivent être doublées.  Par ailleurs.  Certaines commandes RMAN doivent être exécutées à l’intérieur d’un bloc (ALLOCATE CHANNEL par exemple) ; d’autres  ne peuvent pas être exécutées dans un bloc (SPOOL par exemple).  La configuration actuelle peut être visualisée en exécutant la commande SHOW ALL. si une commande du bloc échoue. # default CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1. # default CONFIGURE CONTROLFILE AUTOBACKUP OFF. # default CONFIGURE ENCRYPTION ALGORITHM ’AES128’. Configurer RMAN  RMAN dispose de plusieurs réglages persistants utilisés par défaut lors des différentes opérations.1.Algeria Educ . # default CONFIGURE ENCRYPTION FOR DATABASE OFF.0\DB_1\ DATABASE\SNCFHERMES.log SET ECHO ON CONNECT TARGET / SHUTDOW MOUNT SQL "ALTER DATABASE ARCHIVELOG".  openmirrors. # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE.  EXIT ou QUIT  Quitte RMAN. # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO ’D:\APP\ORACLE\PRODUCT\11.ORA’. ALTER DATABASE OPEN.. # default CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1.  4. La requête ne doit pas se terminer par un point­virgule ; si  elle contient des apostrophes.  Exemple de script RMAN:  # ceci est un commentaire SPOOL LOG TO d:\rman.All rights reserved . } Certaines  commandes  (ALLOCATE CHANNEL. # default CONFIGURE COMPRESSION ALGORITHM ’BZIP2’.

La clause options peut prendre une ou plusieurs valeurs dont :  FORMAT ’format’ Chemin et format de nom de fichier pour la sauvegarde.  %d  Nom de la base de données.  MAXPIECESIZE taille [K|M|G] Taille maximale des éléments de sauvegarde. Si cette dernière n’est pas définie.La commande  CONFIGURE  permet  de  modifier  les  réglages  persistants ; la  commande  SHOW ALL  montre  la  valeur  des  réglages en utilisant la syntaxe de la commande CONFIGURE.  %N  Nom du tablespace. Dans cet exemple.  le  périphérique  utilisé  est  le  disque  (paramètre  DEFAULT DEVICE TYPE).5- .  %h  Numéro d’activation de la base de données.  Les principaux réglages sont les suivants :  Configurer les canaux et les périphériques Par  défaut. vous pouvez utiliser la commande suivante :  CONFIGURE CHANNEL DEVICE TYPE DISK options .All rights reserved .  Si vous souhaitez configurer la destination de sauvegarde. Aucune limite par défaut. le jeu de sauvegarde contiendra plusieurs éléments de sauvegarde. Si la taille de la sauvegarde est supérieure  à 2 Go.  L’option format comprend un chemin et un format de fichier.  %f  Numéro de fichier de données.    © ENI Editions .  Exemple :  CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ’h:\backup\%U’ MAXPIECESIZE 2G .  la  destination  par  défaut  des  sauvegardes étant la zone de récupération rapide.Algeria Educ . la taille des éléments de sauvegarde est limitée à 2 Go.  %I  Identifiant de la base de données (DBID). RMAN utilise une destination  par défaut qui dépend de la plate­forme. Le format de fichier utilise généralement une ou plusieurs  des variables suivantes :  %U  Nom de fichier unique dont la composition dépend de la nature de la sauvegarde :  ­ %u_%p_%c pour un élément de sauvegarde ;  ­ data-D-%d_id-%I_TS-%N_FNO-%f_%u pour une copie image d’un fichier de données ;  ­ arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u pour une copie image d’un fichier de journalisation archivé ;  ­ cf-D_%d-id-%I_%u pour une copie image du fichier de contrôle.

  %s  Numéro du jeu de sauvegarde (backup set).  Pour revenir à la configuration par défaut. utilisez une des commandes suivantes :  q Fenêtre de restauration  CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS . q Redondance  CONFIGURE RETENTION POLICY TO REDUNDANCY n .  Pour définir la politique de conservation.  %c  Numéro  de  copie  de  l’élément  de  sauvegarde  (cas  d’une  sauvegarde  multiplexée). vous pouvez utiliser  la commande suivante :  CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 4G .%e  Numéro de séquence du fichier de journalisation archivé. Configurer la politique de conservation La politique de conservation peut être définie en termes de fenêtre de restauration ou de redondance. Lorsque la zone de récupération rapide est utilisée. assurez­vous que le nom de fichier généré est unique.6- © ENI Editions .  une  option  non  spécifiée  est  remise  à  sa  valeur  par  défaut ; la valeur précédente n’est pas conservée.Algeria Educ .  Une  fenêtre  de  restauration  indique  jusqu’à  combien  de  jours  dans  le  passé  vous  souhaitez  pouvoir  revenir. en remettant le format par défaut.  Pour modifier la taille maximale des éléments de sauvegarde. RMAN supprime automatiquement les sauvegardes obsolètes (s’il  a  besoin  de  place).All rights reserved .  en  s’appuyant  sur  la  politique  de  conservation  par  défaut  et  sur  la  taille  allouée  à  la  zone  de  récupération rapide (paramètre DB_RECOVERY_FILE_DEST_SIZE).  Dans  la  commande  CONFIGURE CHANNEL DEVICE TYPE DISK.  Une  redondance indique combien de sauvegardes de chaque fichier doivent être conservées ; c’est la politique par défaut  (avec une redondance de 1).  %u  Chaîne unique de 8 caractères basée sur le numéro du jeu de sauvegarde ou de la copie image et de la date/heure  de la sauvegarde/copie.  %p  Numéro de l’élément de sauvegarde (backup piece) à l’intérieur d’un jeu de sauvegarde.  1  si  la  sauvegarde  n’est  pas  multiplexée.  Si vous utilisez des formats personnalisés.  %h  Numéro d’instance (thread) du fichier de journalisation archivé. vous pouvez employer la commande suivante :  CONFIGURE CHANNEL DEVICE TYPE DISK CLEAR . sous peine  d’écraser d’autres sauvegardes. Pour revenir à la configuration par défaut.com . vous pouvez utiliser la commande suivante :  openmirrors.

  les  fichiers  de  journalisation  archivés  si  aucune  destination  d’archivage  n’est définie). Utilisation de la zone de récupération rapide  Oracle  conseille  vivement  d’utiliser  une  zone  de  récupération  rapide  pour  bénéficier  d’un  certain  nombre  de  fonctionnalités automatiques relatives aux opérations de sauvegarde et de récupération.  Activer la sauvegarde automatique du fichier de contrôle est vivement conseillé. Configurer la sauvegarde automatique du fichier de contrôle La sauvegarde automatique du fichier de contrôle peut être activée grâce à la commande suivante :  CONFIGURE CONTROLFILE AUTOBACKUP ON .All rights reserved .  avec des formats de nom de fichiers spécifiques.  Les  fichiers  générés  par  Orale  dans  la  zone  de  récupération  rapide  sont  stockés  dans  différents  sous­répertoires.  par  défaut.  Les différents répertoires sont définis sous la forme suivante :  q <DB_UNIQUE_NAME>/<type>[/<date>] (Unix/Linux) ;  <DB_UNIQUE_NAME>\<TYPE>[\<date>] (Windows).  ces  deux  fichiers  sont  automatiquement  sauvegardés  à  chaque  fois  qu’une  modification  de  structure  de  la  base  de  données  ou  une  sauvegarde  RMAN  est  enregistrée dans le fichier de contrôle.  En  cas  de  perte  de  tous  les  fichiers  de  contrôle.  le  fichier  de  contrôle  est. Ce sont des fichiers "gérés par Oracle" (Oracle­Managed Files).  autobackup  (sauvegarde automatique du fichier de contrôle et du fichier de paramètres serveur).  sauvegardé dans la zone de récupération rapide.  Lorsque  la  sauvegarde  automatique  est  activée.  © ENI Editions .  Si une zone de récupération rapide est configurée.  Si  vous  souhaitez  définir  une  destination  de  sauvegarde  par  défaut  spécifique. elle est utilisée comme destination par défaut des sauvegardes et  de  plusieurs  autres  fichiers  (par  exemple. Remplacez TO ’format’ par CLEAR pour revenir au format par défaut.Algeria Educ .  en  tenant  compte  de  la  taille  des  fichiers  qui  y  sont  stockés  (sauvegardes  notamment)  et  de  la  politique de conservation des sauvegardes. Lorsque  la  sauvegarde  automatique  du  fichier  de  contrôle  est  activée.  <type>  Sous­répertoire  correspondant  au  type  de  fichier : archivelog  (fichier  de  journalisation  archivé).  Activer  la  sauvegarde  automatique  du  fichier  de  contrôle  active  aussi  la  sauvegarde  automatique  du  fichier  de  paramètres  serveur. L’option format ne peut et ne doit inclure que la variable %F (nom unique basé sur l’identifiant de la base de données.7- .  5.  la date et un numéro de séquence hexadécimal). backupset (jeu de sauvegarde).CONFIGURE RETENTION POLICY CLEAR . surtout si vous n’utilisez pas  de  catalogue  de  récupération  séparé  pour  RMAN.  Du  point  de  vue  de  la  sécurité.  il  est  vivement  conseillé  d’utiliser  un  disque  séparé  pour  la  zone  de  récupération rapide.  vous  pouvez  utiliser  la  commande  suivante :  CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ’format’ .  q Avec :  <DB_UNIQUE_NAME>  Nom unique de la base de données tel que défini par le paramètre DB_UNIQUE_NAME (par défaut égal au paramètre>  DB_NAME).  RMAN  pourra restaurer ces derniers à partir d’une sauvegarde automatique.  Le  quota  d’espace  alloué  à  la  zone  de  récupération  rapide  (paramètre  DB_RECOVERY_ FILE_DEST_SIZE)  doit  être  spécifié  avec  soin.

  <date>  Sous­répertoire  correspondant  à  la  date  (au  format  AAAA_MM_JJ).bkp  o1_mf_s_<h>_<u>_.8- © ENI Editions .ctl  o1_mf_<c>_<a>_<u>_.com .All rights reserved .controlfile (copie image de fichier de contrôle). datafile (copie image de fichier de données).Algeria Educ .  Les règles de nommage des fichiers gérés par Oracle sont les suivantes :  Type de fichier  Fichier de journalisation archivé  Copie image de fichier de données  Copie image de fichier de contrôle  Jeu de sauvegarde  Sauvegarde automatique  Avec :  <t>  nom du tablespace ;  <u>  chaîne de 8 caractères qui garantit l’unicité ;  <g>  numéro de groupe pour les fichiers de journalisation ;  <i>  numéro d’instance (thread) pour les fichiers de journalisation archivés ;  <s>  numéro de séquence pour les fichiers de journalisation archivés ;  <a>  nom donné à la sauvegarde (option TAG de la commande BACKUP) ;  <c>  chaîne de 5 caractères correspondant au contenu du jeu de sauvegarde ;  <h>  horodatage de la sauvegarde automatique (nombre de secondes écoulées depuis une date interne fixe).  N’existe  pas  pour  les  répertoires  controlfile  et  datafile.log  o1_mf_<t>_<u>_.dbf  o1_mf_<a>_<u>_.  Exemple :  H:\ORADATA\FLASH_RECOVERY_AREA\HERMES ARCHIVELOG Format  o1_mf_<i>_<s>_<u>_.  <TYPE>  Identique à <type> mais en majuscules.bkp  openmirrors.

  Exemples  VALIDATE DATABASE .2008_08_05 O1_MF_1_35_49HPDHY8_.CTL DATAFILE O1_MF_TEST_49HQ0498_. La commande VALIDATE  La commande VALIDATE peut être utilisée dans différentes situations (à titre préventif.  Syntaxe simplifiée  VALIDATE quoi . etc.DBF La  même  zone  de  récupération  rapide  peut  être  partagée  par  plusieurs  bases  de  données.  TABLESPACE liste_noms  Vérification d’un ou plusieurs tablespaces.  6.BKP CONTROLFILE O1_MF_TAG20080805T065123_49HQ2C9R_.  BACKUPSET liste_clés  Vérification d’un ou plusieurs jeux de sauvegarde.BKP BACKUPSET 2008_08_05 O1_MF_NNNDF_TAG20080805T064838_49HPX6TV_.  fichiers  de  contrôle  et  fichier  de  paramètre  serveur).  SPFILE  Vérification du fichier de paramètres serveur.  sous  réserve  que  ces  dernières aient un nom unique de base de données (paramètre DB_UNIQUE_NAME) différent.9- . © ENI Editions .  DATAFILE liste_numéros_ou_noms  Vérification d’un ou plusieurs fichiers de données. avant  une restauration.  CURRENT CONTROLFILE  Vérification du fichier de contrôle courant.Algeria Educ . La clause quoi peut prendre une des valeurs suivantes (non exhaustif) :  DATABASE  Vérification  de  la  totalité  de  la  base  de  données  (fichiers  de  données. avant une sauvegarde.ARC AUTOBACKUP 2008_08_05 O1_MF_S_661934919_49HPX9N0_.) pour détecter d’éventuels problèmes de corruption ou de fichiers manquants.All rights reserved .  RECOVERY AREA  Vérification de tous les fichiers stockés dans la zone de récupération rapide.  ARCHIVELOG ALL  Vérification de tous les fichiers de journalisation archivés (ALL peut être remplacé par différentes clauses permettant  de sélectionner les fichiers de journalisation archivés à vérifier).

Algeria Educ . VALIDATE BACKUPSET 47.10 - © ENI Editions .’E:\ORADATA\HERMES\DATA01.sysaux .DBF’ .com .VALIDATE DATAFILE 1. openmirrors.52 .All rights reserved . VALIDATE TABLESPACE system.

 éventuellement  compressé.  Les  sauvegardes  base  ouverte  ne  sont  possibles  que  si  la  base  de  données  fonctionne  en  mode  ARCHIVELOG.  Ces  deux  fonctionnalités  ne  sont  pas  disponibles  dans le cas d’une copie image (copie bit à bit du fichier d’origine). En complément.  CURRENT CONTROLFILE  © ENI Editions . nous ne présenterons que  les options les plus couramment utilisées.  La syntaxe générale de la commande BACKUP est la suivante :  BACKUP [comment] quoi [option] La commande BACKUP propose un très grand nombre d’options..  VALIDATE  Indique  simplement  de  vérifier  que  la  sauvegarde  peut  être  réalisée  (teste  la  présence  des  fichiers  et  leur  non­ corruption). le  fichier  de  paramètres  serveur  ou  des  éléments  de  sauvegarde  (d’une  sauvegarde  précédente).  Si  la  base  de  données  fonctionne  en  mode  NOARCHIVELOG.Algeria Educ .  La clause comment peut prendre une ou plusieurs des valeurs suivantes :  INCREMENTAL LEVEL n [CUMULATIVE]  Indique que la sauvegarde est une sauvegarde incrémentale. il ne sauvegarde pas les  blocs jamais utilisés des fichiers. Par défaut.. des fichiers de contrôle. une sauvegarde RMAN peut être réalisée sous la forme d’une copie image  (image copy) ou d’un jeu  de sauvegarde (backup set).  il  faut  au  préalable arrêter la base de données (proprement) puis la monter :  SHUTDOWN IMMEDIATES TARTUP MOUNT BACKUP . notamment pour  y  enregistrer  l’existence  de  la  sauvegarde. consomme un peu de CPU. il faut que la base de  données soit montée ou ouverte car RMAN a besoin d’accéder au fichier de contrôle de la base cible. ce qui permet de gagner de la place.  TABLESPACE cible  Sauvegarde d’un ou plusieurs tablespaces.  DATAFILE cible  Sauvegarde d’un ou plusieurs fichiers de données. . mais diminue la taille de la  sauvegarde  de  manière  importante  (typiquement. Cette option est équivalente à l’utilisation de la commande VALIDATE. Dans cet ouvrage. des fichiers de journalisation archivés.  Comme  indiqué  précédemment.1- .Sauvegarde  1. Généralités  La commande BACKUP permet d’effectuer une sauvegarde.All rights reserved . RMAN peut sauvegarder des fichiers de données. la sauvegarde s’effectue dans un jeu de sauvegarde.  division  par  5). Pour que cette commande fonctionne.  Lorsque RMAN effectue une sauvegarde de fichiers de données dans un jeu de sauvegarde. il est possible de compresser le  jeu de sauvegarde ; cela ralentit légèrement la sauvegarde.  AS COPY ou AS [COMPRESSED] BACKUPSET  Indique s’il faut faire une sauvegarde sous la forme d’une copie image ou d’un jeu de sauvegarde.  La clause quoi peut prendre une ou plusieurs des valeurs suivantes :  DATABASE  Sauvegarde de la totalité de la base de données.

  ce  qui  permet  par  la  suite  d’identifier  facilement  des  sauvegardes ou des catégories de sauvegarde.  Dans la commande BACKUP.  SPFILE  Sauvegarde du fichier de paramètres serveur.  TAG [=] ’nom’  Associer un nom à la sauvegarde.  Pour  effectuer  une  sauvegarde  sous  la  forme  d’une  copie image.  ARCHIVELOG cible  Sauvegarde des fichiers de journalisation archivés.2- © ENI Editions .).  Avec  l’option  VALIDATE.Algeria Educ .  la  sauvegarde  sur  disque  s’effectue  par  défaut  dans  un  jeu  de  sauvegarde  non  compressé  (équivalent  à  l’option  AS BACKUPSET). la seule clause obligatoire est la clause quoi qui indique ce qu’il faut sauvegarder.  L’option NOT BACKED UP propose deux syntaxes :  q NOT BACKED UP SINCE TIME = ’date’ ;  NOT BACKED UP n TIMES. Ce nom est inclus dans les noms de fichiers générés par RMAN lors  d’une sauvegarde dans la zone de récupération rapide.  Certaines  valeurs  par  défaut  proviennent  de  la  configuration  persistante  de  RMAN..  c’est­à­dire  que  les  fichiers  à  sauvegarder  sont  bien  accessibles  et  ne  sont  pas  corrompus.  q La première syntaxe permet de ne sauvegarder que les éléments qui n’ont pas été sauvegardés depuis un certain  temps..  DELETE [ALL] INPUT  Supprimer les éléments sauvegardés (valable uniquement pour une sauvegarde de fichiers de journalisation archivés  ou une sauvegarde de jeu de sauvegarde).Sauvegarde du fichier de contrôle courant.  La clause option peut prendre une ou plusieurs des valeurs suivantes :  INCLUDE CURRENT CONTROLFILE  Inclure le fichier de contrôle courant dans la sauvegarde.  C’est  le  cas  notamment  de  la  destination de la sauvegarde et du format du nom des fichiers (canal par défaut). L’option FORMAT de la commande  BACKUP  permet  de  spécifier  une  destination  différente  pour  la  sauvegarde..  FORMAT [=] ’format’  Spécifier un format pour la sauvegarde (chemin et format de nom de fichier)..  il  faut  utiliser  l’option  AS COMPRESSED BACKUPSET (BACKUP AS COMPRESSED BACKUPSET .com .  Pour  effectuer  une  sauvegarde  dans  un  jeu  de  sauvegarde  compressé.  L’optionTAG  permet  d’associer  un  nom  à  la  sauvegarde.  PLUS ARCHIVELOG  Inclure les fichiers de journalisation archivés dans la sauvegarde. Toutes  les autres clauses sont optionnelles et ont des valeurs par défaut.).  NOT BACKED UP clause_depuis  Indiquer de ne sauvegarder que les éléments qui n’ont pas été sauvegardés un certain nombre de fois ou depuis un  certain temps. il faut utiliser l’option AS COPY (BACKUP AS COPY . L’option date peut être une constante conforme au format de date par défaut (NLS_DATE_FORMATde la session  openmirrors.  la  commande  BACKUP  n’effectue  en  fait  aucune  sauvegarde ; elle  vérifie  simplement  qu’une  sauvegarde  pourrait  être  réalisée.  Sauf  modification  de  la  configuration.All rights reserved .

DBF fichier de données en entrée. numéro=00004.DBF fichier de données en entrée. numéro=00001.DBF fichier de données en entrée.DBF fichier de données en entrée. il suffit d’utiliser l’option DATABASE dans la commande BACKUP :  BACKUP DATABASE .3- . RMAN affiche de nombreuses informations sur les opérations effectuées. Démarrage de backup dans 05/08/08 utilisation du canal ORA_DISK_1 canal ORA_DISK_1 : démarrage de l’ensemble de sauvegarde compressé de tous les fichiers de données canal ORA_DISK_1 : insertion du(des) fichier(s) de données dans l’ensemble de sauvegarde fichier de données en entrée.Algeria Educ . temps écoulé : 00:00:55 Fin de backup dans 05/08/08 Démarrage de Control File and SPFILE Autobackup dans 05/08/08 descripteur d’élément=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\AUTOBACKUP\ 2008_08_05\O1_MF_S_661936812_49HRRFXS_.  © ENI Editions . nous trouvons les informations suivantes :  q les  fichiers  sauvegardés  (par  exemple  "fichier  de  données  en  entrée …"  pour une sauvegarde de fichier de  données) ;  le nom complet du fichier de sauvegarde généré (par exemple "descripteur d’élément=" pour un élément de  sauvegarde) ;  le  fait  qu’il  y  ait  eu  ou  non  une  sauvegarde  automatique  du  fichier  de  contrôle  et  du  fichier  de  paramètres  serveur. La deuxième syntaxe permet de ne sauvegarder que les éléments  qui n’ont pas été sauvegardés un certain nombre de fois ; cette syntaxe ne peut être utilisée que pour les fichiers de  journalisation archivés. numéro=00003. nom=E:\ORADATA\HERMES\SYSTEM01.All rights reserved . nom=E:\ORADATA\HERMES\DATA01. En complément.BKP balise=DBF commentaire=NONE canal ORA_DISK_1 : ensemble de sauvegarde terminé. nom=E:\ORADATA\HERMES\DEFTBS01. nom=E:\ORADATA\HERMES\SYSAUX01.  La  commande  BACKUP VALIDATE DATABASE  peut  être  utilisée  pour  vérifier  que  la  base  de  données  est  en  "bon  état" (aucun fichier inaccessible.  Exemple  RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE TAG=’DBF’.RMAN) ou une expression (du type ’SYSDATE-1’).DBF fichier de données en entrée.BKP commentaire=NONE Fin de Control File and SPFILE Autobackup dans 05/08/08 Dans le compte rendu d’une sauvegarde. nom=E:\ORADATA\HERMES\INDX01. Sauvegarde de la totalité de la base de données  Pour sauvegarder la totalité de la base. numéro=00002. numéro=00006.  2. il sauvegarde le fichier de contrôle et le fichier de paramètres serveur (voir ci­après). numéro=00005. nom=E:\ORADATA\HERMES\UNDOTBS01.DBF canal ORA_DISK_1 : démarrage de l’élément 1 dans 05/08/08 canal ORA_DISK_1 : élément 1 terminé dans 05/08/08 descripteur d’élément=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\BACKUPSET\ 2008_08_05\O1_MF_NNNDF_DBF_49HRPOC7_. RMAN  utilise  les  informations  du  fichier  de  contrôle  de  la  base  cible  pour  définir  la  liste  des  fichiers  de  données  à  sauvegarder.  q q Les fichiers de données temporaires (fichiers de données des tablespaces temporaires gérés localement) ne  sont pas sauvegardés (c’est inutile). aucun fichier corrompu).  Les autres clauses sont détaillées dans les points suivants.  Lors de chaque sauvegarde.

 le fichier de paramètres serveur  peut être explicitement sauvegardé en utilisant l’option SPFILE. Sauvegarde de tablespaces ou de fichiers de données individuels  Pour  sauvegarder  individuellement  quelques  tablespaces  ou  quelques  fichiers  de  données. BACKUP AS COPY CURRENT CONTROLFILE . BACKUP TABLESPACE system DATAFILE 5 .  notamment  car  RMAN  peut  la  restaurer  automatiquement  en  cas  de  besoin  (ce  n’est  pas  le  cas  avec  une  sauvegarde  manuelle). BACKUP DATAFILE 1.  Lors  de  la  sauvegarde  d’un  tablespace. Les options  TABLESPACE et  DATAFILE peuvent être utilisées simultanément dans la même commande.  La  sauvegarde  automatique  du  fichier  de  contrôle  est  plus  intéressante  qu’une  sauvegarde  manuelle.<$IRMAN.  RMAN  utilise  les  informations  du  fichier  de  contrôle  de  la  base  cible  pour  définir  la  liste  des  fichiers  de  données du tablespace et les sauvegarder.  le  fichier  de  contrôle  est  automatiquement  sauvegardé  lorsque la configuration des fichiers de la base de données change.  ou  ne  sont  pas  archivés  dans la zone de récupération rapide (qui doit normalement être un disque séparé). BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT .  q Dans  les  autres  cas.  le  fichier  de  contrôle  peut  être  explicitement  sauvegardé  en  utilisant  les  options  CURRENT CONTROLFILE ou INCLUDE CURRENT CONTROLFILE dans la commande BACKUP. openmirrors. BACKUP CURRENT CONTROLFILE .  vous  pouvez  utiliser  les  options TABLESPACE et/ou DATAFILE dans la commande BACKUP.  dans  cette  configuration. Si la sauvegarde automatique du fichier de contrôle a été activée.  Exemple :  BACKUP TABLESPACE data.indx .BACKUP SPFILE . le fichier de contrôle ou le fichier de paramètres  serveur sont sauvegardés en double lorsqu’ils sont explicitement sauvegardés.  Exemple :  BACKUP ARCHIVELOG ALL . Sauvegarde du fichier de contrôle et du fichier de paramètres serveur  Le fichier de contrôle et le fichier de paramètres serveur sont sauvegardés automatiquement dans deux cas :  q Lorsque la sauvegarde automatique du fichier de contrôle a été activée.  4.All rights reserved .DBF’ .com .  De  plus.BACKUP ARCHIVELOG> BACKUP ARCHIVELOG FROM TIME ’SYSDATE-1’ DELETE ALL INPUT .  5. Un tablespace  est  désigné  par  son  nom  et  un  fichier  de  données  par  son  numéro  ou  par  son  nom.indx INCLUDE CURRENT CONTROLFILE . il est vivement conseillé de les  sauvegarder ; ce sont eux en effet qui permettent de garantir une restauration complète.3. Sauvegarde des fichiers de journalisation archivés  Si  les  fichiers  de  journalisation  ne  sont  pas  archivés  en  double  sur  des  disques  séparés. BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG FROM TIME ’SYSDATE-7’ NOT BACKED UP 2 TIMES . De même.  Le fichier de contrôle et le fichier de paramètres serveur sont sauvegardés dans un jeu de sauvegarde séparé.  Les  fichiers  de  journalisation  archivés  peuvent  être  sauvegardés  en  utilisant  les  options  ARCHIVELOG  ou  PLUS ARCHIVELOG dans la commande BACKUP.2.4- © ENI Editions .’E:\ORADATA\HERMES\DEFTBS01. BACKUP DATABASE PLUS ARCHIVELOG .  Lorsque le fichier de données numéro 1 (le premier fichier de données du tablespace SYSTEM) est sauvegardé.Algeria Educ .  Exemple :  BACKUP TABLESPACE data.

 archivage du fichier de journalisation courant ;  sauvegarde des fichiers de journalisation archivés générés depuis le début de la sauvegarde. pour ne sauvegarder que les fichiers de journalisation archivés qui  n’ont pas déjà été sauvegardés un certain nombre de fois ou depuis un certain temps. RMAN commence par archiver tous les fichiers de journalisation en ligne qui n’ont pas encore  été  archivés  (et  donc  notamment  le  courant).  Si les fichiers de journalisation sont archivés vers plusieurs destinations.  q © ENI Editions .  Utilisation de l’option DELETE [ALL] INPUT L’option  DELETE [ALL] INPUT  peut  être  utilisée  pour  supprimer  les  fichiers  de  journalisation  archivés  qui  viennent  d’être sauvegardés.  TIME BETWEEN ’date1’ AND ’date2’  Tous les fichiers de journalisation archivés entre deux dates.  il  n’y  a  pas  de  différence  entre  l’option  DELETE INPUT et l’option DELETE ALL INPUT. Ne peut pas être combinée avec d’autres options.5- . Cette commande effectue les opérations suivantes :  q archivage du fichier de journalisation courant ;  sauvegarde  de  tous  les  fichiers  de  journalisation  archivés  (équivalent  à  la  commande  BACKUP ARCHIVELOG ALL) ;  sauvegarde des autres éléments ;  de nouveau.  toute  l’activité  de  journalisation  générée  avant  le  début de la commande est sauvegardée. PLUS ARCHIVELOG  permet  de  sauvegarder  les  fichiers  de  journalisation  en  plus  d’autres  éléments (mais dans un jeu de sauvegarde séparé).  La commande BACKUP ARCHIVELOG cible permet de sauvegarder les fichiers de journalisation désignés par la clause  cible.Dans  les  deux  cas.  Si  les  fichiers  de  journalisation  sont  archivés  dans  une  seule  destination.  La  commande  BACKUP ..  DELETE ALL INPUT supprime toutes les copies du fichier de journalisation sauvegardé.All rights reserved ..  une  seule  copie  est  sauvegardée pour chaque numéro de séquence de journalisation.Algeria Educ .  q q q q De  cette  manière.  De  cette  manière.  Si la commande inclut le fichier de journalisation le plus récent (option ALL ou absence d’option UNTIL) et que la base  de donnée est ouverte. La clause cible offre différentes possibilités parmi lesquelles :  ALL  Tous les fichiers de journalisation archivés.  Utilisation de l’option NOT BACKED UP L’option NOT BACKED UP peut être utilisée en plus. il y a une différence entre les deux options :  q DELETE INPUT supprime uniquement la copie du fichier de journalisation qui a été utilisé pour la sauvegarde.  toutes  les  sauvegardes  de  fichiers  de  données  effectuées  pendant  l’opération  (dans  un  état  incohérent) sont exploitables car tous les fichiers de journalisation nécessaires ont été sauvegardés.  FROM TIME ’date’  Tous les fichiers de journalisation archivés depuis une certaine date.  si  les  fichiers  de  journalisation  sont  archivés  vers  plusieurs  destinations.  UNTIL TIME ’date’  Tous les fichiers de journalisation archivés avant une certaine date.

  Exemple :  BACKUP INCREMENTAL LEVEL 0 DATABASE TAG=’dbinc0’ .  Pour activer la fonctionnalité de trace des blocs modifiés.  il  suffit  d’inclure  l’option  INCREMENTAL LEVEL n [CUMULATIVE]  dans  la  commande BACKUP.6- © ENI Editions . L’objectif est de ne sauvegarder que les blocs qui ont  été  modifiés  depuis  la  dernière  sauvegarde. Oracle garde une trace des blocs modifiés dans un  fichier.All rights reserved .  Lors d’une sauvegarde incrémentale de niveau 1.  q   Les  sauvegardes  incrémentales  cumulatives  sont  plus  intéressantes  pour  la  rapidité  de  récupération  (moins  de  sauvegardes intermédiaires à appliquer). fichier donne le chemin complet et le nom du fichier de trace. simple gain sur l’écriture).  Elle  est  équivalente  à  une  sauvegarde  complète  (mais  une  sauvegarde  complète  n’est  pas  considérée par RMAN comme une sauvegarde incrémentale de niveau 0).  q   Une sauvegarde incrémentale cumulative de niveau 1 sauvegarde tous les blocs modifiés depuis la dernière  sauvegarde incrémentale de niveau 0. Une sauvegarde incrémentale peut être de niveau 0 ou de niveau 1.  Une  sauvegarde  incrémentale  différentielle  de  niveau  1  sauvegarde  tous  les  blocs  modifiés  depuis  la  dernière sauvegarde incrémentale de niveau 0 ou 1. vous pouvez utiliser l’ordre SQL suivant (ce n’est pas une  commande RMAN) :  ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE ’fichier’.  la  durée  de  la  sauvegarde  n’est  pas  sensiblement réduite par rapport à une sauvegarde de niveau 0 (pas de gain sur la lecture.  de  tablespaces individuels ou de fichiers de données individuels.  Si vous souhaitez réduire la durée de la sauvegarde. RMAN est obligé de lire tous les blocs utilisés pour trouver ceux qui  ont  été  modifiés  et  doivent  donc  être  sauvegardés.  de  la  totalité  de  la  base  de  données. mais nécessitent plus d’espace disque. C’est le comportement par défaut. différentielle ou cumulative :  q Une  sauvegarde  incrémentale  de  niveau  0  sauvegarde  toujours. Lorsque cette fonctionnalité est activée. notamment lorsque l’activité de mise à jour est relativement faible sur la base de  données.  il  est  possible  de  réaliser  des  sauvegardes  incrémentales.com .  Les  sauvegardes  incrémentales  présentent  comme  principal  intérêt  de  réduire la taille des sauvegardes.  openmirrors.  tous  les  blocs  utilisés  des  fichiers  de  données. Lors d’une sauvegarde incrémentale de niveau 1. BACKUP INCREMENTAL LEVEL 1 DATABASE TAG=’dbinc1’ .  En  conséquence. vous pouvez activer la fonctionnalité de trace des blocs modifiés  (block  change  tracking).6.Algeria Educ .  Pour  réaliser  une  sauvegarde  incrémentale. RMAN n’a plus besoin de parcourir tous les blocs utilisés ; il  emploie le fichier de trace des blocs modifiés pour identifier les blocs à sauvegarder. Sauvegarde incrémentale  Avec  RMAN.

 base montée.  il  faut  désactiver  la  trace. la base de données ne pourra pas être ouverte (elle restera en état  MOUNT). STATUS FILENAME BYTES ---------. # # # # arrêter la base monter la base sauvegarder la base ouvrir la base Cette sauvegarde est un exemple typique de ce qui est fait lorsque la base fonctionne en mode NOARCHIVELOG. Sauvegarde complète base fermée (cohérente)  Les commandes suivantes permettent de réaliser une sauvegarde complète base fermée (donc cohérente) :  SHUTDOWN IMMEDIATE . Après activation de la trace. Il en est de même après une recréation du fichier de  trace. Le fichier a une taille minimum de 10 Mo  et grossit par pas de 10 Mo.Algeria Educ . vous pouvez utiliser l’ordre SQL ALTER DATABASE RENAME FILE. Pour en savoir plus.Exemple d’activation à partir de RMAN en utilisant la commande SQL :  RMAN> SQL "ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE ’ ’F:\oradata\HERMES\block_change_tracking.TRC 11599872 Si le fichier de trace est perdu ou endommagé.--------ENABLED F:\ORADATA\HERMES\BLOCK_CHANGE_TRACKING.  Pour déplacer le fichier de trace.------------------------------------------.  Il  existe  une  autre  fonctionnalité  intéressante  concernant  les  sauvegardes  incrémentales : la  possibilité  de  réaliser  une  sauvegarde  sous  forme  de  copie  image  et  de  mettre  cette  copie  image  à  jour  par  application  régulière  de  sauvegardes incrémentales (Incrementally Updated Backup). BACKUP DATABASE . Il n’existe pas de possibilité de sauvegarde et de restauration du fichier de trace.  c. Sauvegarde complète base ouverte (incohérente)  © ENI Editions .All rights reserved .  Pour  ouvrir  la  base.  q b. STARTUP MOUNT .  La sauvegarde automatique des fichiers de contrôle a été activée.  Employer  ou  non  un  fichier  de  trace  des  blocs  modifiés  ne  change  rien  aux  commandes  à  utiliser  pour  réaliser  des  sauvegardes incrémentales. Il  n’y  a  pas  de  recommandation  particulière  concernant  l’emplacement  du  fichier ; vous  pouvez  le  placer  dans  l’environnement de la base de données ou dans la zone de récupération rapide. vous pouvez utiliser l’ordre SQL suivant :  ALTER DATABASE DISABLE BLOCK CHANGE TRACKING.  La vue V$BLOCK_CHANGE_TRACKING <donne des informations sur la trace des blocs modifiés :  SQL> SELECT * FROM v$block_change_tracking. Exemples de scénario  a.7- . consultez la documentation Oracle®  Database Backup and Recovery User’s Guide. RMAN l’exploite ; sinon il s’en passe. Préambule  Les scénarios présentés ici s’appuient sur deux hypothèses :  q Une zone de récupération rapide est utilisée.  Pour désactiver la fonctionnalité de trace des blocs modifiés. indépendante de la fréquence de mise à jour.  7. Si la fonctionnalité est active. SQL "ALTER DATABASE OPEN" . la première sauvegarde incrémentale de niveau 0 devra parcourir tous les blocs utilisés  car le fichier de trace ne reflète pas encore le statut des blocs.  et  éventuellement  la  réactiver  si  vous  souhaitez  continuer  à  utiliser la fonctionnalité.trc’’".  Le fichier de trace des blocs modifiés n’est pas spécialement volumineux ; Oracle annonce une taille de 1/30 000 de la  taille de tous les blocs à tracer.

  en  ajoutant les commandes suivantes :  SHUTDOWN IMMEDIATE .com .. Sur  le  principe. Donc. Sauvegarde partielle base ouverte  Dans ce scénario.  d. q Sauvegarde 3 : le reste  BACKUP DATABASE NOT BACKED UP SINCE TIME=’SYSDATE-3’ PLUS ARCHIVELOG DELETE ALL INPUT.  La  commande  pour  la  troisième  sauvegarde  permet  de  sauvegarder tout ce qui n’a pas été sauvegardé depuis trois jours.La  commande  suivante  permet  de  réaliser  une  sauvegarde  complète  base  ouverte  (donc  incohérente). . mais ces sauvegardes ne sont  exploitables que si la base de données fonctionne en mode ARCHIVELOG.  Il est techniquement possible de réaliser des sauvegardes partielles..  avec  sauvegarde  des  fichiers  de  journalisation  archivés.8- © ENI Editions . y compris tout nouveau fichier de données. Dans cet exemple. Cette sauvegarde ne peut être effectuée que lorsque la base fonctionne en mode ARCHIVELOG.2 PLUS ARCHIVELOG DELETE ALL INPUT. SQL "ALTER DATABASE OPEN" . ce qui nous permet de  réaliser  la  sauvegarde  base  ouverte ; pour  être  tout  à  fait  rigoureux. q Sauvegarde 2 : fichiers de données 3 et 4  BACKUP DATAFILE 3. STARTUP MOUNT . # # # # arrêter la base monter la base sauvegarder la base ici ouvrir la base openmirrors.4 PLUS ARCHIVELOG DELETE ALL INPUT. la totalité de la base est sauvegardée en trois fois sur trois jours :  q Sauvegarde 1 : fichiers de données 1 et 2  BACKUP DATAFILE 1.  Ce  type  de  sauvegarde  peut  aussi  être  réalisé  si  la  base  de  données  fonctionne  en  mode  NOARCHIVELOG. des sauvegardes incrémentales cumulatives sont réalisées sur un cycle d’une semaine :  q Dimanche : sauvegarde incrémentale de niveau 0  BACKUP INCREMENTAL LEVEL 0 DATABASE .  il  faudrait  en  plus  s’occuper  des  fichiers  de  journalisation archivés (ajouter une clause PLUS ARCHIVELOG par exemple).  c’est  une  variante  du  scénario  précédent. base fermée.All rights reserved . Sauvegarde incrémentale  Dans ce scénario. nous supposons que la base de données fonctionne en mode ARCHIVELOG. autant les réaliser base ouverte.Algeria Educ .  e. q Lundi au samedi : sauvegarde incrémentale cumulative de niveau 1  BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE .  et  suppression  des  fichiers  de  journalisation  archivés  sauvegardés :  BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT. BACKUP INCREMENTAL.

Le référentiel RMAN  1. La commande LIST  La commande LIST permet d’interroger le référentiel RMAN pour afficher des informations sur les sauvegardes et les  fichiers de journalisation archivés.info_sauvegarde BACKED UP n TIMES TO DEVICE TYPE [DISK | ’media’]   Toutes les options possibles ne sont pas présentées ici.  Syntaxe 1  LIST cible [ BY FILE | SUMMARY ] [ filtre_sauvegarde ].objets DATABASE DATAFILE liste_numéros_ou_noms TABLESPACE liste_noms CONTROLFILE SPFILE ARCHIVELOG { ALL | filtre_archive } .  Dans  le  cas  des  commandes  LIST BACKUP  et  LIST COPY.  il  est  possible  de  spécifier  un  ou  plusieurs  objets  pour  n’afficher que les sauvegardes des objets en question.1- .cible { BACKUP | COPY } [ OF objets ] BACKUPSET . LIST COPY et LIST BACKUPSET listent tous les éléments enregistrés dans le  référentiel RMAN.sysaux . ARCHIVELOG ALL .  Exemple :  LIST LIST LIST LIST LIST LIST BACKUP BACKUP BACKUP BACKUP BACKUP BACKUP OF OF OF OF OF OF DATABASE . Syntaxe 3  LIST ARCHIVELOG { ALL | filtre_archive } [info_sauvegarde]. . # n’importe quel fichier de la base DATAFILE 1.filtre_sauvegarde TAG [=] ’nom’ COMPLETED { AFTER ’date1’ | BEFORE ’date2’ | BETWEEN ’date1’ AND ’date2’ } Syntaxe 2  LIST { BACKUPSET | BACKUPPIECE } { liste_clés | TAG [=] ’nom’ }. ARCHIVELOG UNTIL TIME ’SYSDATE-1’ .filtre_archive FROM TIME ’date’ UNTIL TIME ’date’ TIME BETWEEN ’date1’ AND ’date2’ .All rights reserved .  Par défaut. . les commandes LIST BACKUP.’E:\ORADATA\HERMES\DATA01. Première syntaxe La première syntaxe permet d’afficher des informations sur les sauvegardes enregistrées dans le référentiel RMAN. TABLESPACE system.DBF’ . © ENI Editions . CONTROLFILE SPFILE . Trouver des informations sur les sauvegardes  a.Algeria Educ .

  Exemples  LIST BACKUPSET 8.  avec  un  affichage détaillé donnant le contenu de chaque sauvegarde.-. soit par le nom associé à la sauvegarde grâce à l’option  TAG de la commande BACKUP).Algeria Educ .-------.----------.  L’option BY FILE permet d’obtenir un affichage résumé.Le dernier exemple liste les sauvegardes des fichiers de journalisation archivés il y a plus d’un jour.  Deuxième syntaxe La  deuxième  syntaxe  permet  d’afficher  des  informations  sur  des  jeux  de  sauvegarde  (BACKUPSET) ou éléments de  sauvegarde (BACKUPPIECE) précis (soit par une liste de clés.  ce  qui  génère  un  décalage  dans  la  numérotation.  Exemple (extrait)  RMAN> LIST BACKUP OF DATABASE.-----------.2- © ENI Editions .---------.BKP Liste des fichiers de données dans l’ensemble de sauvegarde 17 File LV Type Ckp SCN Ckp Time Name ---. LIST BACKUPPIECE 76 .  car  un  jeu  de  sauvegarde  peut  avoir  plusieurs  éléments  de  sauvegarde.  Exemple :  LIST BACKUP LIST BACKUP LIST BACKUP LIST BACKUP COMPLETED TAG=’DBINC0’ . c’est­à­dire non supprimés par RMAN (avec l’option DELETE INPUT).  openmirrors. quelle que soit  la  date  de  la  sauvegarde  (peut  dater  de  moins  d’un  jour) ; il  ne  faut  pas  confondre  le  filtre  de  date  d’archivage  (option filtre_archive) et le filtre de date de sauvegarde (option filtre_sauvegarde).  L’option SUMMARY permet d’obtenir un affichage résumé (pas de détail sur le contenu des sauvegardes).DBF 3 Full 410531 05/08/08 E:\ORADATA\HERMES\UNDOTBS01.  L’option  filtre_sauvegarde  permet  de  filtrer  la  liste  grâce  à  un  critère  portant  sur  la  sauvegarde : date  de  la  sauvegarde et/ou nom associé à la sauvegarde (option TAG de la commande BACKUP).DBF 5 Full 410531 05/08/08 E:\ORADATA\HERMES\DATA01. Liste des ensembles de sauvegarde =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------.---.DBF La colonne "Clé BS" donne le numéro (clé) attribué par RMAN au jeu de sauvegarde.---.All rights reserved . Le  dernier  exemple  liste  les  sauvegardes  des  fichiers  de  journalisation  archivés  il  y  a  plus  d’un  jour  mais  sauvegardés il y a moins d’un jour.DBF 6 Full 410531 05/08/08 E:\ORADATA\HERMES\INDX01.-. TAG=’DBINC0’ COMPLETED AFTER ’SYSDATE-1’ . La clé d’un élément de sauvegarde ("Clé BP") n’est pas forcément égale à la clé du jeu de sauvegarde ("Clé BS").DBF 2 Full 410531 05/08/08 E:\ORADATA\HERMES\SYSAUX01. organisé par fichier sauvegardé.  Troisième syntaxe La troisième syntaxe permet d’afficher des informations sur les fichiers de journalisation archivés considérés comme  disponibles par RMAN.---------.78M DISK 00:00:45 05/08/08 BP Key: 17 Status: AVAILABLE Compressed: YES Tag: TAG20080805T080633 Piece Name: H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\BACKUPSET\ 2008_08_05\O1_MF_NNNDF_TAG20080805T080633_49HVH9KL_.--------------17 Full 75. organisé par  jeu de sauvegarde.  Les  commandes  LIST BACKUP OF  et  LIST BACKUPSET  listent  les  sauvegardes  par  jeu  de  sauvegarde. OF ARCHIVELOG UNTIL TIME ’SYSDATE-1’ AFTER ’SYSDATE-1’ .DBF 4 Full 410531 05/08/08 E:\ORADATA\HERMES\DEFTBS01.com . COMPLETED AFTER ’SYSDATE-1’ . LIST BACKUPSET TAG=’DBINC0’ .---1 Full 410531 05/08/08 E:\ORADATA\HERMES\SYSTEM01.

  INCREMENTAL [=] n  Fichiers de données qui nécessitent plus de  n applications de sauvegardes incrémentales pour être récupérés en  cas d’incident.REPORT NEED BACKUP> .All rights reserved .<$IRMAN.  REDUNDANCY [=] n  Une redondance particulière (même syntaxe que dans la commande CONFIGURE RETENTION POLICY). # archives sauvegardées 2 fois sur disque ARCHIVELOG ALL BACKED UP 0 TIMES DEVICE TYPE DISK . La commande REPORT  La commande REPORT permet de réaliser des interrogations plus évoluées sur le référentiel RMAN.objets DATABASE DATAFILE liste_numéros_ou_noms TABLESPACE liste_noms Par défaut. # archives jamais sauvegardées sur disque b. # dans la dernière heure ARCHIVELOG ALL BACKED UP 2 TIMES DEVICE TYPE DISK .  RECOVERY WINDOW OF n DAYS  Une fenêtre de récupération particulière (même syntaxe que dans la commande CONFIGURE RETENTION POLICY). en tenant  compte de la politique de conservation configurée (CONFIGURE RETENTION POLICY).condition DAYS [=] n INCREMENTAL [=] n RECOVERY WINDOW OF n DAYS REDUNDANCY [=] n .Exemples  LIST LIST LIST TO LIST TO ARCHIVELOG ALL .  L’option condition permet de préciser le critère que la commande REPORT doit utiliser pour déterminer si un fichier a  besoin d’être sauvegardé.3- . Les conditions possibles sont :  DAYS [=] n  Fichiers  de  données  qui  nécessitent  plus  de  n  jours  d’application  de  fichiers  de  journalisation  archivés  pour  être  récupérés en cas d’incident. la commande REPORT NEED BACKUP affiche la liste des fichiers qui nécessitent une sauvegarde.  © ENI Editions .  q q Lister les éléments qui nécessitent une sauvegarde Syntaxe  REPORT NEED BACKUP [condition] [objets].  L’option objets permet de s’intéresser à des tablespaces ou des fichiers de données précis.Algeria Educ .  Il existe trois utilisations principales de la commande REPORT :  q lister les éléments qui nécessitent une sauvegarde ;  lister les sauvegardes obsolètes ;  afficher la liste des fichiers de données de la base de données. # tous ARCHIVELOG FROM TIME ’SYSDATE-1/24’ .

  Afficher la liste des fichiers de données de la base de données Syntaxe  REPORT SCHEMA .  AVAILABLE  L’objet est disponible et peut être utilisé par RMAN.  La  commande  CROSSCHECK  met  à  jour  le  statut  de  l’élément dans le référentiel RMAN mais ne supprime rien (ni fichier physique. UNAVAILABLE ­ voir la documentation Oracle).objets . il peut être utile d’exécuter la commande CROSSCHECK (voir plus loin) pour  mettre à jour le statut des sauvegardes dans le référentiel RMAN..4© ENI Editions . ni enregistrement dans le référentiel). il peut être utile d’exécuter la commande CROSSCHECK (voir plus loin) pour  mettre à jour le statut des sauvegardes dans le référentiel RMAN..  Les statuts possibles sont les suivants :  EXPIRED  L’objet n’a pas été trouvé au niveau du système d’exploitation.  Vous  pouvez  aussi  utiliser  la  commande  CHANGE .All rights reserved . . La syntaxe est la même que dans la commande CONFIGURE RETENTION POLICY. 2. la commande REPORT OBSOLETE affiche les sauvegardes obsolètes en tenant compte de la politique de  conservation configurée (CONFIGURE RETENTION POLICY).  L’option  condition  permet  de  préciser  le  critère  que  la  commande  REPORT  doit  utiliser  pour  déterminer  si  une  sauvegarde est obsolète.  Lister les sauvegardes obsolètes Syntaxe  REPORT OBSOLETE [condition]. AVAILABLE pour remettre le statut  AVAILABLE à un enregistrement si le fichier physique est de nouveau accessible  (voir la documentation Oracle).  Avant d’exécuter cette commande..com .  Syntaxe 1  CROSSCHECK cible [ filtre_sauvegarde ] . .  UNAVAILABLE  L’objet n’est pas disponible et ne peut pas être utilisé par RMAN (suite à l’utilisation de la commande  CHANGE .condition RECOVERY WINDOW OF n DAYS REDUNDANCY [=] n Par défaut.Avant d’exécuter cette commande.cible { BACKUP | COPY } [ OF objets ] BACKUPSET . La commande CROSSCHECK  La  commande  CROSSCHECK  permet  de  vérifier  que  les  informations  enregistrées  dans  le  référentiel  RMAN  correspondent  bien  à  des  fichiers  qui  existent  physiquement.  Un  décalage  peut  se  produire  si  un  fichier  est  directement  supprimé  au  niveau  du  système  d’exploitation.  Un  enregistrement  qui  a  été  marqué  EXPIRED  lors  d’un  CROSSCHECK  peut  repasser  AVAILABLE  lors  d’un  nouveau  CROSSCHECK  s’il  n’a  été  que  temporairement  inaccessible. Gérer le référentiel RMAN  a..Algeria Educ openmirrors.

BKP . Les  variantes  de  syntaxe  et  options  sont  les  mêmes  que  pour  la  commande  LIST. RMAN> LIST EXPIRED ARCHIVELOG ALL .  permet  de  lister  les  éléments qui ont le statut EXPIRED.---------.----------.  La  commande  LIST EXPIRED.--------------17 Full 75.DATABASE DATAFILE liste_numéros_ou_noms TABLESPACE liste_noms CONTROLFILE SPFILE ARCHIVELOG { ALL | filtre_archive } Syntaxe 2  CROSSCHECK { BACKUPSET | BACKUPPIECE } { liste_clés | TAG [=] ’nom’ }.ARC RECID=14 STAMP=661940692 . Syntaxe 3  CROSSCHECK ARCHIVELOG { ALL | filtre_archive }.ARC RECID=12 STAMP=661940692 validation réussie du journal d’archivage nom de journal d’archivage=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\ ARCHIVELOG\2008_08_05\O1_MF_1_41_49HWKN89_.Le  statut  est  affiché  dans  le  résultat  de  la  commande  LIST.78M DISK 00:00:45 05/08/08 BP Key: 17 Status: EXPIRED Compressed: YES Tag: TAG20080805T080633 Piece Name: H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\BACKUPSET\ 2008_08_05\O1_MF_NNNDF_TAG20080805T080633_49HVH9KL_.  variante  de  la  commande  LIST.Algeria Educ . Liste des ensembles de sauvegarde =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------.All rights reserved .------... Exemple 2  RMAN> CROSSCHECK ARCHIVELOG ALL ..BKP RECID=17 STAMP=661939593 élément de sauvegarde vérifié : repéré comme étant ’AVAILABLE’ descripteur d’élément de sauvegarde=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\ AUTOBACKUP\2008_08_05\O1_MF_S_661939648_49HVK1Z7_. Liste des copies des journaux d’archivage dont le nom est db_unique_name HERMES ======================================================================== Key Thrd Seq S Low Time ------.---.5- .. canal libéré : ORA_DISK_1 canal affecté : ORA_DISK_1 canal ORA_DISK_1 : SID=186 type d’unité=DISK échec de la validation du journal d’archivage nom de journal d’archivage=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\ ARCHIVELOG\2008_08_05\O1_MF_1_40_49HWKM2G_.---. utilisation du canal ORA_DISK_1 élément de sauvegarde vérifié : repéré comme étant ’EXPIRED’ descripteur d’élément de sauvegarde=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\ BACKUPSET\2008_08_05\O1_MF_NNNDF_TAG20080805T080633_49HVH9KL_.  Exemple 1  RMAN> CROSSCHECK BACKUP .BKP RECID=18 STAMP=661939649 2 objets contre-vérifiés RMAN> LIST EXPIRED BACKUP ..-------12 1 40 X 05/08/08 © ENI Editions .-.   Toutes les options possibles ne sont pas présentées ici.-----------.

All rights reserved .filtre_archive FROM TIME ’date’ UNTIL TIME ’date’ TIME BETWEEN ’date1’ AND ’date2’ .Name: H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\ARCHIVELOG\ 2008_08_05\O1_MF_1_40_49HWKM2G_. La commande DELETE  La  commande  DELETE  peut  être  utilisée  pour  supprimer  des  sauvegardes. L’option  NOPROMPT  permet  de  supprimer  la  demande  de  confirmation  (mais  la  liste  des  fichiers  supprimés  est  toujours  affichée).  La  commande  DELETE  génère  une  erreur  s’il  n’existe  pas  de  concordance  entre  le  référentiel  et  les  fichiers  physiques :  q Un fichier est marqué EXPIRED dans le référentiel mais existe physiquement. Syntaxe 3  DELETE [FORCE] [NOPROMPT] [EXPIRED] ARCHIVELOG { ALL | filtre_archive } [info_sauvegarde].6- © ENI Editions .com .Algeria Educ .info_sauvegarde BACKED UP n TIMES TO DEVICE TYPE [DISK | ’media’] Les variantes de syntaxe et options sont les mêmes que pour la commande LIST.  combinée à d’autres critères). RMAN liste les fichiers qu’il s’apprête à supprimer et demande confirmation de la suppression. .  Par défaut.ARC b.  q Supprimer des sauvegardes ou des fichiers de journalisation spécifiques Syntaxe 1  DELETE [FORCE] [NOPROMPT] [EXPIRED] cible [ filtre_sauvegarde ] .  La commande DELETE propose deux variantes principales pour :  q supprimer des sauvegardes ou des fichiers de journalisation spécifiques ;  supprimer les sauvegardes obsolètes.  Elle  supprime  les  fichiers  physiques  et  l’enregistrement dans le référentiel RMAN.  openmirrors. .objets DATABASE DATAFILE liste_numéros_ou_noms TABLESPACE liste_noms CONTROLFILE SPFILE ARCHIVELOG { ALL | filtre_archive } .  L’option  EXPIRED  permet  de  supprimer  les  éléments  marqués  EXPIRED  dans  le  référentiel  RMAN  (éventuellement.filtre_sauvegarde TAG [=] ’nom’ COMPLETED { AFTER ’date1’ | BEFORE ’date2’ | BETWEEN ’date1’ AND ’date2’ } Syntaxe 2  DELETE [FORCE] [NOPROMPT] [EXPIRED] { BACKUPSET | BACKUPPIECE } { liste_clés | TAG [=] ’nom’ }.cible { BACKUP | COPY } [ OF objets ] BACKUPSET .

  c.  RMAN  supprimera  automatiquement  les  sauvegardes  obsolètes  (compte tenu de la politique de conservation configurée)..All rights reserved . Exemples d’appel  # supprimer les sauvegardes ayant un certain nom DELETE BACKUP OF DATABASE TAG=’DBINC0’ . # supprimer les sauvegardes du fichier de paramètres serveur # réalisées il y a plus de 7 jours DELETE NOPROMPT BACKUP OF SPFILE COMPLETED BEFORE ’SYSDATE-7’ .  Pour résoudre ce problème. RMAN supprime les sauvegardes obsolètes en tenant compte de la  politique de conservation configurée (CONFIGURE RETENTION POLICY). UNCATALOG  pour  supprimer  du  référentiel  une  référence  à  un  fichier  qui  n’existe plus (voir la documentation Oracle). Supprimer les sauvegardes obsolètes Syntaxe 2  DELETE [FORCE] [NOPROMPT] OBSOLETE [ condition ] .    q q Réfléchissez bien avant de supprimer quoi que ce soit. .  Cette situation peut se produire dans plusieurs cas :  q Vous avez utilisé la commande DELETE à mauvais escient et vous avez toujours le fichier physique.  L’option  condition  permet  de  préciser  le  critère  que  la  commande  DELETE  doit  utiliser  pour  déterminer  si  une  sauvegarde est obsolète.  q q q © ENI Editions ..  Si  vous  utilisez  une  zone  de  récupération  rapide. vous pouvez au choix :  q exécuter la commande CROSSCHECK pour mettre à jour le statut des fichiers dans le référentiel ;  utiliser l’option FORCE de la commande DELETE ;  utiliser  la  commande  CHANGE . La commande CATALOG  La commande CATALOG permet d’indiquer à RMAN l’existence de fichiers de journalisation archivés ou d’éléments de  sauvegarde qui ne sont pas enregistrés dans le référentiel RMAN.  Vous avez effectué une récupération avec une sauvegarde du fichier de contrôle.condition RECOVERY WINDOW OF n DAYS REDUNDANCY [=] n Lorsque la commande est appelée sans option.q Un fichier est marqué AVAILABLE dans le référentiel mais n’existe pas physiquement.7- .Algeria Educ . La syntaxe est la même que dans la commande CONFIGURE RETENTION POLICY. qui ne contient donc pas  les informations sur ce qui a été fait avec RMAN depuis la sauvegarde en question.  Vous avez recréé le fichier de contrôle (il ne contient plus rien). # supprimer tous les fichiers de journalisation archivés générés # il y plus d’un jour et sauvegardé trois fois sur disque DELETE ARCHIVELOG UNTIL TIME ’SYSDATE-1’ BACKED UP 3 TIMES TO DISK . mais le fichier physique existe toujours et vous en avez besoin pour une  récupération. mais uniquement s’il manque de place. # supprimer toutes les sauvegardes marquées EXPIRED DELETE EXPIRED BACKUP .  Un  enregistrement  a  été  supprimé  du  fichier  de  contrôle  du  fait  de  la  valeur  du  paramètre  CONTROL_FILE_RECORD_KEEP_TIME.

La première syntaxe permet de cataloguer des fichiers précis.  openmirrors.  RMAN  demande  confirmation  avant  de  cataloguer  un  fichier ; l’option  NOPROMPT  permet de supprimer la demande de confirmation.Algeria Educ .  Syntaxe  CATALOG { ARCHIVELOG | BACKUPPIECE } liste_fichiers .com .  La troisième syntaxe permet de cataloguer tous les fichiers dont le nom complet commence par une certaine chaîne  de caractères (ne peut pas contenir de caractères joker). Si vous cataloguez un élément déjà catalogué. RMAN ne catalogue pas les fichiers déjà catalogués.8- © ENI Editions .  La deuxième syntaxe permet de cataloguer tous les fichiers stockés dans la zone de récupération rapide (RECOVERY AREA et DB_RECOVERY_FILE_DEST sont synonymes). CATALOG START WITH ’chemin’ [NOPROMPT] .All rights reserved . Par ailleurs. CATALOG { RECOVERY AREA | DB_RECOVERY_FILE_DEST } [NOPROMPT] .q Vous avez déplacé un fichier physique.  Avec  les  deux  dernières  syntaxes. RMAN  supprime l’ancienne référence avant de créer la nouvelle.

  q q q q Du mode de fonctionnement de la base :  q ARCHIVELOG  NOARCHIVELOG.  essentiellement  pour  interroger  quelques  vues  du  dictionnaire  de  données ; une  connexion  AS SYSDBA  sera nécessaire si la base n’est pas ouverte.  Au  minimum. Vue d’ensemble  La stratégie de récupération dépend de plusieurs facteurs :  q De la nature du(des) fichier(s) endommagé(s) ou perdu(s) :  q fichier de données ;  fichier de contrôle ;  fichier de paramètres serveur ;  fichier de journalisation.  il  existe  en  fait  deux  étapes  bien  précises  et  bien  distinctes :  s L’étape de restauration (restore) consiste à extraire d’une sauvegarde les fichiers nécessaires.All rights reserved . ne vous précipitez pas et n’hésitez pas à vous faire aider par le support Oracle.  Dans  une  opération  de  "restauration"  ou  de  "récupération".  réalisez  si  possible  une  sauvegarde  complète de la base endommagée. Cela peut fournir un point de retour en cas d’aggravation de la situation  par  une  mauvaise  manipulation.  © ENI Editions .  Ce  nouvel outil est présenté dans la section Data Recovery Advisor.Algeria Educ .  q q Des sauvegardes disponibles.  Une  opération  de  récupération  s’effectue  essentiellement  avec  RMAN. les procédures de restauration sont  les mêmes.1- .  L’étape  de  récupération  (recover)  consiste  à  appliquer  les  fichiers  de  journalisation  aux  fichiers  récupérés  de  la  sauvegarde. que le fichier soit perdu ou simplement endommagé. Depuis  la  version  11.  Pour  certaines  étapes.  Que faire en cas de problème ?  1. il faudrait donc évoquer une opération de "restauration et récupération". identifier la nature du problème ;  2.  Un  conseil.  les  termes  "perdu"  et  "endommagé"  seront  indifféremment  utilisés  pour  désigner  l’incident ; dans la pratique.  réalisez  une  sauvegarde  du  fichier  de  contrôle  et  des  fichiers  de  journalisation en ligne (par simple copie au niveau du système d’exploitation).    Surtout.  Dans  la  suite  du  document.Récupération  1.  définir  le  mode  opératoire  en  tenant  compte  du  mode  de  fonctionnement  de  la  base  et  des  sauvegardes  disponibles.  s Pour être rigoureux.  SQL*Plus  peut  être  nécessaire.  Oracle  propose  un  conseiller  pour  la  récupération  des  données  (le Data  Recovery  Advisor) qui  permet  de  diagnostiquer  et  résoudre  facilement  les  incidents  (perte  ou  corruption)  des  données  sur  disque.  avant  de  commencer  toute  opération  de  récupération.

 et que le problème  soit survenu alors que la base de données était arrêtée.  q q Si  les  fichiers  de  journalisation  n’ont  pas  subi  un  cycle  complet  de  basculements  depuis  la  sauvegarde  utilisée.  Les situations sont les suivantes :  q Un cycle complet de basculement des fichiers de journalisation n’a pas eu lieu depuis la sauvegarde.Algeria Educ . Dans ce cas. il ne faut pas hésiter à appeler le support Oracle pour tenter avec eux de  réaliser  la  récupération  la  plus  complète  possible. il faut faire fonctionner la base en  mode ARCHIVELOG.  Tous les fichiers de contrôle sont perdus mais les autres fichiers (données et journalisation) sont intacts. ni à au tablespace d’annulation  actif). q D’ouvrir la base de données  SQL> ALTER DATABASE OPEN.dbf’ OFFLINE DROP.  A priori.  Le  fichier  de  données  perdu  n’est  pas  critique  pour  la  base  de  données  (n’appartient  pas  au  tablespace  SYSTEM. le mode opératoire est on ne peut plus simple :  q restaurer la dernière sauvegarde complète de la base ;  redémarrer la base. En mode NOARCHIVELOG  En mode NOARCHIVELOG.All rights reserved . openmirrors. il peut être possible de récupérer tout ou partie des modifications apportées  depuis la dernière sauvegarde.  ni  pour  l’application  (ce  n’est pas le tablespace principal de  l’application).  Dans ce cas. il faut réaliser une récupération comme si la base de données était en mode ARCHIVELOG  (voir les scénarios correspondants). Principes généraux de la récupération  a.com .  L’objectif des indications données ci­après est de montrer que tout n’est pas forcément perdu. la restauration en mode NOARCHIVELOG  ne  permet  pas  de  ramener  la  base  de  données  à  l’état où elle se  trouvait  juste  avant  l’incident ; elle  permet  juste  de  ramener  la  base  de  données  à  l’état  où  elle  se  trouvait  au  moment de la sauvegarde. le prochain démarrage ne nécessiterait pas de  récupération de l’instance.  Par  contre.  Si le fichier de données perdu n’est pas critique pour la base de données ni pour l’application. dans certaines situations.  q Toutes les modifications apportées depuis la dernière sauvegarde sont perdues. il est possible :  q De démarrer la base de données en état MOUNT  SQL> CONNECT / AS SYSDBA SQL> STARTUP MOUNT q De mettre les fichiers de donnés concernés OFFLINE avec l’option DROP  SQL> ALTER DATABASE DATAFILE 2 ’e:\oradata\HERMES\indx01. En cas de  problème en mode NOARCHIVELOG. la situation est plutôt favorable car les fichiers qui restent  sont cohérents entre eux : si ce problème de fichier n’existait pas.2.  Néanmoins.  toutes les mises à jour effectuées depuis la sauvegarde en question sont encore "disponibles" dans les fichiers de  journalisation.  pour  être  certain  de  garantir  une  récupération  complète dans toutes les situations (et simplifier le processus de récupération).2- © ENI Editions .

 Dans cette situation critique et délicate.  q Dans la terminologie Oracle.All rights reserved ..q De supprimer le tablespace  SQL> DROP TABLESPACE indx. différentes situations peuvent conduire à une récupération incomplète :  q volontairement.  la  technique  ne  pourra  pas  être  employée  (il  faut  repartir  de  la  dernière sauvegarde). À l’arrivée. le mode opératoire de base pour une perte de fichier(s) de données est le suivant :  q restaurer la dernière sauvegarde de chaque fichier perdu ;  appliquer les fichiers de journalisation (archives puis ceux en ligne) ;  redémarrer la base (si la récupération n’a pas été faite base ouverte). ne sont pas perdues).  © ENI Editions . est perdu et doit être repris à la main : dans une séquence d’application des fichiers de  journalisation.  la  technique  présentée  précédemment  pourra  être  utilisée ; si  les  fichiers  de  journalisation CURRENT  ou ACTIVE  sont  perdus.3- .  Si  le  problème  est  survenu  alors  que  la  base  était  en  fonctionnement.  La  récupération  est  dite  complète.  Lors de la restauration des sauvegardes.  envisageable  pour  des  tablespaces  contenant uniquement des index (les données. . pour laquelle il existe différentes  possibilités de récupération.  s’il  manque  une  archive  de  fichier  de  journalisation) ; une  récupération  incomplète  reste  alors  possible et la base n’est pas ramenée à l’état où elle se trouvait juste avant l’incident mais à un état antérieur. la base de données n’est pas ramenée à l’état où elle se trouvait juste avant l’incident mais à  un état antérieur.  Tous les fichiers de contrôle sont perdus.  b.  la  situation  est  plus  problématique  car  les  fichiers de données restants ne sont peut­être pas cohérents et il n’existe pas vraiment de moyens de le savoir. tout ce qui a été fait. Si les fichiers de journalisation sont présents. la documentation Oracle recommande de contacter le support Oracle. elles. une récupération incomplète est appelée point­in­time recovery. ou s’il manque  une archive de fichiers de journalisation. si des fichiers de journalisation sont perdus (une archive ou tout un groupe de fichiers de  journalisation en ligne).  Elle  est. la récupération incomplète peut être  volontaire ; là encore. q Puis de recréer le tablespace (et éventuellement son contenu)  SQL> CREATE TABLESPACE indx . SQL> CREATE INDEX . si tout un groupe de fichiers de journalisation est perdu. si les sauvegardes sont partielles. pour s’arrêter avant un ordre SQL malencontreux ;  involontairement.  S’ils  ne  sont  pas  cohérents.  Dans certaines situations (suppression de table malencontreuse par exemple). Oracle ne peut pas "sauter" quelques ordres puis continuer. . la récupération complète sera plus délicate et dans certains cas impossible  (par  exemple.  q q Toutes  les  modifications  apportées  depuis  les  sauvegardes  utilisées  sont  récupérées..  Si tous les fichiers de contrôle sont perdus.  Oracle  aura  besoin  des  fichiers  de  journalisation  en  ligne  pour  les  rendre  cohérents  (c’est la récupération de l’instance "classique"). ou si seuls les fichiers  de journalisation  INACTIVE  sont  perdus.  Sur la base de ce scénario.  Quelle que soit l’origine de la récupération incomplète..Algeria Educ . le tablespace est supprimé : cette technique n’est donc pas applicable si le fichier de données perdu est  critique  pour  la  base  de  données  ou  pour  l’application. après le moment qui correspond à l’état  de récupération de la base.  Ce  type  de  récupération  est  simple  et  ne  pose  pas  de  problème  s’il  reste  au  moins  un  fichier  de  contrôle.  par  contre.  un  membre  par  groupe  de  fichier  de  journalisation  et  que  toutes  les  archives  de  fichiers  de  journalisation  sont  disponibles.. En mode ARCHIVELOG  En mode ARCHIVELOG. il faut prendre la sauvegarde la plus  récente de chaque fichier endommagé.

  b.3.  Au  redémarrage. du moment qu’il en reste au moins un par groupe.  La perte de tous les membres d’un groupe de fichiers de journalisation est bien plus complexe à traiter ; la situation  de départ doit être analysée avec soin (statut du groupe perdu. une récupération complète est possible. INACTIVE).  les  fichiers  de  journalisation)  sont  intacts ; dans ce cas.All rights reserved . afin de choisir le bon  mode opératoire. numéro de thread x incorrect dans en-tête ORA-00316: le journal n dans le thread p. impossible de mettre à jour l’en-tête du fichier journal openmirrors. n’est pas un fichier journal ORA-00317: le type de fichier x dans l’en-tête n’est pas un fichier journal ORA-00318: journal n. Identifier la nature du problème  a. La  perte  de  tous  les  fichiers  de  contrôle  n’est  pas  la  situation  la  plus  complexe  à  traiter. thread p. nbre blocs) Ces messages indiquent qu’au moins un fichier de contrôle est endommagé ou perdu ; il faut consulter le fichier des  alertes  de  l’instance  pour  en  savoir  plus.  s’il  existe  des  sauvegardes  récentes  du  fichier  de  contrôle  et  si  les  autres  fichiers  (particulièrement. type x dans l’en-tête. Pour les situations complexes.Algeria Educ . thread p.  s’il  en  reste. etc. du moment qu’il en reste au moins un ;  perte d’un ou plusieurs fichiers de journalisation. il est vivement conseillé de se faire aider par le support Oracle.  l’instance reste en état NOMOUNT.  l’instance  s’arrête.  4. Message d’erreur concernant les fichiers de contrôle  Les messages d’erreurs les plus fréquents sur les fichiers de contrôle sont les suivants :  ORA-00204: erreur lors du fichier de contrôle ORA-00205: erreur lors de contrôle. thread p. ACTIVE. taille x de fich. nbre blocs) de l’identification du fichier le journal des alertes de l’écriture (bloc. Message d’erreur concernant les fichiers de journalisation  Les messages d’erreur les plus fréquents sur les fichiers de journalisation sont les suivants :  ORA-00313: échec d’ouverture des membres du groupe de journaux n.  En  cas  de  problème  sur  un  fichier  de  contrôle.  Incidents peu graves :  q perte d’un ou plusieurs fichiers de contrôle. Les incidents sur les fichiers de contrôle et de journalisation  Les  incidents  sur  les  fichiers  de  contrôle  et  les  fichiers  de  journalisation  peuvent  être  classés  en  deux  catégories : "peu graves" et "très graves". attendue ne correspond pas à y ORA-00319: journal n du thread p a un état de réinitialisation incorrect ORA-00320: impossible lire en-tête de fichier du journal n thread p ORA-00321: fichier n. état des autres fichiers. consultez ORA-00206: erreur lors du fichier de contrôle de la lecture (bloc.  notamment  pour  déterminer  les  fichiers  endommagés  et  en  déduire  les  fichiers  intacts.com . thread p ORA-00315: journal n.).  q Incidents plus graves et plus complexes à traiter :  q perte de tous les fichiers de contrôle : moyennement grave si les autres fichiers sont intacts ;  perte de tous les membres d’un groupe de fichiers de journalisation : la gravité dépend du statut du groupe  perdu (CURRENT.4- © ENI Editions .  q Ces situations sont évitées si l’on multiplexe correctement les fichiers de contrôle et les fichiers de journalisation.

  il  faut  consulter  le  fichier  d’alerte  de  l’instance  et  le  fichier  de  trace  du  processus  DBWR. l’instance  reste en état MOUNT.voir le fichier de trace DBWR Ces messages s’accompagnent d’un ou plusieurs messages ORA-01110 donnant le nom du fichier :  ORA-01110: fichier de données n : fichier En mode NOARCHIVELOG.  Au démarrage.  Exemple  SQL> SELECT file#.  c. Message d’erreur concernant les fichiers de données  Il y a de nombreux messages d’erreur possibles concernant les fichiers de données.5- . FILE# ERROR ONLINE_ ---------.  DATABASE  peut  aussi  être  utilisée  pour  identifer  les  fichiers  de  données  perdus  ou  5.  Lorsque la base de données est montée ou ouverte. eux aussi endommagés.  D’autres fichiers. Introduction  Dans RMAN.  ONLINE_STATUS  Statut du fichier (ONLINE ou OFFLINE). En mode ARCHIVELOG. si la base de données est ouverte et qu’un problème se produise sur un fichier de données.Ces messages s’accompagnent d’un ou plusieurs messages ORA-00312 donnant le nom du fichier :  ORA-00312: journal en ligne n thread p : fichier En cas de problème sur tout un groupe de fichiers de journalisation. il en est de même mais uniquement si le fichier de données incriminé est un  fichier du tablespace SYSTEM ou un fichier de données du tablespace d’annulation actif.  La  commande  VALIDATE endommagés.  En  cas  de  problème.-----------------------------.  © ENI Editions . Au redémarrage. peuvent être cités. il faut consulter le fichier d’alerte de l’instance et le fichier de trace du processus LGWR.  l’instance s’arrête.online_status FROM v$recover_file.Algeria Educ . Les commandes RMAN  a.error.All rights reserved . l’instance reste en état MOUNT.------5 FILE NOT FOUND ONLINE Sur cet exemple. l’instance s’arrête.  En cas de problème.FILE# pour récupérer des informations complémentaires sur le fichier). les opérations de restauration et de récupération vont s’effectuer respectivement avec les commandes  RESTORE et RECOVER. le fichier de données 5 doit être restauré. vous pouvez interroger la vue V$RECOVER_FILE pour déterminer  la liste des fichiers de données sur lesquels il existe un problème.  ERROR  Nature de l’erreur. Vide si l’erreur est inconnue et OFFLINE NORMAL si le fichier est hors ligne sans erreur (pas besoin  de restauration dans ce cas). par exemple :  ORA-01157: impossible d’identifier ou de verrouiller le fichier de données n .  Les colonnes intéressantes de la vue V$RECOVER_FILE sont les suivantes :  FILE#  Identifiant du fichier (jointure sur V$DATAFILE.

La commande RESTORE permet de restaurer les fichiers à partir des sauvegardes. La commande RECOVER permet de  procéder à une récupération complète ou incomplète.  La syntaxe générale de ces deux commandes est du type :  { RESTORE | RECOVER } cible [options] ; Votre principale responsabilité, lorsque vous utilisez ces commandes, est de bien choisir la cible en fonction de la  nature  du  problème.  Ensuite,  RMAN  se  charge  normalement  de  tout : identifier  les  sauvegardes  à  utiliser,  et  en  extraire  les  fichiers  requis ; identifier  les  fichiers  de  journalisation  archivés  nécessaires  et  les  extraire  d’une  sauvegarde s’ils ont été sauvegardés puis supprimés.  Les options de ces deux commandes ne seront nécessaires que pour traiter des cas particuliers : sauvegarde non  disponible,  volonté  de  revenir  à  un  instant  dans  le  passé  (récupération  incomplète),  etc.  Dans  la  grande  majorité  des cas, vous ne devriez pas en avoir besoin.  Les  principes  de  fonctionnement  généraux  de  ces  commandes  vont  d’abord  être  présentés,  puis  nous  verrons  comment les utiliser dans différents scénarios de restauration.  Les  commandes  RESTORE  et  RECOVER  proposent  un  très  grand  nombre  d’options.  Dans  cet  ouvrage,  nous  présenterons uniquement les options les plus couramment utilisées. 

b. La commande RESTORE 
La syntaxe simplifiée de la commande RESTORE est la suivante :  RESTORE cibles [options] - cibles DATABASE DATAFILE liste_numéros_ou_noms TABLESPACE liste_noms CONTROLFILE [TO ’destination’] [FROM AUTOBACKUP | ’sauvegarde’] SPFILE [TO ’destination’] [FROM AUTOBACKUP | ’sauvegarde’] ARCHIVELOG { ALL | filtre_archive } - filtre_archive FROM TIME ’date’ UNTIL TIME ’date’ TIME BETWEEN ’date1’ AND ’date2’ - options PREVIEW [SUMMARY] VALIDATE L’option cibles permet d’indiquer ce qu’il convient de restaurer. L’option DATABASE permet de restaurer la totalité de  la base de données ; elle ne doit être utilisée que si vous souhaitez ou devez effectivement restaurer la totalité de  la base de données. En mode ARCHIVELOG, si un fichier de données est endommagé, vous ne devrez restaurer que  le fichier en question, en utilisant les options DATAFILE ou TABLESPACE.  L’option  PREVIEW  est  intéressante  pour  lister  les  sauvegardes  dont  RMAN  a  besoin  pour  réaliser  l’opération  de  restauration  correspondante.  L’option  SUMMARY  permet  d’obtenir  un  affichage  résumé.  L’affichage  est  le  même  qu’avec la commande LIST.  L’option  VALIDATE  permet  de  tester  si  la  restauration  correspondante  peut  être  réalisée.  RMAN  accède  aux  sauvegardes  et  vérifie  qu’il  peut  en  extraire  les  fichiers  nécessaires.  Il  existe  aussi  une  commande  VALIDATE BACKUPSET qui permet de tester des jeux de sauvegarde spécifiques (voir la documentation Oracle). 

c. La commande RECOVER 
La syntaxe simplifiée de la commande RECOVER est la suivante :  RECOVER cible [options] - cible DATABASE DATAFILE liste_numéros_ou_noms TABLESPACE liste_noms - options DELETE ARCHIVELOG [MAXSIZE taille [K|M|G]]

openmirrors.com

- 6-

© ENI Editions - All rights reserved - Algeria Educ

L’option  cible  permet  d’indiquer  ce  qu’il  convient  de  récupérer : la  base  de  données  dans  sa  totalité,  ou  des  tablespaces ou fichiers de données spécifiques.  Lors  de  l’opération  de  récupération,  RMAN  recherche  les  fichiers  de  journalisation  archivés  dont  il  a  besoin,  en  premier  lieu  sur  le  disque.  Les  fichiers  de  journalisation  archivés  manquants  sont  automatiquement  restaurés  à  partir de sauvegardes, vers le répertoire d’archivage défini par le paramètre LOG_ARCHIVE_DEST_1 (où vers une autre  destination ­ voir la commande SET ARCHIVELOG DESTINATION dans la documentation).  À  la  fin  de  l’opération,  les  fichiers  de  journalisation  archivés  restaurés  ailleurs  que  dans  la  zone  de  récupération  rapide,  ne  sont  pas  supprimés  par  défaut.  L’option  DELETE ARCHIVELOG  permet  de  supprimer  les  fichiers  de  journalisation  archivés  restaurés  qui  ne  sont  plus  nécessaires,  au  fur  et  à  mesure  de  leur  application.  L’option  MAXSIZE permet au besoin, de limiter l’espace utilisé par RMAN pour les fichiers de journalisation archivés restaurés.  Si cette option est spécifiée, RMAN procédera à la restauration des fichiers de journalisation archivés en plusieurs  étapes, pour ne pas dépasser la taille indiquée. Assurez­vous que la taille indiquée est supérieure à la taille des  fichiers de journalisation archivés, sinon vous obtiendriez une erreur.  La récupération peut utiliser des sauvegardes incrémentales ou des fichiers de journalisation archivés. Si RMAN a le  choix, il utilise en priorité les sauvegardes incrémentales. 

6. Scénarios de récupération 
a. Présentation 
Dans cet ouvrage, nous allons présenter les scénarios de récupération de base suivants : 
q

récupération du fichier de paramètres serveur ;  récupération d’un fichier de contrôle ;  récupération d’un fichier de journalisation ;  récupération complète de la totalité de la base de données en mode ARCHIVELOG ;  récupération complète d’une partie de la base de données en mode ARCHIVELOG ;  récupération de tous les fichiers de contrôle en mode ARCHIVELOG ;  récupération incomplète en mode ARCHIVELOG ;  récupération en mode NOARCHIVELOG. 

q

q

q

q

q

q

q

En complément, nous évoquerons deux cas particuliers : 
q

récupération à un emplacement différent ;  tablespace temporaire géré localement. 

q

Dans un cas de récupération réel, vous serez peut­être amenés à combiner plusieurs de ces scénarios de base. Par  exemple,  si  vous  avez  perdu  un  fichier  de  contrôle  et  un  tablespace,  et  si  vous  êtes  en  mode  ARCHIVELOG,  vous  appliquerez les scénarios suivants, dans l’ordre : 
q

récupération d’un fichier de contrôle ;  récupération complète d’une partie de la base de données en mode ARCHIVELOG. 

q

En  règle  générale,  si  vous  avez  perdu  le  fichier  de  paramètres  serveur,  un  fichier  de  contrôle  et/ou  un  fichier  de  journalisation, vous devez d’abord résoudre ces problèmes avant de traiter le cas des fichiers de données.  Tous ces scénarios sont basés sur les hypothèses suivantes : 

© ENI Editions - All rights reserved - Algeria Educ

- 7-

q

Vous avez activé la sauvegarde automatique du fichier de contrôle et du fichier de paramètres serveur.  Vous utilisez une zone de récupération rapide.  Vous n’utilisez pas de base de données annexe pour stocker le catalogue RMAN. 

q

q

Quel que soit le scénario, si le fichier est en fait simplement temporairement inaccessible (contrôleur disque  en panne par exemple), une restauration n’est pas nécessaire ; il suffit de corriger le problème pour rendre  le fichier de nouveau disponible et de redémarrer la base. Une restauration est néanmoins envisageable s’il n’est  pas possible d’attendre que le problème soit corrigé. 

b. Récupération du fichier de paramètres serveur 
En cas de perte du fichier de paramètres serveur, vous avez deux possibilités : 
q

Le recréer à partir d’un fichier de paramètres texte (voir le chapitre 7).  Le récupérer à partir d’une sauvegarde RMAN. 

q

Pour le récupérer à partir d’une sauvegarde automatique RMAN située dans la zone de récupération rapide, le mode  opératoire est le suivant : 
q

Démarrer l’instance sans monter la base de données (notez que RMAN va utiliser un fichier de paramètres  "temporaire" pour démarrer l’instance) 

RMAN> STARTUP NOMOUNT échec du démarrage : ORA-01078: failure in processing system parameters LRM-00109: impossible d’ouvrir le fichier de paramètres ’D:\APP\ORACLE\PRODUCT\11.1.0\DB_1\DATABASE\INITHERMES.ORA’ démarrage de l’instance Oracle sans fichier de paramètres pour extraction de SPFILE instance Oracle démarrée Total System Global Area (SGA) 159019008 octets Fixed Size 1331852 octets Variable Size 67112308 octets Database Buffers 88080384 octets Redo Buffers 2494464 octets
q

Restaurer  le  fichier  de  paramètres  serveur  à  partir  d’une  sauvegarde  automatique  en  spécifiant  l’emplacement de la zone de récupération rapide et le nom (ou le nom unique) de la base de données 

RMAN> RESTORE SPFILE FROM AUTOBACKUP 2> DB_RECOVERY_FILE_DEST ’H:\oradata\flash_recovery_area’ 3> DB_NAME ’HERMES’; Démarrage de restore dans 05/08/08 utilisation du canal ORA_DISK_1 destination de la zone de récupération : H:\oradata\flash_recovery_area nom de base de données (ou nom unique de base de données) utilisé pour la recherche : HERMES canal ORA_DISK_1 : AUTOBACKUP H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\ AUTOBACKUP\2008_08_05\O1_MF_S_661968988_49JR5XWS_.BKP trouvé dans la zone de récupération canal ORA_DISK_1 : recherche de AUTOBACKUP effectuée le : 20080805 canal ORA_DISK_1 : restauration du fichier SPFILE à partir de AUTOBACKUP H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\AUTOBACKUP\ 2008_08_05\ O1_MF_S_661968988_49JR5XWS_.BKP canal ORA_DISK_1 : restauration de SPFILE depuis AUTOBACKUP terminée Fin de restore dans 05/08/08
q

Redémarrer l’instance et ouvrir la base de données 

openmirrors.com

- 8-

© ENI Editions - All rights reserved - Algeria Educ

RMAN> SHUTDOWN ... RMAN> STARTUP ... Si  la  sauvegarde  automatique  n’est  pas  stockée  dans  la  zone  de  récupération  rapide,  le  mode  opératoire  est  différent.  Il  faut  positionner  le  DBID  correspondant  à  la  base  de  données  (SET DBID …),  spécifier  le  format  utilisé  pour les sauvegardes automatiques (SET CONTROLFILE AUTOBACKUP FORMAT …) avant de restaurer la sauvegarde par  un RESTORE SPFILE FROM AUTOBACKUP (sans autre option).  Il  est  aussi  possible  de  restaurer  le  fichier  de  paramètre  serveur  en  spécifiant  la  sauvegarde  à  utiliser : RESTORE SPFILE FROM ’sauvegarde’. 

c. Récupération d’un fichier de contrôle 
Dans le cas où vous avez perdu un ou plusieurs fichiers de contrôle, mais qu’il vous en reste encore au moins un,  vous ne devez pas repartir d’une sauvegarde de fichier de contrôle. Vous allez simplement dupliquer un des fichiers  de contrôle restants pour remplacer les fichiers perdus.  Nous supposons que l’instance est arrêtée.  Le mode opératoire est le suivant : 
q

utiliser le fichier d’alerte  de  l’instance pour identifier les fichiers de contrôle endommagés ou perdus et en  déduire qu’il reste bien au moins un fichier de contrôle valide ;  dupliquer une version valide du fichier de contrôle pour la mettre à la place du (des) fichier(s) de contrôle  endommagé(s) ;  redémarrer la base de données (STARTUP). 

q

q

Si  un  fichier  de  contrôle  est  dupliqué  à  un  autre  emplacement  que  l’emplacement  d’origine,  il  faut  modifier  le  paramètre  CONTROL_FILES  dans  le  fichier  de  paramètres  serveur.  Au  lieu  de  redémarrer  directement  la  base  de  données, il faudra procéder de la manière suivante : 
q

Démarrer l’instance, sans monter la base de données 

SQL> STARTUP NOMOUNT
q

Modifier le paramètre CONTROL_FILES dans le fichier de paramètres serveur : 

SQL> ALTER SYSTEM SET CONTROL_FILES= 2 ’f:\oradata\HERMES\control01.ctl’, 3 ’h:\oradata\HERMES\control02.ctl’ -- changement 4 SCOPE=SPFILE;
q

Redémarrer l’instance 

SQL> SHUTDOWN IMMEDIATE SQL> STARTUP La duplication d’une version valide du fichier de contrôle peut s’effectuer dans RMAN, à l’aide d’une variante de la  commande RESTORE CONTROLFILE. Exemple :  RMAN> RESTORE CONTROLFILE FROM ’F:\oradata\HERMES\control01.ctl’ ; La commande traite d’un seul coup tous les fichiers de contrôle manquants en se basant sur la valeur du paramètre  CONTROL_FILES.  Il est également possible de démarrer temporairement avec moins de fichiers de contrôle ; dans ce cas, il sera aussi  nécessaire de modifier la paramètre CONTROL_FILES dans le fichier de paramètres serveur. 

d. Récupération d’un fichier de journalisation 

© ENI Editions - All rights reserved - Algeria Educ

- 9-

Si vous avez perdu un ou plusieurs fichiers de journalisation, mais qu’il vous en reste au moins un par groupe, vous  n’avez  pas  besoin  de  réaliser  de  restauration  ou  de  récupération  de  la  base  de  données.  Vous  allez  simplement  recréer les fichiers de journalisation perdus.  Le mode opératoire est le suivant : 
q

Identifier  le  (les)  fichier(s)  de  journalisation  endommagé(s)  dans  le  fichier  d’alerte  de  l’instance,  dans  le  fichier de trace de LGWR ou dans la vue V$LOGFILE.  Supprimer le membre endommagé 

q

SQL> ALTER DATABASE DROP LOGFILE MEMBER ’nom_fichier’;
q

Ajouter un nouveau membre au groupe concerné 

SQL> ALTER DATABASE ADD LOGFILE MEMBER ’nom_fichier’ 2 TO GROUP numéro;
q

Réitérer les deux opérations précédentes avec tous les membres endommagés. 

Les fichiers de journalisation endommagés ont une colonne STATUS à INVALID dans la vue V$LOGFILE.  Le fichier de journalisation ajouté peut être mis à un autre emplacement ; s’il est remis au même emplacement que  le  précédent,  il  faudra  peut­être  au  préalable  supprimer  physiquement  l’ancien  fichier  (s’il  est  présent,  le  mettre  simplement de côté au cas où) ou utiliser la clause REUSE dans l’ordre SQL.  Vous ne pourrez pas supprimer le membre s’il appartient au groupe courant. Dans ce cas, il faut changer de groupe  courant en exécutant l’ordre SQL ALTER SYSTEM SWITCH LOGFILE. Cet ordre SQL ne peut être exécuté que si la base  de  données  est  ouverte.  Si  la  base  de  données  est  fermée,  et  qu’elle  ne  puisse  pas  être  ouverte  tout  de  suite,  vous pouvez reporter la correction du problème à plus tard ou vous contenter de recréer le membre ; la suppression  pourra avoir lieu plus tard, une fois la base de données ouverte.  Il peut être possible aussi de fonctionner temporairement avec moins de membres dans un groupe de fichiers de  journalisation. 

e. Récupération complète de la totalité de la base de donnéesc en mode ARCHIVELOG 
Ce scénario émet l’hypothèse que vous avez perdu tous les fichiers de données. L’instance est arrêtée.  Le mode opératoire est le suivant : 
q

Monter la base de données 

RMAN> STARTUP MOUNT
q

Restaurer la base de données 

RMAN> RESTORE DATABASE ; Démarrage de restore dans 05/08/08 ... Fin de restore dans 05/08/08
q

Récupérer la base de données 

RMAN> RECOVER DATABASE ; Démarrage de recover dans 05/08/08 ... Fin de recover dans 05/08/08
q

Ouvrir la base de données 

RMAN> ALTER DATABASE OPEN ; Si  vous  n’utilisez  pas  la  zone  de  récupération  rapide  pour  l’archivage,  vous  pouvez  spécifier  l’option  DELETE ARCHIVELOG  dans  la  commande  RECOVE  pour  supprimer  les  fichiers  de  journalisation  archivés  restaurés  au  fur  et  à 
- 10 © ENI Editions - All rights reserved - Algeria Educ

openmirrors.com

mesure de leur application et éventuellement limiter l’espace utilisé par ces fichiers. 

f. Récupération complète d’une partie de la base de données en mode ARCHIVELOG 
Ce scénario émet l’hypothèse que vous avez perdu un ou plusieurs fichiers de données (mais pas tous).  Cette opération peut être réalisée base fermée ou base ouverte, selon la nature du problème. 
q

Si  un  fichier  de  données  du  tablespace  SYSTEM,  ou  un  fichier  du  tablespace  d’annulation  actif  est  perdu,  l’instance  s’est  arrêtée  et  vous  ne  pourrez  pas  ouvrir  la  base  de  données  sans  récupérer  les  fichiers  en  question.  S’il  s’agit d’un  autre  fichier  de  données,  la  base  de  données  peut  rester  ouverte.  Par  contre,  si  elle  était  fermée, elle ne peut pas être ouverte. 

q

Récupération base de données fermée Dans cet exemple, le fichier de données du tablespace SYSTEM est perdu ; l’instance est arrêtée.  Le mode opératoire est le suivant : 
q

Monter la base de données : 

RMAN> STARTUP MOUNT instance Oracle démarrée ...
q

Restaurer les fichiers de données souhaités soit par un RESTORE TABLESPACE, soit par un RESTORE DATAFILE 

RMAN> RESTORE TABLESPACE system ;
q

Récupérer les fichiers de données soit par un RECOVER TABLESPACE, soit par un RECOVER DATAFILE 

RMAN> RECOVER TABLESPACE system ;
q

Ouvrir la base de données 

RMAN> ALTER DATABASE OPEN ; Récupération base de données ouverte Dans cet exemple, le fichier de données du tablespace INDX est perdu (fichier de données numéro 6).  Si  la  base  de  données  est  fermée,  mais  que  vous  souhaitiez  réaliser  la  récupération  base  ouverte  (pour  que  les  utilisateurs puissent recommencer à travailler), commencez par la première partie du mode opératoire. Si la base de  données est déjà ouverte, passez directement à la deuxième partie du mode opératoire.  La première partie du mode opératoire est la suivante : 
q

Monter la base de données 

RMAN> STARTUP MOUNT
q

Mettre OFFLINE les fichiers de données perdus 

RMAN> SQL "ALTER DATABASE DATAFILE 6 OFFLINE";
q

Ouvrir la base de données 

RMAN> ALTER DATABASE OPEN; La deuxième partie du mode opératoire est la suivante : 

© ENI Editions - All rights reserved - Algeria Educ

- 11 -

q

Passer OFFLINE les tablespaces concernés ; vous devez utiliser l’option IMMEDIATE, car un fichier de données  n’est pas accessible 

RMAN> SQL "ALTER TABLESPACE indx OFFLINE IMMEDIATE";
q

Restaurer les fichiers de données souhaités soit par un RESTORE TABLESPACE, soit par un RESTORE DATAFILE 

RMAN> RESTORE DATAFILE 6 ;
q

Récupérer les fichiers de données soit par un RECOVER TABLESPACE, soit par un RECOVER DATAFILE 

RMAN> RECOVER DATAFILE 6 ;
q

Passer ONLINE les tablespaces concernés 

RMAN> SQL "ALTER TABLESPACE indx ONLINE";

g. Récupération de tous les fichiers de contrôle en mode ARCHIVELOG 
Dans  ce  scénario,  nous  supposons  que  nous  avons  perdu  tous  les  fichiers  de  contrôle  ainsi  qu’un  fichier  de  données. Il ne s’agit pas d’une catastrophe car nous disposons de sauvegardes automatiques du fichier de contrôle  (dans  la  zone  de  récupération  rapide)  et  les  fichiers  de  journalisation  en  ligne  sont  disponibles.  L’instance  est  arrêtée.  Le mode opératoire est le suivant : 
q

Démarrer l’instance sans monter la base de données 

RMAN> STARTUP NOMOUNT
q

Restaurer  les  fichiers  de  contrôle  à  partir  d’une  sauvegarde  automatique  (dans  la  zone  de  récupération  rapide). 

RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
q

Monter la base de données 

RMAN> ALTER DATABASE MOUNT ;
s

Restaurer les fichiers de données perdus (déjà vu) 

RMAN> RESTORE DATAFILE 5 ;
q

Récupérer  la  base  de  données  (pas  uniquement  les  fichiers  de  données  car  nous  repartons  d’une  sauvegarde de fichiers de contrôle) 

RMAN> RECOVER DATABASE ;
q

Ouvrir la base de données avec l’option RESETLOGS (obligatoire) 

RMAN> ALTER DATABASE OPEN RESETLOGS ;
q

Vous obtenez une nouvelle "incarnation" de la base de données 

RMAN> LIST INCARNATION OF DATABASE ; Liste des incarnations de base de données DB Key Inc Key DB Name DB ID ------- ------- -------- ---------------1 1 HERMES 3535892647 2 2 HERMES 3535892647

STATUS ------PARENT CURRENT

Reset SCN ---------1 460308

Reset Time ---------16/07/08 05/08/08

openmirrors.com

- 12 -

© ENI Editions - All rights reserved - Algeria Educ

Dans  la  commande  RESTORE CONTROLFILE FROM AUTOBACKUP,  vous  pouvez  spécifier  les  options  DB_RECOVERY_FILE_DEST et DB_NAME (ou DB_UNIQUE_NAME) si les valeurs actuelles ne sont pas correctes. Par contre, si  la sauvegarde automatique du fichier de contrôle n’est pas stockée dans la zone de récupération rapide, le mode  opératoire est différent. Il faut positionner le DBID correspondant à la base de données (SET DBID …), spécifier le  format  utilisé  pour  les  sauvegardes  automatiques  (SET CONTROLFILE AUTOBACKUP FORMAT …)  avant  de  restaurer  la  sauvegarde par un RESTORE CONTROLFILE FROM AUTOBACKUP.  Lorsque vous repartez d’une sauvegarde de fichier de contrôle, RMAN effectue automatiquement un CROSSCHECK et  un  CATALOG RECOVERY AREA  pour  mettre  à  jour  le  référentiel  dans  les  fichiers  de  contrôle  (qui  ne  sont  pas  à  jour  puisqu’ils proviennent d’une sauvegarde), en fonction de la réalité physique des fichiers.  Par ailleurs, vous devez ouvrir la base de donénes avec l’option RESETLOGS. Même si la récupération est complète,  Oracle  considère  que  c’est  une  nouvelle  vie  de  la  base  de  données,  une  nouvelle  « incarnation »  de  la  base  de  données. Les numéros de séquence des fichiers de journalisation vont repartir de zéro.  Dans  les  versions  précédentes  d’Oracle,  toutes  les  sauvegardes  et  tous  les  fichiers  de  journalisation  archivés  antérieurs à l’ouverture en mode RESETLOGS étaient pratiquement inexploitables.  Depuis  la  version  10,  ce  n’est  plus  le  cas.  Lors  d’une  ouverture  en  mode  RESETLOGS,  Oracle  associe  un  numéro  d’activation  à  la  "nouvelle"  base  de  données.  Ce  numéro  d’activation  est  utilisé  par  Oracle  à  différents  endroits,  dont  le  nom  des  fichiers  de  journalisation  archivés  (variable  %r  dans  le  paramètre  LOG_ARCHIVE_FORMAT).  De  cette  manière, Oracle est capable d’associer n’importe quel fichier à une incarnation de la base de données.  Le numéro d’activation courant peut être consulté dans la colonne INCARNATION# de la vueV$DATABASE. L’historique  des  incarnations  d’une  base  de  données  peut  être  consulté  dans  la  vue  V$DATABASE_INCARNATION.  Dans  RMAN,  la  commande LIST INCARNATION donne la liste des incarnations de la base de données.  Dans le fichier des alertes de l’instance, vous trouverez aussi des messages du type :  RESETLOGS after complete recovery through change 460307 Resetting resetlogs activation ID 3535886503 (0xd2c158a7) Tue Aug 05 18:09:16 2008 Setting recovery target incarnation to 2   La notion d’incarnation de base de données est l’un des sujets les plus complexes d’Oracle.

h. Récupération incomplète en mode ARCHIVELOG 
Ce scénario va illustrer la technique de récupération incomplète, en partant d’une situation catastrophe : tout est  perdu (fichier de paramètres serveur, fichiers de contrôle, fichiers de données et fichiers de journalisation en ligne).  L’instance est arrêtée.  Une récupération incomplète est nécessaire dans plusieurs cas : 
q

perte de tous les fichiers de journalisation en ligne (c’est le cas dans ce scénario) ;  perte d’un fichier de journalisation archivé, nécessaire à une récupération ;  retour avant un ordre SQL malencontreux (DROP TABLE, DROP TABLESPACE, DROP USER, etc.). 

q

q

Dans tous les cas, il faudra identifier le point de retour souhaité par une date/heure, un numéro SCN ou un numéro  de séquence de fichier de journalisation.  À  la  fin  de  la  récupération,  il  faudra,  là  encore,  ouvrir  la  base  de  données  avec  l’option  RESETLOGS : c’est  une  nouvelle incarnation de la base de données.  Ce scénario est une combinaison de scénarios déjà étudiés.  Le mode opératoire est le suivant : 
q

Démarrer l’instance sans monter la base de données (RMAN utilise un fichier de paramètres "temporaire" car  le fichier de paramètres serveur est perdu) : 

RMAN> STARTUP NOMOUNT échec du démarrage : ... démarrage de l’instance Oracle sans fichier de paramètres ... instance Oracle démarrée

© ENI Editions - All rights reserved - Algeria Educ

- 13 -

...
q

Restaurer le fichier de paramètres serveur à partir d’une sauvegarde automatique (stockée dans la zone de  récupération rapide pour cet exemple) : 

RMAN> RESTORE SPFILE FROM AUTOBACKUP 2> DB_RECOVERY_FILE_DEST ’H:\oradata\flash_recovery_area’ 3> DB_NAME ’HERMES’;
q

Redémarrer l’instance  sans  monter  la  base  de  données  (démarrage  avec  le  fichier  de  paramètres  serveur  restauré) : 

RMAN> STARTUP NOMOUNT FORCE
q

Restaurer  les  fichiers  de  contrôle  à  partir  d’une  sauvegarde  automatique  (stockée  dans  la  zone  de  récupération rapide pour cet exemple) : 

RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP ;
q

Monter la base de données : 

RMAN> ALTER DATABASE MOUNT ;
q

Restaurer et récupérer la base de données : 

RMAN> RESTORE DATABASE ; ... RMAN> RECOVER DATABASE ; Démarrage de recover dans 06/08/08 ... RMAN-03002: échec de la commande recover à 08/06/2008 07:37:00 RMAN-06054: la récupération après défaillance matérielle requiert un journal inconnu : thread 1, séquence 7 et SCN de début 475124
q

Ouvrir la base de données avec l’option RESETLOGS : 

RMAN> ALTER DATABASE OPEN RESETLOGS ; Dans ce scénario, avec le mode opératoire utilisé ici, il est normal que la commande  RECOVER se termine avec une  erreur puisqu’il manque un fichier de journalisation. Au préalable, la commande RESTORE a effectué automatiquement  un  CROSSCHECK  et  un  CATALOG RECOVERY AREA  pour  mettre  à  jour  le  référentiel  (notamment  les  fichiers  de  journalisation archivés disponibles) dans les fichiers de contrôle ; la commande RECOVER est donc, allée le plus loin  possible  avec  les  éléments  à  sa  disposition.  Avant  d’ouvrir  la  base  dans  le  mode RESETLOGS,  assurez­vous  que  le  numéro de séquence du dernier fichier de journalisation appliqué est conforme à vos attentes.  Dans le cas où nous souhaitons préciser explicitement le point de retour, il est possible d’utiliser une clause UNTIL  dans les commandes RESTORE et RECOVER ; cette clause offre plusieurs options :  UNTIL SCN [=] n  Jusqu’à un numéro SCN (non compris).  UNTIL SEQUENCE[=] n  Jusqu’à un numéro de séquence d’un fichier de journalisation (non compris).  UNTIL TIME [=]’date’  Jusqu’à  une  date/heure  (non  comprise).  Peut  être  spécifié  sous  la  forme  d’une  constante  (au  format  de  date  courant) ou une expression du type ’SYSDATE-1’ ou "TO_DATE(…)".  Dans un bloc RUN, il est aussi possible d’utiliser la commande SET UNTIL avant d’exécuter les commandes RESTORE et  RECOVER : 

openmirrors.com

- 14 -

© ENI Editions - All rights reserved - Algeria Educ

 c’est  gagné.All rights reserved .Algeria Educ .  Néanmoins. RECOVER DATABASE .  il  ne  reste  plus  qu’à  réaliser  une  récupération  en  mode  NOARCHIVELOG.} i. q Si  vous  utilisez  des  sauvegardes  incrémentales  cohérentes  (base  fermée)  de  la  totalité  de  la  base  de  données. comme nous l’avions indiqué précédemment. séquence 7 et SCN de début 475124 Dans  ce  cas. la commande RESTORE précédente aura ramené la dernière sauvegarde de niveau 0.  pour  que  RMAN  applique  les  sauvegardes  incrémentales  de  niveau  1  postérieur  à  la  sauvegarde  de  niveau  0.  si  la  récupération  signale  une  erreur  du  type  suivant. normalement. thread=1. la situation est a priori désespérée :  journal d’archivage introuvable journal d’archivage..  cette  dernière  pouvant  être  une  sauvegarde  incrémentale. Vous pouvez  alors  réaliser  une  récupération  (RECOVER)  avec  l’option  NOREDO.  Vous  pouvez  alors  tenter  une  restauration  de  type  ARCHIVELOG (points e. Récupération en mode NOARCHIVELOG  Dans  ce  scénario. q Restaurer la base de données  RMAN> RESTORE DATABASE. il est peut être envisageable de réaliser une récupération  complète si les fichiers de journalisation sont disponibles et qu’il n’y ait pas eu un cycle complet de basculement des  fichiers  de  journalisation  depuis  la  dernière  sauvegarde. RESTORE DATABASE .  sans  appliquer  les  fichiers  de  journalisation.  Dans ce cas.  à  l’aide  du  mode  opératoire  suivant :  q Démarrer l’instance sans monter la base de données  RMAN> STARTUP NOMOUNT q Restaurer  les  fichiers  de  contrôle  à  partir  d’une  sauvegarde  automatique  (stockée  dans  la  zone  de  récupération rapide pour cet exemple)  RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP. © ENI Editions .  q Si  la  récupération  ne  signale  pas  d’erreur.15 - . la seule solution de récupération consiste à ramener la base de données à l’état où elle  se  trouvait  lors  de  la  dernière  sauvegarde  complète  base  fermée. q Monter la base de données  RMAN> ALTER DATABASE MOUNT .  nous  supposons  que  nous  avons  perdu  tout  ou  partie  de  la  base  de  données  et  que  cette  dernière fonctionne en mode NOARCHIVELOG.RUN { SET UNTIL .) :  q restauration des fichiers de données endommagés ;  récupération des fichiers de données endommagés. ou f.  RMAN> RECOVER DATABASE NOREDO. .. séquence=7 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: échec de la commande recover à 08/06/2008 07:37:00 RMAN-06054: la récupération après défaillance matérielle requiert un journal inconnu : thread 1.  Par  contre.

 vous obtenez une nouvelle incarnation de la base de données ; c’est normal puisque vous être revenu à  un instant donné du passé.  j.  Si vous perdez un fichier de données d’un tablespace temporaire géré localement. Cas particulier du tablespace temporaire géré localement  Les fichiers de données des tablespaces temporaires gérés localement ne sont jamais sauvegardés par RMAN et ne  peuvent donc pas être restaurés.q Ouvrir la base de données avec l’option RESETLOGS (obligatoire)  RMAN> ALTER DATABASE OPEN RESETLOGS . # si la base de données est montée. Là encore. si besoin.  Exemple pour restaurer un fichier de données à un autre emplacement  RUN { # si l’instance est arrêtée. # SET NEWNAME FOR DATAFILE ’e:\oradata\HERMES\data01.DBF Pour  vérifier  que  les  fichiers  de  données  des  tablespaces  temporaire  gérés  localement  sont  bien  présents.  vous  pouvez interroger la vue V$TEMPFILE ou exécuter la commande RMAN REPORT SCHEMA.Algeria Educ . vous trouverez alors des messages du type suivant :  2008-08-07 06:58:51. RECOVER TABLESPACE data . vous n’avez normalement rien de  particulier à faire car Oracle le recrée.  Il  faudra alors utiliser deux commandes supplémentaires dans le processus de restauration :  q Avant  la  restauration  (RESTORE) : SET NEWNAME FOR DATAFILE  pour  indiquer  à  RMAN  le  nouvel  emplacement  d’un fichier de données  SET NEWNAME FOR DATAFILE ’ancien_chemin’ | numéro_fichier TO ’nouveau_chemin’ . la démarrer # et monter la base de données STARTUP MOUNT # # si la base de données est ouverte. # mettre le tablespace ONLINE # SQL "ALTER TABLESPACE data ONLINE" .All rights reserved . q Après la restauration (RESTORE) et avant la récupération (RECOVER) : SWITCH DATAFILE pour mettre à jour le  fichier de contrôle (équivalent à l’ordre SQL ALTER DATABASE RENAME FILE)  SWITCH DATAFILE ALL .dbf’ . } k. RESTORE TABLESPACE data . # mettre le tablespace OFFLINE # SQL "ALTER TABLESPACE data OFFLINE IMMEDIATE" . Récupération à un emplacement différent  Dans  certains  cas. # # si la base de données est ouverte.16 - © ENI Editions . Ces deux commandes doivent être exécutées dans un bloc RUN. automatiquement lors de l’ouverture de la base de données. SWITCH DATAFILE ALL .171000 +02:00 Re-creating tempfile E:\ORADATA\HERMES\TEMP01. l’ouvrir ALTER DATABASE OPEN .  openmirrors.com . Dans  le fichier d’alerte de l’instance.  il  peut  être  impossible  de  restaurer  les  fichiers  de  données  dans  l’arborescence  d’origine.dbf’ TO ’f:\oradata\HERMES\data01.

 les étapes pour diagnostiquer et résoudre les problèmes à l’aide du conseiller sont les suivantes :  q Afficher les échecs actuels (statut OPEN) : LIST FAILURE.  Par  défaut.  Le conseiller peut être utilisé en ligne de commande dans RMAN ou avec une interface graphique dans le Database  Control (cf.  Dans la terminologie du conseiller.  b.Algeria Educ .  Les informations relatives aux échecs sont stockées dans le référentiel de diagnostic automatique. Utilisation  Dans RMAN. Cette commande.  q q q Au  préalable.  vous  pouvez  utiliser  © ENI Editions . si vous jugez qu’une priorité HIGH a peu d’impact sur le fonctionnement de la base de  données et ne nécessite pas de traitement immédiat. Data Recovery Advisor  a. LOW. vous pouvez descendre manuellement la priorité à LOW.  Pour  afficher  tous  les  échecs  "enfants". il convient de résoudre le problème rapidement.  le Data Recovery Advisor nécessite que l’instance soit démarrée (mais la base de donnée peut ne pas être montée  ce qui permet de diagnostiquer et résoudre les incidents sur les fichiers de contrôle).  HIGH.  vous  pouvez  explicitement  recréer  les  fichiers  de  données  des  tablespaces  gérés  localement. Par contre.  L’option  CLOSED  permet  d’afficher  les  échecs  de  statut  CLOSED.En  cas  de  besoin.  Exemple :  SQL> ALTER TABLESPACE temp 2 ADD TEMPFILE ’e:\oradata\HERMES\temp01. les échecs de même nature sont regroupés dans un seul échec "parent" et seuls ces derniers sont  affichés  par  défaut  par  la  commande  LIST FAILURE.All rights reserved . Cet outil est apparu en version 11. LOW  ou ALL  permettent  d’afficher les échecs ayant une priorité donnée (ALL = toutes les priorités). Utiliser le Database Control). il existe une commande CHANGE FAILURE qui permet de modifier le statut ou la priorité.dbf’ SIZE 100M 3 AUTOEXTEND ON NEXT 100M MAXSIZE 1G. CRITICAL. Pour fonctionner. La clause quoi peut prendre une ou plusieurs des valeurs suivantes : ALL.17 - . 7.  La  priorité  est CRITICAL  lorsque  la  base  de  données  est  totalement  indisponible  et  HIGH  si  elle  est  partiellement  indisponible ; dans les deux cas. La priorité LOW n’est pas attribuée  par le conseiller.  Les  options  CRITICAL.  la  commande  LIST FAILURE  affiche  tous  les  échecs  de  statut  OPEN  et  de  priorité  CRITICAL  ou  HIGH. un échec (failure en anglais) sur un fichier est identifié par un numéro unique et  est caractérisé par un statut (OPEN ou CLOSED) et une priorité (LOW.  il  est  possible  d’exécuter  la  commande  VALIDATE DATABASE  pour  vérifier  la  totalité  de  la  base  de  données (mais il faut que la base de données soit montée).  Le statut est OPEN tant que le problème n’a pas été résolu ; il passe à CLOSED ensuite. Vue d’ensemble  Le  Data  Recovery  Advisor  est  un  outil  qui  permet  de  simplifier  et  d’automatiser  le  diagnostic  et  la  résolution  des  problèmes (perte ou corruption) sur les fichiers de la base données. HIGH.  Déterminer les actions à effectuer pour résoudre le(s) problème(s) : ADVISE FAILURE.  La première étape consiste donc à afficher les échecs actuels avec la commande LIST FAILURE. moins utile.  Syntaxe simplifiée  LIST FAILURE [quoi] [DETAIL] .  Pour simplifier. HIGH ou CRITICAL). n’est pas présentée dans cet  ouvrage (voir la documentation "Oracle® Database Backup and Recovery Reference"). CLOSED ou un numéro  d’échec.  Résoudre le(s) problème(s) : REPAIR FAILURE. ADVISE FAILURE  et REPAIR FAILURE.  En complément des commandes LIST FAILURE.  Retourner  à  l’étape  1  pour  confirmer  que  les  problèmes  ont  été  résolus  ou  voir  s’il  reste  encore  des  problèmes.

..Algeria Educ .------------.  Pour  générer  et  afficher  les  actions  à  effectuer  pour  traiter  les  échecs.------565 HIGH OPEN 07/08/08 Un ou plusieurs fichiers de données non système sont absents RMAN> LIST FAILURE 565 DETAIL. la commande ADVISE FAILURE affiche des informations de  résolution  pour  tous  les  échecs  de  statut  OPEN  et  de  priorité  CRITICAL  ou HIGH  enregistrés  dans  le  référentiel  de  diagnostic automatique.------------. La  clause  quoi  peut  prendre  une  ou  plusieurs  des  valeurs  suivantes : ALL.l’option DETAIL.  Syntaxe simplifiée  ADVISE FAILURE [quoi] .  vous  devez  utiliser  la  commande  ADVISE FAILURE. un problème a été détecté sur deux fichiers de données. analyse des options de réparation automatique .  CRITICAL. utilisation du fichier de contrôle de la base de données cible au lieu du catalogue de récupération Liste des échecs de base de données ========================= ID d’échec Priority Status Time Detected Summary ---------.  Les  options  de  la  clause  quoi  permettent  d’afficher  les  informations  de  résolution  pour  un  sous­ensemble  d’échecs ; la signification des différentes options de cette clause est la même que pour la commande LIST FAILURE.-------. utilisation du fichier de contrôle de la base de données cible au lieu du catalogue de récupération Liste des échecs de base de données ========================= ID d’échec Priority Status Time Detected Summary ---------.  HIGH.-----.  Exemple  RMAN> LIST FAILURE .------565 HIGH OPEN 07/08/08 Un ou plusieurs fichiers de données non système sont absents Impact : Voir l’impact des échecs des enfants Liste des échecs enfant de l’ID d’échec parent 565 ID d’échec Priority Status Time Detected Summary ---------.-----.-------.-------.-----. cette opération peut prendre un certain temps canal affecté : ORA_DISK_1 canal ORA_DISK_1 : SID=208 type d’unité=DISK analyse des options de réparation automatique terminée Actions manuelles obligatoires openmirrors.-----.All rights reserved . Liste des échecs de base de données ========================= ID d’échec Priority Status Time Detected Summary ---------.------------.  LOW  ou  un  numéro  d’échec.DBF’ est absent Impact : Il se peut que certains objets dans le tablespace INDX soient indisponibles 1853 HIGH OPEN 07/08/08 Le fichier de données 5: ’E:\ORADATA\HERMES\DATA01.------1859 HIGH OPEN 07/08/08 Le fichier de données 6: ’E:\ORADATA\HERMES\INDX01. Dans ce cas.-----.------565 HIGH OPEN 07/08/08 Un ou plusieurs fichiers de données non système sont absents .com .------------.  La  commande  ADVISE FAILURE  sans  option  peut  être  utilisée  uniquement  si  une  commande  LIST FAILURE  a  été  exécutée au préalable dans la session RMAN.18 - © ENI Editions .DBF’ est absent Impact : Il se peut que certains objets dans le tablespace DATA soient indisponibles Sur cet exemple.  Exemple  RMAN> ADVISE FAILURE .

  la  commande  REPAIR FAILURE  exécute  les  actions  de  la  première  option  de  réparation  automatique. restaurez-le 2. Restaurez et récupérez le fichier de données 6 Stratégie : La réparation comprend une récupération après défaillance matérielle sans perte de données Script de réparation : d:\app\oracle\diag\rdbms\hermes\hermes\hm\ reco_499244267. recover datafile 5. 6.  L’option NOPROMPT permet de supprimer la demande de confirmation.  Exemple  RMAN> REPAIR FAILURE PREVIEW . vous pouvez utiliser la commande  REPAIR FAILURE.  par  exemple.  Les  options  correspondant  à  une  stratégie  sans  perte de données sont toujours proposées en premier.  Pour  chaque option.hm contenu du script de réparation : © ENI Editions .  L’option PREVIEW permet de ne pas exécuter les actions.-----------------1 Restaurez et récupérez le fichier de données 5. une description.19 - .  Pour réparer automatiquement les échecs identifiés par le Data Recovery Advisor. la commande  ADVISE FAILURE affiche trois sections :  Actions  manuelles  obligatoires  :  cette  section  liste  les  opérations  qui  doivent  obligatoirement  être  faites  manuellement  pour  résoudre  le  problème. Par  défaut.Algeria Educ .  Des  actions  manuelles  obligatoires  peuvent. Si le fichier E:\ORADATA\HERMES\DATA01.  Par  exemple. Si le fichier E:\ORADATA\HERMES\INDX01.  Syntaxe  REPAIR FAILURE [USING ADVISE OPTION numéro] [PREVIEW] [NOPROMPT].  être  nécessaires  si  une  sauvegarde  ou  un  fichier  de  journalisation  archivé  requis  par  la  réparation  automatique  sont  manquants. une erreur est retournée. lors de l’exécution effective de la commande. la commande affiche un numéro.hm contenu du script de réparation : # restore and recover datafile restore datafile 5. une stratégie (avec ou sans perte de données) et  le  chemin  du  script  qui  contient  les  commandes  de  réparation.DBF a été renommé ou déplacé involontairement.All rights reserved .  Actions manuelles facultatives : cette section liste les opérations manuelles facultatives qui peuvent permettre de  résoudre  le  problème. RMAN> REPAIR FAILURE NOPROMPT .hm Après avoir affiché des informations sur les échecs trouvés (résultat de la commande LIST FAILURE). 6.  Options  de  réparation  automatique  :  cette  section  liste  les  différentes  options  de  réparation  automatique.  identifiée par la commande ADVISE FAILURE la plus récente exécutée dans la session RMAN ; si aucune commande  ADVISE FAILURE n’a été exécutée dans la session RMAN.DBF a été renommé ou déplacé involontairement.  L’option  USING ADVISE OPTION  permet  d’appliquer  une  option  de  réparation  automatique  spécifique. mais simplement de les prévisualiser à l’écran. Stratégie : La réparation comprend une récupération après défaillance matérielle sans perte de données Script de réparation : d:\app\oracle\diag\rdbms\hermes\hermes\hm\ reco_499244267.  si  un  fichier  de  données  est  manquant.======================== aucune action manuelle n’est disponible Actions manuelles facultatives ======================= 1. restaurez-le Options de réparation automatique ======================== Option Repair Description -----.  identifiée  par  son numéro d’option. Stratégie : La réparation comprend une récupération après défaillance matérielle sans perte de données Script de réparation : d:\app\oracle\diag\rdbms\hermes\hermes\hm\ reco_499244267.  le  conseiller  suggère  que  ce  fichier  a  peut­être  été  involontairement  renommé  ou  déplacé  et  qu’il  peut  donc  être  restauré  sans  devoir  repartir  d’une  sauvegarde.

 Vous devrez donc. 6. exécution du script de réparation Démarrage de restore dans 07/08/08 .  le  conseiller  risque  de  signaler  un  faux  problème  sur  les  fichiers  de  contrôle  si  la  valeur  du  paramètre CONTROL_FILES n’est pas correcte.com . facilite la résolution des problèmes par le Data Recovery Advisor. Récupération)  Avant d’utiliser le conseiller. Fin de restore dans 07/08/08 Démarrage de recover dans 07/08/08 . etc..  Cette situation peut se produire dans le scénario catastrophe où vous avez perdu la totalité de la base de données  (tous les fichiers de contrôle. recover datafile 5.).  Là encore.  Le seul problème que le Data Recovery Advisor ne sait pas résoudre est la perte du fichier de paramètres serveur.  le Data Recovery Advisor ouvrira la base de données dans le mode RESETLOGS. Considérations  Le Data  Recovery  Advisor  est  un  outil  très  puissant  qui  permet  de  diagnostiquer  et  résoudre  un  grand  nombre  de  problèmes sur les fichiers de contrôle.20 - © ENI Editions . les fichiers de journalisation ou les fichiers de données.  openmirrors. vous devrez restaurer manuellement le fichier de paramètre serveur (cf.# restore and recover datafile restore datafile 5.. RECOVER.  RMAN  affiche  le  résultat  des  différentes  commandes  exécutées (RESTORE. tous les fichiers de journalisation et tous les fichiers de données).  c.  Si la situation l’exige (récupération incomplète ou récupération à partir d’une sauvegarde des fichiers de contrôle).  Dans  le  cas  où  tous  les  fichiers  de  contrôle  sont  perdus. Vous pouvez notamment rencontrer cette situation si RMAN a démarré  l’instance avec un fichier de paramètre "temporaire" (message démarrage de l’instance Oracle sans fichier de paramètres pour extraction de SPFILE). utiliser une zone de récupération rapide. puis  ADVISE FAILURE  puis  REPAIR FAILURE)  avant  de  faire  de  nouveau  appel  au  conseiller  pour  identifier  les  autres  problèmes éventuels (LIST FAILURE) et si besoin.  le  Data  Recovery  Advisor  commencera  par  signaler  ce  problème  et  ne  sera  pas  forcément  en  mesure  d’identifier  tout  de  suite  d’autres  problèmes  (sur  les  fichiers  de  données par exemple). Fin de recover dans 07/08/08 réparation de l’échec terminée base de données ouverte Lors  de  l’exécution  effective  des  actions  de  réparation..Algeria Educ .. et faire des sauvegardes automatiques du fichier de contrôle  vers cette zone de récupération rapide. d’abord traiter le problème sur les fichiers de contrôle (LIST FAILURE. 6. assurez­vous que l’instance a bien démarré avec un fichier de paramètres à jour. Si  besoin. Si ce  n’est  pas  le  cas.All rights reserved . les résoudre (ADVISE FAILURE puis REPAIR FAILURE).

  La fonctionnalité Flashback  Data  Archive  (Oracle Total Recall) est une option de l’Enterprise Edition et nécessite donc.  Ces fonctionnalités utilisent des techniques différentes mais pour répondre au même objectif : récupérer une erreur  d’utilisation.  Flashback Transaction Query : permet de voir les modifications réalisées par une ou plusieurs transactions sur  un certain intervalle de temps (apparu en version 10). Flashback Version Query et Flashback Transaction Query). ou de ramener une table ou la totalité de la base de données dans le passé.  La fonctionnalité de flashback avant suppression d’une table (Flashback Drop) utilise le fait que le stockage d’une table  n’est pas physiquement supprimé lorsque la table est supprimée.All rights reserved .  Flashback  Data  Archive  (Oracle  Total  Recall) : permet  de  conserver  sur  le  long  terme. mais sans option supplémentaire.1- .  et  de  ses  transactions  dépendantes (apparu en version 11).  n’est pas présentée dans cet ouvrage.  toutes  les  modifications  apportées à une table (apparu en version 11).  La fonctionnalité de flashback de base de données (Flashback Database) utilise un fichier journal spécifique.  Les autres fonctionnalités de flashback nécessitent l’Enterprise Edition.  Flashback Table : permet de ramener une table dans l’état où elle était.  Flashback  Version  Query : permet  de  voir  toutes  les  versions  d’une  ligne  sur  un  certain  intervalle  de  temps  (apparu en version 10). juste avant sa suppression (apparu en  version 10). différent  des fichiers de journalisation.  Flashback Drop: permet de ramener la table dans l’état où elle était.  une licence supplémentaire.  Les fonctionnalités proposées sont les suivantes :  q Flashback  Query:  permet  de  lire  les  données  telles  qu’elles  étaient  à  un  instant  dans  le  passé  (apparu  en  version 9). donc la base de données doit fonctionner dans le mode ARCHIVELOG).  si  vous  souhaitez  pouvoir retourner loin dans le passé. utilisent les informations d’annulation pour revenir en arrière.  Flashback  Database : permet  de  ramener  la  totalité  de  la  base  de  données  dans  l’état  où  elle  était  à  un  certain moment dans le passé (apparu en version 11).  La  fonctionnalité  de flashback  de  transaction  (Flashback Transaction)  utilise  les  fichiers  de  journalisation  (en  ligne  et  archivés.Algeria Educ . Le paramètre  UNDO_RETENTION  et  le  tablespace  d’annulation  doivent  donc  être  correctement  dimensionnés. un peu avancée. Cette fonctionnalité n’est pas présentée dans cet ouvrage.  et la fonctionnalité de flashback de table. Niveau ligne  Flashback Query © ENI Editions . Vue d’ensemble  Les techniques de flashback sont un ensemble de fonctionnalités proposées par Oracle qui permettent de voir l’état  passé des données.  2. Cette fonctionnalité.Les techniques de flashback  1.  Les fonctionnalités de flashback de requête (Flashback Query. à un certain moment dans le passé  (apparu en version 10).  Flashback  Transaction:  permet  d’annuler  les  modifications  d’une  transaction.  q q q q q q q Seule  la  fonctionnalité  Flashback  Query  est  disponible  dans