zoukankan      html  css  js  c++  java
  • ORA-04030

      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

  • 相关阅读:
    数据库连接 执行 select 语句
    cygwin完全安装步骤方法(组图)
    Android 8位颜色值和6位颜色值的区别
    执行带参数的sql语句
    [Android环境搭建] 申请Android Map API Key
    调用存储过程
    [Android]应用语言切换的三种方法
    JS 的魅力
    Android工程 引用另外一个Android工程
    使用XML Security验证XML文件的数字签名
  • 原文地址:https://www.cnblogs.com/linjian/p/4930736.html
Copyright © 2011-2022 走看看