pfile 与 spfile

Posted 每周向前一小步

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 参数:

[[email protected] dbs]$ more initorcl1.ora|grep process
*.processes=200

[[email protected] 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

 

以上是关于pfile 与 spfile的主要内容,如果未能解决你的问题,请参考以下文章

create spfile from pfile这个语句的作用是啥?

Oracle中的pfile和spfile详解

oracle实验四—初始化参数文件与控制文件管理

oracle实验四—初始化参数文件与控制文件管理

oracle实验四—初始化参数文件与控制文件管理

从 spfile 创建 pfile