디스크 공간 부족을 해결하는 방법
이 항목은 복제를 방해할 때 발생할 수 있는 디스크 공간 문제를 해결하는 데 도움이 됩니다. 가능한 원인은 복제 문제 해결 를 참조하십시오.
타겟에서 디스크 공간을 절약하는 방법
SharePlex는 타겟 시스템에 SQL 문을 사용하여 게시하는 것보다 훨씬 빠르게 데이터를 캡처 및 처리하므로 네트워크가 작동하고 데이터가 소스에서 전송된다는 가정하에 타겟은 대부분의 디스크 문제가 발생할 수 있는 곳입니다. Post 큐가 디스크 공간을 초과할 수 있다고 생각되면 Post 큐가 지워질 때까지 소스 시스템에 데이터를 일시적으로 저장할 수 있는 충분한 여유 공간이 있을 수 있습니다.
타겟의 디스크 공간을 절약하려면 다음을 수행합니다.
- Import 프로세스를 중지합니다.
- Post가 Post 큐를 지울 만큼 충분한 메시지를 처리할 때까지 소스 시스템에 데이터가 누적되도록 합니다.
- Import를 시작합니다.
- Post 큐에 누적되는 데이터의 양이 일정해질 때까지 Import를 계속해서 중지하고 시작합니다.
이 방법을 구현할 때에는 소스 시스템에서 복제 서비스 및 디스크 사용량을 모니터링하십시오. Unix 및 Linux 시스템에서는 sp_ps스크립트를 사용하여 프로세스를 모니터링하고 sp_qstatmon 모니터링 스크립트를 사용하여 큐를 모니터링할 수 있습니다.
디스크 공간을 복원하는 방법
큐 디스크의 디스크 공간이 부족하면 이벤트 로그에 다음과 유사한 메시지가 표시될 수 있습니다.
11/22/07 14:14 System call error: No space left on device bu_wt.write [sp_mport(que)/1937472]
11/22/07 14:14 System call error: No space left on device bu_rls.bu_wt [sp_mport(que)/1937472]
11/22/07 14:14 Error: que_BUFWRTERR: Error writing buffer to file que_writecommit(irvspxuz+P+o.a920a64z-o.a102a64z) [sp_mport(rim)/1937472] 11/22/07 14:14 Error: sp_mport: rim_writecommit failed 30 - exiting [sp_mport/ 1937472]
11/22/07 14:14 Process exited sp_mport (from irvspxuz.domain.com queue irvspxuz) [pid = 1937472] - exit(1)
큐 디스크의 여유 공간이 거의 부족한 경우 데이터를 재동기화하지 않고도 디스크 공간을 추가할 수 있습니다.
디스크 공간을 복원하려면 다음을 수행합니다.
- 영향을 받는 시스템에서 SharePlex를 중지합니다.
- 디스크 공간을 더 추가합니다.
- SharePlex를 시작합니다.
-
이벤트 로그를 확인하고 "queue recovery started" 및 "queue recovery complete" 메시지를 찾습니다.
- 두 메시지가 모두 있으면 SharePlex가 중지되고 복구가 성공한 위치에서 처리를 재개합니다. 애플리케이션이 대량의 트랜잭션을 생성하는 경우 큐에 백로그된 메시지가 많이 있을 수 있습니다. 트랜잭션의 특성, 타겟 데이터베이스와 Post 프로세스가 잘 조정된 정도, 지연 시간에 대한 허용 범위에 따라, 복제가 트랜잭션 활동과의 패리티를 다시 얻을 때까지 기다리는 대신 데이터를 재동기화하는 것이 더 실용적일 수 있습니다.
- 하나 이상의 큐가 손상된 경우 이벤트 로그에 Bad header magic... 또는 peekahead failure와 같은 메시지가 기록됩니다. 또는 queue recovery started 메시지가 표시되지만 성공적인 큐 복구를 나타내는 queue recovery complete 메시지는 표시되지 않습니다. 이 경우 복제를 초기 상태로 복원해야 합니다.
복제를 초기 상태로 복원하려면 다음을 수행합니다.
- db_cleansp를 실행하여 variable-data 디렉토리와 SharePlex 테이블을 복원합니다. 영향을 받는 복제 구성의 모든 시스템에서 실행되어야 합니다. SharePlex 참조 안내서의 유틸리티 문서를 참조하십시오.
- 선택한 방법을 사용하여 데이터를 동기화한 다음, 구성을 다시 활성화합니다. 자세한 내용은 프로덕션 시스템에서 복제 시작를 참조하십시오.
- SharePlex 모니터링 유틸리티를 사용하여 큐 볼륨 경고를 포함한 주요 복제 이벤트의 무인 모니터링을 시작하면 이 문제가 다시 발생하는 것을 방지할 수 있습니다. 자세한 내용은 SharePlex 모니터링를 참조하십시오.
ORACLE_SID 및 ORACLE_HOME을 찾는 방법
Oracle 데이터베이스와 작동하도록 SharePlex를 설정할 때 사용자가 ORACLE_SID를 제공하면 SharePlex가 Unix/Linux의 oratab 파일에서 ORACLE_HOME을 가져옵니다. 두 값 모두 SharePlex 환경에 저장됩니다. SharePlex는 ORACLE_HOME으로 지정된 위치에 있는 Oracle 라이브러리를 사용합니다.
SharePlex에서 사용 중인 ORACLE_SID 및 ORACLE_HOME을 확인하려면 다음을 수행합니다.
sp_ctrl에서 orainfo 명령을 실행합니다.
sp_ctrl (mysysl11:2101)> orainfo
Oracle instance #1:
Oracle SID ora12
Oracle HOME /oracle/products/12
Oracle 버전 12
Oracle instance #2:
Oracle SID ora12
Oracle HOME /oracle/products/12
Oracle 버전 12
UNIX 및 Linux에서 기본 ORACLE_SID 및 ORACLE_HOME을 확인하려면 다음을 수행합니다.
대부분의 Unix 및 Linux 시스템에서 oratab 파일은 /etc/oratab에 있습니다. Oracle Solaris 시스템에서는 /var/opt/oracle에 있지만 경우에 따라 /etc 디렉토리에도 oratab 파일이 있습니다.
파일의 항목은 다음 예와 같습니다.
qa12:/qa/oracle/ora12/app/oracle/product/12.0
이 예에서 qa12는 ORACLE_SID이고 /qa/oracle/ora12/app/oracle/product/12.0은 ORACLE_HOME입니다.
동기화 중단 데이터 복원
이 장에는 SharePlex compare와 repair 기능에 대한 개요가 포함되어 있습니다. SharePlex는 이 기능을 Oracle 테이블에 대한 기본 지원으로 제공하여 소스 시스템과 타겟 시스템 간에 동기화된 데이터를 유지 관리할 수 있습니다.
내용
Compare와 Repair 개요
복제 상태 및 성능을 정기적으로 모니터링하는 것 외에도 소스 데이터와 타겟 데이터를 지속적으로 비교하여 모든 데이터가 계속 동기화되는지 확인하는 것이 좋습니다. Post는 처리 중인 행에 대해 동기화 중단 상태를 감지하지만 숨겨진 동기화 중단 상태가 있을 수 있습니다. 이러한 예로는 타겟에 적용된 DML 또는 불완전한 백업 복원이 있습니다. Post가 동기화 중단 행에 영향을 미치는 작업을 적용할 때까지 이러한 조건은 감지되지 않을 수 있습니다. SharePlex Compare와 Repair 기능을 사용하면 숨겨진 동기화 중단 상태를 감지하고 복원할 수 있습니다.
참고: 숨겨진 동기화 중단 상태가 어떻게 발생할 수 있는지 알아보려면 동기화의 개념 이해를 참조하십시오.
SharePlex는 동기화 중단 데이터를 비교하고 복원하기 위한 다음 명령을 제공합니다.
- compare: 개별 소스 테이블을 해당 타겟 테이블과 비교하거나 동일한 스키마에 있는 와일드카드 테이블 세트를 비교합니다.
- compare using: 파일에서 입력을 가져와 활성 복제 구성의 일부 또는 전체 테이블을 비교합니다.
- repair: 동일한 스키마에서 개별 타겟 테이블 또는 와일드카드 테이블 세트를 복원합니다.
- repair using: 파일에서 입력을 가져와 활성 복제 구성의 일부 또는 전체 테이블을 복원합니다.
지원되는 소스 및 타겟
Oracle-Oracle, PostgreSQL-PostgreSQL
서버 및 클라이언트 프로세스 개요
compare 및 repair 명령은 항상 소스 시스템에서 실행됩니다. 이 명령은 소스 시스템에서 서버 프로세스를 생성한 다음, SharePlex 큐를 통해 메시지를 보내 타겟 시스템에서 클라이언트 프로세스를 생성합니다.
그러면 서버와 클라이언트 프로세스가 서로 통신을 시작합니다. 명령에 포함된 구문 옵션에 따라 프로세스는 타겟에서 다중 스레드될 수 있습니다. 두 프로세스는 소스 테이블과 타겟 테이블을 비교한 후 그 결과를 로그 파일에 기록합니다.
를 방문하십시오.
잠금 관리 방법
비교 중에 SharePlex는 소스 및 타겟 테이블에 대한 간단한 배타적 잠금을 획득하여 해당 행 선택에 대한 읽기 일관성을 얻습니다. 이는 SharePlex가 처리하는 동안 행 데이터의 일관성을 보장합니다. 잠금이 해제된 후 읽기 일관성 뷰를 사용하면 소스와 타겟 모두에서 동일한 방식으로 행이 읽히고 정렬됩니다. 그런 다음, 행 배치가 읽히고 체크섬이 수행됩니다. 체크섬이 일치하면 다른 행 배치도 동일한 방식으로 처리됩니다. 체크섬이 일치하지 않는 경우 프로세스는 동기화 중단 행을 확인한 다음, 이를 복원하기 위한 SQL 문을 생성합니다. 다른 프로세스에서 해당 데이터를 수정하지 못하도록 repair 프로세스 중에 타겟 테이블이 잠겨 있습니다.
WHERE 절, targetWHERE 또는 sourceWHERE 옵션이 제공되면 조건과 일치하는 행 집합만 잠깁니다. (이는 PostgreSQL 데이터베이스에만 적용됨)