首页 > 代码库 > Oracle参数查看方法小结

Oracle参数查看方法小结

Oracle提供了大量的系统参数,下面是查询方法小结。

系统当前参数

系统当前参数涉及到这些视图:v$parameter、v$parameter2、v$system_parameter、v$system_parameter2和v$spparameter。

v$parameter

存放session级的参数,如果没有被"alter session"修改,默认和system级的参数值相同,下面是该视图的关键字段:
 1)NUM:参数编号;
 2)NAME:参数名;
 3)TYPE:参数类型:
  1-Boolean;
  2-String;
  3-Integer;
  4-Parameter file;
  5-保留;
  6-Big integer;
 4)VALUE:当前session的参数值;
 5)DISPLAY_VALUE:用户友好的参数值;
 6)ISSES_MODIFIABLE:true表示参数能通过"alter session"被改变,false表示不能改变;
 7)ISSYS_MODIFIABLE:参数是否能被"alter system"改变,改变后:
  IMMEDIATE:参数可以通过"alter system"改变,立即生效
  DEFERRED:参数可以通过"alter system"改变,在下一个session开始生效
  false表示不能改变;
 8)ISINSTANCE_MODIFIABLE:true表示参数值在每个实例下可以是不同的,false表示所有实例必须具有相同的值。如果ISSYS_MODIFIABLE为false,则该值总是false;
 9)ISMODIFIED:表示参数是否在实例启动后被修改
  MODIFIED:参数被使用"alter session"修改
  SYSTEM_MOD:参数被使用"alter system"修改
  FALSE:在实例启动后没有被修改
 10)ISDEPRECATED:true表示该参数被弃用,否则false;
 11)DESCRIPTION:参数的描述信息;
 12)UPDATE_COMMENT:最近一次修改的注释;
 13)HASH:参数名的哈希值。

v$system_parameter

存放实例级别的参数,新的session将从这里继承参数值。下面是该视图的关键字段:
 1)NUM:参数编号;
 2)NAME:参数名;
 3)TYPE:参数类型:
  1-Boolean;
  2-String;
  3-Integer;
  4-Parameter file;
  5-保留;
  6-Big integer;
 4)VALUE:实例级的参数值;
 5)DISPLAY_VALUE:用户友好的参数值;
 6)ISSES_MODIFIABLE:true表示参数能通过"alter session"被改变,false表示不能改变;
 7)ISSYS_MODIFIABLE:参数是否能被"alter system"改变,改变后:
  IMMEDIATE:参数可以通过"alter system"改变,立即生效
  DEFERRED:参数可以通过"alter system"改变,在下一个session开始生效
  false表示不能改变;
 8)ISINSTANCE_MODIFIABLE:true表示参数值在每个实例下可以是不同的,false表示所有实例必须具有相同的值。如果ISSYS_MODIFIABLE为false,则该值总是false;
 9)ISMODIFIED:表示该参数怎么被修改。如果"alter system"被执行,这个值将是MODIFIED;
 10)ISDEPRECATED:true表示该参数被弃用,否则false;
 11)DESCRIPTION:参数的描述信息;
 12)UPDATE_COMMENT:最近一次修改的注释;
 13)HASH:参数名的哈希值。

v$parameter2

和v$parameter相同,唯一的区别是如果一个参数有多个值,那么在v$parameter2中将有多行,而在v$parameter中则只有一行,在value中使用逗号分隔多个值。
例如参数control_files,在v$parameter中为:

name			value--------------------------------------------------------------------------------------control_files	E:\ORACLE\ORADATA\LY\CONTROL01.CTL, E:\ORACLE\ORADATA\LY\CONTROL02.CTL, E:\ORACLE\ORADATA\LY\CONTROL03.CTL

在v$parameter2中为:

name			value--------------------------------------------------------------------------------------control_files	E:\ORACLE\ORADATA\LY\CONTROL01.CTLcontrol_files	E:\ORACLE\ORADATA\LY\CONTROL02.CTLcontrol_files	E:\ORACLE\ORADATA\LY\CONTROL03.CTL

v$system_parameter2

类似于v$parameter2。

v$spparameter

用于存放服务器参数文件(spfile)的参数信息,如果服务器参数文件没有被用于启动实例,则视图每行的ISSPECIFIED列的值都为false,视图的关键字段如下:
 1)SID:参数的SID;
 2)NAME:参数名;
 3)VALUE:参数值(如果服务器参数文件没有被用于启动实例,则为null);
 4)DISPLAY_VALUE:参数值,采用用户友好的格式;
 5)ISSPECIFIED:true表示参数在服务器参数文件中指定,否则false;
 6)ORDINAL:参数值的位置(序号)(如果服务端配置文件没被用于启动实例,则为0)。只有当参数值为一个列表时才使用;
 7)UPDATE_COMMENT:最近一次修改的注释(如果服务器参数文件没有被用于启动实例,则为null)。

隐藏参数

Oracle系统中还有一类参数称之为隐藏参数(hidden parameters),是系统中使用,但Oracle官方没有公布的参数,这些参数可能是那些还没有成熟或者是系统开发中使用的参数。这些参数在所有Oracle官方提供的文档中都没有介绍,他们的命名有一个共同特征就是都以‘_‘作为参数的首字符,和隐藏参数相关的视图有x$ksppi、x$ksppcv和x$ksppsv。

x$ksppi

x$ksppi是v$parameter、v$parameter2、v$system_parameter和v$system_parameter2的基础表,保存参数信息,关键字段如下:
 1)ADDR:内存地址
 2)INDX:序号
 3)INST_ID:实例编号
 4)KSPPINM:参数名称
 5)KSPPITY:参数类型:
  1-Boolean;
  2-String;
  3-Integer;
  4-Parameter file;
 6)KSPPDESC:参数描述信息
 7)KSPPIFLG:标志,用来说明isses_modifiable或者issys_modifiable

x$ksppcv

保存当前session的参数值,和x$ksppi用indx关联,关键字段如下:
 1)ADDR:内存地址
 2)INDX:序号
 3)INST_ID:实例编号
 4)KSPPSTVL:参数的当前值
 5)KSPPSTDF:参数的默认值
 6)KSPPSTVF:标志字段,用来说明(‘Modified‘、‘System Modified‘或is_adjusted)
 7)KSPPSTCMNT:注释

x$ksppsv

保存系统参数值,和x$ksppi用indx关联,字段和x$ksppcv基本一致。

查询隐藏参数

查询隐藏参数和当前session的参数值和默认值:

select ksppinm "Parameter Name", ksppstvl "Value", ksppstdf "Default"  from x$ksppi x, x$ksppcv y where x.indx = y.indx   and ksppinm like '/_%trace%' escape '/';

查看隐藏参数,并显示当前session和实例的参数值:

select a.ksppinm  Parameter,       a.ksppdesc Description,       b.ksppstvl "Session Value",       c.ksppstvl "Instance Value"  from x$ksppi a, x$ksppcv b, x$ksppsv c where a.indx = b.indx   and a.indx = c.indx   and a.ksppinm like '\_%' escape '\';

将a.ksppinm指定特定的参数名,可以查看指定参数的对应的值。

废弃的参数

Oracle中存在一些以前的版本中存在,但新版本中废弃的参数,可以在视图V$OBSOLETE_PARAMETER中查找到,该视图值包含两个字段,name(参数名)和ISSPECIFIED(true表示参数在参数文件中指定,false表示没有。一般情况下该值都应该为false)。

下面是查询隐藏参数和ISSPECIFIED值的方法:

SELECT name, isspecified FROM v$obsolete_parameter;

 

Oracle参数查看方法小结