oracle的x$表系列介绍之-x$ksllclass
作者:eygle
出处:http://blog.eygle.com
日期:january 16, 2005
« hray纳斯达克的ipo历程 | blog首页 | windows xp中如何设置自动登录 »
x$ksllclass--[k]ernel [s]ervice [l]ock [l]atches [class]
从oracle9ir2开始,oracle允许对latch进行分类,不同的分类可以用于不同的_spin_count值。
这就避免了之前版本,一旦修改_spin_count参数就会影响所有latch的问题。从而可以在一定程度上控制该参数对于cpu的过量耗用。
以下是x$ksllclass的查询输出:
sql> select indx, spin, yield, waittime from x$ksllclass;
indx spin yield waittime
---------- ---------- ---------- ----------
0 20000 0 1
1 20000 0 1
2 20000 0 1
3 20000 0 1
4 20000 0 1
5 20000 0 1
6 20000 0 1
7 20000 0 1
8 rows selected.
|
比如我们的数据库系统经历较为严重的cache buffers chains竞争,为了降低其sleeep次数,我们可以对该latch进行针对性分类邦定,单独修改其_spin_count值。
sql> select latch#,name from v$latchname where name='cache buffers chains';
latch# name
---------- ----------------------------------------------------------------
98 cache buffers chains
|
我们可以如下修改初始化参数,而后重新启动数据库:
_latch_class_1 = "10000"
_latch_classes = "98:1"
sql> select latch#,name from v$latchname where name='cache buffers chains';
latch# name
---------- ----------------------------------------------------------------
98 cache buffers chains
sql> alter system set "_latch_class_1"=10000 scope=spfile;
system altered.
sql> alter system set "_latch_classes"="98:1" scope=spfile;
system altered.
sql> startup force;
oracle instance started.
total system global area 80811208 bytes
fixed size 451784 bytes
variable size 37748736 bytes
database buffers 41943040 bytes
redo buffers 667648 bytes
database mounted.
database opened.
sql> show parameter latch
name type value
------------------------------------ ----------- ------------------------------
_latch_class_1 string 10000
_latch_classes string 98:1
sql> select indx, spin, yield, waittime from x$ksllclass;
indx spin yield waittime
---------- ---------- ---------- ----------
0 20000 0 1
1 10000 0 1
2 20000 0 1
3 20000 0 1
4 20000 0 1
5 20000 0 1
6 20000 0 1
7 20000 0 1
8 rows selected.
sql>
|
由此,单独控制一些重要latch成为可能。
sql> select a.kslldnam, b.kslltnum, b.class_ksllt 2 from x$kslld a, x$ksllt b 3 where a.kslldadr = b.addr 4 and b.class_ksllt > 0; kslldnam kslltnum class_ksllt ---------------------------------------------- ---------- ----------- process allocation 3 2 cache buffers chains 98 1 |
更多请参考:
richmond shee, kirtikumar deshpande and k gopalakrishnan的《oracle wait interface》