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

Jak sprawdzić uprawnienia (DDL,DML,DCL) do obiektów przypisanych do schematu, ról w bazie danych Oracle?

Krótka informacja o prefiksie widoku słownika danych:

ALL_    -Describes PUBLIC Object grants.
USER_   -Describes current user Object grants.
DBA_    -Describes all object grants in the database.

Przydatne informacje o widokach:

ROLE_ROLE_PRIVS     -describes the roles granted to other roles. 
ROLE_SYS_PRIVS      -describes system privileges granted to roles.
ROLE_TAB_PRIVS      -describes table privileges granted to roles. 
DBA_ROLE_PRIVS      -describes the roles granted to all users and roles in the database.
DBA_SYS_PRIVS       -describes system privileges granted to users and roles.
DBA_TAB_PRIVS       -describes all object grants in the database.
DBA_COL_PRIVS       -describes all column object grants in the database.

Aby dowiedzieć się więcej o PRIVS widoki odwiedź tutaj .

Zapytania:

-Informacje o stanie użytkownika/schematu

select username,account_status, created from dba_users where username in ('SCOTT');

-Sprawdź role przypisane do roli i schematu

select * from DBA_ROLE_PRIVS where grantee in ('SCOTT','RESOURCE');

-Sprawdź uprawnienia roli

select * from ROLE_ROLE_PRIVS where role in ('RESOURCE','CONNECT');    
select * from ROLE_TAB_PRIVS  where role in ('RESOURCE','CONNECT');
select * from ROLE_SYS_PRIVS  where role in ('RESOURCE','CONNECT');

Pseudo Code:
select 'grant '||privilege||' to ROLE_SLAVE;' from ROLE_SYS_PRIVS where role in ('RESOURCE','CONNECT');
select 'grant '||privilege||' to ROLE_SLAVE;' from ROLE_TAB_PRIVS where role in ('RESOURCE','CONNECT');

-Sprawdź uprawnienia przyznanych obiektów dla schematu

select * from DBA_SYS_PRIVS where grantee in ('SCOTT');
select * from DBA_TAB_PRIVS where grantee in ('SCOTT');
select * from DBA_COL_PRIVS where grantee in ('SCOTT');

Pseudo Code: 
select 'grant '||privilege||' to SCOTT_SLAVE;' from DBA_SYS_PRIVS where grantee in ('SCOTT');
select 'grant '||privilege||' on '||owner||'.'||table_name||' to SCOTT_SLAVE;' from DBA_TAB_PRIVS where grantee in ('SCOTT');
select 'grant '||privilege||' ('||column_name||') '||' on '||owner||'.'||table_name||' to SCOTT_SLAVE;' from DBA_COL_PRIVS where grantee in ('SCOTT');

Dziękuję!




  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 anulować długo trwającą operację Bazy danych?

  2. Usługa danych Oracle REST apex_pu

  3. Jak obsługiwać pojedynczy cytat w Oracle SQL

  4. Problemy ze zmianą daty za pomocą spustu w wyroczni

  5. Oracle SQL :sortuj wiersz z rozdzielanym ciągiem