Sistem ve nesne ayrıcalıklarının hangi kullanıcı ve rollere verildiğinin tespiti
Oracle veritabanlarında , veritabanı ve veritabanı nesnelerinde çeşitli işlemler yapmak için sistem ne nesne ayrıcalıklarının kullanıcılara atanmış olması gerekmektedir.
Her sistem ayrıcalığı , bir kullanıcının , belirli veritabanı operasyonlarını ya da veritabanı operasyonlarının bir sınıfını yapabilmesine hak tanır.
Nesne ayrıcalıkları , bir kullanıcının , belli bir nesne üzerinde , belirli işlemleri yürütmesine hak tanır.
Hangi sistem ayrıcalığının hangi rol ya da kullanıcılara verildiğinin tespiti için aşağıdaki sorgu kullanılabilir :
SQL> select * from SYS.DBA_SYS_PRIVS;
Hangi nesne ayrıcalığının hangi rol ya da kullanıcılara verildiğinin tespiti için aşağıdaki sorgu kullanılabilir :
SQL> /* Formatted on 10/12/2018 21:27:57 (QP5 v5.326) */ SELECT ue.name grantee, u.name owner, o.name object_name, ur.name grantor, tpm.name privilege, DECODE (MOD (oa.option$, 2), 1, 'YES', 'NO') grantable, DECODE (BITAND (oa.option$, 2), 2, 'YES', 'NO') heirarchy, OBJECT_TYPE FROM sys.objauth$ oa, sys.obj$ o, sys.user$ u, sys.user$ ur, sys.user$ ue, table_privilege_map tpm, DBA_OBJECTS WHERE oa.obj# = o.obj# AND oa.grantor# = ur.user# AND oa.grantee# = ue.user# AND oa.col# IS NULL AND oa.privilege# = tpm.privilege AND u.user# = o.owner#
Bu sorgudan , DBA_SYS_PRIVS , görüntüsüne benzer, aşağıdaki gibi görüntü oluşturulabilir.
/* Formatted on 10/12/2018 21:39:34 (QP5 v5.326) */ CREATE OR REPLACE VIEW DBA_OBJ_PRIVS AS SELECT ue.name grantee, u.name owner, o.name object_name, ur.name grantor, tpm.name privilege, DECODE (MOD (oa.option$, 2), 1, 'YES', 'NO') grantable, DECODE (BITAND (oa.option$, 2), 2, 'YES', 'NO') heirarchy, OBJECT_TYPE FROM sys.objauth$ oa, sys.obj$ o, sys.user$ u, sys.user$ ur, sys.user$ ue, table_privilege_map tpm, DBA_OBJECTS WHERE oa.obj# = o.obj# AND oa.grantor# = ur.user# AND oa.grantee# = ue.user# AND oa.col# IS NULL AND oa.privilege# = tpm.privilege AND u.user# = o.owner# AND DBA_OBJECTS.OBJECT_ID = oa.obj#;
Hangi rollerin hangi kullanıcılara atandığını DBA_ROLE_PRIVS görüntüsünden öğrenilebilir.