Ho bisogno di scoprire quali schemi sono già stati concessi esegui il permesso su un certo oggetto in un db Oracle 10g (in questo caso, un pacchetto). Qual è il modo più semplice per me di farlo? Esiste una funzione integrata per fornire queste informazioni?Come verificare quali schemi sono stati concessi per l'autorizzazione EXECUTE su un oggetto Oracle?
Q
Come verificare quali schemi sono stati concessi per l'autorizzazione EXECUTE su un oggetto Oracle?
6
A
risposta
6
SELECT grantee
FROM all_tab_privs
WHERE table_name = '<your object name>'
AND privilege = 'EXECUTE'
AND grantor = '<object owner>';
Sì, lo so, si dice "nome_tabella" ma si applica anche agli oggetti eseguibili. Anche la tabella DBA_TAB_PRIVS funziona. Avrai bisogno di autorizzazioni appropriate (ad es., Ruolo DBA, SELEZIONA QUALUNQUE TALBE) per selezionare da queste viste e vedere tutti i dati.
In risposta al commento di Martin ... Quanto sopra è il modo più semplice per fare ciò che hai chiesto che io conosca. Se si vuole limitare a pacchetti, provate questo:
SELECT * FROM all_tab_privs JOIN all_objects ON (table_name = object_name)
WHERE table_name = '<your object name>'
AND object_type = 'PACKAGE'
AND privilege = 'EXECUTE'
AND grantor = '<object owner>';
Sono stato in realtà dopo il verificarsi qualcosa di più generale, o di un caso specifico pacchetto di ... – MPritchard
tutto è perdonato! Buon vecchio oracolo e la sua assurdità nella denominazione delle tabelle di sistema :) – MPritchard
lol, all_tab_privs è un nome terribile per questa tabella – Reimius