环境
- Oracle 10g
- Windows 2003 服务器
- IIS 6
- .NET 3.5
- Oracle 客户端 10.2.0.1.0
- ODAC 10.2.0.2.21
odp.net 2.102.2.20
在连接字符串中验证 Connection=true;Min Pool Size=0
- 所有 odp.net 连接、命令和参数对象在使用后都会关闭/处置。
问题:
- ORA-03113 返回到 asp.net。
- ORA-07445 ACCESS_VIOLATION 记录在数据库端。 (见下文)
- 它始终是相同的选择查询(在存储过程中)。
- 这不是一个繁重的查询。整个表只有 20K 行。
- 网络应用程序的其余部分不受影响。 oracle连接和查询工作正常。
- w3wp.exe使用的内存和线程正常
我们唯一的解决方案是 DBA 在数据库服务器上重新分配表。 DBA 说这是应用程序问题,我不太确定但是...
我已阅读 SO 上的所有相关帖子,但欢迎提供任何建议!
谢谢,
ORA-07445: 遇到异常: 核心转储 [ACCESS_VIOLATION] [evaopn2+2896] [PC:0x15F3876] [ADDR:0x0] [UNABLE_TO_READ] []
SELECT ILRS.ILRS_ID,
ILRS.EXT_IDENTIFIER RUN_SET_EXTERNAL_IDENTIFIER,
ILRS.DESCRIPTION RUN_SET_DESCRIPTION,
ISST.CODE IIL_RUN_SET_STATUS_CODE,
ILRN.ILRN_ID,
ILRN.EXT_IDENTIFIER RUN_EXTERNAL_IDENTIFIER,
ILRN.RUN_DATE,
IRTY.CODE IIL_RUN_TYPE_CODE,
PDCT.CODE PRODUCT_CODE,
ILRN.STOCHASTIC_SCENARIOS STOCHASTIC_SCENARIOS,
ILRN.PRIORITY PRIORITY,
ILRN.DESCRIPTION RUN_DESCRIPTION,
IRLB.CODE IIL_RUN_LABEL_CODE,
IRST.CODE IIL_RUN_STATUS_CODE,
ILRN.ACTIVE,
UPDATE_USER.FIRST_NAME || ' ' || UPDATE_USER.SURNAME UPDATE_USER,
ILRN.LAST_UPDATED,
IRSV.TRANS_FROM STATUS_LAST_UPDATED
FROM IIL_RUN_SETS ILRS
INNER JOIN IIL_RN_SET_STA_VALS ISSV ON ILRS.ILRS_ID = ISSV.ILRS_ID
AND CURRENT_TIMESTAMP BETWEEN ISSV.TRANS_FROM AND ISSV.TRANS_TO
INNER JOIN IIL_RN_SET_STATUSES ISST ON ISSV.ISST_ID = ISST.ISST_ID
INNER JOIN IIL_RUNS ILRN ON ILRS.ILRS_ID = ILRN.ILRS_ID
LEFT OUTER JOIN IIL_RUN_LABELS IRLB ON ILRN.IRLB_ID = IRLB.IRLB_ID
INNER JOIN IIL_RUN_STA_VALS IRSV ON ILRN.ILRN_ID = IRSV.ILRN_ID
AND CURRENT_TIMESTAMP BETWEEN IRSV.TRANS_FROM AND IRSV.TRANS_TO
INNER JOIN IIL_RUN_STATUSES IRST ON IRSV.IRST_ID = IRST.IRST_ID
INNER JOIN IIL_RUN_TYPES IRTY ON ILRN.IRTY_ID = IRTY.IRTY_ID
INNER JOIN PRODUCTS PDCT ON ILRN.PDCT_ID = PDCT.PDCT_ID
INNER JOIN USERS UPDATE_USER ON ILRN.UPDATE_USER_ID = UPDATE_USER.USER_ID
WHERE ILRS.ILRS_ID = :B1
ORDER BY ILRN.ILRN_ID
最佳答案
我认为您不能将此类问题称为“应用程序问题”。您可能需要让 DBA 相信这是一个数据库问题,以便他可以与 Oracle 支持人员联系,或者至少在 Metalink 等上进行查找。当你开始谈论 IIS、.NET 等时,你可能已经把他吓跑了。看看是否只能在 SQL*Plus 中重现该错误,这应该会引起他的注意。
至于实际解决问题,您可能需要修补、升级或找到某种方法来避免该问题。尝试以某种简单的方式重写您的查询,它可能会起作用。我通常最终会解决这些问题,而不是真正解决它们。
关于Oracle ORA-03113 和 ORA-07445 ACCESS_VIOLATION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3615319/