콘텐츠로 이동

2. XLog Sender#

Log Analyzer의 구성요소 중에서 XLog Sender의 사용법을 설명한다.

XLog Sender는 Log Record들을 XLog로 조합하고, XLog를 XLog Collector에게 전달하는 역할을 한다. XLog Sender는 DBMS 내의 모듈이며, Replication과 거의 동일한 SQL Interface로 관리한다.

XLog Sender를 위한 SQL구문#

XLog Sender 생성#

구문#

CREATE REPLICATION replication_name FOR ANALYSIS [PROPAGATION]
   WITH {{'remote_host_ip', remote_host_ port_no}
   ...
   |UNIX_DOMAIN}
   FROM user_name.table_name TO user_name.table_name
   [, FROM user_name.table_name TO user_name.table_name] ... ;

설명#

XLog Sender를 생성한다.

  • Lazy Mode로 강제 적용된다. Eager Mode 지정은 불가능하다.

  • WITH 절의 'UNIX_DOMAIN'은 UNIX Domain을 사용함을 지정한다.

  • FROM 절에서 외래키(Foreign Key)가 있는 테이블을 지정할 수 있다.

  • PROPAGATION
    XLog Sender가 PROPAGABLE LOGGING을 사용하여 복제한 트랜잭션의 로그를 다른 서버로 전송하기 위해 FOR ANALYSIS PROPAGATION을 사용한다.

나머지는 Replication과 동일하다. 자세한 내용은 Replication Manual을 참고한다.

주의사항#

UNIX Domain은 UNIX와 LINUX에서만 사용할 수 있다.

예제#

XLog Sender 이름: log_analysis

XLog Collector 정보: TCP(IP : 127.0.0.1, PORT : 35300)

IP는 XLog Collector가 실행되는 서버의 IP

PORT는 XLog Collector에서 정의한 PORT 번호

분석 대상 Table: sys.t1

iSQL> CREATE REPLICATION log_analysis FOR ANALYSIS 
      WITH '127.0.0.1', 35300
      FROM sys.t1 TO sys.t1;

XLog Sender 제거#

구문#

DROP REPLICATION replication_name;

설명#

Replication과 동일하다.

자세한 내용은 Replication Manual을 참고한다.

예제#

log_analysis라는 이름의 XLog Sender를 제거한다.

iSQL> DROP REPLICATION log_analysis;

XLog Sender 시작#

구문#

ALTER REPLICATION replication_name {START [AT SN (xlog_sender_start_sn)]|QUICKSTART};

설명#

XLog Sender를 시작시킨다.

  • UNIX Domain Socket을 사용할 때, Socket 파일명은 자동 생성한다.
    Socket 파일명: $ALTIBASE_HOME/trc/rp-replication_name

  • Replication과 달리 Heart-Beat Thread에 등록되지 않는다.

  • Replication Sender와 달리 XLog Sender는 AT SN 절을 이용해서 특정 SN 부터 전송을 시작할 수 있다. xlog_sender_start_sn 는 전송을 시작할 XLog의 SN값이다.

나머지는 Replication과 동일하다. 자세한 내용은 Replication Manual을 참고한다.

주의사항#

수행 전에 XLog Collector가 접속 대기를 하고 있어야 한다.

UNIX Domain을 사용할 때, XLog Collector에 동일한 '$ALTIBASE_HOME' 환경 변수를 설정해야 한다.

그리고, OS마다 Socket 파일명의 최대 길이가 다르므로, 이를 확인하여 최대 길이를 초과하지 않도록 한다.

AT SN 절과 함께 XLog Sender를 시작하려면, 다음의 조건을 만족해야 한다.

  • 아카이브로그 모드로 데이터베이스가 구동되어 있어야 한다.

  • 이중화 전용 로그 버퍼가 사용되지 않도록 설정되어 있어야 한다. 즉, REPLICATION_LOG_BUFFER_SIZE 프로퍼티의 값이 0이어야 한다.

예제#

log_analysis라는 이름의 XLog Sender를 마지막으로 종료한 위치부터 시작한다.

iSQL> ALTER REPLICATION log_analysis START;

XLog Sender 종료#

구문#

ALTER REPLICATION replication_name STOP;

설명#

Replication과 동일하다.

자세한 내용은 Replication Manual을 참고한다.

예제#

log_analysis라는 이름의 XLog Sender를 중지한다.

iSQL> ALTER REPLICATION log_analysis STOP;

분석 대상 Table 추가#

구문#

ALTER REPLICATION replication_name ADD TABLE
FROM user_name.table_name TO user_name.table_name;

설명#

분석 대상 Table을 추가한다.

FROM 절에서 Foreign Key가 있는 Table을 지정할 수 있다.

나머지는 Replication과 동일하다.

자세한 내용은 Replication Manual을 참고한다.

예제#

XLog Sender 이름: log_analysis

분석 대상 리스트에 추가할 Table: sys.t2

iSQL> ALTER REPLICATION log_analysis ADD TABLE  
    FROM sys.t2 TO sys.t2;

분석 대상 Table 제거#

구문#

ALTER REPLICATION replication_name DROP TABLE
   FROM user_name.table_name TO user_name.table_name;

설명#

Replication과 동일하다.

자세한 내용은 Replication Manual을 참고한다.

예제#

XLog Sender 이름: log_analysis

분석 대상 리스트에서 제거할 Table: sys.t2

iSQL> ALTER REPLICATION log_analysis DROP TABLE
   FROM sys.t2 TO sys.t2;

호스트 추가#

구문#

ALTER REPLICATION replication_name  
      ADD HOST 'remote_host_ip', remote_port_no;

설명#

Replication과 동일하다.

자세한 내용은 Replication Manual을 참고한다.

주의사항#

TCP/IP 연결 타입의 호스트만 추가할 수 있다.

이미 UNIX Domain연결을 지정한 경우에는 호스트를 추가할 수 없다.

예제#

XLog Sender 이름: log_analysis

XLog Collector 정보: TCP(IP : 127.0.0.1, PORT : 30301)

iSQL> ALTER REPLICATION log_analysis ADD HOST '127.0.0.1', 30301;

호스트 제거#

구문#

ALTER REPLICATION replication_name  
   DROP HOST 'remote_host_ip', remote_port_no;

설명#

Replication과 동일하다.

자세한 내용은 Replication Manual을 참고한다.

주의사항#

TCP/IP 연결 타입의 호스트만 제거할 수 있다.

예제#

XLog Sender 이름: log_analysis

XLog Collector 정보: TCP(IP : 127.0.0.1, PORT : 30301)

iSQL> ALTER REPLICATION log_analysis DROP HOST '127.0.0.1', 30301;

호스트 지정#

구문#

ALTER REPLICATION replication_name
   SET HOST 'remote_host_ip', remote_port_no;

설명#

Replication과 동일하다.

자세한 내용은 Replication Manual을 참고한다.

주의사항#

  • 새로 지정한 호스트는 XLog Sender를 시작할 때 적용된다.

  • TCP/IP연결 타입의 호스트만 지정할 수 있다.

예제#

XLog Sender 이름: log_analysis

XLog Collector 정보: TCP(IP : 127.0.0.1, PORT : 30301)

iSQL> ALTER REPLICATION log_analysis SET HOST '127.0.0.1', 30301;

XLog Flush#

구문#

ALTER REPLICATION replication_name FLUSH [ALL] [WAIT timeout_sec];

설명#

Replication과 동일하다.

자세한 내용은 Replication Manual을 참고한다.

주의사항#

XLog Collector가 ACK를 전송하지 않으면, Timeout이 발생할 수 있다.

예제#

XLog Sender 이름: log_analysis

Flush 기준 위치: 수행 시점

Timeout: 10 초

iSQL> ALTER REPLICATION log_analysis FLUSH WAIT 10;

메타 테이블#

Replication과 동일한 메타 테이블(Meta Table)을 사용한다.

각각의 메타 테이블에 대한 자세한 내용은 General Reference를 참고한다.

SYSTEM_.SYS_REPLICATIONS_#

XLog Sender의 설정 및 상태 정보를 가진다. ROLE 컬럼의 값이 1인 경우, XLog Sender임을 나타낸다.

SYSTEM_.SYS_REPL_HOSTS_#

XLog Sender가 접속할 대상 (XLog Collector)의 정보를 가진다. UNIX Domain연결 호스트인 경우, HOST_IP 컬럼 값은 "UNIX_DOMAIN"이고 PORT_NO 컬럼 값은 HOST_NO 컬럼 값과 같다.

SYSTEM_.SYS_REPL_ITEMS_#

로그 분석 대상 테이블의 정보를 가진다.

성능 뷰#

Replication과 동일한 성능 뷰(Performance View)를 제공한다.

각각의 성능 뷰에 대한 자세한 내용은 General Reference를 참고한다.

V$REPEXEC#

관리자 정보를 가진다.

V$REPSENDER#

XLog Sender의 정보를 보여준다.

UNIX Domain연결인 경우, SENDER_IP와 PEER_IP 컬럼 값은 "UNIX_DOMAIN"이고 SENDER_PORT와 PEER_PORT 컬럼 값은 0이다.

V$REPSENDER_TRANSTBL#

XLog Sender의 Transaction Table 정보를 가진다.

V$REPGAP#

로그 분석 진도에 대한 정보를 가진다.