数据库的spfile开始是存储在普通的文件系统中,如下所示:

SQL> show parameter spfile

NAME				     TYPE	VALUE
------------------------------------ ---------- ------------------------------
spfile string /home/oracle/product/10.2.0/db
_1/dbs/spfileorcl.ora

根据spfile参数文件创建pfile参数文件:

SQL> create pfile from spfile;

File created.

再根据pfile创建spfile,并将spfile存储在ASM中:

SQL> create spfile='+ASM' from pfile;

File created.

查看ASM中的spfile文件:

[oracle@kel dbs]$ asmcmd
ASMCMD> cd +ASM/orcl
ASMCMD> ls
ARCHIVELOG/
AUTOBACKUP/
CONTROLFILE/
DATAFILE/
ONLINELOG/
PARAMETERFILE/
TEMPFILE/
ASMCMD> cd parameterfile
ASMCMD> pwd
+ASM/orcl/parameterfile
ASMCMD> ls
spfile.288.849740011

可以看到已经创建了spfile参数文件,并且存储在了ASM中。

关闭数据库:

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

修改pfile参数文件:

[oracle@kel dbs]$ vim initorcl.ora.bak
内容为:spfile='+ASM/orcl/parameterfile/spfile.288.849740011'

删除存在的spfile参数文件,便于保存,可以进行做一个备份,仅修改名称即可:

[oracle@kel dbs]$ mv spfileorcl.ora spfileorcl.ora.bak

重新启动数据库:

SQL> startup
ORACLE instance started. Total System Global Area 176160768 bytes
Fixed Size 2019384 bytes
Variable Size 100667336 bytes
Database Buffers 71303168 bytes
Redo Buffers 2170880 bytes
Database mounted.
Database opened.

检查spfile文件:

SQL> show parameter spfile;

NAME				     TYPE	VALUE
------------------------------------ ---------- ------------------------------
spfile string +ASM/orcl/parameterfile/spfile
.288.849740011

从而可以看到spfile文件已经存储在ASM中。

如果不指定位置,重新创建pfile文件,那么会覆盖已经修改的文件,并且数据库启动时也会用这个参数文件进行启动。

05-08 15:34