Muszę dowiedzieć się, które schematy zostały już przyznane, wykonać pozwolenie na określony obiekt w bazie danych Oracle 10g db (w tym przypadku pakiet). Jaki jest najprostszy sposób, aby to zrobić? Czy istnieje wbudowana funkcja dostarczania tych informacji?Jak sprawdzić, które schematy zostały przyznane uprawnienia EXECUTE dla obiektu Oracle?
6
A
Odpowiedz
6
SELECT grantee
FROM all_tab_privs
WHERE table_name = '<your object name>'
AND privilege = 'EXECUTE'
AND grantor = '<object owner>';
Tak, wiem, mówi "nazwa_tabeli", ale dotyczy również obiektów wykonywalnych. Tabela DBA_TAB_PRIVS działa również. Będziesz potrzebować odpowiednich uprawnień (np. Roli DBA, WYBIERZ WSZELKĄ TALBĘ), aby wybrać te widoki i zobaczyć wszystkie dane.
W odpowiedzi na komentarz Martina ... Powyższe jest najłatwiejszym sposobem zrobienia tego o co prosiłem. Jeśli chcesz ograniczyć je do pakietów, spróbuj tego:
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>';
I był rzeczywiście po obu czymś bardziej ogólnym, czy w konkretnym przypadku pakietu ... – MPritchard
Wszystko jest wybaczone! Dobra stara wyrocznia i jej nonsensowne nazewnictwo tabel systemowych :) – MPritchard
lol, all_tab_privs to straszna nazwa dla tej tabeli – Reimius