aix上的ora-04030错误

来源:互联网 发布:一页知秋 百川鱼海 编辑:程序博客网 时间:2024/04/27 03:31

这段时间数据库总是报ora-04030的错误,象执行select  count(*)  from a001 left join b001 on a001.id=b001.id这样的sql语句也出错了。这段时间就是在优化数据库的时候多建了一些索引,而且在a001表上面有8个索引,是不是因为索引建多了,导致执行这条语句的时候需要更多的内存。但是项目组这边很变态,我们根本就没有dba权限,很多事情都不能做。早上更改了os的最大stack size到unlimited,晕死了,不知道管理数据库的那边的人到底在干什么。下面是关于pga和ora-04030的关系。操作系统对每个进程的堆数据段的增长是有限制的 .大部分的情况是操作系统的内存参数进行限制(kernel parameter: MAXDSIZ), 有一些情况它的缺省值是可以以每个进程为基准进行修改的 .对于所有的进程,操作系统对整个虚拟内存也有一个系统全局性的限制 ,这个限制跟系统的SWAP SPACE 相关.一旦超过了这两个限制,Oracle 的进程在执行中会遇到ORA-4030错误.

  ORA-4030这个错误的产生一般不是因为每个进程的资源限制而是因为 SWAP SPACE空间不足造成.为了诊断这个 问题可以使用操作系统的一些选项来查看SWAP SPACE的使用情况. 另外,在一些操作系统中,Oracle 包含了一个工具叫 maxmem,它可以用来查看每个进程可以被分配的堆数据段的最大SIZE 以及哪一个限制是第一次超过的.

  如果这个问题的出现是因为 SWAP SPACE空间不足,而且换页的动作非常频繁而且较多 ,则需要减少系统一级的虚拟内存的使用,这个可以通过减少进程数也可以通过减少每个进程的内存限制 .如果换页动作不频繁而且比较少,则需要调大 SWAP SPACE SIZE.

是不是应该联系一下管数据库的叫他们修改一下MAXDSIZ这个参数。

原创粉丝点击