Blog ENI : Toute la veille numérique !
💥 Un livre PAPIER acheté
= La version EN LIGNE offerte pendant 1 an !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Démarrage et arrêt

Principes

Pour rendre une base accessible à tous les utilisateurs, il faut démarrer une instance et ouvrir la base de données avec cette instance.

Il y a trois grandes phases dans le processus de démarrage :

  • démarrage de l’instance ;

  • montage de la base de données ;

  • ouverture de la base de données.

De même, il y a trois grandes phases dans le processus d’arrêt :

  • fermeture de la base de données ;

  • démontage de la base de données ;

  • arrêt de l’instance.

Une instance peut être démarrée avec trois niveaux successifs de disponibilité de la base de données, correspondant aux trois phases du démarrage :

  • instance démarrée (état NOMOUNT) ;

  • base montée (état MOUNT) ;

  • base ouverte (état OPEN).

Lors du démarrage de l’instance, le fichier de paramètres est lu, la SGA est allouée et les processus d’arrière-plan sont démarrés. À ce stade, seule l’instance est lancée ; il n’y a pas de base de données associée. Les vues dynamiques relatives à l’instance (V$INSTANCE, V$SGA, V$OPTION, V$PARAMETER, V$VERSION, etc.) sont interrogeables mais pas les vues dynamiques relatives à la base de données (V$DATABASE par exemple).

Cet état est principalement...

Démarrage

1. Utiliser SQL*Plus ou SQLcl

a. La commande STARTUP

Dans SQL*Plus ou SQLcl, la commande STARTUP permet de démarrer une instance et de lui associer une base avec le niveau de disponibilité souhaité.

Syntaxe simplifiée

STARTUP [NOMOUNT | MOUNT [nom_base] | OPEN [nom_base]]  
      [RESTRICT] [PFILE=nom_fichier] 

Avec :

NOMOUNT | MOUNT | OPEN

niveau de disponibilité souhaité.

nom_base

nom de la base à monter ou à ouvrir.

RESTRICT

restreint l’accès à la base aux utilisateurs ayant le privilège RESTRICTED SESSION.

PFILE

nom du fichier de paramètres à utiliser.

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 Gérer les droits dans le chapitre Gestion des utilisateurs et de leurs droits) peuvent effectivement se connecter ; généralement, ce privilège n’est donné qu’aux administrateurs.

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é. Exemples :

  • réorganiser le stockage d’une table, reconstruire des index ;

  • faire un export ou un import ;

  • faire un chargement de données avec SQL*Loader.

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.

Lorsque l’opération est terminée, il est possible de quitter le mode restreint avec l’ordre SQL :

ALTER SYSTEM DISABLE RESTRICTED SESSION; 

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>.ora et spfile<SID>.ora.

L’emplacement par défaut de ces deux fichiers dépend de la plate-forme :

  • %ORACLE_HOME%\database (Windows) ;

  • $ORACLE_HOME/dbs (Unix/Linux).

En ce qui concerne le fichier de paramètres texte...

Arrêt

1. Utiliser SQL*Plus ou SQLcl

a. La commande SHUTDOWN

Dans SQL*Plus ou SQLcl, la commande SHUTDOWN permet de fermer la base et d’arrêter l’instance.

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.

IMMEDIATE

Oracle déconnecte tous les utilisateurs (en effectuant un ROLLBACK des éventuelles transactions en cours) puis ferme proprement la base de données.

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.

ABORT

Oracle déconnecte tous les utilisateurs (sans effectuer de ROLLBACK des éventuelles transactions en cours) puis ferme "brutalement" la base 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.

Le processus de l’arrêt est le suivant :

  • La base de données est fermée.

  • La base de données est démontée.

  • L’instance est arrêtée (les processus d’arrière-plan sont arrêtés et la SGA est libérée).

Un arrêt est forcément complet ; il n’est pas possible de s’arrêter dans un état intermédiaire (MOUNT ou NOMOUNT). Pour passer une base ouverte (OPEN) en état monté (MOUNT), il faut arrêter la base (SHUTDOWN) et la redémarrer dans l’état...

Automatisation et scripts

1. Sur plate-forme Unix ou Linux

a. Automatisation

Sur plate-forme Unix ou Linux, 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 Installation. Ce script de démarrage appelle les scripts dbstart et dbshut fournis par Oracle.

Extraits du script

ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart  
/u01/app/oracle/product/19.0.0/dbhome_1 
ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut  
/u01/app/oracle/product/19.0.0/dbhome_1 

Les scripts dbstart et dbshut utilisent le fichier /etc/oratab pour déterminer quelles sont les bases de données à démarrer ou arrêter automatiquement. Ce fichier contient une ou plusieurs lignes de la forme suivante :

<ORACLE_SID>:<ORACLE_HOME>:{Y|N} 

Exemple

ORCL:/u01/app/oracle/product/12.1.0/dbhome_1:Y 

L’emplacement du fichier oratab peut varier selon le système d’exploitation. Consultez la documentation Installation Guide de votre plate-forme.

Pour démarrer ou arrêter automatiquement une base de données, il suffit de mettre un Y dans le dernier champ de la ligne correspondant à la base de données.

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.

Si vous avez plusieurs versions d’Oracle sur votre serveur, utilisez les scripts dbstart et dbshut de la version la plus récente (ajustez les chemins en conséquence).

b. 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, mais la syntaxe n’est...

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 tentez de vous connecter à une base de données non ouverte sans utiliser de connexion SYSDBA. 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)

Connectez-vous AS SYSDBA et interrogez la colonne STATUS de V$INSTANCE.

 

ORA-01034: ORACLE not available 

Explication

L’instance est arrêtée.

Cause(s)

Vous tentez de vous connecter à une instance Oracle arrêtée sans utiliser de connexion SYSDBA.

Action(s)

Connectez-vous AS SYSDBA et démarrez l’instance.

 

ORA-01081: impossible de lancer ORACLE déjà en cours - fermer d'abord le thread 

Explication

Vous tentez de démarrer une instance déjà démarrée.

Cause(s)

Vous n’êtes pas connecté à la bonne instance. Vous tentez de passer d’un état NOMOUNT ou MOUNT à OPEN en faisant un STARTUP.

Action(s)

Interrogez V$INSTANCE pour vérifier à quelle instance vous êtes connecté. Si vous n’êtes pas sur la bonne instance, reconnectez-vous (après avoir modifié ORACLE_SID ou en utilisant le bon nom de service réseau). Pour passer une base...