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