zoukankan      html  css  js  c++  java
  • x$ksppi与x$ksppcv查询隐藏参数

    数据库版本:oracle11g 11.0.2.0.4

    SQL> desc x$ksppi;
    Name      Null?    Type
    -------------------- -------- ----------------------------
    ADDR                RAW(8)         ---->内存地址
    INDX            NUMBER        ---->序号
    INST_ID          NUMBER  ---->instance number
    KSPPINM         VARCHAR2(80)   ---->参数名称
    KSPPITY          NUMBER              ---->参数类型
    KSPPDESC           VARCHAR2(255)   ---->参数描述
    KSPPIFLG             NUMBER             ---->标志字段 
    KSPPILRMFLG           NUMBER
    KSPPIHASH          NUMBER

    SQL> desc x$ksppcv;
    Name      Null?    Type
    -------------------- -------- ----------------------------
    ADDR          RAW(8)             ---->内存地址
    INDX            NUMBER          ---->序号
    INST_ID            NUMBER          ----->instance number
    KSPPSTVL       VARCHAR2(4000)     ---->value,参数值
    KSPPSTDVL          VARCHAR2(4000)    
    KSPPSTDF       VARCHAR2(9)           ---->缺省值
    KSPPSTVF        NUMBER                  ---->标志字段
    KSPPSTCMNT       VARCHAR2(255)       ---->comment

     

    查看隐含参数及值

    select 
            pi.indx+1                            numb, 
            pi.ksppinm                           name, 
            sv.ksppstvl                          value, 
            pi.ksppity                           type, 
            sv.ksppstdf                          is_default, 
            decode(bitand(pi.ksppiflg/256,1),  1,'True', 'False' )                                           is_session_modifiable, 
            decode(bitand(pi.ksppiflg/65536,3), 1,'Immediate',  2,'Deferred' ,  3,'Immediate', 'False'  )    is_system_modifiable, 
            decode(bitand(sv.ksppstvf,7),  1,'Modified',  4,'System Modified',  'False' )                    is_modified, 
            decode(bitand(sv.ksppstvf,2), 2,'True',  'False' )                                               is_adjusted, 
            pi.ksppdesc                          description 
    from 
            x$ksppi        pi, 
            x$ksppsv       sv 
    where 
            pi.indx = sv.indx 
    ;

          查询结果如下:

          

           由于GV$PARAMETER也是查询参数的,但是他们有什么不同呢。

         SELECT view_definition FROM v$fixed_view_definition WHERE view_name = 'GV$PARAMETER'; ------>通过数据字典查看生成GV$PARAMETER视图的SQL语句
     1 /* Formatted on 2019/1/10 上午 10:00:25 (QP5 v5.326) */
     2 SELECT x.inst_id,
     3        x.indx + 1,
     4        ksppinm,
     5        ksppity,
     6        ksppstvl,
     7        ksppstdvl,
     8        ksppstdf,
     9        DECODE (BITAND (ksppiflg / 256, 1), 1, 'TRUE', 'FALSE'),
    10        DECODE (BITAND (ksppiflg / 65536, 3),
    11                1, 'IMMEDIATE',
    12                2, 'DEFERRED',
    13                3, 'IMMEDIATE',
    14                'FALSE'),
    15        DECODE (BITAND (ksppiflg, 4),
    16                4, 'FALSE',
    17                DECODE (BITAND (ksppiflg / 65536, 3), 0, 'FALSE', 'TRUE')),
    18        DECODE (BITAND (ksppstvf, 7),
    19                1, 'MODIFIED',
    20                4, 'SYSTEM_MOD',
    21                'FALSE'),
    22        DECODE (BITAND (ksppstvf, 2), 2, 'TRUE', 'FALSE'),
    23        DECODE (BITAND (ksppilrmflg / 64, 1), 1, 'TRUE', 'FALSE'),
    24        DECODE (BITAND (ksppilrmflg / 268435456, 1), 1, 'TRUE', 'FALSE'),
    25        ksppdesc,
    26        ksppstcmnt,
    27        ksppihash
    28   FROM x$ksppi x, x$ksppcv y
    29  WHERE     (x.indx = y.indx)
    30        AND BITAND (ksppiflg, 268435456) = 0                        
    31        AND (    (TRANSLATE (ksppinm, '_', '#') NOT LIKE '##%')         ---->筛选,将以下划线'__'开头的替换成'##'开头,然后排除
    32             AND (   (TRANSLATE (ksppinm, '_', '#') NOT LIKE '#%')      ---->筛选,将以下划线'_'开头的替换成'#'开头,然后排除(有点困惑,为什么不直接not like '_%' 排除)
    33                  OR (ksppstdf = 'FALSE')
    34                  OR (BITAND (ksppstvf, 5) > 0)))                    

        

     

    decode函数比较1个参数时

    SELECT ID,DECODE(inParam,'beComparedParam','值1' ,'值2') name FROM table

    如果第一个参数inParam=='beComparedParam',则select得到的name显示为值1,

    如果第一个参数inParam!='beComparedParam',则select得到的name显示为值2

    decode函数比较多个参数时

    SELECT ID,DECODE(inParam,'para1','值1' ,'para2','值2','para3','值3','para4','值4','para5','值5','default') name FROM table

    如果第一个参数inParam=='para1'那么那么select得到的那么显示为值1;

    如果第一个参数inParam=='para2'那么那么select得到的那么显示为值2;

    如果第一个参数inParam=='para3'那么那么select得到的那么显示为值3;

    如果第一个参数inParam=='para4'那么那么select得到的那么显示为值4;

    如果第一个参数inParam=='para5'那么那么select得到的那么显示为值5;

    都不相等就为'default '

        BITAND( nExpression1 ,nExpression2 )  

        将   nExpression1   的每一位同   nExpression2   的相应位进行比较。如果   nExpression1   和   nExpression2   的位都是   1,相应的结果位就是   1;否则相应的结果位是   0   ------->1and1 = 1 ,  1and0 = 0   ,  0and0 = 0

        TRANSLATE(string,from_str,to_str) 

        返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string。TRANSLATE 是 REPLACE 所提供的功能的一个超集。如果 from_str 比 to_str 长,那么在 from_str 中而不在 to_str 中的额外字符将从 string 中被删除,

        因为它们没有相应的替换字符。to_str 不能为空。Oracle 将空字符串解释为 NULL,并且如果TRANSLATE 中的任何参数为NULL,那么结果也是 NULL。

  • 相关阅读:
    Struts2拦截器
    Struts2 数据封装与值栈
    Struts2的环境搭配
    自学spring AOP
    小白学Maven第二篇配置Ecilpse
    小白学Maven第一篇配置
    web项目jsp出现The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path错误
    软件测试复习(二)
    软件测试复习(一)
    白盒测试概述
  • 原文地址:https://www.cnblogs.com/hfjiang/p/10248600.html
Copyright © 2011-2022 走看看