【参数】动态参数、静态参数区别及测试

xixuefeng Oracle, Parameter 2012-09-26 22:05:33 760 次浏览 【参数】动态参数、静态参数区别及测试已关闭评论
一:静态参数、动态参数的概念
 
1)静态参数:在修改参数以后,必须重启数据才能生效的参数

2)动态参数:在修改参数以后,不用重启也可以生效且重启后依然生效的参数


二:静态参数与动态参数的区别,如下表格:

 参数类型  scope=spfile  scope= memory  scope= both  deferred
 静态参数  重启数据库生效  不允许使用  不允许使用  不允许使用
 动态参数(immediate)  重启数据库生效  立即生效,重启数据库失效  立即生效,重启数据库依然有效  允许使用
 动态参数(deferred)  重启数据库生效  不允许使用  允许使用  允许使用
通过上图可以很清楚的区分它们之间的区别,特别注意的是:

这两种类型都属于动态参数,因为都符合动态参数的定义,不过 issys_modifiable=deferred 的参数的属性更像静态参数(在scope子句中,只允许 scope=spfile,并且重启后才生效),不过与之不同的是,这种类型的参数允许使用 deferred 子句(只有这种类型的参数才允许使用deferred子句),意思是,修改完成后,当前会话不生效,新开启的会话中参数修改才生效,且重启后依然生效(符合动态参数的定义)。

三:静态参数测试

四:动态参数(immediate)测试

注:issys_modifiable为immediate;
oracle10g job_queue_processes默认值为10,oracle11g job_queue_processes默认值为1000
1)初始默认值为1000

2)将其修改为500,不加scope子句(等同于scope=both,修改即生效,重启后依然生效)

3)将其修改为600,scope=spfile(修改后不立即生效,重启后生效)

4)将其修改为700,scope=memory(修改后立即生效,重启后失效)

5)将其修改为1000,deferred (修改后当前会话无效,新建立会话生效) issys_modifiable为immediate的动态参数无法使用deferred

五:动态参数(deferred)测试

注:issys_modifiable为deferred;
1)初始默认值为65536

2)修改sort_area_size为60000,使用scope=both子句(执行结果:不允许使用scope=both)

3)修改sort_area_size为60000,使用scope= memory子句(执行结果:不允许使用scope= memory)

4)修改sort_area_size为60000,使用scope= spfile子句(执行结果:修改成功,重启生效)

5)修改sort_area_size为66666,使用deferred子句(执行结果:新连接的会话生效,在修改之前连接的会话都不生效)

小结:
1)静态参数必须使用必须重启才能生效,即使用scope=spifle子句;
2)只要使用scope=spifle子句修改的参数,就必须重启才能生效(无论是动态还是静态);
3)在修改参数时如果不使用scope子句,那么默认为使用scope=both子句;
4)动态参数分为两种,一种可以使用deferred子句(即:issys_modifiable=upper(‘deferred’) ) ,一种不可以使用deferred子句(即:issys_modifiable=upper(‘immediate’));
5)不可以使用deferred子句的动态参数,scope可以使用任何一种类型的值,可以是用deferred子句的参数,scope只允许等于spfile;

 

 

 

 

 

 

回顶部