两个相关的应用程序在多个查询中使用包中的函数将某些数据作为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。答案 0 :(得分:1)
如果客户端应用程序正在运行“SELECT clob_to_csv(clob_col)FROM ...”并且它返回了无效的权限SOMETIMES,那么它可能是函数正在尝试执行的操作,而不是没有足够权限的select语句执行功能。
可能需要特权的不太清楚。它是使用文件(UTL_FILE)还是网络连接/ Web服务?
可能是某种奇怪的数据(也许是一个非常大的clob)。