Процедура ADD_MASTER_DATABASE изменяет имя пользователя для входа в систему tns

#oracle #sqlplus #tnsnames #multi-master-replication

#Oracle #sqlplus #tnsnames #репликация с несколькими мастерами

Вопрос:

Я пытаюсь настроить multi master два сервера (orclsrc и orcltgt) на Oracle 11G (да, я знаю, что он старый, но это то, что мы имеем здесь), следуя этому руководству.

Когда я пытаюсь сделать:

 EXEC DBMS_REPCAT.ADD_MASTER_DATABASE (GNAME=> 'REP2', MASTER=>'ORCLTGT',USE_EXISTING_OBJECTS => TRUE,COPY_ROWS=> FALSE, PROPAGATION_MODE=> 'ASYNCHRONOUS');
  

Я получил эту ошибку:

 ERROR at line 1:
ORA-04052: error occurred when looking up remote object REPADMIN.SYS@ORCLTGT
ORA-00604: error occurred at recursive SQL level 2
ORA-12154: TNS:could not resolve the connect identifier specified
ORA-06512: at "SYS.DBMS_REPCAT_UTL", line 4280
ORA-06512: at "SYS.DBMS_REPCAT_MAS", line 2158
ORA-06512: at "SYS.DBMS_REPCAT", line 146
ORA-06512: at line 1
  

AFAIK, у меня правильная конфигурация TNS, потому что tnsping работает нормально в обоих направлениях.

Таким образом, проблема заключается в том, что при выполнении предыдущего действия входа в систему команда добавляет или объединяет «.sys» с моим именем пользователя ( repadmin.sys вместо repadmin ).

Как я могу избежать такого поведения?

PS: есть ли другой лучший вариант для multimaster ?

Комментарии:

1. Похоже, ошибка связана с @ORCLTGT частью, а не с .sys частью. TNS ping работает с вашего клиентского компьютера или с серверов БД? Псевдоним TNS должен быть в том tnsnames.ora , который Oracle использует внутренне с сервера — так он там? Возможно, вам понадобятся оба псевдонима, определенные на обоих серверах.

2. @AlexPoole мои рабочие tnsping находятся в orclsrc и orcltgt и tnsping друг друга, поэтому они находятся на самих серверных машинах. Из вашего комментария, возможно, имеет значение, что говорят оба Used parameter files: /some/path/sqlnet.ora tnsping, так что, может быть, у меня отсутствует tnsnames.ora файл?

3. Это не сработало бы без tnsnames.ora . Но есть ли у вас TNS_ADMIN, установленный в вашем сеансе, на /some/path , которого нет в ORACLE_HOME? Я полагаю, что база данных может не использовать тот же файл, что и вы.

4. @AlexPoole (i), да, /some/path находится под ORACLE_HOME , на самом деле это так $ORACLE_HOME/network/admin . (ii) TNS_ADMIN не установлен для обоих src o tgt (возможно, это моя проблема). (iii) Я понял, что у меня есть tnsnames.ora файл в той же папке, что sqlnet.ora и .