Dienstag, März 01, 2011

Set Role

Nur als kurze Notiz: gestern habe ich mir für einen Account die SELECT_CATALOG_ROLE geben lassen und war dann leicht verwundert, dass ich trotzdem nicht auf v$- und data dictionary Views zugreifen konnte. Noch mehr überraschte mich, dass ich die Views in all_objects sogar sehen konnte - nur eben nicht abfragen. Eine kurze Google-Recherche ergab dann, dass die Rolle offenbar nicht als default-Rolle definiert war und deshalb in der Session explizit aktiviert werden musste (der Hinweis fand sich in einem Foren-Beitrag von Joel Garry); vermutlich habe ich das irgendwann mal gewusst, aber wieder komplett vergessen. Das Vorgehen zur Aktivierung ist:

-- Prüfung, ob die Rollen aktiviert sind
select *
  from session_roles;
--> lieferte kein Ergebnis

set role none;
--> Deaktivierung aller Rollen: zu testen wäre noch, ob das tatsächlich nötig ist

set role all;
--> Aktivierung aller Rollen; hier könnte man auch einzelne Rollen aktivieren
--   (während die Deaktivierung nur für alle Rollen durchführbar ist)

Die Oracle-Doku erläutert die zugrunde liegende Idee dann in aller wünschenswerten Klarheit:
When a user logs on to Oracle Database, the database enables all privileges granted explicitly to the user and all privileges in the user's default roles. During the session, the user or an application can use the SET ROLE statement any number of times to enable or disable the roles currently enabled for the session.
Weitere Details liefert wie immer auch die PSOUG-Referenz.

Was mich allerdings wundert, ist, dass die Rolle nach der Zuweisung nicht automatisch als default betrachtet wurde. Das wäre gelegentlich noch zu überprüfen.

Keine Kommentare:

Kommentar veröffentlichen