L'instance et le paramétrage d'Oracle

L'instance

Une instance est caractérisée par son identificateur : SID, généralement une variable ORACLE_SID positionnée dans l'environnement.
Une instance active, en mémoire ce sont :
- des programmes de fond (services ou processus) qui assurent la maintenance du serveur de données et les entrées / sorties fichiers
- des process server (dédiés ou non à un utilisateur)
- et une zone globale partagée : la SGA, qui contient essentiellement du cache de buffers

Pour un serveur 8.1.5 (Oracle 8i) sous NT on aura par exemple les principaux services suivants :
- Oracle_nom_home_oracle_TNSListener : qui indique un serveur SQLNet présent (et actif ici) sur la machine

- OracleServicenom_de_la_base : qui indique qu'un serveur Oracle est présent (et actif ici) sur la machine

Voir le panneau de configuration NT / services pour info :


ici la base s'appelle b8i1 et le oracle home 'Ora81'

Sur Unix un certain nombre de 'Background processes' tournent sur la machine, le proprétaire est généralement l'utilisateur Oracle (ce qui permet de les identifier). Les noms de process sont également suffixés par le nom de l'instance auquels ils sont attachés

Nous sommes ici sur une machine Unix, avec Oracle 8.0.5 d'installé. On a filtré les process actifs sur le mot oracle. On remarque ici que 2 bases sont actives : l'une s'appelle TESUN et l'autre DEVUN. On reconnait les process de fond DBWR, LGWR, PMON, SMON, RECO notamment et deux process utilisateur distants connectés à TESUN...

Préliminaires sur l'identification des bases et des instances

ORACLE_SID
Une base LOCALE est identifié par un simple paramètre d'environnement (ou une entrée dans la base de registre sous Windows : le ORACLE_SID. Ainsi si on est connecté directement sur le serveur (login Windows ou session telnet Unix) et que cette variable est positionnée, on se connecte à la base courante sans rien préciser de plus. Par exemple :
$ echo $ORACLE_SID
$ ORACLE_SID = ?
$ ORACLE_SID = TEST
$ export ORACLE_SID
$ sqlplus SCOTT/TIGER

se connecte par défaut à la base identifiée dans l'environnement de ma session Unix (ici TEST)

DB_NAME
DB_NAME est un paramètre ORACLE (inconnu au niveau OS). C'est le nom de la base qui correspond a celui du CREATE DATABASE, et est identique pour toutes les instances d'une base multi instance.

INSTANCE_NAME
est un paramètre ORACLE (inconnu au niveau OS) qui identifie une instance particulière dans une base multi instances (Architecture Oracle Real Application Cluster ou R.A.C). EN architecture standard est superflu ou identique au DB_NAME.

SERVICE_NAMES
paramètre Oracle qui identifie à quel service appartient une instance. Ceci est utile en architecture R.A.C ou en cas de Stand By Database

Le paramétrage de l'instance

Ces paramètres peuvent être statiques ou dynamiques (pris en compte immédiatement ou au prochain redémarrage de la base), fugaces (tant que la base est on line) ou persistants.
Il permettent de dimensionner la SGA et de fixer les limites concernant les ressources système d'Oracle (mémoire RAM et background processes).
Lorsqu'une base est démarrée (commande STARTUP) soit on précise un fichier texte de paramètre explicite, soit un fichier serveur SPFILE binaire est utilisé par défaut :

SQL> STARTUP PFILE=/mon_chemin/mon_fichier_dinitialisation
utilise le fichier spécifié
ou
SQL> STARTUP
utilise le fichier SPFILE par défaut.


Le fichier de paramétrage init.ora

C'est un fichier texte, contenant des lignes au format "nom_du_paramètre = valeur_du_paramètre" et des commentaires introduits par un '#'.
Il contient au minimum le nom de la base et le nom du (ou des) fichier(s) de contrôle de la base :

Il est possible d'inclure des fichiers de paramétrage externe (jusqu'a 3 niveaux d'imbrication) grace au paramètre IFILE :
IFILE = tronc_commun.ora par exemple.

# exemple de fichier init.ora pour la base TEST
#
DB_NAME = TEST
INSTANCE_NAME= STEST
CONTROL_FILES = ( /disque1/control1.ctl, /disque2/control2.ctl )

Par défaut, le nom du fichier init.ora est suffixé par le ORACLE_SID de la base : init$ORACLE_SID.ORA.

exemple : initTEST.ora pour la base TEST

L'emplacement standard est situé avec les fichiers bases à savoir :

sur Unix

sur Unix $ORACLE_HOME/dbs
sur windows $ORACLE_HOME\database

Le fichier de paramètre serveur binaire (SP FILE)

Ce fichier binaire (non éditable cette fois) est géré de manière transparente par Oracle et permet de rendre les changements de paramètres dynamiques persistants (malgré les arrêts / redémarrages éventuels de la base).
Son nom par défaut est spfile$ORACLE_SID.ora

on peut vérifier le SPFILE utilisé en visualisant les paramètres courants sous SQL+ :

SQL> show parameters spfile
NAME    TYPE    VALUE
------- ------- -------------------------- 
spfile string /data/prdun/spfilePRDUN.ora

Il peut être créé par la commande CREATE SPFILE, à partir d'un fichier d'initialisation :

SQL> CREATE SPFILE [= chemin/nom_du_spfile ] FROM PFILE = 'mon_chemin/mon_init.ora'

On peut réciproquement exporter un SPFILE sous forme de ficheir d'initialisation standard, à des fins de vérification ou de sauvegarde

SQL > CREATE PFILE= mon_init.ora FROM SPFILE=mon_sp_file

En résumé

Tentons de résumer ces différentes possibilités dans un tableau compact et néanmoins quadrillé :

type de paramètre ressource
utilisée
délai de prise
en compte
persistance commande ou méthode de modification
statique fichier INIT.ORA au prochain STARTUP oui édition du fichier INIT.ORA
statique fichier SPFILE binaire au prochain STARTUP oui ALTER SYSTEM...SCOPE=SPFILE
dynamique mémoire centrale immédiat non ALTER SYSTEM...SCOPE=MEMORY
dynamique fichier SPFILE binaire immédiat oui ALTER SYSTEM...SCOPE=BOTH

quelques exemples de paramétrage

$ edit initTEST.ora
...
SESSIONS = 200 (SESSIONS est un paramètre statique, ancienne valeur 100)
...
$ sqlplus system 'connect as sysoper'
SQL> SHUTDOWN DATABASE IMMEDIATE
SQL> STARTUP DATABASE

$sqlplus system/manager
SQL> ALTER SESSION SET NLS_TERRITORRY = france
SQL> ALTER SYSTEM SET SERVICE_NAMES = STEST SCOPE=SPFILE

les paramètres courants peuvent être consultés par la commande SHOW PARAMETERS de SQL + ou dans les vues dynamiques du dictionnaire : v$PARAMETER, v$PARAMETER2, V$SPPARAMETER



modifié
le 20/11/2006

Ecrire a DD
ecris
moi


les forums techniques Oracle

mon BLOG Oracle,
en Francais
connaitre DD
l'autre vie
de DD

mon CV

trucs
et astuces

JOBs Oracle
du jour
Homepage "Tout sur Oracle"
Mon site :
Tout sur Oracle (et le web)
Copyright (C) 2002
Utilisation de ces documents