I pacchetti di sistema vengono trattati in modo specifico, in base al valore del parametro di inizializzazione O7_DICTIONARY_ACCESSIBILITY
. Se è FALSE
, che è l'impostazione predefinita da Oracle 9i, i privilegi ANY
non si applicano al dizionario dati. La documentazione si riferisce a questo come "protezione del dizionario".
Il più vicino che posso trovare nella guida di sicurezza - here e here - solo fare riferimento alle tabelle come esempi.
La nota di supporto Oracle 174753.1, tuttavia, afferma esplicitamente che la protezione del dizionario sostituisce grant any object privilege
. Non posso citarlo ma spiega quello che stai vedendo; potrebbe valere la pena cercare se si ha accesso ad esso.
Quindi, l'unico modo per usr2
per essere in grado di grant execute on sys.dbms_lock to usr1
è che DBA abbia eseguito grant execute on sys.dbms_lock to usr2 with grant option
.
Come dice Ben, è necessario richiedere al DBA di concedere l'autorizzazione allo usr1
direttamente o aggiungere lo with grant option
ai privilegi concessi a usr2
; oppure fare in modo che usr2
crei una procedura di wrapper attorno alla chiamata dbms_lock
e concedere le autorizzazioni su quello a usr1
.
fonte
2012-11-16 10:19:57
Oracle ha [promesso di risolvere il problema in una versione futura aggiungendo una procedura 'sleep' a' dbms_session'] (https://community.oracle.com/ideas/4852). –