지금 지원 담당자와 채팅
지원 담당자와 채팅

SharePlex 11.4 - 관리 안내서

이 안내서 정보 이 안내서에 사용된 규칙 SharePlex 개요 SharePlex 실행 SharePlex의 여러 인스턴스 실행 sp_ctrl에서 명령 실행 SharePlex 매개변수 설정 데이터 복제 구성 컨테이너 데이터베이스와의 복제 구성 명명된 큐 구성 파티셔닝된 복제 구성 변경 내역 타겟에 대한 복제 구성 복제 전략 구성 DDL 복제 구성 오류 처리 구성 데이터 변환 구성 보안 기능 구성 SharePlex 사용자를 보안 그룹에 할당 프로덕션 시스템에서 복제 시작 SharePlex 모니터링 복제 문제 방지 및 해결 동기화 중단 데이터 복원 Capture 프로세스 조정 Post 프로세스 조정 Oracle 장애 조치 후 복제 복구 활성 복제 환경 변경 Oracle 애플리케이션 패치 또는 업그레이드 적용 소스 또는 타겟에서 Oracle 데이터 백업 문제 해결 팁 부록 A: 피어-투-피어 다이어그램 부록 B: SharePlex 환경 변수

기타 문제 해결

기타 복제 문제 해결

이 섹션에서는 기타 복제 문제에 대한 해결 방법을 살펴봅니다.

현재 발생한 문제가 이 문서에 나오지 않은 경우 SharePlex 기술 문서를 https://support.quest.com에서 검색하십시오.

기술 문서에서는 SharePlex 사용 및 문제 해결에 도움이 될 수 있는 필터링 옵션과 기타 리소스에 대한 링크를 제공합니다.

일반적인 연결 오류

다음은 sp_ctrl을 시작하거나 sp_ctrl에서 host, port 또는 [on host] 명령을 사용하여 연결을 구성할 때 발생하는 일반적인 오류에 대한 해결 방법입니다.

연결 오류 메시지 설명
오류 원인 해결 방법
Host unknown: cannot form connection host 명령이나 [on host] 옵션이 실행될 때 발생합니다. 연결할 시스템이 실행 중이고 올바른 시스템 이름을 사용하고 있는지 확인합니다.
Network unreachable 네트워크가 중단되었습니다. 네트워크 관리자가 예상하는 지속 시간을 찾아봅니다. 다운타임으로 인해 SharePlex 큐가 디스크 공간을 초과할 수 있는 경우 데이터를 재동기화하지 않도록 조치를 취하십시오. 자세한 내용은 디스크 공간 부족을 해결하는 방법를 참조하십시오.

Export cannot connect to import on hostname: timeout waiting for ack

네트워크 구성으로 인해 연결 시간이 초과되었기 때문에 Export를 타겟에 연결할 수 없습니다. 이는 복제 활동이 거의 없고 네트워크에 시간 초과 설정이 있는 경우에 발생할 수 있습니다.

SP_XPT_KEEPALIVE 매개변수를 1로 설정합니다. 이 설정은 Export 프로세스가 TCP 시간 초과를 방지하기 위해 정기적으로 Import에 "hello" 메시지를 보내도록 지시합니다.

User is not authorized as a SharePlex user -- check /etc/group 작업을 실행할 수 있는 사용자 권한이 없습니다. SharePlex 사용자는 SharePlex 사용자 그룹인 SharePlex Admin, spoper, spview 중 하나의 /etc/group 파일(Unix 및 Linux)에 나열되어야 합니다.
unauthorized connection attempt from host hostname. net 이름이 auth_hosts 파일에 나열되어 있지 않기 때문에 원격 시스템으로부터의 연결이 거부되었습니다. 시스템 이름은 오류 메시지를 참조하십시오. 해당 시스템이 로컬 시스템의 sp_cop에 연결되도록 허용하려면 해당 이름을 auth_hosts 파일에 추가합니다.

일반적인 명령 오류

오류 원인 해결 방법
Deactivate/flush a nonactive datasource 활성화되지 않은 구성을 플러시하려고 합니다. 필요하지 않습니다.
Bad routing specification 라우팅 맵의 구문이 올바르지 않습니다. 자세한 내용은 구성 파일의 라우팅 사양를 참조하십시오.
Status db file is corrupt. 상태 데이터베이스가 손상되었습니다. SharePlex를 종료하고 SharePlex variable-data 디렉토리의 data 하위 디렉토리에 있는 statusdb 파일을 제거합니다. SharePlexsp_cop을 다시 시작하면 다른 하나를 생성합니다.
Parameter does not exist in database.

매개변수를 설정하려고 했으나 잘못된 이름을 입력했거나 매개변수가 SharePlex 버전에서 더 이상 사용되지 않습니다.

list param 명령을 사용하여 해당 버전의 SharePlex 매개변수를 보고 철자를 확인합니다.

Parameter type checking failed - look in param - defaults file. 매개변수에 잘못된 데이터 유형을 입력했을 수 있습니다. 유효한 데이터 유형을 확인하려면 list param 명령을 사용합니다.

Unknown service specified.

or...

No such module.

or...

Service may be only one of: post, read, import, export, capture, all.

유효한 서비스(프로세스) 이름은 Capture, Read, Export, Import, Post입니다. 올바른 이름으로 명령을 다시 실행합니다.

Command was called with an invalid argument.

or…

Unknown keyword used in command.

명령에 유효하지 않은 입력이 포함되어 있습니다. 명령에 대한 유효한 입력을 보려면 help 명령을 실행합니다.
Permission denied for command - check your authorization level. 이 명령을 실행할 수 있는 사용자 그룹의 구성원이 아닙니다. 인증 수준을 보려면 authlevel 명령을 실행합니다.
Default host is not defined: use the ‘host’ command or [on host] option. SharePlex는 명령이 영향을 미치기를 원하는 시스템을 결정할 수 없습니다. host 명령을 사용하여 기본 호스트를 설정하거나 실행할 명령과 함께 [on host]를 사용합니다(사용 가능한 경우).

소스 및 타겟 객체를 재동기화하는 방법

소스 및 타겟 테이블을 재동기화하는 방법

다음 지침은 동기화 중단 테이블을 재동기화하는 방법을 확인하는 데 도움이 됩니다.

동기화 중단 테이블을 수동으로 패치

유효 항목: 모든 데이터베이스 유형

동기화 오류 수가 적은 경우 동기화 중단 테이블을 수동으로 복원해 볼 수 있습니다. Post 프로세스가 동기화 중단 상태를 감지하면 오류를 무시하고 Post 큐의 다음 작업을 계속 적용합니다. 그러나 Post는 동기화 중단 오류를 초래하는 소스 SQL 문을 오류 파일인 ID_errlog.sql에 기록합니다. (IDSharePlex가 ORACLE_SID 또는 데이터베이스 이름과 같은 타겟 인스턴스에 사용하는 식별자입니다.) 데이터베이스의 기본 SQL 인터페이스를 통해 해당 SQL 문을 타겟 테이블에 적용할 수 있습니다. 이 프로시저는 Post에 의한 비교를 우회하기 때문에 타겟 테이블의 구조가 변경되지 않았다고 가정하여 작업이 성공해야 합니다.

SharePlex는 타겟 시스템의 variable-data 디렉토리의 data 하위 디렉토리에서 ID_errlog.sql을 저장합니다. 파일의 항목은 다음 예와 비슷합니다.

-- Host (irvlabua) Sid (al920u64)

-- session 2, 1 error --

--

-- [1] Tue Dec 11 13:31:32 2007

-- redolog seq#/offset 26622/26980368

-- redolog timestamp 641050290 (12/11/15 13:31:30)

-- original rowid AAE0m8AAWAAAAFEAAA

-- -- NOT FOUND

delete from “SP_5”.”QA_LOB_DISABLE_INROW” t where rownum = 1 and “KEY”='01';

SQL을 수동으로 적용하려면 다음을 수행합니다.

  1. 영향을 받은 소스 테이블에 대한 사용자 접근을 중지합니다.
  2. 타겟 시스템에서 ID_errlog.sql 파일을 엽니다.
  3. SQL 문을 타겟 테이블에 적용합니다.
  4. 구성을 변경해야 하는 경우 구성을 다시 활성화합니다.

    sp_ctrl> activate config filename

  5. 소스 테이블에 대한 사용자 접근을 허용합니다.

소스 테이블을 복사하여 재동기화

유효 항목: 모든 데이터베이스 유형

이 프로시저는 소스 테이블의 복사본을 적용하여 동기화 중단 타겟 테이블에 대한 동기화를 복원합니다. 동기화 중단 상태인 테이블만 재동기화하면 사용자가 다른 모든 테이블에 계속 접근할 수 있습니다.

중요! 시작하기 전에 이 프로시저를 살펴보고 사용되는 명령에 대한 자세한 내용은 SharePlex 참조 안내서를 참조하십시오.

  1. 소스타겟 시스템에서 sp_cop이 실행 중인지 확인합니다.
  2. 타겟 시스템에서 sp_ctrl을 실행합니다.
  3. [필요한 경우] 타겟 시스템에서 show sync 명령을 실행하여 동기화 중단 상태인 테이블을 식별합니다.

    sp_ctrl> show sync

  4. 소스 시스템에서 동기화 중단 테이블에 대한 활동을 중지합니다.
  5. 소스 시스템에서 sp_ctrl을 실행합니다.
  6. 소스 시스템에서 flush 명령을 실행합니다.

    참고: 이 명령에는 명명된 큐 또는 여러 타겟과 함께 사용할 수 있는 추가 옵션이 있습니다. 이 명령에 대한 자세한 내용은 SharePlex 참조 안내서를 참조하십시오.

    sp_ctrl> flush datasource

  7. 소스 시스템에서 테이블을 복사합니다.
  8. 구성을 변경해야 하는 경우 소스 시스템에서 구성을 다시 활성화합니다.

    sp_ctrl> activate config filename

  9. 소스 시스템에서 사용자가 소스 테이블로 돌아가는 것을 허용합니다.
  10. 타겟 시스템에서 Post가 중지되었음을 표시할 때까지 status 명령을 실행합니다.

    sp_ctrl> status

  11. 타겟 시스템에서 테이블을 복원합니다.

  12. 타겟 시스템에서 복제 전략의 요구 사항에 따라 트리거, 참조 무결성 제약 조건 및 체크 제약 조건을 비활성화하거나 수정합니다.
  13. 타겟 시스템에서 상태 데이터베이스를 확인하여 각 메시지의 상태 ID를 확인합니다.

    sp_ctrl> show statusdb detail

  14. 타겟 시스템에서 다음 명령을 사용하여 각 메시지를 지웁니다.

    sp_ctrl> clear status statusID

  15. 타겟 시스템에서 Post 프로세스를 시작합니다.

    sp_ctrl> start post

Oracle 전송 가능 테이블스페이스와 재동기화

유효 항목: Oracle 데이터베이스

전송 가능 테이블스페이스 기능을 사용하면 수많은 동기화 중단 테이블을 최소한의 다운타임으로 신속하게 재동기화할 수 있습니다. 전송 가능 테이블스페이스 기능을 사용하려면 테이블스페이스 세트 생성, 테이블스페이스 세트를 타겟 데이터베이스로 이동 및 데이터베이스에 세트 연결에 대한 Oracle 문서의 지침을 따르십시오. 다음 지침에는 이 기능을 사용하여 데이터를 재동기화하는 단계만 포함되어 있습니다. 이 지침은 전송 가능 테이블스페이스 기능을 사용하는 것에 익숙하다고 가정합니다.

중요! 시작하기 전에 이 프로시저를 살펴보고 사용되는 명령에 대한 자세한 내용은 SharePlex 참조 안내서를 참조하십시오.

  1. 소스 시스템에서 소스 테이블스페이스를 READ ONLY로 설정합니다.

    SQL> ALTER TABLESPACE name READ ONLY;

  2. 소스 시스템에서 sp_ctrl을 실행합니다.
  3. 소스 시스템에서 sp_ctrlflush 명령을 실행합니다.

    참고: 이 명령에는 명명된 큐 또는 여러 타겟과 함께 사용할 수 있는 추가 옵션이 있습니다. 자세한 내용은 SharePlex 참조 안내서를 참조하십시오.

    sp_ctrl> flush datasource

  4. Oracle 문서에 따라 메타데이터를 Export 파일로 내보냅니다.
  5. Export가 완료되면 데이터 파일을 소스 시스템의 보조 위치에 복사합니다. 이렇게 하면 파일을 타겟 시스템에 복사할 때 소스 데이터베이스에 미치는 영향이 최소화됩니다.
  6. 소스 시스템에서 소스 테이블스페이스를 READ WRITE 모드로 설정합니다.

    SQL> ALTER TABLESPACE name READ WRITE;

  7. 타겟 시스템에서 복사된 파일이 적용되도록 타겟 데이터베이스의 기존 데이터파일과 테이블스페이스를 삭제합니다.
  8. 소스 시스템의 보조 위치에서 파일을 타겟 시스템으로 복사합니다.
  9. 타겟 시스템에서 Oracle 가져오기 유틸리티를 사용하여 메타데이터 및 테이블스페이스 정의를 가져옵니다.
  10. 타겟 시스템에서 테이블스페이스를 READ WRITE 모드로 설정합니다.

    SQL> ALTER TABLESPACE name READ WRITE;

    참고: SharePlex는 피어-투-피어 복제를 사용하지 않는 한 타겟 테이블에 대한 쓰기 접근 권한이 허용된 유일한 사용자여야 합니다.

  11. 구성을 변경해야 하는 경우 소스 시스템에서 구성을 다시 활성화합니다.

    sp_ctrl> activate config filename

  12. 타겟 시스템에서 sp_ctrl을 실행합니다.
  13. 타겟 시스템에서 Post 프로세스를 시작합니다.

    sp_ctrl> start post

활성 데이터베이스의 Oracle 핫 백업과 재동기화

유효 항목: Oracle 데이터베이스

Oracle 핫 백업과 reconcile 명령을 사용하여 타겟 인스턴스를 재동기화하면 사용자는 백업이 생성되고 적용되는 동안 계속해서 프로덕션 데이터에 접근할 수 있습니다.

중요:
  • 데이터 웨어하우스와 같은 중앙 집중식 보고를 재동기화하기 위해 모든 소스 시스템의 핫 백업을 사용할 수는 없습니다. 하나의 백업은 이전 백업의 데이터를 재정의합니다. 소스 인스턴스 중 하나의 핫 백업을 사용하여 타겟 인스턴스를 설정한 다음, 익스포트/임포트 또는 전송 가능 테이블스페이스와 같은 다른 방법을 사용하여 다른 인스턴스에서 테이블을 복사할 수 있습니다.
  • 피어-투-피어 복제를 재동기화하려면 이 프로시저가 진행되는 동안 모든 보조 소스 시스템을 Quiet 설정해야 합니다. 모든 사용자를 기본 시스템으로 이동한 후 프로시저를 따릅니다. 모든 보조 시스템에서 프로시저를 수행하면 사용자가 해당 시스템에서 활동을 재개할 수 있습니다.
  • 시작하기 전에 이 프로시저를 살펴보고 사용되는 명령에 대한 자세한 내용은 SharePlex 참조 안내서를 참조하십시오.

핫 백업과 재동기화하려면 다음을 수행합니다.

  1. 소스타겟 시스템에서 sp_ctrl을 실행합니다.
  2. 타겟 시스템에서 Post 프로세스를 중지합니다. 이를 통해 타겟 인스턴스가 복구되고 조정될 때까지 복제된 데이터가 Post 큐에 누적될 수 있습니다.

    sp_ctrl> stop post

  3. 소스 시스템에서 Oracle 핫 백업을 실행합니다.
  4. 소스타겟 시스템에서 sp_cop, sp_ctrl 및 모든 SharePlex 프로세스(Capture, Read, Export, Import, Post)가 실행 중인지 확인합니다.

    sp_ctrl> status

  5. 소스 시스템의 로그 파일을 전환합니다.

    • 데이터베이스를 시퀀스 번호로 복구하려면 가장 높은 아카이브-로그 시퀀스 번호를 기록해 둡니다.

    • 데이터베이스를 Oracle SCN(System Change Number)으로 복구하려면 타겟 데이터베이스에서 복구할 SCN을 선택합니다.
  6. 핫 백업에서 타겟 데이터베이스를 복구합니다.

    • 시퀀스 번호로 복구하는 경우 RECOVER 절의 UNTIL CANCEL 옵션을 사용하여 핫 백업에서 데이터베이스를 복구하고, Oracle이 이전 단계의 로그를 완전히 적용하면 복구를 취소합니다.
    • SCN으로 복구하는 경우 RECOVER 절의 UNTIL CHANGE SCN 옵션을 사용하여 핫 백업에서 데이터베이스를 복구하고, Oracle이 이전 단계의 SCN과 일치하는 로그를 적용하면 복구를 취소합니다.
  7. RESETLOGS 옵션을 사용하여 데이터베이스를 엽니다.

  8. 타겟 시스템에서 reconcile 명령을 실행합니다. 명명된 Post 큐를 사용하는 경우 각 큐에 대해 명령을 실행합니다. 큐 이름이 확실하지 않은 경우 qstatus 명령을 실행합니다.

    • 시퀀스 번호로 복구하는 경우 5단계에서 기록한 로그의 시퀀스 번호를 대체합니다.

      sp_ctrl> reconcile queue queuename for datasource-datadest seq sequence_number

      예: reconcile queue SysA for o.oraA-o.oraA seq 1234

    • SCN으로 복구하는 경우 5단계에서 기록한 SCN을 대체합니다.

      sp_ctrl> reconcile queue queuename for datasource-datadest scn scn_number

      예: reconcile queue SysA for o.oraA-o.oraA scn 0123456789

    조정 프로세스는 완료될 때까지 sp_ctrl에 대한 제어권을 유지한 다음, sp_ctrl 프롬프트를 반환합니다.

  9. 타겟 시스템에서 SharePlex Oracle 사용자로 SQL*Plus에 로그인하고 SharePlex product 디렉토리의 bin 하위 디렉토리에 있는 cleanup.sql 유틸리티를 실행합니다. 이 스크립트는 SharePlex 사용자가 소유한 SharePlex 테이블을 자르고 업데이트합니다. 여러 variable-data 디렉토리가 있는 sp_cop의 여러 인스턴스를 실행하는 경우 각 인스턴스마다 SharePlex Oracle 사용자가 있습니다. 복원할 테이블을 소유한 SharePlex 사용자로 이 스크립트를 실행해야 합니다. 스크립트는 SharePlex 사용자 이름과 비밀번호를 묻는 메시지를 표시합니다.

    SQL> @/productdir/bin/cleanup.sql

  10. 타겟 시스템에서 복제 전략에 따라 다음을 비활성화하거나 수정합니다.

    • 트리거
    • 외래 키 제약 조건
    • 단계화 삭제 제약 조건(또는 이를 무시하도록 SharePlex 구성)
    • 체크 제약 조건
    • DML을 수행하는 scheduled job
  11. 구성을 변경해야 하는 경우 소스 시스템에서 구성을 다시 활성화합니다.

    sp_ctrl> activate config filename

  12. 타겟 시스템에서 Post 프로세스를 시작합니다. 이제 두 인스턴스가 동기화되었으며 SharePlex는 계속 복제됩니다.

    sp_ctrl> start post

Oracle 아카이브 로그를 복원하는 방법

Oracle 아카이브 로그를 복원하는 방법

캡처 및 복제를 재개하기 위해 SharePlex를 활성화하여 아카이브 로그를 복원하기로 결정한 경우 다음 프로시저를 사용하여 필요한 아카이브 로그를 결정합니다.

필요한 아카이브 로그를 결정하려면 다음 단계를 수행합니다.

  1. Capture가 처리를 재개해야 하는 시퀀스 번호를 결정합니다. 로그 래핑이 발생하면 Capture가 중지되고 필요한 리두 로그 시퀀스 번호가 포함된 이벤트 로그(event_log)에 메시지가 기록됩니다. 또한 다음 예와 같이 SHAREPLEX_ACTID 테이블을 쿼리하고 SEQNO 컬럼을 확인하여 이 숫자를 찾을 수도 있습니다.

    SQL> select * from splex.shareplex_actid;

    ACTID SEQNO OFFSET AB_FLAG QUE_SEQ_NO_1 QUE_SEQ_NO_2 COMMAND
    ----- ------ -------- -------- ------------- -------------- ------------
    14 114 9757200 0 672101000 0  
  2. Oracle V$LOG_HISTORY 테이블을 쿼리하여 해당 시퀀스 번호가 아카이브된 시기를 확인한 다음, 해당 지점의 로그를 소스 시스템으로 복사합니다.

    SQL> select * from V$LOG_HISTORY;

    RECID STAMP THREAD# SEQUENCE# FIRST_CHANGE# FIRST_TIM NEXT_CHANGE#
    ----- ------ -------- -------- ------------- --------------
    111 402941650 1 111 2729501 14-JUL-00 2729548
    112 402941737 1 112 2729548 14-JUL-00 2729633
    113 402941930 1 113 2729633 14-JUL-00 2781791
    114 402942019 1 114 2781791 14-JUL-00 2836155
    115 402942106 1 115 2836155 14-JUL-00 2890539

프로세스 실패 후 세마포어를 해제하는 방법

데이터베이스 손상이나 기타 시스템 문제로 인해 SharePlex를 종료해야 하는 경우 SharePlex가 사용 중이던 세마포어와 공유 메모리를 해제했는지 확인합니다.

세마포어를 확인하고 해제하려면 다음을 수행합니다.

  1. 종료되지 않은 SharePlex 프로세스를 찾아 종료합니다.

    $ ps -ef | grep sp_

    $ kill -9 PID

  2. 디렉토리를 SharePlex variable-data 디렉토리의 rim 하위 디렉토리로 변경한 다음, shmaddr.locshstinfo.ipc 파일에 대해 od -x 명령을 실행합니다.

    # od -x shmaddr.loc

    0000000 0000 00e1 ed40 0000 4400 9328 0080 0000

    0000020 0002 0021

    0000024

    # od -x shstinfo.ipc

    0000000 0000 00e0 ee90 0000 4100 9328 0010 0000

    0000020 0002 0020

    0000024

  3. 다음 값을 기록해 둡니다.

    • 위의 각 파일의 첫 번째 32비트 단어는 공유 메모리 세그먼트의 ID에 해당하는 16진수를 나타냅니다. 이 값을 10진수로 변환합니다. 예를 들어, 2단계에 표시된 shmaddr.loc 파일에서 첫 번째 단어는 0000 00e1이며 이는 10진수 값 225에 해당합니다. shstinfo.ipc 파일에서 첫 번째 단어는 0000 00e0이며 이는 10진수 값 224에 해당합니다.
    • shmaddr.locshstinfo.ipc 파일의 세 번째 단어는 공유 메모리 세그먼트 및 세마포어의 KEY에 해당하는 16진수를 나타냅니다. (각 세트에는 동일한 키 값이 있습니다.) 이 값을 10진수로 변환하지 마십시오. 예를 들어 shmaddr.loc 파일에서 세 번째 단어는 4400 9328입니다. shstinfo.ipc 파일에서 세 번째 단어는 4100 9328입니다.
    • 각 파일의 다섯 번째 단어는 SEMAPHORE ID입니다. 이 값을 10진수로 변환합니다. 예의 세마포어 ID는 16진수 0002 0021 및 0020 0020이며, 10진수는 각각 131105 및 131104입니다.
  4. 모든 공유 메모리 세그먼트와 세마포어를 보려면 ipcs -smaa 명령을 실행합니다. (공유 메모리 세그먼트가 먼저 나열되며 "m"으로 표시됩니다. 세마포어는 "s"로 표시됩니다.) 표시는 다음과 비슷하지만 더 광범위합니다.

  5. shmaddr.locshstinfo.ipc의 공유 메모리 ID가 목록에 있고 키가 일치하는지 확인합니다.

  6. 각 공유 메모리 세그먼트에 대해 NATTCH 컬럼의 값이 0인지 확인합니다. 이렇게 하면 종료한 SharePlex 프로세스가 메모리 세그먼트를 해제했는지 확인할 수 있습니다.

  7. 세마포어의 경우 세마포어 ID와 키가 파일 값과 일치하는지 확인합니다.

  8. 루트로 ID 값(예에서는 224 및 225)에 대해 ipcrm -m 명령을 실행하여 메모리 세그먼트를 제거합니다.

    # ipcrm -m 224

    # ipcrm -m 225

  9. 루트로 키 값(예에서는 131104 및 131105)에 대해 ipcrm -m 명령을 실행하여 세마포어를 제거합니다.

    # ipcrm -s 131104

    # ipcrm -s 131105

The document was helpful.

평가 결과 선택

I easily found the information I needed.

평가 결과 선택