【问题标题】:Invalid privilege error?无效的权限错误?
【发布时间】:2011-06-01 05:37:21
【问题描述】:

两个相关的应用程序在几个查询中使用一个包中的函数来以 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。

【问题讨论】:

    标签: oracle function clob ora-01031 ora-06512


    【解决方案1】:

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

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

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

    【讨论】:

    • @[Gary Myers] 感谢您的回复。我刚刚检查了一个给出问题的特定记录。文本长度为 3402 个字符。
    • @[Gary Myers] 该函数只是在连接 CLOB 值时循环它们,如果连接的值超过 4000 字节(大多数值都很小),则截断连接的值并将其返回为 varchar2。它不使用文件或网络连接或网络服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 2018-04-26
    • 2020-02-01
    相关资源
    最近更新 更多