Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Diferença entre consulta de privilégios em tabelas


São bem diferentes sim.

No Oracle, privilégios em uma tabela podem ser concedidos diretamente a um usuário (nesse caso, eles apareceriam em ALL_TAB_PRIVS ) ou privilégios podem ser concedidos a uma função (visível em ROLE_TAB_PRIVS ) e essa função pode ser concedida a um usuário (visível em USER_ROLE_PRIVS ). A primeira consulta mostrará os usuários que têm concessões diretas em uma tabela. A segunda consulta irá mostrar-lhe os utilizadores aos quais foi concedido um papel ao qual foi concedido acesso à tabela (note que em ambos os casos deverá realmente especificar um OWNER além do nome da tabela). Nenhum dos dois mostrará informações sobre concessões que foram feitas por meio de vários níveis aninhados de funções (ou seja, o usuário A recebeu a função 1, a função 1 recebeu a função 2, a função 2 recebeu acesso a uma tabela). As concessões feitas por meio de funções também podem ser um pouco complicadas porque existem funções padrão e não padrão e funções protegidas por senha e as funções podem ser habilitadas e desabilitadas em uma sessão.

Em geral, sugiro dar uma olhada nos scripts disponíveis no site de Pete Finnigan se você quiser ter algo que cubra todos os casos possíveis. Nesse caso, você provavelmente deseja usar o script who_can_access para determinar quais usuários podem acessar uma determinada tabela.