1

两个相关的应用程序在几个查询中使用一个包中的函数来以 CSV 格式返回一些数据。被选择和连接的列是一个 CLOB 字段,可以包含 HTML、特殊字符等。应用程序的用户很少,因此使用不频繁。一种是使用 Oracle HTTP 服务的 Flex 应用程序,另一种是使用 ODP.NET 的 ASP.NET 应用程序。这些应用程序实际上是一个集成的应用程序,彼此之间有超链接。

昨天,我收到了几条关于一个奇怪错误的通知:

ORA-01031: 权限不足 ORA-06512

错误详细信息中的包中的行号表明该错误是由在 select 子句中使用的函数引起的。它会在大约 75% 的时间被任一应用程序调用时发生。

我是否正确,ORA-06512然后导致函数中发生了ORA-01031 insufficient privilege error?不幸的是,ORA-06512这是一个非常普遍的错误,并没有告诉我任何事情。为什么会导致无效的权限错误?两个应用程序使用的 Oracle 用户帐户对包含该函数的包具有执行权限。

关于功能......它已经在生产中使用了大约 2 年,没有任何问题。另外,昨天我把数据导入QA并测试时,无论我用请求敲击服务器多少次,都不会出现错误。但在生产中,错误会在大约 75% 的时间发生在完全相同的参数下。

DBA 试图帮助我进行跟踪,但我们在跟踪文件中找不到错误消息。

今天,一切都在生产中恢复正常。即使我用请求锤击服务器,错误也会顽固地拒绝发生。

是什么导致了昨天这种非常奇怪的行为?这里的大师有什么想法吗?

编辑:我刚刚意识到一个重要的细节。该函数正在选择并连接到 CSV 的表中的列是 CLOB。

4

1 回答 1

1

如果客户端应用程序正在运行“SELECT clob_to_csv(clob_col) FROM ...”并且它有时返回了一个无效的权限,那么这可能是函数试图做的事情,而不是选择语句没有足够的权限来执行函数.

不太清楚它可能会做什么可能需要特权。它是否使用文件(UTL_FILE)或网络连接/网络服务?

可能是某种奇怪的数据(可能是一个非常大的 clob)。

于 2011-06-01T06:22:20.900 回答