Oracle ORA-03113和ORA-07445访问冲突
环境Oracle ORA-03113和ORA-07445访问冲突,oracle,odp.net,Oracle,Odp.net,环境 甲骨文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 验证连接=true;连接字符串中的最小池大小=0 所有odp.net连接、命令和参数对象在使用后关闭/释放 问题: ORA-03113返回到asp.net 数据库端记录了ORA-07445访问冲突。(见下文) 它始终是相同的选择查询(在存储过程中) 这不是一个沉重的问题。整张桌子只有20K行 web应
- 甲骨文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
- 验证连接=true;连接字符串中的最小池大小=0
- 所有odp.net连接、命令和参数对象在使用后关闭/释放
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中重现错误,这应该引起他的注意
至于实际解决问题,您可能需要修补、升级或找到某种方法来避免问题。尝试用一些简单的方法重写查询,它可能会工作。我通常会解决这些问题,而不是实际解决它们。我们能够使用SQL Developer重现同样的问题,因此发现了问题 …ILRN.ILRN\U ID=IRSV.ILRN\U ID上的内部联接IIL\U运行\U STA\U VAL IRSV 以及IRSV.TRANS_FROM和IRSV.TRANS_TO之间的当前_时间戳 这条线就是罪魁祸首。在两个日期列上有一个索引,TRANS_FROM和TRANS_TO。 我们把这个扔了。成功了 经过进一步的调查,我们发现,由于连接中的行数很少,因此没有使用索引,但随着连接中的行数增加,查询计划将发生变化,并且会使用有问题的索引。这就解释了为什么这是一个间歇性问题 但显然,一个次优的查询计划不应该导致Oracle因ORA-07445而死亡。。。
将与Oracle支持人员一起登录。类似的错误可能是一个错误,Oracle支持人员可以查找代码并告诉您修复的位置。不言而喻,无论如何,您都应该跟上补丁的进度。检查查询计划是否有任何丑陋或意外的地方是值得的。可以尝试将当前的_时间戳谓词移出WHERE子句,而不是内部联接。最后,询问DBA是否可以告诉您它在解析(解释查询)、执行或获取(获取行)方面是否失败。如果没有其他问题,这将迫使他做一些调查。7445错误通常是甲骨文错误的征兆。Oracle支持部门刚刚解决了一个非常类似的问题。它实际上是在最近的关键补丁更新之后开始发生的。