Мы хотим перенести сборку автоматизированных статистических данных из внешнего сценария в планировщик заданий Oracle 9i. Это очень простая работа, и код в основном выглядит следующим образом:Привилегии для задания статистики Oracle 9i
DBMS_JOB.SUBMIT(
JOB => <output variable>,
WHAT => 'DBMS_STATS.GATHER_DATABASE_STATS(
cascade => TRUE, options => ''GATHER AUTO'');',
NEXT_DATE => <start date>,
INTERVAL => 'SYSDATE + 7');
Работа получает успешно создан и работает, но терпит неудачу с ошибкой:
ORA-12012: error on auto execute of job 25
ORA-20000: Insufficient privileges to analyze an object in Database
ORA-06512: at "SYS.DBMS_STATS", line 11015
...
Часть я не получаю что пользователь, которому я отправил задание, имеет право разрешать собирать данные статистики базы данных - если я запускаю команду вручную, она работает. Мне было любопытно, если бы Oracle игнорировал любые привилегии на основе ролей, которые у пользователя были похожими на создание процедур, поэтому я прямо предоставил пользователю ANALYZE ANY, но все равно не кубик.
Есть ли другие разрешения, которые я должен был бы предоставить пользователю, чтобы сделать эту работу? Я бы предпочел не делать отдельную работу для каждой схемы (которая работает, если я отправлю задание у владельца схемы).
Какого пользователя это? Вы создали специально для работы? – APC
Это пользователь, которого мы создали, хотя и не специально для работы. Пользователь должен выполнять различные действия во всех наших схемах, поэтому у него есть настраиваемая роль, которая дает ему системные привилегии делать практически все. Вот почему я думал, что Oracle игнорирует привилегии на основе ролей, поскольку в противном случае у работы не должно быть проблем с недостаточным доступом. – Yoten