Saludos a todos...
Mi problema es el siguiente:
Tengo dos usuarios (UA y UB), ambos con el rol CONNECT.
UA tiene dos tablas (TA1 y TA2).
SQLWKS> create table TA1( TA1_C1 number(1), TA1_C2 varchar2(10));
Statement processed.
SQLWKS> insert into TA1 (TA1_C1, TA1_C2) values( 1, 'TA1-Reg 1');
1 row processed.
SQLWKS> commit;
Statement processed.
SQLWKS> create table TA2( TA2_C1 number(1), TA2_C2 varchar2(10));
Statement processed.
SQLWKS> insert into TA2 (TA2_C1, TA2_C2) values( 1, 'TA2-Reg 1');
1 row processed.
SQLWKS> commit;
Statement processed.
UB tiene una tabla (TB1).
SQLWKS> create table TB1( TB1_C1 number(1), TB1_C2 varchar2(10));
Statement processed.
SQLWKS> insert into TB1 (TB1_C1, TB1_C2) values( 1, 'TB1-Reg 1');
1 row processed.
SQLWKS> commit;
Statement processed.
UB requiere una vista VB1 para ligar TB1 con TA2.
El usuario SYSTEM crea un sinónimo público SPUB1 para la tabla UA.TA2
SQLWKS> create public synonym SPUB1 for UA.TA2;
Statement processed.
SQLWKS> describe SPUB1;
Column Name Null? Type
------------------------------ -------- ----
TA2_C1 NUMBER(1)
TA2_C2 VARCHAR2(10)
SQLWKS> select count(*) from SPUB1;
COUNT(*)
----------
1
1 row selected.
El problema se presenta con UB:
SQLWKS> select count(*) from SPUB1;
select count(*) from SPUB1
*
ORA-00942: table or view does not exist
Cualquier usuario con privilegios de DBA o el privilegio SELECT ANY TABLE pueden acceder al sinónimo.
Si esta es la solución, crea más problemas de los que resuelve...
Gracias por la ayuda que puedan proporcionarme...