Welcome 微信登录

首页 / 数据库 / MySQL / 共享池中保留池的调整(shared_pool_reserved_size)

1.何谓保留池        简言之,保留一部分内存空间以备不时之需。通常情况下,Oracle会将大的内存请求分割成小的内存块来满足需求。而对于大的内    存且为连续的内存空间请求,如果在共享池中未找到,则会动用共享池中的保留池。当然,共享池在内存压力的情况下,也会使用到    保留池中的部分。保留池部分满足较大的内存需求更高效。缺省情况下,Oracle会配置较小的保留池,这部分可以用作PL/SQL或触发器    编译使用或用于装载JAVA对象的临时空间。这些分配出去的内存一旦释放后将返回给保留池。        任意大于"_shared_pool_reserved_min_alloc = 4400" 字节的连续内存分配请求,如果shared_pool中分配不能解决,且当前    shared_pool中没有可用的块能够aged out,则保留池将被使用。        2.大值对象在共享池中分配空间的顺序    a.从共享池中非保留池寻找可用空间    b.如果共享池中非保留池没有所需的可用空间,则从保留池进行分配    c.如果共享池非保留池与保留池都没有所需的空间,则一些对象需要按LRU原则aged out,然后再按a,b步骤来进行分配。     共享池的中的保留池大小不能超过共享池的50%,一般情况下建议为共享池的5%到10%。            SQL> select * from v$version;                BANNER        ----------------------------------------------------------------        Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi        PL/SQL Release 10.2.0.4.0 - Production        CORE    10.2.0.4.0      Production        TNS for Solaris: Version 10.2.0.4.0 - Production        NLSRTL Version 10.2.0.4.0 - Production                    SQL> show parameter reserved                NAME                                 TYPE                             VALUE        ------------------------------------ -------------------------------- ------------------------------        _shared_pool_reserved_pct            integer                          10        shared_pool_reserved_size            big integer                      512M  --修改该参数来设置保留池的大小  3.保留池的视图    v$shared_pool_reserved     SELECT * from v$shared_pool_reserved;     SQL> desc v$shared_pool_reserved;     Name                                      Null?    Type     ------------------------------ -------- ----------------------------     --以下字段只有当参数SHARED_POOL_RESERVED_SIZE置了才有效     FREE_SPACE                   NUMBER  -->保留的空间数     AVG_FREE_SIZE                NUMBER  -->保留的空平均     FREE_COUNT                   NUMBER  -->保留的空闲内块数     MAX_FREE_SIZE                NUMBER  -->最大的保留间数     USED_SPACE                   NUMBER  -->保留使用空间数     AVG_USED_SIZE                NUMBER  -->保留使用空平均     USED_COUNT                   NUMBER  -->保留使用块数     MAX_USED_SIZE                NUMBER  -->最大保留使用空间数     REQUESTS                     NUMBER  -->求在保留区查找空闲内的次     REQUEST_MISSES               NUMBER  -->无法找保留闲内块请求,需要LRU列表中象的次     LAST_MISS_SIZE               NUMBER  -->求的存大小,求是最后一次需要LRU列表来满足的     MAX_MISS_SIZE                NUMBER  -->所有需要LRU列表来满足的求中的存最大大小          --以下字段无论参数SHARED_POOL_RESERVED_SIZE是否置了都有效     REQUEST_FAILURES             NUMBER  -->存能足的求次4031错误求)     LAST_FAILURE_SIZE            NUMBER  -->存能足的求所需的存大小(4031错误求)     ABORTED_REQUEST_THRESHOLD    NUMBER  -->象的情下,4031错误的最小求大小     ABORTED_REQUESTS             NUMBER  -->象的情下,4031错误求次     LAST_ABORTED_SIZE            NUMBER  -->象的情下,最后一次4031错误求大小     --可以根据后面4字段值来决定如何置保留的大小以避免4031错误            SQL> select requests,request_misses,request_failures,last_failure_size,aborted_request_threshold ab_re_th,          2  aborted_requests,last_aborted_size lst_ab_sz          3  from v$shared_pool_reserved;                  REQUESTS REQUEST_MISSES REQUEST_FAILURES LAST_FAILURE_SIZE   AB_RE_TH ABORTED_REQUESTS  LST_AB_SZ        ---------- -------------- ---------------- ----------------- ---------- ---------------- ----------                 1              0              542              4112 2147483647                0          0     4.保留池调整策略    a.根据视图v$shared_pool_reserved 来查看保留池是否够用        SQL> select free_space,free_count,used_space,avg_used_size from v$shared_pool_reserved;            FREE_SPACE FREE_COUNT USED_SPACE AVG_USED_SIZE        ---------- ---------- ---------- -------------         505926544        347   14618016    5826.23196             b.使用包dbms_shared_pool 的过程aborted_request_threshold 来调整阙值    c.修改参数shared_pool_reserved_size            alter system set shared_pool_reserved_size=integer [K | M | G]             如果shared_pool_reserved_size参数值设置的太小,则视图v$shared_pool_reserved中request_failures的值将大于零并且        会持续增加,即导致请求内存失败的次数会增加,解决的办法是增加保留池的大小,相应的增大共享池的大小。             当共享池shared_pool_size太小时,视图v$shared_pool_reserved同样也可以表明参数shared_pool_size值设置的过小。即        视图v$shared_pool_reserved中request_failures次数大于零或持续增加。                    如果设定了保留池,shared_pool_size不能够增加的情况下,??可以减少shared_pool_reserved_size的大小。            如果未设定保留池,而request_failures次数大于零或持续增加,则增加共享池的大小。     d.保留池过大        下列两种情况存在,保留池可能过大            request_misses列值始终为零,且没有持续增加            free_memory列值大于等于保留池的50%     e.下面的表用于判断如何调整保留池的空间     IF Request_failures    Conjuction  Condition                                      Action    -------------------    ----------  ----------------                               --------------     >0 and increasing        AND      Request_misses>0                               Increase shared_pool_reserved_size     >0 and increasing        AND      Free_memory>=50% of shared_pool_reserved_size  Increase shared_pool_size     =0                       OR       Free_memory>=50% of shared_pool_reserved_size  Decrease shared_pool_reserved_size  5.影响保留池的几个重要参数    col ksppinm format a54    col ksppstvl format a54    SELECT KSPPINM, KSPPSTVL    FROM X$KSPPI PI, X$KSPPCV CV    WHERE CV.INDX = PI.INDX    AND PI.KSPPINM LIKE "\_%" ESCAPE ""                                              -- "--    AND PI.KSPPINM LIKE "%&Para%";                                         KSPPINM                                                KSPPSTVL    ------------------------------------------------------ ------------------------------------------------------    _shared_pool_reserved_pct                              10    _shared_pool_reserved_min_alloc                        4400        SQL> show parameter reserved        NAME                                 TYPE                             VALUE    ------------------------------------ -------------------------------- ------------------------------    _shared_pool_reserved_pct            integer                          10    shared_pool_reserved_size            big integer                      512M        ORA-00054 故障处理一例Oracle 字符串转数组的函数相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数