您的位置:首页 > 数据库 > Oracle

oracle隐含参数的查看与修改

2017-02-26 14:27 337 查看
v$parameter视图中查询参数的时候其实都是通过x$ksppi和x$ksppcv这两个内部视图中得到的。

1. 可以通过如下方式查询当前实例的所有隐含参数:

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
order by
translate(x.ksppinm, ' _', ' ')
/

查询结果部分截图:

NAME VALUE ISDEFAULT ISMOD ISADJ
------------------------------ ---------- --------- ---------- -----
_xsolapi_use_olap_dml TRUE TRUE FALSE FALSE
_xsolapi_use_olap_dml_for_rank TRUE TRUE FALSE FALSE
_xtbuffer_size 0 TRUE FALSE FALSE

2. 如果想查询某一个具体的隐含参数的值,只需要在上面原基础上加上 and x.ksppinm ='XXXXX' 过滤。

例如查询 _gc_undo_affinity 。

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 ='_gc_undo_affinity'
order by
translate(x.ksppinm, ' _', ' ')
/

NAME VALUE ISDEFAULT ISMOD ISADJ
------------------------------ ---------- --------- ---------- -----
_gc_undo_affinity TRUE TRUE FALSE FALSE

3. 修改隐含参数方法:

这里列举一个修改DRM (有bug,易导致RAC 实例崩溃)隐含参数的例子。不同隐含参数的修改不同,具体需查看文档。

方法一:(可以重启的改法)

3.1 查看此隐含参数的值。 (这里不贴代码,请参照上面自行执行)

3.2 修改隐含参数的值。

SQL> alter system set "_gc_policy_time"=0 scope=spfile sid='*';
System altered.
SQL> alter system set "_gc_undo_affinity"=false scope=spfile sid='*';
System altered.

3.3 改完了之后,需要重启生效,查看。

方法二 (不能重启)

如果暂时无法重启实例,可以使用如下命令“事实上”禁用DRM:(以下两个参数可以动态调整)

alter system set "_gc_affinity_limit"=10000000;
alter system set "_gc_affinity_minimum"=10000000;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: