sql >> Base de Datos >  >> RDS >> Oracle

Forma correcta de dar acceso a los usuarios a esquemas adicionales en Oracle

AFAIK, debes hacer el objeto de las subvenciones de uno en uno.

Por lo general, usaría un script para hacer esto, algo como:

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

Y similar para otros objetos db.

Puede colocar un paquete en cada esquema que necesite para emitir la concesión desde la cual pasará por todas las llamadas a cada instrucción GRANT a través de EXECUTE IMMEDIATE.

por ejemplo

   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;