When you try to connect a database through enterprise manager you may have an error like:
Error "The application requires more database privileges than you have currently been granted. Click on Help to get more version specific information."
even your user has connect role.
Enterprise maneger requires SELECT_CATALOG_ROLE role or SELECT ANY DICTIONARY privilege to connect through EM. But what they mean and what is the difference between them.
- First of all SELECT_CATALOG_ROLE is a role and SELECT ANY DICTIONARY is a privilege. (Remember roles need relogin or explicit set role from a session to take affect whereas the granting of privileges take immediate affect.)
- SELECT_CATALOG_ROLE role provides access to all SYS views only. (static dictionary views (dba_) & dynamic performance views (v$)
- SELECT ANY DICTIONARY privilege provides access to SYS schema objects only. (all sys objects !!, see Select Any Dictionary Privilege & Security.)
- If both SELECT ANY DICTIONARY and SELECT ANY TABLE privilege is enabled then it allow access to all SYS and non-SYS objects. (If O7_DICTIONARY_ACCESSIBILITY = FALSE; if it is TRUE, SELECT ANY TABLE privilege is already enough!!)