Oracle114的博客
自我介绍
切换风格
订阅我的Blog
博客日历
文章归档...
最新发表...
博客统计...
网站链接...
资源
===========================================================
怎样把经常使用的小表存放在KEEP缓冲区中
===========================================================

1)分配keep缓冲区

alter system set db_keep_cache_size = 20m;

2)把表存放在keep中

create table test (a nuber) storage (buffer_pool keep);
或者
alter table test storage(buffer_pool keep);

insert into test values (1);
或者查询记录
select * from test;

3)查看进行了几次物理读,并且在哪个缓冲区里读:

select name,physical_reads,db_block_gets + consistent_gets mem from v$buffer_pool_statistics
where name='KEEP';

4)再查询表记录,然后观察进行了几次物理读,并且在哪个缓冲区里读:
select * from test;

select name,physical_reads,db_block_gets + consistent_gets mem from v$buffer_pool_statistics
where name='KEEP';


注:
1)对表test就行访问时都在db_cache_pool操作。如果没有分配b_keep_cache_size则不会放在keep缓冲区中。

2)如果在把表的内容放入KEEP缓冲区之前,已经对表就行访问,这时数据会放在DB_CACHE_SIZE中。则每次进行数据读取的时候,都从DB_CACHE_SIZE中读取,可以使用如下命令,把DB_CACHE_SIZE中数据清空:
ALTER SYSTEM FLUSH BUFFER_CACHE;

3)alter system flush shared_pool;使用命令刷新共享池,会造成重新分析sql语句。

请参考:

http://www.unixgroup.net/viewtopic.php?p=11639#11639


Oracle114 发表于:2007.01.22 10:40 ::分类: ( Oracle结构与管理 ) ::阅读:(169次) :: 评论 (0) :: 引用 (0)

发表评论
标题

在此添加评论

称呼

邮箱地址(可选)

个人主页(可选)