Скрипты для работы с правами в Oracle DB.

Как посмотреть список объектов на которые у пользователя есть права? 

select * from dba_sys_privs where GRANTEE='USER';

Сравнить права на объекты БД двух пользователей. Скрипт ниже выводит права, которые есть у первого пользователя, но нет у второго

SELECT USER1.*, USER2.*
  FROM (select * from  DBA_TAB_PRIVS where GRANTEE='USER1') USER1 
  left join (select * from  DBA_TAB_PRIVS where GRANTEE='USER2') USER2 
    on USER1.table_name = USER2.table_name
 WHERE USER2.table_name is null;

Выдаем права

GRANT SELECT,UPDATE,INSERT,DELETE ON <СХЕМА>.<ОБЪЕКТ> TO <ПОЛЬЗОВАТЕЛЬ>;
GRANT EXECUTE ON <СХЕМА>.<ОБЪЕКТ> TO <ПОЛЬЗОВАТЕЛЬ>;

Забираем права

REVOKE SELECT,UPDATE,INSERT,DELETE ON <СХЕМА>.<ОБЪЕКТ> TO <ПОЛЬЗОВАТЕЛЬ>;
REVOKE EXECUTE ON <СХЕМА>.<ОБЪЕКТ> FROM <ПОЛЬЗОВАТЕЛЬ>;

Генерация скриптов на раздачу прав

SELECT 'GRANT ' || T.PRIVILEGE || ' ON ' || T.TABLE_NAME || ' TO ' || t.GRANTEE || ' ;' AS grn 
  FROM  DBA_TAB_PRIVS t 
 WHERE t.GRANTEE='USER1' 
   AND t.OWNER = 'USER2'
   AND NOT T.TABLE_NAME LIKE  '%$%';
15:56
1252
Нет комментариев. Ваш будет первым!
Загрузка...