ORA-07445 [ACCESS_VIOLATION] [UNABLE_TO_READ] []

联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

标题:ORA-07445 [ACCESS_VIOLATION] [UNABLE_TO_READ] []

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

alert中发现ORA-07445错误
ORA-07445: exception encountered: core dump [PC:0x7FFF65D0] [ACCESS_VIOLATION] [ADDR:0xFFFFFFFF] [PC:0x7FFF65D0] [UNABLE_TO_READ] []错误,导致数据库down掉

Mon May 14 14:34:34 2012
Exception [type: ACCESS_VIOLATION, UNABLE_TO_READ] [ADDR:0xFFFFFFFF] [PC:0x7FFF65D0, {empty}]
Errors in file d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_p001_1280.trc:
ORA-07445: exception encountered: core dump [PC:0x7FFF65D0] [ACCESS_VIOLATION] 
[ADDR:0xFFFFFFFF] [PC:0x7FFF65D0] [UNABLE_TO_READ] []
Mon May 14 14:34:35 2012
Trace dumping is performing id=[cdmp_20120514143435]
Mon May 14 14:35:10 2012
Exception [type: ACCESS_VIOLATION, UNABLE_TO_READ] [ADDR:0xFFFFFFFF] [PC:0x7FFF65D0, {empty}]
Errors in file d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_smon_1072.trc  (incident=164712):
ORA-07445: exception encountered: core dump [PC:0x7FFF65D0] [ACCESS_VIOLATION] 
[ADDR:0xFFFFFFFF] [PC:0x7FFF65D0] [UNABLE_TO_READ] []
ORA-12080: Buffer cache miss for IOQ batching
Incident details in: d:\app\administrator\diag\rdbms\orcl\orcl\incident\incdir_164712\orcl_smon_1072_i164712.trc

分析trace文件

Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Windows Server 2003 Version V5.2 Service Pack 2
CPU                 : 8 - type 586, 4 Physical Cores
Process Affinity    : 0x00000000
Memory (Avail/Total): Ph:4892M/8189M, Ph+PgF:5638M/9795M, VA:925M/4095M
Instance name: orcl
Redo thread mounted by this instance: 1
Oracle process number: 12
Windows thread id: 1072, image: ORACLE.EXE (SMON)
--以上信息得出操作系统和数据库版本2003 sp2+oracle11g(11.1.0.6 32位)

Dump continued from file: d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_smon_1072.trc
ORA-07445: exception encountered: core dump [PC:0x7FFF65D0] [ACCESS_VIOLATION] 
[ADDR:0xFFFFFFFF] [PC:0x7FFF65D0] [UNABLE_TO_READ] []
ORA-12080: Buffer cache miss for IOQ batching

========= Dump for incident 164712 (ORA 7445 [PC:0x7FFF65D0]) ========
----- Beginning of Customized Incident Dump(s) -----
Exception [type: ACCESS_VIOLATION, UNABLE_TO_READ] [ADDR:0xFFFFFFFF] [PC:0x7FFF65D0, {empty}]

--这里的ORA-07445 [ACCESS_VIOLATION][UNABLE_TO_READ]根据经验结合这里的32位的环境,
--怀疑是sga使用的内存太多,ORACLE数据库不能读SGA相关内存导致

--在trace中找出相关参数配置.
[0004]: processes=300
[0004]: sessions=335
[0004]: __shared_pool_size=1124073472
[0004]: __large_pool_size=8388608
[0004]: __java_pool_size=16777216
[0004]: __streams_pool_size=251658240
[0004]: streams_pool_size=251658240
[0004]: sga_target=0
[0004]: __sga_target=1887436800
[0004]: memory_target=3145728000
[0004]: memory_max_target=4722786304
[0004]: db_block_size=8192
[0004]: __db_cache_size=478150656
[0004]: __shared_io_pool_size=0
[0004]: compatible=11.1.0.0.0
[0004]: log_buffer=8851456
[0004]: __pga_aggregate_target=780140544
--这里可以看到sga_target分配了内存为1887436800=1.7578125G
--pga_aggregate_target分配了780140544=0.7265625G
--两者内存之和大于2G,超过了32位ORACLE默认限制

查询MOS发现[1341681.1]
该错误原因

This is a resource issue (memory in particular). 32-bit windows systems, 
are limited to 2GB of addressable memory so if you are on this platform 
it's likely you are simply exceeding the capabilities of the 32bit operating system.

解决建议

First recommendation :

If you have not already done so, add the /3GB switch to your boot.ini file and reboot the server. The
boot.ini will be located in the root directory on the drive where windows is installed. The switch, /3GB,
is placed at the end of the line that executes the WinNT loading process. 
This will allow applications such as oracle access to 3Gb or memory instead of 2Gb.

Example:

[operating systems] multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows NT Server Version 4.00" /3GB

 Second recommendation :

You do not want to increase memory target. If anything, this should be decreased.
You are limited to under 2GB of addressable memory on 32bit windows (the limit is actually about 1.85GB). 
This is for both SGA and PGA memory for all instances; you have to reduce the SGA size for the instance. 
The recommendation is to reduce sga_target, memory_target, and memory_max_target.
此条目发表在 ORA-xxxxx, Oracle 分类目录。将固定链接加入收藏夹。

ORA-07445 [ACCESS_VIOLATION] [UNABLE_TO_READ] []》有 1 条评论

  1. 惜分飞 说:

    Database Unexpectedly Hung Due To An ORA-07445 [PC:0x7C810A5B] [ACCESS_VIOLATION] [ADDR:0x6A590420] [PC:0x7C810A5B] [UNABLE_TO_READ] [ID 1341681.1]

    Applies to:
    Oracle Server - Enterprise Edition - Version: 11.1.0.7 and later   [Release: 11.1 and later ]
    z*OBSOLETE: Microsoft Windows Server 2003 R2 (32-bit)
    Symptoms
    
    On  11.1.0.7 on MS Windows 32-bit the following error appears in the alert.
    log preventing users from accessing the database.
    
    ORA-07445: exception encountered: core dump [PC:0x7C810A5B] [ACCESS_VIOLATION] 
    [ADDR:0x6A590420] [PC:0x7C810A5B] [UNABLE_TO_READ] []
    
    Changes
    An increase in workload occurred around the time of the errors.
    
    Cause
    This is a resource issue (memory in particular). 32-bit windows systems, 
    are limited to 2GB of addressable memory so if you are on this platform it's likely 
    you are simply exceeding the capabilities of the 32bit operating system.
    
    
    Note 46001.1:Oracle Database and the Windows NT memory architecture
    Note 225349.1:Implementing Address Windowing Extensions (AWE) or VLM on
    Note 46053.1:Windows NT Memory Architecture Overview
    
    Solution
    First recommendation :
    
    If you have not already done so, add the /3GB switch to your boot.ini file and reboot the server. The
    boot.ini will be located in the root directory on the drive where windows is installed. The switch, /3GB,
    is placed at the end of the line that executes the WinNT loading process. 
    This will allow applications such as oracle access to 3Gb or memory instead of 2Gb.
    
    Example:
    
    [operating systems] multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows NT Server Version 4.00" /3GB
    
     Second recommendation :
    
    You do not want to increase memory target. If anything, this should be decreased.
    You are limited to under 2GB of addressable memory on 32bit windows (the limit is actually about 1.85GB).
    This is for both SGA and PGA memory for all instances; you have to reduce the SGA size for the instance.
    The recommendation is to reduce sga_target, memory_target, and memory_max_target.
    
    Third recommendation:
    
    If appropriate for your application (read Document 46001.1 
    'Oracle Database and the Windows NT memory architecture,Technical Bulletin' to assess) 
    you can also use the orastack utility to reduce the stack size for each connection.