복제 트랜잭션 튜닝
Replicat는 일반 SQL을 사용하므로 해당 성능은 대상 데이터베이스의 성능과 적용 중인 SQL 유형(삽입, 갱신, 삭제)에 따라 달라집니다. 그러나 Replicat 효율성을 최대화하기 위한 특정 단계를 수행할 수 있습니다.
장벽 거래에 대한 조정 성능 튜닝
조정된 Replicat 구성에서 기본 키 업데이트와 같은 장벽 트랜잭션은 데이터베이스에 대한 커밋 수를 늘리고 Replicat의 GROUPTRANSOPS 기능의 이점을 방해합니다. 조정된 Replicat의 전체 작업 로드에 많은 수의 장벽 트랜잭션이 있는 경우 많은 수의 스레드를 사용하면 실제로 Replicat 성능이 저하될 수 있습니다.
많은 수의 장벽 트랜잭션이 예상되는 경우 높은 성능을 유지하려면 다음을 수행할 수 있습니다.
-
그룹의 활성 스레드 수를 줄입니다. 그러면 Replicat가 수행하는 전체 커밋 수가 줄어듭니다.
-
대부분의 장벽 트랜잭션과 종속성이 있는 모든 테이블을 고려하는 테이블을 스레드 수가 적은 별도의 조정된 Replicat 그룹으로 이동합니다. 원래 Replicat 그룹에서 최소 장벽 트랜잭션이 있는 테이블을 더 많은 수의 스레드로 유지하여 장벽 트랜잭션으로 인한 중단 없이 병렬 성능이 유지되도록 합니다.
-
(Oracle RAC) 새 Replicat 구성에서 Replicat 체크포인트 테이블의
PCTFREE속성을 늘릴 수 있습니다. 그러나 이 작업은 Replicat가 처음 시작되기 전에 수행해야 합니다.PCTFREE의 권장 값은 90입니다.
키가 없는 경우 전체 테이블 스캔 방지
대상 테이블에 기본 키, 고유 키 또는 고유 인덱스가 없는 경우 Replicat는 모든 열을 사용하여 WHERE 절을 작성합니다. 이것은 기본적으로 전체 테이블 스캔입니다.
행을 더 효율적으로 선택하려면 TABLE 및 MAP 문에서 KEYCOLS 절을 사용하여 하나 이상의 열을 고유로 식별합니다. Replicat는 지정된 열을 키로 사용합니다. 다음 예제는 TABLE 문의 KEYCOLS 절을 보여줍니다.
TABLE hr.emp, KEYCOLS (FIRST_NAME, LAST_NAME, DOB, ID_NO);
사용 지침 및 구문은 Oracle GoldenGate용 매개변수 및 함수 참조에서 TABLE 및 MAP 매개변수를 참조하십시오.
대형 트랜잭션 분할
대상 데이터베이스에서 소스 데이터베이스의 큰 트랜잭션을 처리할 수 없는 경우 Replicat 매개변수 MAXTRANSOPS를 사용하여 일련의 작은 트랜잭션으로 분할할 수 있습니다. 자세한 내용은 Oracle GoldenGate에 대한 매개변수 및 함수 참조를 참조하십시오.
주: MAXTRANSOPS은 Oracle AI Database 시스템의 통합 Replicat에 유효하지 않습니다.
열린 커서 조정
Replicat 프로세스는 캐시된 SQL 문 및 SQLEXEC 작업에 대한 커서를 유지 관리합니다. 커서가 충분하지 않으면 Replicat가 더 많은 명령문을 생성해야 합니다. 기본적으로 Replicat는 MAXSQLSTATEMENTS 매개변수에서 허용하는 만큼 많은 커서를 유지 관리합니다. 이 파라미터의 값을 늘려야 할 수도 있습니다. 이 경우 데이터베이스에서 허용하는 최대 열린 커서 수를 조정해야 할 수도 있습니다. 자세한 내용은 Oracle GoldenGate에 대한 매개변수 및 함수 참조를 참조하십시오.
업데이트 속도 향상
블록 단편화가 지나치게 많으면 Replicat가 SQL 문을 일반 속도보다 느리게 적용합니다. 단편화가 많은 테이블을 재구성한 다음 Replicat를 중지했다가 시작하여 새 객체 ID를 등록합니다.
Replicat 트랜잭션 시간 초과 설정
TRANSACTIONTIMEOUT 매개변수를 사용하면 커밋되지 않은 Replicat 대상 트랜잭션이 대상 데이터베이스에 대한 잠금을 보유하지 못하고 해당 리소스를 불필요하게 사용하지 못하게 할 수 있습니다. Replicat가 기존 응용 프로그램 시간 초과 및 대상의 기타 데이터베이스 요구 사항 내에서 작동할 수 있도록 이 매개변수의 값을 변경할 수 있습니다.
TRANSACTIONTIMEOUT는 해당 트랜잭션의 마지막 소스 트랜잭션에 대한 트랜잭션 종료 레코드를 수신하지 않은 경우 Replicat가 대상 트랜잭션을 열어 둘 수 있는 시간을 제한합니다. 기본적으로 Replicat는 성능을 향상시키기 위해 여러 소스 트랜잭션을 하나의 대상 트랜잭션으로 그룹화하지만 부분 소스 트랜잭션을 커밋하지 않으며 해당 마지막 레코드에 대해 무기한 대기합니다. Replicat 매개변수 GROUPTRANSOPS는 그룹화된 대상 트랜잭션의 최소 크기를 제어합니다.
다음 이벤트는 TRANSACTIONTIMEOUT를 트리거할 만큼 오래 지속될 수 있습니다.
-
네트워크 문제로 인해 추적 데이터가 대상 시스템으로 전달되지 않습니다.
-
시스템에서 디스크 공간이 부족하여 트레일 데이터가 기록되지 않도록 합니다.
-
추출 비정상 종료 또는 트랜잭션에 대한 레코드 작성 중 종료됩니다.
-
정전이나 시스템 충돌과 같은 소스 시스템 오류가 있습니다.
자세한 내용은 Oracle GoldenGate용 매개변수 및 함수 참조의 TRANSACTIONTIMEOUT를 참조하십시오.