# Parameter-Files spfile pfile

<p class="callout info">die in diesem Beitrag verwendeten Variablen $ORACLE\_HOME und $ORACLE\_SID müssen durch die richtige Pfade und Namen ersetzt werden, da diese Variablen in SQLPLUS nicht bekannt sind!</p>

Parameterfiles liegen normalerweise in folgendem Ordner:

```
$ORACLE_HOME/dbs/init<$ORACLE_SID>.ora
$ORACLE_HOME/dbs/spfile<$ORACLE_SID>.ora
```

die sp-files sind binär und sollten nicht via Editor geändert werden.

mit folgendem Befehl kann man bei laufender Instanz ein p-file erzeugen (aus dem aktuellen sp-file):

```
SQL> create pfile from spfile;
```

mit diesem Befehl wird aus einem p-file wieder ein sp-file erzeugt (der Dateiname kann auch weggelassen werden):

```
SQL> create spfile='<$ORACLE_HOME>/dbs/spfile<$ORACLE_SID>.ora' from pfile='<$ORACLE_HOME>/dbs/init<$ORACLE_SID>.ora';
```

Oracle-Instanz von p-file starten:

```
$ sqlplus / as sysdba
SQL> startup pfile=/<$ORACLE_HOME>/dbs/init<$ORACLE_SID>.ora
```

Änderungen im sp-file (default ist: scope=both, um die Änderungen nicht fest einzutragen: scope=memory, um die Änderungen im sp-file fest einzutragen: scope=spfile), z.B.:

```
SQL> alter system set open_cursors=300 scope=spfile;
```

Wie kann ich feststellen, ob die Datenbank via sp-file oder via p-file gestartet wurde?

```
SQL> show parameter spfile; --> wenn gesetzt wurde normal gestartet, wenn nicht dann wurde die DB via pfile gestartet
```

Hilfe, mein sp-file ist kaputt und ich habe auch kein aktuelles p-file oder Backup mehr! Sofern das sp-file nicht komplett weg ist, und z.B. nur ein Parameter nicht gesetzt/geladen werden kann, kann man auch einfach den Binärteil des sp-files mittels Editor entfernen, danach die Datenbank mit dem eben erzeugten p-file starten und danach ein neues spfile erzeugen.