SELECT lpad(' ', 2 * LEVEL), granted_role "user,his roles AND privileges"
FROM (
/* THE USERS */
SELECT NULL grantee, username granted_role
FROM dba_users
WHERE username LIKE &USER_NAME
/* THE ROLES TO ROLES RELATIONS */
UNION
SELECT grantee, granted_role
FROM dba_role_privs
/* THE ROLES TO PRIVILEGE RELATIONS */
UNION
SELECT grantee, privilege FROM dba_sys_privs)
START WITH grantee IS NULL
CONNECT BY grantee = PRIOR granted_role;
FROM (
/* THE USERS */
SELECT NULL grantee, username granted_role
FROM dba_users
WHERE username LIKE &USER_NAME
/* THE ROLES TO ROLES RELATIONS */
UNION
SELECT grantee, granted_role
FROM dba_role_privs
/* THE ROLES TO PRIVILEGE RELATIONS */
UNION
SELECT grantee, privilege FROM dba_sys_privs)
START WITH grantee IS NULL
CONNECT BY grantee = PRIOR granted_role;