Introduction SPFILE et INIT.ORA - Trivadis
Introduction SPFILE et INIT.ORA - Trivadis
Introduction SPFILE et INIT.ORA - Trivadis
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Obj<strong>et</strong> Utilisation de <strong>SPFILE</strong> <strong>et</strong> <strong>INIT</strong>.<strong>ORA</strong><br />
Auteur P<strong>et</strong>ra Knöbl (p<strong>et</strong>ra.knoebel@trivadis.com)<br />
Nature des informations Informations à caractère technique (mars 2002)<br />
Source Extrait du cours NF9i <strong>et</strong> du séminaire Techno-Circle NF9i<br />
de <strong>Trivadis</strong><br />
<strong>Introduction</strong><br />
Oracle9i augmente régulièrement la liste des paramètres qui sont modifiables sans pour<br />
autant avoir à redémarrer la base de données. L’administrateur de bases de données doit<br />
dans ce cas, impérativement penser à apporter ces modifications dans le fichier des<br />
paramètres avant le prochain redémarrage. Grâce à l’utilisation des fichiers <strong>SPFILE</strong> (Server<br />
Param<strong>et</strong>er Files), Oracle9i perm<strong>et</strong> d'effectuer dynamiquement les modifications de ces<br />
paramètres dans le fichier de paramètres, de manière à toujours garantir une cohérence<br />
entre le contenu du fichier <strong>et</strong> les modifications effectuées avec ALTER SYSTEM.<br />
<strong>SPFILE</strong> <strong>et</strong> <strong>INIT</strong>.<strong>ORA</strong><br />
Jusqu’à la version 8i d’oracle, les paramètres d’initialisation étaient habituellement<br />
sauvegardés dans un fichier texte <strong>INIT</strong>.<strong>ORA</strong>. Dans Oracle9i, l’utilisation de fichiers <strong>SPFILE</strong><br />
(Server Param<strong>et</strong>er Files) est également possible. Un fichier <strong>SPFILE</strong> peut être considéré<br />
comme un référentiel de paramètres d’initialisation, résidant sur le serveur de bases de<br />
données.<br />
Les fichiers <strong>SPFILE</strong> sont des p<strong>et</strong>its fichiers binaires qui ne peuvent être modifiés. Toute<br />
modification de ces fichiers entraîne leur corruption, ce qui a pour conséquence l’échec du<br />
démarrage de l’instance ou la panne de l’instance active.<br />
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^G^@^@^@^@^B...^@^@^@^@^@^@^@^<br />
@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^G^@^@^@^@^B...<br />
@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@<br />
*.db_block_size=8192*.db_block_size=8192<br />
*.db_domain='ttc.trivadis.com'*.db_domain='ttc.trivadis.com'<br />
*.db_file_multiblock_read_count=16*.db_file_multiblock_read_count=16<br />
*.db_files=1022*.db_files=1022<br />
*.db_name='TVD901A'*.db_name='TVD901A'<br />
...<br />
*. : toutes les instances de ce système de bases de données. Format valide pour les fichiers<br />
<strong>INIT</strong>.<strong>ORA</strong> conventionnels. Particulièrement intéressant dans le cas de RAC.<br />
Lors du démarrage de la base de données, la commande de démarrage effectue, sans<br />
indication de fichier PFILE, une recherche dans l’emplacement par défaut du système<br />
d’exploitation ($<strong>ORA</strong>CLE_HOME/dbs sous UNIX, $<strong>ORA</strong>CLE_HOME\database sous NT) :
1. spfile${<strong>ORA</strong>CLE_SID}.ora<br />
2. spfile.ora<br />
3. init${<strong>ORA</strong>CLE_SID}.ora<br />
Vous avez toujours la possibilité de spécifier explicitement un fichier PFILE.<br />
SQL> connect sys/manager as sysdbaSQL> connect sys/manager as<br />
sysdba<br />
Connected to an idle instance.Connected to an idle instance.<br />
SQL> startup pfile=/u00/app/oracle/admin/TVD901A/pfile/initTVD901A.oraSQL><br />
startup pfile=/u00/app/oracle/admin/TVD901A/pfile/initTVD901A.ora<br />
<strong>ORA</strong>CLE instance started.<strong>ORA</strong>CLE instance started.<br />
Total System Global Area 172967504 bytesTotal System Global Area<br />
172967504 bytes<br />
...<br />
SQL>SQL><br />
Toutefois, lors d’un démarrage (STARTUP) avec indication de fichier PFILE, aucun fichier<br />
<strong>SPFILE</strong> ne peut être indiqué :<br />
SQL> startup pfile='/u00/app/oracle/admin/TVD901A/pfile/spfileTVD901A.ora'SQL><br />
startup pfile='/u00/app/oracle/admin/TVD901A/pfile/spfileTVD901A.ora'<br />
LRM-00101:LRM-00101: unknown param<strong>et</strong>er name 's044'<br />
<strong>ORA</strong>-01078:<strong>ORA</strong>-01078: failure in processing system param<strong>et</strong>ers<br />
Pour perm<strong>et</strong>tre l’indication d’un fichier <strong>SPFILE</strong>, il est recommandé de créer un fichier<br />
<strong>INIT</strong>.<strong>ORA</strong> conventionnel <strong>et</strong> de lui attribuer son nom par défaut :<br />
init${<strong>ORA</strong>CLE_SID}.ora<br />
Ce fichier contient uniquement le chemin d’accès au fichier <strong>SPFILE</strong> :<br />
<strong>SPFILE</strong> = c:\oracle\admin\db1\pfile\spfileDB1.ora<strong>SPFILE</strong> =<br />
c:\oracle\admin\db1\pfile\spfileDB1.ora<br />
Création d’un fichier <strong>SPFILE</strong><br />
Un fichier SPF est initialement créé à partir d’un fichier de paramètres d’initialisation<br />
conventionnel (PFILE, <strong>INIT</strong>.<strong>ORA</strong>). C<strong>et</strong>te opération est réalisable même si aucune instance<br />
n’est lancée, la seule condition préalable à la création d’un tel fichier étant de posséder les<br />
privilèges SYSDA ou SYSOPER.<br />
Si le fichier <strong>SPFILE</strong> existe déjà dans l’emplacement par défaut, la procédure de démarrage<br />
(STARTUP) sans indication de fichier PFILE utilise le fichier <strong>SPFILE</strong> existant.<br />
Pour créer un fichier <strong>SPFILE</strong> dans l’emplacement par défaut à partir d’un fichier PFILE :<br />
SQL> CREATE <strong>SPFILE</strong> SQL> CREATE <strong>SPFILE</strong><br />
2 FROM PFILE='/u00/app/oracle/admin/TVD901A/pfile/initTVD901A.ora';2 FROM<br />
PFILE='/u00/app/oracle/admin/TVD901A/pfile/initTVD901A.ora';<br />
File created.File created.<br />
SQL>SQL>
Pour créer un fichier <strong>SPFILE</strong> dans un emplacement différent de l’emplacement par défaut à<br />
partir d’un fichier PFILE :<br />
SQL> CREATE <strong>SPFILE</strong>='/u00/app/oracle/admin/TVD901A/pfile/spfileTVD901A.ora'SQL><br />
CREATE <strong>SPFILE</strong>='/u00/app/oracle/admin/TVD901A/pfile/spfileTVD901A.ora'<br />
2 FROM PFILE='/u00/app/oracle/admin/TVD901A/pfile/initTVD901A.ora';2 FROM<br />
PFILE='/u00/app/oracle/admin/TVD901A/pfile/initTVD901A.ora';<br />
File created.File created.<br />
SQL>SQL><br />
Oracle préconise l’utilisation de l’emplacement par défaut (pour faciliter<br />
l’administration☺). <strong>Trivadis</strong> recommande de sauvegarder les fichiers de paramètres hors<br />
des répertoires du logiciel (OFA).<br />
Sous NT/WIN2000, nous vous recommandons de créer un fichier <strong>INIT</strong>.<strong>ORA</strong><br />
(conventionnel), qui contient uniquement le chemin d’accès au fichier <strong>SPFILE</strong>, dans<br />
l’emplacement par défaut <strong>et</strong> de lui attribuer son nom par défaut.<br />
Sous UNIX, le cas échéant, utilisez des liens :<br />
sqlplus "/ as sysdba"sqlplus "/ as sysdba"<br />
startup<br />
create spfile='/u00/app/oracle/admin/TDBT901A/pfile/spfileTVD901A.ora' from<br />
pfile='/u00/app/oracle/admin/SID/pfile/initTVD901A.ora';startup<br />
create spfile='/u00/app/oracle/admin/TDBT901A/pfile/spfileTVD901A.ora' from<br />
pfile='/u00/app/oracle/admin/SID/pfile/initTVD901A.ora';<br />
shutdown immediateshutdown immediate<br />
exitexit<br />
cd $<strong>ORA</strong>CLE_HOME/dbscd $<strong>ORA</strong>CLE_HOME/dbs<br />
ln -s /u00/app/oracle/admin/TDBT901A/pfile/spfileTVD901A.ora .ln -s<br />
/u00/app/oracle/admin/TDBT901A/pfile/spfileTVD901A.ora .<br />
sqlplus "/ as sysdba"sqlplus "/ as sysdba"<br />
startupstartup<br />
« Backup » d’un fichier <strong>SPFILE</strong><br />
Un backup (sauvegarde) du fichier <strong>SPFILE</strong> peut être effectué à l’aide de la commande<br />
CREATE FILE :<br />
SQL> CREATE<br />
PFILE='/u00/app/oracle/admin/TVD901A/pfile/bck_init.ora'SQL> CREATE<br />
PFILE='/u00/app/oracle/admin/TVD901A/pfile/bck_init.ora'<br />
2 FROM <strong>SPFILE</strong>;2 FROM <strong>SPFILE</strong>;<br />
File created.File created.<br />
SQL> SQL><br />
C<strong>et</strong>te commande perm<strong>et</strong> de créer un fichier <strong>INIT</strong>.<strong>ORA</strong> directement utilisable :
*.background_dump_dest='/u00/app/oracle/admin/TVD901A/bdump'*.bac<br />
kground_dump_dest='/u00/app/oracle/admin/TVD901A/bdump'<br />
*.compatible='9.0.1'*.compatible='9.0.1'<br />
*.control_file_record_keep_time=90*.control_file_record_keep_time<br />
=90<br />
*.core_dump_dest='/u00/app/oracle/admin/TVD901A/cdump'*.core_dump<br />
_dest='/u00/app/oracle/admin/TVD901A/cdump'<br />
Il serait sans aucun doute judicieux de conserver un fichier PFILE à titre de backup<br />
(sauvegarde) du fichier <strong>SPFILE</strong> afin de pouvoir, « au pire des cas », créer un nouveau fichier<br />
<strong>SPFILE</strong> à partir du fichier PFILE de sauvegarde. Il vous est, par exemple, possible<br />
d’automatiser la création d’une copie de sauvegarde du fichier PFILE à partir d’un fichier<br />
<strong>SPFILE</strong> dans le cadre des tâches de sauvegarde nocturnes ou du déclenchement du<br />
démarrage.<br />
SQL> CREATE OR REPLACE TRIGGER copy_spfile<br />
2 AFTER STARTUP ON DATABASE<br />
3 DECLARE<br />
4 cPath CONSTANT varchar2(80) := 'D:\oracle\admin\DB9\pfile';<br />
5 BEGIN<br />
6 EXECUTE IMMEDIATE<br />
7 'create pfile='''||cPath||'\initora.'||<br />
8 TO_CHAR(SYSDATE,'yyyymmdd_hh24mi')||''' from spfile';<br />
9 EXCEPTION<br />
10 WHEN others THEN NULL;<br />
11 END;<br />
12 /<br />
Déclencheur créé.<br />
SQL><br />
Modifications dans le fichier <strong>SPFILE</strong><br />
Il existe deux méthodes de modification du fichier <strong>SPFILE</strong> :<br />
1. via la commande ALTER SYSTEM<br />
2. via la méthode d’exportation (Export)<br />
1. Modifications via ALTER SYSTEM<br />
La condition préalable à la mise en œuvre de c<strong>et</strong>te méthode est l’utilisation, directe ou via<br />
un fichier <strong>INIT</strong>.<strong>ORA</strong> contenant le paramètre <strong>SPFILE</strong>=spfileSID.ora, d’un fichier <strong>SPFILE</strong> lors<br />
du DÉMARRAGE de l’instance.<br />
Lors l’utilisation de fichiers <strong>SPFILE</strong>, il vous est possible de modifier de manière définitive, si<br />
vous le souhaitez, des paramètres du fichier <strong>SPFILE</strong> (utilisé lors du démarrage) à l’aide de la<br />
commande ALTER SYSTEM.<br />
L’étendue (SCOPE) des modifications est indiquée dans la commande ALTER SYSTEM :
Mémoire (par défaut, lorsqu’ un fichier <strong>INIT</strong>.<strong>ORA</strong> conventionnel est utilisé au<br />
démarrage)<br />
<strong>SPFILE</strong><br />
LES DEUX (par défaut, si un fichier <strong>SPFILE</strong> a été utilisé lors du démarrage)<br />
SQL> CONNECT / AS SYSDBASQL> CONNECT / AS SYSDBA<br />
Connected.Connected.<br />
SQL> ALTER SYSTEM SET shared_pool_size = 48M SCOPE=BOTH;SQL><br />
ALTER SYSTEM SET shared_pool_size = 48M SCOPE=BOTH;<br />
System altered.System altered.<br />
SQL>SQL><br />
Seul SCOPE=<strong>SPFILE</strong> peut être utilisé pour les paramètres statiques. La modification est<br />
activée lors du prochain démarrage (STARTUP) :<br />
SQL> CONNECT / AS SYSDBASQL> CONNECT / AS SYSDBA<br />
Connected.Connected.<br />
SQL> ALTER SYSTEM SET db_block_buffers = 20000 SCOPE=<strong>SPFILE</strong>;SQL><br />
ALTER SYSTEM SET db_block_buffers = 20000 SCOPE=<strong>SPFILE</strong>;<br />
System altered.System altered.<br />
SQL>SQL><br />
Lors de modifications, il vous est possible de spécifier des commentaires qui pourront être<br />
pris en considération aussi bien dans le fichier <strong>SPFILE</strong> que dans l’attribut<br />
UPDATE_COMMENT de V$PARAMETER <strong>et</strong> V$SPPARAMETER.<br />
SQL> ALTER SYSTEM SET timed_statistics=TRUE SQL> ALTER SYSTEM SET<br />
timed_statistics=TRUE<br />
2 COMMENT='DB-Review by <strong>Trivadis</strong>' SCOPE=BOTH;2 COMMENT='DB-<br />
Review by <strong>Trivadis</strong>' SCOPE=BOTH;<br />
System altered.System altered.<br />
SQL>SQL><br />
Les paramètres peuvent être supprimés de la manière suivante dans le fichier <strong>SPFILE</strong> :<br />
SQL> alter system res<strong>et</strong> sort_area_size scope=spfile sid='*';SQL><br />
alter system res<strong>et</strong> sort_area_size scope=spfile sid='*';<br />
System altered.System altered.<br />
SQL>SQL><br />
Toutefois, c<strong>et</strong>te méthode ne fonctionne pas pour les paramètres comprenant plusieurs<br />
lignes. (Seule la première ligne est supprimée <strong>et</strong> l’instance ne peut plus démarrer !) Dans ce<br />
cas, définissez tout d’abord le paramètre sur ’’ <strong>et</strong> supprimez-le.<br />
Les paramètres complexes peuvent être spécifiés de la manière suivante :
SQL> ALTER SYSTEM SETSQL> ALTER SYSTEM SET<br />
2 log_archive_dest_3='LOCATION=/u01/oracle/arc',MANDATORY,'REOPEN=2'2<br />
log_archive_dest_3='LOCATION=/u01/oracle/arc',MANDATORY,'REOPEN=2'<br />
3 COMMENT='Added 3rd destination 23.06.2001' SCOPE=<strong>SPFILE</strong>;3<br />
COMMENT='Added 3rd destination 23.06.2001' SCOPE=<strong>SPFILE</strong>;<br />
System altered.System altered.<br />
SQL>SQL><br />
Les paramètres non documentés peuvent également être définis :<br />
SQL> ALTER SYSTEM SET "_collect_undo_stats"=FALSE<br />
SCOPE=<strong>SPFILE</strong>;SQL> ALTER SYSTEM SET "_collect_undo_stats"=FALSE<br />
SCOPE=<strong>SPFILE</strong>;<br />
System altered.System altered.<br />
SQL>SQL><br />
2. Méthode de l’exportation<br />
Pour m<strong>et</strong>tre en œuvre c<strong>et</strong>te méthode, il faut tout d’abord exporter le contenu du fichier<br />
<strong>SPFILE</strong> dans un fichier PFILE :<br />
SQL> CREATE PFILE='initDB1test.ora' FROM <strong>SPFILE</strong>;SQL> CREATE<br />
PFILE='initDB1test.ora' FROM <strong>SPFILE</strong>;<br />
File created.File created.<br />
SQL> SQL><br />
Vous pouvez à présent modifier les valeurs des paramètres dans le fichier PFILE.<br />
Ensuite, vous devez recréer le fichier <strong>SPFILE</strong> à partir du fichier PFILE modifié<br />
’initDB1test.ora’ :<br />
SQL> CREATE <strong>SPFILE</strong> 'spfileDB1.ora'SQL> CREATE <strong>SPFILE</strong> 'spfileDB1.ora'<br />
2 FROM PFILE='initDB1test.ora';2 FROM PFILE='initDB1test.ora';<br />
File created.File created.<br />
SQL>SQL><br />
Un fichier <strong>SPFILE</strong> a-t-il été utilisé lors du démarrage (STARTUP) ? Si oui, lequel ?<br />
La vue V$PARAMETER vous indique si un fichier <strong>SPFILE</strong> a été utilisé lors du démarrage<br />
(STARTUP) ainsi que son nom, le cas échéant.<br />
SQL> select name, value from v$param<strong>et</strong>er where name='spfile'<br />
NAME VALUE<br />
--------------- ----------------------------------------<br />
spfile C:\oracle\admin\db9\pfile\spfiledb9.ora<br />
SQL><br />
Le paramètre spfile est indiqué dans le fichier alertSID.log si l’instance a été démarrée à<br />
l’aide d’un fichier initSID.ora, qui lui-même renvoie à un fichier <strong>SPFILE</strong>. Si le paramètre<br />
<strong>SPFILE</strong> ne figure pas dans le fichier alertSID.log, un fichier <strong>SPFILE</strong> par défaut ou PFILE<br />
(fichier <strong>INIT</strong>.<strong>ORA</strong> conventionnel) a été utilisé lors du démarrage (STARTUP).<br />
De plus, sous NT, il faut également veiller à ce que le démarrage automatique avec les<br />
entrées de registre <strong>ORA</strong>_
<strong>ORA</strong>__PFILE= corresponde à la commande<br />
STARTUP PFILE=xxx. Le démarrage automatique de la base de données n’utilise pas le<br />
fichier <strong>SPFILE</strong>. Si la base de données est démarrée à partir de la ligne de commande, <strong>et</strong><br />
dans le cas où un fichier <strong>SPFILE</strong> existe, il se peut que d’autres paramètres aient été pris en<br />
compte lors du démarrage de la base de données.<br />
Vous pouvez éviter cela en supprimant les entrées de registre ou en créant un fichier<br />
<strong>INIT</strong>.<strong>ORA</strong> qui contient uniquement le CHEMIN D’ACCÈS au fichier <strong>SPFILE</strong>.<br />
Visualisation de paramètres<br />
L’affichage des paramètres peut être réalisé à l’aide de :<br />
OEM (Oracle Enterprise Manager)<br />
la fonction SHOW PARAMETER dans SQL*Plus<br />
CREATE PFILE=<br />
la visualisation directe de <strong>SPFILE</strong> (sans modification toutefois...)<br />
V$PARAMETER(2): paramètres actuels<br />
V$SPPARAMETER: paramètre du fichier <strong>SPFILE</strong><br />
Pour la recherche de paramètres (ainsi que des paramètres non documentés), il existe des<br />
scripts <strong>Trivadis</strong> (ssinipar.sql) que vous pouvez télécharger (avec nos autres scripts Freeware<br />
migrés sur Oracle9i) à partir de l’adresse www.trivadis.com.<br />
Prise en charge OEM<br />
OEM prend en charge les fichiers <strong>SPFILE</strong> <strong>et</strong> PFILE.
Fichiers <strong>SPFILE</strong> partagés
Dans les RAC (REAL Application Cluster, par ex. <strong>ORA</strong>CLE Parallel Server), un seul fichier<br />
<strong>SPFILE</strong> peut être utilisé pour plusieurs instances. À c<strong>et</strong> eff<strong>et</strong>, le fichier <strong>SPFILE</strong> est placé dans<br />
un dispositif RAW.<br />
Les paramètres spécifiques à une instance sont préfixés du nom de l’instance :<br />
prod1.instance_name = 'PROD1'prod1.instance_name = 'PROD1'<br />
prod2.instance_name = 'PROD2'prod2.instance_name = 'PROD2'<br />
*.db_name = 'PROD'*.db_name = 'PROD'<br />
prod1.sort_area_size = 1048576prod1.sort_area_size = 1048576<br />
prod2.sort_area_size = 524288prod2.sort_area_size = 524288<br />
Résultat<br />
Les modifications permanentes peuvent à présent être réalisées sans vi, Notepad ou autres<br />
applications. De plus, l’utilisation d’un fichier <strong>SPFILE</strong> au sein d’une base de données<br />
perm<strong>et</strong> de reconnaître le paramètre utilisé lors de la procédure de démarrage (STARTUP).<br />
L’utilisation du fichier <strong>SPFILE</strong> est également prise en charge dans OEM. La possibilité<br />
d’utiliser un fichier <strong>SPFILE</strong> unique dans les RAC représente un avantage de plus.<br />
Le seul risque lié à l’utilisation du fichier <strong>SPFILE</strong> est ne pas savoir exactement quel fichier a<br />
été utilisé pour le démarrage (STARTUP) de la base de données active.<br />
L’existence d’un déclencheur, activé lors de l’utilisation de la commande ALTER SYSTEM,<br />
serait souhaitable pour les DBA de manière à r<strong>et</strong>racer l’historique des modifications<br />
effectuées sur le système.<br />
Si vous souhaitez obtenir un complément d’information sur les nouvelles fonctions de la<br />
version 9i, nous serions ravis de vous accueillir dans un de nos cours 9i (NF9i, AI9-A, AI9-<br />
B).<br />
P<strong>et</strong>ra Knöbl<br />
<strong>Trivadis</strong> AG Mail : p<strong>et</strong>ra.knoebl@trivadis.com<br />
Cityforum à Eichsfeld Tél. : +49 6142 210 18 0<br />
Ferdinand-Stuttmann-Str. 13 Fax : +49 6142 210 18 29<br />
D-65428 Rüsselsheim Intern<strong>et</strong> : http://www.trivadis.com