Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle-Datenbanklink - Verbindung zum Proxy mit Sonderzeichen im Benutzernamen herstellen

Dies sollte funktionieren, mit oder ohne Sonderzeichen; das ist in 11.2.0.3, zunächst ohne:

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

Und mit:

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

Beides funktioniert nicht auf 11.2.0.4; mit oder ohne Sonderzeichen:

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

Wenn Sie 11.2.0.4 oder höher verwenden, treffen Sie möglicherweise auf den Fehler 19191702, der die Proxy-Funktion über einen Datenbanklink unterbrochen zu haben scheint. Weitere Informationen finden Sie im MOS-Hinweis 19191702.8. Dies scheint jedoch eher ein absichtliches neues Verhalten als ein Fehler zu sein, und das alte Verhalten - wo dies funktionierte - wird als falsch beschrieben.

Möglicherweise ist ein Patch verfügbar, mit dem ein bestimmtes Ereignis festgelegt werden kann, das das Verhalten umkehrt (und es ist angeblich in 12.2 verfügbar), aber als „eine Zwischenlösung, um bestehenden Anwendungen, die auf das [alte] falsche Verhalten angewiesen sind, weiterhin zu ermöglichen Arbeit". Wenn es keinen Patch für Ihre Plattform und Version gibt oder das Ereignis nicht hilft, müssen Sie eine Serviceanfrage stellen. es kann sich natürlich trotzdem lohnen, einen aufzuziehen.