2、多种缓冲池(buffer pool) 1)Keep:通过db_keep_cache_size参数指定。 该buffer内的数据可能被重用,以降低I/O操作。该池的大小要大于指定到该池的段的总和。 读入到keep buffer的块不需要过期操作。 2)Recycle:通过db_recycle_cache_size参数指定。 该池中的数据被重用机会较小,该池大小要小于分配到该池的段的总和。读入该池的块需要经常执行过期处理。 3)Default:相当于一个没有Keep与Recycle池的实例的buffer cache,通过db_cache_size参数指定。 3、为对象明确指定buffer pool buffer_pool子句,用来为对象指定默认的buffer pool,是storage子句的一部分。 对create与alter table、cluster、index语句有效。 如果现有对象没有明确指定buffer pool,则默认都指定为default buffer pool,大小为DB_CACHE_SIZE参数设置的值。 语法: a.CREATE INDEX cust_idx ON tt(id) STORAGE (BUFFER_POOL KEEP); b.ALTER TABLE oe.customers STORAGE (BUFFER_POOL RECYCLE); c.ALTER INDEX oe.cust_lname_ix STORAGE (BUFFER_POOL KEEP); (二)、Share Pool 1、SHARE_POOL_SIZE 1)Share Pool可通过SHARE_POOL_SIZE参数指定: SQL> alter system set shared_pool_size=20M scope=both; 2)Share Pool保存的信息被多个会话共享,类型包括: a.Library Cache Library Cache又包含共享SQL区与PL/SQL区: a).共享SQL区保存了分析与编译过的SQL语句。 b).PL/SQL区保存了分析与编译过的PL/SQL块(过程和函数、包、触发器与匿名PL/SQL块)。 b.Data Dictionary Cache 保存了数据字典对象的定义。 c.UGA(User Global Area) UGA内包含了共享服务器模式下的会话信息。 共享服务器模式时,如果large pool没有配置,则UGA保存在Share Pool中。 (三)、Large Pool
1)Large Pool大小通过LARGE_POOL_SIZE参数指定: SQL> alter system set large_pool_size=20m scope=both; 2)作用: a.为I/O服务进程分配内存 b.为备份与恢复操作分配内存 c.为Oracle共享服务器模式与多个数据库间的联机事务分配内存。 通过从large pool中为共享服务器模式分配会话内存,可以减少share pool因频繁为大对象分配和回收内存而产生的碎片。将大的对象从share pool中分离出来,可以提高shared pool的使用效率,使其可以为新的请求提供服务或者根据需要保留现有的数据。 (四)、Java Pool