Oracle
 sql >> Database >  >> RDS >> Oracle

Modo corretto per consentire agli utenti di accedere a schemi aggiuntivi in ​​Oracle

AFAIK devi fare l'oggetto delle sovvenzioni uno alla volta.

In genere utilizzeresti uno script per farlo, qualcosa sulla falsariga di:

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

E simile per altri oggetti db.

Potresti inserire un pacchetto in ogni schema di cui hai bisogno per emettere la sovvenzione da cui passerà attraverso tutte le chiamate di ciascuna istruzione GRANT tramite un'esecuzione IMMEDIATA.

es.

   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;