제3장 설치 및 제거

내용 목차

3.1. 설치
3.1.1. 단방향 동기화 모드
3.1.2. Source Cluster DB 동기화 모드
3.1.3. 1:N 단방향 동기화 모드
3.1.4. 양방향 동기화 모드
3.1.5. IP 주소 설정
3.2. 설치 확인
3.3. 제거

본 장에서는 단방향, 양방향 동기화 모드에 대한 ProSync의 설치 및 제거 방법에 대해서 설명한다.

3.1. 설치

본 절에서는 단방향과 양방향 동기화 모드의 설치 방법에 대해서 설명한다.

3.1.1. 단방향 동기화 모드

ProSync를 설치할 때 Source DB와 Target DB에 각각 접속하여 ProSync 실행에 필요한 여러 가지 오브젝트들을 생성한다. 따라서 설치할 때 각 DB가 반드시 운영 중이어야 한다.

prs_install.cfg 파일을 먼저 시스템 환경에 맞게 설정한 후 아래와 같이 prs_install.sh 파일을 실행한다. prs_install.cfg 파일의 설정하는 방법은 “2.9. 설치용 환경설정 파일 설정”을 참고한다.

prs_install.sh는 다음과 같이 사용할 수 있다.

. prs_install.sh [option] [config file] [list file]
  • [option]

    prs_install.sh에서는 -h, -c, -l 옵션이 있다.

    항목설명
    -h도움말을 출력한다.
    -c환경설정 파일을 지정한다.
    -l동기화리스트 파일을 지정한다.
  • 입력 항목

    항목설명
    [config file]

    -c 옵션으로 설치에 사용하는 설정 파일을 입력한다.

    (기본값: prs_install.cfg)

    [list file]

    -l 옵션으로 동기화 대상 리스트가 적힌 파일을 설정한다.

    (기본값: prs_obj_group1.list)

참고

Source DB와 Target DB가 서로 다른 머신에 있고, 각각 ProSync를 설치하는 경우에는 Source DB가 있는 머신에 먼저 설치한 후 Target DB가 있는 머신에 설치해야 한다.

다음은 옵션 없이 prs_install.cfg 파일로 설치하는 예제이다. prs_install.sh 파일을 실행한 후 prs_install.cfg에 패스워드 옵션을 입력하지 않은 경우 각 계정에 대한 패스워드를 순서대로 입력해야 한다.

$ cd $PRS_HOME/install
$. prs_install.sh
********************************************************************************
* Check System Parameters (1/6)
********************************************************************************
Checking system type... Linux
Checking PRS_HOME... /home/prosync
Checking TB_HOME... /home/tibero
Checking ORACLE_HOME... /u01/app/oracle/product/11.2.0/xe

********************************************************************************
* Check Installation Parameters (2/6)
********************************************************************************
Checking configuration file... ok
Checking TOP_ID... prosync4
Checking PRS_USER... prosync
Checking PRS_TS_NAME... prosync4_ts
Checking PRS_TS_FILE... prosync4_ts.dtf
Checking PRS_TS_SIZE... 1G
Checking PRS_EXT_IP... %
Checking PRS_APPLY_IP... %
Checking RULE_DB_TYPE... TIBERO
Checking RULE_INSTALL_USER... sys
Checking RULE_DB_NAME... tb_src
Checking rule connection(1/2)... ok
Checking rule connection(2/2)... ok
Checking SRC_DB_CNT... 1
Checking SRC_DB_TYPE... TIBERO
Checking SRC_INSTALL_USER... sys
Checking SRC_DB_NAME... tb_src
Checking source connection(1/2)... ok
Checking source connection(2/2)... ok
Checking TAR_DB_CNT... 1
Checking TAR_DB_TYPE[0]... TIBERO
Checking TAR_INSTALL_USER[0]... sys
Checking TAR_DB_NAME[0]... tb_tar
Checking target connection [tb_tar](1/2)... ok
Checking target connection [tb_tar](2/2)... ok

********************************************************************************
* Install to Source Database (3/6)
********************************************************************************
Checking archived log mode... ok
Checking log mining parameters [tb_src]... ok
Checking Undo spanning parameter [tb_src]... ok
Dropping ProSync objects... ok
Dropping ProSync tablespace... ok
Creating ProSync tablespace... ok
Dropping ProSync user... ok
Creating ProSync user... ok
Granting privileges... ok
Granting privileges for trigger... ok
Creating ProSync internal tables... ok
Creating ProSync internal package... ok
Creating ProSync internal trigger... ok
Checking source object file... ok
Building source object for TEST.T1... ok
Building source object for TEST.T2... ok
Building source object for TEST.T3... ok
Adding table supplemental log... 4, and one for prosync
  "PROSYNC"."PRS_DUMMY_TBL" : Supplemental logging set
  "TEST"."T1" : supplemental log already exists, continue.
  "TEST"."T2" : supplemental log already exists, continue.
  "TEST"."T3" : supplemental log already exists, continue.
  prosync.PRS_DUMMY_TBL : supplemental log already exists, continue.
Counting total source objects... 4
Generating initial DDL history... ok
Checking initial DDL history... ok
Insert default value in PRS_DUMMY_TBL...ok
Querying NLS_CHARACTERSET... MSWIN949
Querying NLS_NCHAR_CHARACTERSET... UTF16
Switching logfile... ok
Querying current log sequence [tb_src]... 82
Querying current snapshot#... 2155965

********************************************************************************
* Install to Target Database (4/6)
********************************************************************************
Dropping ProSync objects... ok
Dropping ProSync tablespace... ok
Creating ProSync tablespace... ok
Dropping ProSync user... ok
Creating ProSync user... ok
Granting privileges... ok
Creating ProSync internal tables... ok
Generating initial construct history [tb_src (group 1)]... ok
Generating initial commit history... ok

********************************************************************************
* Install to Rule Database (5/6)
********************************************************************************
Dropping ProSync objects... ok
Creating ProSync internal tables... ok

********************************************************************************
* Generate Configuration Parameters (6/6)
********************************************************************************
Generating Wallet... ok
Generating Manager configuration... prs_mgr.cfg
Generating Extract [tb_src] configuration... ok
Generating Apply [tb_tar] configuration... ok
Generating LONG/LOB configuration... ok
Generating Admin Tool configuration... prs_adm.cfg
Generating VERIFY configuration... t2t_vf.cfg
Generating ProSync configuration... t2t_rule.cfg
Generating Topology Map... prs_top.map

********************************************************************************
* ProSync is installed successfully on Tue, 21 Mar 2017 14:45:07 +0900.
*
*   PRS_HOME     = /home/prosync/trunk
*   Binary Path  = /home/prosync/bin
*   ProSync User = prosync
*
*   Archived Log Path   = /home/tibero/database/tb_src/archive/
*   Archived Log Format = log-t%t-r%r-s%s.arc
*
*   Initial log sequence# = 82
*   Initial change# (TSN) = 2155965
*
********************************************************************************

설치 중에 오류가 발생할 경우 디버깅이 가능하도록 오류가 발생한 부분 또는 문장과 관련 오류 메시지를 로그 파일에 출력하고 설치를 중단한다. 오류에 대한 자세한 내용은 prs_install.log 파일에 저장된다.

********************************************************************************
* Check System Parameters (1/6)
********************************************************************************
Checking system type... Linux
Checking PRS_HOME... /home/prosync
Checking TB_HOME... /home/tibero
Checking ORACLE_HOME... /u01/app/oracle/product/11.2.0/xe

********************************************************************************
* Check Installation Parameters (2/6)
********************************************************************************
Checking configuration file... ok
Checking TOP_ID... prosync4
Checking PRS_USER... prosync
Checking PRS_TS_NAME... prosync4_ts
Checking PRS_TS_FILE... prosync4_ts.dtf
Checking PRS_TS_SIZE... 1G
Checking PRS_EXT_IP... %
Checking PRS_APPLY_IP... %
Checking RULE_DB_TYPE... TIBERO
Checking RULE_INSTALL_USER... sys
Checking RULE_DB_NAME... tb_src
Checking rule connection(1/2)... ok
Checking rule connection(2/2)... ok
Checking SRC_DB_CNT... 1
Checking SRC_DB_TYPE... TIBERO
Checking SRC_INSTALL_USER... sys
Checking SRC_DB_NAME... tibero_src
Checking source connection(1/2)... ok
Checking source connection(2/2)... ok
Checking TAR_DB_CNT... 1
Checking TAR_DB_TYPE[0]... TIBERO
Checking TAR_INSTALL_USER[0]... sys
Checking TAR_DB_NAME[0]... tb_tar
Checking target connection [tb_tar](1/2)... ok
Checking target connection [tb_tar](2/2)... ok

********************************************************************************
* Install to Source Database (3/6)
********************************************************************************
Checking archived log mode... ok
Checking log mining mode... ok
Dropping ProSync objects... ok
Dropping ProSync user... failed
    TBR-7165: Unable to drop a user that is currently connected.

Please refer to prs_install.log for detailed error messages.  

3.1.2. Source Cluster DB 동기화 모드

Source DB가 클러스터 환경인 경우(Tibero TAC, Oracle RAC), 설치 파라미터에 추가적인 설정이 필요하다.

다음은 Source DB가 클러스터 환경인 경우의 추가적으로 설정하는 환경설정 예제(prs_install.cfg)이다.

SRC_DB_TYPE=TIBERO
SRC_DB_NAME=tibero_src
SRC_INSTALL_USER=sys
SRC_INSTALL_PWD=tibero

SRC_DB_CNT=2
SRC_DB_ALIAS[0]=tibero_node_1
SRC_DB_ALIAS[1]=tibero_node_2
.....
SRC_DB_ALIAS[n]=tibero_node_n    

위와 같이 설정하는 경우 설치 이후 extract config 파일은 각 노드 갯수만큼 생성되며, 각 노드별로 config 설정이 가능하다.

3.1.3. 1:N 단방향 동기화 모드

1:N 동기화는 하나의 Source DB에 유입된 데이터를 N개의 Target DB 체계에 전파한다.

1:N 단방향 동기화 모드를 설치하는 경우에는 Target DB의 갯수와 종류에 맞게 설치 파라미터를 설정하고 설치를 수행한다.

다음은 Target DB가 2개일 경우의 환경설정 예제(prs_install.cfg)이다.

TOP_ID=prosync4_1
PRS_USER=prosync_1
PRS_PWD=tibero
PRS_TS_NAME=prs_ts
PRS_TS_FILE=prs_ts.dtf
PRS_TS_SIZE=1G

SRC_DB_TYPE=TIBERO
SRC_DB_NAME=tb_src
SRC_INSTALL_USER=sys
SRC_DB_PWD=tibero

RULE_DB_TYPE=TIBERO
RULE_INSTALL_NAME=tb_tar
RULE_INSTALL_USER=sys
RULE_INSTALL_PWD=tibero

TAR_DB_CNT=2

TAR_DB_TYPE[0]=TIBERO
TAR_DB_NAME[0]=tb_tar1
TAR_INSTALL_USER[0]=sys
TAR_INSTALL_PWD[0]=tibero

TAR_DB_TYPE[1]=TIBERO
TAR_DB_NAME[1]=tb_tar2
TAR_INSTALL_USER[1]=sys
TAR_INSTALL_PWD[1]=tibero

3.1.4. 양방향 동기화 모드

양방향 동기화는 Source DB와 Target DB가 서로 유입된 데이터를 상대방 체계에 전파한다.

양방향 모드를 위해서는 Source DB로부터 Target DB로의 단방향 설치를 수행한 후에 Source DB와 Target DB를 반대로 설정하여 단방향 설치를 다시 한 번 수행한다.

참고

1. 양방향 동기화 모드를 설정한 경우 ProSync가 동기화한 내용을 다시 반대로 동기화하려는 현상이 일어나지 않게 설치 후 EXCLUDE_USER 파라미터에 PRS_USER를 반드시 등록해야 한다. EXCLUDE_USER에 대한 자세한 설명은 "ProSync 관리자 안내서"의 "Appendix.A Introduction to Initialization Parameters"에서 확인 가능하다.

2. 양방향 동기화 모드를 설정한 경우 정합성을 지켜주기 위해 RESOLVE OPTION을 설정해야 한다. 자세한 내용은 "ProSync 관리자 안내서"의 "3.2.1. MAP Rule 설정"의 "RESOLVE OPTION "를 참고한다. 양방향 동기화 모드를 설정한 경우 동기화 테이블들은 Primary key를 필수적으로 포함해야 한다.

설치 순서는 다음과 같다.

  1. Source DB에서 Target DB로의 단방향 동기화 설치

    Source DB의 환경에 따라 설치용 환경설정 파일($PRS_HOME/install/prosync4_1.cfg)을 설정한다.

    TOP_ID=prosync4_1
    PRS_USER=prosync_1
    PRS_PWD=tibero
    PRS_TS_NAME=prs_ts
    PRS_TS_FILE=prs_ts.dtf
    PRS_TS_SIZE=1G
    
    SRC_DB_TYPE=TIBERO
    SRC_DB_NAME=tb_src
    SRC_INSTALL_USER=sys
    SRC_DB_PWD=tibero
    
    RULE_DB_TYPE=TIBERO
    RULE_INSTALL_NAME=tb_tar
    RULE_INSTALL_USER=sys
    RULE_INSTALL_PWD=tibero
    
    TAR_DB_CNT=1
    TAR_DB_TYPE[0]=TIBERO
    TAR_DB_NAME[0]=tb_tar
    TAR_INSTALL_USER[0]=sys
    TAR_DB_PWD[0]=tibero

    환경설정 파일을 설정한 후에 다음을 수행한다.

    prs_install.sh -c prosync4_1.cfg
  2. Target DB에서 Source DB로의 단방향 동기화 설치

    Target DB의 환경에 따라 설치용 환경설정 파일($PRS_HOME/install/prosync4_2.cfg)을 설정한다.

    TOP_ID=prosync4_2
    PRS_USER=prosync_2
    PRS_PWD=tibero
    PRS_TS_NAME=prs_ts
    PRS_TS_FILE=prs_ts.dtf
    PRS_TS_SIZE=1G
    
    SRC_DB_TYPE=TIBERO
    SRC_DB_NAME=tb_tar
    SRC_INSTALL_USER=sys
    SRC_DB_PWD=tibero
    
    TAR_DB_CNT=1
    TAR_DB_TYPE[0]=TIBERO
    TAR_DB_NAME[0]=tb_src
    TAR_INSTALL_USER[0]=sys
    TAR_DB_PWD[0]=tibero

    환경설정 파일을 설정한 후에 다음을 수행한다.

    prs_install.sh -c prosync4_2.cfg

3.1.5. IP 주소 설정

ProSync는 config directory의 prs_top.map을 통해 IP 주소를 관리한다. ext와 apply 프로세스가 서로 다른 머신에 있다면, 원격 머신에서 기동할 프로세스의 IP 주소와 포트 번호를 로컬 머신의 prs_top.map에 명시해야 한다.

다음은 Source DB 머신의 prs_top.map에 Target DB 머신의 manager, apply 프로세스 IP 주소가 명시된 예제이다.

MGR=(ID=lmgr)(HOST=localhost)(PORT=7600)
MGR=(ID=tmgr)(HOST=192.168.1.1)(PORT=8600)

prosync4=(
    EXT1=(MGR=lmgr)(HOST=localhost)(PORT=7610)(PROGRAM=prs_oext)
    APPLY1=(MGR=tmgr)(HOST=192.168.1.1)(PORT=7620)(PROGRAM=prs_apply)
    LLOB=(MGR=lmgr)(HOST=localhost)(PORT=7630)(PROGRAM=prs_ollob)
    VF=(MGR=lmgr)(HOST=localhost)(PORT=7640)(PROGRAM=prs_vf)
)

IPv6 주소를 사용하려면, 네트워크 인터페이스를 '%' 문자와 함께 입력하여 아래와 같이 명시해야 한다.

MGR=(ID=lmgr)(HOST=localhost)(PORT=7600)
MGR=(ID=tmgr)(HOST=fe80::1%eth0)(PORT=8600)

prosync4=(
    EXT1=(MGR=lmgr)(HOST=localhost)(PORT=7610)(PROGRAM=prs_oext)
    APPLY1=(MGR=tmgr)(HOST=fe80::1%eth0)(PORT=7620)(PROGRAM=prs_apply)
    LLOB=(MGR=lmgr)(HOST=localhost)(PORT=7630)(PROGRAM=prs_ollob)
    VF=(MGR=lmgr)(HOST=localhost)(PORT=7640)(PROGRAM=prs_vf)
)     

참고

IPv6로 통신할 프로세스의 경우 해당 프로세스의 config file에 초기 파라미터 'IP_VERSION'을 6으로 설정해주어야 한다. IP_VERSION에 대한 자세한 설명은 "ProSync 관리자 안내서"의 "2.1. 초기 파라미터"를 참고한다.

ext 프로세스 장비 설정

ext 프로세스가 실행될 장비에는 config 폴더의 prs_ext.cfg, prs_mgr.cfg, prs_top.map 파일을 설정해야 한다. 이 때, Target DB가 Oracle일 경우 ORACLE_HOME이, Tibero 일 경우 TB_HOME이 설정되어 있어야 한다.

다음은 prs_ext.cfg의 예제이다.

################################################################################
#
# ProSync (Ext) Initialization Parameters
#
################################################################################
LISTENER_PORT=7610

TOP_ID=prosync4

LOG_LEVEL=5

PRS_USER=prosync
PRS_PWD=#encrypted

EXTRACT_NUM=1

SRC_DB_TYPE=ORACLE
SRC_DB_NAME=XE

ARCHIVE_LOG_DIR=/home/oracle/archivelog
ARCHIVE_LOG_FORMAT=prosync1_%s_%t_%r.arc

LOG_DIR=/home/prosync4/var/PRO11/log
LOG_BACKUP_DIR=/home/prosync4/var/PRO11/log/backup

CLIENT_DRIVER=/home/oracle/lib/libclntsh.so
RULE_DB_IP=172.17.0.1
SRC_DB_IP=172.17.0.1
RULE_DB_PORT=1521
SRC_DB_PORT=1521

다음은 prs_mgr.cfg의 예제이다.

################################################################################
#
# ProSync (Manager) Initialization Parameters
#
################################################################################

LISTENER_PORT=7600

LOG_LEVEL=5
LOG_DIR=/home/prosync4/var/mgr/log
LOG_BACKUP_DIR=/home/prosync4/var/mgr/log/backup

apply 프로세스 장비 설정

apply 프로세스가 실행될 장비에는 prs_apply.cfg, prs_mgr.cfg, prs_top.map 파일을 설정해야 한다. 이 때, Source DB가 Oracle일 경우 ORACLE_HOME이, Tibero 일 경우 TB_HOME이 설정되어 있어야 한다.

다음은 prs_apply.cfg의 예제이다.

################################################################################
#
# ProSync (Apply) Initialization Parameters
#
################################################################################

LISTENER_PORT=8620

TOP_ID=prosync4

LOG_LEVEL=5

PRS_USER=prosync
PRS_PWD=#encrypted

APPLY_NUM=1

TAR_DB_TYPE=TIBERO
TAR_DB_NAME=tibero_tar

SRC_DB_CNT=1

MAP=(TABLE DEFAULT)

DDL=(INCLUDE DEFAULT, TYPE=('ALTER TABLE','TRUNCATE TABLE'))

LLOB_APPLY_MODE=SYNC

LOG_DIR=/home/prosync4/var/PRO11/log
LOG_BACKUP_DIR=/home/prosync4/var/PRO11/log/backup

CLIENT_DRIVER=/home/tibero/client/lib/libtbodbc.so
RULE_DB_IP=172.17.0.1
RULE_DB_PORT=1521

다음은 prs_mgr.cfg의 예제이다.

################################################################################
#
# ProSync (Manager) Initialization Parameters
#
################################################################################

LISTENER_PORT=8600

LOG_LEVEL=5
LOG_DIR=/home/prosync4/var/mgr/log
LOG_BACKUP_DIR=/home/prosync4/var/mgr/log/backup

3.2. 설치 확인

메타 테이블이 정상적으로 생성되었는지 확인한다.

  • Source DB

    • 동기화 및 추출 이력 관리 테이블

      테이블설명
      PRS_DDL_HISTDDL 발생에 따른 DD 이미지 정보 관련 히스토리이다.
      PRS_DD_COL동기화 대상 테이블의 컬럼 정보이다.
      PRS_DD_CONDB constraint 정보를 저장하고 있는 메타테이블이다.
      PRS_DD_ENC암호화된 컬럼 관련 정보를 저장한다.
      PRS_DD_SEQ_TBLData Dictionary에 대한 시퀀스와 그 때의 오브젝트 정보를 가지고 있다. 이 테이블은 추가적으로 drop된 여부까지 판단한다.
      PRS_DD_SGMT동기화 대상 테이블의 세그먼트 ID 정보를 저장하고 있다.
      PRS_DD_TBL동기화 대상 테이블의 이름 정보를 저장하고 있다.
      PRS_DD_USRSource DB의 사용자 정보를 저장하고 있다.
      PRS_DD_SEQSource DB Data Dictionary에 대한 시퀀스이다.
      PRS_DICT_HISTTSN에 따른 Dictionary를 파일 이름으로 가지고 있다.
      PRS_DUMMY_TBL

      Dummy log를 생성시키기 위해 dummy dml을 수행하는 테이블이다.

      [참고]

      revision number 3542에서 추가된 테이블이므로 해당 revision 이전에서 이후로 재설치 없이 패치 시 해당 테이블을 생성해야 한다.

      PRS_IMPORTED_ARCHIVE_LOG오라클 로그마이너 모드에서 특정 archive log를 지정할때 해당 테이블을 사용한다.
      PRS_INSTALL_HIST설치한 유저의 정보와 시간을 가지고 있다.
      PRS_IPARAM프로싱크의 파라미터 정보를 담고 있다.
      PRS_LOGMNR_INFO오라클 로그마이너로 추출 시 추출 관련 정보를 저장한다.
      PRS_OBJ_LIST동기화 대상 오브젝트 ID 정보를 저장하고 있다.
      PRS_TXINFO트랜잭션의 정보가 저장되는 테이블이다.
    • 동기화 및 추출을 위한 PACKAGE와 TRIGGER

      이름설명
      PRS_DD_METAPRS_DDL_TRG가 이미지 관리를 위해 사용한다.
      PRS_DUMMYDUMMY 테이블 부하를 만들기위한 PACKAGE이다.
      PRS_DDL_TRGProSync가 DD 이미지를 관리하기 위한 trigger이다.
  • Target DB

    • 동기화 및 추출 이력 관리 테이블

      테이블설명
      PRS_INSTALL_HIST프로싱크의 설치 정보를 담고 있다.
      PRS_CONST_HIST현재까지 반영된 리두 혹은 아카이브 로그의 정보를 저장하고 있다.
      PRS_CONST_SEQ현재까지 반영된 리두 혹은 아카이브 로그의 정보에 대한 시퀀스를 저장하고 있다.
      PRS_LCT반영 스레드가 마지막으로 반영한 TX의 정보를 저장하고 있다.
      PRS_COMMITTED_TX_LISTSource DB에서 커밋이 완료된 TX의 정보들을 저장하고 있다.

3.3. 제거

ProSync를 삭제하는 방법은 다음과 같다.

  • Source DB와 Target DB에 생성된 스키마 및 메타 테이블을 삭제한다.

  • 대상 테이블에 설정되어 있는 Supplemental log를 해제한다. .

  • rule database, target database에 접속해서 프로싱크 유저를 cascade 옵션을 줘서 drop 시킨다.