Идентификация пользователей с разрешениями на удаление в Oracle

#sql #oracle

#sql #Oracle

Вопрос:

Я новичок в Oracle и работаю над некоторыми домашними заданиями, касающимися прав администратора и т.д., И мне неясно, как решить этот вопрос:

Напишите инструкцию SQL, чтобы перечислить пользователей и роли, которые имеют права на УДАЛЕНИЕ во всех таблицах, принадлежащих пользователям в вашей базе данных, кроме SYS и SYSTEM.

Есть предложения? Спасибо!

Комментарии:

1. Начните с dba_tb_privs .

Ответ №1:

Следующий запрос может помочь :

 select grantee
 from 
  (
    select ( select count(1) 
               from dba_tables t 
              where owner not in ('SYSTEM','SYS') ) as count_all_tables,
           p.grantee, count(1) as count_del_privs_per_grantee
      from dba_tab_privs p
     where p.privilege = 'DELETE'
       and exists ( select * 
                      from dba_tables t 
                     where owner not in ('SYSTEM','SYS')
                       and t.owner = p.owner
                       and t.table_name = p.table_name ) 
      group by p.grantee        
   )
 where count_all_tables = count_del_privs_per_grantee;