Dit zou moeten werken, met of zonder de speciale tekens; dit is in 11.2.0.3, eerst zonder:
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
En met:
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
Geen van beide werkt op 11.2.0.4; met of zonder het speciale teken it errors:
select * from [email protected]
*
ERROR at line 1:
ORA-01017: invalid username/password; logon denied
ORA-02063: preceding line from DBL
Als je op 11.2.0.4 of hoger zit, heb je mogelijk te maken met bug 19191702, die de proxy-mogelijkheid lijkt te hebben verbroken via een databaselink. Zie MOS-notitie 19191702.8 voor meer informatie. Dit lijkt echter opzettelijk nieuw gedrag te zijn in plaats van een bug, en het oude gedrag - waar dit werkte - wordt beschreven als onjuist.
Er is mogelijk een patch beschikbaar waarmee een specifieke gebeurtenis kan worden ingesteld die het gedrag terugdraait (en het is zogenaamd beschikbaar in 12.2), maar als "een tijdelijke oplossing om bestaande applicaties, afhankelijk van het [oude] onjuiste gedrag, door te laten gaan met werk". Als er geen patch voor je platform en versie is of als de gebeurtenis niet helpt, moet je een serviceverzoek indienen; het kan natuurlijk de moeite waard zijn om er een te verhogen.