oracle怎样初始化参数,Oracle初始化参数

Oracle初始化参数可以分为3类:推导参数、操作系统依赖参数和可变参数。

推导参数(Derived Parameters)

推导参数意思是,这些参数的值来自于其他参数计算的结果,所以这类参数不需要修改,但当用户强行修改该参数时,会覆盖之前运算得出的值。

比如SESSIONS这个参数,缺省情况下由PROCESS运算而来,《DBA入门、进阶与诊断案例》中提到的公式是SESSIONS=(1.1*PROCESSES)+5,不过发现11G以有所改动,实际为SESSIONS=(1.6*PROCESSES)+8。SQL> show parameter session;

NAME                    TYPE          VALUE

----------------------- -----------   ---------

sessions                integer       248

SQL> show parameter process;

NAME                    TYPE          VALUE

----------------------- -----------   -------

processes               integer       150

$vi initorcl.ora

*.processes=200

SQL> show parameter processes;

NAME                    TYPE          VALUE

----------------------- -----------   ---------

processes               integer       200

SQL> show parameter session;

NAME                    TYPE          VALUE

----------------------- -----------   ---------

sessions                integer       328

操作系统依赖参数(Operating System-Dependent Parameters)

这类参数的有效值或者取值范围受限于操作系统。比如:DB_BLOCK_BUFFERS表明主存中的buffers的数量,其最大值受系统参数的影响,而DB_BLOCK_SIZE则依赖于系统块的默认值。

可变参数(Variable Parameters)

可变参数通常是看调整的,有些设置是限制条件,如OPEN_CURSORS,假如该参数值为10,当用户尝试在自己的会话中打开第11个游标时,返回错误。但有些限制性的参数如DB_BLOCK_BUFFERS,虽然可能因超出限制而使得数据库工作缓慢,但不会阻止工作进行。

初始化参数的其它分类方式

按照修改方式的划分,初始化参数又可以分为静态参数和动态参数。

静态参数仅在参数文件(pfile)中修改,重启后设置生效。

动态参数可以随时调整,调整后看即时生效。

按照获取方式不同,初始化参数又可以分为显示参数和隐藏参数。

显示参数可以通过V$PARAMETER查询获取,而隐藏参数通常以'_'开头,查询需通过数据库基表获取。

初始化参数的获取

上面已经提到一般初始化参数的获取方式,包括V$PARAMETER视图,以及通过SHOW PARAMETER 'pararmeters_name' (这里的parameters_name支持模糊匹配)命令查看。通过SQL_TRACE跟踪可以发现SHOW PARAMETER语句实际是通过以下语句实现:SELECT NAME NAME_COL_PLUS_SHOW_PARAM,DECODE(TYPE,1,'boolean',2,'string',3,

'integer',4,'file',5,'number',        6,'big integer', 'unknown') TYPE,

DISPLAY_VALUE VALUE_COL_PLUS_SHOW_PARAM

FROM

V$PARAMETER WHERE UPPER(NAME) LIKE UPPER(:NMBIND_SHOW_OBJ) ORDER BY

NAME_COL_PLUS_SHOW_PARAM,ROWNUM

:NMBIND_SHOW_OBJ 注意这里用的绑定变量,如果我替换成'%SGA%' 就与SHOW PARAMETER等效。

而通过对以上语句的进一步查询解释,可以看到V$PARAMETER是通过对以下基表的查询获取的:select x.inst_id,

x.indx + 1,

ksppinm,

ksppity,

ksppstvl,

ksppstdvl,

ksppstdf,

decode(bitand(ksppiflg / 256, 1), 1, 'TRUE', 'FALSE'),

decode(bitand(ksppiflg / 65536, 3),

1,

'IMMEDIATE',

2,

'DEFERRED',

3,

'IMMEDIATE',

'FALSE'),

decode(bitand(ksppiflg, 4),

4,

'FALSE',

decode(bitand(ksppiflg / 65536, 3), 0, 'FALSE', 'TRUE')),

decode(bitand(ksppstvf, 7), 1, 'MODIFIED', 4, 'SYSTEM_MOD', 'FALSE'),

decode(bitand(ksppstvf, 2), 2, 'TRUE', 'FALSE'),

decode(bitand(ksppilrmflg / 64, 1), 1, 'TRUE', 'FALSE'),

decode(bitand(ksppilrmflg / 268435456, 1), 1, 'TRUE', 'FALSE'),

ksppdesc,

ksppstcmnt,

ksppihash

from x$ksppi x, x$ksppcv y

where (x.indx = y.indx)

and bitand(ksppiflg, 268435456) = 0

and ((translate(ksppinm, '_', '#') not like '##%') and

((translate(ksppinm, '_', '#') not like '#%') or

(ksppstdf = 'FALSE') or (bitand(ksppstvf, 5) > 0)));

而这些基表查询中是过滤了'_'开头的参数(translate(ksppinm, '_', '#') not like '##%'),也就是说不显示隐藏参数。

相反的,如果我要查询隐藏参数,则通过以下语句查询:set line 300

col nam for a30

col value for a25

select ksppinm name,

ksppstvl value,

ksppstdf isdefault,

decode(bitand(ksppstvf, 7), 1, 'MODIFIED', 4, 'SYSTEM_MOD', 'FALSE') ismod,

decode(bitand(ksppstvf, 2), 2, 'TRUE', 'FALSE') isadj

from x$ksppi x, x$ksppcv y

where x.indx = y.indx

and x.indx = userenv('Instance')

and y.indx = userenv('Instance')

and x.indx = y.indx

and ((translate(ksppinm, '__', '#') like '##%') or

(translate(x.ksppinm, '_', '#') like '#%'))

order by translate(x.ksppinm, '_', '');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值