데이터를 복제하도록 SharePlex를 구성하려면 구성 파일을 생성합니다.
이는 다음을 지정하는 ASCII 텍스트 파일입니다.
- 행이나 컬럼의 필터링 또는 파티셔닝을 포함하여 SharePlex를 복제할 데이터
- 타겟 이름 및 유형
- 데이터가 전달되어야 하는 시스템(및 해당되는 경우 데이터베이스)입니다.
SharePlex 관리자 또는 운영자만이 구성 파일을 생성할 수 있는 권한을 갖습니다.
구성 파일이 완료되면 activate config 명령을 사용해 구성을 활성화하여 복제를 시작합니다. 자세한 내용은 프로덕션 시스템에서 복제 시작를 참조하십시오.
sp_ctrl에서 직접 구성 파일을 생성할 수 있습니다. 또는 데이터 구조가 이를 지원하는 경우 스크립트를 사용하여 구성 파일 생성을 자동화할 수 있습니다.
데이터가 복제될 시스템(일반적으로 소스 시스템)에 구성 파일을 생성하지만 활성-활성 복제와 같은 전략에는 둘 이상의 시스템에 구성 파일이 필요합니다.
sp_ctrl에서 구성 파일을 생성하려면 다음을 수행합니다.
- SharePlex product 디렉토리의 bin 하위 디렉토리에서 sp_ctrl을 실행합니다.
-
sp_ctrl에서 create config 명령을 실행합니다.
sp_ctrl> create config config_name
이 명령은 운영 체제에 설정된 기본 텍스트 편집기에서 파일을 엽니다.
참고: sp_ctrl이 사용하는 기본 편집기를 변경할 수 있습니다. 자세한 내용은 sp_ctrl에 대한 기본 편집기 설정를 참조하십시오.
-
구성 파일을 완료합니다. 자세한 내용은 구성 파일의 구조를 참조하십시오.
중요! 모든 구성은 SharePlex variable-data 디렉토리의 config 하위 디렉토리에 있어야 합니다. 이 디렉토리 외부의 구성 파일은 활성화할 수 없습니다. SharePlex는 create config 명령을 사용하여 sp_ctrl 인터페이스를 통해 구성을 생성하면 기본적으로 이 디렉토리에 구성을 배치합니다. 텍스트 편집기를 통해 직접 구성을 생성하는 경우 config 하위 디렉토리에 저장해야 합니다.
스크립트를 사용하여 구성 파일을 빌드하려면 다음을 수행합니다.
참고: Oracle에만 유효합니다.
SharePlex는 소스 객체 이름과 타겟 객체 이름이 동일한 경우 구성 파일 빌드를 자동화하는 데 사용할 수 있는 다음 스크립트를 제공합니다. 이러한 스크립트는 Oracle 데이터베이스 소스 및 타겟만 지원합니다.
config.sql |
데이터베이스에 있는 모든 테이블과 시퀀스를 포함하는 구성 파일을 빌드합니다. 소스 객체 이름과 타겟 객체 이름은 동일해야 합니다. |
SharePlex 참조 안내서의 구성 스크립트를 참조하십시오. |
build_config.sql |
스키마의 모든 테이블을 포함하는 구성 파일을 빌드합니다. 소스 객체 이름과 타겟 객체 이름은 동일해야 합니다. |
SharePlex 참조 안내서의 구성 스크립트를 참조하십시오. |
구성 파일의 구조
기본 구성 파일은 다음과 같습니다.
# comment: basic SharePlex configuration file |
datasource_specification |
#source specification |
target specification |
routing map |
source_owner.object1 |
target_owner.object1 |
routing_map |
source_owner.object2 |
target_owner.object2 |
routing_map |
source_owner.object3 |
target_owner.object3 |
routing_map |
구성 파일의 기본 구성 요소는 다음과 같습니다.
# 설명 |
파일을 설명하거나 내용에 대한 기타 정보를 뷰어에 제공하지만 SharePlex에서는 사용되지 않는 줄입니다. 각 설명 줄 앞에는 파운드(#) 기호가 있습니다. 설명은 구성 파일의 어느 곳에나 입력할 수 있습니다. |
# 설명입니다. |
데이터 소스 사양 |
소스 데이터베이스를 지정하는 구문입니다. 이 구성 요소는 항상 구성 파일의 설명이 없는 첫 번째 줄이어야 합니다. 공백이 없는 동일한 모든 줄에는 다음과 같은 구문 요소가 있습니다.
|
Datasource:o.SID |
소스 사양 |
owner.object 형식으로 된 지원되는 소스 객체의 정규화된 이름입니다. 소유자는 데이터베이스가 객체를 논리적으로 저장하는 방식에 따라 스키마 또는 데이터베이스가 될 수 있습니다. 다음을 참조하십시오.
객체 이름을 한정화하는 방법
대소문자 구분 이름을 지정하는 방법
와일드카드를 사용하여 여러 객체를 지정할 수 있습니다. 소유자 이름은 와일드카드로 사용할 수 없습니다. 자세한 내용은 와일드카드를 사용하여 여러 객체 지정를 참조하십시오. |
src_owner.table
src_owner.sequence |
타겟 사양 |
복제된 데이터가 적용되는 타겟입니다. SharePlex에서 지원하는 타겟은 다음과 같습니다.
|
tgt_owner.table
tgt_owner.sequence
!file[:tgt_owner.table]
!jms[:tgt_owner.table]
!kafka[:tgt_owner.table]
!cdc:tgt_owner.table |
라우팅 맵 |
타겟 사양으로 지정된 타겟 객체가 포함된 시스템으로 데이터를 보내는 하나 이상의 경로입니다. 경로는 다음으로 구성됩니다.
-
타겟을 호스팅하는 시스템의 이름
-
(데이터베이스 타겟만 해당) @ 기호 뒤에 타겟 데이터베이스 사양이 옵니다. 자세한 내용은 구성 파일의 데이터베이스 사양를 참조하십시오.
타겟이 JMS, Kafka 또는 파일인 경우 데이터베이스 사양이 없습니다.
라우팅 맵의 문자 사이에 공백이 있어서는 안 됩니다.
자세한 내용은 구성 파일의 라우팅 사양를 참조하십시오. |
host@o.SID
host@o.PDBalias
host@o.tns_alias
host@r.database_name
host
host@c.SID
복합 라우팅 맵:
host@o.SID+host@r.database[...] |
SharePlex가 캡처하고 게시할 올바른 객체를 결정할 수 있도록 데이터베이스가 객체 이름을 논리적으로 저장하는 것과 동일한 방식으로 구성 파일의 객체 이름을 한정화해야 합니다. SharePlex 구문에 표시되는 일반적인 방법은 다음과 같습니다.
owner.object
여기서,
- owner는 데이터베이스에서 해당 컨테이너를 정의하는 방식에 따라 객체(와일드카드가 있는 경우 여러 객체)를 포함하는 스키마 또는 데이터베이스입니다.
- object는 객체의 이름이거나 여러 객체를 지정하기 위한 와일드카드 사양입니다.
구성 파일에서 소스 또는 타겟 객체를 정의할 때 owner구성 요소를 지정하기 위한 다음 가이드라인을 따릅니다.
Aurora |
database_name.object_name |
MySQL |
database_name.object_name |
Oracle |
schema_name.object_name |
PostgreSQL |
schema_name.object_name |
SQL Server |
schema_name.object_name |
SAP HANA |
schema_name.object_name |
이 항목에서는 예를 들어 테이블 이름을 지정하거나 컬럼 매핑에서 컬럼 이름을 명시적으로 지정해야 하는 경우 구성 파일에서 대소문자 구분 이름을 지정하는 방법을 보여줍니다.
대소문자 구분 객체 이름
데이터베이스에서 객체의 소유자나 이름이 대소문자를 구분하는 경우 SharePlex 구성 파일에서 해당 이름을 따옴표로 묶어야 합니다.
중요: 이는 데이터베이스 자체에서 따옴표 안에 대소문자 구분 이름(예: Oracle)을 요구하는지 또는 데이터베이스가 따옴표 없이 대소문자 구분 형식으로 표기된 이름(예: SQL Server)을 허용하는지 여부에 따라 적용됩니다.
대소문자 구분 객체 이름을 적용하려면 다음을 수행합니다.
이름을 올바른 대소문자로 지정하고 큰따옴표로 묶습니다.
올바른 방법
-
다음은 소유자 및 객체 이름이 모두 대소문자 구분 객체를 지정하는 방법입니다.
"Owner"."Object"
-
다음은 구성 요소 중 하나만 대소문자 구분 객체를 지정하는 방법입니다.
owner."Object" or "Owner".object
대소문자 구분 이름은 어떤 경우에도 지정할 수 있습니다.
두 가지 방법의 예:
Datasource o.oraA |
|
|
sales."Emp" |
"Sales"."Emp" |
sysB@o.oraB |
잘못된 방법
다음은 두 구성 요소가 하나의 따옴표로 묶여 있기 때문에 올바르지 않습니다.
"Sales.Employees"
대소문자 구분 컬럼 이름
일반적으로 컬럼 매핑을 통해 소스 컬럼 이름을 다른 타겟 컬럼 이름에 매핑해야 하는 경우를 제외하고 컬럼 이름은 구성 파일에 지정되지 않습니다(소스 및 타겟 컬럼 매핑 참조). 그러나 소스 컬럼과 타겟 컬럼 쌍의 이름에 서로 다른 대소문자가 있는 경우 대소문자 구분을 적용하기 위해 컬럼 매핑에 이를 포함해야 할 수 있습니다. 컬럼 매핑이 필요한지 여부는 타겟 유형(Oracle 또는 Open Target)에 따라 다릅니다.
Oracle-Oracle 복제에 대해 대소문자 구분 컬럼 이름을 적용하려면 다음을 수행합니다.
Oracle Post 프로세스는 Oracle-Oracle 복제에 대해 컬럼 이름의 대소문자 변환을 자동으로 수행하지 않습니다. 소스 컬럼과 타겟 컬럼 간에 대소문자가 다른 경우 컬럼 맵을 사용하여 소스 이름의 대소문자를 타겟 이름의 대소문자에 매핑해야 합니다. Post가 대소문자를 적용하도록 하려면 이름을 올바른 대소문자로 지정하고 큰따옴표로 묶습니다.
다음은 컬럼 맵에서의 대소문자 구분 컬럼 이름 매핑의 예입니다.
Datasource o.oraA |
|
|
sales.emp(ID,"first","last") |
sales.emp(ID,"First","Last") |
sysB@o.oraB |
Open Target에 대소문자 구분 컬럼 이름을 적용하려면 다음을 수행합니다.
Open Target Post 프로세스는 컬럼 이름의 대소문자 변환을 자동으로 수행합니다. 소스 컬럼과 대소문자가 다른 타겟 컬럼에 복제하는 경우 컬럼 매핑이 필요하지 않습니다.
구성 파일의 다음 구성 요소에는 데이터베이스 사양이 필요합니다.
- 데이터 소스(소스 데이터 저장소) 사양
- 라우팅 맵(타겟 데이터 저장소 및 위치) 사양
Oracle 소스 |
o. |
Oracle 데이터베이스 구성에 따라 다음 중 하나를 사용합니다. 이는 SharePlex가 데이터베이스에 연결하는 데 사용할 문자열입니다.
- o.ora12와 같은 일반(비CDB) Oracle 데이터베이스의 Oracle SID입니다.
- o.pdb1과 같은 Oracle CDB(Container Database)에 있는 PDB(Pluggable Database)의 TNS 별칭입니다.
- o.rac1과 같은 Oracle RAC 클러스터의 전역 TNS 별칭입니다. SharePlex는 각 노드에서 로컬 Oracle 인스턴스의 Oracle SID에 로컬로 매핑되는 이 TNS 별칭을 통해 Oracle RAC 인스턴스에 연결합니다. 이 별칭 생성에 대한 자세한 내용은 HA 클러스터 설치 및 설정을 참조하십시오(참조: SharePlex 설치 안내서).
|
Open Target 타겟 |
r. |
r.mydb와 같이 Open Target(non-Oracle) 타겟 데이터베이스의 이름을 지정하는 데 사용됩니다.
중요! 실제 데이터베이스 이름을 사용합니다. ODBC 데이터 소스 이름(DNS) 또는 데이터베이스 인스턴스 이름을 사용하지 마십시오. 데이터베이스 이름이 대소문자를 구분하는 경우에는 그에 따라 지정합니다. |
Oracle 변경 내역 타겟 |
c. |
c.ORA12CH와 같이 Oracle 변경 내역 데이터베이스의 Oracle SID, TNS 별칭 또는 전역 RAC TNS 별칭을 지정하려면 라우팅 맵에서 사용합니다. 이 구성에서 SharePlex는 모든 소스 트랜잭션을 타겟 테이블에 INSERT로 적용하여 수행된 모든 작업의 내역을 유지합니다.
자세한 내용은 변경 내역 타겟에 대한 복제 구성를 참조하십시오. |
* 참고: 점은 필수 입력 사항입니다.