Chat now with support
Chat with Support

SharePlex 11.4 - 참조 안내서

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

remove config

remove config 명령을 사용하여 시스템에서 구성 파일을 영구적으로 삭제할 수 있습니다. 이 명령은 확인 메시지를 표시하지 않으며 구성 파일 제거는 실행 취소할 수 없습니다. 활성 구성은 제거할 수 없습니다. 활성 구성을 제거하려면 먼저 비활성화합니다.

팁: 해당 구성이 이전에 활성화되었고 활성화된 이후 ora_cleansp를 실행하지 않은 경우라면 실수로 삭제된 구성을 복구할 수도 있습니다. 구성을 복구하려면 이벤트 로그를 보고 해당 구성 파일의 활성화 ID를 확인한 다음, SharePlex variable-data 디렉토리의 save 하위 디렉토리에서 conf.actid 파일을 찾습니다. 여기서, actid는 이벤트 로그에서 받은 활성화 ID입니다.

사용

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

구문

기본 명령 원격 옵션
remove config filename

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

구문 설명
구성 요소 설명
filename

제거할 구성의 이름입니다. 구성 이름은 대소문자를 구분합니다.

:

sp_ctrl(sysA)> remove config sales

원격 옵션

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

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

remove log

로그 제거

compare, compare using, repair, copyappend 명령은 소스와 타겟 모두에서 로그 파일을 생성합니다. 작업 정보와 소스 로그 파일은 작업이 SP_SYS_JOB_HISTORY_RETENTION보다 오래되었거나 clear history 명령이 사용되는 경우에 정리됩니다. 데이터베이스에서 작업 내역을 지우지 않고 소스에서 로그 파일을 제거하거나 타겟에서 로그 파일을 제거하려면 remove log 명령을 사용합니다.

예를 들면 다음과 같습니다.

sp_ctrl> remove log age 5

Logs removed

사용

지원되는 소스: Oracle
지원되는 타겟: Oracle
인증 수준: 운영자(2)
실행 대상: 소스 시스템
관련 명령: compare, repair, copy, append

구문

기본 명령 원격 옵션
remove log {all | age days | copy | compare}

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

구문 설명
구성 요소 설명
all

이 인수를 사용하면 모든 로그가 제거됩니다.

:

sp_ctrl(sysA)> remove log all

age days

이 인수를 사용하면 지정된 일수보다 오래된 로그가 제거됩니다.

:

sp_ctrl(sysA)> remove log age 10

copy

이 인수를 사용하면 copy 또는 append 명령에 대한 로그가 제거됩니다.

:

sp_ctrl(sysA)> remove log copy

compare

이 인수를 사용하면 compare 및/또는 repair 명령에 대한 로그가 제거됩니다.

:

sp_ctrl(sysA)> remove log

원격 옵션

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

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

rename config

rename config 명령을 사용하여 구성 파일에 다른 이름을 지정할 수 있습니다. 시스템의 구성 파일 중에서 고유한 이름을 사용합니다.

사용

지원되는 소스: Oracle
지원되는 타겟: 전체
인증 수준: 운영자(2)
실행 대상: 소스 시스템
관련 명령: copy config, edit config, list config, view config

구문

기본 명령 원격 옵션
rename config {filename to newname

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

구문 설명
구성 요소 설명
filename to newname
  • filename은 이름을 바꿀 구성의 이름입니다. 구성 이름은 대소문자를 구분합니다.
  • to는 구문의 필수 부분입니다.
  • newname은 구성에 부여하는 새 이름입니다.

:

sp_ctrl(sysA)> rename config sales to sales2

원격 옵션

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

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

repair/repair using

repairrepair using 명령(통칭하여 repair 명령이라고 함)을 사용하여 타겟 테이블이나 테이블에서 동기화 중단 행을 복원할 수 있습니다.

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

repair 명령은 먼저 비교를 수행하여 복원해야 할 행을 식별한 후에 복원을 수행합니다. 테이블 비교 방법에 대한 자세한 내용은 Compare/compare 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보다 작아야 합니다.

repair 명령을 사용하는 방법

comparison 및 repair 명령을 통해 동기화된 데이터를 유지하기 위해 권장되는 절차는 compare 또는 compare using 명령을 먼저 실행한 후 repair status 명령으로 결과를 보는 것입니다. 이 명령은 동기화 중단 행과 가능한 원인을 보여줍니다. 동기화 중단 상태의 원인을 해결하지 않으면 이번에 행을 복원하더라도 복제는 다시 동기화되지 않게 됩니다. 문제가 해결되면 repair 또는 repair using 명령을 실행합니다.

예비 비교를 수행하지 않고도 repair 또는 repair using 명령을 실행할 수 있습니다. 이 명령은 먼저 비교를 수행하여 동기화 중단 행을 식별한 후 해당 행을 복원합니다. 그러나 향후 동기화 중단 상태를 방지하려면 동기화 중단 상태의 근본 원인을 해결해야 합니다.

동기화 중단 상태의 원인과 해결 방법은 SharePlex 관리 안내서를 참조하십시오.

복원을 실행하는 경우

타겟 테이블을 복원하는 가장 좋은 시기는 크기, 문제의 원인, 동기화 중단 행의 범위 및 사용자를 잠금 설정하려는 기간에 따라 다릅니다. repair를 시작하려면 먼저 다음 사항을 고려하십시오.

  • 테이블 사용자는 일반적으로 테이블을 비교할 때 적용되는 간단한 잠금의 영향을 받지 않지만 Repair 프로세스 중에는 타겟 테이블에서 잠깁니다. 작은 테이블의 경우에는 이 작업이 중단되지 않을 수 있지만 광범위한 복원이 필요한 큰 테이블의 경우 대기 시간이 상당히 길어질 수 있습니다.
  • Post가 해당 테이블에 변경 사항을 적용하고 다른 테이블로 이동하기 전에 복원이 완료될 때까지 기다려야 하는 경우, 타겟 테이블에 대한 잠금으로 인해 게시 성능이 저하될 수 있습니다. 이로 인해 타겟 데이터의 지연 시간이 늘어나고 작업이 Post 큐에 누적됩니다. Post가 변경해야 하는 객체가 복원 중인 객체와는 다른 경우 두 프로세스가 동시에 실행됩니다.
  • 테이블을 즉시 복원해야 하지만 잠금이나 복제 지연 시간을 허용할 수 없는 경우 where 옵션을 사용하여 복원을 특정 행으로 제한할 수 있습니다. 대안은 key 옵션을 사용하는 것이지만 이 옵션을 사용하면 복원 시 일부 동기화 중단 행이 누락될 수 있습니다.

  • 복원이 지연될 수 있는 경우, 즉시 문제 원인을 해결한 후 피크 시간이 아닌 때에 복원을 수행합니다.

특수 활용 사례

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

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

중앙 데이터베이스의 타겟 테이블에는 기여 소스 데이터베이스보다 더 많은 행이 있고, 소스 데이터베이스보다 더 많은 컬럼이 있는 경우가 많습니다. 이 환경에서 repair 명령을 사용할 때는 특별한 고려 사항이 필요합니다.

repair using 명령

repair using 명령은 통합 복제를 지원하지 않습니다. repair using 명령을 사용하면 해당 소스 테이블에 존재하지 않는 타겟 행이 원치 않게 삭제됩니다.

해결 방법으로 통합 복제와 관련된 테이블을 제외하는 구성의 하위 집합을 생성하고 하위 집합 구성을 대신 복원합니다. repair 명령을 사용하여 통합 복제와 관련된 테이블을 복원할 수 있습니다.

repair 명령

각 행에 소스 호스트의 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 명령을 사용합니다.
키가 없는 테이블

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

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

소스 테이블보다 더 많은 컬럼이 있는 타겟 테이블

repairrepair using 명령은 소스 테이블에 포함되지 않은 타겟 컬럼을 무시합니다. repair 명령은 다음을 수행합니다.

  • INSERT는 소스 테이블에 해당 컬럼이 있는 타겟 컬럼에 값을 삽입하지만 추가 컬럼에는 삽입하지 않습니다. NOT NULL 제약 조건이 있지만 기본값이 없는 컬럼은 Oracle 오류를 초래합니다. 타겟 테이블의 추가 컬럼에는 기본값을 사용하는 것이 좋습니다.
  • UPDATE는 소스 테이블에 해당 컬럼이 있는 타겟 컬럼의 값을 재동기화하지만 추가 컬럼의 값은 재동기화하지 않습니다.
  • repair 명령은 일치하는 컬럼의 컬럼 데이터를 기반으로 행을 선택하기 때문에 DELETE는 타겟 테이블의 추가 컬럼에 의해 영향을 받지 않습니다.
UNIQUE 제약 조건이 있는 테이블

UNIQUE 제약 조건으로 정의된 컬럼은 repair 또는 repair using 명령으로 인해 고유 제약 조건 위반 오류가 표시될 수 있습니다. 다음 예에서는 각각 두 개의 컬럼이 있는 소스 및 타겟 테이블을 보여줍니다. 첫 번째 컬럼은 기본 키이고 두 번째 컬럼은 UNIQUE 제약 조건을 갖습니다.

SharePlex가 소스와 일치하도록 타겟 테이블의 행 1을 복원하려고 시도하면 'ABC' 값이 행 2에 이미 존재하기 때문에 컬럼 2의 UNIQUE 제약 조건이 오류를 표시합니다. 'XYZ'가 이미 행 1에 존재하기 때문에 타겟 테이블의 행 2에서도 동일한 오류가 발생합니다. 해결 방법은 다음과 같습니다.

  • repair 명령을 실행하기 전에 타겟 테이블에서 UNIQUE 제약 조건을 비활성화한 다음, 복원이 완료되면 다시 활성화합니다.
  • 고유 제약 조건 위반이 발생한 타겟 행을 삭제한 다음, 복원을 다시 실행하여 SharePlex가 해당 행에 올바른 데이터를 삽입하도록 합니다.
LOB 컬럼이 있는 테이블

타겟 테이블에 LOB 컬럼이 있는 경우 복원 시간이 더 오래 걸립니다. 더 빠른 복원을 위해 compare와 repair 시 LOB 컬럼을 건너뛰도록 SP_DEQ_SKIP_LOB 매개변수를 0으로 설정할 수 있습니다. 자세한 내용은 SP_DEQ_SKIP_LOB 를 참조하십시오.

XML 데이터에 대한 Repair 작업

XML 데이터에 대한 Repair 작업을 수행하는 동안 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로 업그레이드하거나 설치합니다.

복원 진행 방식

repair는 DML 작업으로 인해 발생한 타겟 테이블의 동기화 중단 상태를 복원합니다.

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

복원 조건

repairrepair using 명령을 실행하면 다음과 같은 수정 SQL 문이 실행됩니다.

  • 소스 측에 행이 있지만 타겟 측에는 없는 경우 SharePlex는 INSERT 문을 실행합니다.
  • 타겟 측에 행이 있지만 소스 측에는 없는 경우 SharePlex는 DELETE 문을 실행합니다.
  • 타겟 행이 소스 행과 다르고 키 컬럼이 일치하는 경우 SharePlex는 소스 값을 기반으로 UPDATE 문을 실행합니다.
  • 파티셔닝된 Oracle 테이블에 대해 repair 또는 repair using 명령을 사용하는 경우 repair 프로세스의 기본 동작은 INSERT 및 DELETE만 사용하여 행을 복원하는 것입니다. UPDATE가 필요한 복원은 DELETE 다음에 INSERT로 변환되어 UPDATE로 인해 행의 파티션이 변경되고 테이블에 대해 행 이동이 활성화되지 않는 경우에 오류를 방지합니다. SharePlex가 INSERT, UPDATE 및 DELETE를 적절하게 사용하여 파티셔닝된 테이블을 복원하도록 복원 동작을 변경할 수 있습니다. 자세한 내용은 SP_DEQ_PART_TABLE_UPDATE 를 참조하십시오.

프로세스

repair에는 항상 타겟 테이블에서 동기화 중단 조건을 찾기 위한 compare가 포함됩니다. repair 또는 repair using 명령을 실행하면 SharePlex는 다음과 같은 일련의 이벤트를 시작합니다.

  1. sp_cop 프로세스는 소스 시스템에서 sp_desvr(서버) 프로세스를 생성합니다.
  2. sp_desvr 프로세스는 sp_ctrl 인터페이스의 제어 및 사용을 사용자에게 반환하고 비교가 진행되는 동안 복제가 계속됩니다.
  3. sp_desvr 프로세스는 타겟 시스템에서 sp_declt(클라이언트) 프로세스를 시작하기 위해 Post 프로세스에 메시지를 보냅니다.
  4. 그러면 서버와 클라이언트 프로세스가 서로 직접 통신을 설정합니다.
  5. 행 선택 및 복원은 다음과 같이 진행됩니다.

    • repair 명령을 사용하는 경우 sp_desvr는 소스 테이블에서 행을 선택하고 sp_declt는 타겟 테이블에서 행을 선택합니다. 행이 정렬, 비교 및 복원됩니다.
    • repair using 명령을 사용하는 경우 sp_desvr 프로세스는 타겟 시스템에 여러 처리 스레드를 생성합니다. SP_DEQ_THREADS 매개변수로 설정된 값은 생성되는 스레드 수를 제어합니다. 각 스레드는 sp_declt(클라이언트) 프로세스를 생성합니다. 그러면 서버와 클라이언트 프로세스가 서로 직접 통신을 설정합니다. 처리 부하는 클라이언트 프로세스 간에 나누어집니다. 각 소스 테이블과 타겟 테이블의 행이 선택, 정렬, 비교 및 복원됩니다. 복원할 차례가 되면 타겟 테이블이 잠긴 후에 잠금이 해제됩니다.
    • 복원할 차례가 되면 타겟 테이블이 잠긴 후에 잠금이 해제됩니다.

  6. 완료되면 프로세스가 로그 파일을 작성하므로 show repair 명령을 사용하여 결과를 확인할 수 있습니다.

오류 처리

SharePlex가 복원 SQL 문을 적용할 때 데이터베이스 오류가 발생하는 경우 해당 문부터 복원이 중지되고 이전에 적용된 유효한 문만 커밋됩니다. 따라서 테이블이 부분적으로 복원되었지만 여전히 동기화되지 않을 수 있습니다. repair status 명령은 이러한 경우에 경고를 표시합니다.

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 명령을 사용하여 이전 명령을 편집하고 새 명령을 생성하면 여러 명령을 더 쉽게 실행할 수 있습니다.

구성의 하위 집합 복원

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

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

    sp_ctrl> repair scott.%

  • 구성 파일의 모든 타겟 테이블을 복원하려면 repair using 명령을 사용합니다.

    sp_ctrl> repair using myconfig

  • 하나의 타겟 경로에서 모든 타겟 테이블을 복원하려면 at 옵션과 함께 repair using 명령을 사용합니다.

    sp_ctrl> repair 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에서 repair status 명령을 사용합니다.

  • 기본 명령은 가장 최근에 시작된 복원 작업과 아직 완료되지 않은 기타 작업의 처리 상태를 표시합니다.
  • 추가 옵션을 사용하여 내역이 있는 모든 복원 작업에 대한 요약 상태를 표시하거나 한 작업에 대한 자세한 정보를 표시할 수 있습니다.

자세한 내용은 Repair 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 또는 repair 작업을 중지하려면 cancel 명령을 사용합니다.

sp_ctrl(sysA)>cancel JOBID

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

비교 내역 및 로그 관리

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

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

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

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

배치 크기 제어

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

사용

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

구문

기본 명령 명령 옵션 원격 옵션
repair owner.source_table[.partition]

[ at target_host@o.target_sid ] |

[ for o.source_sid ] |

[hinthint”] |

[ {include | exclude} "column_list" ] |

[ insertonly ] |

[ key ] |

[ nosqllog ] |

[ not "exception_list" ] |

[ onepass ] |

[ orderby "column_list” ] |

[ parallelism degree ] |

[ portport_number ] |

[ sourcewhereclause” ] |

[ threads thread_count ] |

[ targetwhereclause” ] |

[ to target_owner.target_table[.partition] ] |

[ whereclause” ]

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

repair using filename

[ key ] |

[ onepass ] |

[ port port_number ] |

[ threads threads_count ] |

[ parallelism degree ]

[ on host |

on host:portnumber |

on login/password@host |

on login/password@host:portnumber ]

구문 설명
필수 명령 구성 요소
구성 요소 설명
repair owner.source_table[.partition]

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

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

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

sp_ctrl(sysA)>repair scott.emp

repair using filename

기본 명령은 filename에 나열된 타겟 테이블에서 모든 동기화 중단 행을 복원합니다.

filename은 복원할 타겟이 있는 소스 테이블의 이름이 포함된 파일 이름입니다.

sp_ctrl(sysA)>repair using sales

선택적 명령 구성 요소
구성 요소 설명
at target_host@o.target_sid

repair에 유효

소스 테이블이 여러 타겟 시스템에 복제되는 구성에서 타겟 테이블 중 하나만 복원합니다.

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

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

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

for o.SID

repair에 유효

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

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

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

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

hint "hint"

repair에 유효

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

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

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

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

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

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

{include | exclude} "(column_list)"

repair에 유효

복원할 컬럼을 필터링합니다.

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

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

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

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

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

insertonly

repair에 유효

INSERT 문에 대해서만 타겟 테이블을 복원합니다.

sp_ctrl(SysA)>repair scott.emp insertonly

key

repair 및 repair using에 유효

큰 테이블을 빠르게 비교 및 복원합니다. 이 명령은 모든 데이터 값을 비교하지는 않으며 다음 중 하나만 비교합니다.

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

    또는...

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

키 또는 orderby 컬럼이 일치하지 않는 경우 SharePlex는 전체 행을 삭제한 다음, 소스 값에 따라 다시 삽입하여 복원합니다.

중요! 이 옵션은 주의해서 사용하십시오. 키 값이 일치하더라도 키가 아닌 컬럼의 값이 동기화되지 않을 수 있습니다.

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

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

sp_ctrl(SysA)>repair scott.emp key

sp_ctrl(sysA)>repair using sales key

nosqllog

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

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

repair에 유효

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

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

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

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

onepass

repair 및 repair using에 유효

compare와 repair를 동시에 실행하려면 이 옵션을 사용합니다. 동기화 중단 상태인 큰 테이블에 사용합니다.

일반적으로 복원은 두 단계로 실행됩니다. 먼저 비교를 한 다음, 타겟 테이블을 잠그는 복원을 수행합니다. 두 단계 모두 일관된 보기가 필요합니다. onepass를 사용하면 비교 클라이언트가 일관된 보기 마커를 수신하는 즉시 타겟 테이블이 잠기고 복원됩니다.

sp_ctrl(SysA)>repair scott.emp onepass

orderbycolumn_list

repair에 유효

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

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

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

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

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

parallelismdegree

repair 및 repair using에 유효

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

sp_ctrl(sysA)>repair scott.emp parallelism 4

sp_ctrl(sysA)>repair using sales parallelism 4

port port_number

repairrepair using에 유효

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

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

sp_ctrl(sysA)>compare scott.emp port 1234

sourcewhereclause

repair에 유효

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

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

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

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

예 #1:

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

예 #2:

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

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

targetwhere "clause"

repair에 유효

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

  • 절을 큰따옴표로 묶고 정규화된 이름으로 테이블을 참조합니다(예: 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 repair scott.emp targetwhere “\“file >001005\””

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

예 #1:

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

예 #2:

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

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

threads thread_count

repair 및 repair using에 유효

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

sp_ctrl(sysA)>repair scott.emp threads 4

sp_ctrl(sysA)>repair using sales threads 4

to target_owner.target_table [.partition]

repair에 유효

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

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

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

(파티션 복원)

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

whereclause

repair에 유효

소스 시스템과 타겟 시스템 모두에서 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)>repair 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