出现如下错误:
*** 2012-08-06 06:20:06.245
*** SERVICE NAME:(SYS$BACKGROUND) 2012-08-06 06:20:06.245
*** SESSION ID:(269.1) 2012-08-06 06:20:06.245
error 4030 detected in background process
ORA-04030: 在尝试分配  字节 (,) 时进程内存不足使用:
SQL>alter system flush shared_pool;
系统已更改。不起作用。OS:Windows Server Enterprise 2008 Service Pack 2
处理器:Intel(R)Xeon(R)CPU E7-4807 @1.87GHz(2处理器)
内存(RAM): 32.0 GB
系统类型:32位操作系统数据库为oracle 10.2.0是否能给出大概解决方法,目前数据库是生产库。
*****************************************分割线**************************************
SQL>show sga;
Total System Global Area 616562688 bytes
Fixed Size               1332372   bytes
Variable Size            213576556 bytes
Database Buffers         398458880 bytes
Redo Buffers             3194880   bytes SQL>show parameter process;
NAME                      TYPE          VALUE   
----------------------    --------      -----
aq_tm_processes           integer       0
db_writer_processes       integer       3
gcs_server_processes      integer       0
job_queue_processes       integer       10
log_archive_max_processes integer       2
processes                 integer       500
SQL>show parameter sga;
NAME                            TYPE        VALUE
------------------------------- -------     ------
lock_sga                        boolean     FALSE
pre_page_sga                    boolean     FALSE
sga_max_size                    big integer 588M
sga_target                      big integer 584M
SQL>show parameter pga;
NAME                            TYPE        VALUE
------------------------------- ------      ------
pga_aggregate_target            big integer 194M

解决方案 »

  1.   

    ORA-04030出现的基本都是过多的使用memory造成的Oracle process使用的内存数量是有一定限制的:A. 对于32 BIT系统,有SGA 1.7G限制
    B. 某些OS系统本身也有一些内存参数限制--运行 ulimit 看看C. OS系统本身物理内存+Swap的限制
    我们应该检查DB使用的
    SGA + PGA 是否超过 上面的限制SGA 包括 db_cache,shared_pool,large_pool,java_pool
    session的PGA包括
    sort_area_size/Hash_area_size/*_area_size 或者 pga_aggregate_target
    还有执行的CODE以及一些data也会占用空间。然后再根据情况降低里面的某些值了,比如 db_cache, sort_area_size 等如果是OS系统的某Limited造成的,可以考虑放开限制
      

  2.   

    做下AWR 看看什么SQL占用了大量内存杀掉占用内存大的session,最好是确定问题原因再进行操作。没有办法的话,重新启动是一种方法,生产库谨慎操作!!
      

  3.   

    我去,32G内存为啥装32位系统上啊,打补丁了没,要不,有内存使用限制啊。
    还有,这么大的内存,仅分配给oracle  600M的sga,还有500个进程,不死才怪。
    先加大oracle sga的内存,然后找时间,换成64位的操作系统。
      

  4.   

    刚开始就是个悲剧,IBM引导盘都没有