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