8

Click here to load reader

· PDF fileOracle empfiehlt die Verwendung der Default-Location (eases Administration ). Die Trivadis empfiehlt Parameter-Files ausserhalb des Software-Directories zu

  • Upload
    vutram

  • View
    213

  • Download
    1

Embed Size (px)

Citation preview

Page 1: · PDF fileOracle empfiehlt die Verwendung der Default-Location (eases Administration ). Die Trivadis empfiehlt Parameter-Files ausserhalb des Software-Directories zu

Betrifft Umgang mit SPFILE und INIT.ORA Autor Petra Knöbl ([email protected]) Art der Info Technische Background Info (März 2002) Quelle Aus dem NF9i-Kurs und NF9i-Techno-Circle der Trivadis

Einleitung Oracle9i erlaubt immer mehr Parameter on-the-fly zu ändern, ohne ein Restart der Datenbank durchführen zu müssen. Dies führt den DBA immer häufiger in die Situation, dass er vor dem nächsten Restart der Datenbank nicht vergessen darf das Parameter-File entsprechend zu ändern. Oracle9i erlaubt durch die Verwendung von Server Parameter Files (SPFILE) dynamisch geändert Parameter auch gleichzeitig in das Parameter-File zu schreiben, so dass Änderungen mit ALTER SYSTEM persistent sind.

SPFILE und INIT.ORA Oracle bis Version 8i speichert Initialisierungsparameter traditionell in einem Text-INIT.ORA-File. Bei Oracle9i können auch Server Parameter Files verwendet werden (SPFILE). Ein SPFILE kann als Repository für Initalisierungsparameter betrachtet werden, welches sich auf dem DatenbankServer befindet. SPFILEs sind kleine binäre Files, welche nicht editiert werden können. Das editieren von SPFILES führt zu einem korrupten File und der Start der Instanz schlägt fehl, bzw. kann es zu einem crash bei einer laufenden Instanz kommen. ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^G^@^@^@^@^B...@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@*.db_block_size=8192*.db_domain='ttc.trivadis.com'*.db_file_multiblock_read_count=16*.db_files=1022*.db_name='TVD901A'...

*. bedeutet: alle Instanzen dieses Databank-Systems. Dies ist auch gültige Syntax in traditionellen INIT.ORA-Files. Dies ist vorallem bei RAC interessant siehe weiter unten. Beim Startup der Datenbank sucht der Startup Befehl ohne Angabe eines PFILEs an der Betriebssystemabhängigen Default-Location ($ORACLE_HOME/dbs unter UNIX, $ORACLE_HOME\database unter NT) nach:

1. spfile${ORACLE_SID}.ora 2. spfile.ora 3. init${ORACLE_SID}.ora

Page 2: · PDF fileOracle empfiehlt die Verwendung der Default-Location (eases Administration ). Die Trivadis empfiehlt Parameter-Files ausserhalb des Software-Directories zu

Es besteht natürlich weiterhin die Möglichkeit ein PFILE explizit zu spezifizieren. SQL> connect sys/manager as sysdbaConnected to an idle instance.SQL> startup pfile=/u00/app/oracle/admin/TVD901A/pfile/initTVD901A.ora

ORACLE instance started.

Total System Global Area 172967504 bytes...SQL>

Es kann jedoch beim STARTUP mit PFILE kein SPFILE angegeben werden: SQL> startup pfile='/u00/app/oracle/admin/TVD901A/pfile/spfileTVD901A.ora'LRM-00101: unknown parameter name 's044'ORA-01078: failure in processing system parameters

Um dies zu ermöglichen am besten ein traditionelles INIT.ORA mit Default-Name erzeugen:

� init${ORACLE_SID}.ora

Dieses File beinhaltet nur den Pfad auf das SPFILE: SPFILE = c:\oracle\admin\db1\pfile\spfileDB1.ora

SPFILE erzeugen Ein Server Parameter File wird initial aus einem traditionellen Text-Initalisierungsparameter-File (PFILE, INIT.ORA) erzeugt. Dies kann ohne eine gestartete Instanz durchgeführt werden. Voraussetzung für das Erzeugen des SPFILEs sind SYSDBA- oder SYSOPER-Privilegien. Falls SPFILE an der Default Location vorhanden ist, so verwendet STARTUP ohne Angabe eines PFILE dieses SPFILE. Ein SPFILE an der Default Location aus einem PFILE erzeugen: SQL> CREATE SPFILE2 FROM PFILE='/u00/app/oracle/admin/TVD901A/pfile/initTVD901A.ora';

File created.

SQL>

Ein SPFILE an Nicht-Default-Location aus einem PFILE erzeugen: SQL> CREATE SPFILE='/u00/app/oracle/admin/TVD901A/pfile/spfileTVD901A.ora'2 FROM PFILE='/u00/app/oracle/admin/TVD901A/pfile/initTVD901A.ora';

File created.

SQL>

Page 3: · PDF fileOracle empfiehlt die Verwendung der Default-Location (eases Administration ). Die Trivadis empfiehlt Parameter-Files ausserhalb des Software-Directories zu

Oracle empfiehlt die Verwendung der Default-Location (eases Administration�). Die Trivadis empfiehlt Parameter-Files ausserhalb des Software-Directories zu speichern (OFA). Auf NT/WIN2000 am besten in der Default-Location ein (traditionelles) INIT.ORA mit Default Name erzeugen, welches nur den Pfad auf das SPFILE enthält (s.oben). Auf UNIX ggf. mit Links arbeiten: sqlplus "/ as sysdba"startupcreate spfile='/u00/app/oracle/admin/TDBT901A/pfile/spfileTVD901A.ora' frompfile='/u00/app/oracle/admin/SID/pfile/initTVD901A.ora';shutdown immediateexitcd $ORACLE_HOME/dbsln -s /u00/app/oracle/admin/TDBT901A/pfile/spfileTVD901A.ora .sqlplus "/ as sysdba"startup

“Backup“ eines SPFILEs Mit dem CREATE PFILE Befehl kann ein Backup eines SPFILEs durchgeführt werden: SQL> CREATE PFILE='/u00/app/oracle/admin/TVD901A/pfile/bck_init.ora'2 FROM SPFILE;

File created.SQL>

Dies erstellt ein direkt verwendbares INIT.ORA-File: *.background_dump_dest='/u00/app/oracle/admin/TVD901A/bdump'*.compatible='9.0.1'*.control_file_record_keep_time=90*.core_dump_dest='/u00/app/oracle/admin/TVD901A/cdump'

Es ist sicher eine gute Idee, immer ein PFILE als Backup eines SPFILEs zu haben, um im “schlimmsten Fall” wieder ein neues SPFILE aus dem PFILE erzeugen zu können. Das Erstellen einer PFILE-Backup-Kopie aus einem SPFILE könnte z.B. in den nächtlichen Backup-Jobs oder in einem STARTUP-Trigger automatisiert werden: SQL> CREATE OR REPLACE TRIGGER copy_spfile2 AFTER STARTUP ON DATABASE3 DECLARE4 cPath CONSTANT varchar2(80) := 'D:\oracle\admin\DB9\pfile';5 BEGIN6 EXECUTE IMMEDIATE7 'create pfile='''||cPath||'\initora.'||8 TO_CHAR(SYSDATE,'yyyymmdd_hh24mi')||''' from spfile';9 EXCEPTION10 WHEN others THEN NULL;11 END;

Page 4: · PDF fileOracle empfiehlt die Verwendung der Default-Location (eases Administration ). Die Trivadis empfiehlt Parameter-Files ausserhalb des Software-Directories zu

12 /

Trigger wurde erstellt.SQL>

Änderungen im SPFILE Es gibt zwei Möglichkeiten um Änderungen im SPFILE durchzuführen:

1. Über den Befehl ALTER SYSTEM 2. Über die Export Methode

1. Änderungen über ALTER SYSTEM Vorraussetzung ist, dass beim STARTUP der Instanz ein SPFILE benutzt wurde, entweder direkt oder durch eine INIT.ORA welche den SPFILE=spfileSID.ora Parameter enthält. Bei Verwendung von SPFILEs können mit dem Befehlt ALTER SYSTEM Parameter, falls gewünscht, persistent im SPFILE (welches beim Startup benutzt wurde) geändert werden. Es wird bei ALTER SYSTEM der SCOPE angegeben:

� Memory (Default, wenn beim STARTUP ein trad. INIT.ORA benutzt wurde)

� SPFILE

� BOTH (Default, wenn beim STARTUP ein SPFILE benutzt wurde)

SQL> CONNECT / AS SYSDBAConnected.SQL> ALTER SYSTEM SET shared_pool_size = 48M SCOPE=BOTH;System altered.SQL>

Für statische Parameter kann nur der SCOPE=SPFILE verwendet werden. Die Änderung wird beim nächsten STARTUP aktiv: SQL> CONNECT / AS SYSDBAConnected.SQL> ALTER SYSTEM SET db_block_buffers = 20000 SCOPE=SPFILE;System altered.SQL>

Bei Änderungen können Kommentare spezifiziert werden, welche dann sowohl im SPFILE, wie auch im Attribut UPDATE_COMMENT von V$PARAMETER und V$SPPARAMETER eingesehen werden können. SQL> ALTER SYSTEM SET timed_statistics=TRUE2 COMMENT='DB-Review by Trivadis' SCOPE=BOTH;

System altered.SQL>

Page 5: · PDF fileOracle empfiehlt die Verwendung der Default-Location (eases Administration ). Die Trivadis empfiehlt Parameter-Files ausserhalb des Software-Directories zu

Parameter können folgendermassen aus dem SPFILE gelöscht werden: SQL> alter system reset sort_area_size scope=spfile sid='*';System altered.SQL>

Bei mehrzeiligen Parametern funktioniert dies nicht. (Nur die erste Zeile wird gelöscht und die Instanz startet dann nicht mehr!) In so einem Fall den Parameter zuerst auf ’’ setzen und dann löschen. Komplexe Parameter können folgendermassen spezifiziert werden: SQL> ALTER SYSTEM SET2 log_archive_dest_3='LOCATION=/u01/oracle/arc',MANDATORY,'REOPEN=2'3 COMMENT='Added 3rd destination 23.06.2001' SCOPE=SPFILE;

System altered.SQL>

Undokumentierte Parameter können ebenfalls gesetzt werden: SQL> ALTER SYSTEM SET "_collect_undo_stats"=FALSE SCOPE=SPFILE;System altered.SQL>

2. Export Methode Dazu muss zuerst der Inhalt des SPFILEs in ein PFILE exportiert werden: SQL> CREATE PFILE='initDB1test.ora' FROM SPFILE;File created.SQL>

Nun können die Parameterwerte im PFILE geändert werden. Danach muss das SPFILE vom geänderten PFILE ’initDB1test.ora’ wieder hergestellt werden: SQL> CREATE SPFILE 'spfileDB1.ora'2 FROM PFILE='initDB1test.ora';

File created.SQL>

Wurde ein SPFILE beim STARTUP benutzt und wenn ja welches? Ob ein SPFILe beim STARTUP benutzt wurde, und wenn ja welches wird in der view V$PARAMETER angezeigt: SQL> select name, value from v$parameter where name='spfile'NAME VALUE--------------- ----------------------------------------spfile C:\oracle\admin\db9\pfile\spfiledb9.oraSQL>

Page 6: · PDF fileOracle empfiehlt die Verwendung der Default-Location (eases Administration ). Die Trivadis empfiehlt Parameter-Files ausserhalb des Software-Directories zu

Im alertSID.log File wird der Parameter spfile angezeigt, wenn die Instanz mit einem initSID.ora File, welches auf ein SPFILE verweist, gestartet wurde. Wird im alertSID.log File der SPFILE-Parameter nicht angezeigt, wurde beim STARTUP entweder ein Default SPFILE oder PFILE (traditionelles INIT.ORA) benutzt. Unter NT ist noch zu berücksichtigen, dass ein automatischer Datenbankstart mit den Registry-Einträgen ORA_<sidname<_AUTOSTART=TRUE und ORA_<sidname>_PFILE=<full path to the PFILE> einem STARTUP PFILE=xxx auf der Kommandoebene entspricht. Beim automatischen Start der Datenbank wird nicht das SPFILE benutzt. Wird nun die DB von der Kommandozeile aus gestartet und existiert ein SPFILE, so können andere Parameter beim Start der Datenbank berücksichtigt worden sein. Dies kann durch löschen des Registry-Eintrages oder durch Erzeugen einer INIT.ORA, welche nur den PFAD auf das SPFILE enthält, umgangen werden. Visualisieren von Parametern Die Anzeige von Parametern kann erfolgen mit:

� OEM (Oracle Enterprise Manager)

� SHOW PARAMETER in SQL*Plus

� CREATE PFILE=

� SPFILE direkt visualisieren (aber nicht ändern...)

� V$PARAMETER(2): aktuelle Parameter

� V$SPPARAMETER: Parameter im SPFILE

Zur Ermittlung der Parameter (auch der undokumentierten) existiert Trivadis-Skript (ssinipar.sql), welche von www.trivadis.com (gemeinsam mit unseren anderen Freeware-Skripten, welche auf Oracle9i migriert wurden) downgeloadet werden kann. OEM Unterstützung OEM unterstützt SPFILEs und PFILEs.

Page 7: · PDF fileOracle empfiehlt die Verwendung der Default-Location (eases Administration ). Die Trivadis empfiehlt Parameter-Files ausserhalb des Software-Directories zu
Page 8: · PDF fileOracle empfiehlt die Verwendung der Default-Location (eases Administration ). Die Trivadis empfiehlt Parameter-Files ausserhalb des Software-Directories zu

Shared SPFILEs Bei RAC (REAL Applicaton Cluster, ex. ORACLE Parallel Server) kann ein SPFILE für mehrere Instanzen verwendet werden. Das SPFILE wird dazu auf ein RAW Device abgelegt. Instanz spezifische Parameter werden mit dem Instanz Namen als Prefix spezifiziert: prod1.instance_name = 'PROD1'prod2.instance_name = 'PROD2'*.db_name = 'PROD'prod1.sort_area_size = 1048576prod2.sort_area_size = 524288

Fazit Persistente Änderungen können nun ohne vi, Notepad, etc. durchgeführt werden. Ausserdem kann nun durch die Verwendung eines SPFILEs innerhalb der Datenbank festgestellt werden, welches Parameter-File beim STARTUP benutzt wurde. Auch im OEM ist die SPFILE-Benutzung schon unterstützt. Weiterhin positiv ist die Möglichkeit beim RAC ein einziges SPFILE verwenden zu können. Die einzige Gefahr des SPFILEs ist die Möglichkeit der Verwirrung, welche Datei aktuell beim STARTUP der Datenbank benutzt wurde. Wünschenswert für den DBA wäre die Existenz eines Triggers, welcher beim ALTER SYSTEM feuern würde, so dass eine Historie über die Änderungen am System mitgeführt werden könnte. Falls Sie noch mehr über die New Features von 9i erfahren wollen, würde es uns freuen, Sie in einem unserer 9i-Kurs (NF9i, AI9-A, AI9-B) begrüssen zu dürfen. Petra Knöbl Trivadis AG Mail: [email protected] Cityforum im Eichsfeld Tel: +49 6142 210 18 0 Ferdinand-Stuttmann-Str. 13 Fax: +49 6142 210 18 29 D-65428 Rüsselsheim Internet: http://www.trivadis.com