Oracle
 sql >> Base de données >  >> RDS >> Oracle

Manière correcte de donner aux utilisateurs l'accès à des schémas supplémentaires dans Oracle

AFAIK, vous devez faire l'objet des subventions un à la fois.

En règle générale, vous utiliserez un script pour ce faire, quelque chose comme :

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

Et similaire pour les autres objets db.

Vous pouvez mettre un package dans chaque schéma dont vous avez besoin pour émettre la subvention à partir de laquelle passera par tous les appels de chaque instruction GRANT via un EXECUTE IMMEDIATE.

ex.

   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;