Oracle 参数修改小结

2014-11-24 17:50:11 · 作者: · 浏览: 1

1. ISSES_MODIFIABLE


指示参数是否可以在session级别( Alter session set )修改(True or False)


2. ISSYS_MODIFIABLE


指示参数是否可以在system级别(Alter system set)修改,有如下3个取值:


1)IMMEDIATE - 立即生效


2)DEFERRED - 下个session生效


3)False - 必须得重启才能生效(必须指定Scope=spfile)


我们来看下面的例子:


SYS@TEST16>select name,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name in ('workarea_size_policy','audit_file_dest','sga_target','sga_max_size');


NAME ISSES_MODIFIABL ISSYS_MODIFIABL
-------------------------------------------------------------------------------- --------------- ---------------
sga_max_size FALSE FALSE
sga_target FALSE IMMEDIATE
audit_file_dest FALSE DEFERRED
workarea_size_policy TRUE IMMEDIATE


其中只有workarea_size_policy可以在session级别修改,其它3个都只能在system级别修改。


sga_target修改后立即生效,audit_file_dest修改后下一个session生效,sga_max_size修改后必须重启才能生效(spfile)。


alter session set的语法如下:


alter session set parameter_name = parameter_value;


如上所述,并不是所有的参数都可以在session级别修改,只有isses_modifiable为true才可以。


alter system set的语法如下:


Oracle 参数修改小结



其中:


Comment(可选):修改时可附加说明;


Deferred(可选):如果v$parameter的issys_modifiable为deferred,修改时必须加上deferred选项,表示下个session才生效。


Scope(默认:both):有如下3个取值:


-- memory 表示只在内存中修改,实例重启后失效;


-- spfile表示只在spfile中修改,只有当重启重新读取spfile之后才生效;


-- both表示同时在memory和spfile中修改(推荐)


Sid (默认:*):该选项针对RAC,默认为*,表示RAC的所有实例同时修改,如果不想全部修改,用Sid指定Oracle实例即可。


今天,开发人员抱怨Oracle数据库时常连接不上,报如下错误:


SYS@TEST16>show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 100


通过查询v$parameter(如下所示)可知,该参数是系统级别的,且必须重启才能生效:


select name,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='process';
NAME ISSES_MODIFIABL ISSYS_MODIFIABL
-------------------------------------------------------------------------------- --------------- ---------------
processes FALSE FALSE


通过alter system set修改:


SYS@TEST16>alter system set processes=1500 comment='change from 100 to 1500' scope=spfile;


System altered.


注意:这里一定要加上scope=spfile,否则会报如下错误,因为issys_modifiable=false


推荐阅读: