4. 参数配置
参数
查看参数
show parameter parameter_name;
查看参数是静态参数还是动态参数
select name,value,isses_modifiable,issys_modifiable from v$system_parameter;
-- isses_modifiable 和issys_modifiable 分别对应的是session级别修改的参数和system级别修改的参数
-- 如果isses_modifiable=true,表明这个参数可以在session级别可以修改,并且立即生效
alter session set xxx=xxx;
alter session set xxx=xxx scope=spfile; -- (false)
-- 如果issys_modifiable=immediate,表示这个参数可以在system立即修改,并且立即生效。
alter system set xxx=xxx;
-- 若如果issys_modifiable=deferred或者false ,表示这个参数不能在直接修改在内存中,需要加scope=spfile,重启后才能生效。
修改参数
如果使用 spfile 启动,
动态参数(当前生效)
alter system set parameter_name=value scope=both;
可进行动态修改的参数,修改生效同时保存到spfile中。
alter system set parameter_name=value scope=spfile;
仅对修改写入spfile,重启后生效。
静态参数(只能将修改写入spfile,重启后生效)
alter system set parameter_name=value scope=spfile;
只能使用 spfile 参数,重启后生效。
如果省去 scope 选项时,默认是 both
如果使用 pfile 启动,则默认 scope 选项为 memory,修改不会保存到参数文件中,仅对当前实例有效。
查看spfile现在的参数,未生效的
v$spparmeter
查看修改 spfile 但是未生效的参数
select name,value from v$spparameter where name = '参数名'; -- 查看被修改的参数(未生效)?
-- 可以和 show parameter 参数名做对照,是否一致。
select name,value from v$parameter where name = '参数名'; -- 查看当前的参数
启动
启动方式
-- 使用 pfile 启动
startup pfile='pfile_xxx.ora'
用修改后的 pfile 文件生成 spfile 文件
默认目录:ORACLE_HOME/database
-- 创建
create spfile from pfile;
-- 在 pfile 和 spfile 互生成中,可以不使用默认文件而指定文件
create spfile from pfile='路径';
rac环境下修改参数需要注意的地方
有的静态参数需要两台机器同时重启,有的参数可以单台分别重启生效
alter system set sga_target=1024M scope=spfile sid='orcl1';
alter system set sga_target=1024M scope=spfile sid='*';
隐藏参数查看与修改
查看隐藏参数
col name for a30;
col value for a10;
select
x.ksppinm name,
y.ksppstvl value,
y.ksppstdf isdefault,
decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE') ismod,
decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE') isadj
from
sys.x$ksppi x,
sys.x$ksppcv y
where
x.inst_id = userenv('Instance') and
y.inst_id = userenv('Instance') and
x.indx = y.indx and x.ksppinm = '_optimizer_cost_based_transformation'
order by
translate(x.ksppinm, ' _', ' ')
/
修改参数
alter system set "_optimizer_cost_based_transformation"=off scope=both;
参数中带有下划线和双下划线的参数
pfile 文件中:
这里我们来说一下参数文件中带双下划线的参数的意义(带单下划线的参数为隐含参数),带双下划线的参数在自动内存管理中才会出现(asmm)。如果使用了spfile的话,asmm会在实例shutdown之前将当前实际的内存组件大小(oracle认为最优的,实际上可能不是最优的)保存到spfile中,你用strings命令可以在spfile文件中查看到带双下划线的参数(asmm所涉及到的参数)。这些在spfile保存的组件大小会在下次启动时被沿用,已达到将已实践得出的“最佳值”记住的目的,这样下次就不用逐渐调整了。