지금 지원 담당자와 채팅
지원 담당자와 채팅

SharePlex 11.4 - 설치 및 설정 안내서

이 안내서 정보 이 안내서에 사용된 규칙 Oracle 소스에 SharePlex 설치 및 설정
Oracle용 SharePlex 사전 설치 체크리스트 SharePlex 설치 프로그램 다운로드 Linux 및 UNIX에 SharePlex 설치 복제를 위한 Oracle 환경 설정 Oracle에서 다른 타겟 유형으로의 복제 설정 Oracle용 클라우드 호스팅 데이터베이스 설치 및 설정 원격 캡처 설치 및 설정 HA 클러스터 설치 및 설정 Oracle용 일반 SharePlex 데모 Oracle용 고급 SharePlex 데모 데이터베이스 설정 유틸리티 Oracle 설치 문제 해결
PostgreSQL 데이터베이스를 소스 및 서비스로 사용하여 SharePlex 설치 및 설정
PostgreSQL용 SharePlex 사전 설치 체크리스트 PostgreSQL용 SharePlex 설치 프로그램 다운로드 PostgreSQL용 Linux에 소스로 SharePlex 설치 PostgreSQL에서 지원되는 타겟 유형으로의 복제 설정 PostgreSQL용 클라우드 호스팅 데이터베이스 설치 및 설정 PostgreSQL용 원격 캡처 설치 및 설정 PostgreSQL 고가용성 클러스터에 SharePlex 설치 논리적 복제를 사용하여 고가용성을 갖춘 PostgreSQL Azure Flexible Server에서 SharePlex 구성 PostgreSQL용 일반 SharePlex 데모 PostgreSQL용 고급 SharePlex 데모 Database Setup for PostgreSQL Database Setup for PGDB as a Service pg_hint_plan 확장 설치 PostgreSQL 설치 문제 해결
Docker 컨테이너에 SharePlex 설치 SharePlex 사용자를 보안 그룹에 할당 설치 문제 해결 SharePlex 제거 고급 설치 프로그램 옵션 SharePlex를 루트로 설치 SharePlex가 설치한 항목

충돌 해결 데모 - PostgreSQL-PostgreSQL

충돌 해결 데모 - PostgreSQL-PostgreSQL

사전 요구 사항:

  • 계속하려면 먼저 SharePlex 데모 객체가 설치되어 있는지 확인하십시오. 데모를 위한 사전 작업을 참조하십시오.

  • 활성화하기 전에 SP_OPX_CREATE_ORIGIN_PG를 1로 설정합니다. PostgreSQL-Oracle 복제의 경우 PostgreSQL 피어에 설정하고 PostgreSQL-PostgreSQL 복제의 경우 두 피어 모두에 설정합니다.

이 데모에서는 SharePlex를 구성하여 일반적인 충돌 해결 프로시저를 사용해 복제 충돌을 해결합니다. 일반적인 충돌 해결을 사용하면 하나의 PL/SQL 프로시저를 사용하여 여러 테이블의 충돌을 해결할 수 있습니다.

다음과 같은 충돌 해결 전략이 시연됩니다.

  • 신뢰할 수 있는 소스 우선순위 – 다음 단계에서는 하나의 시스템을 충돌 발생 시 우선하는 "신뢰할 수 있는" 소스로 정의합니다. 이 데모는 INSERT를 기반으로 합니다. 신뢰할 수 있는 소스에서 시작된 모든 INSERT는 다른 시스템의 INSERT를 재정의합니다. 이 데모에서 신뢰할 수 있는 소스는 peer1이고 다른 시스템은 peer2입니다.
  • 타임스탬프 우선순위 – 이 데모는 UPDATE를 기반으로 합니다. 충돌이 있는 경우 마지막으로 업데이트된 행이 우선합니다.

중요! 피어-투-피어 복제가 모든 비즈니스 애플리케이션과 호환되지는 않습니다. 사용 환경에 적합한 경우 일반적으로 이 데모의 프로시저보다 더 복잡한 사용자 지정 충돌 해결 프로시저 생성을 비롯하여 신중한 분석 및 실행이 필요합니다. 이 데모를 프로덕션 피어-투-피어 배포의 기초로 사용하지 마십시오. 피어-투-피어 복제에 대한 자세한 내용은 SharePlex 관리 안내서를 참조하십시오.

데모를 위한 사전 작업

데모를 시작하기 전에 아래 설명에 따라 데모 객체를 설치합니다.

참고: 스크립트를 실행하려면 복제에 포함된 테이블에 대해 Replica Identity를 Full로 설정합니다.

데모 객체 설치

pg_p2p.sqlpg_od.sql 스크립트는 이러한 데모 중에 사용할 데모 객체를 설치합니다. 이러한 스크립트는 SharePlex product 디렉토리의 util 하위 디렉토리에 저장됩니다.

스크립트를 실행하려면 다음을 수행합니다.

  • pg_od.sql을 먼저 실행한 다음, pg_p2p.sql을 실행합니다.
  • 데모에 사용할 소스 및 타겟 시스템에서 스크립트를 실행합니다.
  • DBA 역할이 있는 기존 사용자로 PSQL에서 실행합니다.

참고: 데모 객체를 설치해야 하는 스키마에 대한 스크립트 프롬프트가 나타납니다. 또한 pg_p2p.sql은 신뢰할 수 있는 정확한 데이터 소스가 될 시스템의 이름을 묻는 메시지를 표시합니다.

데모 객체 설명

od_employee

이름

Null인지 여부

유형

emp_no not null int
emp_first_name   varchar(20)
emp_last_name   varchar(20)
emp_dob   date
emp_dept_no   int
emp_timestamp   date

exc_table

이름

Null인지 여부

유형

exc_no not null int
exc_type   varchar(6)
exc_target_table   varchar(66)
exc_fixed   varchar(3)
exc_info   varchar(500)
exc_timestamp   date

exc_source

이름

유형

pri_system varchar

참고: 이러한 테이블 외에도 이 데모에 속하지 않는 다른 데모 객체도 생성됩니다.

객체 준비

참고: 이 데모에서는 데모 객체가 demo라는 스키마에 있다고 가정합니다. 이와 다른 경우 실제 스키마로 대체합니다.

두 시스템 모두에서(두 데이터베이스 모두에 대해) 다음 단계를 수행합니다.

  1. sp_ctrl을 실행합니다.
  2. SharePlex를 종료합니다.

    sp_ctrl(peer1)>shutdown

  3. pg_cleansp 유틸리티를 실행합니다. 그러면 이전 데모에서 큐가 제거되고 이전 구성이 비활성화됩니다.
  4. od_employee 테이블에 대해 TRUNCATE를 수행합니다.
  5. SharePlex 데모 객체를 소유한 사용자로 PSQL에 로그인합니다.
  6. SharePlex product 디렉토리의 util 하위 디렉토리에서 pg_p2p.sql 스크립트를 실행합니다. 그러면 od_employee_gen 데모 충돌 해결 루틴이 설치됩니다. 다음 사항을 안내하는 메시지가 표시됩니다.

    • 프로시저에 대한 스키마
    • 정확한 데이터의 신뢰할 수 있는 소스가 될 시스템의 이름(pri_system)입니다. 프로덕션 배포에서와 마찬가지로 충돌 발생 시에는 신뢰할 수 있는 소스의 작업이 우선적으로 적용됩니다. 이 데모에서는 이 시스템을 Peer1이라고 합니다. 이 데모에서는 또 다른 시스템을 Peer2라고 합니다.
  7. od_employee 테이블에 대해 Replica IdentityFull로 설정합니다.

SharePlex 구성

SharePlex를 구성하려면 다음 단계를 수행합니다.

  1. 각 시스템에서 텍스트 편집기의 conflict_resolution.database 파일을 엽니다. 이 파일은 SharePlex variable-data 디렉토리의 data 하위 디렉토리에 있습니다.

    참고: Post는 복제 충돌이 있을 때 이 파일을 확인하여 호출할 해결 프로시저가 있는지 확인합니다.

  2. 각 시스템에서 conflict_resolution.database 파일에 다음 항목을 생성합니다. 몇 개 이상의 공백이나 한 개의 탭 문자로 각 컬럼을 구분합니다.

    demo.od_employee IUD demo.od_employee_gen

    참고: 첫 번째 구성 요소는 테이블이고, 두 번째 구성 요소는 해당 테이블에 충돌이 있는 경우 해결 루틴이 호출될 작업 유형을 지정하며, 세 번째 구성 요소는 사용될 해결 루틴의 이름입니다.

  3. 각 시스템에서 sp_cop을 시작합니다.
  4. 각 시스템에서 sp_ctrl을 시작합니다.
  5. peer1(신뢰할 수 있는 소스)에서 od_employee 테이블을 peer2od_employee 테이블에 복제하는 od_peer1이라는 구성 파일을 생성합니다.

    sp_ctrl(peer1)> create config od_peer1

    demo.od_employee demo.od_employee peer2@r.database
  6. peer2(보조 소스)에서 od_employee 테이블을 peer2od_employee 테이블에 복제하는 od_peer1이라는 구성 파일을 생성합니다.

    sp_ctrl(peer2)> create config od_peer2

    demo.od_employee demo.od_employee peer1@r.database

복제 활성화 및 시작

복제를 활성화 및 시작하려면 다음 단계를 수행합니다.

  1. peer1에서 od_peer1 구성을 활성화합니다.

    sp_ctrl(peer1)> activate od_peer1
  2. peer2에서 od_peer2 구성을 활성화합니다.

    sp_ctrl(peer2)> activate od_peer2
  3. 각 시스템에서 구성이 성공적으로 활성화되었는지 확인합니다. od_peer1 또는 od_peer2라는 이름(시스템에 따라 다름)이 File Name 아래에 나타나고 Active라는 단어가 State 아래에 나타나야 합니다.

    sp_ctrl (source)>list config

신뢰할 수 있는 소스 우선 시연

이 데모에서는 peer1에서 시작된 INSERT가 peer2에서 복제된 충돌하는 INSERT를 재정의합니다.

  1. 두 시스템에서 Export 프로세스를 중지합니다.
  2. 두 시스템에서 demo(데모 객체의 소유자)로 PSQL에 로그인합니다.
  3. peer2에서 od_employee에 행을 삽입합니다.

    insert into od_employee values(1, 'John', 'Doe', '1949-04-01', 1, '2022-01-01');

  4. Peer1에서 동일한 행(동일한 값)을 삽입합니다.

    insert into od_employee values(1, 'John', 'Doe', '1949-04-01', 1, '2022-01-01');

  5. 두 시스템에서 Export 프로세스를 재시작합니다.
  6. 이 작업은 충돌을 생성해야 하며 Post는 conflict_resolution.database 파일의 지침을 기반으로 자동으로 해결합니다.
  7. 두 시스템에서 demo.exc_table을 보고 충돌이 해결되었는지 확인합니다. 충돌 해결 결과 보기를 참조하십시오.

타임스탬프 우선순위 시연

이 데모에서는 UPDATE 문에 충돌이 발생할 때마다 emp timestamp 컬럼의 최신 값이 있는 행이 우선순위를 갖습니다.

참고: 타임스탬프 우선순위가 작동하려면 EMP_TIMESTAMP 필드를 다른 컬럼과 함께 null이 아닌 값으로 수정해야 합니다. UPDATE 문의 타임스탬프 컬럼이 업데이트되지 않거나 null 값으로 수정되는 경우 저장된 프로시저가 충돌을 해결할 수 없습니다. 그러면 동기화 중단 문제가 나타납니다.

  1. 두 시스템에서 Export 프로세스를 중지합니다.
  2. 두 시스템에서 demo(데모 객체의 소유자)로 PSQL에 로그인합니다.
  3. peer1에서 od_employee 테이블의 emp_first_name EMP_TIMESTAMP 컬럼을 다음과 같이 업데이트합니다.
    update od_employee set emp_first_name = 'James', emp_timestamp = '2022-07-01' where emp_no = 1;
  4. peer2에서 다른 업데이트 값을 사용하지만 동일한 키 값을 사용하여 동일한 컬럼을 업데이트합니다.
    update od_employee set emp_first_name = 'Harry', emp_timestamp = '2022-08-02' where emp_no = 1;
  5. 두 시스템에서 Export 프로세스를 재시작합니다.
  6. 두 시스템에서 업데이트한 행을 선택하여 가장 최근의 emp_ timestamp 값이 포함되어 있는지 확인합니다.
  7. 두 시스템에서 demo.exc_table을 보고 충돌이 해결되었는지 확인합니다. 충돌 해결 결과 보기를 참조하십시오.

충돌 해결 없음 데모

이 데모에서는 DELETE 문이 충돌을 생성하는 경우 무시됩니다.

  1. 두 시스템에서 Export 프로세스를 중지합니다.
  2. 두 시스템에서 demo(데모 객체의 소유자)로 PSQL에 로그인합니다.
  3. Peer1에서 다음과 같이 행을 삭제합니다.
    delete from od_employee where emp_no = 1;
  4. Peer2에서 동일한 행을 삭제합니다.
    delete from od_employee where emp_no = 1;
  5. 두 시스템에서 Export 프로세스를 재시작합니다.
  6. 두 시스템에서 demo.exc_table을 보고 충돌이 해결되지 않았는지 확인합니다. 충돌 해결 결과 보기를 참조하십시오.

충돌 해결 결과 보기

데모 객체를 설치할 때 지정한 스키마에 ex_table이라는 테이블이 설치되었습니다. PSQL을 통해 이를 확인하여 각 충돌에 대한 정보를 볼 수 있습니다. 다음은 테이블 설명입니다.

컬럼 설명
EXC_NO 충돌의 예외 번호입니다.
EXC_TYPE INSERT, UPDATE 또는 DELETE 등 SQL 문의 유형입니다.
EXC_TARGET_TABLE 충돌이 발생한 테이블입니다.
EXC_FIXED

충돌 해결 루틴의 결과입니다. YES는 루틴이 성공했음을 의미합니다. NO는 루틴이 실패했으며 행을 올바른 값으로 수동으로 변경해야 함을 의미합니다.

EXC_INFO 충돌의 원인입니다.
EXC_TIMESTAMP 이 시스템에서 충돌이 발생한 시간입니다.

충돌 해결 데모 - PostgreSQL-Oracle

충돌 해결 데모 - PostgreSQL-Oracle

사전 요구 사항: 계속하려면 먼저 SharePlex 데모 객체가 설치되어 있는지 확인하십시오. 데모를 위한 사전 작업을 참조하십시오.

이 데모에서는 SharePlex를 구성하여 일반적인 충돌 해결 프로시저를 사용해 복제 충돌을 해결합니다. 일반적인 충돌 해결을 사용하면 하나의 PL/SQL 프로시저를 사용하여 여러 테이블의 충돌을 해결할 수 있습니다.

다음과 같은 충돌 해결 전략이 시연됩니다.

  • 신뢰할 수 있는 소스 우선순위 – 다음 단계에서는 하나의 시스템을 충돌 발생 시 우선하는 "신뢰할 수 있는" 소스로 정의합니다. 이 데모는 INSERT를 기반으로 합니다. 신뢰할 수 있는 소스에서 시작된 모든 INSERT는 다른 시스템의 INSERT를 재정의합니다. 이 데모에서 신뢰할 수 있는 소스는 peer1(예: PostgreSQL)이고 다른 시스템은 peer2(예: Oracle)입니다.
  • 타임스탬프 우선순위 – 이 데모는 UPDATE를 기반으로 합니다. 충돌이 있는 경우 마지막으로 업데이트된 행이 우선합니다.

중요! 피어-투-피어 복제가 모든 비즈니스 애플리케이션과 호환되지는 않습니다. 사용 환경에 적합한 경우 일반적으로 이 데모의 프로시저보다 더 복잡한 사용자 지정 충돌 해결 프로시저 생성을 비롯하여 신중한 분석 및 실행이 필요합니다. 이 데모를 프로덕션 피어-투-피어 배포의 기초로 사용하지 마십시오. 피어-투-피어 복제에 대한 자세한 내용은 SharePlex 관리 안내서를 참조하십시오.

데모를 위한 사전 작업

데모를 시작하기 전에 아래 설명에 따라 데모 객체를 설치합니다.

참고: 아래 사전 작업은 Oracle 피어에만 적용됩니다. PostgreSQL 피어 사전 작업에 대한 자세한 내용은 데모 사전 작업 - PostgreSQL을 참조하십시오.

데모 객체 설치

p2p.sqlod.sql 스크립트는 이러한 데모 중에 사용할 데모 객체를 설치합니다. 이러한 스크립트는 SharePlex product 디렉토리의 util 하위 디렉토리에 저장됩니다.

스크립트를 실행하려면 다음을 수행합니다.

  • od.sql을 먼저 실행한 다음, p2p.sql을 실행합니다.
  • 데모에 사용할 소스 및 타겟 시스템에서 스크립트를 실행합니다.
  • DBA 역할과 SELECT ANY TABLE 권한이 있는 기존 사용자로 SQL*Plus에서 해당 스크립트를 실행합니다.

스크립트는 다음 항목에 대한 프롬프트를 표시합니다.

  • 데모 객체를 설치할 스키마
  • 데모 객체의 테이블스페이스
  • SharePlex 이전 버전의 오래된 데모 객체를 제거할지 여부. 이전 객체를 제거하려면 해당 스키마의 이름을 제공합니다.
데모 객체 설명

od_employee

이름

Null인지 여부

유형

EMP_NO NOT NULL NUMBER
EMP_FIRST_NAME   VARCHAR2
EMP_LAST_NAME   VARCHAR2
EMP_DOB   DATE
EMP_DEPT_NO   NUMBER
EMP_TIMESTAMP   DATE

od_timesheet

이름

Null인지 여부

유형

TS_EMP_NO   NUMBER
TS_IN_TIME   date
TS_OUT_TIME   DATE
TS_MOD_TIME   DATE

od_department

이름

Null인지 여부

유형

DEPT_NO NOT NULL NUMBER
DEPT_NAME   VARCHAR2
DEPT_CODE   VARCHAR2

od_salary

이름

Null인지 여부

유형

SALE_EMP_NO   NUMBER
SAL_VALUE   NUMBER
SAL_CHANGED   DATE

od_sales_emp_data

이름

Null인지 여부

유형

EMP_NO_KEY NOT NULL NUMBER
EMPLOYEE_NAME   VARCHAR2(70)
SALARY   NUMBER
DEPARTMENT   VARCHAR2(50)

oxc_table

이름

Null인지 여부

유형

EXC_NO NOT NULL NUMBER
EXC_TYPE   VARCHAR2(6)
EXC_TARGET_TABLE   VARCHAR2(66)
EXC_FIXED   VARCHAR2(3)
EXC_INFO   VARCHAR2(500)
EXC_TIMESTAMP   DATE

객체 준비

참고: 이 데모에서는 데모 객체가 demo라는 스키마에 있다고 가정합니다. 이와 다른 경우 실제 스키마로 대체합니다.

다음 단계에서는 Oracle 피어에 대한 데모 객체를 준비하는 방법에 대한 정보를 제공합니다. PostgreSQL 피어의 데모 객체를 준비하는 방법에 대한 자세한 내용은 객체 준비를 참조하십시오.

Oracle 피어에서 다음 단계를 수행합니다.

  1. sp_ctrl을 실행합니다.
  2. SharePlex를 종료합니다.

    sp_ctrl(peer1)>shutdown

  3. ora_cleansp 유틸리티를 실행합니다. 그러면 이전 데모에서 큐가 제거되고 이전 구성이 비활성화됩니다.
  4. od_employee 테이블에 대해 TRUNCATE를 수행합니다.
  5. 데모 객체를 소유한 사용자에게 sp_cr 패키지를 실행할 수 있는 시스템 권한을 부여합니다. 이 패키지는 SharePlex가 처음 설치되었을 때 SharePlex 스키마에 설치되었습니다.

    SQL>grant execute on sp_cr to user_name

  6. SharePlex 데모 객체를 소유한 사용자로 SQL*Plus에 로그인합니다.
  7. SharePlex product 디렉토리의 util 하위 디렉토리에서 p2p.sql 스크립트를 실행합니다. 그러면 od_employee_gen 데모 충돌 해결 루틴이 설치됩니다. 다음 사항을 안내하는 메시지가 표시됩니다.

    • 프로시저에 대한 스키마 및 테이블스페이스
    • SharePlex 데이터베이스 사용자의 이름

    • 정확한 데이터의 신뢰할 수 있는 소스가 될 시스템의 이름. 프로덕션 배포에서와 마찬가지로 충돌 발생 시에는 신뢰할 수 있는 소스의 작업이 우선적으로 적용됩니다. 이 데모에서는 이 시스템을 Peer1이라고 합니다. 이 데모에서는 또 다른 시스템을 Peer2라고 합니다.

SharePlex 구성

SharePlex를 구성하려면 다음 단계를 수행합니다.

참고: 이 구성에서 Peer1은 Postgresql 데이터베이스이고 Peer2는 Oracle 데이터베이스입니다. Oracle의 conflict_solution 파일 이름은 conflict_solution.sid이고 PostgreSQL의 경우 conflict_solution.database입니다.

  1. 각 시스템에서 텍스트 편집기의 conflict_solution 파일을 엽니다. 이 파일은 SharePlex variable-data 디렉토리의 data 하위 디렉토리에 있습니다.

    참고: Post는 복제 충돌이 있을 때 이 파일을 확인하여 호출할 해결 프로시저가 있는지 확인합니다.

  2. 각 시스템에서 conflict_resolution 파일에 다음 항목을 생성합니다. 몇 개 이상의 공백이나 한 개의 탭 문자로 각 컬럼을 구분합니다.

    demo.od_employee IUD demo.od_employee_gen

    참고: 첫 번째 구성 요소는 테이블이고, 두 번째 구성 요소는 해당 테이블에 충돌이 있는 경우 해결 루틴이 호출될 작업 유형을 지정하며, 세 번째 구성 요소는 사용될 해결 루틴의 이름입니다.

  3. 각 시스템에서 sp_cop을 시작합니다.
  4. 각 시스템에서 sp_ctrl을 시작합니다.
  5. peer1(신뢰할 수 있는 소스)에서 od_employee 테이블을 peer2od_employee 테이블에 복제하는 od_peer1이라는 구성 파일을 생성합니다.

    sp_ctrl(peer1)> create config od_peer1

    datasource:r.dbname    
    "demo"."od_employee" ("emp_no", "emp_first_name", "emp_last_name", "emp_dob", "emp_dept_no", "emp_timestamp") "DEMO"."OD_EMPLOYEE" ("EMP_NO", "EMP_FIRST_NAME", "EMP_LAST_NAME", "EMP_DOB", "EMP_DEPT_NO", "EMP_TIMESTAMP") peer2@o.sid

     

  6. peer2(보조 소스)에서 od_employee 테이블을 peer2od_employee 테이블에 복제하는 od_peer1이라는 구성 파일을 생성합니다.

    sp_ctrl(peer2)> create config od_peer2

    datasource:o.sid    
    "DEMO"."OD_EMPLOYEE" ("EMP_NO", "EMP_FIRST_NAME", "EMP_LAST_NAME", "EMP_DOB", "EMP_DEPT_NO", "EMP_TIMESTAMP") "demo"."od_employee" ("emp_no", "emp_first_name", "emp_last_name", "emp_dob", "emp_dept_no", "emp_timestamp") peer2@r.dbname

     

참고: 위의 예에서는 두 테이블(소스 및 타겟) 모두 대소문자 구분이 다르기 때문에 컬럼 매핑 기능이 사용되었습니다.

  1. peer2의 SP_OPO_SUPPRESSED_OOS 매개변수를 0으로 설정합니다.

복제 활성화 및 시작

복제를 활성화 및 시작하려면 다음 단계를 수행합니다.

  1. peer1에서 od_peer1 구성을 활성화합니다.

    sp_ctrl(peer1)> activate od_peer1
  2. peer2에서 od_peer2 구성을 활성화합니다.

    sp_ctrl(peer2)> activate od_peer2
  3. 각 시스템에서 구성이 성공적으로 활성화되었는지 확인합니다. od_peer1 또는 od_peer2라는 이름(시스템에 따라 다름)이 File Name 아래에 나타나고 Active라는 단어가 State 아래에 나타나야 합니다.

    sp_ctrl (source)>list config

신뢰할 수 있는 소스 우선 시연

이 데모에서는 peer1에서 시작된 INSERT가 peer2에서 복제된 충돌하는 INSERT를 재정의합니다.

  1. 두 시스템에서 Export 프로세스를 중지합니다.
  2. 두 시스템에서 demo(데모 객체의 소유자)로 데이터베이스에 로그인합니다.
  3. peer1에서 od_employee에 행을 삽입합니다.

    insert into od_employee values(1, 'John', 'Doe', '1949-04-01', 1, '2022-01-01');

  4. Peer2에서 동일한 행(동일한 값)을 삽입합니다.

    INSERT INTO OD_EMPLOYEE VALUES (1,'John','Doe',to_date ('04/01/1949','MM/DD/RRRR'),1,to_date('01/01/2022','MM/DD/RRRR'));

  5. 두 시스템에서 Export 프로세스를 재시작합니다.
  6. 이 작업은 충돌을 생성해야 하며 Post는 conflict_resolution 파일의 지침을 기반으로 자동으로 해결합니다.
  7. 두 시스템에서 demo.exc_table을 보고 충돌이 해결되었는지 확인합니다. 충돌 해결 결과 보기를 참조하십시오.

타임스탬프 우선순위 시연

이 데모에서는 UPDATE 문에 충돌이 발생할 때마다 emp_timestamp 컬럼의 최신 값이 있는 행이 우선순위를 갖습니다.

참고: 타임스탬프 우선순위가 작동하려면 EMP_TIMESTAMP 필드를 다른 컬럼과 함께 null이 아닌 값으로 수정해야 합니다. UPDATE 문의 타임스탬프 컬럼이 업데이트되지 않거나 null 값으로 수정되는 경우 저장된 프로시저가 충돌을 해결할 수 없습니다. 그러면 동기화 중단 문제가 나타납니다.

  1. 두 시스템에서 Export 프로세스를 중지합니다.
  2. 두 시스템에서 demo(데모 객체의 소유자)로 데이터베이스에 로그인합니다.
  3. peer1에서 od_employee 테이블의 emp_first_nameemp_timestamp 컬럼을 다음과 같이 업데이트합니다.
    update od_employee set emp_first_name = 'James', emp_timestamp = '2022-07-01' where emp_no = 1;
  4. Peer2에서 다른 업데이트 값과 동일한 키 값을 사용하여 동일한 컬럼에 UPDATE를 수행합니다.
    UPDATE OD_EMPLOYEE SET EMP_FIRST_NAME = 'Harry', EMP_TIMESTAMP = to_date('02/02/2017','MM/DD/RRRR') WHERE EMP_NO = 1;
  5. 두 시스템에서 Export 프로세스를 재시작합니다.
  6. 두 시스템에서 업데이트한 행을 선택하여 가장 최근의 emp_ timestamp 값이 포함되어 있는지 확인합니다.
  7. 두 시스템에서 demo.exc_table을 보고 충돌이 해결되었는지 확인합니다. 충돌 해결 결과 보기를 참조하십시오.

충돌 해결 없음 데모

이 데모에서는 DELETE 문이 충돌을 생성하는 경우 무시됩니다.

  1. 두 시스템에서 Export 프로세스를 중지합니다.
  2. 두 시스템에서 demo(데모 객체의 소유자)로 데이터베이스에 로그인합니다.
  3. Peer1에서 다음과 같이 행을 삭제합니다.
    delete from od_employee where emp_no = 1;
  4. Peer2에서 동일한 행을 삭제합니다.
    DELETE FROM OD_EMPLOYEE WHERE EMP_NO = 1;
  5. 두 시스템에서 Export 프로세스를 재시작합니다.
  6. 두 시스템에서 demo.exc_table을 보고 충돌이 해결되지 않았는지 확인합니다. 충돌 해결 결과 보기를 참조하십시오.

충돌 해결 결과 보기

데모 객체를 설치할 때 지정한 스키마에 ex_table이라는 테이블이 설치되었습니다. PostgreSQL용 PSQL과 Oracle용 SQLPLUS를 통해 이를 확인하여 각 충돌에 대한 정보를 볼 수 있습니다. 다음은 테이블 설명입니다.

컬럼 설명
EXC_NO 충돌의 예외 번호입니다.
EXC_TYPE INSERT, UPDATE 또는 DELETE 등 SQL 문의 유형입니다.
EXC_TARGET_TABLE 충돌이 발생한 테이블입니다.
EXC_FIXED

충돌 해결 루틴의 결과입니다. YES는 루틴이 성공했음을 의미합니다. NO는 루틴이 실패했으며 행을 올바른 값으로 수동으로 변경해야 함을 의미합니다.

EXC_INFO 충돌의 원인입니다.
EXC_TIMESTAMP 이 시스템에서 충돌이 발생한 시간입니다.

 

PostgreSQL-PostgreSQL 복제를 위한 샘플 구성

SharePlex는 수행할 작업을 SharePlex에 지시하는 사용자 정의 사양인 "구성"에서 복제 지침을 가져옵니다. 복제할 각 객체 그룹에 대해 구성 파일을 만듭니다.

구성은 소스 시스템에 있으며 다음을 정의합니다.

  • 데이터 소스(소스 데이터베이스) — 소스 데이터베이스의 식별자입니다.
  • 소스 객체 — 복제할 데이터가 포함된 소스 데이터베이스 내의 객체 이름입니다. 데이터베이스 내의 테이블 중 일부 또는 전부를 복제할 수 있습니다.
  • 타겟 객체 — 복제된 데이터를 수신할 타겟 시스템의 데이터베이스에 있는 객체의 이름입니다.
  • 라우팅 맵 — 타겟 시스템의 이름 및 타겟이 데이터베이스인 경우 해당 식별자입니다.

데모 구성을 생성하려면 다음을 수행합니다.

  1. 소스 시스템의 sp_ctrl에서 create config 명령을 실행하여 Sample_config라는 복제 구성을 생성합니다. 복제 구성을 생성하면 기본 텍스트 편집기가 열립니다(Linux 시스템의 경우 vi).

    sp_ctrl(sysA)> create config sample_config

    구성을 구성할 때 아래의 템플릿 1을 참조하십시오.

    템플릿 1: 기본 데모 구성 sample_config

    datasource:r.source_DB    
    "qarun"."basic_c127" "splex"."basic_c127" 10.250.14.105@r.sp_ad

     

  2. 파일의 주석 처리되지 않은 첫 번째 줄에 다음을 입력하고 항목 사이에 공백을 두지 않습니다.

    datasource:r.source_databasename

    (source_databasename의 경우 소스 인스턴스의 PostgreSQL 데이터베이스 이름으로 대체합니다.) 이는 데이터가 복제될 테이블을 찾을 위치를 SharePlex에 알립니다. r.은 PostgreSQL 데이터가 복제되고 있음을 SharePlex에 알립니다.

  3. 다음 줄에는 소스 테이블의 소유자 이름(splex)과 테이블 이름(demo_src)을 입력합니다. 두 항목은 공백 없이 점(.)으로 구분합니다. 테이블 이름과 함께 소유자 이름을 사용하면 데이터베이스의 여러 스키마에 있는 여러 테이블이 동일한 이름을 가질 수 있으므로 SharePlex가 올바른 테이블을 복제합니다.

    splex.demo_src
  4. 두 번째 컬럼을 생성하려면 최소한 몇 개의 공백이나 탭을 입력합니다. Enter 키를 누르지 마십시오.
  5. 두 번째 컬럼에는 타겟 테이블의 소유자 이름(splex)과 테이블 이름(deco_dest)을 입력합니다. 두 항목은 공백 없이 점(.)으로 구분합니다.

    splex.demo_dest
  6. 세 번째 컬럼을 생성하려면 몇 개의 공백이나 탭을 입력합니다. Enter 키를 누르지 마십시오.

  7. 세 번째 컬럼에는 다음 항목을 공백 없이 사이에 입력합니다. 그러면 구성에 대한 라우팅 맵이 생성되어 복제된 데이터를 저장할 위치를 SharePlex에 알립니다.

    • 타겟 시스템의 이름
    • @ 기호
    • 문자 r
    • 점(.)
    • 타겟 인스턴스

    예:

    sysB@r.databasename

  8. 파일을 저장하고 편집기를 종료합니다. 그러면 sp_ctrl 프롬프트로 돌아갑니다.
  9. [선택 사항] 구성을 보려면 소스 시스템의 sp_ctrl에서 view config 명령을 실행합니다.

    sp_ctrl(sysA)>view config sample_config
  10. 소스 시스템에서 sp_ctrl의 구성을 활성화합니다. 구성 이름은 대소문자를 구분합니다.

    sp_ctrl(sysA)>activate config sample_config
  11. 구성이 활성화되었는지 확인하려면 소스 시스템에서 다음 sp_ctrl 명령을 입력하여 모든 구성 목록을 표시합니다. sample_config 구성이 “File Name” 아래에 나타나고 “Active”라는 단어가 “State” 아래에 나타납니다.

    sp_ctrl(sysA)>list config

: 구성 활성화에 실패하면 sp_ctrl에서 view config example_config 명령을 사용하여 파일을 확인합니다. 이를 템플릿 1과 비교하여 입력한 모든 정보가 올바른지 확인합니다. 예를 들어 없어야 할 추가 공백이나 데이터베이스 이름 앞에 r.과 같은 누락된 구성 요소가 있는지 확인합니다.

구성 파일의 실수를 수정하려면 다음을 수행합니다.

  1. 구성 파일을 활성화하기 전에(또는 활성화에 실패한 경우) sp_ctrl에서 edit config Sample_config 명령을 실행합니다.
    이 명령은 텍스트 편집기에서 파일을 엽니다.
  2. 파일을 편집하여 변경합니다.
  3. 변경 사항을 저장하고 활성화를 재시도합니다.

참고: 활성 구성을 변경하려면 먼저 copy config 명령을 사용하여 새 파일에 복사한 다음, 복사본을 편집하고 활성화해야 합니다.

PostgreSQL 소스에서 복제 구성, 활성화 및 확인

참고: 계속하려면 먼저 SharePlex 데모 객체가 설치되어 있는지 확인하십시오.

이 데모에서는 복제 구성을 생성 및 활성화하고 소스 테이블에 데이터를 로드한 다음, 데이터가 타겟 테이블에 성공적으로 복제되었는지 확인합니다. 또한 동기화 중단 테이블을 복원합니다.

구성 파일 생성

참고: 이 데모에서는 데모 객체가 demo라는 스키마에 있다고 가정합니다. 이와 다른 경우 실제 스키마로 대체합니다.

소스 시스템에서 다음 단계를 수행합니다.

  1. sp_ctrl을 실행합니다.

  2. 다음 명령을 실행하여 sample_department, sample_salary, sample_timesheetsample_employee 테이블을 타겟 시스템에 있는 동일한 이름의 타겟 테이블에 복제하는 sample_config 구성 파일을 생성합니다.

    sp_ctrl (source)>create config sample_config

  3. 텍스트 편집기에서 다음 템플릿을 기반으로 구성 파일을 빌드합니다. 구성 요소(소스 사양, 타겟 사양, 라우팅 맵)의 문자 사이에는 공백이 없어야 하며, 각 구성 요소 사이에는 하나 이상의 공백을 둡니다.

# sample_config configuration file

datasource:r.source_databasename

"demo"."sample_department"

"demo"."sample_department"

target_system@r.target_databasename

"demo"."sample_salary" "demo"."sample_salary"

target_system@r.target_databasename

"demo"."sample_timesheet" "demo"."sample_timesheet" target_system@r.target_databasename
"demo"."sample_employee" "demo"."sample_employee" target_system@r.target_databasename

여기서,

  • # 기호는 주석을 나타냅니다.
  • source_databasename은 소스 데이터베이스의 PostgreSQL 데이터베이스 이름입니다.
  • target_system은 타겟 시스템의 이름 또는 IP 주소입니다.
  • target_databasename은 타겟 데이터베이스의 PostgreSQL 데이터베이스 이름입니다.
  1. 파일을 저장한 후 편집기를 종료합니다. SharePlex가 파일을 config 하위 디렉토리에 자동으로 저장합니다.
  2. sp_ctrl에서 구성 파일이 성공적으로 활성화되는지 확인합니다.

    sp_ctrl (source)>verify config sample_config

구문 구성

PostgreSQL-PostgreSQL 복제를 위한 구성 파일의 예:

# data2k configuration file

datasource:r.source_databasename

"demo"."data2k" "demo"."data2k" target_system@r.target_databasename

PostgreSQL-Oracle 복제를 위한 구성 파일의 예:

# data2k configuration file

datasource:r.source_databasename

"demo"."data2k" "demo"."data2k" target_system@o.target_databasename

구성 활성화

소스 시스템에서 다음 단계를 수행합니다. 구성을 활성화하면 SharePlex에서 지정된 소스 데이터에 대한 트랜잭션 변경 사항을 캡처할 수 있습니다.

  1. 구성을 활성화합니다.

    sp_ctrl (source)>activate config sample_config

    참고: 구성 이름은 대소문자를 구분합니다.

  2. 구성이 성공적으로 활성화되었는지 확인합니다. config sample_config라는 이름이 File Name 아래에 나타나고 Active라는 단어가 State 아래에 나타나야 합니다.

    sp_ctrl (source)>list config

The document was helpful.

평가 결과 선택

I easily found the information I needed.

평가 결과 선택