2011-06-01 69 views
1

兩個相關的應用程序在一些查詢中使用包中的函數將一些數據作爲CSV返回。被選中和連接的列是一個CLOB字段,可以包含HTML,特殊字符等。應用程序的用戶很少,因此不被大量使用。一個是使用Oracle HTTP服務的Flex應用程序,另一個是使用ODP.NET的ASP.NET應用程序。這些應用程序實際上是一個集成應用程序,它們之間存在超鏈接。特權錯誤無效?

昨天,我接到一個陌生誤差的若干通知:

ORA-01031: insufficient privileges ORA-06512

在包中的錯誤的詳細信息的行號表示該錯誤是由功能引起的選擇子句中被使用。大約75%的時間在任一應用程序中調用時會發生。

我是正確,一個ORA-06512發生在隨後引起了ORA-01031 insufficient privilege error功能?不幸的是,ORA-06512是一個非常普遍的錯誤,並沒有告訴我任何東西。爲什麼它會導致無效的特權錯誤?兩個應用程序使用的Oracle用戶帳戶在包含該功能的包上具有執行權限。

至於功能...它已被用於生產大約2年沒有任何問題。此外,當我昨天將數據導入QA並進行測試時,無論發生多少次服務器請求,都不會出現錯誤。但是在生產中,錯誤將會以75%的時間和完全相同的參數出現。

的DBA試圖幫助我帶着一絲,但我們找不到在跟蹤文件中的錯誤消息。

今天,生產中的一切都恢復了正常。即使我用請求錘擊服務器,錯誤也會頑固地拒絕發生。

昨天是什麼引起了這個非常奇怪的行爲?這裏的任何專家都有什麼想法嗎?

編輯:我只是意識到一個重要的細節。表中被該函數選中並連接成CSV的列是CLOB。

回答

1

如果客戶端應用程序正在運行「SELECT clob_to_csv(clob_col)FROM ...」並且它返回了無效特權SOMETIMES,那麼它可能是該函數試圖執行的操作,而不是選擇語句沒有足夠的特權執行該功能。

上什麼可以做,可能需要一個特權不太清楚。它使用文件(UTL_FILE)還是網絡連接/ Web服務?

可能是某種奇怪的數據(一個非常大的CLOB也許)。

+0

@ [加里邁爾斯]感謝您的回覆。我只是查了一下那個問題的特定記錄。文本的長度是3402個字符。 – Zesty 2011-06-01 06:29:19

+0

@ [Gary Myers]該函數簡單地循環CLOB值並連接它們,如果連接值超過4000字節(大多數值很小),則截斷連接值並將其作爲varchar2返回。它不使用文件或網絡連接或Web服務。 – Zesty 2011-06-06 04:54:39