В настоящее время я пытаюсь выполнить репликацию с несколькими мастерами в Oracle Database 11g между базой данных AR421 на моем хост-компьютере (Win10x64) и базой данных STUD421 на моем госте (виртуальная машина Win7x86), но я не могу заставить их общаться.
Я выключил брандмауэр; Я настроил свою виртуальную машину на использование гостевых разрешений и 2 сетевых адаптеров: 1 NAT и другой Host-only со статическим IP (чтобы я мог пинговать с хоста на гостя и наоборот); Я запустил все связанные с Oracle сервисы из Панели управления и установил их автоматически.
В Oracle SQLDeveloper я создал схему / пользователя для каждой базы данных, обе с именем ARip и обе с таблицей с именем STUDENT с 1 одинаковой строкой (внутри данных нет).
Следующий код был написан на SQLPlus:
* Хост и гость:
CREATE USER REPMM IDENTIFIED BY REPMM DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
EXEC DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA('REPMM');
EXEC DBMS_DEFER_SYS.REGISTER_PROPAGATOR('REPMM');
EXEC DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (USERNAME => 'REPMM', PRIVILEGE_TYPE => 'RECEIVER', LIST_OF_GNAMES => NULL);
* HOST:
CREATE PUBLIC DATABASE LINK STUD421 USING 'STUD';
CONN REPMM/REPMM
CREATE DATABASE LINK STUD421 CONNECT TO REPMM IDENTIFIED BY REPMM USING 'STUD';
* ГОСТЬ:
CREATE PUBLIC DATABASE LINK AR421 USING 'AR';
CONN REPMM/REPMM
CREATE DATABASE LINK AR421 CONNECT TO REPMM IDENTIFIED BY REPMM USING 'AR';
* HOST:
EXEC DBMS_REPCAT.CREATE_MASTER_REPGROUP('REPLICATION');
EXEC DBMS_REPCAT.CREATE_MASTER_REPOBJECT('ARip', 'STUDENT', 'TABLE', -
- GNAME=>'REPLICATION');
EXEC DBMS_REPCAT.ADD_MASTER_DATABASE (GNAME=> 'REPLICATION', MASTER=>'STUD421', USE_EXISTING_OBJECTS => TRUE,COPY_ROWS=> FALSE, PROPAGATION_MODE=> 'ASYNCHRONOUS');
В последней строке кода я обнаружил следующие ошибки:
ERROR at line 1:
ORA-04052: error occurred when looking up remote object REPMM.SYS@STUD421
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
Идентификаторы подключения присутствуют в файле с именем tnsnames.ora. Мой файл (на хосте) имеет следующее содержимое:
LISTENER_AR421 = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) )
AR421 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = AR421) ) )