经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Oracle » 查看文章
x$ksppi与x$ksppcv查询隐藏参数
来源:cnblogs  作者:昔日丶芳华  时间:2019/1/11 9:49:03  对本文有异议

数据库版本: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

 

查看隐含参数及值

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

      查询结果如下:

      

 

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

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

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号