While the above methods will work for basic system configurations, things start to become messy in Oracle when many roles exist which are in turn granting role privileges to other roles, and so on down the rabbit hole. Since the
USER_ privilege views only display
GRANTEES with directly assigned access, often privileges that are inhereted through other roles will not be readily shown.
To resolve this, it is advisable to use an advanced script such as the trusted work of Pete Finnigan and his find_all_privs.sql script. You may also opt for a modified version by David Arthur, find_all_privs2.sql.
In either case, the purpose of these scripts is to allow you to recursively locate all privileges granted to a particular user. When the script locates a
role for the user, it recursively searches for other roles and privileges granted to that role, repeating the process all the way down the chain. The results of the script can be output to the screen or to a file as desired.
More information on these scripts and their usage can be found at petefinnigan.com.
USER_ privilege views are effectively the same as their
DBA_ counterparts, but specific to the current user only, the type of returned data and column names are all identical to those when querying
DBA_ views intead.