To powinno działać, ze znakami specjalnymi lub bez; to jest w 11.2.0.3, najpierw bez:
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
Oraz z:
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
Żadna nie działa na 11.2.0.4; ze znakiem specjalnym lub bez niego błędy:
select * from [email protected]
*
ERROR at line 1:
ORA-01017: invalid username/password; logon denied
ORA-02063: preceding line from DBL
Jeśli korzystasz z wersji 11.2.0.4 lub nowszej, możesz trafić na błąd 19191702, który wydaje się zepsuć zdolność proxy przez łącze do bazy danych. Aby uzyskać więcej informacji, zobacz notę MOS 19191702.8. Wydaje się to być celowym nowym zachowaniem, a nie błędem, a stare zachowanie – tam, gdzie to zadziałało – jest określane jako nieprawidłowe.
Dostępna może być poprawka umożliwiająca ustawienie określonego zdarzenia, które przywraca zachowanie (i jest podobno dostępna w 12.2), ale jako „tymczasowe rozwiązanie umożliwiające istniejącym aplikacjom, zależnym od [starego] nieprawidłowego zachowania, kontynuowanie praca". Jeśli nie ma łatki dla twojej platformy i wersji lub zdarzenie nie pomaga, musisz zgłosić żądanie serwisowe; może i tak warto go podnieść.