PostgreSQL의 Flush
flush 명령을 사용하여 특정 지점에서 Post 프로세스를 중지할 수 있습니다. 이 명령은 데이터 스트림에 마커를 배치하고 마커 지점에서 Post 프로세스를 자동으로 중지합니다. 특정 시간이나 날짜(예: 월말 보고서를 생성해야 하는 경우)에 이 명령을 실행할 수 있으며, 타겟 시스템의 데이터는 명령이 실행된 당시 소스 시스템에 있었던 내용을 반영합니다.
백업을 수행하거나 문서화된 특정 SharePlex 프로시저를 따르는 경우, 소스 시스템에서 사용자 접근을 중지한 후 flush 명령을 실행하여 Post가 중지되기 전에 마지막 트랜잭션이 타겟 데이터베이스에 게시되도록 합니다.
Post 다시 시작
flush 명령 이후에 생성된 변경 사항은 큐에 누적되고 Post를 다시 시작한 후 타겟 인스턴스에 적용됩니다. Post는 start post 명령이 실행될 때까지 중지된 상태로 유지됩니다. Post는 중지된 위치를 기록하고 동기화를 유지하기 위해 해당 지점부터 게시를 재개합니다.
중요: Post가 중지된 동안 사용자가 소스 시스템을 계속 변경하면 데이터가 Post 큐에 누적되어 사용 가능한 디스크 공간을 모두 소모할 수 있습니다. 가능하면 빨리 Post를 시작하십시오.
참고: Post에 대한 Status 명령에는 "플러시로 인해 중지됨"이 표시됩니다.
사용
지원되는 소스: |
PostgreSQL(온프레미스), Amazon RDS for PostgreSQL, Amazon Aurora for PostgreSQL, Azure Database for PostgreSQL Flexible Server, Google Cloud SQL for PostgreSQL |
지원되는 타겟: |
PostgreSQL, Oracle, SQL Server, Kafka, Amazon RDS for PostgreSQL, Amazon Aurora for PostgreSQL, Azure Database for PostgreSQL Flexible Server, Google Cloud SQL for PostgreSQL |
실행 대상: |
소스 시스템 |
구문
flushdatasource |
[tohost]
[queuequeuename]
[tohostqueuequeuename]
[tohost@target_SID]
[tohost@target_SIDqueuequeuename] |
구문 설명
datasource |
이 인수는 명령이 영향을 미치는 소스 데이터를 지정합니다. 추가 옵션이 없으면 모든 타겟 시스템의 모든 큐를 통해 데이터를 플러시하고 Post를 중지합니다.
데이터 소스는 r.dbname으로 표시됩니다. 여기서, dbname은 소스 PostgreSQL 인스턴스의 데이터베이스 이름입니다.
예: sp_ctrl(sysA)>flush r.dbname1
위의 예에서는 인스턴스 r.dbname1의 데이터가 모든 타겟 시스템으로 플러시됩니다. |
tohost |
이 옵션은 지정된 타겟 시스템에 복제되는 모든 데이터를 플러시합니다. 다른 타겟 시스템으로의 복제는 영향을 받지 않습니다.
예: sp_ctrl(sysA)> flush r.dbname1 to sysB
위의 예에서는 데이터가 dbname1에서 sysB로 플러시됩니다. |
queuequeuename |
이 옵션은 지정된 Post 큐의 데이터를 플러시합니다. 모든 타겟 시스템에서 해당 이름의 모든 큐를 통해 흐르는 데이터를 플러시합니다. 이 옵션은 명명된 Post 큐가 있는 경우에 가장 유용합니다.
예: sp_ctrl(sysA)> flush r.dbname1 queue sales
위의 예에서는 해당 이름의 Post 큐가 있는 모든 타겟 시스템에서 Post 큐 sales에 대한 데이터가 플러시됩니다. |
tohostqueue queuename |
이 옵션은 지정된 타겟 시스템에서 지정된 Post 큐의 데이터를 플러시합니다. 해당 시스템과 다른 타겟 시스템의 다른 Post 큐는 영향을 받지 않습니다.
예: sp_ctrl(sysA)> flush r.dbname1 to sysB queue sales
위의 예에서는 sysB의 Post 큐 sales에 대해 데이터가 플러시됩니다. |
tohost@datadest |
이 옵션은 지정된 타겟 시스템에서 지정된 타겟 인스턴스의 데이터를 플러시합니다. 다음 항목에는 영향을 미치지 않습니다.
- 해당 시스템의 다른 타겟 인스턴스
- 다른 타겟 시스템에 동일한 ORACLE_SID/데이터베이스 이름이 있는 다른 타겟 인스턴스
구문에서,
예:
sp_ctrl(sysA)> flush r.dbname1 to sysB@r.dbname2(PostgreSQL-PostgreSQL 구현)
위의 예에서는 데이터가 sysB의 데이터베이스 dbname2로 플러시됩니다.
sp_ctrl(sysA)> flush r.dbname1 to sysB@o.oraB(PostgreSQL-Oracle 구현)
위의 예에서는 데이터가 sysB의 Oracle 인스턴스 oraB로 플러시됩니다. |
tohost@datadestqueuequeuename |
이 옵션은 지정된 타겟 시스템에서 지정된 Post 큐 및 타겟 인스턴스의 데이터를 플러시합니다. 다음 항목에는 영향을 미치지 않습니다.
- 해당 인스턴스 또는 해당 시스템의 다른 타겟 인스턴스에 대한 다른 Post 큐
- 다른 타겟 시스템의 다른 Post 큐
구문에서,
- host는 타겟 시스템의 이름입니다.
- datadest는 o.SID로 표시됩니다. 여기서, SID는 타겟 인스턴스의 ORACLE_SID입니다.
- queuename은 Post 큐의 이름입니다.
예:
sp_ctrl(sysA)> flush r.dbname1 to sysB@r.dbname2 queue sales(PostgreSQL-PostgreSQL 구현)
위의 예에서는 sysB의 타겟 PostgreSQL 데이터베이스 dbname2에 대한 Post 큐 sales에 대해 데이터가 플러시됩니다.
sp_ctrl(sysA)> flush r.dbname1 to sysB@o.oraB queue sales(PostgreSQL-Oracle 구현)
위의 예에서는 sysB의 타겟 인스턴스 oraB에 대한 Post 큐 sales에 대해 데이터가 플러시됩니다. |
PostgreSQL의 Job Status 명령
job status 명령을 사용하여 마지막 compare, compare using, repair 또는 repair using 작업 및 아직 실행 중인 다른 작업에 대한 상태를 볼 수 있습니다. job status 명령을 사용하여 작업 또는 작업 일부에 대한 자세한 상태를 보거나 SharePlex에 내역이 있는 모든 작업의 상태를 볼 수 있습니다. SharePlex는 SP_SYS_JOB_HISTORY_RETENTION 매개변수에 지정된 대로 모든 작업에 대한 내역을 유지합니다. 내역 및/또는 작업 프로세스 로그를 적극적으로 제거하는 방법에 대한 자세한 내용은 clear history 및 remove log 명령을 참조하십시오.
sp_ctrl(sysA) > job status
Job ID |
: 861 |
PID |
: 20571 |
Host |
: sysa.domm.com |
Started |
: 06-NOV-12 11:07:05 |
Job Type |
: Compare |
Status |
: Processing - 4 objects completed |
ID |
Tablename |
Status |
Time |
Total rows |
%Comp |
Total time |
--- |
---------------------- |
-------- |
--------- |
----------------- |
------ |
--------- |
1 |
"SCOTT"."SRC_TEST1" |
Out Sync |
N/A |
19 |
100 |
0:05 |
4 |
"SCOTT"."SRC_TEST4" |
WaitMarker |
0:02 |
27392 |
|
0:04 |
5 |
"SCOTT"."SRC_TEST5" |
Init |
0:01 |
27498 |
|
0:01 |
SharePlex에 내역이 있는 모든 작업의 요약을 보려면 다음을 수행합니다.
sp_ctrl(alvspxl11:8567)> job status all
Job ID |
Type |
filename/tablename |
Status |
Started |
Completed |
------ |
------ |
------------------ |
-------- |
-------------- |
------------- |
3441 |
Compare |
prod.conf |
Done - errors |
16-DEC-11 15:39 |
16-DEC-11 15:40 |
3442 |
Repair |
scott.src_test4 |
Done |
16-DEC-11 15:50 |
16-DEC-11 15:50 |
3443 |
Repair |
prod.conf |
Done |
19-DEC-11 10:42 |
19-DEC-11 10:42 |
3445 |
Compare |
scott.src_test33 |
Done - errors |
20-DEC-11 12:02 |
20-DEC-11 12:03 |
세부 정보와 함께 작업 상태를 보려면 다음을 수행합니다.
sp_ctrl (alvspxl11:8567)> compare status detail
Job ID |
: 3448 |
PID |
: 763 |
HOST |
: sysa.domm.com |
Started |
: 20-DEC-11 12:40:46 |
Job Type |
: Compare |
Status |
: Done - 6 objects completed |
Table ID |
: 3448.3 |
Table |
: "SCOTT"."SRC_TEST3" |
From |
: sysa.domm.com@r.w111a64f |
To |
: "SYSPROD"."SRC_TEST3" sysb.domm.com@r.w111a64f |
Started |
: 20-DEC-11 12:40:55 |
Percent complete |
: 100% |
Total Rows |
: 234452 |
Rows processed |
: 234452 |
Rows out-of-sync |
: 2 |
Status |
: Out Sync |
Status Elapsed |
: N/A |
Total Elapsed |
: 0:07 |
Inserts |
: 2 |
Updates |
: 0 |
Deletes |
: 0 |
사용
지원되는 소스: |
PostgreSQL |
지원되는 타겟: |
PostgreSQL |
인증 수준: |
운영자(2) |
실행 대상: |
소스 시스템 |
관련 명령: |
compare status, repair status |
구문
job status |
[job_id]
[job_id.table_id]
[all]
[full]
[detail]
[status] |
[ on host |
on host:portnumber |
on login/password@host |
on login/password@host:portnumber ] |
구문 설명
job_id |
지정된 SharePlex 할당 작업 ID를 가진 작업에 대한 상태 내역을 표시합니다.
예: sp_ctrl(sysA)>job status 2828.2 |
job_id.table_id |
지정된 SharePlex 할당 작업 ID 및 테이블을 가진 작업에 대한 상태 내역을 표시합니다.
예: sp_ctrl(sysA)>job status 2828.HR.SRC_TEST3 |
all |
데이터베이스에 내역이 있는 모든 작업에 대한 요약 줄을 표시합니다.
예:
sp_ctrl(sysA)>job status all |
full |
작업에 있는 모든 객체의 상태를 표시합니다. 기본적으로 작업 상태 명령은 완료되지 않았거나 예외 상태로 완료된 객체의 상태를 표시합니다.
예: sp_ctrl(sysA)>job status2828 full |
detail |
보고된 모든 객체에 대한 세부 정보를 표시합니다. 기본적으로 작업 상태 명령은 보고된 모든 객체에 대한 요약 줄을 표시합니다. 세부 정보는 job_id.table_id 옵션에 표시되는 것과 동일합니다.
예: sp_ctrl(sysA)>job status detail |
status |
지정된 상태를 가진 이전 작업에 대한 상태 내역을 표시합니다.
sp_ctrl(SysA)>job status “Error” |
원격 옵션
이러한 옵션을 사용하면 원격 시스템에서 명령을 실행하고 로그인 이름, 비밀번호, 포트 번호 또는 이러한 항목의 조합을 포함하는 명령을 스크립트할 수 있습니다.
on host |
원격 시스템(현재 sp_ctrl 세션이 실행 중인 시스템이 아닌 것)에서 명령을 실행합니다. 원격 시스템에 대한 로그인 자격 증명을 묻는 메시지가 표시됩니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예: sp_ctrl(sysB)>status on SysA |
on host:portnumber |
원격 로그인 및 포트 번호를 제공해야 하는 경우 원격 시스템에서 명령을 실행합니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예: sp_ctrl(sysB)>status on SysA:8304 |
on login/password@host |
원격 로그인, 비밀번호 및 호스트 이름을 제공해야 하는 경우 원격 시스템에서 명령을 실행합니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예:sp_ctrl(sysB)>status on john/spot5489@SysA |
on login/password@host:portnumber |
원격 로그인, 비밀번호, 호스트 이름 및 포트 번호를 제공해야 하는 경우 원격 시스템에서 명령을 실행합니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예: sp_ctrl(sysB)>status on john/spot5489@SysA:8304 |
PostgreSQL의 List Config
list config 명령을 사용하여 소스 시스템의 모든 활성 및 비활성 구성 목록을 볼 수 있습니다.
이 명령은 다음 정보를 표시합니다.
- File Name: 구성 이름, 수정된 시간과 날짜, 파일 크기입니다.
- State: 구성이 활성 상태 또는 비활성 상태인지 여부입니다. Active는 구성 파일이 현재 복제에 포함되어 있음을 의미합니다. Inactive는 구성이 현재 복제에 포함되어 있지 않음을 의미합니다.
- Datasource: 구성에 의해 복제되는 객체를 포함하는 PostgreSQL 인스턴스입니다.
- Internal Name: 활성 구성의 내부 복사본 이름입니다. SharePlex가 실제로 복제하는 파일입니다. 해당 이름은 활성 구성이 있는 곳마다 State 제목 아래에 표시됩니다.
사용
지원되는 소스: |
PostgreSQL(온프레미스), Amazon RDS for PostgreSQL, Amazon Aurora for PostgreSQL, Azure Database for PostgreSQL Flexible Server, Google Cloud SQL for PostgreSQL |
지원되는 타겟: |
PostgreSQL, Oracle, SQL Server, Kafka, Amazon RDS for PostgreSQL, Amazon Aurora for PostgreSQL, Azure Database for PostgreSQL Flexible Server, Google Cloud SQL for PostgreSQL |
인증 수준: |
뷰어(3) |
실행 대상: |
소스 시스템 |
관련 명령: |
view config, show config |
구문
PostgreSQL의 Modify Partition
modify partition 명령을 사용하여 수평으로 파티셔닝된 복제 구성의 파티션 scheme에서 행 파티션을 수정할 수 있습니다.
명령이 이미 복제 중인 테이블에 영향을 미치는 경우 구성 파일을 다시 활성화합니다. SharePlex는 구성 변경이 있는 테이블만 잠급니다.
수평으로 파티셔닝된 복제를 구성하는 방법에 대한 자세한 내용은 SharePlex 관리 안내서를 참조하십시오.
사용
지원되는 소스: |
PostgreSQL(온프레미스), Amazon RDS for PostgreSQL, Amazon Aurora for PostgreSQL, Azure Database for PostgreSQL Flexible Server, Google Cloud SQL for PostgreSQL |
지원되는 타겟: |
PostgreSQL, Oracle, SQL Server, Kafka, Amazon RDS for PostgreSQL, Amazon Aurora for PostgreSQL, Azure Database for PostgreSQL Flexible Server, Google Cloud SQL for PostgreSQL |
문제 위치: |
소스 시스템 |
관련 명령: |
Add partition, Drop partition, Drop partition scheme, View Partitions |
구문
modify partition in scheme_name
set
keyword=value
[and keyword=value]
[...]
where
keyword=value
[and keyword=value]
[...] |
구문 설명
참고: 이러한 옵션에 대한 추가 설명은 파티션 추가를 참조하십시오.
scheme_name |
파티션 scheme의 이름입니다. 이 구성 요소를 수정하지 마십시오. 수정하면 행 파티션이 새 파티션 scheme으로 전환됩니다. |
keyword |
scheme_name을 제외한 다음 구문 구성 요소 중 하나입니다. |
condition |
행 파티션을 정의하는 컬럼 조건입니다. |
route |
이 파티션의 라우팅 맵입니다. |
tablename |
정규화된 타겟 테이블 이름입니다. |
name |
이 파티션의 짧은 이름입니다. |
description |
이 파티션에 대한 설명입니다. |
예
sp_ctrl> modify partition in scheme1 set condition = "C1 > 400" and route = sysc:q1@r.dbname where name = q1
sp_ctrl> modify partition in scheme1 set condition = "C1 > 400" where condition = "C1 > 300"