Nous souhaitons déplacer notre collecte de statistiques automatisée d'un script externe vers le planificateur de travaux Oracle 9i. C'est un travail très simple, et le code ressemble fondamentalement ceci:Privilèges pour un travail de statistiques 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');
Le travail est créé avec succès et fonctionne, mais échoue avec l'erreur:
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
...
La partie que je ne comprends pas est que l'utilisateur auquel j'ai soumis le travail a les bonnes permissions pour rassembler ces statistiques de base de données - si je lance la commande manuellement cela fonctionne. J'étais curieux de savoir si Oracle ignorait tout privilège basé sur les rôles que l'utilisateur avait comme il le fait avec la création de procédures, donc j'ai accordé directement à l'utilisateur ANALYZE ANY, mais toujours pas de dés.
Y a-t-il d'autres autorisations que je devrais accorder directement à l'utilisateur pour que cela fonctionne? Je préfère ne pas avoir à faire un travail séparé pour chaque schéma (ce qui fonctionne si je soumets le travail sous le propriétaire du schéma).
Qu'est-ce que l'utilisateur est-ce? Un que vous avez créé spécialement pour le travail? – APC
Il s'agit d'un utilisateur que nous avons créé, mais pas spécifiquement pour le travail. L'utilisateur est appelé à effectuer différents travaux dans tous ses schémas, il a donc un rôle personnalisé qui lui donne les privilèges du système pour faire à peu près tout. C'est pourquoi je pensais qu'Oracle ignorait les privilèges basés sur les rôles, car sinon le travail ne devrait pas avoir de problèmes avec un accès insuffisant. – Yoten