识别出热点对象后,可以决定将对象隔离放入keep池中。作为一般的规则,应该有足够的RAM存储可以用于整个表或者索引。例如,如果希望为keep池增加页表,就需要给init.ora的buffer_pool_keep 参数增加104个数据块
——调整 recycle 池
在recycle池放置对象的目标是将全表搜索频率的大表进行分离,为了找到进行全表搜索的大表,我们必须求助于从 access.sql中获得的全表搜索报告:
access_recycle_syntax.sql
select
'alter table '||p.owner||'.'||p.name||' storage (buffer_pool recyle);'
from
dba_tables t,
dba_segments s,
sqltemp s,
(select distinct statement_id stid, object_owner owner, object_name name
from plan_table
where operation='TABLE ACCESS' and options='FULL') p
where
s.addr||':'||TO_CHAR(s.hashval)=p.stid
and
t.table_name=p.name
and
t.owner=p.owner
and t.buffer_pool<>'RECYCLE'
having s.blocks>1000
group by
p.owner,p.name,t.num_rows,s.blocks
order by
sum(s.executions) desc;
——给表分配recycle池
alter table user.table_name storage(buffer_pool recycle);
注意:在将任何表加入到RECYCLE池之前,DBA都应该抽取sql源代码,并且验证这个查询是否获取超过了表中行的40%
——高级recycle池调整
下列查询使用了x$bh.tch来识别具有一次缓冲区接触计数,但是总量超过了整个缓存的5%的数据缓存中的对象,这些数据段是潜在的在recycle缓冲池中放置的候选对象,因为他们可能会让不会重用的数据块占用大量的缓存空间
|
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容 本站提醒:不要进行人身攻击。谢谢配合。 |