SPFILE_INITORA_Utilisation Sous Oracle 9i

9
Objet Utilisation de SPFILE et INIT.ORA Auteur Petra Knöbl ([email protected]) 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) :

description

Objet AuteurUtilisation de SPFILE et INIT.ORA Petra Knöbl ([email protected])Nature des informations Informations à caractère technique (mars 2002) Source Extrait du cours NF9i et du séminaire Techno-Circle NF9i de TrivadisIntroductionOracle9i 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 fi

Transcript of SPFILE_INITORA_Utilisation Sous Oracle 9i

Page 1: SPFILE_INITORA_Utilisation Sous Oracle 9i

Objet Utilisation de SPFILE et INIT.ORA Auteur Petra Knöbl ([email protected]) 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) :

Page 2: SPFILE_INITORA_Utilisation Sous Oracle 9i

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>

Page 3: SPFILE_INITORA_Utilisation Sous Oracle 9i

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 :

Page 4: SPFILE_INITORA_Utilisation Sous Oracle 9i

*.background_dump_dest='/u00/app/oracle/admin/TVD901A/bdump'*.background_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 :

Page 5: SPFILE_INITORA_Utilisation Sous Oracle 9i

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 :

Page 6: SPFILE_INITORA_Utilisation Sous Oracle 9i

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

Page 7: SPFILE_INITORA_Utilisation Sous Oracle 9i

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.

Page 8: SPFILE_INITORA_Utilisation Sous Oracle 9i

Fichiers SPFILE partagés

Page 9: SPFILE_INITORA_Utilisation Sous Oracle 9i

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 : [email protected] 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