pfile 与 spfile

 

启动方式与顺序:

启动顺序:dbs 下的 init --> dbs 下的 spfile

如果 pfile 中没有指定 spfile 参数,那么数据库以 pfile 方式启动

如果 pfile 中指定 spfile 参数,那么数据库以 pfile 指定的 spfile 启动

如果 pfile 中指定 spfile ,但 dbs 目录下仍有 spfile ,则 startup 时以 dbs 下的 spfile 启动

create spfile from pfile='/tmp/orcl01.ora' 后的 startup 启动,查询 spfile 的位置,不管 pfile 中是否指定 spfile 参数,以及 spfile 的路径是什么,查询结果永远指向 dbs下的spfile


不指定路径创建 spfile ,默认路径为本地,在这RAC上是行不通的

SQL> create spfile from pfile='/tmp/orcl01.ora';

SQL> show parameter spfile;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0/db_1/dbs/spfileorcl1.ora


create spfile='+asm_data' from pfile='/tmp/orcl01.ora';

 

默认情况下,11g 的dbs 目录下没有spfile文件,而init文件中只能一句话:

$ more inithyzf2.ora
SPFILE='+DB/hyzf/spfilehyzf.ora'

所以,在 RAC 环境中,只能这么做:
1. 不能以 pfile 启动,因为 pfile 默认放在本地 dbs 目录下
2. 不能使用 create spfile from pfile语句, 因为这会在dbs 目录下创建 spfile 并以此启动
3. 只能在 init 中添加 spfile 参数,并启动,spfile参数路径指向共享磁盘


查看数据以何种方式启动

select decode(count(*),1,'spfile','pfile') filename from v$spparameter where rownum=1 and isspecified = 'TRUE';


如果 pfile 中指定了 spfile 参数,那么将以 spfile 参数为主:

比如以下实验,dbs 目录下没有 spfile 参数:

[oracle@r7 dbs]$ more initorcl1.ora|grep process
*.processes=200

[oracle@r7 dbs]$ more initorcl1.ora|grep spfile
*.spfile='+asm_data/orcl/PARAMETERFILE/spfile.257.925639539'


SQL> select decode(count(*),1,'spfile','pfile') filename from v$spparameter where rownum=1 and isspecified = 'TRUE';

FILENA
------
spfile

SQL> show parameter process

NAME TYPE VALUE
--------------------------- ----------- -----------------------
processes integer 150

原文地址:https://www.cnblogs.com/perfei/p/5976628.html