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

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

  1.  
  2. select * from dba_sys_privs where GRANTEE='USER';
  3.  

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

  1.  
  2. SELECT USER1.*, USER2.*
  3. FROM (select * from DBA_TAB_PRIVS where GRANTEE='USER1') USER1
  4. left join (select * from DBA_TAB_PRIVS where GRANTEE='USER2') USER2
  5. on USER1.table_name = USER2.table_name
  6. WHERE USER2.table_name is null;
  7.  

Выдаем права

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

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

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

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

  1.  
  2. SELECT 'GRANT ' || T.PRIVILEGE || ' ON ' || T.TABLE_NAME || ' TO ' || t.GRANTEE || ' ;' #b1b100;">AS grn
  3. FROM DBA_TAB_PRIVS t
  4. WHERE t.GRANTEE='USER1'
  5. AND t.OWNER = 'USER2'
  6. AND NOT T.TABLE_NAME LIKE '%$%';
  7.  
15:56
4.1K
Нет комментариев. Ваш будет первым!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.