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

Oracle:dostęp tylko do odczytu do schematu dla innego użytkownika?

Jeśli masz kontrolę nad sposobem, w jaki Twoja aplikacja łączy się (np. instrukcja inicjowania puli połączeń), wystarczy, że uruchomisz:

ALTER SESSION SET CURRENT_SCHEMA = PRODUCTS;

Od tego momentu (w czasie trwania sesji) każda niekwalifikowana nazwa obiektu będzie wyszukiwana w PRODUCTS schemat.

Wszystkie dotacje przyznane dla PRODUCTS_READONLY będzie obowiązywać. Sesja będzie działać z poświadczeniami (i ograniczeniami bezpieczeństwa) pierwotnego użytkownika użytego do zalogowania.

Jeśli nie możesz zmienić sposobu nawiązywania lub inicjowania połączenia, wyzwalacz logowania również powinien to osiągnąć:

create or replace trigger logon_trg
  after logon on database
begin
    if (user = 'PRODUCTS_READONLY') then
      execute immediate 'alter session set current_schema = products';
    end if;
exception
  when others then null; -- prevent a login failure due to an exception
end logon_trg;
/

Pamiętaj, że łapanie w pułapkę dowolnego jest bardzo ważne wyjątek, ponieważ w przeciwnym razie potencjalny błąd w wykonywanym SQL skutecznie wyloguje wszystkich z bazy danych. Dlatego używaj go ostrożnie i przetestuj go dobrze przed wprowadzeniem go do produkcji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak podłączyć Airflow do bazy danych Oracle

  2. Użyj zmiennych R do zapytania SQL

  3. Jak przenieść następną wartość w sekwencji do zmiennej?

  4. Niepowodzenie prostej procedury Oracle

  5. System.Data.OracleClient wymaga oprogramowania klienckiego Oracle w wersji 8.1.7