首页  >  文章  >  数据库  >  参数文件视图

参数文件视图

WBOY
WBOY原创
2016-06-07 15:22:201057浏览

用过Oracle的朋友都知道,现在绝大部分Oracle数据库使用的是基于服务器的参数文件。对于查询当前数据库实例级别,system级别,session级别参数的具体设置有些时候很容易混淆。本文主要介绍了Oracle数据库参数使用的相关视图(V$PARAMETER,V$PARAMETER2,V$SY

用过Oracle的朋友都知道,现在绝大部分Oracle数据库使用的是基于服务器的参数文件。对于查询当前数据库实例级别,system级别,session级别参数的具体设置有些时候很容易混淆。本文主要介绍了Oracle数据库参数使用的相关视图(V$PARAMETER,V$PARAMETER2,V$SYSTEM_PARAMETER,V$SYSTEM_PARAMETER2,V$SPPARAMETER),以及通过查询Oracle视图来获得不同情形下的参数值并进行对比。

 1、对比有关参数视图

b、V$PARAMETER2

c、V$SYSTEM_PARAMETER

d、V$SYSTEM_PARAMETER2

e、V$SPPARAMETER

a、查看session级别的参数
--基于session级别可以直接使用show parameter 方式
--演示环境
scott@USBO> select * from v$version where rownum<2;

BANNER
-------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

scott@USBO> show parameter cursor_shar

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
cursor_sharing                       string                            EXACT

scott@USBO> select name,value,isses_modifiable,issys_modifiable,isinstance_modifiable
  2  from v$parameter where name=&#39;cursor_sharing&#39;;

NAME                           VALUE           ISSES_MODIFIABL ISSYS_MODIFIABLE            ISINSTANCE_MODI
------------------------------ --------------- --------------- --------------------------- ---------------
cursor_sharing                 EXACT           TRUE            IMMEDIATE                   TRUE

scott@USBO> alter session set cursor_sharing=&#39;SIMILAR&#39;;   --->上面的查询可知session级别为true,即可修改

Session altered.

scott@USBO> show parameter cursor_shar   -->再次查看,修改已经生效

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
cursor_sharing                       string                            SIMILAR

b、查看基于实例级别的参数
--基于实例级别的参数需要通过V$SYSTEM_PARAMETER访问
scott@USBO> select name,value from v$system_parameter where name=&#39;cursor_sharing&#39;;

NAME                           VALUE
------------------------------ ---------------
cursor_sharing                 EXACT            --->可以看到此时的值依旧是exact,并没有受到之前修改的影响

scott@USBO> alter system set cursor_sharing=&#39;FORCE&#39;;   --->将参数cursor_sharing进行基于系统级别进行修改

System altered.

scott@USBO> show parameter cursor_sharing              --->此时可以看到当前session级别该参数从system级别派生

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
cursor_sharing                       string                            FORCE 

scott@USBO> alter session set cursor_sharing=&#39;EXACT&#39;;  --->再次基于session级别进行修改   

Session altered.

scott@USBO> show parameter cursor_shar     --->此时查询到session的值变为EXACT,那system级别呢?肯定是FORCE,大家自行验证

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
cursor_sharing                       string                            EXACT 

c、演示v$parameter与v$parameter2的差异
scott@USBO> show parameter control_files;

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
control_files                        string                            /u03/database/usbo/oradata/con
                                                                       trol01.ctl, /u03/database/usbo
                                                                       /oradata/control02.ctl
scott@USBO> select name,value from v$parameter where name=&#39;control_files&#39;;

NAME                           VALUE
------------------------------ ------------------------------------------------------------
control_files                  /u03/database/usbo/oradata/control01.ctl, /u03/database/usbo
                               /oradata/control02.ctl

--查询v$parameter2时,对于存在多个参数值的参数,在这个视图中分为多行进行列出,如下
--对于v$system_parameter与v$system_parameter2存在类似的情形,不再演示
scott@USBO> select name,value from v$parameter2 where name=&#39;control_files&#39;;

NAME                           VALUE
------------------------------ ------------------------------------------------------------
control_files                  /u03/database/usbo/oradata/control01.ctl
control_files                  /u03/database/usbo/oradata/control02.ctl

d、关于v$spparameter
--该视图可以用于判断当前数据库使用的是pfile还是spfile来启动
scott@USBO> select distinct isspecified from v$spparameter;

ISSPECIFIED
------------------
TRUE                       --->第一个值为TRUE,spfile启动
FALSE

goex_admin@MFTST> select distinct isspecified from v$spparameter;

ISSPEC
------
FALSE                     --->为false,pfile文件启动数据库  

goex_admin@MFTST> select name,value from v$spparameter where name=&#39;control_files&#39;;  

NAME                      VALUE
------------------------- ------------------------------------------------------------
control_files                                                                      --->由于为pfile启动,所以查询不到任何信息

goex_admin@MFTST> select count(*) from v$spparameter where isspecified=&#39;TRUE&#39;;

  COUNT(*)
----------                              --->列isspecified没有一个值为TRUE,同样是因为使用了pfile
         0 

对于spfile启动下的v$spparameter,对于存在多个参数值的参数,在这个视图中也分为多行进行列出         
scott@USBO> select name,value from v$spparameter where name=&#39;control_files&#39;;

NAME                           VALUE
------------------------------ ------------------------------------------------------------
control_files                  /u03/database/usbo/oradata/control01.ctl
control_files                  /u03/database/usbo/oradata/control02.ctl
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn