Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Maneira correta de dar aos usuários acesso a esquemas adicionais no Oracle


AFAIK você precisa fazer o objeto grants um de cada vez.

Normalmente, você usaria um script para fazer isso, algo como:
SELECT 'GRANT ALL ON '||table_name||' TO BOB;'
FROM   ALL_TABLES
WHERE  OWNER = 'ALICE';

E semelhante para outros objetos db.

Você poderia colocar um pacote em cada esquema que você precisa para emitir o grant do qual passará por todas as chamadas de cada instrução GRANT por meio de um EXECUTE IMMEDIATE.

por exemplo.
   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;