Inhaltsbereich

Rechte auf ein Schema vergeben

Unter Oracle ist es nicht möglich mit einem Befehl Rechte auf ein ganzes Schema zu vergeben.

Möglich ist dieses nur über einen Umweg.
Um dieses Problems zu lösen müssen sie für jedes Objekt die Rechte einzeln vergeben.
Zwei mögliche Wege will ich hier aufzeigen

1. Ein Skript erstellen:
Die Befehle in eine Textdatei schreiben und die Datei danach ausführen.

SQL> spool grant_read.txt
SQL> set pagesize 0
SQL> set linesize 100
SQL>select 'grant select on TEST.'||table_name||' to TEST_LESEN;' from dba_tables where owner='TEST' order by table_name;
SQL>; @grant_read.txt
SQL> exit


2. Rechte vergeben mit Hilfe einer Prozedur:
Mit folgender Prozedur geben sie einem Schema Leserechte auf alle Tabellen eines anderen Schemas:


CREATE OR REPLACE PROCEDURE GRANT_SELECT
is 
SQL_STM varchar2 (32000);
CURSOR cur_tables IS SELECT table_name FROM user_tables;
BEGIN
for rec_tables in cur_tables 
loop
SQL_STM:='GRANT SELECT ON '|| rec_tables.table_name || ' to TEST_LESEN';
execute immediate SQL_STM;
end loop;
END GRANT_SELECT;

Rechter Inhaltsbereich

eXirius IT Dienstleistungen GmbH
Juchem-Straße 24
66571 Eppelborn

Telefon: +49 (6881) 99 99 5 - 0
Fax:        +49 (6881) 99 99 5 - 77

E-Mail: info(at)exirius.de