Windows环境下的ORA-7445(ACCESS_VIOLATION)和ORA-4030错误

客户Windows环境下32位的Oracle 10.2.0.3,在告警日志中发现多次ORA-7445和ORA-4030错误信息。
详细信息为:

Mon Aug 01 15:06:06 2011
Errors IN file e:\oradata\acscnprd\trc\usr\acscnprd_ora_3356.trc:
ORA-07445: exception encountered: core dump [ACCESS_VIOLATION] [unable_to_trans_pc] [PC:0x605033BB] [ADDR:0x4] [UNABLE_TO_WRITE] []
Mon Aug 01 15:06:06 2011
Errors IN file e:\oradata\acscnprd\trc\usr\acscnprd_ora_3356.trc:
ORA-04030: OUT OF process memory WHEN trying TO allocate 753120 bytes (pga heap,kco buffer)
ORA-07445: exception encountered: core dump [ACCESS_VIOLATION] [unable_to_trans_pc] [PC:0x605033BB] [ADDR:0x4] [UNABLE_TO_WRITE] []

仅从数据库的配置和错误信息分析,导致问题的原因多半是内存不足所致。这时一个32位的数据库,因此SGA分配一般而言不能超过1.7G,而当前数据库还没有配置到极限值,SGA总共配置了1.2G左右,而PGA只配置了400M左右,而数据库的连接数则超过了200。根据这些不难判断,Oracle的内存配置偏低。
而查询metalink,发现与当前问题最为接近的是ID 763705.1,问题影响的版本同样是10.2.0.3,同样包括ORA-4030和ORA-7445 [ACCESS_VIOLATION] [unable_to_trans_pc] [PC:XXXXXXX] [ADDR:XXX] [UNABLE_TO_WRITE]错误,唯一的区别在于,metalink上的这个问题发生在64位Windows环境中Oracle,而当前的Windows环境是32位。不过这篇文章中描述问题出现的原因同样和内存不足有关,那么很可能这个错误在32位环境中同样会出现。
接近这个问题的方法就是根据主机可用内存和32位系统的限制,来提高SGA和PGA的内存分配,保证Oracle日常操作有足够的内存可以使用。

This entry was posted in BUG and tagged , , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *