调用所有Oracle头,我有一个奇怪的问题,一个SQL查询...
在本地运行,运行基本Web服务的IIS服务器通过VPN连接执行查询到另一个Oracle数据库。
许多其他查询都有效,还有一些查询需要更长时间才能返回数据。
这是一个Oracle 9i数据库。
最初我使用的是Oracle 11g客户端,然后切换回10g,认为它可能就是这样。
我认为它可能是ADO.NET Oracle驱动程序问题,所以将sql解压缩到一个文件,直接从sqlplus(控制台)运行它。一样。大约1秒钟后的01331。
我可以使用9i客户端使用旧的4gl sql编辑器在目标站点上运行相同的查询,它可以工作。我在客户端的SQL工作表上测试了它在它工作的目标站点。
这个sql语句唯一不寻常的是它使用CONNECT BY函数执行树步行。
我不认为这是一个超时问题,因为更复杂(当然更大)的查询最终会返回数据。我做了类似于bigtable的select count(*),其中longstring不喜欢'%test%'来提供足够的时间来尝试重新创建超时,但事实并非如此。此外,03113错误在执行语句后很快发生。我在sqlnet.log中看不到任何东西。
我真的很感激任何指针?
提前致谢,
萨姆
答案 0 :(得分:0)
这通常表示查询优化引擎中存在错误。我和9i以及最近的11g遇到了一些问题。
以下是您的选择
1) ReWrite the query (check for joins to views, etc) and try to restructure it
2) Work with Oracle support
我可以告诉你我在9i Oracle发现的问题拒绝承认/修复。 :)
答案 1 :(得分:0)
我发现问题是在select查询中包含一个long类型的列。
有人能想出这个原因吗?
尝试了两个客户操作系统(Vista / Windows 7)上的两个Oracle客户端(10/11)和同样的问题。 不同的本地防火墙,没有Oracle警报日志,没有sqlnet日志。不知道。
还有什么建议吗?或者是Oracle支持时间吗?
我设法解决了这个问题。我最终将.net项目移植到.net 4并使用Oracle.DataAccess提供程序。
原始查询包含使用connect by函数的嵌套treewalk,该函数在服务器上运行,但不在客户端。我一直得到ORA03113。
我在使用2.x版本的ODP.NET时遇到了进一步的问题 - ORA-12560:TNS:协议适配器错误。为了解决这个问题,我安装了最新的oracle客户端11.2和最新的ODP.NET客户端11.2。授予对oracle主页(和子文件夹/项目)的权限 - 重新启动。
希望这有助于某人。
答案 2 :(得分:0)
在其中一个数据库(v 12.2)上,当我从一个我有权限的过程中调用一个我无权的过程时,出现此错误。也许会帮助某人