Create Pfile from Spfile

Il post è stato testato su Oracle 11gR2.

Connettersi come SYSDBA

SQL> sqlplus /nolog
connect /as sysdba;

Per verificare quale file è stato usato allo start del db eseguire il comando:
SQL> show parameter spfile

NAME     TYPE      VALUE
---------------------------------
spfile string

Se VALUE è Null vuol dire che è stato utilizzato pfile.

Quando si usa spfile il risultato è il seguente:

SQL> show parameter spfile;

NAME        TYPE                   VALUE
------------------------------------------------------------------------- ----------- -----
spfile         string              /u01/app/oracle/product/18/db_1/dbs/spfileorcl.ora


E' possibile effettuare il back up di spfile in un'altra directory con il seguente comando:

SQL> create pfile='/tmp/init_<sid>.ora'  from spfile;


Con il seguente comando creiamo file init<sid>.ora (chiamato pfile) nella direcotry di deafult $ORACLE_HOME/dbs

SQL> create pfile='initorcl.ora' from spfile; 


Il file prodotto init<SID>.ora è di tipo testo ed è salvato nella directory $ORACLE_HOME\database su Windows e $ORACLE_HOME/dbs sotto Linux.

E' utile se si perde il file spfile e il suo  backup. 
Inoltre può essere utile per costruire il file spfile a partire da init<SID>.ora perché il file spfile è binario.

All'avvio del database, se il motore Oracle non trova il file spfile<sid>.ora cerca il file spfile.ora, poi init<sid>.ora ed infine il file init.ora.


E' possibile  far avviare il database utilizzato il pfile salvato in una directory non di default. Se si usa la directory di default non è necessario specificare la direcotry perché Oracle cerca in $ORACLE_HOME/dbs.

SQL> startup nomount pfile='/tmp/init_<sid>.ora';
Total System Global Area 5277921280 bytes
Fixed Size                  2213096 bytes
Variable Size            2751466264 bytes
Database Buffers         2483027968 bytes
Redo Buffers               41213952 bytes




Per riposizionare spfile nella directory di default eseguire il comando con l'l'istanza in stato nomount.

SQL>  CREATE SPFILE='$ORACLE_HOME/dbs/spfile<sid>.ora'   
FROM pfile='/tmp/init_<sid>.ora';

A questo punto chiudo il db e lo riavvio utilizzando il file spfile creato precedentemente.
SQL> shutdown immediate;
SQL> startup nomount;


Post popolari in questo blog

Create e Drop Pluggable Database

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione