Oracle ORA-03113 和 ORA-07445 ACCESS_VIOLATION

标签 oracle odp.net

环境

  • 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 连接、命令和参数对象在使用后都会关闭/处置。

问题:

  1. ORA-03113 返回到 asp.net。
  2. ORA-07445 ACCESS_VIOLATION 记录在数据库端。 (见下文)
  3. 它始终是相同的选择查询(在存储过程中)。
  4. 这不是一个繁重的查询。整个表只有 20K 行。
  5. 网络应用程序的其余部分不受影响。 oracle连接和查询工作正常。
  6. 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/

相关文章:

sql - Oracle:SELECT * FROM tablea a,tableb b在哪里a.fielda(+)= b.fieldb-(+)是什么?

oracle - 大型数据集上的 ODP.Net 存储过程性能问题

.net - Oracle.Dataaccess 位于 GAC 中。我可以控制我使用的版本吗?

oracle - "Test connection succeeded"但 "An unexpected error occurred in the ODP.NET, Managed Driver"

linq - NHib 3 配置和映射返回空结果?

.net - ODP.NET程序编译

oracle - PL/SQL中的移位运算符

Python cx_oracle 多线程不适用于每个线程的游标

java - 如何在 Hibernate 和 Oracle 中使用命名查询将字符串作为数字进行搜索?

multithreading - 尝试插入 Oracle DB 时,Java 线程永远保持锁定状态