Vous êtes sur la page 1sur 9

Objet Utilisation de SPFILE et INIT.

ORA

Auteur Petra Knöbl (petra.knoebel@trivadis.com)

Nature des informations Informations à caractère technique (mars 2002)

Source Extrait du cours NF9i et du séminaire Techno-Circle NF9i


de Trivadis

Introduction

Oracle9i augmente régulièrement la liste des paramètres qui sont modifiables sans pour
autant avoir à redémarrer la base de données. L’administrateur de bases de données doit
dans ce cas, impérativement penser à apporter ces modifications dans le fichier des
paramètres avant le prochain redémarrage. Grâce à l’utilisation des fichiers SPFILE (Server
Parameter Files), Oracle9i permet d'effectuer dynamiquement les modifications de ces
paramètres dans le fichier de paramètres, de manière à toujours garantir une cohérence
entre le contenu du fichier et les modifications effectuées avec ALTER SYSTEM.

SPFILE et INIT.ORA
Jusqu’à la version 8i d’oracle, les paramètres d’initialisation étaient habituellement
sauvegardés dans un fichier texte INIT.ORA. Dans Oracle9i, l’utilisation de fichiers SPFILE
(Server Parameter Files) est également possible. Un fichier SPFILE peut être considéré
comme un référentiel de paramètres d’initialisation, résidant sur le serveur de bases de
données.

Les fichiers SPFILE sont des petits fichiers binaires qui ne peuvent être modifiés. Toute
modification de ces fichiers entraîne leur corruption, ce qui a pour conséquence l’échec du
démarrage de l’instance ou la panne de l’instance active.

^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^G^@^@^@^@^B...^@^@^@^@^@^@^@^
@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^G^@^@^@^@^B...
@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
*.db_block_size=8192*.db_block_size=8192
*.db_domain='ttc.trivadis.com'*.db_domain='ttc.trivadis.com'
*.db_file_multiblock_read_count=16*.db_file_multiblock_read_count=16
*.db_files=1022*.db_files=1022
*.db_name='TVD901A'*.db_name='TVD901A'
...
*. : toutes les instances de ce système de bases de données. Format valide pour les fichiers
INIT.ORA conventionnels. Particulièrement intéressant dans le cas de RAC.

Lors du démarrage de la base de données, la commande de démarrage effectue, sans


indication de fichier PFILE, une recherche dans l’emplacement par défaut du système
d’exploitation ($ORACLE_HOME/dbs sous UNIX, $ORACLE_HOME\database sous NT) :
1. spfile${ORACLE_SID}.ora
2. spfile.ora
3. init${ORACLE_SID}.ora

Vous avez toujours la possibilité de spécifier explicitement un fichier PFILE.


SQL> connect sys/manager as sysdbaSQL> connect sys/manager as
sysdba
Connected to an idle instance.Connected to an idle instance.
SQL> startup pfile=/u00/app/oracle/admin/TVD901A/pfile/initTVD901A.oraSQL>
startup pfile=/u00/app/oracle/admin/TVD901A/pfile/initTVD901A.ora
ORACLE instance started.ORACLE instance started.

Total System Global Area 172967504 bytesTotal System Global Area


172967504 bytes
...
SQL>SQL>

Toutefois, lors d’un démarrage (STARTUP) avec indication de fichier PFILE, aucun fichier
SPFILE ne peut être indiqué :
SQL> startup pfile='/u00/app/oracle/admin/TVD901A/pfile/spfileTVD901A.ora'SQL>
startup pfile='/u00/app/oracle/admin/TVD901A/pfile/spfileTVD901A.ora'
LRM-00101:LRM-00101: unknown parameter name 's044'
ORA-01078:ORA-01078: failure in processing system parameters

Pour permettre l’indication d’un fichier SPFILE, il est recommandé de créer un fichier
INIT.ORA conventionnel et de lui attribuer son nom par défaut :
init${ORACLE_SID}.ora
Ce fichier contient uniquement le chemin d’accès au fichier SPFILE :
SPFILE = c:\oracle\admin\db1\pfile\spfileDB1.oraSPFILE =
c:\oracle\admin\db1\pfile\spfileDB1.ora

Création d’un fichier SPFILE

Un fichier SPF est initialement créé à partir d’un fichier de paramètres d’initialisation
conventionnel (PFILE, INIT.ORA). Cette opération est réalisable même si aucune instance
n’est lancée, la seule condition préalable à la création d’un tel fichier étant de posséder les
privilèges SYSDA ou SYSOPER.

Si le fichier SPFILE existe déjà dans l’emplacement par défaut, la procédure de démarrage
(STARTUP) sans indication de fichier PFILE utilise le fichier SPFILE existant.
Pour créer un fichier SPFILE dans l’emplacement par défaut à partir d’un fichier PFILE :
SQL> CREATE SPFILE SQL> CREATE SPFILE
2 FROM PFILE='/u00/app/oracle/admin/TVD901A/pfile/initTVD901A.ora';2 FROM
PFILE='/u00/app/oracle/admin/TVD901A/pfile/initTVD901A.ora';

File created.File created.

SQL>SQL>
Pour créer un fichier SPFILE dans un emplacement différent de l’emplacement par défaut à
partir d’un fichier PFILE :
SQL> CREATE SPFILE='/u00/app/oracle/admin/TVD901A/pfile/spfileTVD901A.ora'SQL>
CREATE SPFILE='/u00/app/oracle/admin/TVD901A/pfile/spfileTVD901A.ora'
2 FROM PFILE='/u00/app/oracle/admin/TVD901A/pfile/initTVD901A.ora';2 FROM
PFILE='/u00/app/oracle/admin/TVD901A/pfile/initTVD901A.ora';

File created.File created.

SQL>SQL>

Oracle préconise l’utilisation de l’emplacement par défaut (pour faciliter


l’administration☺). Trivadis recommande de sauvegarder les fichiers de paramètres hors
des répertoires du logiciel (OFA).

Sous NT/WIN2000, nous vous recommandons de créer un fichier INIT.ORA


(conventionnel), qui contient uniquement le chemin d’accès au fichier SPFILE, dans
l’emplacement par défaut et de lui attribuer son nom par défaut.

Sous UNIX, le cas échéant, utilisez des liens :


sqlplus "/ as sysdba"sqlplus "/ as sysdba"
startup
create spfile='/u00/app/oracle/admin/TDBT901A/pfile/spfileTVD901A.ora' from
pfile='/u00/app/oracle/admin/SID/pfile/initTVD901A.ora';startup
create spfile='/u00/app/oracle/admin/TDBT901A/pfile/spfileTVD901A.ora' from
pfile='/u00/app/oracle/admin/SID/pfile/initTVD901A.ora';
shutdown immediateshutdown immediate
exitexit
cd $ORACLE_HOME/dbscd $ORACLE_HOME/dbs
ln -s /u00/app/oracle/admin/TDBT901A/pfile/spfileTVD901A.ora .ln -s
/u00/app/oracle/admin/TDBT901A/pfile/spfileTVD901A.ora .
sqlplus "/ as sysdba"sqlplus "/ as sysdba"
startupstartup

« Backup » d’un fichier SPFILE

Un backup (sauvegarde) du fichier SPFILE peut être effectué à l’aide de la commande


CREATE FILE :
SQL> CREATE
PFILE='/u00/app/oracle/admin/TVD901A/pfile/bck_init.ora'SQL> CREATE
PFILE='/u00/app/oracle/admin/TVD901A/pfile/bck_init.ora'
2 FROM SPFILE;2 FROM SPFILE;
File created.File created.
SQL> SQL>

Cette commande permet de créer un fichier INIT.ORA directement utilisable :


*.background_dump_dest='/u00/app/oracle/admin/TVD901A/bdump'*.bac
kground_dump_dest='/u00/app/oracle/admin/TVD901A/bdump'
*.compatible='9.0.1'*.compatible='9.0.1'
*.control_file_record_keep_time=90*.control_file_record_keep_time
=90
*.core_dump_dest='/u00/app/oracle/admin/TVD901A/cdump'*.core_dump
_dest='/u00/app/oracle/admin/TVD901A/cdump'

Il serait sans aucun doute judicieux de conserver un fichier PFILE à titre de backup
(sauvegarde) du fichier SPFILE afin de pouvoir, « au pire des cas », créer un nouveau fichier
SPFILE à partir du fichier PFILE de sauvegarde. Il vous est, par exemple, possible
d’automatiser la création d’une copie de sauvegarde du fichier PFILE à partir d’un fichier
SPFILE dans le cadre des tâches de sauvegarde nocturnes ou du déclenchement du
démarrage.

SQL> CREATE OR REPLACE TRIGGER copy_spfile


2 AFTER STARTUP ON DATABASE
3 DECLARE
4 cPath CONSTANT varchar2(80) := 'D:\oracle\admin\DB9\pfile';
5 BEGIN
6 EXECUTE IMMEDIATE
7 'create pfile='''||cPath||'\initora.'||
8 TO_CHAR(SYSDATE,'yyyymmdd_hh24mi')||''' from spfile';
9 EXCEPTION
10 WHEN others THEN NULL;
11 END;
12 /

Déclencheur créé.
SQL>

Modifications dans le fichier SPFILE

Il existe deux méthodes de modification du fichier SPFILE :


1. via la commande ALTER SYSTEM
2. via la méthode d’exportation (Export)

1. Modifications via ALTER SYSTEM

La condition préalable à la mise en œuvre de cette méthode est l’utilisation, directe ou via
un fichier INIT.ORA contenant le paramètre SPFILE=spfileSID.ora, d’un fichier SPFILE lors
du DÉMARRAGE de l’instance.
Lors l’utilisation de fichiers SPFILE, il vous est possible de modifier de manière définitive, si
vous le souhaitez, des paramètres du fichier SPFILE (utilisé lors du démarrage) à l’aide de la
commande ALTER SYSTEM.

L’étendue (SCOPE) des modifications est indiquée dans la commande ALTER SYSTEM :
Mémoire (par défaut, lorsqu’ un fichier INIT.ORA conventionnel est utilisé au
démarrage)

SPFILE

LES DEUX (par défaut, si un fichier SPFILE a été utilisé lors du démarrage)
SQL> CONNECT / AS SYSDBASQL> CONNECT / AS SYSDBA
Connected.Connected.
SQL> ALTER SYSTEM SET shared_pool_size = 48M SCOPE=BOTH;SQL>
ALTER SYSTEM SET shared_pool_size = 48M SCOPE=BOTH;
System altered.System altered.
SQL>SQL>

Seul SCOPE=SPFILE peut être utilisé pour les paramètres statiques. La modification est
activée lors du prochain démarrage (STARTUP) :
SQL> CONNECT / AS SYSDBASQL> CONNECT / AS SYSDBA
Connected.Connected.
SQL> ALTER SYSTEM SET db_block_buffers = 20000 SCOPE=SPFILE;SQL>
ALTER SYSTEM SET db_block_buffers = 20000 SCOPE=SPFILE;
System altered.System altered.
SQL>SQL>

Lors de modifications, il vous est possible de spécifier des commentaires qui pourront être
pris en considération aussi bien dans le fichier SPFILE que dans l’attribut
UPDATE_COMMENT de V$PARAMETER et V$SPPARAMETER.
SQL> ALTER SYSTEM SET timed_statistics=TRUE SQL> ALTER SYSTEM SET
timed_statistics=TRUE
2 COMMENT='DB-Review by Trivadis' SCOPE=BOTH;2 COMMENT='DB-
Review by Trivadis' SCOPE=BOTH;
System altered.System altered.
SQL>SQL>

Les paramètres peuvent être supprimés de la manière suivante dans le fichier SPFILE :
SQL> alter system reset sort_area_size scope=spfile sid='*';SQL>
alter system reset sort_area_size scope=spfile sid='*';
System altered.System altered.
SQL>SQL>
Toutefois, cette méthode ne fonctionne pas pour les paramètres comprenant plusieurs
lignes. (Seule la première ligne est supprimée et l’instance ne peut plus démarrer !) Dans ce
cas, définissez tout d’abord le paramètre sur ’’ et supprimez-le.

Les paramètres complexes peuvent être spécifiés de la manière suivante :


SQL> ALTER SYSTEM SETSQL> ALTER SYSTEM SET
2 log_archive_dest_3='LOCATION=/u01/oracle/arc',MANDATORY,'REOPEN=2'2
log_archive_dest_3='LOCATION=/u01/oracle/arc',MANDATORY,'REOPEN=2'
3 COMMENT='Added 3rd destination 23.06.2001' SCOPE=SPFILE;3
COMMENT='Added 3rd destination 23.06.2001' SCOPE=SPFILE;
System altered.System altered.
SQL>SQL>

Les paramètres non documentés peuvent également être définis :


SQL> ALTER SYSTEM SET "_collect_undo_stats"=FALSE
SCOPE=SPFILE;SQL> ALTER SYSTEM SET "_collect_undo_stats"=FALSE
SCOPE=SPFILE;
System altered.System altered.
SQL>SQL>

2. Méthode de l’exportation

Pour mettre en œuvre cette méthode, il faut tout d’abord exporter le contenu du fichier
SPFILE dans un fichier PFILE :
SQL> CREATE PFILE='initDB1test.ora' FROM SPFILE;SQL> CREATE
PFILE='initDB1test.ora' FROM SPFILE;
File created.File created.
SQL> SQL>

Vous pouvez à présent modifier les valeurs des paramètres dans le fichier PFILE.
Ensuite, vous devez recréer le fichier SPFILE à partir du fichier PFILE modifié
’initDB1test.ora’ :
SQL> CREATE SPFILE 'spfileDB1.ora'SQL> CREATE SPFILE 'spfileDB1.ora'
2 FROM PFILE='initDB1test.ora';2 FROM PFILE='initDB1test.ora';
File created.File created.
SQL>SQL>

Un fichier SPFILE a-t-il été utilisé lors du démarrage (STARTUP) ? Si oui, lequel ?

La vue V$PARAMETER vous indique si un fichier SPFILE a été utilisé lors du démarrage
(STARTUP) ainsi que son nom, le cas échéant.
SQL> select name, value from v$parameter where name='spfile'
NAME VALUE
--------------- ----------------------------------------
spfile C:\oracle\admin\db9\pfile\spfiledb9.ora
SQL>

Le paramètre spfile est indiqué dans le fichier alertSID.log si l’instance a été démarrée à
l’aide d’un fichier initSID.ora, qui lui-même renvoie à un fichier SPFILE. Si le paramètre
SPFILE ne figure pas dans le fichier alertSID.log, un fichier SPFILE par défaut ou PFILE
(fichier INIT.ORA conventionnel) a été utilisé lors du démarrage (STARTUP).

De plus, sous NT, il faut également veiller à ce que le démarrage automatique avec les
entrées de registre ORA_<sidname<_AUTOSTART=TRUE et
ORA_<sidname>_PFILE=<full path to the PFILE> corresponde à la commande
STARTUP PFILE=xxx. Le démarrage automatique de la base de données n’utilise pas le
fichier SPFILE. Si la base de données est démarrée à partir de la ligne de commande, et
dans le cas où un fichier SPFILE existe, il se peut que d’autres paramètres aient été pris en
compte lors du démarrage de la base de données.
Vous pouvez éviter cela en supprimant les entrées de registre ou en créant un fichier
INIT.ORA qui contient uniquement le CHEMIN D’ACCÈS au fichier SPFILE.

Visualisation de paramètres

L’affichage des paramètres peut être réalisé à l’aide de :


OEM (Oracle Enterprise Manager)

la fonction SHOW PARAMETER dans SQL*Plus

CREATE PFILE=

la visualisation directe de SPFILE (sans modification toutefois...)

V$PARAMETER(2): paramètres actuels

V$SPPARAMETER: paramètre du fichier SPFILE


Pour la recherche de paramètres (ainsi que des paramètres non documentés), il existe des
scripts Trivadis (ssinipar.sql) que vous pouvez télécharger (avec nos autres scripts Freeware
migrés sur Oracle9i) à partir de l’adresse www.trivadis.com.

Prise en charge OEM

OEM prend en charge les fichiers SPFILE et PFILE.


Fichiers SPFILE partagés
Dans les RAC (REAL Application Cluster, par ex. ORACLE Parallel Server), un seul fichier
SPFILE peut être utilisé pour plusieurs instances. À cet effet, le fichier SPFILE est placé dans
un dispositif RAW.
Les paramètres spécifiques à une instance sont préfixés du nom de l’instance :
prod1.instance_name = 'PROD1'prod1.instance_name = 'PROD1'
prod2.instance_name = 'PROD2'prod2.instance_name = 'PROD2'
*.db_name = 'PROD'*.db_name = 'PROD'
prod1.sort_area_size = 1048576prod1.sort_area_size = 1048576
prod2.sort_area_size = 524288prod2.sort_area_size = 524288

Résultat

Les modifications permanentes peuvent à présent être réalisées sans vi, Notepad ou autres
applications. De plus, l’utilisation d’un fichier SPFILE au sein d’une base de données
permet de reconnaître le paramètre utilisé lors de la procédure de démarrage (STARTUP).
L’utilisation du fichier SPFILE est également prise en charge dans OEM. La possibilité
d’utiliser un fichier SPFILE unique dans les RAC représente un avantage de plus.
Le seul risque lié à l’utilisation du fichier SPFILE est ne pas savoir exactement quel fichier a
été utilisé pour le démarrage (STARTUP) de la base de données active.
L’existence d’un déclencheur, activé lors de l’utilisation de la commande ALTER SYSTEM,
serait souhaitable pour les DBA de manière à retracer l’historique des modifications
effectuées sur le système.

Si vous souhaitez obtenir un complément d’information sur les nouvelles fonctions de la


version 9i, nous serions ravis de vous accueillir dans un de nos cours 9i (NF9i, AI9-A, AI9-
B).

Petra Knöbl

Trivadis AG Mail : petra.knoebl@trivadis.com


Cityforum à Eichsfeld Tél. : +49 6142 210 18 0
Ferdinand-Stuttmann-Str. 13 Fax : +49 6142 210 18 29
D-65428 Rüsselsheim Internet : http://www.trivadis.com