ORACLE初始化参数文件概述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ORACLE初始化参数⽂件概述
ORACLE初始化参数⽂件概述
在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.创建spfile和pfile语法
l 创建SPFILE(只能建在数据库所在的机器上)
CREATE SPFILE [= 'spfile_name'] FROM PFILE [= 'pfile_name'];
如果命令中未指定spfile的路径则会在缺省路径创建spfile⽂件(%ORACLE_HOME%/database/spfile<SID>.ora)
这个与spfile参数⽆关(rac中共享spfile时要注意)
l 创建PFILE
CREATE PFILE [= 'pfile_name'] FROM SPFILE [= 'spfile_name'];
如果命令中未指定spfile的路径则会从缺省路径(%ORACLE_HOME%/database/spfile<SID>.ora)创建pfile⽂件
注:语法中创建和指定的spfile和pfile都是服务器路径
注:不能创建已经由数据库实例启动的spfile(在nomount状态下也不⾏)
3.数据库启动时spfile和pfile的加载顺序
初始化参数是在数据库实例启动时(startup nomount)加载。
如果startup命令中未指定pfile参数,在windows系统中数据库启动时会按如下顺序查找启动参数⽂件:
%ORACLE_HOME%/database/SPFILE<SID>.ora
%ORACLE_HOME%/database/SPFILE.ora
%ORACLE_HOME%/database/init<SID>.ora
在unix或linux系统中数据库启动时会按如下顺序查找启动参数⽂件:
%ORACLE_HOME%/dbs/SPFILE<SID>.ora
%ORACLE_HOME%/dbs/SPFILE.ora
%ORACLE_HOME%/dbs/init<SID>.ora
也就是说先找spfile<sid>.ora⽂件,如果spfile<sid>.ora没有,则找spfile.ora⽂件,最后才会去找init<sid>.ora的pfile⽂件。
使⽤指定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=spfile或scope=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.v$parameter
9.v$parameter2
9.v$system_parameter
9.v$system_parameter2
9.gv$parameter
9.gv$parameter2
9.gv$system_parameter
9.gv$system_parameter2
SQL> desc v$parameter;
出处:交⼤Oracle课程提供的参考资料。