Oracle8i: grant select any table

Hallo,

ich suche nach einem Weg einem DB-User das select Privileg auf alle Tabellen _eines_ Schemas zu erteilen. Ich möchte also grant select any table auf ein bestimmtes Schema beschränken.

Die Variante mir ein Script durch Abfrage von USER_TABLES zu bauen habe ich bereits überdacht.
select ‚grant select on ‚||table_name||‘ to myuser‘ from user_tables

Scheidet aber aus, da die Lösung nicht wartungsfrei ist. D.h. kommt eine neue Tabelle hinzu, erhält myuser nicht automatisch das Leserecht darauf - wie es bei grant select any table wäre.

Scheidet aber aus, da die Lösung nicht wartungsfrei ist. D.h.
kommt eine neue Tabelle hinzu, erhält myuser nicht automatisch
das Leserecht darauf - wie es bei grant select any table wäre.

…funktioniert das, wenn Du eine Rolle anlegst, die die jeweiligen Rechte besitzt:

create role owner_1_role;
grant select on owner_1.table_1 to owner_1_role;

grant owner_1_role to myuser;
grant owner_1_role to youruser;
grant owner_1_role to hisuser;

Kommt eine neue Tabelle hinzu, mußt Du die Rechte nur der Rolle granten; alle betroffenen User erhalten sie automatisch.

Grantest Du die Rechte in periodischen Abständen, z.B. jeden Abend per DBMS_JOB, ist das Ganze beinahe wartungsfrei.

Gruß

J.