在oracle 10G或者11G版本中,如何合理设置shared pool大小,对oracle数据库的性能影响很大。

  Shared Pool的大小设置规则如下:

  1.查到shared pool设置的合理值,语句如下:

  select 'Shared Pool' component,

       shared_pool_size_for_estimate estd_sp_size,

       estd_lc_time_saved_factor parse_time_factor,

       case

         when current_parse_time_elapsed_s + adjustment_s < 0 THEN

          0

         ELSE

          current_parse_time_elapsed_s + adjustment_s

       END response_time

  FROM (select shared_pool_size_for_estimate,

               shared_pool_size_factor,

               estd_lc_time_saved_factor,

               a.estd_lc_time_saved,

               e.VALUE / 100current_parse_time_elapsed_s,

               c.estd_lc_time_saved - a.estd_lc_time_saved adjustment_s

          from v$shared_pool_advice a,

               (select * from v$sysstat where NAME = 'parse time elapsed') e,

               (select estd_lc_time_saved

                  from v$shared_pool_advice

                 where shared_pool_size_factor = 1) c);

  2.设置上个SQL语句中查到的PARSE_TIME_FACTOR首次等于1的记录所在行的ESTD_SP_SIZE的值为shared pool。

  3.设置语句如下:

  alter system set shared_pool_size=XXX scope=spfile;或者alter system set shared_pool_size=XXX scope=both;