现在的位置: 首页 > 综合 > 正文

oracle的内存结构之–查看内存信息+保留池和循环池(摘自文平书)

2013年09月11日 ⁄ 综合 ⁄ 共 1729字 ⁄ 字号 评论关闭

共享池、大池、Java池、高速缓存的内存通过设置分配单元作为基本单元分配。在SGA小于1GB的情况下,分配单元尺寸为
4MB,当SGA大于1GB时,单元尺寸为16MB。该单元大小能通过视图 V$SGA_DYNAMIC_COMPONENTS查询。这个单元决定了在SGA中所有
动态分配区域的组成状态。例如下面查询了系统中SGA当前分配的尺寸和单元大小:
    SQL>select COMPONENT,CURRENT_SIZE,GRANULE_SIZE from V$SGA_DYNAMIC_COMPONENTS;

SQL> run
  1* select COMPONENT,CURRENT_SIZE,GRANULE_SIZE from V$SGA_DYNAMIC_COMPONENTS

COMPONENT            CURRENT_SIZE GRANULE_SIZE
-------------------- ------------ ------------
shared pool              67108864      4194304
large pool                4194304      4194304
java pool                 4194304      4194304
streams pool                    0      4194304
DEFAULT buffer cache    205520896      4194304
KEEP buffer cache               0      4194304
RECYCLE buffer cache            0      4194304
DEFAULT 2K buffer ca            0      4194304
che

DEFAULT 4K buffer ca            0      4194304

COMPONENT            CURRENT_SIZE GRANULE_SIZE
-------------------- ------------ ------------
che

DEFAULT 8K buffer ca            0      4194304
che

DEFAULT 16K buffer c            0      4194304
ache

DEFAULT 32K buffer c            0      4194304
ache

COMPONENT            CURRENT_SIZE GRANULE_SIZE
-------------------- ------------ ------------
ASM Buffer Cache                0      4194304

13 rows selected.

SQL>

|||||||||||||||||||||||||||

保留池和循环池

   显然,最常用的数据应该长期保留在内存结构中。保留池的作用就是长期存放某些“热”的数据块,也就是说,你应该想办法找出你的系统中那些“热”的表,并将其绑定在保留池中。
   系统参数DB_KEEP_CACHE_SIZE定义了保留池的空间大小,其数据块尺寸为本系统标准的数据块尺寸。应该注意的是,保留池并不是
默认池的一个子集。因此配置时要注意其大小不应超出操作系统可以提供的容量。
   当遇到一个工程上的难题:业务数据库系统中有成百上千张表,还有成千上万个索引,究竟哪些表或索引应该放入保留池呢?

遴选规则如下:
该表中数据并不是很大
该表在SQL操作中被频繁调用
该表往往是数据库实体关系图中的中间表或参照表

和保留池的意义敲好相反,一些鲜有SQL操作的大表,其数据块并无必要长期保留在数据缓存中。
这时,我们可以通过设置循环池,将这些对象放入循环池。

循环池通过初始化参数DB_RECYBLE_CACHE_SIZE指定。同样地,循环池不是默认池的一个子集。下面的命令设置DB_KEEP_CACHE_SIZE初始化
参数,将保留池尺寸定位120MB:
SQL>alter system set db_keep_cache_size=120M scope=both;

 

|||||

抱歉!评论已关闭.