在内存中固定大数据对象的方法

[复制链接]
查看11 | 回复1 | 2006-12-17 17:57:00 | 显示全部楼层 |阅读模式
1.检索需要在共享池中要求大于100K连续空间的对象:
select * from v$db_object_cache
where sharable_mem > 100000 and
type in ('PACKAGE','PACKAGE BODY','PROCEDURE','FUNCTION');
2.根据反馈的结果进行分析,并可以使用下面的语句进行固定:
exec dbms_shared_pool.keep('SYS.STANDARD');
3.使用上面的DBMS包必须先在服务器上执行下面的脚本,以创建dbms_shared_pool包:
sqlplus “/ as sysdba”
@/usr/oracle/product/9.2.0/rdbms/admin/dbmspool.sql
4.原理说明:
当数据库需要访问一个数据对象时,首先会从buffer pool中查找, 查不到就会进行物理读,先将数据对象读入buffer_pool中然后再开始使用。这种机制就导致了bufer_pool必然存在一个轮转机制(最近最少使用算法),无论使用什么轮换机制,大数据对象的读入总会覆盖大量的小数据对象,因此通过这种机制将大数据对象缓冲在共享池中就可以避免这种数据交换,大大提高数据访问在缓冲区的命中率。
方法是在网上找的,原理是我自已总结的,不知道我的理解是否正确,大家共同讨论下。
回复

使用道具 举报

千问 | 2006-12-17 17:57:00 | 显示全部楼层
期待大师指点。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行