oracle如何区分动态静态参数及修改后是否需要重启

视图 v$parameter 中 ISSYS_MODIFIABLE 列能够查看参数属性:

ISSYS_MODIFIABLE ='FALSE' 为静态参数 、需要重启DB

ISSYS_MODIFIABLE ='IMMEDIATE'为动态参数、马上生效

ISSYS_MODIFIABLE ='DERERRED' 为延迟参数、马上生效(当前会话不生效,后续的会话有效) 。

v$parameter和v$system_parameter结构完全一致

1. 参数总数:

SQL> select count(*) from v$system_parameter where issys_modifiable='IMMEDIATE';

 

COUNT(*)

----------

353

 

SQL> select count(*) from v$system_parameter where issys_modifiable='FALSE';

 

COUNT(*)

----------

116

 

SQL> select count(*) from v$system_parameter where issys_modifiable='DEFERRED';

 

COUNT(*)

----------

8

 

2. 查看oracle参数是静态或者是动态 (根据 ISSYS_MODIFIABLE 的值判断)

例:

SQL> select name,value,ISSYS_MODIFIABLE from v$parameter where name ='undo_retention' ;

 

NAME VALUE ISSYS_MOD

-------------------- ---------- ---------

undo_retention 900 IMMEDIATE

 

SQL>

 

 

3. ALTER SYSTEM 中 SCOPE=SPFILE/MEMORY/BOTH 的区别:

 

SCOPE = SPFILE

(此更改写入初始化参数文件,更改将在下次启动时生效。动态参数与静态参数都一样可以。是静态参数唯一可以使用的方式。)

 

SCOPE = MEMORY

(只在内存上修改,立即生效,但重启后将不再生效,因为并没有写入到初始化参数文件。只适用于动态参数,静态参数则不允许。)

 

SCOPE = BOTH.

(既写入到初始化参数文件,也在内存上修改,立即生效。同样只适用于动态参数,静态参数则不允许。)

 

4. 参数的修改

 

动态参数修改:

 

SQL> alter system set undo_retention=10800 scope=both sid='RAC1';--修改时一个实例一个实例修改,不要使用sid='*',个别有bug

 

System altered.

 

静态参数修改,需要指定 scope=spfile 下次启动:

SQL> alter system set processes=151 scope=both;

alter system set processes=151 scope=both

*

ERROR at line 1:

ORA-02095: specified initialization parameter cannot be modified

 

SQL> alter system set processes=151 scope=spfile;

 

System altered.

 

注意:(scope=spfile 或者 scope=both 下)任何参数的修改都不能自动同步到pfile中去,只会写进spfile,所以修改完参数后最好create pfile from spfile ,手动同步参数创建pfile,以保证下次通过pfile能够正常启动数据库。

上一篇:linux系统如何安装vmware Tools(下面以CentOS为例)


下一篇:Same $h*t Different Day