Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Korrekte Möglichkeit, Benutzern Zugriff auf zusätzliche Schemas in Oracle zu gewähren

AFAIK, Sie müssen das Grants-Objekt einzeln ausführen.

Normalerweise würden Sie dazu ein Skript verwenden, etwa so:

SELECT 'GRANT ALL ON '||table_name||' TO BOB;'
FROM   ALL_TABLES
WHERE  OWNER = 'ALICE';

Und ähnlich für andere DB-Objekte.

Sie könnten ein Paket in jedes Schema einfügen, das Sie benötigen, um die Gewährung auszustellen, von dem aus alle Aufrufe jeder GRANT-Anweisung über ein EXECUTE IMMEDIATE durchlaufen werden.

zB

   PROCEDURE GRANT_TABLES
   IS
   BEGIN

      FOR tab IN (SELECT table_name
                  FROM   all_tables
                  WHERE  owner = this_user) LOOP
         EXECUTE IMMEDIATE 'GRANT SELECT, INSERT, UPDATE, DELETE ON '||tab.table_name||' TO other_user';
      END LOOP;
   END;