내용 목차
본 장에서는 단방향, 양방향 동기화 모드에 대한 ProSync의 설치 및 제거 방법에 대해서 설명한다.
본 절에서는 단방향과 양방향 동기화 모드의 설치 방법에 대해서 설명한다.
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.
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 설정이 가능하다.
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
양방향 동기화는 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를 필수적으로 포함해야 한다.
설치 순서는 다음과 같다.
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
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
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 프로세스가 실행될 장비에는 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 프로세스가 실행될 장비에는 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
메타 테이블이 정상적으로 생성되었는지 확인한다.
Source DB
동기화 및 추출 이력 관리 테이블
테이블 | 설명 |
---|---|
PRS_DDL_HIST | DDL 발생에 따른 DD 이미지 정보 관련 히스토리이다. |
PRS_DD_COL | 동기화 대상 테이블의 컬럼 정보이다. |
PRS_DD_CON | DB constraint 정보를 저장하고 있는 메타테이블이다. |
PRS_DD_ENC | 암호화된 컬럼 관련 정보를 저장한다. |
PRS_DD_SEQ_TBL | Data Dictionary에 대한 시퀀스와 그 때의 오브젝트 정보를 가지고 있다. 이 테이블은 추가적으로 drop된 여부까지 판단한다. |
PRS_DD_SGMT | 동기화 대상 테이블의 세그먼트 ID 정보를 저장하고 있다. |
PRS_DD_TBL | 동기화 대상 테이블의 이름 정보를 저장하고 있다. |
PRS_DD_USR | Source DB의 사용자 정보를 저장하고 있다. |
PRS_DD_SEQ | Source DB Data Dictionary에 대한 시퀀스이다. |
PRS_DICT_HIST | TSN에 따른 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_META | PRS_DDL_TRG가 이미지 관리를 위해 사용한다. |
PRS_DUMMY | DUMMY 테이블 부하를 만들기위한 PACKAGE이다. |
PRS_DDL_TRG | ProSync가 DD 이미지를 관리하기 위한 trigger이다. |
Target DB
동기화 및 추출 이력 관리 테이블
테이블 | 설명 |
---|---|
PRS_INSTALL_HIST | 프로싱크의 설치 정보를 담고 있다. |
PRS_CONST_HIST | 현재까지 반영된 리두 혹은 아카이브 로그의 정보를 저장하고 있다. |
PRS_CONST_SEQ | 현재까지 반영된 리두 혹은 아카이브 로그의 정보에 대한 시퀀스를 저장하고 있다. |
PRS_LCT | 반영 스레드가 마지막으로 반영한 TX의 정보를 저장하고 있다. |
PRS_COMMITTED_TX_LIST | Source DB에서 커밋이 완료된 TX의 정보들을 저장하고 있다. |