如何根据v$parameter查询Oracle隐含参数

Oracle的隐含参数在Oracle的官方文档中是不会出现的,这些参数主要是Oracle内部用于控制某些功能的开关,或者就像今天eygle讲的,Oracle牛逼之处就是可能几年前开发的一个功能就放到当时的版本中,让你“试用”,但你却不知道,如果碰巧因为遇见了这个问题的bug,Oracle会告诉你可以使用这个参数关掉,等用户“试用”了几年之后,相对来说稳定了,Oracle发布新版本,说推出了一个新功能,且稳定运行了N年…

那么如何知道某个隐含参数是何含义、全称是什么、默认值是什么?这里至少有两种方法是之前eygle和secooler大师在书中或课堂上介绍过的,记录于此,便于查询。

方法一:通过vfixedviewdefinition视图得到视图定义。我们知道查询常规参数可以使用select∗fromvparameter,那么v$parameter是如何定义的?

看到其来自于这个GV$PARAMETER视图,继续查:

可以看出其来自于两个X内部表XKSPPI和X$KSPPCV的查询结果,网上搜了一些介绍:
引自http://blog.csdn.net/cupid1102/article/details/50427308

X$KSPPCV用以记录当前的设置的值,及是否使用了缺省值等信息
ADDR RAW(4) –内存地址
INDX NUMBER –序号,从0开始
INST_ID NUMBER
KSPPINM VARCHAR2(64) –参数名称
KSPPITY NUMBER
KSPPDESC VARCHAR2(64) –描述

X$KSPPI则是一个基础表,用于记录参数名、参数说明等简单的信息。
ADDR RAW(4) –内存地址
INDX NUMBER –序号,从0开始
INST_ID NUMBER –instance number
KSPPSTVL VARCHAR2(512) –当前值
KSPPSTDF VARCHAR2(9) –缺省值
KSPPSTVF NUMBER –标志字段,用来说明(‘Modified’or ‘System Modified’ or
is_adjusted)
KSPPSTCMNT VARCHAR2(255) –comment

根据需求,可以调整下上述SQL语句,检索隐含参数名称、当前值、描述等几个关键信息,可以用like查询精确找出某个特殊的隐含参数,例如这输入了_partition开头的隐含参数名称:

查询结果如下,有两个_partition开头的隐含参数:

方法二:使用trace查看执行计划。
首先设置set autot trace,然后执行:

可以看见这条SQL底层是使用了两个X$内部表的全表扫描,这两个表就是上述方法一种介绍的内部表。再看谓词部分,有一些过滤查询条件,是使用NOT LIKE过滤了”_”开头的ksppinm参数名称,即过滤了隐含参数,根据方法一中介绍的表字段定义,可以拼接出自己想要的查询语句,查询出隐含参数和非隐含参数。

网上还有人通过改造,可以让show parameter命令显示出隐含参数,原理基本都是这些,有些技巧性的东西如果有兴趣找时间可以学习一下。

总结
对于视图等封装结构,可以通过执行计划,找出其基表,为探究其深入的原理提供了手段方法。

时间: 2024-09-15 08:30:16

如何根据v$parameter查询Oracle隐含参数的相关文章

Oracle 隐含参数

Oracle 隐含参数 点击(此处)折叠或打开 set pagesize 9999 set line 9999 col NAME format a40 col KSPPDESC format a50 col KSPPSTVL format a20 SELECT a.INDX,        a.KSPPINM NAME,        a.KSPPDESC,        b.KSPPSTVL FROM x$ksppi a,        x$ksppcv b WHERE a.INDX = b.

关于oracle隐含参数 总结

1.回顾 之前整理了两篇关于x$表的介绍,连接如下: http://blog.csdn.net/cymm_liu/article/details/7611675 http://blog.csdn.net/cymm_liu/article/details/7611758 数据字典系统表主要由4部分组成:1.内部RDBMS表:x$--2.数据字典表:--$(比如user$)3.动态性能视图:gv$--,v$--4.数据字典视图:user_--,all_--,dba_--数据库启动时,动态创建x$,在

[20170502]11G查询隐含参数视图.txt

[20170502]11G查询隐含参数视图GV$SYSTEM_PARAMETER3.txt --//oracle 存在许多隐含参数,一直以为oracle没有提供正常的视图查询该内容,实际上oracle 11G已经提供这方面的功能,只不过oracle并不公开. --//自己也是偶然发现: 1.环境: SYS@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER -------------------------

Oracle 多参数查询语句_oracle

废话不多说了,直接给大家贴代码了,具体代码如下所示: CREATE OR REPLACE FUNCTION f_get_param( IN_PARAM IN VARCHAR2, IN_FLAG IN VARCHAR2) RETURN VARCHAR2 IS RESULT VARCHAR2(500); v_leng NUMBER; v_left NUMBER; v_right NUMBER; v_param VARCHAR2(200); v_param1 VARCHAR2(200); BEGION

oracle的一个隐含参数

_allow_resetlogs_corruption=true这个是隐含参数,一般用于当前日志丢失而又无任何备份的情况. 可以忽略掉redolog的scn强行打开数据库. recover以后会报600的内部错误,不过没事,只要能打开数据库就可以了,然后exp/imp

Oracle undo_management参数不一致错误_oracle

环境Linux 5.8 10.2.0.5 RAC,两个节点只能一个节点mount,如果尝试mount另外节点就报ORA-01105和ORA-01606错误数据库版本 复制代码 代码如下: SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.

获取Oracle隐含参数信息

         Oracle数据库的初始化参数,主要来源于两个Oracle内部数据字典表:X$KSPPCV和X$KSPPI通常我们查询的V$Parameter视图或使用show parameter命令都是就来源于这两个系统表的,但通过这两种方式不能查询隐含参数.         X$KSPPCV用以记录当前的设置的值,及是否使用了缺省值等信息,X$KSPPI则是一个基础表,用于记录参数名.参数说明等简单的信息.需要注意的是INST_ID字段,在Rac环境中用以确定参数所属的实例.     可以

查看Oracle隐藏参数的方法

在ORACLE中,存在很多ORACLE不希望我们去参与修改的参数,对于这些参数我们可以通过下面的语句来查询: select x.ksppinm name, y.ksppstvl value, y.ksppstdf isdefault, decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE') ismod, decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE') isadj from sys

Linux 下 Oracle 内核参数优化

    数据库的性能优化涉及到整个数据库运行环境的方方面面,诸如操作系统,Oracle自身,存储,网络等等几个大块.而操作系统则是Oracle稳定运行与最大化性能的基石.本文主要描述基于Linux系统下 Oracle 内核参数的配置.     校验下面的列表中显示的内核参数的值被设置为大于或等于下面所显示的最小值.     如果你的系统中下面的任意参数的当前值已经大于或高于下面列出的值,请不要做任何修改.   下面的步骤给出了如何去校验并设置这些参数的值.     通过执行下面的命令进行校验