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

Nadawanie uprawnień użytkownikom na innym schemacie

Nie jest niczym niezwykłym chęć posiadania jednego skryptu do wdrożenia zmiany. Chodzi o to, że taki skrypt musi być uruchamiany przez zaawansowanego użytkownika, ponieważ musi mieć uprawnienia systemowe na DOWOLNYM poziomie. Zwykle oznacza to konto DBA, najlepiej konto aplikacji, ale poza tym SYSTEM lub SYS.

Skrypt, który chcesz, wyglądałby tak:

grant select on user_a.t23 to user_b
/
grant select on user_a.t42 to user_b
/
create view user_b.v_69 as
select t23.col1, t42.col2
from   user_a.t42
       join user_a.t23
           on (t42.id = t23.id)
/
grant select on user_b.v_69 to user_c
/

Typowym scenariuszem jest to, że mamy zestaw pojedynczych skryptów, które zostały napisane do uruchamiania przez różnych użytkowników, ale które teraz musimy połączyć w jedno wdrożenie. Oryginalne skrypty nie zawierają nazw schematów i istnieje wiele dobrych powodów, dla których nie chcielibyśmy ich zakodować na sztywno w skryptach.

Jednym ze sposobów na zbudowanie tego głównego skryptu jest użycie zmiany składni CURRENT_SCHEMA:

alter session set current_schema=USER_A
/
@run_grants_to_userb.sql

alter session set current_schema=USER_B
/
@create_view69.sql
@run_grants_to_userc.sql

Nadal potrzebujemy użytkownika DBA, aby uruchomić skrypt główny. Jedną z zalet przełączania bieżącego schematu jest to, że pozwala nam wdrażać obiekty, takie jak łącza do baz danych, które ze względu na dziwactwo składniowe nie mogą zawierać nazwy schematu w swojej deklaracji. Jedna uwaga jest taka, że ​​użytkownik się nie zmienia, więc skrypt wykorzystujący pseudokolumnę USER może dawać niepożądane wyniki.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Parsowanie języka SQL w Pythonie za pomocą pyparsingu

  2. Nie można znaleźć dostawcy bazy danych Entity Framework zgodnego z tą wersją

  3. Wykonanie zapytania Oracle Ad Hoc z błędem parametrów powiązania; ORA-00907:brak prawego nawiasu

  4. problem ORA-00001:naruszone ograniczenie unikatowe podczas INSERT/UPDATE

  5. Warunkowe zamówienie według klauzuli