客户处遇到ora4030错误,查了sga与pga等内存设置,感觉没问题,然后从系统角度来分析。
AIX 用户使用的系统资源限制包括两个概念 --- 硬限制(hard limits) 软限制(soft limits)
hard limits自AIX 4.1版本开始引入。hard limits 应由AIX系统管理员设置,只有security组的成员可以将此值增大,
用户本身可以减小此限定值,但是其更改将随着该用户从系统退出而失效。使用下列命令可以查看hard limits的限定值:
ulimit -Ha
soft limits 是AIX核心使用的限制进程对系统资源的使用的上限值。此值可由任何人更改,但不能超出
hard limits值。这里要注意的是只有security组的成员可使更改永久生效,普通用户的更改在其退出系统后将失效。
下面是文件/etc/security/limits文件里面有关软限制和硬限制的部分。

*
* Sizes are in multiples of 512 byte blocks, CPU time is in seconds
*
* fsize      - soft file size in blocks
* core       - soft core file size in blocks
* cpu        - soft per process CPU time limit in seconds
* data       - soft data segment size in blocks
* stack      - soft stack segment size in blocks
* rss        - soft real memory usage in blocks
* nofiles    - soft file descriptor limit
* fsize_hard - hard file size in blocks
* core_hard  - hard core file size in blocks
* cpu_hard   - hard per process CPU time limit in seconds
* data_hard  - hard data segment size in blocks
* stack_hard - hard stack segment size in blocks
* rss_hard   - hard real memory usage in blocks
* nofiles_hard - hard file descriptor limit
* The following table contains the default hard values if the
* hard values are not explicitly defined:
*
*   Attribute        Value
*   ==========    ============
*   fsize_hard    set to fsize
*   cpu_hard      set to cpu
*   core_hard         -1
*   data_hard         -1
*   stack_hard      8388608
*   rss_hard          -1
*   nofiles_hard      -1
default:
        fsize = -1
        core = 2097151
        cpu = -1
        data = -1
        rss = 65535------------------------------------被限制,所以报4030,改为-1
        stack = -1
        nofiles = 2000

说明:
1.ulimit -Ha 输出硬限制的值
time(seconds)        unlimited
file(blocks)         unlimited
data(kbytes)         unlimited
stack(kbytes)        4194304
memory(kbytes)       unlimited
coredump(blocks)     unlimited
nofiles(descriptors) unlimited
因为在/etc/security/limits没有明确写明对硬限制的设置,所以,取默认的硬限制的值,也就是上面注释文字里面写的那些,stack还是有限制的。
2.
ulimit -a 输出软限制的值
time(seconds)        unlimited
file(blocks)         unlimited
data(kbytes)         unlimited
stack(kbytes)        4194304
memory(kbytes)       unlimited
coredump(blocks)     2097151
nofiles(descriptors) 2000
软限制取/etc/security/limits里面default里面的值,虽然里面写的stack没限制,但是由于硬限制已经提前限制了41944304,所以,stack的最大也只能是41944304。客户这边是default rss值有限制,这样oracle用户不可及时分配足够空间,所以导致4030,改为-1
则不受软限制限制。
 
下面我们将就各字段逐一进行介绍:

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。