【问题标题】:Oracle PL/SQL > Stored Procedure Hanging Indefinitely [closed]Oracle PL/SQL > 存储过程无限期挂起 [关闭]
【发布时间】:2014-12-26 11:30:48
【问题描述】:

我在公司的业务部门,对我们的 Oracle 11g 数据库没有完全的 DBA 权限。我拥有构建和运行存储过程所需的特权,而且我拥有一个无限期挂起的特权。

我们正在开发一个新系统,并有多个生命周期。我的代码在较早的生命周期(称为 AD)中可以 100% 正常工作,并在下一个生命周期 (QA) 中无限期挂起。它在第一次主要的 SQL 拉取时停止并且永远不会返回。

当我将存储过程内部的确切 SQL 作为直接 SQL 拉取运行时,它会在 2.6 秒内返回(使用相同的输入参数和相同的 QA 生命周期服务器)。

由于我的权限和我的 DBA 对 PL/SQL 代码没有任何洞察力来帮助调试或排除故障,我无法查看存储过程运行时内部发生的情况。

所以,我的开放式问题是:可能出了什么问题?我知道这很模糊。我检查过的事情:

  • 数据库中有我要从中提取的表中的数据
  • 我检查了我的所有输入参数是否正常,并且它们从过程传递到函数等是否正确
  • 我在程序之外运行了相同的代码,它快速返回并显示正确的数据。
  • 确切的代码在较低的生命周期中工作(实际上只是将其从 AD 复制/粘贴到 QA)。
  • DBA 说服务器环境完全一样(我不确定我是否相信他,但无法直接验证)。

你能提供的任何帮助都是金子。我可以发布代码,但它的长度约为 2-3K,所以我不确定这是否有帮助。给代码工作正常并且按原样复制/粘贴,我认为这不是编码问题,而是系统/环境问题。

任何想法都会有所帮助。

提前致谢!

【问题讨论】:

  • 事实上,这可能是无法回答的,因为它太宽泛了——可能的问题太多了。你怎么知道代码“在第一次主要的 SQL 拉取时停止”?您是否有权查看您的代码正在等待什么(您至少可以查询v$session)吗?您能否请 DBA 帮助您诊断您的代码在等待什么?您确定您在过程之外运行的代码实际上是相同的吗?例如,您是否在过程外部使用文字,并在内部绑定变量?
  • 当我自行终止 proc 时,它停在同一行项目,即第一个主要 SQL 拉取的开始。我没有权限来查看它在等待什么,并且正在尝试从我们的 DBA 那里获取调试权限,以便我可以看到更多(那里有一些跨部门的 BS)。我正在仔细检查 proc 外部的 SQL 和 proc 内部的 SQL,并试图缩小失败的范围。正如您再次所说,我正在检查文字......我之前检查过它们,但也许我错过了一些东西。我知道它非常广泛......即使我可以了解要求我的 DBA 检查什么,这也很有帮助。
  • 您可以在 S.O. 上获得大量信息。关于通过搜索[oracle] v\$session 调试Oracle(您需要转义$ 字符)。祝你好运。
  • @rfcmonarch - 让 DBA 检查是否存在阻塞您的代码正在运行的会话的锁。

标签: oracle stored-procedures plsql oracle11g stored-functions


【解决方案1】:

看起来这个问题与存储过程无关。感谢所有的cmets。 :)

【讨论】:

    猜你喜欢
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    相关资源
    最近更新 更多