您在这里:首页 > 学员专区 > 技术文章
Oracle视频
Oracle
CUUG课程

设置shared pool

 

对于设置shared pool的大小来说,没有一个通用的、普遍适用的值,不同的系统负载需要不同大小的shared pool来管理。通常我们在设置shared pool时,应该遵循“不要太大、也不要太小”的原则,设置一个初始的值,然后让系统正常运行一段时间,在这段时间里,对shared pool的使用情况进行观察监控,最后根据系统的负载得出一个在当前负载下比较合理的值。注意,这里只是说明是在当前负载下,如果随着系统的不断升级,导致负载发生一个比较大的变化,这时又需要对shared pool重新监控并做出相应的调整了。

 

一般来说,设置1GB以上的shared pool不会给性能带来明显的提高,相反,这将给Oracle管理shared pool以及监控shared pool的过程中会带来较多的麻烦。我们可以在系统上线时,设置shared pool为SGA的10%,但是不要超过1GB,让系统正常运行一段时间,我们可以借助Oracle 9i以后所引入的顾问(advisory)来帮助我们判断shared pool的设置是否合理。

 

只要将初始化参数statistics_level设置为typical(默认值)或all,就能启动对shared pool的建议功能,如果设置为basic,则关闭建议功能。使用如下的SQL语句显示Oracle所建议的shared pool的大小。

 

SQL> SELECT shared_pool_size_for_estimate “SP”, estd_lc_size “EL”,

estd_lc_memory_objects “ELM”,

2  estd_lc_time_saved “ELT”, estd_lc_time_saved_factor as “ELTS”,

3  estd_lc_memory_object_hits as “ELMO”

4  FROM v$shared_pool_advice;

SP          EL                ELM              ELT            ELTS           ELMO

---------  -------        ----------     ---------      --------     ------------

128        135               12223             8566          0.9993         2980874

160        166               15809             8567          0.9994         2981291

192        197               19167             8570          0.9998         2982322

224        228               22719             8572               1         2982859

256        259               27594             8572               1         2982906

288        292               31436             8572               1         2982917

320        323               36157             8572               1         2982920

352        354               40371             8572               1         2982929

384        385               45019             8572               1         2982937

416        389               46099             8572               1         2982937

448        389               46099             8572               1         2982937

480        389               46099             8572               1         2982937

512        389               46099             8572               1         2982937

 

第一列表示Oracle所估计的shared pool的尺寸值,其他列表示在该估计的shared pool大小下所表现出来的指标值,具体含义可以参见Oracle的联机帮助。我们主要关注estd_lc_time_saved_factor列的值,当该列值为1时,表示再增加shared pool的大小对性能的提高没有意义。对于上例来说,当shared pool为224MB时,达到最佳大小。对于设置比224MB更大的shared pool来说,就是浪费空间,没有更多的好处了。

 

我们还可以借助v$shared_pool_advice来观察在不同的shared pool尺寸情况下的响应时间(单位是秒)各是多少,如下所示。

 

SQL> SELECT 'Shared Pool' component,

2         shared_pool_size_for_estimate estd_sp_size,

3         estd_lc_time_saved_factor parse_time_factor,

4         CASE

5           WHEN current_parse_time_elapsed_s + adjustment_s < 0 THEN

6            0

7           ELSE

8            current_parse_time_elapsed_s + adjustment_s

9         END response_time

10    FROM (SELECT shared_pool_size_for_estimate,

11                 shared_pool_size_factor,

12                 estd_lc_time_saved_factor,

13                 a.estd_lc_time_saved,

14                 e.VALUE / 100 current_parse_time_elapsed_s,

15                 c.estd_lc_time_saved - a.estd_lc_time_saved adjustment_s

16            FROM v$shared_pool_advice a,

17             (SELECT * FROM v$sysstat WHERE NAME = 'parse time elapsed') e,

18                 (SELECT estd_lc_time_saved

19                    FROM v$shared_pool_advice

20                   WHERE shared_pool_size_factor = 1) c);

COMPONENT   ESTD_SP_SIZE PARSE_TIME_FACTOR RESPONSE_TIME

----------- ------------ ----------------- -------------

Shared Pool          128            0.9993        252.82

Shared Pool          160            0.9994        251.82

Shared Pool          192            0.9998        248.82

Shared Pool          224                  1        246.82

Shared Pool          256                  1        246.82

Shared Pool          288                  1        246.82

Shared Pool          320                  1        246.82

Shared Pool          352                  1        246.82

Shared Pool          384                  1        246.82

Shared Pool          416                  1        246.82

Shared Pool          448                  1        246.82

Shared Pool          480                  1        246.82

Shared Pool          512                  1        246.82

 

如果是Oracle 9i之前的版本,没有顾问的话,则可以在系统运行过程中,观察shared pool的统计信息以及等待事件来判断shared pool是否合理。

 

如果设置了共享服务器(Shared Server)的连接模式,则注意要配置large pool(通过设置large_pool参数)。如果不设置large pool,session的PGA会有一部分在shared pool里进行分配,从而加重shared pool的负担。

 

源文档 <http://book.51cto.com/art/200806/75613.htm>

相关文章 [上一篇] oracle创建表空间_oracle中创建表空间
010-88589926(88587026)
CUUG热门培训课程
Oracle DBA就业培训
CUUG名师
网络课程
技术沙龙
最新动态

总机:(010)-88589926,88589826,88587026 QQ讨论群:243729577 182441349 邮箱:cuug_bj@cuug.com
通信地址:北京市海淀区紫竹院路98号北京化工大学科技园609室(CUUG)邮政编码:100089 
中国UNIX用户协会 Copyright 2010  ALL Rights Reserved 北京神脑资讯技术有限公司
京ICP备11008061号  京公网安备110108006275号