Isso deve funcionar, com ou sem os caracteres especiais; isso está em 11.2.0.3, primeiro sem:
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 com:
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
Nenhum funciona em 11.2.0.4; com ou sem o caractere especial é um erro:
select * from [email protected]
*
ERROR at line 1:
ORA-01017: invalid username/password; logon denied
ORA-02063: preceding line from DBL
Se você estiver na versão 11.2.0.4 ou superior, poderá estar encontrando o bug 19191702, que parece ter quebrado o recurso de proxy por meio de um link de banco de dados. Consulte a nota MOS 19191702.8 para obter mais informações. Isso parece ser um novo comportamento intencional em vez de um bug, e o comportamento antigo - onde isso funcionou - está sendo descrito como incorreto.
Pode haver um patch disponível para permitir que um evento específico seja definido que reverta o comportamento (e está supostamente disponível em 12.2), mas como "uma solução provisória para permitir que aplicativos existentes, dependentes do comportamento incorreto [antigo], continuem a trabalhar". Se não houver um patch para sua plataforma e versão ou o evento não ajudar, você precisará enviar uma solicitação de serviço; pode valer a pena criar um de qualquer maneira, é claro.