02.06.2013 Views

Introduction SPFILE et INIT.ORA - Trivadis

Introduction SPFILE et INIT.ORA - Trivadis

Introduction SPFILE et INIT.ORA - Trivadis

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!