`

ora-04030 进程内存不足解决方案

阅读更多
转至:http://www.51testing.com/?uid-280547-action-viewspace-itemid-216224
方案一:
ORA-04030:在尝试分配...字节 (hash-join subh,kllcqas:kllsltba) 时进程内存不足。 ORA-04030:out of process memory when trying to allocate string bytes ORA-04030的出现原因及解决方法: 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造成的,大家可以考虑放开限制man ulimit来观察如何放开限制……
另外值得注意的是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的错误。



方案二:
生产库迁移到2节点的AIX oracle 10g RAC 上后,应用系统查询出现ORA-04030错误。
排除oracle内部参数的问题sga,pga等 。修改aix 的资源限制后,错误依旧。
/home/oracle$ulimit -a
time(seconds)        unlimited
file(blocks)         unlimited
data(kbytes)         unlimited
stack(kbytes)        unlimited
memory(kbytes)       unlimited
coredump(blocks)     unlimited
nofiles(descriptors) unlimited
经过两天的排查终于找到错误的原因:修改操作系统参数后,没有重启系统。重启AIX后问题解决。
网上一篇关于AIX资源限制的文章帮助我解决了这个问题。
原文链接地址如下:http://www.cublog.cn/u/7040/showart_124370.html
AIX 用户使用的系统资源限制包括两个概念 --- 硬限制(hard limits) 和软限制(soft limits)。
hard limits自AIX 4.1版本开始引入。hard limits 应由AIX系统管理员设置,只有security组的成员可以将此值增大,
用户本身可以减小此限定值,但是其更改将随着该用户从系统退出而失效。使用下列命令可以查看hard limits的限定值:
ulimit -Ha
soft limits 是AIX核心使用的限制进程对系统资源的使用的上限值。此值可由任何人更改,但不能超出
hard limits值。这里要注意的是只有security组的成员可使更改永久生效,普通用户的更改在其退出系统
后将失效。使用以下命令可以查看soft limits的设置:
下面为系统的soft limits的默认值:
3.2
4.1-4.3
===============
=================
fsize = 2097151
fsize = 2097151
core = 2048
core = 2048
cpu = 3600
cpu = -1
data = 131072
data = 262144
rss = 65536
rss = 65536
stack = 8192
stack = 65536
nofiles = 2000*
nofiles=2000 *
* 该值(nofiles)只能在AIX 4.3.1 或以后的版本中更改。
上述定义作为默认值存放在文件 /etc/security/limits 中,在新用户被加进系统后生效。直接更改此文件中的定义值
需要将系统重新启动以便使更改生效。将相应值该为"-1" 表示不受 soft limits的限制(unlimited)。
下面我们将就各字段逐一进行介绍:
fsize 用户创建的文件大小限制。此定义值(512字节为单位)为该用户可以生成的最大文件的大小。
core 生成的core文件大小的限制(512字节为单位)。
cpu 用户进程可用cpu的限定值(以秒为单位)。普通用户只能将此值减小,root可以将此值增大。这里要注意的
是进程使用CPU的时间取决于AIX Kernel(核心程序)进程调度算法,该值在此仅做参考。
data 进程数据段大小的限定值(以字节为单位)。
stack 进程堆栈段大小的限定值(以字节为单位)。
rss 进程常驻内存段的限定值(以字节为单位)。AIX核心并不参考此限定。
nofiles 进程中打开文件的最大数量。此限定在AIX 4.3.1之前的版本中固定为2000。在AIX 4.3.1及其之后的版本中
可将此值增大至32767。
下面介绍三种修改上述限定值的方法:
1. 编辑文件/etc/security/limits,直接修改各定义值。此更改在系统重新启动后生效。
2. 使用命令ulimit修改默认值。例如:
ulimit -f value
ulimit -c
ulimit -t
ulimit -d
ulimit -s
ulimit -m
ulimit -n
将修改fsize, core, cpu,data, stack, rss和nofiles的soft limit值。
3. 使用命令chuser修改某用户的限定值。例如:
chuser fsize=
chuser core=
chuser cpu=
chuser data=
chuser limit=
chuser rss=
chuser nofiles=
将用户“username”的soft limits改为值“value”。
chuser hard_fsize=
chuser hard_core=
chuser hard_cpu=
chuser hard_data=
chuser hard_limit=
chuser hard_rss=
chuser hard_nofiles=
将用户“username”的hard limits改为值“value”。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lwei_998/archive/2010/01/29/5269529.aspx

方案三:
查看>10M的session:

SELECT NAME, VALUE / 1024 / 1024, s.SID, s.serial#, spid
FROM v$session s, v$sesstat st, v$statname sn, v$process p
WHERE st.SID = s.SID
AND st.statistic# = sn.statistic#
AND sn.NAME LIKE 'session pga memory'
AND p.addr = s.paddr
AND VALUE > 10 * 1024 * 1024;

问题:

Thu Nov 06 09:56:41 2008
Errors in file e:\oracle\admin\nisczy\udump\nisczy_ora_2484.trc:
ORA-04030: 在尝试分配 8512 字节 (pga heap,ksm stack) 时进程内存不足
ORA-04030: 在尝试分配 8512 字节 (pga heap,ksm stack) 时进程内存不足
ORA-04030: 在尝试分配 8204 字节 (koh-kghu call ,pl/sql vc2) 时进程内存不足

Thu Nov 06 09:56:43 2008
Errors in file e:\oracle\admin\nisczy\udump\nisczy_ora_2484.trc:
ORA-00603: ORACLE server session terminated by fatal error
ORA-04030: out of process memory when trying to allocate 8512 bytes (pga heap,ksm stack)
ORA-04030: out of process memory when trying to allocate 8512 bytes (pga heap,ksm stack)
ORA-04030: out of process memory when trying to allocate 8204 bytes (koh-kghu call ,pl/sql vc2)


解决:

SQL> conn /as sysdba
已连接。
SQL> alter session set sort_area_size = 104857600;

会话已更改。

SQL> show parameter sort;

sort_area_size                       integer
104857600

SQL> conn gistar/res#pwd
已连接。



分享到:
评论

相关推荐

    《转载》ora-00020超出最大进程数

    3. 解决方案实例:提供具体的SQL语句或操作步骤来解决问题。 4. 预防措施:介绍如何通过优化配置、应用设计或监控策略来防止类似问题的再次出现。 5. 源码分析:如果标签提到“源码”,可能涉及Oracle数据库的源代码...

    Oracle_ORA-12518故障_处理

    - **解决方案**:检查客户端和服务器端的代码,确保在发送数据前检查连接的有效性。 ##### 错误: 11: Resource temporarily unavailable - **原因**:表示资源暂时不可用,可能是由于系统资源限制或连接池满等原因...

    解决ORA-01033 ORACLE 正在初始化或关闭

    针对ORA-01033错误,可以尝试以下几种解决方案: 1. **检查并修改注册表设置**: - 打开注册表编辑器(`regedit.exe`),定位到`HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0`。 - 检查`ORACLE_SID`键值是否与...

    Ora-00600 [Qerltcuseriterget_1], [1], [1], [] and Ora-1502 (Doc ID 1432485.1)

    这意味着这些错误和解决方案对上述版本均有效。 #### 五、总结 ORA-00600和ORA-1502错误都是Oracle数据库中常见的内部错误类型。通过收集详细的错误信息和上下文,结合上述分析的方法,可以有效地诊断和解决问题。...

    Oracle 报错ORA-00845 MEMORY_TARGET not supported on this system

    如果问题仍未解决,可以查阅Oracle官方文档或社区论坛,搜索相关的错误代码和解决方案,看看其他用户是如何处理类似问题的。 8. 联系Oracle支持。作为最后的手段,如果自己无法解决问题,可以联系Oracle官方技术支持...

    ora-12519错误解决方案

    ### ora-12519错误解决方案 #### 一、问题概述 在Oracle数据库的日常运维与使用过程中,用户可能会遇到“ORA-12519”这一错误提示。此错误通常表明客户端尝试连接到Oracle服务时出现问题。具体来说,“ORA-12519, ...

    oracle数据库-错误编码大全

    解决方案是确保会话未被任何进程占用,或者在正确的状态下执行迁移。 - ORA-00025: 无法分配。内存分配失败,可能是由于系统资源不足或请求的内存大小超过了可用的限制。 - ORA-00050: 获取入队时操作系统出错。这...

    oracle常见错误及解决方法

    解决方案是关闭不必要的会话,或者增加相应的参数(如SESSIONS_PER_USER, PROCESSES)配置。 4. ORA-00021, ORA-00022, ORA-00023, ORA-00024, ORA-00025, ORA-00026, ORA-00027, ORA-00028, ORA-00029: 会话和进程...

    ORACLE ORA错误大全

    解决方案可能是提交或回滚当前事务,或者增加回滚段的大小。 3. **ORA-00023: internal error in record cache** - 内部错误发生在记录缓存中,这通常意味着数据库内部出现了问题。需要联系技术支持进一步诊断。 ...

    ORACLE错误一览表.

    ##### ORA-00023: 会话引用进程私用内存;无法分离会话 - **描述**:尝试分离会话但会话仍然引用某些进程的私有内存时触发。 - **解决方法**: - 确保会话没有引用任何私有内存。 - 重启会话。 ##### ORA-00024: ...

    oracle错误代码大全

    - **解决方案**: 检查操作系统级别的问题,例如权限、空间不足等。 #### ORA-00024: Object is in invalid state - **解释**: 对象处于无效状态。 - **解决方案**: 确认对象状态,必要时重建或修复该对象。 #### ...

    Oracle错误代码大全

    "Oracle错误代码大全" Oracle错误代码大全是一个庞大的知识库,囊括了各种Oracle错误代码的解释说明。下面是 Oracle 错误代码大全中...每个错误代码都附带了详细的解释和解决方案,帮助开发者和 DBA 快速地解决问题。

    Oracle错误一览表

    Oracle错误一览表是数据库管理员和开发人员在遇到Oracle数据库运行时遇到问题的重要参考资料。这些错误代码提供了关于系统异常、资源...对于每个错误,通常可以查阅Oracle官方文档或在线技术论坛获取详细的解决方案。

    ORACLE错误代码

    以下是一些常见的Oracle错误代码及其含义和可能的解决方案: 1. ORA-00001: 这个错误表示违反了唯一约束条件,即尝试插入或更新的数据违反了表中的唯一索引或唯一键约束。解决方法包括检查插入的数据是否已经存在于...

    oracle中常用错误代码总结

    以下是一些常见的Oracle错误代码及其含义和可能的解决方案。 1. ORA-00001: 这个错误表示违反了唯一约束条件,即尝试插入或更新的数据违反了唯一索引或唯一键的规则。解决方案包括检查数据的唯一性或调整约束条件。...

    ORACLE错误码大全_中文

    以上只是一部分常见的Oracle错误码解释,实际上Oracle数据库包含数百种错误码,每个错误码都有其特定的含义和解决方案。了解这些错误码可以帮助DBA和开发人员快速诊断和修复问题,保证数据库的正常运行。在实际工作...

    Oracle错误代码

    ### Oracle错误代码详解 在Oracle数据库管理与维护过程中,遇到各种错误代码是在所难免的。...然而,每个错误的具体原因和解决方案可能因具体环境和配置而异,因此在实际操作中还需要结合具体的场景进行分析和处理。

    Oracle数据库全部错误一览表.docx

    此错误通常发生在尝试在已有会话中启动跟踪时,解决方案可能包括关闭现有会话或正确配置跟踪设置。 3. **ORA-00018**、**ORA-00019**、**ORA-00020**:这三个错误涉及会话数量限制。当超过系统允许的最大会话数时,...

    Oracle错误大全

    系统错误则涉及数据库内部操作,如数据文件损坏、内存不足、进程异常等。 2. ORA-错误代码: Oracle错误通常以“ORA-”开头,后面跟着四位数字,例如“ORA-00001”、“ORA-01403”等。每个错误代码都有特定的含义...

Global site tag (gtag.js) - Google Analytics