1、ORACLE初始化参数文件详细文档ORACLE初始化参数文件详细文档 1.简介在9i之前,参数文件只有一种,它是文本格式的,称为pfile,在9i及以后的版本中,新增了服务器参数文件,称为spfile,它是二进制格式的。这两种参数文件都是用来存储参 数配置以供oracle读取的,但也有不同点,注意以下几点:1)pfile是文本文件,spfile是二进制文件;2)对于参数的配置,pfile可以直接以文本编辑器打开手工配置,而spfile不行,必须在数据库启动后,通过sql命令进行在线修改,当然spfile也可用文本编辑器打开,把里面文本的内容复制出来放在pfile中,但决对不可以直接修改,直接修
2、改后会使文件无法读取。3)pfile配置改变后,要使用其生效,必须重新启动数据库,spfile的配置生效时限和作用域可以由修改参数的sql命令指定,可以立即生效,也可以不立即生效。当然有些参数的修改必须重启数据库才能生效;4)可以用sql命令由pfile创建spfile,也可以由spfile创建pfile;5)如果是手动创建数据库而不是通过DBCA,则开始创建数据库时,你只能定义pfile 。因为它是文本格式的;现在一般普通生产库都采用spfile启动数据库,pfile确实没有用的理由了,感觉只有以下情况才会使用pfile:1)入门学习时,为了理解初始化参数2)创建数据库时,因为这时还没spf
3、ile3)恢复数据库时4)采用RAC的生产库中如果要共用spfile,可以建一个初始的pfile,然后在pfile指定spfile为共享设备文件2.创建spfile和pfile语法创建SPFILE(只能建在数据库所在的机器上)CREATE SPFILE = spfile_name FROM PFILE = pfile_name;如果命令中未指定spfile的路径则会在缺省路径创建spfile文件(%ORACLE_HOME%/database/spfile.ora)这个与spfile参数无关(rac中共享spfile时要注意)创建PFILECREATE PFILE = pfile_name FR
4、OM SPFILE = spfile_name;如果命令中未指定spfile的路径则会从缺省路径(%ORACLE_HOME%/database/spfile.ora)创建pfile文件注:语法中创建和指定的spfile和pfile都是服务器路径注:不能创建已经由数据库实例启动的spfile(在nomount状态下也不行)3.数据库启动时spfile和pfile的加载顺序初始化参数是在数据库实例启动时(startup nomount)加载。如果startup命令中未指定pfile参数,在windows系统中数据库启动时会按如下顺序查找启动参数文件:%ORACLE_HOME%/database/S
5、PFILE.ora%ORACLE_HOME%/database/SPFILE.ora%ORACLE_HOME%/database/init.ora在unix或linux系统中数据库启动时会按如下顺序查找启动参数文件:%ORACLE_HOME%/dbs/SPFILE.ora%ORACLE_HOME%/dbs/SPFILE.ora%ORACLE_HOME%/dbs/init.ora也就是说先找spfile.ora文件,如果spfile.ora没有则找spfile.ora文件,最后才会去找init.ora的pfile文件.使用指定pfile启动数据库则数据库会使用指定的pfile来加载数据库参数:命
6、令如下:startup pfile=注:以pfile启动的实例,修改初始化参数时不能使用scope=spfile的语法如果参数文件(不管是pfile还是spfile)中指定了spfile的参数,则还会从指定的spfile中再读取配置的参数,这样数据库的参数就包括了两个文件的内容.4.数据库启动参数的加载顺序加载顺序按文件中顺序读取如果文件中有两个相同的参数名则以最后出现的为准,以下例子说明了这个问题。如有一个spfile文件(myspfile.ora),包括两个参数:sessions=150processes=200另外有一个pfile文件(mypfile.ora),里面包括三个参数,其中指定
7、了spfile为前面的spfile文件processes=100sessions=100spfile=myspfile.oraprocesses=180当使用mypfile.ora启动数据库时,会按如下顺序读取参数1)processes=1002) sessions=1003) spfile=myspfile.ora3.1) sessions=150(重新加载)3.2) processes=200(重新加载)4)processes=180(再次重新加载)最后加载的数据库参数为sessions=150spfile=myspfile.oraprocesses=1805.关于show paramet
8、er spfile时显示的内容如果是采用pfile指定了spfile参数,则显示指定的spfile如果是采用缺省的spfile启动,则显示缺省的spfile文件名,不管spfile还有没有指定其它的spfile文件。6.关于spfile递归调用如果出现spfile递归调用,则ORACLE启动时会报错:SQL startup nomount;ORA-03113: 通信通道的文件结束SQLspfile递归调用就是指spfile1.spfile=spfile2spfile2.spfile=spfile1这样的参数配置7.初始化参数的修改方法分为手动修改和在线修改。手动修改用于修改pfile,直接用文
9、本编辑打开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
10、=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, 数据库重启后此配置丢失;B
11、OTH:顾名思义,包含以上两种,立即生效,且永久生效。所有的参数都可以使用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 | * 指定修改
12、参数的作用实例号,如果为*则表示所有实例,这个选项用于RAC数据库8.删除初始化参数:alter system reset parameter_name SCOPE = MEMORY | SPFILE | BOTH SID = sid 对于有些参数也可以使用 ALTER SYSTEM SET PARAMETER=达到相同的效果;9.初始化参数的相关系统视图9.1v$parameter9.2v$parameter29.3v$system_parameter9.4v$system_parameter29.5gv$parameter9.6gv$parameter29.7gv$system_param
13、eter9.8gv$system_parameter2SQL 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
14、_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会自动调整成下一个
15、素数) DESCRIPTION VARCHAR2(64) Y 参数功能描述 UPDATE_COMMENT VARCHAR2(255) Y 最近的参数更新备注 以下是ORACLE官方文档关于V$PARAMETER的解释V$PARAMETER displays information about the initialization parameters that are currently in effect for the session. A new session inherits parameter values from the instance-wide values display
16、ed by the V$SYSTEM_PARAMETER view.以下是字段说明:NUMNUMBERParameter numberNAMEVARCHAR2(64)Name of the parameterTYPENUMBERParameter type:1 - Boolean 2 - String 3 - Integer 4 - Parameter file 5 - Reserved 6 - Big integer VALUEVARCHAR2(512)Parameter value for the session (if modified within the session); othe
17、rwise, the instance-wide parameter valueISDEFAULTVARCHAR2(9)Indicates whether the parameter is set to the default value (TRUE) or the parameter value was specified in the parameter file (FALSE)ISSES_MODIFIABLEVARCHAR2(5)Indicates whether the parameter can be changed with ALTER SESSION (TRUE) or not
18、(FALSE)ISSYS_MODIFIABLEVARCHAR2(9)Indicates whether the parameter can be changed with ALTER SYSTEM and when the change takes effect:IMMEDIATE - Parameter can be changed with ALTER SYSTEM regardless of the type of parameter file used to start the instance. The change takes effect immediately. DEFERRE
19、D - Parameter can be changed with ALTER SYSTEM regardless of the type of parameter file used to start the instance. The change takes effect in subsequent sessions. FALSE - Parameter cannot be changed with ALTER SYSTEM unless a server parameter file was used to start the instance. The change takes ef
20、fect in subsequent instances. ISMODIFIEDVARCHAR2(10)Indicates whether the parameter has been modified after instance startup:MODIFIED - Parameter has been modified with ALTER SESSION SYSTEM_MOD - Parameter has been modified with ALTER SYSTEM (which causes all the currently logged in sessions values
21、to be modified) FALSE - Parameter has not been modified after instance startup ISADJUSTEDVARCHAR2(5)Indicates whether Oracle adjusted the input value to a more suitable value (for example, the parameter value should be prime, but the user input a non-prime number, so Oracle adjusted the value to the
22、 next prime number)DESCRIPTIONVARCHAR2(64)Description of the parameterUPDATE_COMMENTVARCHAR2(255)Comments associated with the most recent updateV$PARAMETER2与V$PARAMETER的区别是当某个参数有多个值时,会显示多行,最典型的就是参数control_files,一般的数据库都会指定多个控制文件,在V$PARAMETER中只显示一行,但在V$PARAMETER2会显示多行,如下所示:SQL select name,value from V
23、$PARAMETER where name=control_files;NAME VALUE- -control_files H:/oracle/oradata/ydgl/control01.ctl, H:/oracle/oradata/ydgl/control02.ctl, H:/oracle/oradata/ydgl/control03.ctlSQL select name,value,ORDINAL from V$PARAMETER2 where name=control_files;NAME VALUE ORDINAL- - -control_files H:/oracle/orada
24、ta/ydgl/control01.ctl 1control_files H:/oracle/oradata/ydgl/control02.ctl 2control_files H:/oracle/oradata/ydgl/control03.ctl 3V$PARAMETER2多了一个ORDINAL字段,表示顺序。SQL desc v$parameter2;Name Type Nullable Default Comments - - - - - NUM NUMBER Y NAME VARCHAR2(64) Y TYPE NUMBER Y VALUE VARCHAR2(512) Y ISDEF
25、AULT VARCHAR2(6) Y ISSES_MODIFIABLE VARCHAR2(5) Y ISSYS_MODIFIABLE VARCHAR2(9) Y ISMODIFIED VARCHAR2(10) Y ISADJUSTED VARCHAR2(5) Y DESCRIPTION VARCHAR2(64) Y ORDINAL NUMBER Y UPDATE_COMMENT VARCHAR2(255) Y V$SYSTEM_PARAMETER 和V$PARAMETER的区别是,V$PARAMETER显示的是当前系统的初始化参数,V$SYSTEM_PARAMETER显示的是新会话将使用的初始化参数。例如下例中,使用deferred参数修改了sore_area_size,在V$PARAMETER显示的老值,而V$SYSTEM_PARAMETER显示的是新值:SQL show parameter sort_area_size;NAME TYPE VALUE- - -sort_area_size integer 524288SQL alter system set sort_area_size=603213 deferred;System alteredSQL select name,value from v$parameter where
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1