有一台64位的服务器安装了Oracle 10g 安装时的服务器内存是12个G,分配了80%的内存给Oracle。现在内存加到了64G,怎样多给Oracle分配些内存?请高手赐教,在下菜鸟谢过。

解决方案 »

  1.   

    ORACLE 10g的话看你是否使用ASMM(自动共享内存管理,11g就是AMM了),如果是的话,就设置参数:sga_target、pga_aggregate_target两个参数就O了,至于比例看系统,OLTP系统前者设计大一点,占用整个INSTANCE百分之六七十比较正常,OLAP的时候SGA没有必要要那么大了。不过你要自己设置每一个细节参数的话,就将上述参数设置为0就会自动关闭ASMM(对应进程MMAN,10g和11g没有变化都是这个进程),然后一般设置一下参数:
    1、数据缓冲区:
    db_cache_size  数据缓冲区DEFAULT区域大小,也是默认的大小
    db_keep_cache_size   数据缓冲区keep区域大小,几乎不会被替换掉的内存区
    db_recycle_cache_siez  数据recycle区域大小,几乎用完就回收掉的内存区2、共享池
    shared_pool_size
    内部保存SQL信息、数据字典、控制信息,其实这部分最好不用自己去控制,它自己管理就行。里面有个参数:shared_pool_reserved_size适当的时候也可以配置一下。如果你要用rman相关的东西,要配置一下大池,如果没有JAVA PROD在ORACLE内部,JAVA池几乎无用,做Stream复制,就设置一下stream池。PGA一般设置一个最大值就行,内部它一般自己去调节(PGA内部一般有一段内存和一些后台进程组成),分专用模式还是共享模式的区别(MTS系统中),内部有些细节参数会根据CPU去配置的(如DBWR最多可以20个,最少是1个,可根据CPU的个数设置,但是一个INSTANCE最多20个),另外可以设置内部的SORT_AREA_SIZE、hash_area_size等等用于用户进程查询时产生的内存开销(超过这个值就会到临时表空间去做了),
      

  2.   

    Oracle安装好后会有个WEB控制台的,你打开那个进去就是可视化的中文操作页面了,添加内存,修改pfile等操作都可以那里面执行,至于控制台的访问方式,看下安装日志,里面最后会有记载。
      

  3.   

    前几天有人问过这个, 12G*80%,Oracle也有10G的内存了,应该也够用了。 Oracle 内存的调整是根据DB buffer的命中率来看的,不是说服务器内存大就可以多分一点给Oracle。 这样可能反而降低了Oracle的性能。一般命令中在95%就可以了。 
      

  4.   

     pga得大点,50%左右吧,剩下的用20-30%分配给SGA
      

  5.   

    怎么指定分配pga和sga的大小呢?这个我不会 请高手赐教
      

  6.   

    命令,界面都可以(sys权限登录)
      

  7.   

    单独修改pga的话可以不用关闭再重启数据库,直接
    alter system set pga_aggregate_target=40000M scope=both;
    可以修改;
    如果还需要修改sga那么不重启库无法将sga_target修改到超过上次启动时设置的sga_max_size值,
    如果这个值够大,则同样可以
    alter system set sga_target=10000M scope=both;
    否则就需要关闭修改参数文件再重启动以配置sga到合适的大小。经验值是数据仓库除操作系统分配4G内存外,其他60%分配给pga,40%分配给sga;
    OLTP系统则80%分配给sga,20%分配给pga。
      

  8.   

    -- 如果系统只有数据库,没有其他应用程序的话,可以指定:pga 10g, sga 50g
    -- 剩余 4G 留给系统其他应用服务就够啦....idle> conn / as sysdba;
    已连接。
    sys@SZTYORA> show parameter pgaNAME                                 TYPE                   VALUE
    ------------------------------------ ---------------------- ------------------------------
    pga_aggregate_target                 big integer            10G
    sys@SZTYORA> show parameter sgaNAME                                 TYPE                   VALUE
    ------------------------------------ ---------------------- ------------------------------
    lock_sga                             boolean                FALSE
    pre_page_sga                         boolean                FALSE
    sga_max_size                         big integer            50G
    sga_target                           big integer            50G
      

  9.   

    sys@SZTYORA> alter system set pga_aggregate_target=256M scope=both;系统已更改。已用时间:  00: 00: 00.07sys@SZTYORA> alter system set sga_max_size=1G scope=spfile;系统已更改。已用时间:  00: 00: 00.07
    sys@SZTYORA> alter system set sga_target=1G scope=spfile;系统已更改。已用时间:  00: 00: 00.07
      

  10.   

    pga和sga,内存搞那么大干啥,浪费资源。
      

  11.   


    -- 这种情况是 DBA 的严重失职,我是老板的话,我会直接 pass 这个 DBA 的!