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

Korrekt måde at give brugere adgang til yderligere skemaer i Oracle

AFAIK skal du gøre bevillingsobjektet ét ad gangen.

Typisk vil du bruge et script til at gøre dette, noget i retning af:

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

Og lignende for andre db-objekter.

Du kan indsætte en pakke i hvert skema, som du har brug for til at udstede bevillingen fra, som vil gå gennem alle opkald til hver GRANT-erklæring via en EXECUTE IMMEDIATE.

f.eks.

   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;


  1. Oracle:LANG eller CLOB?

  2. Importer CSV-fil i Oracle Table ved hjælp af lagret procedure

  3. Hvad er et gratis værktøj til at sammenligne to SQL Server-databaser?

  4. SQL DEFAULT Begrænsning for at indsætte kolonne med en standardværdi til SQL Server-tabel