Press ESC to close

Find Oracle Table Grants

Find Oracle Table And User Grants

Oracle Veritabanında bir kullanıcının bir tabloya ilişkin yetkilerini sorgulayabilmesi için öncelikle dba_XX olan tablolara select hakkının  olması gerekmektedir. SYS.DBA_TAB_PRIVS  view içerisinde yetkiler ile ilgili bilgiler buylunmaktadır, bu view içerisindeki kolonlar GRANTEE, OWNER, TABLE_NAME, GRANTOR ve PRIVILEGE kolonlalrıdır, aşağıda bir tablo için yetkiler sorgulanmıştır.

 


SELECT
	*
FROM
	SYS.DBA_TAB_PRIVS
WHERE
	TABLE_NAME = '<TABLE_NAME>'
;

Ayrıca User üzerinden hangi tablolara yetkisi var şeklinde de sorgulama yapabiliriz.

SELECT
	*
FROM
	SYS.DBA_TAB_PRIVS
WHERE
	GRANTEE = '<USER_NAME>'

Ayrıca aşağıdaki Sql ile kim kime hangi yetkiyi vermiş kimin hangi tablo üüzerinden ne yetkisi var bir matrix oklarak görebilirsiniz.

select
  owner,
  table_name,
  grantee,
  grantor,
  max(case when privilege = 'SELECT'            then 'X' end) sel,
  max(case when privilege = 'INSERT'            then 'X' end) ins,
  max(case when privilege = 'UPDATE'            then 'X' end) upd,
  max(case when privilege = 'DELETE'            then 'X' end) del,
  max(case when privilege = 'ALTER'             then 'X' end) alt,
  max(case when privilege = 'READ'              then 'X' end) rea,
  max(case when privilege = 'QUERY REWRITE'     then 'X' end) qrr,
  max(case when privilege = 'DEBUG'             then 'X' end) dbg,
  max(case when privilege = 'ON COMMIT REFRESH' then 'X' end) ocr,
  max(case when privilege = 'FLASHBACK'         then 'X' end) flb
from
  dba_tab_privs
where
  owner not in ('SYS', 'SYSTEM', 'DBSNMP', 'XDB', 'WMSYS')
group by
  owner,
  table_name,
  grantee,
  grantor
order by
  owner,
  table_name,
  grantee,
  grantor;

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir