The sys user and users granted the dba role or the select_catalog_role role can see the dynamic views. To be able to 'execute' a select (plsql?) you'll need to grant dml privs directly to a user (as sys: grant select on v$_session to <user>;).
I connected as system/manager and I want to grant select on v$database to user scott how would I do ? Is it something like
grant select on v$database to system.scott ? I tried without system also.But giving an error saying table or view doesn't exist.
Most of the time it would be better to go manually and do the grant to avoid the security breaches. One of the way you could do it is write a shell script that would first set the env to point to the database and connect as internal and then run the grant and other DDL commands that you want and exit.