Неправильная ошибка привилегии? - PullRequest
1 голос
/ 01 июня 2011

Два связанных приложения используют функцию в пакете в нескольких запросах, чтобы вернуть некоторые данные в виде CSV. Выбранный и объединенный столбец является полем CLOB и может содержать HTML, специальные символы и т. Д. В приложениях мало пользователей, и поэтому они не используются интенсивно. Одним из них является приложение Flex, которое использует службы Oracle HTTP, а другим - приложение ASP.NET, которое использует ODP.NET. Приложения - это одно интегрированное приложение с гиперссылками друг на друга.

Вчера я получил несколько уведомлений о странной ошибке:

ORA-01031: недостаточно прав ORA-06512

Номер строки в пакете в деталях ошибки указывает, что ошибка была вызвана функцией, используемой в предложении выбора. Это происходит при вызове любым приложением в 75% случаев.

Верно ли, что в функции произошла ORA-06512, которая затем вызвала ORA-01031 insufficient privilege error? К сожалению, ORA-06512 является очень общей ошибкой и ничего мне не говорит. И почему это вызвало бы недопустимую ошибку привилегии? Учетные записи пользователей Oracle, используемые обоими приложениями, имеют право на выполнение в пакете, который содержит функцию.

Что касается функции ... она использовалась в течение 2 лет без каких-либо проблем. Кроме того, когда я вчера импортировал данные в QA и протестировал их, ошибки не возникало, независимо от того, сколько раз я забивал сервер запросами. Но при производстве ошибка возникает примерно в 75% случаев при одинаковых параметрах.

Администратор БД попытался помочь мне с трассировкой, но мы не смогли найти сообщение об ошибке в файлах трассировки.

Сегодня все возвращается к нормальной работе. Даже если я вбить сервер с запросами ошибка будет упорно не произойдет.

Чем вызвано это очень странное поведение вчера? У кого-нибудь из гуру есть какие-нибудь идеи?

РЕДАКТИРОВАТЬ: Я только что понял одну важную деталь. Столбец в таблице, который функция выбирает и объединяет в CSV, представляет собой CLOB.

1 Ответ

1 голос
/ 01 июня 2011

Если клиентские приложения выполняли «SELECT clob_to_csv (clob_col) FROM ...» и вернули недопустимую привилегию SOMETIMES, то это, вероятно, что-то, что пытается сделать функция, а не оператор SELECT, не имеющий достаточных привилегий для выполнить функцию.

Не совсем ясно, что может сделать, что может потребовать привилегии. Использует ли он файл (UTL_FILE) или сетевое подключение / веб-сервис?

Может быть какие-то нечетные данные (возможно, очень большой сгусток).

...