ITPub博客

首页 > Linux操作系统 > Linux操作系统 > v$parameter2 与v$system_parameter2、v$spparameter

v$parameter2 与v$system_parameter2、v$spparameter

原创 Linux操作系统 作者:cqubityj 时间:2008-02-13 16:19:25 0 删除 编辑

v$parameter2显示当前session的参数值。
v$system_parameter2显示instance的参数值。
v$spparameter显示spfile中记录的参数值。

1、实例刚启动时参数值情况
session 1:
SQL> select name,isdefault,isses_modifiable,issys_modifiable,ismodified,value from v$parameter2 where name='db_file_multiblock_read_count';
NAME                           ISDEFAULT  ISSES_MODIFIABLE     ISSYS_MODIFIABLE     ISMODIFIED VALUE
------------------------------ ---------- -------------------- -------------------- ---------- --------------------
db_file_multiblock_read_count  FALSE      TRUE                 IMMEDIATE            FALSE      16
ISDEFAULT=FALSE: 该参数不是缺省值
ISSES_MODIFIABLE=TRUE: 该参数可用alter session修改
ISSYS_MODIFIABLE=IMMEDIATE: alter system修改后参数立即生效
ISMODIFIED=FALSE: 没在session和instance级别修改过参数值

SQL> select name,isdefault,isses_modifiable,issys_modifiable,ismodified,value from v$system_parameter2 where name='db_file_multiblock_read_count';
NAME                           ISDEFAULT  ISSES_MODIFIABLE     ISSYS_MODIFIABLE     ISMODIFI VALUE
------------------------------ ---------- -------------------- -------------------- -------- --------------------
db_file_multiblock_read_count  FALSE      TRUE                 IMMEDIATE            FALSE    16

SQL> select name,value,isspecified from v$spparameter where name='db_file_multiblock_read_count';
NAME                           VALUE                ISSPECIFIED
------------------------------ -------------------- --------------------
db_file_multiblock_read_count  16                   TRUE
ISSPECIFIED=TRUE: 在spfile中设置了该参数
实例刚启动,当前session、instance和spfile中的值是一致的。

2、在session2中修改参数值,并分别在两个session中查询结果
session 2:
修改参数
SQL> alter session set db_file_multiblock_read_count=32;                                                       
Session altered. 
 
查询参数
SQL> select name,isdefault,isses_modifiable,issys_modifiable,ismodified,value from v$parameter2 where name='db_file_multiblock_read_count';
NAME                           ISDEFAULT  ISSES_MODIFIABLE     ISSYS_MODIFIABLE     ISMODIFIED VALUE
------------------------------ ---------- -------------------- -------------------- ---------- --------------------
db_file_multiblock_read_count  FALSE      TRUE                 IMMEDIATE            MODIFIED   32
ISMODIFIED=MODIFIED: 在当前session中修改过参数值

SQL> select name,isdefault,isses_modifiable,issys_modifiable,ismodified,value from v$system_parameter2 where name='db_file_multiblock_read_count';
NAME                           ISDEFAULT  ISSES_MODIFIABLE     ISSYS_MODIFIABLE     ISMODIFI VALUE
------------------------------ ---------- -------------------- -------------------- -------- --------------------
db_file_multiblock_read_count  FALSE      TRUE                 IMMEDIATE            FALSE    16
ISMODIFIED=FALSE: 未修改实例的参数值

SQL> select name,value,isspecified from v$spparameter where name='db_file_multiblock_read_count';
NAME                           VALUE                ISSPECIFIED
------------------------------ -------------------- --------------------
db_file_multiblock_read_count  16                   TRUE 
在session2中查询v$parameter2时,参数值变为32.而v$system_parameter2与v$spparameter值仍为16. 修改在当前session中生效。        

session 1:
查询参数
SQL> select name,isdefault,isses_modifiable,issys_modifiable,ismodified,value from v$parameter2 where name='db_file_multiblock_read_count';
NAME                           ISDEFAULT  ISSES_MODIFIABLE     ISSYS_MODIFIABLE     ISMODIFIED VALUE
------------------------------ ---------- -------------------- -------------------- ---------- --------------------
db_file_multiblock_read_count  FALSE      TRUE                 IMMEDIATE            FALSE      16

SQL> select name,isdefault,isses_modifiable,issys_modifiable,ismodified,value from v$system_parameter2 where name='db_file_multiblock_read_count';
NAME                           ISDEFAULT  ISSES_MODIFIABLE     ISSYS_MODIFIABLE     ISMODIFI VALUE
------------------------------ ---------- -------------------- -------------------- -------- --------------------
db_file_multiblock_read_count  FALSE      TRUE                 IMMEDIATE            FALSE    16

SQL> select name,value,isspecified from v$spparameter where name='db_file_multiblock_read_count';
NAME                           VALUE                ISSPECIFIED
------------------------------ -------------------- --------------------
db_file_multiblock_read_count  16                   TRUE
session1的查询结果是三个视图中该参数值均为16. session2中的修改未影响session1.
alter session修改的参数仅在当前session有效,不会影响到其它session.

3、使用alter system修改参数,指定scope为memory.
session 1:
SQL> alter system set db_file_multiblock_read_count=8 scope=memory;
System altered.

SQL> select name,isdefault,isses_modifiable,issys_modifiable,ismodified,value from v$parameter2 where name='db_file_multiblock_read_count';
NAME                           ISDEFAULT  ISSES_MODIFIABLE     ISSYS_MODIFIABLE     ISMODIFIED VALUE
------------------------------ ---------- -------------------- -------------------- ---------- --------------------
db_file_multiblock_read_count  FALSE      TRUE                 IMMEDIATE            SYSTEM_MOD 8
ISMODIFIED=SYSTEM_MOD:表示参数是使用alter system修改过的

SQL> select name,isdefault,isses_modifiable,issys_modifiable,ismodified,value from v$system_parameter2 where name='db_file_multiblock_read_count';
NAME                           ISDEFAULT  ISSES_MODIFIABLE     ISSYS_MODIFIABLE     ISMODIFI VALUE
------------------------------ ---------- -------------------- -------------------- -------- --------------------
db_file_multiblock_read_count  FALSE      TRUE                 IMMEDIATE            MODIFIED 8

SQL> select name,value,isspecified from v$spparameter where name='db_file_multiblock_read_count';
NAME                           VALUE                ISSPECIFIED
------------------------------ -------------------- --------------------
db_file_multiblock_read_count  16                   TRUE
v$parameter2与v$system_parameter2的参数值为8,而v$spparameter的参数值为16.由于alter system修改参数值时指定scope为memory,因此修改仅在实例中生效而未保存至spfile.同时由于该参数属于修改后立即生效(ISSYS_MODIFIABLE=IMMEDIATE),因此当前session中看到的也是8.                                          

session 2:
SQL> select name,isdefault,isses_modifiable,issys_modifiable,ismodified,value from v$parameter2 where name='db_file_multiblock_read_count';
NAME                           ISDEFAULT  ISSES_MODIFIABLE     ISSYS_MODIFIABLE     ISMODIFIED VALUE
------------------------------ ---------- -------------------- -------------------- ---------- --------------------
db_file_multiblock_read_count  FALSE      TRUE                 IMMEDIATE            SYSTEM_MOD 8

SQL> select name,isdefault,isses_modifiable,issys_modifiable,ismodified,value from v$system_parameter2 where name='db_file_multiblock_read_count';
NAME                           ISDEFAULT  ISSES_MODIFIABLE     ISSYS_MODIFIABLE     ISMODIFI VALUE
------------------------------ ---------- -------------------- -------------------- -------- --------------------
db_file_multiblock_read_count  FALSE      TRUE                 IMMEDIATE            MODIFIED 8

SQL> select name,value,isspecified from v$spparameter where name='db_file_multiblock_read_count';
NAME                           VALUE                ISSPECIFIED
------------------------------ -------------------- --------------------
db_file_multiblock_read_count  16                   TRUE
由于该参数值修改后立即生效的,session2当前的参数值也变为8.
对于修改立即生效的参数,使用alter system修改后,当前所有session都会受影响。

4、用alter system修改参数,指定scope为spfile
session 1:
SQL> alter system set db_file_multiblock_read_count=64 scope=spfile;
System altered.

SQL> select name,isdefault,isses_modifiable,issys_modifiable,ismodified,value from v$parameter2 where name='db_file_multiblock_read_count';
NAME                           ISDEFAULT  ISSES_MODIFIABLE     ISSYS_MODIFIABLE     ISMODIFIED VALUE
------------------------------ ---------- -------------------- -------------------- ---------- --------------------
db_file_multiblock_read_count  FALSE      TRUE                 IMMEDIATE            SYSTEM_MOD 8

SQL>  select name,isdefault,isses_modifiable,issys_modifiable,ismodified,value from v$system_parameter2 where name='db_file_multiblock_read_count';
NAME                           ISDEFAULT  ISSES_MODIFIABLE     ISSYS_MODIFIABLE     ISMODIFI VALUE
------------------------------ ---------- -------------------- -------------------- -------- --------------------
db_file_multiblock_read_count  FALSE      TRUE                 IMMEDIATE            MODIFIED 8

SQL> select name,value,isspecified from v$spparameter where name='db_file_multiblock_read_count';
NAME                           VALUE                ISSPECIFIED
------------------------------ -------------------- --------------------
db_file_multiblock_read_count  64                   TRUE
如果指定scope为spfile,实例和当前所有session都不受影响。下次重启后修改才生效。

由于sqlplus中的show parameter命令是查询v$parameter视图,因此看到的也是当前session的参数值。

在v$parameter2视图中的ISSES_MODIFIABLE字段为true的表示这个参数可以使用alter session修改;
在v$parameter2视图中的ISSYS_MODIFIABLE字段为immediate和deferred的表示这个参数可以使用alter system命令修改;false表示不能用alter system修改。
在v$parameter视图中的issys_modifiable3个值的含义:
如果是immediate:表示这次对这个参数的修改会在当前所有会话中就"立即"发生作用,即修改立即生效。
如果是deferred:表示这次修改对当前会话不发生作用,在以后打开的会话中起作用,故它有"推迟"影响的效果。修改该参数值时需要使用alter system set...deferred.如果不加deferred关键字则报错ORA-02096: specified initialization parameter is not modifiable with this option
如果是false:表示不能使用alter system命令修改

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/228190/viewspace-170180/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-19

  • 博文量
    133
  • 访问量
    424253