Saturday, September 12, 2009

how to show user privilize by query

SELECT LPAD (' ', 2 * LEVEL) || granted_role "USER PRIVS"
FROM (SELECT NULL grantee, username granted_role
FROM dba_users
WHERE username LIKE UPPER ('%&uname%')
UNION
SELECT grantee, granted_role
FROM dba_role_privs
UNION
SELECT grantee, PRIVILEGE
FROM dba_sys_privs)
START WITH grantee IS NULL
CONNECT BY grantee = PRIOR granted_role;



SELECT PATH
FROM (SELECT grantee,
SYS_CONNECT_BY_PATH (PRIVILEGE, ':') || ':'
|| grantee PATH
FROM (SELECT grantee, PRIVILEGE, 0 ROLE
FROM dba_sys_privs
UNION ALL
SELECT grantee, granted_role, 1 ROLE
FROM dba_role_privs)
CONNECT BY PRIVILEGE = PRIOR grantee
START WITH ROLE = 0)
WHERE grantee IN (
SELECT username
FROM dba_users
WHERE lock_date IS NULL
AND PASSWORD != 'EXTERNAL'
AND username != 'SYS')
OR grantee = 'PUBLIC'

No comments: