Questo dovrebbe funzionare, con o senza i caratteri speciali; questo è in 11.2.0.3, prima senza:
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
E con:
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
Nessuno dei due funziona su 11.2.0.4; con o senza il carattere speciale è un errore:
select * from [email protected]
*
ERROR at line 1:
ORA-01017: invalid username/password; logon denied
ORA-02063: preceding line from DBL
Se sei su 11.2.0.4 o versioni successive, potresti riscontrare il bug 19191702, che sembra aver interrotto la capacità del proxy tramite un collegamento al database. Vedere la nota MOS 19191702.8 per ulteriori informazioni. Questo sembra essere un nuovo comportamento intenzionale piuttosto che un bug, e il vecchio comportamento, dove funzionava, viene descritto come errato.
Potrebbe essere disponibile una patch per consentire l'impostazione di un evento specifico che ripristina il comportamento (ed è presumibilmente disponibile in 12.2), ma come "una soluzione provvisoria per consentire alle applicazioni esistenti, basate sul [vecchio] comportamento errato, di continuare a opera". Se non c'è una patch per la tua piattaforma e versione o l'evento non aiuta, dovrai presentare una richiesta di servizio; può valere comunque la pena di allevarne uno.