Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle - Jak przyznać użytkownikowi prawa do obiektów innego użytkownika

Możesz napisać prostą procedurę, aby to zrobić:

BEGIN
  FOR Rec IN (SELECT object_name, object_type FROM all_objects WHERE owner='SOURCEUSER' AND object_type IN ('TABLE','VIEW','PROCEDURE','FUNCTION','PACKAGE')) LOOP
    IF Rec.object_type IN ('TABLE','VIEW') THEN
      EXECUTE IMMEDIATE 'GRANT SELECT, UPDATE, INSERT, DELETE ON SOURCEUSER.'||Rec.object_name||' TO TARGETUSER';
    ELSIF Rec.object_type IN ('PROCEDURE','FUNCTION','PACKAGE') THEN
      EXECUTE IMMEDIATE 'GRANT EXECUTE ON SOURCEUSER.'||Rec.object_name||' TO TARGETUSER';
    END IF;
  END LOOP;
END;

Nie jestem pewien, o co jeszcze prosisz. Możesz zmodyfikować powyższe, aby dodać dodatkowe granty i/lub typy_obiektów dla uprawnień, które chcesz nadać użytkownikowi targetuser. Jak sugeruje @stili, możesz wiele zrobić z rolami, ale bądź ostrożny - niektóre uprawnienia nie działają, gdy są przyznawane przez role.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja TO_DATE w ORACLE

  2. Sprawdzanie identyfikatora Oracle i nazwy bazy danych

  3. Cursor For Loop, jak wydrukować wiadomość, gdy nie została znaleziona

  4. Wyszukiwanie w polu varchar wartości liczbowych z określonego zakresu

  5. najlepszy sposób na śledzenie zmian danych w Oracle