如果共享池中碎片化变得十分严重,就会导致比较大的共享内存分配无法满足需求,oracle在共享池中设计了保留池.
保留池的设计目的是为了在共享池碎片化很严重的时候,还能够有一部分保留空间,用于较大的内存分配。可以通过参数shared_pool_reserved_size来设置保留池的大小(由于oracle的内存自动管理机制,一般情况下不需要手动设置)。
SQL> show parameter shared_pool_reserved_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_pool_reserved_size big integer 6081740
保留池的使用条件:
1)必须是在共享池的freelist中找不到足够大的chunk
2)分配的内存容量要大于shared_pool_reserved_min_alloc的设定值(从8i开始该参数变为隐含参数,即_shared_pool_reserved_min_alloc,默认值为4400B),只有大于该设定值的内存分配才被认为是大内存分配。