ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法

        正在使用的oracle 11g数据库,前天在用一段时间后(开始要较长时间才出现,后来较短时间就出现),频繁报ORA-04030错误,具体错误信息是 ORA-04030: 在尝试分配...字节(...)时进程内存不足。

        根据异常信息,可以很容易的判断是由于内存使用过多,分配不足所致的,但是电脑本身内存并不小,由此可以说明oracle在分配内存时,应该是有限制的,当超出这个限制的时,就会出现这个错误。

        在网上查了一下,挺多人遇到这个问题,根据自己的实际问题及解决过程,个人认为下面的说法更准确:

另外值得注意的是max_sga_size和sga_target的设置:

max_sga_size指的是可动态分配的最大值﹐而sga_target是当前已分配的最大sga。
max_sga_size是不可以动态修改的﹐而sga_target是可动态修改﹐直到max_sga_size的值(前提是你设定的max_sga_size>sga_target的情況)

如果在实例启动时﹐max_sga_size < sga_target或max_sga_size没设定﹐则启动后max_sga_size的值会等于sga_target的值,这时如果内存占用超过sga_target,也可能会出现ORA-04030的错误


          具体解决办法可参考,使用pl/sql或sqlplus连接上数据库(出现这个错误后,数据已经无法正常访问,需要请停止数据库服务,然后再重新启动),执行如下命令:
1. 设置rman从SGA取内存
alter system set dbwr_io_slaves=2 scope=spfile;
alter system set backup_tape_io_slaves=true scope=spfile;

2. 调整SGA大小
alter system set sga_target=1200m;
//上面语句如果执行出错,暂不理会,等下面语句全部执行完后,重新启动oracle service,再次执行这条语句。
alter system set sga_max_size=1200m scope=spfile;

3. 设置使用内存最大大小
alter system set large_pool_size=80m;

4. 重启oracle service。

5. 查看sga,pga,pool的大小。
show parameter pool

        可参考原文:http://blog.csdn.net/zhangout/article/details/6454794
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值