调整SHARED_POOL_SIZE参数

SHARED_POOL_SIZE指定了共享池的大小,在10g R2中,该参数默认为0,表示由Oracle自动分配。

共享池缓存了共享SQL语句、数据字典缓存、库缓存,使Oracle能快速解析该对象。

不同的SQL语句,即使包括大小写不同、多余的空格数,也被视作不同的SQL语句,而无法使用缓存。除非参数CURSOR_SHARING被指定为SIMILAR或FORCE。

查询数据字典命中率(V$ROWCACHE),应该维持在95%以上。

点击(此处)折叠或打开

  1. select ((1 - (Sum(GetMisses) / (Sum(Gets) + Sum(GetMisses)))) * 100) "Hit Rate"
  2. from V$RowCache
  3. where Gets + GetMisses <> 0;

    Hit Rate
    ----------
    96.1514775

查询详细的数据字典缓存(行缓存),这个查询会对丢失率大于10%的条目前加上星号*。

点击(此处)折叠或打开

  1. column parameter format a20 heading 'Data Dictionary Area'
  2. column gets format 999,999,999 heading 'Total|Requests'
  3. column getmisses format 999,999,999 heading 'Misses'
  4. column modifications format 999,999 heading 'Mods'
  5. column flushes format 999,999 heading 'Flushes'
  6. column getmiss_ratio format 9.99 heading 'Miss|Ratio'
  7. set pagesize 50
  8. ttitle 'Shared Pool Row Cache Usage'
  9. select parameter, gets, getmisses, modifications, flushes,
  10. (getmisses / decode(gets,0,1,gets)) getmiss_ratio,
  11. (case when (getmisses / decode(gets,0,1,gets)) > .1 then '*' else ' ' end) " "
  12. from v$rowcache
  13. where Gets + GetMisses <> 0;

    

                            Total                                 Miss
Data Dictionary Area     Requests       Misses     Mods  Flushes Ratio
-------------------- ------------ ------------ -------- -------- ----- --
dc_segments                 8,577          936       43       43   .11 *
dc_tablespaces             32,241            7        0        0   .00
dc_tablespace_quotas           11            1        0        0   .09
dc_files                       35            5        0        0   .14 *
dc_users                   79,066           26        4        4   .00
dc_rollback_segments        4,361           21       21       20   .00
dc_objects                 14,419        1,820       93       36   .13 *
dc_global_oids             35,617           85        0        0   .00
dc_object_ids              64,736        1,088       56        0   .02
dc_sequences                   32            8       32       32   .25 *
dc_usernames                3,963           18        0        0   .00
dc_histogram_defs          32,068        6,850    1,608    1,606   .21 *
dc_profiles                   712            2        0        0   .00
outstanding_alerts            791          126      225      225   .16 *
dc_awr_control                436            1       15       15   .00
dc_object_grants              433          116        0        0   .27 *
dc_histogram_data           3,961          250        0        0   .06
dc_histogram_data           5,092           59        0        0   .01
dc_users                    1,938           20        0        0   .01

库缓存中包括了对SQL语句和执行计划的缓存信息。

库缓存的重载率,表示缓存对象之前在库缓存中,但过时后被移除,然后也装入库缓存。库缓存的重载率应不高于1%,否则可以考虑增大SHARED_POOL_SIZE。

点击(此处)折叠或打开

  1. select Sum(Pins) "Hits",
  2. Sum(Reloads) "Misses",
  3. ((Sum(Reloads) / Sum(Pins)) * 100"Reload %"
  4. from V$LibraryCache;

      Hits     Misses   Reload %
---------- ---------- ----------
    370575       3636 .981177899

查看库缓存的命中率,应不低于99%

点击(此处)折叠或打开

  1. select Sum(Pins) "Hits",
  2. Sum(Reloads) "Misses",
  3. Sum(Pins) / (Sum(Pins) + Sum(Reloads)) "Hit Ratio"
  4. from V$LibraryCache;

      Hits     Misses  Hit Ratio
---------- ---------- ----------
    382526       4142 .989287968

查看库缓存详细信息,关注pinhitratio,pinhits与pins的比率,该数应接近1。

点击(此处)折叠或打开

  1. set numwidth 3
  2. set space 2
  3. set newpage 0
  4. set pagesize 58
  5. set linesize 80
  6. set tab off
  7. set echo off
  8. ttitle 'Shared Pool Library Cache Usage'
  9. column namespace format a20 heading 'Entity'
  10. column pins format 999,999,999 heading 'Executions'
  11. column pinhits format 999,999,999 heading 'Hits'
  12. column pinhitratio format 9.99 heading 'Hit|Ratio'
  13. column reloads format 999,999 heading 'Reloads'
  14. column reloadratio format .9999 heading 'Reload|Ratio'
  15. spool cache_lib.lis
  16. select namespace, pins, pinhits, pinhitratio, reloads,
  17. reloads/decode(pins,0,1,pins) reloadratio
  18. from v$librarycache;



                                                    Hit            Reload
Entity                  Executions          Hits  Ratio   Reloads   Ratio
--------------------  ------------  ------------  -----  --------  ------
SQL AREA                   228,021       221,726    .97     1,563   .0069
TABLE/PROCEDURE            102,214        93,735    .92     2,414   .0236
BODY                        48,768        48,596   1.00        74   .0015
TRIGGER                      3,036         2,986    .98        22   .0072
INDEX                        1,044           779    .75        57   .0546
CLUSTER                        597           576    .96        13   .0218
OBJECT                           0             0   1.00         0   .0000
PIPE                             0             0   1.00         0   .0000
JAVA SOURCE                      0             0   1.00         0   .0000
JAVA RESOURCE                    0             0   1.00         0   .0000
JAVA DATA                        0             0   1.00         0   .0000

总结:当字典缓存命中率<95%,或库缓存重载率>1%,可以考虑增大SHARED_POOL_SIZE。




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22621861/viewspace-1272043/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22621861/viewspace-1272043/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Oracle数据库中,可以通过调整以下几个内存配置参数来优化内存使用: 1. shared_pool_size:表示共享池的大小,共享池是用于缓存共享SQL和PL/SQL语句的内存区域。默认值为64MB,可以根据实际需求增加该值。可以通过以下SQL语句查看和修改该参数: ```sql -- 查看当前的shared_pool_size参数 SELECT * FROM v$sga; -- 修改shared_pool_size参数 ALTER SYSTEM SET shared_pool_size=XXXM SCOPE=SPFILE; ``` 2. db_cache_size:表示数据库缓存的大小,用于缓存数据块。默认值为32MB,可以根据实际需求增加该值。可以通过以下SQL语句查看和修改该参数: ```sql -- 查看当前的db_cache_size参数 SELECT * FROM v$sga; -- 修改db_cache_size参数 ALTER SYSTEM SET db_cache_size=XXXM SCOPE=SPFILE; ``` 3. pga_aggregate_target:表示PGA(Program Global Area)的大小,用于缓存会话级别的数据和变量。默认值为0,表示自动管理PGA大小。可以根据实际需求设置该值。可以通过以下SQL语句查看和修改该参数: ```sql -- 查看当前的pga_aggregate_target参数 SELECT * FROM v$pgastat; -- 修改pga_aggregate_target参数 ALTER SYSTEM SET pga_aggregate_target=XXXM SCOPE=SPFILE; ``` 4. sga_target:表示SGA(System Global Area)的大小,用于缓存数据库实例级别的数据和变量。默认值为0,表示自动管理SGA大小。可以根据实际需求设置该值。可以通过以下SQL语句查看和修改该参数: ```sql -- 查看当前的sga_target参数 SELECT * FROM v$sga; -- 修改sga_target参数 ALTER SYSTEM SET sga_target=XXXM SCOPE=SPFILE; ``` 需要注意的是,修改这些参数可能会影响数据库的性能和稳定性,因此在修改之前需要仔细评估和测试。另外,修改参数后需要重启数据库实例才能生效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值