【发布时间】:2020-11-30 23:59:21
【问题描述】:
调用所有 Oracle 负责人,我遇到了一个 sql 查询的奇怪问题......
在本地运行,运行基本 Web 服务的 IIS 服务器通过 VPN 连接到另一个 Oracle 数据库执行查询。
许多其他查询都有效,还有一些查询需要更长的时间才能返回数据。
这是一个 Oracle 9i 数据库。
最初我使用的是 Oracle 11g 客户端,然后又切换回 10g 认为可能是这样。
我认为这可能是 ADO.NET Oracle 驱动程序问题,因此将 sql 提取到一个文件中,然后直接从 sqlplus(控制台)运行它。一样。 01331 大约 1 秒后。
我可以使用旧的 4gl sql 编辑器和 9i 客户端在目标站点上运行相同的查询,并且它可以工作。我在它工作的目标站点的客户端上的 SQL Worksheet 上对其进行了测试。
这个 sql 语句唯一不寻常的是它使用 CONNECT BY 函数执行树遍历。
我不认为这是一个超时问题,因为更复杂(当然更大)的查询最终会返回数据。我做了类似 select count(*) from largetable where longstring not like '%test%' 提供足够的时间来尝试重新创建超时,但它没有。此外,03113 错误在执行语句后很快发生。我在 sqlnet.log 中看不到任何内容。
我真的很感激任何指针?
提前致谢,
山姆
【问题讨论】:
-
运行此“特定”查询时,您需要 DBA 的帮助才能查看服务器端发生的情况。
-
对于不记名的观点,ORA-03113 错误经常表明数据库上的会话由于某种原因失败。如果发生这种情况,应该在数据库服务器上生成一个跟踪文件(它也可以写入警报日志)。您能否询问 DBA 在引发错误时是否将某些内容写入警报日志并询问与该故障相关的任何跟踪文件?
-
我正在获取警报日志以查看它,但相信它是环境问题,因为相同的查询确实在另一个网络上工作 - 尽管使用不同的客户端版本。我会看看他们怎么说,然后告诉你。
-
好的,又开始报错了。这次通过 VPN 连接运行查询。相同的查询在连接的另一端运行良好,其他查询工作正常。这是超时问题吗?使用 11.2 客户端和 ODP.NET。长时间运行的查询是否存在 sqlnet 超时?