Bei neuen Oracle-Versionen sollen Standard-Rollen entfernt werden. Deshalb keine Standard-Rolle verwenden. Rollen haben keinen Eigentümer. Rollen können nicht bei der Erstellung eines Users diesem in einem Befehl zugewiesen werden.
CREATE ROLE role [NOT IDENTIFIED | IDENTIFIED
{BY password | EXTERNALLY | GLOBALLY | USING package}];
NOT IDENTIFIED - Keine Authentifizierung.
create role oe_bla;
grant select any table to oe_bla;
grant role1, role2, role3 to user|role|public with admin option;Max. 148 Rollen können aktiv sein. Standard (MAX_ENABLED_ROLES) sind max. 30 aktive Rollen. Beim Anmelden sind nur die Default-Roles aktiv. Rollen können nicht beim CREATE USER-Befehl zugewiesen werden.
alter user scott default role hr_clerk, oe_clerk;Macht alle Rollen, die anna zugewiesen worden, zu Default-Roles, ausser role3.
alter user anna default role all except role3;Mit SET ROLE (de-)aktiviert der User für sich dynamisch die Rollen. Man muss sämtliche Rollen beim (De-)Aktivieren angeben. Wird eine vorher aktivierte Rolle bei einem SET-Befehl nicht mit angegeben, wird sie deaktiviert. Der SET-Befehl gilt nur für die Dauer einer Session.
set role role2, role3; set role all except oe_clerk;
set role oe_clerk identified by order;Schützen bestimmte Rollen vor dem Aktivieren. Dies ist z.B. für Web-Anwendungen sinnvoll, bei denen das Passwort in der Anwendung übermittelt wird. Kennwort geschütze Default-Rollen brauchen ein Kennwort.
revoke role1 from public;
drop role hr_manager;
select role, password_required from dba_roles;
Stefan Hietel dama.go GmbH, Robert Warnke http://rowa.giso.de