Неправильная ошибка привилегии?

Два связанных приложения используют функцию в пакете в нескольких запросах, чтобы вернуть некоторые данные в виде 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 ответ

Решение

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

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

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

Другие вопросы по тегам