Oracle的数据池可分为
default, keep, recycle
db_cache_size
db_keep_size
db_recycle_size[@more@]
一、
default:标准的缓存池
keep: 对于常驻内存的表使用,alter table .. storage(buffer_pool keep)
recycle:对不需要放在内存中的表使用: storage(buffer_pool recycle)
从本质上将,default, keep,recycle都使用LRU算法,本质上没有区别,就是看你放什么东西进去。
default池不仅方用户数据,而且也包括数据字典的缓存。
从9i开始,可以动态调整这几个内存区的大小
alter system set db_keep_size=xxxM
(show parameter cache_size可以看出全部的尺寸)
如果原来所有的池分配已经满了,首先要将其他的池缩小,才能分配给其他区域使用
二、让存储过程常驻内存
一般Oracle使用LRU算法淘汰最少使用的对象,但是你可以在共享池锁定对象,即无论此对象使用频率多低,都不从共享池中撤出,使用
DBMS_SHARED_POOL.KEEP(name varchar2, flag char default 'P')
flag默认的P代表存储过程,name是存储过程的名字
如果没有dbms_shared_pool包,可以用dbmspool.sql脚本生成