Oracle 参数文件总结

来源:互联网 发布:网络监控施工方案 编辑:程序博客网 时间:2024/05/01 07:17

1:pfile和spfile

9i之前,参数文件只有一种,它是文本格式的,称为pfile,在9i及以后的版本中,新增了服务器参数文件,称为spfile,它是二进制格式的。这两种参数文件都是用来存储参 数配置以供oracle读取的,但也有不同点,注意以下几点:


1)pfile
是文本文件,spfile是二进制文件;
2)
对于参数的配置,pfile可以直接以文本编辑器打开手工配置,而spfile不行,必须在数据库启动后,通过sql命令进行在线修改,当然spfile也可用文本编辑器打开,把里面文本的内容复制出来放在pfile中,但决对不可以直接修改,直接修改后会使文件无法读取。
3)pfile
配置改变后,要使用其生效,必须重新启动数据库,spfile的配置生效时限和作用域可以由修改参数的sql命令指定,可以立即生效,也可以不立即生效。当然有些参数的修改必须重启数据库才能生效;
4)
可以用sql命令由pfile创建spfile,也可以由spfile创建pfile
5)
如果是手动创建数据库而不是通过DBCA,则开始创建数据库时,你只能定义pfile 。因为它是文本格式的;


现在一般普通生产库都采用spfile启动数据库,pfile确实没有用的理由了,感觉只有以下情况才会使用pfile
1)
入门学习时,为了理解初始化参数
2)
创建数据库时,因为这时还没spfile
3)
恢复数据库时
4)
采用RAC的生产库中如果要共用spfile,可以建一个初始的pfile,然后在pfile指定spfile为共享设备文件

...............

 


2.
创建spfilepfile语法
创建SPFILE(只能建在数据库所在的机器上)

CREATE SPFILE [= 'spfile_name'] FROM PFILE [= 'pfile_name'];

如果命令中未指定spfile的路径则会在缺省路径创建spfile文件(%ORACLE_HOME%databasespfile<SID>.ora
这个与spfile参数无关(rac中共享spfile时要注意)

创建PFILE

CREATE PFILE [= 'pfile_name'] FROM SPFILE [= 'spfile_name'];
如果命令中未指定spfile的路径则会从缺省路径(%ORACLE_HOME%databasespfile<SID>.ora)创建pfile文件


注:语法中创建和指定的spfilepfile都是服务器路径
注:不能创建已经由数据库实例启动的spfile(nomount状态下也不行)


3.
数据库启动时spfilepfile的加载顺序

初始化参数是在数据库实例启动时(startup nomount)加载。

如果startup命令中未指定pfile参数,在windows系统中数据库启动时会按如下顺序查找启动参数文件:

%ORACLE_HOME%databaseSPFILE<SID>.ora
%ORACLE_HOME%databaseSPFILE.ora
%ORACLE_HOME%databaseinit<SID>.ora

unixlinux系统中数据库启动时会按如下顺序查找启动参数文件:

%ORACLE_HOME%dbsSPFILE<SID>.ora
%ORACLE_HOME%dbsSPFILE.ora
%ORACLE_HOME%dbsinit<SID>.ora


也就是说先找spfile<sid>.ora文件,如果spfile<sid>.ora没有则找spfile.ora文件,最后才会去找init<sid>.orapfile文件.


使用指定pfile启动数据库则数据库会使用指定的pfile来加载数据库参数:
命令如下:
startup pfile='<pfile>'


注:以pfile启动的实例,修改初始化参数时不能使用scope=spfile的语法

如果参数文件(不管是pfile还是spfile)中指定了spfile的参数,则还会从指定的spfile中再读取配置的参数,这样数据库的参数就包括了两个文件的内容.


4.
数据库启动参数的加载顺序

加载顺序按文件中顺序读取
如果文件中有两个相同的参数名则以最后出现的为准,以下例子说明了这个问题。

如有一个spfile文件(myspfile.ora),包括两个参数:

sessions=150
processes=200

另外有一个pfile文件(mypfile.ora),里面包括三个参数,其中指定了spfile为前面的spfile文件

processes=100
sessions=100
spfile='myspfile.ora'
processes=180

当使用mypfile.ora启动数据库时,会按如下顺序读取参数

1)processes=100
2) sessions=100
3) spfile='myspfile.ora'
3.1) sessions=150(
重新加载)
3.2) processes=200(
重新加载)
4)processes=180(
再次重新加载)


最后加载的数据库参数为
sessions=150
spfile='myspfile.ora'
processes=180

5.关于show parameter spfile时显示的内容

如果是采用pfile指定了spfile参数,则显示指定的spfile
如果是采用缺省的spfile启动,则显示缺省的spfile文件名,不管spfile还有没有指定其它的spfile文件。

6.关于spfile递归调用
如果出现spfile递归调用,则ORACLE启动时会报错:
SQL> startup nomount;
ORA-03113:
通信通道的文件结束
SQL>

spfile递归调用就是指
spfile1.spfile='spfile2'
spfile2.spfile='spfile1'
这样的参数配置


7.
初始化参数的修改方法
分为手动修改和在线修改。
手动修改用于修改pfile,直接用文本编辑打开pfile修改。要使用修改生效,须重启数据库。
在线修改是在数据库运行时,用alter system命令进行修改,命令如下(详细的命令 语句请参考oracle官方参考文档)

alter system set parameter_name = parameter_value [, parameter_value ]...
[ COMMENT 'text' ]
[ DEFERRED ]
[ SCOPE = { MEMORY | SPFILE | BOTH } ]
[ SID = { 'sid' | * } ]

注:
[ COMMENT 'text' ] :
表示可以加注释,如 ALTER SYSTEM SET JOB_QUEUE_PROCESSES=50 SCOPE=BOTH DEFERRED COMMENT=" 2008-05-19"
[ DEFERRED ]:
表示所作修改只适用于将来的会话,对当前已有的会话不影响,这个参数只对少数参数有用,具体可使用的参数可以查看v$parameter视图
select * from v$parameter where issys_modifiable='DEFERRED'
[ SCOPE = { MEMORY | SPFILE | BOTH } ]:
SPFILE:
修改只对SPFILE有效,不影响当前实例,需要重启数据库才能生效;
MEMORY:
修改只对内存有效,即只对当前实例有效,且立即生效,但不会保存到SPFILE, 数据库重启后此配置丢失;
BOTH:
顾名思义,包含以上两种,立即生效,且永久生效。

所有的参数都可以使用spfile,部份参数可以使用memory,可以使用如下SQL查询不能使用memory方式修改的参数
select * from v$parameter where issys_modifiable='FALSE'

对于ALTER SYSTEM的参数修改命令,请注意以下几点:
1)
如果当前实例使用的是pfile而非spfile,scope=spfilescope=both会产生错误;
2)
如果实例以pfile启动,则scope的默认值为MEMORY,若以spfile启动,则默认值为BOTH

[ SID = { 'sid' | * } ]
指定修改参数的作用实例号,如果为*则表示所有实例,这个选项用于RAC数据库


8.
删除初始化参数:

alter system reset parameter_name
[ SCOPE = { MEMORY | SPFILE | BOTH } ]
[ SID = 'sid' ]

对于有些参数也可以使用 ALTER SYSTEM SET PARAMETER=''达到相同的效果;

9.初始化参数的相关系统视图

9.1v$parameter
9.2v$parameter2
9.3v$system_parameter
9.4v$system_parameter2
9.5gv$parameter
9.6gv$parameter2
9.7gv$system_parameter
9.8gv$system_parameter2


SQL> desc v$parameter;
Name Type Nullable Default Comments
---------------- ------------- -------- ------- --------
NUM NUMBER Y
编号
NAME VARCHAR2(64) Y
参数名称
TYPE NUMBER Y
参数类型
(
1 - Boolean
2 - String
3 - Integer
4 - Parameter file
5 - Reserved
6 - Big integer
)
VALUE VARCHAR2(512) Y
参数值
ISDEFAULT VARCHAR2(9) Y
是否为缺省值
ISSES_MODIFIABLE VARCHAR2(5) Y
是否允许会话级动态调整(alter session set...)
ISSYS_MODIFIABLE VARCHAR2(9) Y
是否允许使用动态调整(alter system set...)
(
IMMEDIATE:
可以调整且修改会立即生效;
DEFERRED:
可以调整,但是在新建的会话中才生效;
FALSE:
不可调整;
)
ISMODIFIED VARCHAR2(10) Y
参数在实例启动后是否被修改过
ISADJUSTED VARCHAR2(5) Y
参数是否被调整
(
对于有一些参数,如规范要求是素数,但是参数里设置了合数,则ORACLE会自动调整成下一个素数)
DESCRIPTION VARCHAR2(64) Y
参数功能描述
UPDATE_COMMENT VARCHAR2(255) Y
最近的参数更新备注

 

 

原创粉丝点击