Dette burde fungere, med eller uden specialtegn; dette er i 11.2.0.3, først uden:
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
Og med:
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
Ingen af dem virker på 11.2.0.4; med eller uden specialtegnet fejler det:
select * from [email protected]
*
ERROR at line 1:
ORA-01017: invalid username/password; logon denied
ORA-02063: preceding line from DBL
Hvis du er på 11.2.0.4 eller nyere, rammer du muligvis fejl 19191702, som ser ud til at have brudt proxy-kapaciteten gennem et databaselink. Se MOS-note 19191702.8 for mere information. Dette ser dog ud til at være bevidst ny adfærd snarere end en fejl, og den gamle adfærd - hvor dette virkede - bliver beskrevet som forkert.
Der kan være en patch tilgængelig for at tillade, at en specifik hændelse indstilles, som vender tilbage til adfærden (og den er angiveligt tilgængelig i 12.2), men som "en midlertidig løsning til at tillade eksisterende applikationer, afhængige af den [gamle] forkerte adfærd, at fortsætte med at arbejde". Hvis der ikke er en patch til din platform og version, eller hvis begivenheden ikke hjælper, bliver du nødt til at rejse en serviceanmodning; det kan selvfølgelig være værd at rejse en alligevel.