PDB 간 복제
캡처 및 전달 구성
SharePlex는 하나의 PDB에서 다음 위치로 데이터를 복제할 수 있습니다.
- 동일한 CDB의 다른 PDB
- 다른 CDB의 PDB
- 일반(비PDB) 타겟
SharePlex는 일반 소스 데이터베이스의 데이터를 타겟 Oracle CDB의 PDB로 복제할 수 있습니다.
하나의 구성 파일에서 동일한 CDB 또는 다른 CDB의 타겟 PDB 수에 관계없이 복제할 수 있습니다.
PDB에서 캡처하려면 다음을 수행합니다.
PDB에 복제하려면 다음을 수행합니다.
다음 예와 같이 라우팅 맵에서 타겟 PDB의 TNS 별칭을 지정합니다. 여기서, pdb2는 타겟입니다.
sys02@o.pdb2
PDB 구성 예
예 1: 이 예에서는 두 개의 구성 파일을 보여줍니다. 하나는 pdb1에서 복제하고 다른 하나는 pdb2에서 복제하며, 둘 다 pdb3에 데이터를 복제합니다.
Datasource: o.pdb1
hr.emp hr2.emp2 sys02@o.pdb3
Datasource: o.pdb2
sales.cust sales2.cust2 sys02@o.pdb3
예 2: 이 예에서는 pdb1에서 pdb2 및 pdb3으로 복제되는 하나의 구성 파일을 보여줍니다. 두 타겟은 서로 다른 시스템에 있습니다.
명명된 큐 구성
이 장에는 명명된 큐의 고급 SharePlex 구성 옵션을 사용하기 위한 지침이 포함되어 있습니다. 이러한 옵션은 특정 처리 및 라우팅 요구 사항을 충족하기 위해 데이터를 분할하고 병렬화할 수 있는 추가적인 유연성을 제공합니다. 계속하기 전에 데이터 복제를 위해 SharePlex 구성의 개념과 프로세스를 이해했는지 확인하십시오.
내용
명명된 Export 큐 구성
명명된 Export 큐는 자체 Export 프로세스에 연결된 선택적이고 사용자 정의된 Export 큐입니다. SharePlex는 기본 Export 큐-프로세스 쌍 외에도 명명된 각 Export 큐 및 관련 Export 프로세스를 생성합니다. SharePlex가 명명된 Export 큐-프로세스 쌍을 생성하면 타겟에 해당 데이터 스트림을 포함하는 전용 Import 프로세스, Post 큐 및 Post 프로세스도 생성됩니다.
구성 파일을 생성하는 경우 SharePlex에 하나 이상의 명명된 Export 큐를 생성하도록 지시합니다. 명명된 Export 큐를 통해 처리하도록 구성되지 않은 데이터는 기본 Export 큐를 통해 처리됩니다.
지원되는 소스 및 타겟
명명된 Export 큐의 이점
명명된 Export 큐를 사용하여 다음 항목의 복제를 격리합니다.
- 개별 구성: 기본적으로 SharePlex는 타겟 시스템당 하나의 Export 큐-프로세스 쌍을 통해 모든 활성 구성의 데이터를 전송하지만 명명된 Export 큐를 사용하면 해당 복제 스트림 각각을 자체 Export 큐 및 Export 프로세스로 분리할 수 있습니다. 이러한 방식으로 한 구성에 대해 실행된 purge config 또는 abort config 명령이 다른 구성에 영향을 미치지 않도록 합니다.
- 선택한 데이터베이스 객체: 명명된 Export 큐를 사용하여 LOB가 포함된 테이블과 같은 특정 객체를 격리할 수 있습니다. 명명된 각 Export 큐에는 타겟에 대한 자체 Import 프로세스, Post 큐, Post 프로세스가 있으므로 소스에서 타겟까지의 전체 경로에서 데이터를 격리할 수 있습니다. 명명된 Post 큐의 이점에 대한 자세한 내용은 명명된 Post 큐 구성을 참조하십시오.
추가 이점:
- 하나의 데이터 스트림에 대한 Export 또는 Import 프로세스를 중지하고 다른 데이터 스트림은 계속 처리하도록 허용할 수 있습니다.
- SharePlex 매개변수를 각 Export 큐-프로세스 쌍에 대해 서로 다르게 설정할 수 있습니다. 이를 통해 각 Export 프로세스를 통해 복제되는 객체를 기반으로 Export 프로세스의 성능을 조정할 수 있습니다.
명명된 Export 큐 사용 시 고려 사항
명명된 Export 큐 구성: Oracle에서 모든 타겟으로
명명된 Export 큐를 포함하는 라우팅 맵을 정의하려면 다음 구문을 사용합니다.
source_host:export_queuename*target_host[@database]
라우팅 맵에 명명된 Export 큐가 있는 구성
Datasource: o.SID |
src_owner.table |
tgt_owner.table |
source_host:export_queue*target_host[@database_specification] |
source_host |
소스 시스템의 이름입니다. |
export_queue |
Export 큐의 이름입니다. 큐 이름은 모든 플랫폼에서 대소문자를 구분합니다. 한 단어만 사용합니다. 밑줄이 허용되며 예를 들면 다음과 같습니다.
sys1:export_q1*sys2@o.myora |
target_host |
타겟 시스템의 이름입니다. |
데이터베이스 사양 |
데이터 소스인 경우 다음 중 하나입니다.
o.oracle_SID
r.database_name
타겟이 데이터베이스인 경우 다음 중 하나입니다.
o.oracle_SID
o.tns_alias
o.PDBname
r.database_name
c.oracle_SID |
예
다음 구성 파일은 동일한 타겟 시스템에 있는 두 가지 데이터베이스에 복제되는 두 가지 데이터 소스를 보여줍니다. 각 데이터 소스는 명명된 Export 큐를 통해 라우팅됩니다.
Datasource:o.oraA |
|
|
scott.emp |
scott.emp |
sysA:QueueA*sysB@o.oraC |
scott.sales |
scott.sales |
sysA:QueueA*sysB@o.oraC |
Datasource:o.oraB |
|
|
scott.prod |
scott.prod |
sysA:QueueB*sysB@o.oraD |
scott.cust |
scott.cust |
sysA:QueueB*sysB@o.oraD |
다음은 명명된 Export 큐를 사용하여 LOB가 포함된 테이블을 나머지 테이블과 분리하는 방법을 보여줍니다.
Datasource:o.oraA |
|
|
scott.cust |
scott.cust |
sysA:QueueA*sysB@o.oraC |
scott.sales |
scott.sales |
sysA:QueueA*sysB@o.oraC |
scott.prod |
scott.prod |
sysA:QueueA*sysB@o.oraC |
scott.emp_LOB |
scott.emp_LOB |
sysA:QueueB*sysB@o.oraC |
또는 LOB 테이블에 대해 명명된 Export 큐를 정의하고 나머지 테이블이 기본 Export 큐를 통해 처리되도록 허용할 수도 있습니다.
Datasource:o.oraA |
|
|
scott.cust |
scott.cust |
sysB@o.oraC |
scott.sales |
scott.sales |
sysB@o.oraC |
scott.prod |
scott.prod |
sysB@o.oraC |
scott.emp_LOB |
scott.emp_LOB |
sysA:lobQ*sysB@o.oraC |
PostgreSQL에 대한 명명된 Export 큐 구성
명명된 Export 큐를 포함하는 라우팅 맵을 정의하려면 다음 구문을 사용합니다.
source_host:export_queuename*target_host[@database]
지원되는 타겟
PostgreSQL, Oracle, SQL Server 및 Kafka
라우팅 맵에 명명된 Export 큐가 있는 구성
Datasource:r.dbname |
src_schema.table |
tgt_schema.table |
source_host:export_queue*target_host[@database_specification] |
source_host |
소스 시스템의 이름입니다. |
export_queue |
Export 큐의 이름입니다. 큐 이름은 모든 플랫폼에서 대소문자를 구분합니다. 한 단어만 사용합니다. 밑줄이 허용되며 예를 들면 다음과 같습니다.
sys1:export_q1*sys2@r.dbname |
target_host |
타겟 시스템의 이름입니다. |
데이터베이스 사양 |
r.database_name |
참고: 라우팅 맵 구문의 구성 요소 사이에 공백이 없도록 합니다.
예
다음 구성 파일은 동일한 타겟 시스템에 있는 두 가지 데이터베이스에 복제되는 두 가지 데이터 소스를 보여줍니다. 각 데이터 소스는 명명된 Export 큐를 통해 라우팅됩니다.
Datasource:r.dbnameA |
|
|
scott.emp |
scott.emp |
sysA:QueueA*sysB@r.dbnameC |
scott.sales |
scott.sales |
sysA:QueueA*sysB@r.dbnameC |
Datasource:r.dbnameB |
|
|
scott.prod |
scott.prod |
sysA:QueueB*sysB@r.dbnameD |
scott.cust |
scott.cust |
sysA:QueueB*sysB@r.dbnameD |
다음은 명명된 Export 큐를 사용하여 LOB가 포함된 테이블을 나머지 테이블과 분리하는 방법을 보여줍니다.
Datasource:r.dbnameA |
|
|
scott.cust |
scott.cust |
sysA:QueueA*sysB@r.dbnameC |
scott.sales |
scott.sales |
sysA:QueueA*sysB@r.dbnameC |
scott.prod |
scott.prod |
sysA:QueueA*sysB@r.dbnameC |
scott.emp_LOB |
scott.emp_LOB |
sysA:QueueB*sysB@r.dbnameC |
또는 LOB 테이블에 대해 명명된 Export 큐를 정의하고 나머지 테이블이 기본 Export 큐를 통해 처리되도록 허용할 수도 있습니다.
Datasource:r.dbnameA |
|
|
scott.cust |
scott.cust |
sysB@r.dbnameC |
scott.sales |
scott.sales |
sysB@r.dbnameC |
scott.prod |
scott.prod |
sysB@r.dbnameC |
scott.emp_LOB |
scott.emp_LOB |
sysA:lobQ*sysB@r.dbnameC |
명명된 Export 큐를 식별하는 방법
sp_ctrl을 통해 명명된 Export 큐를 볼 수 있습니다.
- qstatus 명령을 사용하여 시스템의 모든 큐를 볼 수 있습니다.
- show 명령을 사용하여 해당 큐와 함께 모든 Export 프로세스를 볼 수 있습니다.
이러한 명령에 대한 자세한 내용은 SharePlex 참조 안내서를 참조하십시오.
명명된 Post 큐 구성
명명된 Post 큐는 구성 파일에 있는 라우팅 맵의 선택적 구성 요소입니다. 명명된 Post 큐는 기본 Post 큐 및 Post 프로세스와 동시에 작동하는 자체 Post 프로세스가 있는 사용자 정의 Post 큐입니다. 하나 이상의 명명된 Post 큐-프로세스 쌍을 정의하여 병렬 Post 복제 스트림 세트를 설정할 수 있습니다.
지원되는 소스 및 타겟
명명된 Post 큐의 이점
명명된 Post 큐를 사용하여 서로 다른 테이블의 데이터를 두 개 이상의 별도 Post 스트림으로 격리할 수 있습니다. 명명된 Post 큐를 사용하면 처리 병목 현상을 초래하는 다음과 같은 객체를 격리하여 게시 성능을 향상시킬 수 있습니다.
- 큰 테이블
- LOB 컬럼이 있는 객체. LOB를 포함하는 객체에는 명명된 Post 큐가 권장됩니다.
- 대규모 트랜잭션이 포함된 객체
- 작업을 격리할 모든 객체
추가 명명된 Post 큐를 통해 나머지 객체를 처리하거나, 기본 Post 큐를 사용합니다. 표준 라우팅 맵(호스트@타겟)이 있는 구성 파일의 객체는 기본 Post 큐를 통해 복제됩니다.
수평 파티셔닝을 사용하여 추가된 병렬 처리 측정값으로 매우 큰 테이블의 행을 별도의 명명된 Post 큐로 나눌 수 있습니다.
SharePlex 매개변수를 각 큐-프로세스 쌍에 대해 서로 다르게 설정할 수 있습니다. 이를 통해 각 Post 프로세스를 통해 복제되는 객체를 기반으로 Post 프로세스의 성능을 조정할 수 있습니다.
명명된 Post 큐 사용 시 고려 사항
명명된 Post 큐 구성: Oracle에서 모든 타겟으로
명명된 Export 큐를 사용하는 경우 SharePlex는 기본적으로 각각에 대해 명명된 Post 큐-프로세스 쌍을 생성합니다. 명명된 Export 큐를 사용하지 않는 경우 다음 구문을 사용하여 라우팅 맵에 :queue 구성 요소를 추가하여 구성 파일에 명명된 Post 큐를 정의합니다.
host:queue@target
라우팅 맵에 명명된 Post 큐가 있는 구성
Datasource: o.SID |
src_owner.table |
tgt_owner.table |
host:queue[@database_specification] |
host |
타겟 시스템의 이름입니다. |
큐 |
Post 큐의 고유 이름입니다. 큐 이름은 모든 플랫폼에서 대소문자를 구분합니다. 한 단어만 사용합니다. 밑줄이 허용되며 예를 들면 다음과 같습니다.
sys2:post_q1@o.myora |
database_specification |
데이터 소스인 경우 다음 중 하나입니다.
o.oracle_SID
타겟이 데이터베이스인 경우 다음 중 하나입니다.
-
o.oracle_SID
o.tns_alias
o.PDBname
r.database_name
c.oracle_SID |
예
다음 구성은 테이블 scott.emp에서 데이터를 라우팅하는 Queue1이라는 하나의 Post 큐와 테이블 scott.cust에서 데이터를 라우팅하는 Queue2라는 또 다른 Post 큐를 생성합니다.
Datasource:o.oraA |
|
|
scott.emp |
scott.emp |
sysB:Queue1@o.oraC |
scott.cust |
scott.cust |
sysB:Queue2@o.oraC |
다음은 중간 시스템을 사용하여 패스스루 구성에서 데이터를 라우팅할 때 명명된 Post 큐를 지정하는 방법을 보여줍니다. 자세한 내용은 데이터를 공유하거나 배포하도록 복제 구성를 참조하십시오.
Datasource:o.oraA |
|
|
scott.emp |
scott.emp |
sysB*sysC:Queue1@o.oraC |
PostgreSQL에 대한 명명된 Post 큐 구성
명명된 Export 큐를 사용하는 경우 SharePlex는 기본적으로 각각에 대해 명명된 Post 큐-프로세스 쌍을 생성합니다. 명명된 Export 큐를 사용하지 않는 경우 다음 구문을 사용하여 라우팅 맵에 :queue 구성 요소를 추가하여 구성 파일에 명명된 Post 큐를 정의합니다.
host:queue@target
지원되는 타겟
PostgreSQL, Oracle, SQL Server 및 Kafka
라우팅 맵에 명명된 Post 큐가 있는 구성
Datasource:r.dbname |
src_schema.table |
tgt_schema.table |
host:queue[@database_specification] |
host |
타겟 시스템의 이름입니다. |
큐 |
Post 큐의 고유 이름입니다. 큐 이름은 모든 플랫폼에서 대소문자를 구분합니다. 한 단어만 사용합니다. 밑줄이 허용되며 예를 들면 다음과 같습니다.
sys2:post_q1@r.dbname |
database_specification |
r.database_name |
참고: 라우팅 맵 구문의 구성 요소 사이에 공백이 없도록 합니다.
예
다음 구성은 테이블 scott.emp에서 데이터를 라우팅하는 Queue1이라는 하나의 Post 큐와 테이블 scott.cust에서 데이터를 라우팅하는 Queue2라는 또 다른 Post 큐를 생성합니다.
Datasource:r.dbname |
|
|
scott.emp |
scott.emp |
sysB:Queue1@r.dbname |
scott.cust |
scott.cust |
sysB:Queue2@r.dbname |
다음은 중간 시스템을 사용하여 패스스루 구성에서 데이터를 라우팅할 때 명명된 Post 큐를 지정하는 방법을 보여줍니다.
Datasource:r.dbname |
|
|
scott.emp |
scott.emp |
sysB*sysC:Queue1@r.dbname |
명명된 Post 큐를 식별하는 방법
명명된 Post 큐는 데이터 소스(데이터의 소스)와 다음 중 하나로 식별됩니다.
- 연결된 명명된 Export 큐의 이름(Import가 명명된 Export 큐에 연결된 경우)
- 사용자가 할당한 게시-큐 이름(Import가 기본 Export 큐에 연결된 경우)
sp_ctrl을 통해 다음과 같이 명명된 Post 큐를 볼 수 있습니다.
- qstatus 명령을 사용하여 시스템의 모든 큐를 볼 수 있습니다.
- show 명령을 사용하여 해당 큐와 함께 모든 Post 프로세스를 볼 수 있습니다.
이러한 명령에 대한 자세한 내용은 SharePlex 참조 안내서를 참조하십시오.