Oracle
 sql >> Base de données >  >> RDS >> Oracle

Lien de base de données Oracle - se connecter au proxy avec des caractères spéciaux dans le nom d'utilisateur

Cela devrait fonctionner, avec ou sans les caractères spéciaux; ceci est en 11.2.0.3, d'abord sans :

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

Et avec :

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

Aucun des deux ne fonctionne sur 11.2.0.4 ; avec ou sans le caractère spécial il se trompe :

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

Si vous utilisez la version 11.2.0.4 ou une version ultérieure, vous rencontrez peut-être le bogue 19191702, qui semble avoir interrompu la capacité de proxy via un lien de base de données. Voir la note MOS 19191702.8 pour plus d'informations. Cela semble cependant être un nouveau comportement intentionnel plutôt qu'un bogue, et l'ancien comportement - où cela fonctionnait - est décrit comme incorrect.

Il peut y avoir un correctif disponible pour permettre à un événement spécifique d'être défini qui annule le comportement (et il est censé être disponible dans 12.2), mais en tant que "solution provisoire pour permettre aux applications existantes, dépendantes de l'[ancien] comportement incorrect, de continuer à travailler". S'il n'y a pas de correctif pour votre plate-forme et votre version ou si l'événement ne vous aide pas, vous devrez émettre une demande de service ; cela peut valoir la peine d'en élever un de toute façon bien sûr.