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 18 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 chainssql> 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 bytesfixed size 451784 bytesvariable size 37748736 bytesdatabase buffers 41943040 bytesredo buffers 667648 bytesdatabase mounted.database opened.sql> show parameter latchname type value———————————— ———– ——————————_latch_class_1 string 10000_latch_classes string 98:1sql> 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 18 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 2cache buffers chains 98 1
更多请参考:
richmond shee, kirtikumar deshpande and k gopalakrishnan的《oracle wait interface》