今天在做试验(ORACLE 9.2.0.1.0)的时候发现一个奇怪的问题,当我用alter system set large_pool_size=409600 scope=both 修改后,发现v$spparameter中的large_pool_size=409600,而v$parameter中large_pool_size=4194304,我认为这两个地方的值应该是一样的吧,不知道这个4194304是怎么得出来得。请大家帮我看看到底是什么原因啊!
    ps:db_block_size=8192

解决方案 »

  1.   

    idle>select * from v$version;BANNER
    ----------------------------------------------------------------------------
    Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    PL/SQL Release 9.2.0.1.0 - Production
    CORE    9.2.0.1.0       Production
    TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
    NLSRTL Version 9.2.0.1.0 - Productionidle>select sid, name, value from v$spparameter where name like '%pool_size%';SID        NAME       VALUE
    ---------- ---------- ----------
    *          shared_poo 50331648
               l_size*          large_pool 8388608
               _size*          java_pool_ 33554432
               size*          global_con
               text_pool_
               size*          olap_page_
               pool_size
    idle>select name, value from v$parameter where name like '%large_pool_size%';NAME       VALUE
    ---------- ----------
    large_pool 8388608
    _size
    idle>alter system set large_pool_size=409600 scope=both
      2  ;系统已更改。idle>select name, value from v$parameter where name like '%large_pool_size%';NAME       VALUE
    ---------- ----------
    large_pool 4194304
    _size
    idle>select sid, name, value from v$spparameter where name like '%pool_size%';SID        NAME       VALUE
    ---------- ---------- ----------
    *          shared_poo 50331648
               l_size*          large_pool 4194304
               _size*          java_pool_ 33554432
               size*          global_con
               text_pool_
               size*          olap_page_
               pool_size都是4194304(4MB)啊,没有出现楼主的409600(400K),large_pool_size存在最小值(600K)的,楼主修改的那个值太小了,数据库会根据granule的大小动态进行调整的,而SGA<=128的系统中,默认granule的大小就是4MB,那么动态往上调整到一个granule的大小,就是4194304(4MB)