Chat now with support
Chat with Support

SharePlex 11.4 - 참조 안내서

이 안내서 정보 이 안내서에 사용된 규칙 Oracle용 SharePlex 명령 SharePlex 매개변수 PostgreSQL용 SharePlex 명령 PostgreSQL용 SharePlex 매개변수 일반 SharePlex 유틸리티 Oracle Cloud 인프라스트럭처 SharePlex 환경 변수

cancel

cancel 명령을 사용하여 실행 중인 compare, repair, copy 또는 append 명령 작업을 취소할 수 있습니다.

작업을 취소하려면 해당 작업 ID를 제공해야 합니다. 작업 ID는 작업을 시작하는 명령을 실행할 때 compare, repair, copy 또는 append 작업에서 다시 보고됩니다.

sp_ctrl> repair using 1elliot

repairing 7 of 7 objects

repair started; job id 408

또는 job status 명령을 실행하여 가장 최근에 스트리밍된 작업의 작업 ID를 가져올 수 있습니다.

sp_ctrl> job status

Job ID: 408

PID: 11527

Host: prodsys

Started: 22-FEB-15 18:08:09

Job Type: Repair

Status: Processing - 0 objects completed

사용

지원되는 소스: Oracle
지원되는 타겟: Oracle
인증 수준: 운영자(2)
문제 위치: 소스 시스템
관련 명령: compare, repair, copy, append

구문

기본 명령 원격 옵션
cancel job_id

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

구문 설명
구성 요소 설명
jobID

취소할 작업의 ID입니다.

:

sp_ctrl>cancel 407

원격 옵션

이러한 옵션을 사용하면 원격 시스템에서 명령을 실행하고 로그인 이름, 비밀번호, 포트 번호 또는 이러한 항목의 조합을 포함하는 명령을 스크립트할 수 있습니다.

옵션 설명
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

clear history

clean history 명령을 사용하여 이전 compare, repair, copy 및 append명령 작업에서 정보와 로그를 제거할 수 있습니다.

이러한 작업은 소스 및 타겟 시스템에 로그 파일을 생성합니다. 기본적으로 작업 정보와 로그 파일은 작업이 SP_SYS_JOB_HISTORY_RETENTION 매개변수로 설정된 값보다 오래되면 정리됩니다. Clear History 명령을 사용하여 특정 작업이나 테이블 또는 특정 기간의 모든 작업에 대한 요청 시 작업 정보와 로그를 삭제할 수 있습니다.

사용

지원되는 소스: Oracle
지원되는 타겟: Oracle
인증 수준: 운영자(2)
문제 위치: 소스 시스템
관련 명령: compare, repair, copy, append

구문

기본 명령 명령 옵션 원격 옵션

clear history

{ all |

source_owner.source_table |

age days |

jobID }

[for o.source_sid]

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

구문 설명
구성 요소 설명
all

모든 작업이 제거됩니다.

:

sp_ctrl(sysA)> clear history all

source_owner.source_table

특정 테이블에 대한 내역이 제거됩니다.

:

sp_ctrl(sysA)> clear history clear history user2.employee

age days

지정된 일수보다 오래된 작업 내역이 제거됩니다.

:

sp_ctrl(sysA)> clear history age 10

jobID 지정된 작업 ID(작업 상태 명령을 사용하여 얻은)에 대한 내역이 제거됩니다.
for o.source_sid

선택 사항. 활성 구성이 없거나 둘 이상의 활성 구성이 있는 경우 Clear History 명령을 사용하는 데 사용할 수 있습니다. 두 경우 모두 for 옵션을 사용하여 소스 SID를 지정해야 합니다.

:

sp_ctrl(sysA)>clear history all for o.source_sid1

원격 옵션

이러한 옵션을 사용하면 원격 시스템에서 명령을 실행하고 로그인 이름, 비밀번호, 포트 번호 또는 이러한 항목의 조합을 포함하는 명령을 스크립트할 수 있습니다.

옵션 설명
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

clear status

clear status 명령을 사용하여 상태 데이터베이스에서 오래된 경고 메시지를 제거할 수 있습니다.

이 명령을 사용하려면 다음을 수행합니다.

  1. show statusdb detail 명령을 실행하여 지울 수 있는 메시지를 확인할 수 있습니다. 지울 수 있는 메시지의 Clear 컬럼에는 Yes가 있습니다.
  2. 모든 메시지를 지우고 싶지 않다면 지우려는 각 메시지의 상태 ID를 기록해 둡니다.
  3. 각 상태 ID에 대해 clear status 명령을 실행하거나 all 인수를 사용하여 지울 수 있는 모든 메시지를 한 번에 제거합니다.

SharePlex는 지워진 메시지를 식별하는 메시지를 이벤트 로그에 넣습니다.

이 명령은 기본 시스템의 상태 데이터베이스에서 메시지를 지웁니다. 다른 시스템의 상태 데이터베이스에서 메시지를 지우려면 [on host] 옵션을 사용합니다.

참고: 일부 메시지는 지울 수 없습니다.

사용

지원되는 소스: Oracle
지원되는 타겟: 전체
인증 수준: 운영자(2)
실행 대상: 소스 또는 타겟 시스템
관련 명령: show statusdb

구문

기본 명령 원격 옵션
clear status {statusID| all}

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

구문 설명
구성 요소 설명
statusID

제거하려는 개별 메시지(show statusdb 명령을 사용하여 가져옴)의 SharePlex 할당 ID입니다.

:

sp_ctrl(sysA)>clear status 20

all

이 인수는 지울 수 있는 모든 메시지를 제거합니다.

:

sp_ctrl(sysA)>clear status all

원격 옵션

이러한 옵션을 사용하면 원격 시스템에서 명령을 실행하고 로그인 이름, 비밀번호, 포트 번호 또는 이러한 항목의 조합을 포함하는 명령을 스크립트할 수 있습니다.

옵션 설명
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

compare/compare using

comparecompare using 명령(통칭하여 comparison 명령이라고 함)을 사용하여 타겟 테이블이 소스 테이블과 동기화되어 있는지 확인할 수 있습니다.

  • compare 명령은 와일드카드를 사용하여 개별 소스 테이블과 타겟 테이블 또는 특정 스키마의 테이블 수를 비교합니다. 개별 테이블을 비교할 때 컬럼 기반 필터링을 사용하여 비교를 위해 선택된 행을 제어할 수 있습니다.
  • compare using 명령은 활성 구성에 나열된 모든 테이블이나 활성 구성의 테이블 하위 집합을 포함하는 다른 파일을 비교합니다.

compare를 실행한 후 repair 또는 repair using 명령을 실행하여 동기화 중단 행을 복원할 수 있습니다.

참고: 실행 중인 compare 또는 repair는 어떤 방식으로든 소스 테이블에 영향을 주지 않습니다. SharePlex는 읽기 일관성을 쿼리하기 위해서만 데이터베이스에 로그인하며 소스 테이블에 대한 잠금은 간단합니다. SharePlex는 처리 중에 타겟 테이블을 잠시 잠그지만 사용자는 잠금을 거의 인식하지 못한 채 타겟 테이블에 계속 접근할 수 있습니다.

지원되는 작업

SharePlexDML 작업(INSERT, UPDATE, DELETE)으로 인한 타겟 테이블의 동기화 중단 행을 감지하고 복원할 수 있습니다.

지원되지 않음

  • SharePlex는 다음 항목의 compare와 repair를 지원하지 않습니다(건너뜁니다).

    • 고급 데이터 유형

      • TEXT

      • CHAR > 2000

      • VARCHAR > 4000

      • VARCHAR without size

      • BYTEA

    • 시퀀스.
    • 변환이 사용된 테이블입니다.
    • 패스스루 서버를 사용하여 소스 서버와 타겟 서버 간에 데이터를 전달하는 네트워크 구성입니다.
  • 단계화 복제 환경에서는 compare와 repair가 지원되지 않습니다.
  • compare 또는 repair 중인 테이블에서 DDL을 수행하지 마십시오. compare는 SharePlex가 지원하는 조건을 포함하여 DDL 작업으로 인해 발생하는 동기화 중단 조건을 감지하지 않습니다. DDL이 테이블 정의를 변경하면 비교해야 하는 행을 가져오기 위해 compare 프로세스에서 작성된 SELECT 문이 무효화됩니다.

    DDL로 인한 동기화 중단 상태를 해결한 후 repair 명령을 사용하여 행의 데이터를 재동기화할 수 있습니다.

  • 255자를 초과하는 compare 및 repair 명령 문자열은 지원되지 않습니다. 이는 운영 체제 제한 사항입니다. 이 운영 체제 제한 사항을 해결하려면 소스 시스템에서 edit 명령을 사용합니다. 텍스트 파일 내에 명령 문자열을 입력하면 명령이 자동으로 파일을 실행합니다.

comparecompare using 명령이 지원하는 데이터 유형에 대한 추가 정보는 SharePlex 릴리스 노트를 참조하십시오.

기타 조건

  • 비교하거나 복원할 테이블은 활성 구성 파일의 일부여야 합니다.
  • 소스 테이블에서 커밋되지 않은 트랜잭션은 Comparison 및 Repair 프로세스가 읽기 일관성을 얻는 데 필요한 간단한 잠금을 얻지 못하도록 합니다. compare 또는 repair를 실행하기 전에 모든 트랜잭션이 커밋되었는지 확인하십시오.
  • 복제 지연 시간은 compare와 repair 처리 성능을 저하시킵니다. 타겟에 compare와 repair 프로세스를 생성하는 소스의 메시지는 복제된 데이터가 있는 큐를 통해 전송됩니다. 데이터 백로그로 인한 지연으로 인해 생성 메시지가 지연되고 소스 프로세스의 읽기 일관성이 손실될 수 있습니다. 가능한 경우 사용량이 적은 시간에 compare와 repair를 수행합니다.

  • compare 또는 repair 중인 테이블을 자르지 마십시오. 비교 명령은 시작 시 각 소스 테이블의 스냅샷을 찍습니다. 테이블이 잘리면 스냅샷의 테이블 뷰도 잘리며 이로 인해 명령이 유효하지 않은 동기화 중단 조건을 반환할 수 있습니다.
  • 뷰를 복원하려면 다음 사항이 충족되어야 합니다.

    • 뷰 테이블에는 기본 테이블의 모든 제약 조건 컬럼이 포함되어야 합니다.
    • 뷰의 제약 조건 컬럼 이름은 기본 테이블의 제약 조건 컬럼 이름과 동일해야 합니다.
  • Compare 프로세스의 성능을 향상시키기 위해 SharePlex는 SP_DEQ_PARALLELISM 매개변수를 통해 병렬 힌트를 지원합니다. 이를 통해 병렬성 수준, 즉 시작할 작업자 프로세스 수를 지정할 수 있습니다.

    기본적으로 PostgreSQL 데이터베이스 최적화 프로그램은 SQL 문에 가장 적합한 쿼리 실행 계획을 선택합니다. 이는 병렬 힌트에 지정된 병렬 처리 수준과 직접적인 관련이 없을 수 있습니다. pg_hint_plan을 사용하면 쿼리가 실행될 때마다 병렬 힌트를 사용하여 실행 계획을 조정할 수 있습니다. SharePlex는 pg_hint_plan 확장이 데이터베이스에 설치되거나 구성된 경우 내부적으로 활용합니다.

    병렬 쿼리를 사용하는 예시 구문은 다음과 같습니다.

    pg_hint_plan 확장은 병렬 힌트를 지원합니다. Parallel(table <# of workers> [soft|hard])

    SharePlex는 하드 구문 분석 지원과 함께 병렬 힌트를 사용합니다. Parallel(table <# of workers> [hard])

    참고: 작업자 수는 데이터베이스 시스템의 CPU VCore보다 작아야 합니다.

특수 활용 사례

다음 시나리오에서는 비교를 실행할 때 특수한 처리가 필요합니다.

활용 사례 지원 비교
통합 복제

각 행에 소스 호스트의 ID를 추가하도록 타겟 데이터베이스와 Post 프로세스가 구성된 경우 통합 복제가 지원됩니다. 중앙 타겟 테이블에서 올바른 행을 비교하거나 복원하려면 targetwhere 옵션을 사용하고 소스 ID 값을 기준으로 where 절을 사용합니다.

예를 들어 회사 동부 본사에 있는 데이터베이스의 테이블을 중앙 회사 데이터베이스의 올바른 행과 비교하려면 동부 데이터베이스에 대해 "East"라는 소스 ID를 사용한 다음, 해당 값을 기준으로 targetwhere 절을 설정할 수 있습니다. repair 명령에 동일한 targetwhere 절을 사용합니다. Comparison 및 Repair 프로세스는 소스 ID 값을 사용하여 동부 데이터베이스에 유효한 행만 선택할 수 있습니다.

소스 ID를 식별하는 명령 이외의 통합 복제 구현을 위해 comparison 또는 repair 명령을 사용하면 타겟 행이 원치 않게 삭제될 수 있습니다. 이 구성에 대한 자세한 내용은 SharePlex 관리 안내서를 참조하십시오.

타겟 행이 정확하게 선택되도록 하려면 targetwhere 옵션을 표준 where 옵션과 결합해야 할 수 있습니다.

피어-투-피어 복제

피어-투-피어 구성에서는 어느 시스템이 신뢰할 수 있는 소스 시스템 이고 어느 시스템이 보조 또는 타겟 시스템인지 결정해야 합니다. 보조 시스템은 복원이 수행될 시스템입니다. 피어-투-피어 환경에서 compare 또는 repair를 실행하려면 먼저 다음 단계를 따릅니다.

  1. 보조 시스템에서 사용자 접근을 중지하고 해당 시스템의 복제된 작업이 신뢰할 수 있는 소스 데이터베이스에 게시될 때까지 기다립니다. 사용자는 계속해서 소스 데이터베이스에 접근할 수 있습니다.
  2. 소스 및 보조 시스템에서 qstatus 명령을 실행합니다.
  3. 큐에 메시지가 10개 이하인 경우 소스 시스템에서 compare를 실행합니다.
  4. 비교 중에 sp_xdesvrsp_xdeclt가 시작된 후 소스 및 보조 데이터베이스에 대한 사용자 접근을 허용할 수 있습니다.
  5. 테이블에서 사용자를 잠그지 않고 타겟 테이블에서 선택한 행을 복원하려면 where 옵션과 함께 repair 명령을 사용합니다.

이 구성에 대한 자세한 내용은 SharePlex 관리 안내서를 참조하십시오.

키가 없는 테이블

compare 및 repair 명령은 소스 및 타겟 시스템에서 ORDER BY 절이 포함된 SELECT 문을 실행합니다. 대형 테이블에 기본 키나 null이 아닌 고유 키 및 인덱스(고유 인덱스 권장)가 있는 경우 정렬이 더 빠릅니다. 그렇지 않으면 모든 컬럼이 키로 사용됩니다.

테이블에 고유한 행 식별자가 없지만 행을 고유한 것으로 식별할 수 있는 컬럼이 하나 이상 있는 경우 orderby 옵션과 함께 compare 명령을 사용할 수 있습니다. 이 옵션을 사용하면 SharePlex는 명령이 해당 컬럼을 키로 사용했다는 알림을 소스 시스템의 sp_desvr 로그에 기록합니다.

추가 소스 또는 타겟 컬럼이 있는 테이블

소스 또는 타겟 테이블에 추가 컬럼이 있고 해당 컬럼에 정렬 기준이 되는 고유 값이 포함되어 있는 경우 sourcewhere 또는 targetwhere 절과 함께 compare 명령을 사용합니다. 비교되는 행 제어를 참조하십시오.

XML 데이터에 대한 비교 작업

XML 데이터에 대한 비교 작업을 수행하는 동안 SharePlex에 "ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT" 오류가 표시됩니다.

해결 방법:

  1. Oracle을 버전 19.19 DBRU로 업그레이드

  2. 아래에 나온 Oracle 권장 스크립트를 사용하여 적절한 PGA_AGGREGATE_LIMIT을 설정합니다.

    WITH

    MAX_PGA as

    (select round(value/1024/1024,1) max_pga from v$pgastat where name='maximum PGA allocated'),

    MGA_CURR as

    (select round(value/1024/1024,1) mga_curr from v$pgastat where name='MGA allocated (under PGA)'),

    MAX_UTIL as

    (select max_utilization as max_util from v$resource_limit where resource_name='processes')

    SELECT

    a.max_pga "Max PGA (MB)",

    b.mga_curr "Current MGA (MB)",

    c.max_util "Max # of processes",

    round(((a.max_pga - b.mga_curr) + (c.max_util * 5)) * 1.1, 1) "New PGA_AGGREGATE_LIMIT (MB)"

    FROM MAX_PGA a, MGA_CURR b, MAX_UTIL c

    WHERE 1 = 1;

  3. SharePlex 버전 11.1로 업그레이드하거나 설치합니다.

비교 작동 방식

비교는 DML 작업으로 인해 타겟 테이블에서 동기화 중단 상태를 감지합니다.

  • 추가된 행 또는 누락된 행
  • 값이 일치하지 않는 행

소스 시스템에서 compare 또는 compare using 명령을 실행하면 SharePlex는 다음 이벤트를 시작합니다.

  1. sp_cop 프로세스는 소스 시스템에서 sp_desvr(서버) 프로세스를 생성합니다.
  2. sp_desvr 프로세스는 sp_ctrl 인터페이스의 제어 및 사용을 사용자에게 반환하고 비교가 진행되는 동안 복제가 계속됩니다.
  3. sp_desvr 프로세스는 타겟 시스템에서 sp_declt(클라이언트) 프로세스를 시작하기 위해 Post 프로세스에 메시지를 보냅니다.
  4. 그러면 서버와 클라이언트 프로세스가 서로 직접 통신을 설정합니다.
  5. 프로세스는 소스 테이블과 타겟 테이블의 행 수를 비교하여 온전성 검사를 수행합니다. 소스 테이블과 타겟 테이블 간의 행 수 차이가 20%보다 크면 명령이 종료됩니다. 온전성 검사는 타겟 데이터를 다시 로드하여 더 빠르게 수정할 수 있는 테이블을 비교하거나 복원하는 데 시간이 낭비되는 것을 방지합니다. copy 또는 append 명령을 사용하여 타겟 데이터를 다시 로드하거나 선택한 다른 방법을 사용할 수 있습니다. 온전성 검사를 재정의하려면 override 옵션을 사용하여 비교 명령을 다시 실행합니다.
  6. 온전성 검사를 재정의하려면 override 옵션을 사용하여 compare 명령을 다시 실행합니다.
  7. 행 수가 온전성 검사를 통과하면 테이블이 다음과 같이 비교됩니다.

    • compare 명령을 사용하는 경우 sp_desvr은 소스 행을 선택하고 sp_declt는 타겟 행을 선택한 후 행이 정렬 및 비교됩니다.
    • compare using 명령을 사용하는 경우 sp_desvr 프로세스는 타겟 시스템에 여러 처리 스레드를 생성합니다. SP_DEQ_THREADS 매개변수로 설정된 값은 생성되는 스레드 수를 제어합니다. 각 스레드는 sp_declt(클라이언트) 프로세스를 생성합니다. 그러면 서버와 클라이언트 프로세스가 서로 직접 통신을 설정합니다. 처리 부하는 클라이언트 프로세스 간에 나누어집니다. 각 소스 테이블과 타겟 테이블의 행이 선택, 정렬 및 비교됩니다.
  8. 완료되면 프로세스가 로그 파일을 작성하므로 show compare 명령을 사용하여 결과를 확인할 수 있습니다.

SQL 로그 파일 관리

compare 및 repair 명령은 동기화 중단 행을 복원하는 데 필요한 SQL을 로그 파일과 동일한 위치에 있는 SQL 파일에 기록합니다. compare 명령만 실행된 경우 SharePlex는 이러한 SQL 문을 실행하지 않습니다. repair 명령이 실행되면 이 명령은 SQL 문을 실행하여 동기화 중단 행을 복원한다는 점을 제외하면 compare 명령과 동일하게 작동합니다.

SQL 로그 파일의 출력을 금지할 수 있습니다. 이 파일을 금지하는 몇 가지 이유는 다음과 같습니다.

  • 데이터에는 기밀 정보가 포함되어 있습니다. SQL 로그 파일은 일반 텍스트로 작성됩니다. SQL 로그 파일을 생성하지 않으면 기밀 데이터가 디스크에 보존되지 않으므로 PCI 컴플라이언스 준수 표준을 충족하는 데 필요한 것과 같은 저장 상태 데이터에 대한 보안 요구 사항을 충족할 수 있습니다.
  • 비교되거나 복원된 테이블에는 동기화 중단 행이 매우 많습니다. 이 크기의 로그 파일은 많은 양의 디스크 공간을 차지할 수 있습니다.

SQL 로그 파일을 금지하려면 compare 또는 repair 명령과 함께 nosqllog 옵션을 사용합니다.

SharePlex의 현재 인스턴스가 실행되는 동안 모든 compare와 repair 실행에 대해 SQL 로그 파일의 출력을 금지하려면 SP_SYS_SECURE_MODE 환경 변수를 1로 설정합니다. 이 변수는 SharePlex를 시작하기 전에 설정해야 하므로 sp_cop 프로세스가 실행 중인 경우 이 변수를 설정한 후 재시작해야 합니다. sp_cop이 이 환경 변수와 함께 실행되면 compare 또는 repair 명령은 데이터를 SQL 파일에 넣지 않으며 Post 프로세스는 데이터를 SharePlex 오류 로그에 넣지 않습니다.

여러 프로세스 실행

모든 compare와 repair 명령을 사용하면 여러 프로세스를 동시에 실행할 수 있습니다. 여러 개의 comparerepair 명령이 동시에 작동하여 각각 소스 및 타겟 테이블 쌍을 처리할 수 있습니다. 또는 PostgreSQL 와일드카드와 함께 하나의 명령을 사용하여 여러 테이블 세트를 지정할 수 있습니다. SharePlex가 와일드카드를 지원하는 방법에 대한 자세한 내용은 SharePlex 관리 안내서를 참조하십시오.

복제 프로세스와 compare와 repair 프로세스를 포함하여 최대 20개의 SharePlex 프로세스를 Post 큐에서 동시에 사용할 수 있습니다. 주어진 시간에 최대 5개의 compare와 repair 프로세스를 실행하도록 허용하는 것이 좋습니다.

제한에 도달하여 compare 또는 repair가 실패하면 SharePlex는 이벤트 로그에 메시지를 기록합니다.

참고: edit 명령을 사용하여 이전 명령을 편집하고 새 명령을 생성하면 여러 명령을 더 쉽게 실행할 수 있습니다.

구성의 하위 집합 비교

다음과 같은 방법으로 활성 구성 파일의 하위 집합을 비교할 수 있습니다.

  • 하나의 스키마에 속하는 복제의 모든 테이블을 비교하려면 다음과 같이 와일드카드와 함께 compare 명령을 사용합니다.

    sp_ctrl> compare scott.%

  • 구성 파일의 모든 테이블을 비교하려면 다음과 같이 compare using 명령을 사용합니다.

    sp_ctrl> compare using myconfig

  • 복제 중인 모든 테이블을 하나의 타겟 경로와 비교하려면 다음과 같이 at 옵션과 함께 compare using 명령을 사용합니다.

    sp_ctrl> compare using config.active at prodsys@o.ora112

  • 구성에 있는 테이블의 사용자 지정 하위 집합을 비교하려면 비교 파일에 지정합니다. 비교 파일이란 비교하려는 소스 테이블만 나열하는 일반 텍스트 파일입니다. 타겟 테이블은 비교 시 구성 파일에서 가져옵니다. create config 또는 copy config 명령을 사용하여 비교 파일을 생성할 수 있습니다. 이 파일에 구성 파일이 아님을 확실하게 구분하는 이름을 지정합니다. 자세한 내용은 명령 구문을 참조하십시오.

비교되는 행 제어

comparerepair 명령에는 처리를 위해 선택한 행을 필터링할 수 있는 where 옵션이 있습니다. 기본적으로 이러한 명령은 테이블의 모든 행에 영향을 미치며 소스 테이블에 포함되지 않은 타겟 테이블의 컬럼을 무시합니다.

  • where 옵션을 사용하여 소스 및 타겟 테이블에서 동일한 이름의 컬럼을 기반으로 행을 필터링합니다.

  • 수직으로 파티셔닝된 복제를 사용하는 테이블에는 where 옵션을 사용합니다. 소스 및 타겟 컬럼의 이름은 다를 수 있습니다. where 선택은 소스 컬럼을 기준으로 합니다. SharePlex는 구성 파일에서 컬럼 매핑을 읽어 타겟 테이블에 대한 올바른 WHERE 절을 빌드합니다.
  • 소스 또는 타겟 테이블에 하나 이상의 추가 컬럼이 있고 해당 행에 행 고유성을 결정하는 값이 포함되어 있는 경우 sourcewheretargetwhere 옵션을 사용합니다.

    • 소스 테이블에 추가 컬럼이 포함된 경우 sourcewhere를 사용합니다.
    • 타겟 테이블에 추가 컬럼이 포함된 경우 targetwhere를 사용합니다.

    이 옵션을 올바르게 사용하려면 다음을 수행합니다.

    • 추가 컬럼에는 sourcewhere 또는 targetwhere 옵션 사용합니다.
    • 소스와 타겟 모두에서 이름이 동일한 다른 컬럼에 대해서는 표준 where 옵션을 사용합니다.

    • SharePlexwhere 옵션을 sourcewhere 또는 targetwhere 옵션과 결합하여 완전한 WHERE 절을 만듭니다.

    중요! 추가 행이 있는 타겟 테이블에 대해 compare와 repair를 모두 실행하려는 경우 targetwhere만 사용하여 UPDATE 및 DELETE를 비교하십시오. repair 명령은 INSERT에 대한 올바른 값을 결정할 수 없습니다. 이 문제를 해결하려면 추가 컬럼의 기본값을 설정하거나 삽입된 행을 수동으로 업데이트합니다.

프로세스 식별

compare 또는 repair 명령이 실행될 때마다 작업 ID가 sp_ctrl 디스플레이에 표시됩니다. sp_ctrl 디스플레이를 사용할 수 없는 경우 compare status 명령을 실행하여 작업 ID를 볼 수 있습니다.

sp_ctrl에서 상태 및 결과 보기

비교의 상태 또는 결과를 보려면 sp_ctrl에서 compare status 명령을 사용합니다.

  • 기본 명령은 가장 최근에 시작된 비교 작업과 아직 실행 중인 다른 비교 작업의 처리 상태를 표시합니다.
  • 추가 옵션을 사용하여 내역이 있는 비교 작업에 대한 상태 요약을 표시하거나 비교 작업에 대한 자세한 정보를 표시할 수 있습니다.

자세한 내용은 compare status를 참조하십시오.

경고 및 오류 보기

sp_xdesvrsp_xdeclt 프로세스는 실행되는 시스템에 로그 파일을 기록합니다. 로그는 SharePlex variable-data 디렉토리의 log 하위 디렉토리에 저장됩니다.

sp_xdesvr 프로세스가 작성한 로그 이름은 xdesvr_<jobid>_r.<dbid>_p<process id>.log입니다. 여기서,

  • JobIDSharePlex가 할당한 작업 ID입니다.
  • SID는 소스 테이블이 있는 Oracle 인스턴스의 ORACLE_SID입니다.
  • ProcessIDsp_xdesvr 프로세스의 프로세스 ID입니다.

sp_xdeclt 프로세스에 의해 작성된 파일 이름은 .log 또는 .sql이 추가된 xdeclt_<jobid>-<tableid>_r.<dbid>_p<processid>.log입니다. 여기서,

  • JobID는 작업에 대해 SharePlex이 할당한 작업 ID입니다.
  • TableID는 작업의 테이블에 대해 SharePlex이 할당한 테이블 ID입니다.
  • SID는 소스 테이블이 있는 Oracle 인스턴스의 ORACLE_SID입니다.
  • SourceHost는 소스 호스트의 이름 또는 IP 주소입니다.
  • ProcessIDsp_declt 프로세스의 프로세스 ID입니다.

로그 파일 이름 예:

xdesvr_7_r.aparopka_p4970.log

xdeclt_7-1_r.aparopka_p25095.log

xdeclt_7-1_r.aparopka_p25095_01.sql

디스크 사용량을 제어하기 위해 로그는 순환 방식으로 에이징됩니다. SharePlex는 현재 로그가 크기 제한에 도달하면 새 로그 파일을 생성합니다. 최대 로그 수까지 새 로그가 생성되면 SharePlex는 가장 오래된 로그를 덮어쓰기 시작합니다.

참고: compare using 명령의 경우 로그 파일이 두 개 이상인 경우는 거의 없습니다.

비교 작업 취소

실행 중인 compare 또는 repair 작업을 중지하려면 cancel 명령을 사용합니다.

sp_ctrl(sysA)>cancel JOBID

자세한 내용은 Cancel를 참조하십시오.

비교 내역 및 로그 관리

SharePlex 소스 시스템의 데이터베이스에 완료된 각 작업의 내역을 보존합니다. SP_SYS_JOB_HISTORY_RETENTION 매개변수는 내역이 보존되는 기간을 제어합니다.

요청 시 이 내역을 지우려면 clear history 명령을 사용합니다. SharePlex는 작업 내역을 제거할 때 내역의 소스였던 로그 파일도 제거합니다.

데이터베이스에서 작업 내역을 지우지 않고 소스 시스템에서 로그 파일을 제거하려면 remove log 명령을 사용합니다. 또한 이 명령을 사용하여 타겟 시스템에서 오래된 로그 파일을 제거할 수도 있습니다.

로그 파일의 크기를 제어하려면 SP_DEQ_LOG_FILESIZE 매개변수를 설정합니다.

모든 작업 유형에 대해 하나의 파일만 사용하는 대신 INSERT, UPDATE 및 DELETE 작업에 대해 별도의 SQL 파일을 생성하려면 log Split 옵션을 사용합니다.

배치 크기 제어

프로세스가 SELECT 쿼리를 수행하는 경우 가져오는 행 블록의 크기를 제어할 수 있습니다. 블록 크기는 SP_DEQ_MALLOC 매개변수에 설정된 값을 기준으로 계산됩니다. 사용할 비교 스레드 수로 값을 균등하게 나눈 다음, 합산된 모든 컬럼의 크기를 기준으로 다시 계산합니다.

동기화 중단 행 복원

비교를 통해 발견된 동기화 중단 행을 복원하려면 repair 또는 repair using 명령을 사용합니다. Repair/repair using을 참조하십시오.

사용
지원되는 소스: Oracle
지원되는 타겟: Oracle
인증 수준: 운영자(2)
문제 위치: 소스 시스템
관련 명령: Repair/repair using
구문
구문 설명

필수 명령 구성 요소

구성 요소 설명
compare owner.source_table[.partition]

기본 명령은 모든 소스 행을 모든 타겟 행과 비교합니다.

owner.source_table은 소스 테이블의 소유자 및 이름입니다. 이름 내에서 대소문자 구분이나 공백을 적용하려면 큰따옴표를 사용합니다(예: “HR”.emp).

와일드카드 테이블 이름(소유자 이름은 제외)이 지원됩니다. 비교하려면 이 명령에서 와일드카드를 충족하는 테이블이 활성 복제 구성에 나열되어야 합니다(명시적으로 또는 와일드카드로). SharePlex가 와일드카드를 처리하는 방법에 대한 자세한 내용은 SharePlex 관리 안내서를 참조하십시오.

sp_ctrl(sysA)>compare scott.emp

sp_ctrl(sysA)>compare scott.emp.west

compare using filename

기본 명령은 모든 소스 행을 filename에 나열된 테이블의 모든 타겟 행과 비교합니다.

filename은 비교하려는 소스 테이블의 이름이 포함된 파일 이름입니다.

sp_ctrl(sysA)>compare using sales

선택적 명령 구성 요소

구성 요소 설명
at target_host@o.target_sid

compare에 유효

소스 테이블을 해당 타겟 중 하나와만 비교합니다. 소스 테이블이 여러 타겟 시스템에 복제될 때 사용합니다.

target_host는 타겟 시스템의 이름입니다.

target_SID는 타겟 Oracle 인스턴스의 ORACLE_SID입니다.

sp_ctrl(SysA)>compare scott.emp at prod@o.prodsid

for o.SID

compare에 유효

소스 테이블이 포함된 Oracle 인스턴스를 지정합니다. 동일한 소스 테이블이 시스템의 여러 Oracle 인스턴스에 있는 경우에 사용합니다.

SID는 소스 인스턴스의 ORACLE_SID입니다. 대소문자를 구분하며 oratab 파일이나 V$PARAMETER 테이블에 나타나는 대로 입력해야 합니다.

이 옵션을 사용하는 경우 필수 명령 인수 뒤에 나타나야 하지만 다른 옵션과 함께 순서에 관계없이 나타날 수 있습니다.

sp_ctrl(SysA)>compare scott.emp for o.oraA

hint "hint"

compare에 유효

SELECT 문에 Oracle 힌트를 포함합니다. 힌트는 소스 시스템과 타겟 시스템에서 사용됩니다.

"hint"는 2000자 이하의 표준 Oracle 힌트입니다. 전체 힌트를 큰따옴표로 묶습니다. 힌트 문자열에서 선행 /*+ 및 후행 */를 생략합니다. SharePlex를 통해 추가됩니다.

이 옵션을 사용하는 경우 필수 명령 인수 뒤에 나타나야 하지만 다른 옵션과 함께 순서에 관계없이 나타날 수 있습니다.

sp_ctrl(SysA)>compare scott.emp where “file >001005” hint “emp(salary)”

운영 체제의 명령줄에서 비교를 실행할 때 따옴표가 있는 문자열에는 다음 예와 같이 이스케이프된 큰따옴표의 추가 세트가 있어야 합니다.

/productdir/bin/sp_ctrl compare scott.emp hint “\“emp(salary)\””

{include | exclude} "(column_list"

compare에 유효

비교할 컬럼을 필터링합니다.

  • 비교할 컬럼을 지정하려면 include를 사용합니다. 다른 컬럼은 비교되지 않습니다. include 절에 모든 키 컬럼을 포함해야 합니다.
  • exclude로 지정된 컬럼을 제외한 모든 컬럼을 비교하려면 exclude를 사용합니다. 키 컬럼을 제외하지 마십시오.

(column_list)는 포함하거나 제외할 컬럼 목록입니다.

  • 각 이름은 쉼표로 구분합니다. 컬럼 이름에 공백이 포함되어 있지 않으면 목록에 공백이 허용되지 않습니다.
  • 컬럼 목록을 큰따옴표로 묶습니다.
  • 순서에 관계없이 컬럼을 나열합니다. 정렬은 오름차순으로 수행됩니다.
  • 컬럼 이름은 대소문자를 구분하지 않습니다.
  • 이 옵션을 사용하는 경우 명령의 필수 인수 뒤에 나타나야 하지만 다른 옵션과 함께 순서에 관계없이 나타날 수 있습니다.

참고: 비교되지 않은 컬럼에 동기화 중단 상태인 행이 여전히 있을 수 있습니다.

sp_ctrl(SysA)>compare scott.emp exclude "color, weight"

key

compare 및 compare using에 유효

큰 테이블을 빠르게 비교합니다. 이 명령이 모든 데이터 값을 비교하는 것은 아닙니다. 다음 중 하나를 비교합니다.

  • 기본 키 또는 null이 아닌 유니크 키 컬럼만 비교합니다.

    또는...

  • orderby 옵션으로 지정된 컬럼을 비교합니다. 테이블에 키가 없는 경우 이 옵션을 사용합니다.

중요: 키 또는 orderby 값이 일치하더라도 다른 컬럼의 값이 일치하지 않으면 테이블이 동기화 중단 상태로 유지됩니다.

이 옵션을 사용하는 경우 필수 명령 인수 뒤에 나타나야 합니다. 다른 옵션과 함께 어떤 순서로든 나타날 수 있습니다.

SharePlex 키 정의를 기준으로 비교하는 데 이 옵션을 사용하지 마십시오. SharePlex 키 정의에 대한 자세한 내용은 SharePlex 관리 안내서를 참조하십시오.

sp_ctrl(SysA)>compare scott.emp key

sp_ctrl(sysA)>compare using sales key

log rowdata

compare 및 compare using에 유효

해시 값이 아닌 실제 행 데이터를 기록하는 SQL 파일을 생성하도록 클라이언트 프로세스에 지시합니다. 파일은 타겟 시스템에서 생성됩니다. 비교하는 테이블에 LONG, LOB 및 VARRAY가 있는 경우 log rowdata를 사용하지 마십시오. 이러한 데이터 유형의 값이 매우 큰 경우 SharePlex는 실제 데이터를 기록하지 못할 수 있습니다.

중요! 이 SQL 파일의 목적은 비교된 데이터의 보기를 제공하는 것입니다. 이 파일을 타겟 테이블을 복원하는 데 사용하지 마십시오. 명령이 실행될 때 캡처된 데이터 값은 현재 데이터베이스에 있는 값과 다를 수 있습니다. repair 명령을 사용하여 동기화 중단 행을 복원할 수 있습니다.

sp_ctrl(sysA)>compare scott.emp log rowdata

sp_ctrl(sysA)>compare using sales log rowdata

log split

compare 및 compare using에 유효

작업 유형에 따라 SQL 파일을 INSERT용, UPDATE용, DELETE용의 세 가지 파일로 분할하도록 클라이언트 프로세스에 지시합니다.

sp_ctrl(sysA)>compare scott.emp log split

sp_ctrl(sysA)>compare using sales log split

{nolocktarget | nolocksource}

compare에 유효

복원이 포함된 실행의 비교 단계 중에 compare 프로세스가 테이블을 잠그는 것을 방지합니다. 일반적으로 SharePlex는 읽기 일관성 뷰를 얻기 위해 비교 중에 타겟 테이블을 일시적으로 잠근 후 잠금을 즉시 해제하지만 SharePlex는 복원 중에 항상 타겟 테이블을 잠급니다. SharePlex는 읽기 일관성 뷰를 얻기 위해 복원 중에 소스 테이블을 일시적으로 잠급니다.

nosqllog

SQL 로그 파일의 출력을 금지합니다. 이 파일에는 동기화 중단 행을 복원하는 데 필요한 SQL이 포함되어 있습니다. 이 파일을 출력하지 않는 몇 가지 이유는 다음과 같습니다.

  • 데이터에는 기밀 정보가 포함되어 있습니다. SQL 로그 파일은 일반 텍스트로 작성됩니다. SQL 로그 파일을 생성하지 않으면 기밀 데이터가 디스크에 보존되지 않으므로 PCI 컴플라이언스 준수 표준을 충족하는 데 필요한 것과 같은 저장 상태 데이터에 대한 보안 요구 사항을 충족할 수 있습니다.
  • 비교되거나 복원된 테이블에는 동기화 중단 행이 매우 많습니다. 이 크기의 로그 파일은 많은 양의 디스크 공간을 차지할 수 있습니다.
notexception_list

compare에 유효

테이블 사양에 와일드카드가 포함된 경우 비교하지 않을 테이블의 예외 목록을 지정합니다.

exception_list”는 비교하지 않을 테이블의 이름 목록입니다.

  • owner.tablename 형식을 사용합니다.
  • 각 이름은 쉼표로 구분합니다. 목록에는 공백이 허용되지 않습니다.
  • 목록을 큰따옴표로 묶습니다.
  • 순서에 관계없이 테이블을 나열합니다.
  • 이 옵션을 사용하는 경우 명령의 필수 인수 뒤에 나타나야 하지만 다른 옵션과 함께 순서에 관계없이 나타날 수 있습니다.

sp_ctrl(SysA)>compare scott.% not (%temp%)

orderbycolumn_list

compare에 유효

비교할 행을 정렬할 때 ORDERBY 절에서 사용할 compare 프로세스의 컬럼을 지정합니다. 이 옵션을 사용하면 기본 키나 유니크 키가 없는 테이블에서 비교를 수행할 수 있습니다.

column_list”는 ORDERBY 절에서 사용할 컬럼의 이름입니다.

  • 각 이름은 쉼표로 구분합니다. 컬럼 이름에 공백이 포함되어 있지 않으면 목록에 공백이 허용되지 않습니다.
  • 컬럼 목록을 큰따옴표로 묶습니다.
  • 순서에 관계없이 컬럼을 나열합니다. 정렬은 오름차순으로 수행됩니다.
  • 컬럼 이름은 대소문자를 구분하지 않습니다.
  • 이 옵션을 사용하는 경우 명령의 필수 인수 뒤에 나타나야 하지만 다른 옵션과 함께 순서에 관계없이 나타날 수 있습니다.

sp_ctrl(SysA)>compare scott.emp where “file >001005” orderby “Last Name,Division”

운영 체제의 명령줄에서 비교를 실행할 때 따옴표가 있는 문자열에는 다음과 같이 이스케이프된 큰따옴표의 추가 세트가 있어야 합니다.

/productdir/bin/sp_ctrl compare scott.emp orderby “\“Last Name,Division\””

override

compare 및 compare using에 유효

온전성 검사를 재정의하고, 온전성 검사 임계값을 초과해 동기화 중단 상태인 테이블을 비교할 수 있습니다. 동기화 중단 상태인 테이블을 비교하는 대안은 copy 명령을 사용하여 타겟 테이블을 다시 로드하는 것입니다(copy/append 참조). 온전성 검사에 대한 자세한 내용은 비교 작동 방식을 참조하십시오.

예:

SP_ctrl(sysA) > compare scott.emp override

SP_ctrl(sysA) > compare using sales override

port port_number

compare 및 compare using에 유효

소스 시스템이나 타겟 시스템에서 SharePlex 버전이 8.0 이전인 경우 이전 버전과의 호환성을 위해 사용할 수 있습니다.

클라이언트 프로세스가 서버 프로세스와의 통신에 사용할 소스 시스템의 포트를 지정합니다. SharePlex의 이전 버전에서는 통신이 양방향이며 클라이언트-서버 통신에 기본적으로 임의의 포트 번호가 선택됩니다. 이 옵션을 사용하면 방화벽에서 요구하는 것과 같은 특정 포트 번호로 임의의 포트 선택이 재정의됩니다.

sp_ctrl(sysA)>compare scott.emp port 1234

quickcheck

compare 및 compare using에 유효

동기화 중단 행이 있는지 확인하기 위해 초기 검사를 수행합니다. 동기화 중단 행이 하나라도 감지되면 프로세스가 즉시 중지됩니다. 추가 정보는 반환되지 않습니다. 동기화 중단 행 정보는 비교 SQL 파일에 기록되지 않습니다.

이 옵션을 옵션이나 where 옵션과 함께 사용하지 마십시오.

이 옵션은 LONG 컬럼을 지원하지 않습니다.

sp_ctrl(sysA)>compare scott.emp quickcheck

sp_ctrl(sysA)>compare using sales quickcheck

parallelismdegree

compare 및 compare using에 유효

SELECT 문에 병렬 힌트를 추가합니다. degree의 경우 병렬 처리 수준을 설정합니다.

sp_ctrl(sysA)>compare scott.emp parallelism 4

sp_ctrl(sysA)>compare using sales parallelism 4

sourcewhereclause

compare에 유효

타겟 테이블에 해당 컬럼이 없는 경우 소스 테이블에 있는 하나 이상의 컬럼을 기준으로 비교합니다.

  • clause를 큰따옴표로 묶고 정규화된 이름으로 테이블을 참조합니다(예: scott.emp).
  • 테이블 이름 내에서 대소문자 구분이나 공백을 적용하려면 큰따옴표를 사용합니다.
  • 날짜는 'YYYYSMMDDHH24MISS' 형식이어야 합니다. 날짜를 해당 형식으로 변환하려면 Oracle TO_DATE 함수를 사용합니다. 예를 들어 c1이 DATE 컬럼인 경우 WHERE 절 "c1 > '10-SEP-2001'"은 작동하지 않지만 "c1 > to_date('10-SEP-2001', 'DD- MON-YYYY')"가 작동합니다.
  • 운영 체제의 명령줄에서 비교를 실행할 때 따옴표가 있는 문자열에는 다음 예와 같이 이스케이프된 큰따옴표의 추가 세트가 있어야 합니다.

    sp_ctrl>compare scott.emp sourcewhere “\“file >001005\””

  • 이 옵션을 사용하는 경우 필수 명령 인수 뒤에 나타나야 하지만 다른 옵션과 함께 순서에 관계없이 나타날 수 있습니다.

예 #1:

sp_ctrl(sysA)>compare scott.emp sourcewhere “file >001005”

예 #2:

다음 예에서는 sourcewherewhere 옵션을 결합하여 원하는 결과를 얻는 방법을 보여줍니다. 소스 비교 프로세스에서만 sourcewhere 절을 사용하며, 소스 및 타겟 비교 프로세스에서는 모두 where 절을 사용합니다.

sp_ctrl(SysA)>compare scott.emp sourcewhere “deptno = 200” where “mgr = ‘SMITH’”

targetwhere "clause"

compare에 유효

소스 테이블에 해당 컬럼이 없는 경우 타겟 테이블에 있는 하나 이상의 컬럼을 기준으로 비교합니다.

  • 절을 큰따옴표로 묶고 정규화된 이름으로 테이블을 참조합니다(예: scott.emp).
  • 테이블 이름 내에서 대소문자 구분이나 공백을 적용하려면 큰따옴표를 사용합니다.
  • 날짜는 'YYYYSMMDDHH24MISS' 형식이어야 합니다. 날짜를 해당 형식으로 변환하려면 Oracle TO_DATE 함수를 사용합니다. 예를 들어 c1이 DATE 컬럼인 경우 WHERE 절 "c1 > '10-SEP-2001'"은 작동하지 않지만 "c1 > to_date('10-SEP-2001', 'DD- MON-YYYY')"가 작동합니다.
  • 운영 체제의 명령줄에서 비교를 실행할 때 따옴표가 있는 문자열에는 다음과 같이 이스케이프된 큰따옴표의 추가 세트가 있어야 합니다.

    /productdir/bin/sp_ctrl compare scott.emp targetwhere “\“file >001005\””

  • 이 옵션을 사용하는 경우 필수 명령 인수 뒤에 나타나야 하지만 다른 옵션과 함께 순서에 관계없이 나타날 수 있습니다.

예 #1:

sp_ctrl(SysA)> compare scott.emp targetwhere “file >001005”

예 #2:

다음 예에서는 targetwherewhere 옵션을 결합하여 원하는 결과를 얻는 방법을 보여줍니다. 타겟 비교 프로세스에서만 targetwhere 절을 사용하며, 소스 및 타겟 비교 프로세스에서는 모두 where 절을 사용합니다.

sp_ctrl(SysA)>compare scott.emp where “deptno = 200” targetwhere “mgr = ‘SMITH’” repair

threads thread_count

compare 및 compare using에 유효

비교 프로세스에서 사용되는 처리 스레드 수를 설정합니다.

sp_ctrl(sysA)>compare scott.emp threads 4

sp_ctrl(sysA)>compare using sales threads 4

to target_owner.target_table[.partition]

compare에 유효

소스 테이블을 해당 타겟 중 하나와만 비교합니다. 소스 테이블이 여러 타겟 시스템에 복제되고 타겟 테이블의 이름이 다른 경우에 사용합니다.

이 옵션을 사용하여 타겟 파티션을 지정할 수도 있습니다.

compare source_owner.source_table.[source_partition] to target_owner.target_table.[target_partition]

(파티션 비교)

sp_ctrl(SysA)>compare scott.emp.east to scott.allemp.alleast

whereclause

compare에 유효

소스 시스템과 타겟 시스템 모두에서 SELECT 문에 WHERE 절을 포함합니다. WHERE 절은 특정 행을 비교하는 필터 역할을 합니다.

""의 경우 하위 쿼리를 포함하지 않는 표준 WHERE 절을 지정합니다.

  • 절을 큰따옴표로 묶고 정규화된 이름으로 테이블을 참조합니다(예: scott.emp).
  • 테이블 이름 내에서 대소문자 구분이나 공백을 적용하려면 큰따옴표를 사용합니다.
  • 날짜는 'YYYYSMMDDHH24MISS' 형식이어야 합니다. 날짜를 해당 형식으로 변환하려면 Oracle TO_DATE 함수를 사용합니다. 예를 들어 c1이 DATE 컬럼인 경우 WHERE 절 "c1 > '10-SEP-2001'"은 작동하지 않지만 "c1 > to_date('10-SEP-2001', 'DD- MON-YYYY')"가 작동합니다.
  • 이 옵션을 사용하는 경우 필수 명령 인수 뒤에 나타나야 하지만 다른 옵션과 함께 순서에 관계없이 나타날 수 있습니다.

sp_ctrl(SysA)>compare scott.emp where “region=4”

원격 옵션

이러한 옵션을 사용하면 원격 시스템에서 명령을 실행하고 로그인 이름, 비밀번호, 포트 번호 또는 이러한 항목의 조합을 포함하는 명령을 스크립트할 수 있습니다.

옵션 설명
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

The document was helpful.

Select Rating

I easily found the information I needed.

Select Rating