首先初始化参数的设置的方法就有很多种:可以通过ALTER SYSTEM SET SCOPE = MEMORY的方式仅设置内存的修改,也可以通过ALTER SYSTEM SET SCOPE = SPFILE只修改SPFILE的值,当然也可以同时修改SPFILE和MEMORY中的设置。还有一种初始化参数可以设置延迟生效,也就是说这个修改只对以后连接到数据库的会话生效,而对当前会话以及其他已经连接到Oracle的会话不会生效。如果再考虑RAC环境,数据库中存在多个启动实例的情况,那么查询数据库初始化参数就更加复杂了。
所幸Oracle提供的查询初始化参数方法也有很多种:SHOW PARAMETERS、SHOW SPPARAMETERS、CREATE PFILE、V$PARAMETER、V$PARAMETER2、V$SYSTEM_PARAMETER、V$SYSTEM_PARAMETER2、V$SPPARAMETER。
SHOW PARAMETERS是SQLPLUS工具提供的查询初始化参数的方法,这个方法查询的初始化参数是当前会话生效的初始化参数。
SHOW SPPARAMETERS也是SQLPLUS工具提供的方法,用来查询当前会话生效的SPFILE参数包含的初始化参数。这个命令在11g以后sqlplus版本中有效。
CREATE PFILE命令不像其他方法那样直观,这种方法可以将SPFILE中或当前内存中设置的初始化文件保存到PFILE文件中,然后就可以通过文本编辑工具直观的看到SPFILE中或当前内存中设置了哪些初始化参数。虽然这种方法看上去比较麻烦,但是这种方法列出的参数都是用户设置的参数,所有默认值的参数并不会列出来,因此看到的结果要比其他方法直观得多。在11g以后的版本允许CREATE PFILE FROM MEMORY。
V$PARAMETER视图提供了当前会话可见的初始化参数的设置,如果像查询RAC数据库的所有实例的设置,可以查询GV$PARAMETER视图。
V$PARAMETER2视图和V$PARAMETER差不多,唯一的区别在于对于包括值的初始化参数,从这个视图会返回多条记录,每条记录对应一个值。同样的,对于RAC环境可以查询GV$PARAMETER2视图。
V$SYSTEM_PARAMETER视图记录当前实例生效的初始化参数设置。注意这里是实例生效而不是会话生效。同样,GV$SYSTEM_PARAMETER则包含了所有实例生效的初始化参数信息。
V$SYSTEM_PARAMETER2视图与V$SYSTEM_PARAMETER视图的关系和V$PARAMETER2视图与V$PARAMETER视图的关系一样,都是对于包含多个值的参数采用了分行处理的方式。
V$SPPARAMETER记录了来自SPFILE文件中初始化参数。如果参数在SPFILE文件中没有设置,则字段ISSPECIFIED对应的值为FALSE。同样可以查询GVSPPARAMETER参数来显示RAC环境所有实例的设置。
首先看一下V$PARAMETER和V$PARAMETER2的区别,这个区别同样适用于V$SYSTEM_PARAMETER和V$SYSTEM_PARAMETER2:
SQL> SELECT NAME, VALUE FROM V$PARAMETER
2 MINUS
3 SELECT NAME, VALUE FROM V$PARAMETER2;NAME VALUE
0---------------------------------------- --------------------------------------------------control_files E:\ORACLE\ORADATA\YTK102\CONTROL01.CTL, E:\ORACLE\
ORADATA\YTK102\CONTROL02.CTL, E:\ORACLE\ORADATA\YT
K102\CONTROL03.CTL
SQL> SELECT NAME, VALUE FROM V$PARAMETER2
2 MINUS
3 SELECT NAME, VALUE FROM V$PARAMETER;NAME VALUE
---------------------------------------- --------------------------------------------------
control_files E:\ORACLE\ORADATA\YTK102\CONTROL01.CTL
control_files E:\ORACLE\ORADATA\YTK102\CONTROL02.CTL
control_files E:\ORACLE\ORADATA\YTK102\CONTROL03.CTL