Varias de las respuestas que han dado estan mal.
1- Dado un objeto sobre el cual el usuario tiene acceso, siempre puede saber que tipo es. (tabla, vista, sinonimo, etc). Para eso existe el campo TYPE de la vista ALL_OBJECTS.
2- El codigo de una vista NO queda oculto a los usuarios. Se puede acceder en el campo TEXT de la vista ALL_VIEWS
SQL> conn hr/hr
Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0
Connected as hr
SQL> create table t(c1 number, c2 number);
Table created
SQL> create view t_oculta as select c1 from t;
View created
SQL> grant select on t_oculta to oe;
Grant succeeded
SQL> conn oe/oe
Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0
Connected as oe
SQL> select object_name, object_type from all_objects where object_name = 'T_OCULTA';
OBJECT_NAME OBJECT_TYPE
------------------------------ ------------------
T_OCULTA VIEW
SQL> select text from all_views where VIEW_NAME = 'T_OCULTA';
TEXT
--------------------------------------------------------------------------------
select c1 from t