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.
![]()
