Some time you have the requirement to create a user to the database that has access to all v$session, v$lock, dba_free_space and other dictionary views to monitor performance issues, sql tuning, and other DBA operations.
But you don't want to have real power to change things like a DBA can do.
The quick and easy word around is to grant the select_catalog_role
role to the new user.
create user dba_monitor identified by dba_monitor;
grant connect, select_catalog_role to dba_monitor;
Now with the new user you can use tools like TOAD or Grid Control to monitor the database as a DBA but with no real power to change things