概述

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

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

网上说法很多,下面整理了下一般处理的一个思路和方法。


1、是否仍然有足够的可用内存?

主要使用操作系统特定的工具(top、topas、vmstat、swapon -s)来检查内存使用情况。如果有足够的内存可用,那么就需要检查操作系统是否存在强制限制。如果内存已被耗尽,那么就需要找出内存被用到了哪些地方。

2、是否设置了操作系统限制?

如果仍有足够的内存可用,那么有可能是进程需要使用的内存量是不被允许的。使用命令“ulimit -a”查看操作系统限制。尤其对于“data seg size”选项,应该设置为 unlimited。在 RAC 或 GRID 环境中,由于数据库监听是通过 CRS 进行启动,所以监听继承了 root 用户的 ulimit 限制。如果在 root 的 ulimit限制中 data(kbytes)的限制为 1310kb,那么表示每个通过监听连接的进程能分配的内存资源不能超过1310kb。

3、是否设置了 Oracle 限制?

查询参数 PGA_AGGREGATE_TARGET 的大小,该参数限制一个实例可以分配的 PGA 总量。以下查询用于查找分配给所有会话的 PGA 区的内存总量:

SELECT SUM(VALUE) / 1024 / 1024 PGA_SIZE_MBFROM V$SESSTAT S, V$STATNAME NWHERE N.STATISTIC# = S.STATISTIC#AND NAME = 'session pga memory';

4、哪个进程需要的内存过多?

一些操作会需要大量的进程内存,例如,大型的 PL/SQL 表或大量的排序操作。

可以使用以下查询来查找所有 Oracle 进程的 PGA 和 UGA 大小:

SELECT SID, NAME, VALUEFROM V$STATNAME N, V$SESSTAT SWHERE N.STATISTIC# = S.STATISTIC#AND NAME LIKE 'session%memory%'ORDER BY 3 ASC;

通常,从操作系统的角度来确认进程内存使用情况,是一个好办法。毕竟,使用过多内存的不一定是 Oracle Server 进程。

5、如何收集有关进程实际正在执行的任务的信息?

可以做 heapdump,然后分析 dump 结果:

SQL> select PID from v$process p, v$session s where p.addr=s.paddr and sid=;SQL> oradebug setorapid SQL> oradebug unlimitSQL> oradebug dump errorstack 3SQL> oradebug dump heapdump 536870917SQL> oradebug tracefile_name (shows the path and filename information)SQL> oradebug close_trace

或者使用 event,如下所示:

设置系统级事件来产生 ORA-04030 错误时的 trace 文件,设置 event 如下:

alter system set events '4030 trace name errorstack level 3;name HEAPDUMP level 536870917';

得到报错的 dump 文件后,关闭生成 event:

alter system set events '4030 trace name errorstack off';alter system set events '4030 trace name HEAPDUMP off';

实际上引起ORA-04030的原因,是不能分配更多的内存,解决办法有两种,其一是加大内存,其二是对oracle的内存控制参数进行调整,使其内存分配更适合于当前的应用程序。

后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下!!

仍然报错_详解oracle经典报错:ORA-04030排错思路和解决方法相关推荐

  1. python无法使用1号gpu_详解tensorflow2.x版本无法调用gpu的一种解决方法

    最近学校给了一个服务器账号用来训练神经网络使用,服务器本身配置是十路titan V,然后在上面装了tensorflow2.2,对应的python版本是3.6.2,装好之后用tf.test.is_gpu ...

  2. 地面指示标志_详解消防应急照明和疏散指示系统的施工及安装方法消防施工

    详解消防应急照明和疏散指示系统的施工及安装方法消防施工 消防应急照明与疏散指示系统在生活中随处可见,相信您并不陌生,它是为人员疏散.消防作业提供照明和疏散指示的系统,由各类消防应急灯具及相关装置组成. ...

  3. java sleep唤醒_详解Java中的线程让步yield()与线程休眠sleep()方法

    Java中的线程让步会让线程让出优先级,而休眠则会让线程进入阻塞状态等待被唤醒,这里我们对比线程等待的wait()方法,来详解Java中的线程让步yield()与线程休眠sleep()方法 线程让步: ...

  4. python3多行输入字符串_详解Python3 定义一个跨越多行的字符串的多种方法

    方法一:使用三引号 >>> str1 = '''Le vent se lève, il faut tenter de vivre. 起风了,唯有努力生存. (纵有疾风起,人生不言弃. ...

  5. python不是内部或外部命令的解决方法_详解python常见报错--NO MODULE NAMED _SQLITE3解决方法...

    概述 在安装一些基于python的程序时,经常遇到"ImportError: No module named _sqlite3"问题. 下面记录下解决方法. 解决办法 1.编译sq ...

  6. mysql创建数据库没有默认值报错_详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题...

    现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for 'time' 原因 ...

  7. 创建数据库_详解Oracle数据库物化视图及创建物化视图索引

    概述 物化视图是一种特殊的物理表,"物化"(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图S ...

  8. 11g oracle xe启动_详解Oracle等待事件的分类、发现及优化

    一.等待事件由来 大家可能有些奇怪,为什么说等待事件,先谈到了指标体系.其实,正是因为指标体系的发展,才导致等待事件的引入.总结一下,Oracle的指标体系,大致经历了下面三个阶段: 以命中率为主要参 ...

  9. oracle命令未正确结束_详解Oracle数据库终止正在进行expdp导出数据的正确操作

    概述 今天在做expdp导出时因没预估好数据量,所以需终止正在进行expdp导出数据的任务.那么怎么正确停止expdp导出任务呢?下面介绍一下我的操作过程. 1.不能用ctrl+c来终止导出(演示) ...

最新文章

  1. Leetcode: Maximum Depth of Binary Tree
  2. C# Http方式下载文件到本地类改进版
  3. linux下如何实现mysql数据库每天自动备份定时备份
  4. docker omv 防火墙_OpenMediaVault(OMV)配置Docker
  5. 2048——Java控制台版本
  6. python玩转大数据视频[非原创视频]
  7. python的循环控制结构是什么_7.Python控制和循环结构
  8. 敏捷开发绩效管理之二:用中医理论管理团队及其绩效(绩效考核,团队管理,自组织团队)...
  9. 智慧乡村建设不可照搬城市模式
  10. Python 字典(dict)操作(update)、翻转字典
  11. daily news新闻阅读客户端应用源码(兼容iPhone和iPad)
  12. AIDE手机编程初级教程(零基础向)导航
  13. 最新诺顿病毒库报暴风影音7.0有毒![原]
  14. 工业机器人(10)-Matlab Robot Toolbox机械臂工作空间
  15. Opencv图像预处理
  16. 在Android中Unity3D透明背景的实现
  17. pragma HLS interface 端口综合
  18. IBM“移动优先”官网正式上线:苹果静候佳音
  19. 2021-08-06随记(vertical-align, 顶线、底线、中线、基线,vue原理理解)
  20. M1 MacBook的Parellel Desktop(PD)使用问题记录

热门文章

  1. 好玩的东西——一个代码片段
  2. SciTE for Ruby的配置
  3. 【转载】机器学习领域的大家
  4. Servlet的Cookie值保存与获取
  5. xhr XMLHttpRequest 简介
  6. goland 报错 Main file has non-main package or doesn’t contain main function
  7. linux c 判断路径是 目录还是文件
  8. telnet 退出命令
  9. linux c printf 不能输出
  10. Windows内核驱动中操作文件