How to give read only access to a user to view the tables of different owner in oracle
The REFERENCES privilege kind of provides this:

SQL&gt; create user u1 identified by u1;

User created.

SQL&gt; create user u2 identified by u2;

User created.

SQL&gt; grant create session to u1, u2;

Grant succeeded.

SQL&gt; grant create table to u1;

Grant succeeded.

SQL&gt; create table u1.t1 (c1 number);

Table created.

SQL&gt; grant references on u1.t1 to u2;

Grant succeeded.

SQL&gt; conn u2/u2
Connected.
SQL&gt; desc u1.t1
 Name           Null?     Type
 ------------------------------------
 C1                       NUMBER

SQL&gt; select * from u1.t1;
select * from u1.t1
                 *
ERROR at line 1:
ORA-01031: insufficient privileges