sql >> Base de Datos >  >> RDS >> Oracle

Enlace de la base de datos de Oracle:conéctese al proxy con caracteres especiales en el nombre de usuario

Esto debería funcionar, con o sin los caracteres especiales; esto es en 11.2.0.3, primero sin:

CREATE USER "AUSER" IDENTIFIED BY "a";
CREATE USER bar IDENTIFIED BY "random-trash";
ALTER USER bar GRANT CONNECT THROUGH "AUSER";
GRANT CREATE SESSION TO "AUSER";
GRANT CREATE SESSION TO "BAR";

CREATE PUBLIC DATABASE LINK dbl CONNECT TO "AUSER[BAR]" IDENTIFIED BY "a" using 'MYDB';
SELECT * FROM [email protected];

D
-
X

Y con:

CREATE USER "A-USER" IDENTIFIED BY "a";
CREATE USER foo IDENTIFIED BY "random-trash";
ALTER USER foo GRANT CONNECT THROUGH "A-USER";
GRANT CREATE SESSION TO "A-USER";
GRANT CREATE SESSION TO "FOO";

DROP PUBLIC DATABASE LINK dbl;
CREATE PUBLIC DATABASE LINK dbl CONNECT TO "A-USER[FOO]" IDENTIFIED BY "a" using 'MYDB';
SELECT * FROM [email protected];

D
-
X

Ninguno funciona en 11.2.0.4; con o sin el caracter especial da error:

select * from [email protected]
                   *
ERROR at line 1:
ORA-01017: invalid username/password; logon denied
ORA-02063: preceding line from DBL

Si está en 11.2.0.4 o superior, es posible que se encuentre con el error 19191702, que parece haber roto la capacidad de proxy a través de un enlace de base de datos. Consulte la nota MOS 19191702.8 para obtener más información. Sin embargo, esto parece ser un nuevo comportamiento intencional en lugar de un error, y el comportamiento anterior, donde funcionó, se describe como incorrecto.

Puede haber un parche disponible para permitir que se configure un evento específico que revierte el comportamiento (y supuestamente está disponible en 12.2), pero como "una solución provisional para permitir que las aplicaciones existentes, que dependen del [antiguo] comportamiento incorrecto, continúen trabajar". Si no hay un parche para su plataforma y versión, o el evento no ayuda, deberá realizar una solicitud de servicio; puede valer la pena criar uno de todos modos, por supuesto.