v$parameter, v$parameter2, v$system_parameter, v$system_parameter2, v$spparamete

转自:http://blog.csdn.net/huang_xw/article/details/6173891   吐槽下:标题字数限制好小,最后一个字母r写不上了

 

v$parameter

v$parameter显示的是session级的参数如果没有使用alter session单独设置当前session的参数值.

每一个新Session都是从 v$system_parameter上取得系统的当前值而产生Sessionv$parameter view. (实验1)

在运行过程中, v$parameter可能被用户改变.

v$parameter2

v$parameter2显示的是session级的参数.

v$parameter之间的区别则在于v$parameter2LIST的值分开来了一行变多行数据ORDINAL来指示相对的位置. (实验2)

v$system_parameter

v$system_parameter显示的是system级的参数保存的是使用alter system修改的值(scope=both或者memory). 上面两个都是当前已经生效的参数值.

v$system_parameter2

v$system_parameter2显示的是system级的参数.

v$spparameter

v$spparameter显示的就是保存在spfile中的参数值(scope=both或者spfile).

字段解释

字段

字段值

说明

isses_modifiable

true

表示这个参数可以使用alter session修改

false

表示不能使用alter session命令修改

issys_modifiable

immediate

表示这次对这个参数的修改会在当前所有会话中就"立即"发生作用即修改立即生效.

deferred

表示这次修改对当前会话不发生作用在以后打开的会话中起作用故它有"推迟"影响的效果修改该参数值时需要使用alter system set...deferred. 如果不加deferred关键字则报错ORA-02096: specified initialization parameter is not modifiable with this option.

false

表示不能使用alter system命令修改只能alter system ...... scope=spfile

show parameter

通过sql_trace发现,sqlplus中的show parameter其实查询的是v$parameter,实际的查询语句如下:

select name name_col_plus_show_param,

       decode(type,

              1,

              'boolean',

              2,

              'string',

              3,

              'integer',

              4,

              'file',

              5,

              'number',

              6,

              'big integer',

              'unknown') type,

       display_value value_col_plus_show_param

  from v$parameter

 where upper(name) like upper('%db_file%')

 order by name_col_plus_show_param, rownum;

底层表解释

通过autotrace,可以知道:

v$parameter,v$system_parameter的底层表是x$ksppcvx$ksppi

v$parameter2,v$system_parameter2的底层表是x$ksppcv2x$ksppi

v$spparameter的底层表是x$kspspfile

实验1

SQL> select t1.value sesvalue, t2.value sysvalue

  2    from v$parameter t1, v$system_parameter t2

  3   where t1.num = t2.num

  4     and t1.value <> t2.value;

 

SESVALUE            SYSVALUE

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

 

SQL> select value from v$system_parameter where name = 'global_names';

 

VALUE

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

FALSE

 

SQL> select value from v$parameter where name = 'global_names';

 

VALUE

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

FALSE

 

SQL> alter session set global_names = true;

 

Session altered

 

SQL> select t1.name, t1.value sesvalue, t2.value sysvalue

  2    from v$parameter t1, v$system_parameter t2

  3   where t1.num = t2.num

  4     and t1.value <> t2.value;

 

NAME                SESVALUE            SYSVALUE

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

global_names        TRUE                FALSE

10 实验2

SQL> column value format a106;

SQL> select value from v$parameter where name like 'control_files';

 

VALUE

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

D:/ORACLE/PRODUCT/10.2.0/ORADATA/TEST/CONTROL01.CTL, D:/ORACLE/PRODUCT/10.2.0/ORADATA/TEST/CONTROL02.CTL,

D:/ORACLE/PRODUCT/10.2.0/ORADATA/TEST/CONTROL03.CTL

 

SQL> column name format a15;

SQL> column value format a53;

SQL> column ordinal format a8;

SQL> select name ,value, ordinal from v$parameter2 where name like 'control_files';

 

NAME            VALUE                                                  ORDINAL

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

control_files   D:/ORACLE/PRODUCT/10.2.0/ORADATA/TEST/CONTROL01.CTL          1

control_files   D:/ORACLE/PRODUCT/10.2.0/ORADATA/TEST/CONTROL02.CTL          2

control_files   D:/ORACLE/PRODUCT/10.2.0/ORADATA/TEST/CONTROL03.CTL          3

你可能感兴趣的:(parameter)