Oracle启动文件基础
Oracle启动文件的重要性就不说了,总之就是非常重要。之前对这一块的了解还是比较混乱,所以这次在学习DBA知识之前,先把这一块仔细学习一下。以下内容基本上是网上找的资料,因为来源比较多,而且内容也都是重复,转载地址就不列举出处了。
1、查看数据库是否由SPFILE启动:
SQL> Select isspecified,count(*) from v$spparameter group by isspecified;
ISSPECIFIED COUNT(*)
----------- ----------
FALSE 225
TRUE 34
V$SPPARAMETER Description: V$SPPARAMETER displays information about the contents of the server parameter file. If a server parameter file was not used to start the instance, then each row of the view will contain FALSE in the ISSPECIFIED column.
从v$spparameter的说明来看,只要是该视图中有TRUE项,即表示该数据库由SPFILE启动。
2、查看SPFILE所在地址:
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string %ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA
这个就是基本的默认路径了。
3、SPLIFE的意义:
在9i之前,参数文件只有PFILE一种,是文本格式的。从9i开始新增了服务器参数文件,即SPFILE,是二进制格式,无法直接手动修改。
现在这两种参数文件都可以用来存储参数配置以供Oracle读取,但也有不同点,注意以下几点:
第一:PFILE是文本文件,SPFILE是二进制文件;
第二:对于参数的配置,PFILE可以直接以文本编辑器打开手工配置,而SPFILE不行,必须在数据库启动后,通过sql命令进行在线修改;
第三:PFILE配置改变后,必须重新启动数据库后才能生效,SPFILE的配置生效时限和作用域可由SQL命令指定。(有些参数的修改必须重启数据库才能生效);
第四: 可用SQL命令由PFILE创建SPFILE,也可以由SPFILE创建PFILE;
第五: 如果是手动创建数据库而不是通过DBCA,则开始创建数据库时,你只能定义PFILE
,因为它是文本格式的;
第六: Oracle启动只使用一个参数文件,要么是PFILE,要么是SPFILE,可以通过create pfile方法来鉴别,也可以用show parameter spfile命令,如果值为空,则表示使用的是pfile
SPFILE改正了PFILE管理混乱的问题。在多结点的环境里,PFILE会有多个
IMAGE
启动时候需要跟踪最新的IMAGE,这是个烦琐的过程。用SPFILE以后,所有参数改变都写到SPFILE里面(只要定义scope=spfile或both),参数配置有个权威的来源。
4、SPFILE/PFILE的创建:
从spfile获取pfile:
Create
pfile
=
'pfile_location'
from
spfile
;
Create
pfile
=
'pfile_location'
from
spfile
=
'spfile_location'
;
从pfile获取spfile:
Create
spfile
from
pfile
=
'pfile_location'
;
Create
spfile
=
'spfile_location'
from
pfile
=
'Your_pfile_location'
;
注:可以通过先从SPFILE创建PFILE,然后修改新生成的PFILE,再重新生成SPFILE,这样会“比较”安全一些。
另:要修改当前在使用的参数文件,必须将数据库先关闭,然后重启生效。必须是SHUTDOWN,STARTUP NOMOUNT也不行。
5、动态修改参数:
alter system set parameter=Value scope=spfile|both|memory;
MEMORY:只改变当前实例运行
SPFILE:只改变SPFILE的设置
BOTH:改变实例及SPFILE
alter session set parameter=Value;
也可通过这样来改变当前实例的参数
6、强制使用PFILE启动:
SQL> startup pfile='Your_Pfile.ora';
7、Oracle启动时的判定:
Oracle先去找SPFILE,若没有找到则使用PFILE启动,或还没有,通过DBS文件夹下的INIT.ORA启动。