Oracle gør enten brug af PFILE eller SPFILE, for at definere attributer og karateristika for en instans. Oracle har et væld af muligheder hvad angår disse attributer og karakteristika.

Ved brug af PFILE kan nogen ting ændres dynamisk - på en kørende database - men man skal huskes at indskrive disse ændringer i init.ora filen, således ændringen huskes, næste gang databasen vendes. Andre parametere kræver man vender databasen med det samme, for en effekt.

SPFILE er udvidelsen til PFILE, og står for Server Parameter File. Til forskel fra tidligere kan SPFile ikke længere editeres som PFILE kunne det. SPFILE er en binær størrelse, og ændringer foretages via ALTER SYSTEM kommandoen. Mange finder SPFILE bedre, da det åbner op for flere ting kan gøres på en gang, samt ved brug af ALTER SYSTEM valideres ændringer med det samme (for parametere der tillader ændringer på system/session niveau). Man kan her bare opdatere SPFILE eller både opdaterer System og SPFILE samtidigt.

Nedenfor en kort setup guide til SPFILE.

[workday.dk:NETKORT:/usr1/home] sqlplus / as sysdba

SQL> create spfile from pfile;

File created.

SPFILE oprettes default i $ORACLE_HOME/dbs, i mit tilfælde /opt/oracle/10.2.0.3.0/dbs/spfileNETKORT.ora

Databasen skal vendes, efter man har lavet en SPFILE, før den begynder at bruge den

Alternativt kan man også lave en PFILE fra en SPFILE (hvis man kun er til ældre teknologi .. set før!)

SQL> create pfile from spfile;

File created.

Jeg fandt nedenstående på asktom.oracle.com, der ligesom indikere hans egen mening om den sag, da han fik et spørgsmål om hvordan man gik tilbage fra SPFILE til PFILE.

SQL> create pfile from spfile;
SQL> shutdown
SQL> !mv spfile$ORACLE_SID.ora spfile$ORACLE_SID.dont_use_the_best_feature
SQL> startup

I forlængelse til ovenstående kan SPFILE og PFILE istedet for default lokalisation, gemmes på en specifik lokalisation

SQL> create pfile=/path/to/backup.ora from spfile;
SQL> create spfile from pfile=/path/to/backup.ora

Indhold af SPFILE kan ses på en ikke helt brugervenligmåde vha. string:

[workday.dk:NETKORT:/opt/oracle/10.2.0.3.0/dbs]strings spfileNETKORT.ora
*._trace_files_public=true
*.background_dump_dest='/opt/oracle/admin/$ORACLE_SID/bdump'
*.compatible='10.2.0.3'
*.control_files='/oradev/databases/$ORACLE_SID/control_01.ctl','/oradev/databases/$ORACLE_SID/control_02.ctl'

Eller via f.eks SQL*PLUS

[workday.dk:NETKORT:/opt/oracle/10.2.0.3.0/dbs]sqlplus / as sysdba
set linesize 120
set pagesize 300
column name format a35
column value format a40
column update_comment format a40 word_wrapped

SELECT   name, value, update_comment
FROM     v$spparameter
WHERE    value IS NOT NULL
ORDER BY name;