모든 페이지
1 / 5

Loading...

Loading...

Loading...

Loading...

Loading...

CM 명령어 모음

cmrctl add

cmrctl add group

그룹 리소스를 추가하기 위한 명령어이다. 그룹은 클러스터라는 환경 위에서 agent 서비스를 관리하기 위한 개념이다

cmrctl add group --name <group_name> --cname <cluster_name> 
--grptype <type> --failover <true|false>
Key
Value Type
설명

name

string

그룹 리소스 이름이다. (unique, 필수)

Agent 리소스를 추가하는 명령어이다.

Key
Value Type
설명

특정 리소스를 삭제하기 위한 명령어이며, DOWN 또는 DEACT 상태의 리소스만 삭제 가능하다.


CM에 등록된 리소스의 정보를 확인하기 위한 명령어이다.


리소스를 시작하기 위한 명령어이다. 그룹 리소스를 start하는 경우 해당 그룹에 속한 모든 agent를 기동시킨다.


리소스를 중지하기 위한 명령어이다. 그룹 리소스를 stop하는 경우 해당 그룹에 속한 모든 agent를 중지시킨다.


다음의 이유로 인해 deactivate된 리소스를 다시 activate시켜주기 위한 명령어이다.

  • agent를 추가할 때 입력한 retry_cnt(기본값: 3) 이상 start를 수행했는데도 실패한 경우

  • 사용자가 cmrctl deact 명령어를 명시적으로 사용하여 비활성화시킨 경우

  • agent를 추가할 때 입력한 script에 문제가 있는 경우

    • 위치에 script가 없는 경우


리소스를 deactivate시켜주기 위한 명령어이다. deact되어 있는 동안 agent는 script를 수행시키지 않는다.


그룹 리소스의 failover 기능 사용 여부를 수정하기 위한 명령어이다.

script의 권한이 없는 경우

  • script가 문제가 생겨 timeout될 경우

  • cname

    string

    해당 그룹 리소스가 속할 cluster 리소스 이름이다. (필수)

    grptype

    string

    그룹의 종류를 나타내기 위한 용도이다. (필수)

    failover

    string

    agent가 종료되었을 때 failover 기능 사용 여부이다. (default: true)

    cmrctl add agent --name <agent_name> --grpname <group_name> --script <directory_path>
    --pubnet <public_network_resource_name> --retry_cnt <retry_cnt>

    name

    string

    agent 리소스 이름이다. (unique, 필수)

    grpname

    string

    $ cmrctl del <resource_type> --name <resource_name>
    $ cmrctl show <resource_type> --name <resource_name>
    $ cmrctl start <resource_type> --name <resource_name>
    $ cmrctl stop <resource_type> --name <resource_name>
    $ cmrctl act <resource_type> --name <resource_name>
    $ cmrctl deact <resource_type> --name <resource_name>
    $ cmrctl modify group --name <group_name> --failover <true|false>

    cmrctl add agent

    cmrctl del

    주의

    모든 agent가 down된 상태이면, group을 삭제할 경우 agent도 같이 삭제된다.

    cmrctl show

    참고

    cmrctl show all을 입력하는 경우 같은 cm group의 모든 정보를 확인할 수 있다.

    cmrctl start

    cmrctl stop

    cmrctl act

    cmrctl deact

    cmrctl modify

    agent 리소스가 속할 그룹 리소스 이름이다 (필수)

    script

    string(file path)

    agent cmd를 실행시킬 script 파일의 절대경로이다 (필수)

    pubnet

    string

    public 용도로 사용할 네트워크 리소스 이름이다. dependency를 추가하려면 입력해야 한다.

    retry_cnt

    integer

    최대 retry 시도 횟수이다. (default: 3)

    설치 예시

    ProSync의 다양한 CDC 구성 예시를 통해 실제 환경에 맞는 설치 방안을 제시한다. 필요 시 '제품 구성도'를 참고한다.

    아래 설치 예시는 에서 설명한 구성을 기준으로 한다.

    제품 구성도

    Cluster to Cluster (TAC예시)

    SRC DB와 TAR DB가 서로 같은 장비에 설치된 경우

    1. Agent 설치

    prs_install_agent.cfg 예시

    AGENT_CNT=4
    
    AGENT_ID_0=agent1
    AGENT_HOST_0=172.19.0.11
    AGENT_PORT_0=7600
    
    AGENT_ID_1=agent2
    AGENT_HOST_1=172.19.0.11
    AGENT_PORT_1=7700
    
    AGENT_ID_2=agent3
    AGENT_HOST_2=172.19.0.11
    AGENT_PORT_2=7800
    
    AGENT_ID_3=agent4
    AGENT_HOST_3=172.19.0.11
    AGENT_PORT_3=7900

    agent 설치 및 설치 결과 예시

    $ cd $PRS_HOME/install
    $ ./prs_install_agent.sh
    ********************************************************************************
    * Agent Install Step (1/4)
    * Check System Parameters 
    ********************************************************************************
    * Checking system type... 
    Linux
    
    * Checking PRS_HOME... 
    PRS_HOME: /home/prosync/example
    
    ********************************************************************************
    * Agent Install Step (2/4)
    * Check install agent config file   [prs_install_agent.cfg]  
    * Check Instance file               [prs_instance.map] 
    ********************************************************************************
    * Checking configuration file... 
    [/home/prosync/example/install/prs_install_agent.cfg] exists.
    
    * Checking Agent configuration... 
    parameter check for Agent[0] Started 
        AGENT_ID: agent1
        AGENT_HOST: 172.19.0.11
        AGENT_PORT: 7600
    parameter check for Agent[0] Done 
    parameter check for Agent[1] Started 
        AGENT_ID: agent2
        AGENT_HOST: 172.19.0.11
        AGENT_PORT: 7700
    parameter check for Agent[1] Done 
    parameter check for Agent[2] Started 
        AGENT_ID: agent3
        AGENT_HOST: 172.19.0.11
        AGENT_PORT: 7800
    parameter check for Agent[2] Done 
    parameter check for Agent[3] Started 
        AGENT_ID: agent4
        AGENT_HOST: 172.19.0.11
        AGENT_PORT: 7900
    parameter check for Agent[3] Done 
    
    * Checking prs_instance.map file... 
    [/home/prosync/example/config/prs_instance.map] exists.
    
    ********************************************************************************
    * Agent Install Step (3/4)
    * Writing agent config file         [/home/prosync/example/install/prs_install_agent.cfg]  
    * Writing Instance file             [/home/prosync/example/config/prs_instance.map] 
    * Total Agent Cnt                   [4] 
    ********************************************************************************
    * Writing all agents.. cnt: 4
    * Writing Agent.. Index:           0
    * Writing Agent.. AGENT_ID:        agent1
    * Writing Agent.. AGENT_HOST:      172.19.0.11
    * Writing Agent.. AGENT_PORT:      7600
    * Writing Agent.. AGENT_CM_GROUP:  
    * Writing Agent.. AGENT_CM_ID:     
    * Writing Agent configuration... 
    File already exists... 
    [/home/prosync/example/config/prs_agent_agent1.cfg]
    Want to Delete ? (Y/N)
    n
    Skip deleteing...
    
    * Writing Agent information... 
    Agent information already exist
    Want to Replace ? (Y/N)
    n
    Skipped... 
    
    
    * Writing Agent.. Index:           1
    * Writing Agent.. AGENT_ID:        agent2
    * Writing Agent.. AGENT_HOST:      172.19.0.11
    * Writing Agent.. AGENT_PORT:      7700
    * Writing Agent.. AGENT_CM_GROUP:  
    * Writing Agent.. AGENT_CM_ID:     
    * Writing Agent configuration... 
    /home/prosync/example/config/prs_agent_agent2.cfg not found. Writing files...
    Done.
    
    * Writing Agent information... 
    
    
    * Writing Agent.. Index:           2
    * Writing Agent.. AGENT_ID:        agent3
    * Writing Agent.. AGENT_HOST:      172.19.0.11
    * Writing Agent.. AGENT_PORT:      7800
    * Writing Agent.. AGENT_CM_GROUP:  
    * Writing Agent.. AGENT_CM_ID:     
    * Writing Agent configuration... 
    /home/prosync/example/config/prs_agent_agent3.cfg not found. Writing files...
    Done.
    
    * Writing Agent information... 
    
    
    * Writing Agent.. Index:           3
    * Writing Agent.. AGENT_ID:        agent4
    * Writing Agent.. AGENT_HOST:      172.19.0.11
    * Writing Agent.. AGENT_PORT:      7900
    * Writing Agent.. AGENT_CM_GROUP:  
    * Writing Agent.. AGENT_CM_ID:     
    * Writing Agent configuration... 
    /home/prosync/example/config/prs_agent_agent4.cfg not found. Writing files...
    Done.
    
    * Writing Agent information... 
    
    
    * Creating var directory...
       * Already Created.
    ********************************************************************************
    * Agent Install Step (4/4)
    * Creating files for CM
    ********************************************************************************
    There's no AGENT_CM_ID, finishing installation
    Agent installation Done.

    2. Instance 설치

    prs_install.cfg 설정 예시

    ############################################
    #
    # ProSync Installation Parameters
    #
    ############################################
    
    # (Mandatory)
    INSTANCE_ID=TAC2TAC
    PRS_USER=TAC2TAC
    PRS_PWD=TAC2TAC
    
    # (Optional)
    #PRS_TS_NAME=
    #PRS_TS_FILE=
    #PRS_TS_SIZE=
    #PRS_SKIP_USER_CREATE=N
    #PRS_TARGET_MIN_PRIVILEGE=N
    #PRS_LOG_DIR=
    #LOG_BACKUP_DIR=
    #CREATE_DSN_FILE=N
    #DSN_DIR=
    #DSN_FILE=#need DSN_DIR
    
    ############################################
    #
    # ProSync Processes Informations for Instance Map
    #
    ############################################
    ### (Optional)
    AGENT_LIST_DELIMITER=,
    
    ### (Mandatory)
    # Ext process
    ## Ext cnt must be the same as SRC_DB_CNT
    EXT_CNT=2
    EXT_AGENT_ID_LIST_0=agent1,agent2
    EXT_AGENT_ID_LIST_1=agent2,agent1
    
    # Apply process
    APPLY_PORT=7620
    APPLY_AGENT_ID_LIST=agent3
    
    # Llob process
    LLOB_PORT=7630
    LLOB_AGENT_ID_LIST=agent1,agent2
    
    ############################################
    #
    # Source database informations
    #
    ############################################
    
    # (Mandatory)
    SRC_DB_TYPE=TIBERO
    SRC_DB_NAME=tibero
    SRC_INSTALL_USER=sys
    SRC_INSTALL_PWD=tibero
    
    # (Optional)
    #AUTO_ADD_SUPP_LOG=Y
    #SRC_SKIP_TS_CREATE=N
    #AUTO_SYNC_ON_CREATE=N
    
    # (for Tibero Standby Cluster source synchronization)
    # When USE_TSC=Y, set SRC_DB_NAME to the readable standby alias and
    # SRC_PRIMARY_DB_NAME to the writable primary alias.
    #USE_TSC=N
    #SRC_PRIMARY_DB_NAME=
    
    # (for TAC-TSC) per-instance writable primary aliases, parallel to
    # SRC_DB_ALIAS_N.
    #SRC_PRIMARY_DB_ALIAS_0=
    #SRC_PRIMARY_DB_ALIAS_1=
    
    # (Number Of Database Instances)
    SRC_DB_CNT=2
    
    # (Dsn)
    #SRC_DB_REAL_NAME=
    #SRC_DB_IP_0=
    #SRC_DB_PORT_0=
    #SRC_DB_IP_1=
    #SRC_DB_PORT_1=
    
    # (for Cluster, only Extract Needed)
    SRC_DB_ALIAS_0=tibero1
    SRC_DB_ALIAS_1=tibero2
    
    # (for ORACLE DB Only)
    #SUPP_LOG_LVL_ALL=N
    
    # (for Oracle Logminer only)
    # Oracle 11g or less, use utl_file_dir instead of DICT_FILE_DIR
    #USE_LOGMNR=Y
    #DICT_FILE_DIR=
    
    # (for MySQL only)
    #PRS_EXT_IP=
    
    ############################################
    #
    # Target database informations
    #
    ############################################
    
    # (Mandatory)
    TAR_DB_TYPE=TIBERO
    TAR_DB_NAME=tibero_tar
    TAR_INSTALL_USER=sys
    TAR_INSTALL_PWD=tibero
    
    # (Optional)
    #TAR_SKIP_TS_CREATE=N
    
    # (Number Of Database Instances)
    TAR_DB_CNT=2
    
    # (Dsn)
    #TAR_DB_REAL_NAME=
    #TAR_DB_IP_0=
    #TAR_DB_PORT_0=
    #TAR_DB_IP_1=
    #TAR_DB_PORT_1=
    
    # (for MySQL only)
    #PRS_APPLY_IP=
    
    # (for multi thread)
    #GROUP_NUM=1
    
    # (for TDE(transparent data encryption) synchronization)
    #USE_TDE=N
    

    instance 설치 및 설치 결과 예시

    $ cd $PRS_HOME/install
    $ ./prs_install.sh

    아래 출력은 다른 설정으로 수행한 설치의 예시이므로, 인스턴스명·사용자·Agent 배치 등 일부 값이 위 설정 파일과 다를 수 있다.

    ********************************************************************************
    * Check System Parameters (1/5)
    ********************************************************************************
    Checking system type... Linux
    Checking PRS_HOME... /home/prosync/example
    Checking TB_HOME... /home/tibero/tibero/tibero7
    Checking ORACLE_HOME... not found
    Checking psql ... not available
    Checking psql service ...not found
    
    ********************************************************************************
    * Check Installation Parameters (2/5)
    ********************************************************************************
    Checking configuration file... ok
    Checking prs_instance.map file... ok
    Checking Instance Id from prs_instance.map...
    * instance information for TAC2TAC was not found. It will be written in this script...
    ok
    Checking processes infos...
    * Checking Ext processes Informations... EXT_CNT: 2
    * Delimiter: [,]
       * Ext[0] process's Agent Id List 
           * Agent ID[agent1]
           * [agent1] found.
           * Agent ID[agent2]
           * [agent2] found.
       * Ext[1] process's Agent Id List 
           * Agent ID[agent2]
           * [agent2] found.
           * Agent ID[agent1]
           * [agent1] found.
    * Checking Apply process Informations...
    * Checking Apply Port..
       * APPLY_PORT=[7620]
    * Checking Apply process's Agent Id List..
           * Agent ID[agent3]
           * [agent3] found.
           * Agent ID[agent4]
           * [agent4] found.
    * Checking Llob process Informations...
    * Checking Llob Port..
       * LLOB_PORT=[7630]
    * Checking Llob process's Agent Id List..
           * Agent ID[agent1]
           * [agent1] found.
           * Agent ID[agent2]
           * [agent2] found.
    
    Checking INSTANCE_ID... TAC2TAC
    Checking PRS_USER... TAC2TAC
    Checking PRS_TS_NAME... TAC2TAC_ts
    Checking PRS_TS_FILE... TAC2TAC_ts.dtf
    Checking PRS_TS_SIZE... 1G
    Checking PRS_EXT_IP... %
    Checking PRS_APPLY_IP... %
    Checking SRC_DB_CNT... 2
    Checking SRC_DB_TYPE... TIBERO
    Checking SRC_INSTALL_USER... sys
    Checking SRC_DB_NAME... tibero
    Checking source connection(1/2)... ok
    Checking source connection(2/2)... ok
    Checking TAR_DB_TYPE... TIBERO
    Checking TAR_INSTALL_USER... sys
    Checking TAR_DB_NAME... tibero_tar
    Checking target connection [tibero_tar](1/2)... ok
    Checking target connection [tibero_tar](2/2)... ok
    
    ********************************************************************************
    * Install to Source Database (3/5)
    ********************************************************************************
    Checking archived log mode... ok
    Checking log mining parameters [tibero1]... ok
    Checking log mining parameters [tibero2]... ok
    Get Archive log directory [tibero1]... ok
    Get Archive log format [tibero1]... ok
    Get Archive log directory [tibero2]... ok
    Get Archive log format [tibero2]... ok
    Dropping ProSync objects... ok
    Dropping ProSync tablespace... DROP TABLESPACE instance_ts INCLUDING CONTENTS AND DATAFILES;
    
    done
    
    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
    Prosync user TAC2TAC to uppercase TAC2TAC... ok
    Checking source object file(group num : 1)... ok
    Building source object for TEST%.%... ok
    Adding table supplemental log... 4, and one for prosync
      "TAC2TAC"."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.
      TAC2TAC.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... UTF8
    Querying NLS_NCHAR_CHARACTERSET... UTF16
    Switching logfile [tibero1]... ok
    Switching logfile [tibero2]... ok
    Querying current log sequence [tibero1]... 8
    Querying current log sequence [tibero2]... 8
    Querying current snapshot#... 93289
    
    
    ********************************************************************************
    * Install to Target Database (4/5)
    ********************************************************************************
    Dropping ProSync objects... ok
    Dropping ProSync tablespace... DROP TABLESPACE TAC2TAC_ts INCLUDING CONTENTS AND DATAFILES;
    
    done
    
    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 [tibero1 (group 1)]... ok
    Generating initial construct history [tibero2 (group 1)]... ok
    Generating initial commit history... ok
    
    ********************************************************************************
    * Generate Configuration Parameters (5/5)
    ********************************************************************************
    Generating Wallet... ok
    Generating Extract [tibero1] configuration...  ok
    Generating Extract [tibero2] configuration...  ok
    Generating Apply [tibero_tar] configuration...  ok
    Generating LONG/LOB configuration...  ok
    Generating instance map to prs_instance.map ...
    
    
    ********************************************************************************
    * ProSync is installed successfully on Fri, 18 Apr 2025 02:01:32 +0000.
    *
    *   PRS_HOME     = /home/prosync/example
    *   Binary Path  = /home/prosync/example/bin
    *   ProSync User = TAC2TAC
    *
    *   Archived Log Path     = /home/tibero/tibero/tibero7/database/tibero/archive/
    *   Archived Log Format   = log-t%t-r%r-s%s.arc
    *   Initial log sequence# = 9
    *
    *   Archived Log Path     = /home/tibero/tibero/tibero7/database/tibero/archive/
    *   Archived Log Format   = log-t%t-r%r-s%s.arc
    *   Initial log sequence# = 9
    *
    *   Initial change# (TSN) = 94003 
    *
    ********************************************************************************
    
    

    3. Prosync 실행

    실행 절차는 ProSync 실행 문서를 참고한다.


    SRC DB와 TAR DB가 서로 다른 장비에 설치된 경우

    1. Agent 설치

    SRC DB가 설치된 장비에서 Agent를 설치한다.

    prs_install_agent.cfg 예시

    AGENT_CNT=4
    
    AGENT_ID_0=agent1
    AGENT_HOST_0=172.19.0.11
    AGENT_PORT_0=7600
    
    AGENT_ID_1=agent2
    AGENT_HOST_1=172.19.0.12
    AGENT_PORT_1=7700
    
    AGENT_ID_2=agent3
    AGENT_HOST_2=172.19.0.13
    AGENT_PORT_2=7800
    
    AGENT_ID_3=agent4
    AGENT_HOST_3=172.19.0.14
    AGENT_PORT_3=7900

    agent 설치 및 설치 결과 예시

    $ cd $PRS_HOME/install
    $ ./prs_install_agent.sh
    ********************************************************************************
    * Agent Install Step (1/4)
    * Check System Parameters 
    ********************************************************************************
    * Checking system type... 
    Linux
    
    * Checking PRS_HOME... 
    PRS_HOME: /home/prosync/example
    
    ********************************************************************************
    * Agent Install Step (2/4)
    * Check install agent config file   [prs_install_agent.cfg]  
    * Check Instance file               [prs_instance.map] 
    ********************************************************************************
    * Checking configuration file... 
    [/home/prosync/example/install/prs_install_agent.cfg] exists.
    
    * Checking Agent configuration... 
    parameter check for Agent[0] Started 
        AGENT_ID: agent1
        AGENT_HOST: 172.19.0.11
        AGENT_PORT: 7600
    parameter check for Agent[0] Done 
    parameter check for Agent[1] Started 
        AGENT_ID: agent2
        AGENT_HOST: 172.19.0.12
        AGENT_PORT: 7700
    parameter check for Agent[1] Done 
    parameter check for Agent[2] Started 
        AGENT_ID: agent3
        AGENT_HOST: 172.19.0.13
        AGENT_PORT: 7800
    parameter check for Agent[2] Done 
    parameter check for Agent[3] Started 
        AGENT_ID: agent4
        AGENT_HOST: 172.19.0.14
        AGENT_PORT: 7900
    parameter check for Agent[3] Done 
    
    * Checking prs_instance.map file... 
    [/home/prosync/example/config/prs_instance.map] exists.
    
    ********************************************************************************
    * Agent Install Step (3/4)
    * Writing agent config file         [/home/prosync/example/install/prs_install_agent.cfg]  
    * Writing Instance file             [/home/prosync/example/config/prs_instance.map] 
    * Total Agent Cnt                   [4] 
    ********************************************************************************
    * Writing all agents.. cnt: 4
    * Writing Agent.. Index:           0
    * Writing Agent.. AGENT_ID:        agent1
    * Writing Agent.. AGENT_HOST:      172.19.0.11
    * Writing Agent.. AGENT_PORT:      7600
    * Writing Agent.. AGENT_CM_GROUP:  
    * Writing Agent.. AGENT_CM_ID:     
    * Writing Agent configuration... 
    File already exists... 
    [/home/prosync/example/config/prs_agent_agent1.cfg]
    Want to Delete ? (Y/N)
    n
    Skip deleteing...
    
    * Writing Agent information... 
    Agent information already exist
    Want to Replace ? (Y/N)
    n
    Skipped... 
    
    
    * Writing Agent.. Index:           1
    * Writing Agent.. AGENT_ID:        agent2
    * Writing Agent.. AGENT_HOST:      172.19.0.12
    * Writing Agent.. AGENT_PORT:      7700
    * Writing Agent.. AGENT_CM_GROUP:  
    * Writing Agent.. AGENT_CM_ID:     
    * Writing Agent configuration... 
    /home/prosync/example/config/prs_agent_agent2.cfg not found. Writing files...
    Done.
    
    * Writing Agent information... 
    
    
    * Writing Agent.. Index:           2
    * Writing Agent.. AGENT_ID:        agent3
    * Writing Agent.. AGENT_HOST:      172.19.0.13
    * Writing Agent.. AGENT_PORT:      7800
    * Writing Agent.. AGENT_CM_GROUP:  
    * Writing Agent.. AGENT_CM_ID:     
    * Writing Agent configuration... 
    /home/prosync/example/config/prs_agent_agent3.cfg not found. Writing files...
    Done.
    
    * Writing Agent information... 
    
    
    * Writing Agent.. Index:           3
    * Writing Agent.. AGENT_ID:        agent4
    * Writing Agent.. AGENT_HOST:      172.19.0.14
    * Writing Agent.. AGENT_PORT:      7900
    * Writing Agent.. AGENT_CM_GROUP:  
    * Writing Agent.. AGENT_CM_ID:     
    * Writing Agent configuration... 
    /home/prosync/example/config/prs_agent_agent4.cfg not found. Writing files...
    Done.
    
    * Writing Agent information... 
    
    
    * Creating var directory...
       * Already Created.
    ********************************************************************************
    * Agent Install Step (4/4)
    * Creating files for CM
    ********************************************************************************
    There's no AGENT_CM_ID, finishing installation
    Agent installation Done.

    2. tbdsn.tbr 설정

    SRC DB 장비에서 TAR DB Client 접근을 위한 tbdsn.tbr 설정으로, src db 장비에서 instance를 설치하기 위해서 src db 장비에서 tar db client에 접근할 수 있어야 한다. 이를 위해 src db 장비의 tbdsn.tbr 파일에 tar db 정보를 추가해야 한다.

    TAR DB tbdsn.tbr 파일 예시

    #-------------------------------------------------
    # /home/tibero_tar/tibero/tibero7/client/config/tbdsn.tbr
    # Network Configuration File.
    # Generated by gen_tip_for_tac.sh at Thu Apr 17 10:51:54 UTC 2025
    
    #-------------------------------------------------
    # Appended by gen_tip_for_tac.sh at Thu Apr 17 10:51:54 UTC 2025
    
    tibero_tar1=(
        (INSTANCE=(HOST=172.19.0.13)
                  (PORT=8620)
                  (DB_NAME=tibero_tar)
        )
    )
    tibero_tar1priv=(
        (INSTANCE=(HOST=172.19.0.13)
                  (PORT=8621)
                  (DB_NAME=tibero_tar)
        )
    )
    
    #-------------------------------------------------
    # Appended by gen_tip_for_tac.sh at Thu Apr 17 10:51:54 UTC 2025
    
    tibero_tar2=(
        (INSTANCE=(HOST=172.19.0.14)
                  (PORT=8650)
                  (DB_NAME=tibero_tar)
        )
    )
    tibero_tar2priv=(
        (INSTANCE=(HOST=172.19.0.14)
                  (PORT=8651)
                  (DB_NAME=tibero_tar)
        )
    )
    
    tibero_tar=(
        (INSTANCE=(HOST=172.19.0.13)
                  (PORT=8620)
                  (DB_NAME=tibero_tar)
        )
        (INSTANCE=(HOST=172.19.0.14)
                  (PORT=8650)
                  (DB_NAME=tibero_tar)
        )
        #(LOAD_BALANCE=Y)
    )
    

    SRC DB 장비에 TAR DB 정보를 반영한 tbdsn.tbr 예시

    #-------------------------------------------------
    # /home/tibero/tibero/tibero7/client/config/tbdsn.tbr
    # Network Configuration File.
    # Generated by gen_tip_for_tac.sh at Thu Apr 17 10:19:44 UTC 2025
    
    #-------------------------------------------------
    # Appended by gen_tip_for_tac.sh at Thu Apr 17 10:19:44 UTC 2025
    
    tibero1=(
        (INSTANCE=(HOST=172.19.0.11)
                  (PORT=8620)
                  (DB_NAME=tibero)
        )
    )
    tibero1priv=(
        (INSTANCE=(HOST=172.19.0.11)
                  (PORT=8621)
                  (DB_NAME=tibero)
        )
    )
    
    #-------------------------------------------------
    # Appended by gen_tip_for_tac.sh at Thu Apr 17 10:19:44 UTC 2025
    
    tibero2=(
        (INSTANCE=(HOST=172.19.0.12)
                  (PORT=8650)
                  (DB_NAME=tibero)
        )
    )
    tibero2priv=(
        (INSTANCE=(HOST=172.19.0.12)
                  (PORT=8651)
                  (DB_NAME=tibero)
        )
    )
    
    tibero=(
        (INSTANCE=(HOST=172.19.0.11)
                  (PORT=8620)
                  (DB_NAME=tibero)
        )
        (INSTANCE=(HOST=172.19.0.12)
                  (PORT=8650)
                  (DB_NAME=tibero)
        )
        #(LOAD_BALANCE=Y)
    )
    
    #-------------------------------------------------
    # Appended by gen_tip_for_tac.sh at Thu Apr 17 10:51:54 UTC 2025
    
    tibero_tar1=(
        (INSTANCE=(HOST=172.19.0.13)
                  (PORT=8620)
                  (DB_NAME=tibero_tar)
        )
    )
    tibero_tar1priv=(
        (INSTANCE=(HOST=172.19.0.13)
                  (PORT=8621)
                  (DB_NAME=tibero_tar)
        )
    )
    
    #-------------------------------------------------
    # Appended by gen_tip_for_tac.sh at Thu Apr 17 10:51:54 UTC 2025
    
    tibero_tar2=(
        (INSTANCE=(HOST=172.19.0.14)
                  (PORT=8650)
                  (DB_NAME=tibero_tar)
        )
    )
    tibero_tar2priv=(
        (INSTANCE=(HOST=172.19.0.14)
                  (PORT=8651)
                  (DB_NAME=tibero_tar)
        )
    )
    
    tibero_tar=(
        (INSTANCE=(HOST=172.19.0.13)
                  (PORT=8620)
                  (DB_NAME=tibero_tar)
        )
        (INSTANCE=(HOST=172.19.0.14)
                  (PORT=8650)
                  (DB_NAME=tibero_tar)
        )
        #(LOAD_BALANCE=Y)
    )            

    SRC DB 장비에서 TAR DB client에 접근할 수 있는지 확인

    $ tbsql sys/tibero@tibero_tar1

    접근 확인 예시

    tbSQL 7  
    
    TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
    
    Connected to Tibero using tibero_tar1.
    
    SQL> 

    3. Instance 설치

    SRC DB가 설치된 장비에서 Instance를 설치한다.

    prs_install.cfg 설정 예시

    ############################################
    #
    # ProSync Installation Parameters
    #
    ############################################
    
    # (Mandatory)
    INSTANCE_ID=TAC2TAC
    PRS_USER=TAC2TAC
    PRS_PWD=TAC2TAC
    
    # (Optional)
    #PRS_TS_NAME=
    #PRS_TS_FILE=
    #PRS_TS_SIZE=
    #PRS_SKIP_USER_CREATE=N
    #PRS_TARGET_MIN_PRIVILEGE=N
    #PRS_LOG_DIR=
    #LOG_BACKUP_DIR=
    #CREATE_DSN_FILE=N
    #DSN_DIR=
    #DSN_FILE=#need DSN_DIR
    
    ############################################
    #
    # ProSync Processes Informations for Instance Map
    #
    ############################################
    ### (Optional)
    AGENT_LIST_DELIMITER=,
    
    ### (Mandatory)
    # Ext process
    ## Ext cnt must be the same as SRC_DB_CNT
    EXT_CNT=2
    EXT_AGENT_ID_LIST_0=agent1,agent2
    EXT_AGENT_ID_LIST_1=agent2,agent1
    
    # Apply process
    APPLY_PORT=7620
    APPLY_AGENT_ID_LIST=agent3
    
    # Llob process
    LLOB_PORT=7630
    LLOB_AGENT_ID_LIST=agent1,agent2
    
    ############################################
    #
    # Source database informations
    #
    ############################################
    
    # (Mandatory)
    SRC_DB_TYPE=TIBERO
    SRC_DB_NAME=tibero
    SRC_INSTALL_USER=sys
    SRC_INSTALL_PWD=tibero
    
    # (Optional)
    #AUTO_ADD_SUPP_LOG=Y
    #SRC_SKIP_TS_CREATE=N
    #AUTO_SYNC_ON_CREATE=N
    
    # (for Tibero Standby Cluster source synchronization)
    # When USE_TSC=Y, set SRC_DB_NAME to the readable standby alias and
    # SRC_PRIMARY_DB_NAME to the writable primary alias.
    #USE_TSC=N
    #SRC_PRIMARY_DB_NAME=
    
    # (for TAC-TSC) per-instance writable primary aliases, parallel to
    # SRC_DB_ALIAS_N.
    #SRC_PRIMARY_DB_ALIAS_0=
    #SRC_PRIMARY_DB_ALIAS_1=
    
    # (Number Of Database Instances)
    SRC_DB_CNT=2
    
    # (Dsn)
    #SRC_DB_REAL_NAME=
    #SRC_DB_IP_0=
    #SRC_DB_PORT_0=
    #SRC_DB_IP_1=
    #SRC_DB_PORT_1=
    
    # (for Cluster, only Extract Needed)
    SRC_DB_ALIAS_0=tibero1
    SRC_DB_ALIAS_1=tibero2
    
    # (for ORACLE DB Only)
    #SUPP_LOG_LVL_ALL=N
    
    # (for Oracle Logminer only)
    # Oracle 11g or less, use utl_file_dir instead of DICT_FILE_DIR
    #USE_LOGMNR=Y
    #DICT_FILE_DIR=
    
    # (for MySQL only)
    #PRS_EXT_IP=
    
    ############################################
    #
    # Target database informations
    #
    ############################################
    
    # (Mandatory)
    TAR_DB_TYPE=TIBERO
    TAR_DB_NAME=tibero_tar
    TAR_INSTALL_USER=sys
    TAR_INSTALL_PWD=tibero
    
    # (Optional)
    #TAR_SKIP_TS_CREATE=N
    
    # (Number Of Database Instances)
    TAR_DB_CNT=2
    
    # (Dsn)
    #TAR_DB_REAL_NAME=
    #TAR_DB_IP_0=
    #TAR_DB_PORT_0=
    #TAR_DB_IP_1=
    #TAR_DB_PORT_1=
    
    # (for MySQL only)
    #PRS_APPLY_IP=
    
    # (for multi thread)
    #GROUP_NUM=1
    
    # (for TDE(transparent data encryption) synchronization)
    #USE_TDE=N

    instance 설치 및 설치 결과 예시

    $ cd $PRS_HOME/install
    $ ./prs_install.sh

    아래 출력은 다른 설정으로 수행한 설치의 예시이므로, 인스턴스명·사용자·Agent 배치 등 일부 값이 위 설정 파일과 다를 수 있다.

    ********************************************************************************
    * Check System Parameters (1/5)
    ********************************************************************************
    Checking system type... Linux
    Checking PRS_HOME... /home/prosync/example
    Checking TB_HOME... /home/tibero/tibero/tibero7
    Checking ORACLE_HOME... not found
    Checking psql ... not available
    Checking psql service ...not found
    
    ********************************************************************************
    * Check Installation Parameters (2/5)
    ********************************************************************************
    Checking configuration file... ok
    Checking prs_instance.map file... ok
    Checking Instance Id from prs_instance.map...
    * instance information for TAC2TAC was not found. It will be written in this script...
    ok
    Checking processes infos...
    * Checking Ext processes Informations... EXT_CNT: 2
    * Delimiter: [,]
       * Ext[0] process's Agent Id List 
           * Agent ID[agent1]
           * [agent1] found.
           * Agent ID[agent2]
           * [agent2] found.
       * Ext[1] process's Agent Id List 
           * Agent ID[agent2]
           * [agent2] found.
           * Agent ID[agent1]
           * [agent1] found.
    * Checking Apply process Informations...
    * Checking Apply Port..
       * APPLY_PORT=[7620]
    * Checking Apply process's Agent Id List..
           * Agent ID[agent3]
           * [agent3] found.
           * Agent ID[agent4]
           * [agent4] found.
    * Checking Llob process Informations...
    * Checking Llob Port..
       * LLOB_PORT=[7630]
    * Checking Llob process's Agent Id List..
           * Agent ID[agent1]
           * [agent1] found.
           * Agent ID[agent2]
           * [agent2] found.
    
    Checking INSTANCE_ID... TAC2TAC
    Checking PRS_USER... TAC2TAC
    Checking PRS_TS_NAME... TAC2TAC_ts
    Checking PRS_TS_FILE... TAC2TAC_ts.dtf
    Checking PRS_TS_SIZE... 1G
    Checking PRS_EXT_IP... %
    Checking PRS_APPLY_IP... %
    Checking SRC_DB_CNT... 2
    Checking SRC_DB_TYPE... TIBERO
    Checking SRC_INSTALL_USER... sys
    Checking SRC_DB_NAME... tibero
    Checking source connection(1/2)... ok
    Checking source connection(2/2)... ok
    Checking TAR_DB_TYPE... TIBERO
    Checking TAR_INSTALL_USER... sys
    Checking TAR_DB_NAME... tibero_tar
    Checking target connection [tibero_tar](1/2)... ok
    Checking target connection [tibero_tar](2/2)... ok
    
    ********************************************************************************
    * Install to Source Database (3/5)
    ********************************************************************************
    Checking archived log mode... ok
    Checking log mining parameters [tibero1]... ok
    Checking log mining parameters [tibero2]... ok
    Get Archive log directory [tibero1]... ok
    Get Archive log format [tibero1]... ok
    Get Archive log directory [tibero2]... ok
    Get Archive log format [tibero2]... ok
    Dropping ProSync objects... ok
    Dropping ProSync tablespace... DROP TABLESPACE instance_ts INCLUDING CONTENTS AND DATAFILES;
    
    done
    
    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
    Prosync user TAC2TAC to uppercase TAC2TAC... ok
    Checking source object file(group num : 1)... ok
    Building source object for TEST%.%... ok
    Adding table supplemental log... 4, and one for prosync
      "TAC2TAC"."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.
      TAC2TAC.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... UTF8
    Querying NLS_NCHAR_CHARACTERSET... UTF16
    Switching logfile [tibero1]... ok
    Switching logfile [tibero2]... ok
    Querying current log sequence [tibero1]... 8
    Querying current log sequence [tibero2]... 8
    Querying current snapshot#... 93289
    
    
    ********************************************************************************
    * Install to Target Database (4/5)
    ********************************************************************************
    Dropping ProSync objects... ok
    Dropping ProSync tablespace... DROP TABLESPACE TAC2TAC_ts INCLUDING CONTENTS AND DATAFILES;
    
    done
    
    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 [tibero1 (group 1)]... ok
    Generating initial construct history [tibero2 (group 1)]... ok
    Generating initial commit history... ok
    
    ********************************************************************************
    * Generate Configuration Parameters (5/5)
    ********************************************************************************
    Generating Wallet... ok
    Generating Extract [tibero1] configuration...  ok
    Generating Extract [tibero2] configuration...  ok
    Generating Apply [tibero_tar] configuration...  ok
    Generating LONG/LOB configuration...  ok
    Generating instance map to prs_instance.map ...
    
    
    ********************************************************************************
    * ProSync is installed successfully on Fri, 18 Apr 2025 02:01:32 +0000.
    *
    *   PRS_HOME     = /home/prosync/example
    *   Binary Path  = /home/prosync/example/bin
    *   ProSync User = TAC2TAC
    *
    *   Archived Log Path     = /home/tibero/tibero/tibero7/database/tibero/archive/
    *   Archived Log Format   = log-t%t-r%r-s%s.arc
    *   Initial log sequence# = 9
    *
    *   Archived Log Path     = /home/tibero/tibero/tibero7/database/tibero/archive/
    *   Archived Log Format   = log-t%t-r%r-s%s.arc
    *   Initial log sequence# = 9
    *
    *   Initial change# (TSN) = 94003 
    *
    ********************************************************************************
    
    

    4. 설치 파일 및 디렉토리 이동

    TAR DB 장비 Prosync 디렉토리에 설치 파일 및 디렉토리를 옮긴다. ProSync는 SRC DB 장비에서만 설치되었기 때문에, TAR DB 장비에서도 ProSync를 기동하려면 SRC DB 장비에서 설치 후 생성된 파일 및 디렉토리를 TAR DB 장비로 복사해야 한다.

    주의

    설치 시 생성된 설정 파일들(*.cfg)에는 SRC DB 장비 기준의 경로가 포함되어 있으므로, TAR DB 장비로 복사한 후에는 경로를 TAR DB 장비 기준으로 수정해야 한다.

    복사 필요한 파일 및 디렉토리

    $PRS_HOME/config

    • prs_adm.cfg

    • <instance_id>_apply1.cfg

    • prs_agent_<agent_id>.cfg

    • prs_instance.map

    $PRS_HOME/var

    옮긴 파일 예시

    실행 절차는 문서를 참고한다.

    ProSync 실행

    5. Prosync 실행

    total 36
    drwxr-xr-x 3 tibero tibero 4096 Apr 18 02:15 ./
    drwxr-xr-x 8 tibero tibero 4096 Apr 18 02:24 ../
    -rw-r--r-- 1 tibero tibero  534 Apr 18 02:15 TAC2TAC_apply1.cfg
    -rw-r--r-- 1 tibero tibero  339 Apr 18 02:15 prs_adm.cfg
    -rw-r--r-- 1 tibero tibero  353 Apr 18 02:15 prs_agent_agent3.cfg
    -rw-r--r-- 1 tibero tibero  353 Apr 18 02:15 prs_agent_agent4.cfg
    -rw-r--r-- 1 tibero tibero 1262 Apr 18 02:07 prs_instance.map
    drwxr-xr-x 2 tibero tibero 4096 Apr 17 10:51 templates/
    -rw-r--r-- 1 tibero tibero    5 Feb  5 04:59 variant
    # var directory tree 예시
    .
    ├── admin
    │   └── log
    ├── agent
    │   ├── agent1
    │   └── agent2
    └── TAC2TAC
        ├── alloc
        ├── log
        ├── lr1
        ├── path
        └── sam
    

    CM Failover 기능 사용

    1. Agent 설치

    ProSync Process에 대한 Failover 기능을 CM에서 사용할 경우 각 Node ProSync Ext Process가 Failover로 변경되었을 때, Source DB의 Redo/Archive File을 읽을 수 있는 위치에 있어야 한다.

    prs_install_agent.cfg 예시

    AGENT_CNT=4
    
    AGENT_ID_0=agent1
    AGENT_HOST_0=172.19.0.11
    AGENT_PORT_0=7600
    AGENT_CM_GROUP_0=CM1
    AGENT_CM_ID_0=0
    
    AGENT_ID_1=agent2
    AGENT_HOST_1=172.19.0.12
    AGENT_PORT_1=7700
    AGENT_CM_GROUP_1=CM1
    AGENT_CM_ID_1=1
    
    AGENT_ID_2=agent3
    AGENT_HOST_2=172.19.0.13
    AGENT_PORT_2=7800
    AGENT_CM_GROUP_2=CM2
    AGENT_CM_ID_2=0
    
    AGENT_ID_3=agent4
    AGENT_HOST_3=172.19.0.14
    AGENT_PORT_3=7900
    AGENT_CM_GROUP_3=CM2
    AGENT_CM_ID_3=1

    agent 설치 및 설치 결과 예시

    $ cd $PRS_HOME/install
    $ ./prs_install_agent.sh
    ********************************************************************************
    * Agent Install Step (1/4)
    * Check System Parameters 
    ********************************************************************************
    * Checking system type... 
    Linux
    
    * Checking PRS_HOME... 
    PRS_HOME: /home/prosync/example
    
    ********************************************************************************
    * Agent Install Step (2/4)
    * Check install agent config file   [prs_install_agent.cfg]  
    * Check Instance file               [prs_instance.map] 
    ********************************************************************************
    * Checking configuration file... 
    [/home/prosync/example/install/prs_install_agent.cfg] exists.
    
    * Checking Agent configuration... 
    parameter check for Agent[0] Started 
        AGENT_ID: agent1
        AGENT_HOST: 172.19.0.11
        AGENT_PORT: 7600
        AGENT_CM_GROUP: CM1
        AGENT_CM_ID: 0
    parameter check for Agent[0] Done 
    parameter check for Agent[1] Started 
        AGENT_ID: agent2
        AGENT_HOST: 172.19.0.12
        AGENT_PORT: 7700
        AGENT_CM_GROUP: CM1
        AGENT_CM_ID: 1
    parameter check for Agent[1] Done 
    parameter check for Agent[2] Started 
        AGENT_ID: agent3
        AGENT_HOST: 172.19.0.13
        AGENT_PORT: 7800
        AGENT_CM_GROUP: CM2
        AGENT_CM_ID: 0
    parameter check for Agent[2] Done 
    parameter check for Agent[3] Started 
        AGENT_ID: agent4
        AGENT_HOST: 172.19.0.14
        AGENT_PORT: 7900
        AGENT_CM_GROUP: CM2
        AGENT_CM_ID: 1
    parameter check for Agent[3] Done 
    
    * Checking prs_instance.map file... 
    [/home/prosync/example/config/prs_instance.map] exists.
    
    ********************************************************************************
    * Agent Install Step (3/4)
    * Writing agent config file         [/home/prosync/example/install/prs_install_agent.cfg]  
    * Writing Instance file             [/home/prosync/example/config/prs_instance.map] 
    * Total Agent Cnt                   [4] 
    ********************************************************************************
    * Writing all agents.. cnt: 4
    * Writing Agent.. Index:           0
    * Writing Agent.. AGENT_ID:        agent1
    * Writing Agent.. AGENT_HOST:      172.19.0.11
    * Writing Agent.. AGENT_PORT:      7600
    * Writing Agent.. AGENT_CM_GROUP:  CM1
    * Writing Agent.. AGENT_CM_ID:     0
    * Writing Agent configuration... 
    /home/prosync/example/config/prs_agent_agent1.cfg not found. Writing files...
    Done.
    
    * Writing Agent information... 
    
    
    * Writing Agent.. Index:           1
    * Writing Agent.. AGENT_ID:        agent2
    * Writing Agent.. AGENT_HOST:      172.19.0.12
    * Writing Agent.. AGENT_PORT:      7700
    * Writing Agent.. AGENT_CM_GROUP:  CM1
    * Writing Agent.. AGENT_CM_ID:     1
    * Writing Agent configuration... 
    /home/prosync/example/config/prs_agent_agent2.cfg not found. Writing files...
    Done.
    
    * Writing Agent information... 
    
    
    * Writing Agent.. Index:           2
    * Writing Agent.. AGENT_ID:        agent3
    * Writing Agent.. AGENT_HOST:      172.19.0.13
    * Writing Agent.. AGENT_PORT:      7800
    * Writing Agent.. AGENT_CM_GROUP:  CM2
    * Writing Agent.. AGENT_CM_ID:     0
    * Writing Agent configuration... 
    /home/prosync/example/config/prs_agent_agent3.cfg not found. Writing files...
    Done.
    
    * Writing Agent information... 
    
    
    * Writing Agent.. Index:           3
    * Writing Agent.. AGENT_ID:        agent4
    * Writing Agent.. AGENT_HOST:      172.19.0.14
    * Writing Agent.. AGENT_PORT:      7900
    * Writing Agent.. AGENT_CM_GROUP:  CM2
    * Writing Agent.. AGENT_CM_ID:     1
    * Writing Agent configuration... 
    /home/prosync/example/config/prs_agent_agent4.cfg not found. Writing files...
    Done.
    
    * Writing Agent information... 
    
    
    * Creating var directory...
       * Already Created.
    ********************************************************************************
    * Agent Install Step (4/4)
    * Creating files for CM
    ********************************************************************************
    AGENT_CM_ID detected
    generating prs_0.sh...
    PRS_HOME=/home/prosync/example
    AGENT_ID=agent1
    prs_0.sh has created in $PRS_HOME/bin/
    AGENT_CM_ID detected
    generating prs_1.sh...
    PRS_HOME=/home/prosync/example
    AGENT_ID=agent2
    prs_1.sh has created in $PRS_HOME/bin/
    AGENT_CM_ID detected
    generating prs_0.sh...
    PRS_HOME=/home/prosync/example
    AGENT_ID=agent3
    prs_0.sh has created in $PRS_HOME/bin/
    AGENT_CM_ID detected
    generating prs_1.sh...
    PRS_HOME=/home/prosync/example
    AGENT_ID=agent4
    prs_1.sh has created in $PRS_HOME/bin/
    Agent installation Done.
    

    2. CM Failover 스크립트 설정

    이 스크립트 파일에는 Agent 기동을 위한 환경 변수를 설정해야 하며, 반드시 TB_HOME, AGENT_ID 등을 환경에 맞게 수정해야 한다.

    예시: $PRS_HOME/bin/prs_0.sh

    #!/bin/sh
    
    export TB_HOME=/home/tibero/tibero/tibero7   ## TB_HOME 입력
    export PRS_HOME=/home/prosync/example
    AGENT_ID=agent1                              ## agent_id 입력
    TIMEOUT_CNT=7
    source $PRS_HOME/bin/prs_cm.sh
    export logdir=$PRS_HOME/var
    
    echo "`date +%Y/%m/%d\\ %H:%M:%S` cm agent Start (Agent Command $1)" >> $logdir/cmagent.log
    case $1 in
    START)
        echo "start $TIMEOUT_CNT $AGENT_ID" >> $logdir/cmagent.log
        start $TIMEOUT_CNT $AGENT_ID
        rc=$?
        ;;
    PROBE)
        echo "probe $TIMEOUT_CNT $AGENT_ID" >> $logdir/cmagent.log
        probe $TIMEOUT_CNT $AGENT_ID
        rc=$?
        ;;
    DOWN)
        echo "stop $TIMEOUT_CNT $AGENT_ID" >> $logdir/cmagent.log
        stop $TIMEOUT_CNT $AGENT_ID
        rc=$?
        ;;
    KILL)
        echo "stop $TIMEOUT_CNT $AGENT_ID" >> $logdir/cmagent.log
        stop $TIMEOUT_CNT $AGENT_ID
        rc=$?
        ;;
    NOTI)
        rc=0
        ;;
    COMMIT)
        echo "send $TIMEOUT_CNT $AGENT_ID ${@:2}" >> $logdir/cmagent.log
        send $TIMEOUT_CNT $AGENT_ID ${@:2}
        rc=$?
        ;;
    
    *)
        ;;
    esac
    echo "`date +%Y/%m/%d\\ %H:%M:%S` cm agent End  (Agent Command $1)" >> $logdir/cmagent.log
    
    
    exit $rc

    참고

    script 내의 source 명령어는 POSIX 표준 sh에서는 존재하지 않는다.

    만약 CM에서 해당 스크립트를 실행하는데 권한에 문제가 없는데도 127 에러가 발생한다면, /bin/sh를 /bin/bash로 변경하면 해결된다.


    3. Agent Parameter 설정

    CM Failover 기능을 사용하기 위해 prs_agent_<agent_id>.cfg 파일에 다음과 같은 파라미터를 설정한다.

    파라미터
    설명

    예시 : $PRS_HOME/config/prs_agent_agent1.cfg



    $TB_HOME/config 예시

    <$CM_SID>.tip file들을 열어 맨 윗줄에 CM_ID를 추가해준다. CM_ID는 agent 설치 시 prs_install_agent.cfg에 작성한 내용을 기반으로 추가한다.

    cm_tibero1.tip 예시

    cm info 예시


    agent 설치 시, prs_install_agent.cfg에 작성한 내용을 기반으로 CM group을 추가한다.

    Key
    Value Type
    설명

    등록에 성공하면 다음과 같은 문구가 나온다.


    Key
    Value Type
    설명

    아래 cmrctl show all 예시는 스크립트를 $TB_HOME 으로 복사해 등록한 환경의 출력이다.

    등록에 성공하면 다음과 같은 문구가 나온다.

    CM을 확인해보면 다음과 같이 group과 agent가 등록된 info를 확인할 수 있다.

    cm info 예시

    CM을 통해 ProSync를 기동하고 Failover 기능을 사용하기 위해 CM group을 기동시킨다.

    결과 예시


    Admin process를 통해 ProSync의 기동을 확인한다.

    CM Failover 기능을 사용하는 경우 $PRS_HOME/var에 CM을 통해 agent를 기동한 로그 파일들이 생긴다.

    • cmagent.log

    • prs_cm_<$agent_id>.log

    • prs_cm_sh_err_<$agent_id>.log

    USE_CM

    CM 사용 여부를 설정한다. Y로 설정할 경우 하위 프로세스의 상태를 모니터링하고, 장애 발생 시 재기동을 수행한다. 내부 장애 발생 시 cmrctl을 통해 정지 요청을 수행한다. (기본값: N)

    PRS_AGENT_PROC_MAX_FAIL_CNT

    하위 프로세스 장애 발생 시 상태를 보정하기 위해 재시도하는 최대 횟수를 설정한다. (기본값: 5)

    PRS_AGENT_PROC_STARTUP_TIMEOUT

    프로세스 기동 요청 이후 정상적으로 처리되기까지 대기하는 최대 시간(초)을 설정한다. 기동 요청이 정상 처리되지 않을 경우, 설정한 시간만큼 대기한 후 재시도한다. (기본값: 10)

    PRS_AGENT_PROC_STATUS_REPLY_TIMEOUT

    하위 프로세스로부터 응답이 없을 경우 대기하는 최대 시간(초)을 설정한다. 초과 시 해당 프로세스에 hang이 발생한 것으로 판단하고 재기동을 수행한다.

    PRS_AGENT_PROC_STATUS_INTERVAL

    Agent 프로세스가 CM에게 cmrctl check 명령을 보내는 주기를 설정한다.

    PRS_AGENT_CM_PROBE_TIMEOUT

    CM 상태 확인 시 대기하는 최대 시간(초)을 설정한다. 0으로 설정할 경우 cmrctl 응답을 무한히 대기한다. 설정값을 초과할 경우 CM hang으로 판단하여 Agent 및 하위 프로세스를 정리한다. (기본값: 0) ※ 표준 출력을 우회하여 응답을 수신하므로, 응답 지연이 우려될 경우 0으로 설정한다.

    cd $PRS_HOME/config
    vi prs_agent_agent1.cfg
    ################################################################################
    # 
    # ProSync Agent Configurations (Template)
    #
    ################################################################################                                      
    
    #-------------------------------------------------------------------------------
    # LOG
    #-------------------------------------------------------------------------------
    LOG_LEVEL = 3
    LOG_DIR = /home/prosync/example/var/agent/agent1/log                  
    LOG_BACKUP_DIR = /home/prosync/example/var/agent/agent1/log/backup         
    #-------------------------------------------------------------------------------
    # CM
    #-------------------------------------------------------------------------------
    USE_CM = Y
    PRS_AGENT_PROC_MAX_FAIL_CNT = 10		#Dependency Param : USE_CM=Y
    PRS_AGENT_PROC_STARTUP_TIMEOUT = 10	        #Dependency Param : USE_CM=Y
    PRS_AGENT_PROC_STATUS_REPLY_TIMEOUT = 10	#Dependency Param : USE_CM=Y
    PRS_AGENT_PROC_STATUS_INTERVAL = 3		#Dependency Param : USE_CM=Y
    PRS_AGENT_CM_PROBE_TIMEOUT = 0			#Dependency Param : USE_CM=Y
    ############################################
    #
    # ProSync Installation Parameters
    #
    ############################################
    
    # (Mandatory)
    INSTANCE_ID=TAC2TAC
    PRS_USER=TAC2TAC
    PRS_PWD=TAC2TAC
    
    # (Optional)
    #PRS_TS_NAME=
    #PRS_TS_FILE=
    #PRS_TS_SIZE=
    #PRS_SKIP_USER_CREATE=N
    #PRS_TARGET_MIN_PRIVILEGE=N
    #PRS_LOG_DIR=
    #LOG_BACKUP_DIR=
    #CREATE_DSN_FILE=N
    #DSN_DIR=
    #DSN_FILE=#need DSN_DIR
    
    ############################################
    #
    # ProSync Processes Informations for Instance Map
    #
    ############################################
    ### (Optional)
    AGENT_LIST_DELIMITER=,
    
    ### (Mandatory)
    # Ext process
    ## Ext cnt must be the same as SRC_DB_CNT
    EXT_CNT=2
    EXT_AGENT_ID_LIST_0=agent1,agent2
    EXT_AGENT_ID_LIST_1=agent2,agent1
    
    # Apply process
    APPLY_PORT=7620
    APPLY_AGENT_ID_LIST=agent3,agent4
    
    # Llob process
    LLOB_PORT=7630
    LLOB_AGENT_ID_LIST=agent1,agent2
    
    ############################################
    #
    # Source database informations
    #
    ############################################
    
    # (Mandatory)
    SRC_DB_TYPE=TIBERO
    SRC_DB_NAME=tibero
    SRC_INSTALL_USER=sys
    SRC_INSTALL_PWD=tibero
    
    # (Optional)
    #AUTO_ADD_SUPP_LOG=Y
    #SRC_SKIP_TS_CREATE=N
    #AUTO_SYNC_ON_CREATE=N
    
    # (for Tibero Standby Cluster source synchronization)
    # When USE_TSC=Y, set SRC_DB_NAME to the readable standby alias and
    # SRC_PRIMARY_DB_NAME to the writable primary alias.
    #USE_TSC=N
    #SRC_PRIMARY_DB_NAME=
    
    # (for TAC-TSC) per-instance writable primary aliases, parallel to
    # SRC_DB_ALIAS_N.
    #SRC_PRIMARY_DB_ALIAS_0=
    #SRC_PRIMARY_DB_ALIAS_1=
    
    # (Number Of Database Instances)
    SRC_DB_CNT=2
    
    # (Dsn)
    #SRC_DB_REAL_NAME=
    #SRC_DB_IP_0=
    #SRC_DB_PORT_0=
    #SRC_DB_IP_1=
    #SRC_DB_PORT_1=
    
    # (for Cluster, only Extract Needed)
    SRC_DB_ALIAS_0=tibero1
    SRC_DB_ALIAS_1=tibero2
    
    # (for ORACLE DB Only)
    #SUPP_LOG_LVL_ALL=N
    
    # (for Oracle Logminer only)
    # Oracle 11g or less, use utl_file_dir instead of DICT_FILE_DIR
    #USE_LOGMNR=Y
    #DICT_FILE_DIR=
    
    # (for MySQL only)
    #PRS_EXT_IP=
    
    ############################################
    #
    # Target database informations
    #
    ############################################
    
    # (Mandatory)
    TAR_DB_TYPE=TIBERO
    TAR_DB_NAME=tibero_tar
    TAR_INSTALL_USER=sys
    TAR_INSTALL_PWD=tibero
    
    # (Optional)
    #TAR_SKIP_TS_CREATE=N
    
    # (Number Of Database Instances)
    TAR_DB_CNT=2
    
    # (Dsn)
    #TAR_DB_REAL_NAME=
    #TAR_DB_IP_0=
    #TAR_DB_PORT_0=
    #TAR_DB_IP_1=
    #TAR_DB_PORT_1=
    
    # (for MySQL only)
    #PRS_APPLY_IP=
    
    # (for multi thread)
    #GROUP_NUM=1
    
    # (for TDE(transparent data encryption) synchronization)
    #USE_TDE=N
    
    $ cd $PRS_HOME/install
    $ ./prs_install.sh
    ********************************************************************************
    * Check System Parameters (1/5)
    ********************************************************************************
    Checking system type... Linux
    Checking PRS_HOME... /home/prosync/example
    Checking TB_HOME... /home/tibero/tibero/tibero7
    Checking ORACLE_HOME... not found
    Checking psql ... not available
    Checking psql service ...not found
    
    ********************************************************************************
    * Check Installation Parameters (2/5)
    ********************************************************************************
    Checking configuration file... ok
    Checking prs_instance.map file... ok
    Checking Instance Id from prs_instance.map...
    * instance information for TAC2TAC was not found. It will be written in this script...
    ok
    Checking processes infos...
    * Checking Ext processes Informations... EXT_CNT: 2
    * Delimiter: [,]
       * Ext[0] process's Agent Id List 
           * Agent ID[agent1]
           * [agent1] found.
           * Agent ID[agent2]
           * [agent2] found.
       * Ext[1] process's Agent Id List 
           * Agent ID[agent2]
           * [agent2] found.
           * Agent ID[agent1]
           * [agent1] found.
    * Checking Apply process Informations...
    * Checking Apply Port..
       * APPLY_PORT=[7620]
    * Checking Apply process's Agent Id List..
           * Agent ID[agent3]
           * [agent3] found.
           * Agent ID[agent4]
           * [agent4] found.
    * Checking Llob process Informations...
    * Checking Llob Port..
       * LLOB_PORT=[7630]
    * Checking Llob process's Agent Id List..
           * Agent ID[agent1]
           * [agent1] found.
           * Agent ID[agent2]
           * [agent2] found.
    
    Checking INSTANCE_ID... TAC2TAC
    Checking PRS_USER... TAC2TAC
    Checking PRS_TS_NAME... TAC2TAC_ts
    Checking PRS_TS_FILE... TAC2TAC_ts.dtf
    Checking PRS_TS_SIZE... 1G
    Checking PRS_EXT_IP... %
    Checking PRS_APPLY_IP... %
    Checking SRC_DB_CNT... 2
    Checking SRC_DB_TYPE... TIBERO
    Checking SRC_INSTALL_USER... sys
    Checking SRC_DB_NAME... tibero
    Checking source connection(1/2)... ok
    Checking source connection(2/2)... ok
    Checking TAR_DB_TYPE... TIBERO
    Checking TAR_INSTALL_USER... sys
    Checking TAR_DB_NAME... tibero_tar
    Checking target connection [tibero_tar](1/2)... ok
    Checking target connection [tibero_tar](2/2)... ok
    
    ********************************************************************************
    * Install to Source Database (3/5)
    ********************************************************************************
    Checking archived log mode... ok
    Checking log mining parameters [tibero1]... ok
    Checking log mining parameters [tibero2]... ok
    Get Archive log directory [tibero1]... ok
    Get Archive log format [tibero1]... ok
    Get Archive log directory [tibero2]... ok
    Get Archive log format [tibero2]... ok
    Dropping ProSync objects... ok
    Dropping ProSync tablespace... DROP TABLESPACE instance_ts INCLUDING CONTENTS AND DATAFILES;
    
    done
    
    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
    Prosync user TAC2TAC to uppercase TAC2TAC... ok
    Checking source object file(group num : 1)... ok
    Building source object for TEST%.%... ok
    Adding table supplemental log... 4, and one for prosync
      "TAC2TAC"."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.
      TAC2TAC.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... UTF8
    Querying NLS_NCHAR_CHARACTERSET... UTF16
    Switching logfile [tibero1]... ok
    Switching logfile [tibero2]... ok
    Querying current log sequence [tibero1]... 8
    Querying current log sequence [tibero2]... 8
    Querying current snapshot#... 93289
    
    
    ********************************************************************************
    * Install to Target Database (4/5)
    ********************************************************************************
    Dropping ProSync objects... ok
    Dropping ProSync tablespace... DROP TABLESPACE TAC2TAC_ts INCLUDING CONTENTS AND DATAFILES;
    
    done
    
    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 [tibero1 (group 1)]... ok
    Generating initial construct history [tibero2 (group 1)]... ok
    Generating initial commit history... ok
    
    ********************************************************************************
    * Generate Configuration Parameters (5/5)
    ********************************************************************************
    Generating Wallet... ok
    Generating Extract [tibero1] configuration...  ok
    Generating Extract [tibero2] configuration...  ok
    Generating Apply [tibero_tar] configuration...  ok
    Generating LONG/LOB configuration...  ok
    Generating instance map to prs_instance.map ...
    
    
    ********************************************************************************
    * ProSync is installed successfully on Fri, 18 Apr 2025 02:01:32 +0000.
    *
    *   PRS_HOME     = /home/prosync/example
    *   Binary Path  = /home/prosync/example/bin
    *   ProSync User = TAC2TAC
    *
    *   Archived Log Path     = /home/tibero/tibero/tibero7/database/tibero/archive/
    *   Archived Log Format   = log-t%t-r%r-s%s.arc
    *   Initial log sequence# = 9
    *
    *   Archived Log Path     = /home/tibero/tibero/tibero7/database/tibero/archive/
    *   Archived Log Format   = log-t%t-r%r-s%s.arc
    *   Initial log sequence# = 9
    *
    *   Initial change# (TSN) = 94003 
    *
    ********************************************************************************
    $ tbdown
    $ tbcm -d
    $ cd $TB_HOME/config
    total 156
    drwxr-xr-x  2 tibero tibero  4096 Apr 21 05:54 ./
    drwxr-xr-x 13 tibero tibero  4096 Apr 17 10:19 ../
    -rw-r--r--  1 tibero tibero    72 Apr  1  2024 .gitignore
    -rw-r--r--  1 tibero tibero   474 Apr  1  2024 cm.template
    -rw-r--r--  1 tibero tibero   691 Apr 17 10:19 cm_tibero1.tip
    -rw-r--r--  1 tibero tibero   691 Apr 17 10:19 cm_tibero2.tip
    -rw-r--r--  1 tibero tibero   810 Apr  1  2024 common_tip.template
    -rwxr-xr-x  1 tibero tibero   982 Apr  1  2024 gen_QMS_store_dsn_for_sampler.sh*
    -rwxr-xr-x  1 tibero tibero  4433 Apr  1  2024 gen_psm_cmd.sh*
    -rwxr-xr-x  1 tibero tibero  4886 Apr  1  2024 gen_tip.sh*
    -rwxr-xr-x  1 tibero tibero  5938 Apr  1  2024 gen_tip_for_ssvr.sh*
    -rwxr-xr-x  1 tibero tibero 11797 Apr  1  2024 gen_tip_for_tac.sh*
    -rwxr-xr-x  1 tibero tibero 15732 Apr  1  2024 gen_tip_for_zeta.sh*
    -rw-r--r--  1 tibero tibero  1796 Apr  1  2024 ilog.map.example
    -rwxr-xr-x  1 tibero tibero  1628 Apr 17 10:19 psm_commands*
    -rw-r--r--  1 tibero tibero   567 Apr  1  2024 sampler.ssa.template
    -rw-r--r--  1 tibero tibero   488 Apr  1  2024 sampler.template
    -rw-r--r--  1 tibero tibero   434 Apr  1  2024 ssvr.template
    -rw-r--r--  1 tibero tibero   730 Apr  1  2024 tac.template
    -rw-r--r--  1 tibero tibero   572 Apr  1  2024 tas.template
    -rw-r--r--  1 tibero tibero   489 Apr  1  2024 tibero.template
    -rw-r--r--  1 tibero tibero   936 Apr 21 05:54 tibero1.tip
    -rw-r--r--  1 tibero tibero   936 Apr 21 05:54 tibero2.tip
    -rw-r--r--  1 tibero tibero   693 Apr  1  2024 tibero_dev.template
    -rw-r--r--  1 tibero tibero   344 Apr  1  2024 tibero_max.template
    -rw-r--r--  1 tibero tibero   582 Apr  1  2024 tip.ssa.template
    -rw-r--r--  1 tibero tibero   525 Apr  1  2024 tip.template
    -rw-r--r--  1 tibero tibero   689 Apr  1  2024 tip_dev.template
    -rw-r--r--  1 tibero tibero   528 Apr  1  2024 tip_jenkins.template
    -rw-r--r--  1 tibero tibero   340 Apr  1  2024 tip_max.template
    -rw-r--r--  1 tibero tibero     5 Apr  1  2024 variant
    
    # tip file generated from /home/tibero/tibero/tibero7/config/cm.template (Thu Apr 17 10:19:44 UTC 2025)
    #-------------------------------------------------------------------------------
    #
    # Cluster Manager initialization parameter
    #
    #-------------------------------------------------------------------------------
    CM_ID=0 # 여기에 CM_ID를 추가한다.
    CM_NAME=cm_tibero1
    CM_UI_PORT=8645
    CM_RESOURCE_FILE=/home/tibero/tibero/tibero7/cmfile/tibero/cm_tibero1.res
    
    CM_LOG_DEST=/home/tibero/tibero/tibero7/instance/tibero1/log/cm
    CM_GUARD_LOG_DEST=/home/tibero/tibero/tibero7/instance/tibero1/log/cm/guard
    
    #CM_HEARTBEAT_EXPIRE
    #CM_WATCHDOG_EXPIRE
    #LOG_LVL_CM
    
    #CM_ENABLE_FAST_NET_ERROR_DETECTION=Y
    #CM_FENCE=Y
    #_CM_CHECK_RUNLEVEL=Y
    
    tbcm -b
    tbboot
    cmrctl show all
    Resource List of Node cm_tibero1
    =====================================================================
      CLUSTER     TYPE        NAME       STATUS           DETAIL         
    ----------- -------- -------------- -------- ------------------------
         COMMON  network           inc1       UP (private) 172.19.0.11/8640
         COMMON  cluster     cls_tibero       UP inc: inc1, pub: N/A
     cls_tibero     file   cls_tibero:0       UP /home/tibero/tibero/tibero7/cmfile/tibero/cmdata
     cls_tibero  service         tibero       UP Database, Active Cluster (auto-restart: OFF)
     cls_tibero       db        tibero1 UP(NRML) tibero, /home/tibero/tibero/tibero7, failed retry cnt: 0
    =====================================================================
    Resource List of Node cm_tibero2
    =====================================================================
      CLUSTER     TYPE        NAME       STATUS           DETAIL         
    ----------- -------- -------------- -------- ------------------------
         COMMON  network           inc2       UP (private) 172.19.0.12/8670
         COMMON  cluster     cls_tibero       UP inc: inc2, pub: N/A
     cls_tibero     file   cls_tibero:0       UP /home/tibero/tibero/tibero7/cmfile/tibero/cmdata
     cls_tibero  service         tibero       UP Database, Active Cluster (auto-restart: OFF)
     cls_tibero       db        tibero2 UP(NRML) tibero, /home/tibero/tibero/tibero7, failed retry cnt: 0
    =====================================================================
    
    cmrctl add group --name <group_name> --cname <cluster_name> 
    --grptype <type> --failover <true|false>

    name

    string

    그룹 리소스 이름이다. (unique, 필수)

    cname

    string

    cmrctl add group --name CM1 --cname cls_tibero --grptype prs_agent
    $ Resource add success! (group, CM1)
    cmrctl add agent --name <agent_name> --grpname <group_name> --script <directory_path>
    --pubnet <public_network_resource_name> --retry_cnt <retry_cnt>

    name

    string

    agent 리소스 이름이다. (unique, 필수)

    grpname

    string

    cmrctl add agent --name agent1 --grpname CM1 --script "$PRS_HOME/bin/prs_0.sh"
    $ Resource add success! (agent, agent1)
    cmrctl show all
    Resource List of Node cm_tibero1
    =====================================================================
      CLUSTER     TYPE        NAME       STATUS           DETAIL         
    ----------- -------- -------------- -------- ------------------------
         COMMON  network           inc1       UP (private) 172.19.0.11/8640
         COMMON  cluster     cls_tibero       UP inc: inc1, pub: N/A
     cls_tibero     file   cls_tibero:0       UP /home/tibero/tibero/tibero7/cmfile/tibero/cmdata
     cls_tibero  service         tibero       UP Database, Active Cluster (auto-restart: OFF)
     cls_tibero       db        tibero1 UP(NRML) tibero, /home/tibero/tibero/tibero7, failed retry cnt: 0
     cls_tibero    group            CM1     DOWN type: prosync (failover: ON)
     cls_tibero    agent         agent1     DOWN /home/tibero/tibero/tibero7/prs_0.sh, start retry cnt: 0
    =====================================================================
    Resource List of Node cm_tibero2
    =====================================================================
      CLUSTER     TYPE        NAME       STATUS           DETAIL         
    ----------- -------- -------------- -------- ------------------------
         COMMON  network           inc2       UP (private) 172.19.0.12/8670
         COMMON  cluster     cls_tibero       UP inc: inc2, pub: N/A
     cls_tibero     file   cls_tibero:0       UP /home/tibero/tibero/tibero7/cmfile/tibero/cmdata
     cls_tibero  service         tibero       UP Database, Active Cluster (auto-restart: OFF)
     cls_tibero       db        tibero2 UP(NRML) tibero, /home/tibero/tibero/tibero7, failed retry cnt: 0
     cls_tibero    group            CM1     DOWN type: prosync (failover: ON)
     cls_tibero    agent         agent2     DOWN /home/tibero/tibero/tibero7/prs_1.sh, start retry cnt: 0
    =====================================================================
    
    cmrctl start group --name CM1
    =================================== SUCCESS! ===================================
     Succeeded to request at each node to boot resources under the group(CM1).
     Please use "cmrctl show group --name CM1" to verify the result.
    ================================================================================
    Resource List of Node cm_tibero1
    =====================================================================
      CLUSTER     TYPE        NAME       STATUS           DETAIL         
    ----------- -------- -------------- -------- ------------------------
         COMMON  network           inc1       UP (private) 172.19.0.11/8640
         COMMON  cluster     cls_tibero       UP inc: inc1, pub: N/A
     cls_tibero     file   cls_tibero:0       UP /home/tibero/tibero/tibero7/cmfile/tibero/cmdata
     cls_tibero  service         tibero       UP Database, Active Cluster (auto-restart: OFF)
     cls_tibero       db        tibero1 UP(NRML) tibero, /home/tibero/tibero/tibero7, failed retry cnt: 0
     cls_tibero    group            CM1       UP type: prosync (failover: ON)
     cls_tibero    agent         agent1       UP /home/tibero/tibero/tibero7/prs_0.sh, start retry cnt: 0
    =====================================================================
    Resource List of Node cm_tibero2
    =====================================================================
      CLUSTER     TYPE        NAME       STATUS           DETAIL         
    ----------- -------- -------------- -------- ------------------------
         COMMON  network           inc2       UP (private) 172.19.0.12/8670
         COMMON  cluster     cls_tibero       UP inc: inc2, pub: N/A
     cls_tibero     file   cls_tibero:0       UP /home/tibero/tibero/tibero7/cmfile/tibero/cmdata
     cls_tibero  service         tibero       UP Database, Active Cluster (auto-restart: OFF)
     cls_tibero       db        tibero2 UP(NRML) tibero, /home/tibero/tibero/tibero7, failed retry cnt: 0
     cls_tibero    group            CM1       UP type: prosync (failover: ON)
     cls_tibero    agent         agent2       UP /home/tibero/tibero/tibero7/prs_1.sh, start retry cnt: 0
    =====================================================================
    
    $ prs_adm
    
    ProSync 4 - Admin Utility
    
    TmaxData Corporation Copyright (c) 2024-. All rights reserved.
    
    Admin> status
    
    prs_agent ID: agent1, HOST: 172.19.0.11, PORT: 7600, CM_GROUP: CM1, CM_ID: 0 is running
    prs_agent ID: agent2, HOST: 172.19.0.12, PORT: 7700, CM_GROUP: CM1, CM_ID: 1 is running
    prs_agent ID: agent3, HOST: 172.19.0.13, PORT: 7800, CM_GROUP: CM2, CM_ID: 0 is running
    prs_agent ID: agent4, HOST: 172.19.0.14, PORT: 7900, CM_GROUP: CM2, CM_ID: 1 is running
    
    
    Instance ID: [TAC2TAC]
    prosync_ext1 (1) is running (prs_agent ID : agent1, HOST: 172.19.0.11, PORT: 7600)
    prosync_ext2 (2) is running (prs_agent ID : agent2, HOST: 172.19.0.12, PORT: 7700)
    prosync_apply1 is running (prs_agent ID : agent3, HOST: 172.19.0.13, PORT: 7800)
    prosync_llob (1) is running (prs_agent ID : agent1, HOST: 172.19.0.11, PORT: 7600)
    

    참고

    USE_CM을 Y로 설정한 경우에만 PRS_AGENT_PROC_MAX_FAIL_CNT, PRS_AGENT_PROC_STARTUP_TIMEOUT, PRS_AGENT_PROC_STATUS_REPLY_TIMEOUT, PRS_AGENT_PROC_STATUS_INTERVAL, PRS_AGENT_CM_PROBE_TIMEOUT 파라미터가 동작한다.

    agent config file 설정 예시

    4. Instance 설치

    prs_install.cfg 설정 예시

    instance 설치 및 설치 결과 예시

    5. CM 설정

    5.1. tibero 기동 종료

    5.2. cm 기동 종료

    5.3. cm tip file에 cm_id 추가

    5.4. cm 기동

    5.5. tibero 기동

    5.6. cm 확인

    5.7. CM group 등록

    예시

    5.8. CM agent 등록

    예시

    주의

    prs_0.sh 파일은 기본적으로 $PRS_HOME/bin에 위치하고 있다.

    cm에서 해당 파일을 실행할 수 있는 권한이 있어야 한다.

    5.9. CM group 기동

    6. Prosync 기동 확인

    해당 그룹 리소스가 속할 cluster 리소스 이름이다. (필수)

    grptype

    string

    그룹의 종류. prosync의 경우 instance의 agent 이기 때문에 "prs_agent "로 등록해야 한다.

    failover

    string

    agent가 종료되었을 때 failover 기능 사용 여부이다. (default: true)

    agent 리소스가 속할 그룹 리소스 이름이다 (필수)

    script

    string(file path)

    agent cmd를 실행시킬 script 파일의 절대경로이다 (필수)

    pubnet

    string

    public 용도로 사용할 네트워크 리소스 이름이다. dependency를 추가하려면 입력해야 한다.

    retry_cnt

    integer

    최대 retry 시도 횟수이다. (default: 3)

    Single to Single

    SRC DB와 TAR DB가 서로 같은 장비에 설치된 경우

    1. Agent 설치

    prs_install_agent.cfg 예시

    AGENT_CNT=1
    
    AGENT_ID_0=agent1
    AGENT_HOST_0=172.19.0.11
    AGENT_PORT_0=7600

    agent 설치 및 설치 결과 예시

    $ cd $PRS_HOME/install
    $ ./prs_install_agent.sh
    ********************************************************************************
    * Agent Install Step (1/4)
    * Check System Parameters 
    ********************************************************************************
    * Checking system type... 
    Linux
    
    * Checking PRS_HOME... 
    PRS_HOME: /home/prosync/example
    
    ********************************************************************************
    * Agent Install Step (2/4)
    * Check install agent config file   [prs_install_agent.cfg]  
    * Check Instance file               [prs_instance.map] 
    ********************************************************************************
    * Checking configuration file... 
    [/home/prosync/example/install/prs_install_agent.cfg] exists.
    
    * Checking Agent configuration... 
    parameter check for Agent[0] Started 
        AGENT_ID: agent1
        AGENT_HOST: 172.19.0.11
        AGENT_PORT: 7600
    parameter check for Agent[0] Done 
    
    * Checking prs_instance.map file... 
    [/home/prosync/example/config/prs_instance.map] exists.
    
    ********************************************************************************
    * Agent Install Step (3/4)
    * Writing agent config file         [/home/prosync/example/install/prs_install_agent.cfg]  
    * Writing Instance file             [/home/prosync/example/config/prs_instance.map] 
    * Total Agent Cnt                   [1] 
    ********************************************************************************
    * Writing all agents.. cnt: 1
    * Writing Agent.. Index:           0
    * Writing Agent.. AGENT_ID:        agent1
    * Writing Agent.. AGENT_HOST:      172.19.0.11
    * Writing Agent.. AGENT_PORT:      7600
    * Writing Agent.. AGENT_CM_GROUP:  
    * Writing Agent.. AGENT_CM_ID:     
    * Writing Agent configuration... 
    /home/prosync/example/config/prs_agent_agent1.cfg not found. Writing files...
    Done.
    
    * Writing Agent information... 
    
    
    * Creating var directory...
       * Already Created.
    ********************************************************************************
    * Agent Install Step (4/4)
    * Creating files for CM
    ********************************************************************************
    Agent installation Done.
    

    2. Instance 설치

    prs_install.cfg 설정 예시

    ############################################
    #
    # ProSync Installation Parameters
    #
    ############################################
    
    # (Mandatory)
    INSTANCE_ID=instance
    PRS_USER=prosync_user
    PRS_PWD=prosync_user_password
    
    # (Optional)
    #PRS_TS_NAME=
    #PRS_TS_FILE=
    #PRS_TS_SIZE=
    #PRS_SKIP_USER_CREATE=N
    #PRS_TARGET_MIN_PRIVILEGE=N
    #PRS_LOG_DIR=
    #LOG_BACKUP_DIR=
    #CREATE_DSN_FILE=N
    #DSN_DIR=
    
    ############################################
    #
    # ProSync Processes Informations for Instance Map
    #
    ############################################
    ### (Optional)
    AGENT_LIST_DELIMITER=,
    
    ### (Mandatory)
    # Ext process
    ## Ext cnt must be the same as SRC_DB_CNT
    EXT_CNT=1
    EXT_AGENT_ID_LIST_0=agent1
    #EXT_AGENT_ID_LIST_1=agent1,agent2
    
    # Apply process
    APPLY_PORT=7620
    APPLY_AGENT_ID_LIST=agent1
    
    # Llob process
    LLOB_PORT=7630
    LLOB_AGENT_ID_LIST=agent1
    
    ############################################
    #
    # Source database informations
    #
    ############################################
    
    # (Mandatory)
    SRC_DB_TYPE=TIBERO
    SRC_DB_NAME=tibero
    SRC_INSTALL_USER=sys
    SRC_INSTALL_PWD=tibero
    
    # (Optional)
    #AUTO_ADD_SUPP_LOG=Y
    #SRC_SKIP_TS_CREATE=N
    #AUTO_SYNC_ON_CREATE=N
    
    # (for Tibero Standby Cluster source synchronization)
    # When USE_TSC=Y, set SRC_DB_NAME to the readable standby alias and
    # SRC_PRIMARY_DB_NAME to the writable primary alias.
    #USE_TSC=N
    #SRC_PRIMARY_DB_NAME=
    
    # (for TAC-TSC) per-instance writable primary aliases, parallel to
    # SRC_DB_ALIAS_N.
    #SRC_PRIMARY_DB_ALIAS_0=
    #SRC_PRIMARY_DB_ALIAS_1=
    
    # (Number Of Database Instances)
    #SRC_DB_CNT=1
    
    # (Dsn)
    #SRC_DB_REAL_NAME=
    #SRC_DB_IP_0=
    #SRC_DB_PORT_0=
    #SRC_DB_IP_1=
    #SRC_DB_PORT_1=
    
    # (for Cluster, only Extract Needed)
    #SRC_DB_ALIAS_0=
    #SRC_DB_ALIAS_1=
    
    # (for ORACLE DB Only)
    #SUPP_LOG_LVL_ALL=N
    
    # (for Oracle Logminer only)
    # Oracle 11g or less, use utl_file_dir instead of DICT_FILE_DIR
    #USE_LOGMNR=Y
    #DICT_FILE_DIR=
    
    # (for MySQL only)
    #PRS_EXT_IP=
    
    ############################################
    #
    # Target database informations
    #
    ############################################
    
    # (Mandatory)
    TAR_DB_TYPE=TIBERO
    TAR_DB_NAME=tar_tibero
    TAR_INSTALL_USER=sys
    TAR_INSTALL_PWD=tibero
    
    # (Optional)
    #TAR_SKIP_TS_CREATE=N
    
    # (Number Of Database Instances)
    #TAR_DB_CNT=1
    
    # (Dsn)
    #TAR_DB_REAL_NAME=
    #TAR_DB_IP_0=
    #TAR_DB_PORT_0=
    #TAR_DB_IP_1=
    #TAR_DB_PORT_1=
    
    # (for MySQL only)
    #PRS_APPLY_IP=
    
    # (for multi thread)
    #GROUP_NUM=1
    
    # (for TDE(transparent data encryption) synchronization)
    #USE_TDE=N

    instance 설치 및 설치 결과 예시

    $ cd $PRS_HOME/install
    $ ./prs_install.sh
    ********************************************************************************
    * Check System Parameters (1/5)
    ********************************************************************************
    Checking system type... Linux
    Checking PRS_HOME... /home/prosync/example
    Checking TB_HOME... /home/tibero/tibero/tibero7
    Checking ORACLE_HOME... not found
    Checking psql ... available
    Checking psql service ...not found
    
    ********************************************************************************
    * Check Installation Parameters (2/5)
    ********************************************************************************
    Checking configuration file... ok
    Checking prs_instance.map file... ok
    Checking Instance Id from prs_instance.map...
    * topology information for instance was not found. It will be written in this script...
    ok
    Checking processes infos...
    * Checking Ext processes Informations... EXT_CNT: 1
    * Delimiter: [,]
       * Ext[0] process's Agent Id List 
           * Agent ID[agent1]
           * [agent1] found.
    * Checking Apply process Informations...
    * Checking Apply Port..
       * APPLY_PORT=[7620]
    * Checking Apply process's Agent Id List..
           * Agent ID[agent1]
           * [agent1] found.
    * Checking Llob process Informations...
    * Checking Llob Port..
       * LLOB_PORT=[7630]
    * Checking Llob process's Agent Id List..
           * Agent ID[agent1]
           * [agent1] found.
    
    Checking INSTANCE_ID... instance
    Checking PRS_USER... prosync_user
    Checking PRS_TS_NAME... instance_ts
    Checking PRS_TS_FILE... instance_ts.dtf
    Checking PRS_TS_SIZE... 1G
    Checking PRS_EXT_IP... %
    Checking PRS_APPLY_IP... %
    Checking SRC_DB_CNT... 1
    Checking SRC_DB_TYPE... TIBERO
    Checking SRC_INSTALL_USER... sys
    Checking SRC_DB_NAME... tibero
    Checking source connection(1/2)... ok
    Checking source connection(2/2)... ok
    Checking TAR_DB_TYPE... TIBERO
    Checking TAR_INSTALL_USER... sys
    Checking TAR_DB_NAME... tar_tibero
    Checking target connection [tar_tibero](1/2)... ok
    Checking target connection [tar_tibero](2/2)... ok
    
    ********************************************************************************
    * Install to Source Database (3/5)
    ********************************************************************************
    Checking archived log mode... ok
    Checking log mining parameters [tibero]... ok
    Get Archive log directory [tibero]... ok
    Get Archive log format [tibero]... ok
    Dropping ProSync objects... ok
    Dropping ProSync tablespace... DROP TABLESPACE instance_ts INCLUDING CONTENTS AND DATAFILES;
    
    done
    
    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
    Prosync user prosync_user to uppercase PROSYNC_USER... ok
    Checking source object file(group num : 1)... ok
    Building source object for TEST.%... ok
    Building source object for TEST%.%... ok
    Adding table supplemental log... 6, and one for prosync
      "PROSYNC_USER"."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.
      "TEST"."T4" : supplemental log already exists, continue.
      "TEST"."T5" : supplemental log already exists, continue.
      prosync_user.PRS_DUMMY_TBL : supplemental log already exists, continue.
    Counting total source objects... 6
    Generating initial DDL history... ok
    Checking initial DDL history... ok
    Insert default value in PRS_DUMMY_TBL...ok
    Querying NLS_CHARACTERSET... UTF8
    Querying NLS_NCHAR_CHARACTERSET... UTF16
    Switching logfile... ok
    Querying current log sequence [tibero]... 196
    Querying current snapshot#... 4463078
    
    ********************************************************************************
    * Install to Target Database (4/5)
    ********************************************************************************
    Dropping ProSync objects... ok
    Dropping ProSync tablespace... DROP TABLESPACE instance_ts INCLUDING CONTENTS AND DATAFILES;
    
    done
    
    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 [tibero (group 1)]... ok
    Generating initial commit history... ok
    
    ********************************************************************************
    * Generate Configuration Parameters (5/5)
    ********************************************************************************
    Generating Wallet... ok
    Generating Extract [tibero] configuration...  ok
    Generating Apply [tar_tibero] configuration...  ok
    Generating LONG/LOB configuration...  ok
    Generating instance map to prs_instance.map ...
    
    
    ********************************************************************************
    * ProSync is installed successfully on Mon, 21 Apr 2025 13:04:35 +0900.
    *
    *   PRS_HOME     = /home/prosync/example
    *   Binary Path  = /home/prosync/example/bin
    *   ProSync User = prosync_user
    *
    *   Archived Log Path     = /home/tibero/tibero/tibero7/database/tibero/archive/
    *   Archived Log Format   = log-t%t-r%r-s%s.arc
    *   Initial log sequence# = 196
    *
    *   Initial change# (TSN) = 4463078 
    *
    ********************************************************************************
    

    2.1 config 수정 (PostgreSQL)

    아래 설정은 SRC DB 또는 TAR DB가 PostgreSQL인 경우에만 해당하며, 위 Tibero to Tibero 예시에서는 필요하지 않다.

    • ext

    LOG_LEVEL=3
    
    PRS_USER=example
    PRS_PWD=#encrypted
    
    ...
    
    # have to set
    ODBC_DRIVER=/example/path/psqlodbcw.so
    PQ_DRIVER=/example/path/libpq.so.5
    PQ_REP_CONN_NAME=example
    • apply

    LOG_LEVEL=3
    
    PRS_USER=example
    PRS_PWD=#encrypted
    
    ...
    
    # have to set
    ODBC_DRIVER=/example/path/psqlodbcw.so
    • llob

    LOG_LEVEL=3
    
    PRS_USER=example
    PRS_PWD=#encrypted
    
    ...
    
    # have to set
    ODBC_DRIVER=/example/path/psqlodbcw.so

    3. Prosync 실행

    실행 절차는 문서를 참고한다.


    SRC DB가 설치된 장비에서 Agent를 설치한다.

    SRC DB 장비에서 TAR DB Client 접근을 위한 tbdsn.tbr 설정으로, src db 장비에서 instance를 설치하기 위해서 src db 장비에서 tar db client에 접근할 수 있어야 한다. 이를 위해 src db 장비의 tbdsn.tbr 파일에 tar db 정보를 추가해야 한다.

    접근 확인 예시

    SRC DB가 설치된 장비에서 Instance를 설치한다.

    아래 출력은 다른 설정으로 수행한 설치의 예시이므로, 인스턴스명·사용자·Agent 배치 등 일부 값이 위 설정 파일과 다를 수 있다.

    TAR DB 장비 Prosync 디렉토리에 설치 파일 및 디렉토리를 옮긴다. ProSync는 SRC DB 장비에서만 설치되었기 때문에, TAR DB 장비에서도 ProSync를 기동하려면 SRC DB 장비에서 설치 후 생성된 파일 및 디렉토리를 TAR DB 장비로 복사해야 한다.

    • $PRS_HOME/config

      • prs_adm.cfg

      • <instance_id>_apply1.cfg

      • prs_agent_<agent_id>.cfg

    실행 절차는 문서를 참고한다.

    prs_instance.map

  • $PRS_HOME/var

  • ProSync 실행
    ProSync 실행

    SRC DB와 TAR DB가 서로 다른 장비에 설치된 경우

    1. Agent 설치

    prs_install_agent.cfg 예시

    agent 설치 및 설치 결과 예시

    2. tbdsn.tbr 설정

    TAR DB tbdsn.tbr 파일 예시

    SRC DB 장비에 TAR DB 정보를 반영한 tbdsn.tbr 예시

    SRC DB 장비에서 TAR DB client로 접근 가능 여부 확인

    3. Instance 설치

    prs_install.cfg 설정 예시

    instance 설치 및 설치 결과 예시

    4. 설치 파일 및 디렉토리 이동

    주의

    설치 시 생성된 설정 파일들(*.cfg)에는 SRC DB 장비 기준의 경로가 포함되어 있으므로, TAR DB 장비로 복사한 후에는 경로를 TAR DB 장비 기준으로 수정해야 한다.

    복사 필요한 파일 및 디렉토리

    옮긴 파일 예시

    5. Prosync 실행

    AGENT_CNT=2
    
    AGENT_ID_0=agent1
    AGENT_HOST_0=172.19.0.11
    AGENT_PORT_0=7600
    
    AGENT_ID_1=agent2
    AGENT_HOST_1=172.19.0.12
    AGENT_PORT_1=7700
    $ cd $PRS_HOME/install
    $ ./prs_install_agent.sh
    ********************************************************************************
    * Agent Install Step (1/4)
    * Check System Parameters 
    ********************************************************************************
    * Checking system type... 
    Linux
    
    * Checking PRS_HOME... 
    PRS_HOME: /home/prosync/example
    
    ********************************************************************************
    * Agent Install Step (2/4)
    * Check install agent config file   [prs_install_agent.cfg]  
    * Check Instance file               [prs_instance.map] 
    ********************************************************************************
    * Checking configuration file... 
    [/home/prosync/example/install/prs_install_agent.cfg] exists.
    
    * Checking Agent configuration... 
    parameter check for Agent[0] Started 
        AGENT_ID: agent1
        AGENT_HOST: 172.19.0.11
        AGENT_PORT: 7600
    parameter check for Agent[0] Done 
    parameter check for Agent[1] Started 
        AGENT_ID: agent2
        AGENT_HOST: 172.19.0.12
        AGENT_PORT: 7700
    parameter check for Agent[1] Done 
    
    * Checking prs_instance.map file... 
    [/home/prosync/example/config/prs_instance.map] exists.
    
    ********************************************************************************
    * Agent Install Step (3/4)
    * Writing agent config file         [/home/prosync/example/install/prs_install_agent.cfg]  
    * Writing Instance file             [/home/prosync/example/config/prs_instance.map] 
    * Total Agent Cnt                   [2] 
    ********************************************************************************
    * Writing all agents.. cnt: 2
    * Writing Agent.. Index:           0
    * Writing Agent.. AGENT_ID:        agent1
    * Writing Agent.. AGENT_HOST:      172.19.0.11
    * Writing Agent.. AGENT_PORT:      7600
    * Writing Agent.. AGENT_CM_GROUP:  
    * Writing Agent.. AGENT_CM_ID:     
    * Writing Agent configuration... 
    /home/prosync/example/config/prs_agent_agent1.cfg not found. Writing files...
    Done.
    
    * Writing Agent information... 
    
    
    * Writing Agent.. Index:           1
    * Writing Agent.. AGENT_ID:        agent2
    * Writing Agent.. AGENT_HOST:      172.19.0.12
    * Writing Agent.. AGENT_PORT:      7700
    * Writing Agent.. AGENT_CM_GROUP:  
    * Writing Agent.. AGENT_CM_ID:     
    * Writing Agent configuration... 
    /home/prosync/example/config/prs_agent_agent2.cfg not found. Writing files...
    Done.
    
    * Writing Agent information... 
    
    
    * Creating var directory...
       * Already Created.
    ********************************************************************************
    * Agent Install Step (4/4)
    * Creating files for CM
    ********************************************************************************
    Agent installation Done.
    
    #-------------------------------------------------
    # /home/tibero_tar/tibero/tibero7/client/config/tbdsn.tbr
    # Network Configuration File.
    # Generated by gen_tip_for_tac.sh at Thu Apr 17 10:51:54 UTC 2025
    tar_tibero=(
        (INSTANCE=(HOST=172.19.0.12)
    	      (PORT=8620)
                  (DB_NAME=tibero)
        )
    )
    
    #-------------------------------------------------
    # /home/tibero/tibero/tibero7/client/config/tbdsn.tbr
    # Network Configuration File.
    # Generated by gen_tip_for_tac.sh at Thu Apr 17 10:19:44 UTC 2025
    tibero=(
        (INSTANCE=(HOST=172.19.0.11)
    	      (PORT=8620)
                  (DB_NAME=tibero)
        )
    )
    
    tar_tibero=(
        (INSTANCE=(HOST=172.19.0.12)
    	      (PORT=8620)
                  (DB_NAME=tibero)
        )
    )
           
    $ tbsql sys/tibero@tar_tibero
    tbSQL 7  
    
    TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
    
    Connected to Tibero using tar_tibero.
    
    SQL> 
    ############################################
    #
    # ProSync Installation Parameters
    #
    ############################################
    
    # (Mandatory)
    INSTANCE_ID=SINGLE2SINGLE
    PRS_USER=SINGLE2SINGLE
    PRS_PWD=SINGLE2SINGLE
    
    # (Optional)
    #PRS_TS_NAME=
    #PRS_TS_FILE=
    #PRS_TS_SIZE=
    #PRS_SKIP_USER_CREATE=N
    #PRS_TARGET_MIN_PRIVILEGE=N
    #PRS_LOG_DIR=
    #LOG_BACKUP_DIR=
    #CREATE_DSN_FILE=N
    #DSN_DIR=
    #DSN_FILE=#need DSN_DIR
    
    ############################################
    #
    # ProSync Processes Informations for Instance Map
    #
    ############################################
    ### (Optional)
    AGENT_LIST_DELIMITER=,
    
    ### (Mandatory)
    # Ext process
    ## Ext cnt must be the same as SRC_DB_CNT
    EXT_CNT=1
    EXT_AGENT_ID_LIST_0=agent1
    # EXT_AGENT_ID_LIST_1=agent2,agent1
    
    # Apply process
    APPLY_PORT=7620
    APPLY_AGENT_ID_LIST=agent2
    
    # Llob process
    LLOB_PORT=7630
    LLOB_AGENT_ID_LIST=agent1
    
    ############################################
    #
    # Source database informations
    #
    ############################################
    
    # (Mandatory)
    SRC_DB_TYPE=TIBERO
    SRC_DB_NAME=tibero
    SRC_INSTALL_USER=sys
    SRC_INSTALL_PWD=tibero
    
    # (Optional)
    #AUTO_ADD_SUPP_LOG=Y
    #SRC_SKIP_TS_CREATE=N
    #AUTO_SYNC_ON_CREATE=N
    
    # (for Tibero Standby Cluster source synchronization)
    # When USE_TSC=Y, set SRC_DB_NAME to the readable standby alias and
    # SRC_PRIMARY_DB_NAME to the writable primary alias.
    #USE_TSC=N
    #SRC_PRIMARY_DB_NAME=
    
    # (for TAC-TSC) per-instance writable primary aliases, parallel to
    # SRC_DB_ALIAS_N.
    #SRC_PRIMARY_DB_ALIAS_0=
    #SRC_PRIMARY_DB_ALIAS_1=
    
    # (Number Of Database Instances)
    # SRC_DB_CNT=1
    
    # (Dsn)
    #SRC_DB_REAL_NAME=
    #SRC_DB_IP_0=
    #SRC_DB_PORT_0=
    #SRC_DB_IP_1=
    #SRC_DB_PORT_1=
    
    # (for Cluster, only Extract Needed)
    # SRC_DB_ALIAS_0=
    # SRC_DB_ALIAS_1=
    
    # (for ORACLE DB Only)
    #SUPP_LOG_LVL_ALL=N
    
    # (for Oracle Logminer only)
    # Oracle 11g or less, use utl_file_dir instead of DICT_FILE_DIR
    #USE_LOGMNR=Y
    #DICT_FILE_DIR=
    
    # (for MySQL only)
    #PRS_EXT_IP=
    
    ############################################
    #
    # Target database informations
    #
    ############################################
    
    # (Mandatory)
    TAR_DB_TYPE=TIBERO
    TAR_DB_NAME=tar_tibero
    TAR_INSTALL_USER=sys
    TAR_INSTALL_PWD=tibero
    
    # (Optional)
    #TAR_SKIP_TS_CREATE=N
    
    # (Number Of Database Instances)
    # TAR_DB_CNT=1
    
    # (Dsn)
    #TAR_DB_REAL_NAME=
    #TAR_DB_IP_0=
    #TAR_DB_PORT_0=
    #TAR_DB_IP_1=
    #TAR_DB_PORT_1=
    
    # (for MySQL only)
    #PRS_APPLY_IP=
    
    # (for multi thread)
    #GROUP_NUM=1
    
    # (for TDE(transparent data encryption) synchronization)
    #USE_TDE=N
    $ cd $PRS_HOME/install
    $ ./prs_install.sh
    ********************************************************************************
    * Check System Parameters (1/5)
    ********************************************************************************
    Checking system type... Linux
    Checking PRS_HOME... /home/prosync/example
    Checking TB_HOME... /home/tibero/tibero/tibero7
    Checking ORACLE_HOME... not found
    Checking psql ... available
    Checking psql service ...not found
    
    ********************************************************************************
    * Check Installation Parameters (2/5)
    ********************************************************************************
    Checking configuration file... ok
    Checking prs_instance.map file... ok
    Checking Instance Id from prs_instance.map...
    * topology information for instance was not found. It will be written in this script...
    ok
    Checking processes infos...
    * Checking Ext processes Informations... EXT_CNT: 1
    * Delimiter: [,]
       * Ext[0] process's Agent Id List 
           * Agent ID[agent1]
           * [agent1] found.
    * Checking Apply process Informations...
    * Checking Apply Port..
       * APPLY_PORT=[7620]
    * Checking Apply process's Agent Id List..
           * Agent ID[agent1]
           * [agent1] found.
    * Checking Llob process Informations...
    * Checking Llob Port..
       * LLOB_PORT=[7630]
    * Checking Llob process's Agent Id List..
           * Agent ID[agent1]
           * [agent1] found.
    
    Checking INSTANCE_ID... instance
    Checking PRS_USER... prosync_user
    Checking PRS_TS_NAME... instance_ts
    Checking PRS_TS_FILE... instance_ts.dtf
    Checking PRS_TS_SIZE... 1G
    Checking PRS_EXT_IP... %
    Checking PRS_APPLY_IP... %
    Checking SRC_DB_CNT... 1
    Checking SRC_DB_TYPE... TIBERO
    Checking SRC_INSTALL_USER... sys
    Checking SRC_DB_NAME... tibero
    Checking source connection(1/2)... ok
    Checking source connection(2/2)... ok
    Checking TAR_DB_TYPE... TIBERO
    Checking TAR_INSTALL_USER... sys
    Checking TAR_DB_NAME... tar_tibero
    Checking target connection [tar_tibero](1/2)... ok
    Checking target connection [tar_tibero](2/2)... ok
    
    ********************************************************************************
    * Install to Source Database (3/5)
    ********************************************************************************
    Checking archived log mode... ok
    Checking log mining parameters [tibero]... ok
    Get Archive log directory [tibero]... ok
    Get Archive log format [tibero]... ok
    Dropping ProSync objects... ok
    Dropping ProSync tablespace... DROP TABLESPACE instance_ts INCLUDING CONTENTS AND DATAFILES;
    
    done
    
    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
    Prosync user prosync_user to uppercase PROSYNC_USER... ok
    Checking source object file(group num : 1)... ok
    Building source object for TEST.%... ok
    Building source object for TEST%.%... ok
    Adding table supplemental log... 6, and one for prosync
      "PROSYNC_USER"."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.
      "TEST"."T4" : supplemental log already exists, continue.
      "TEST"."T5" : supplemental log already exists, continue.
      prosync_user.PRS_DUMMY_TBL : supplemental log already exists, continue.
    Counting total source objects... 6
    Generating initial DDL history... ok
    Checking initial DDL history... ok
    Insert default value in PRS_DUMMY_TBL...ok
    Querying NLS_CHARACTERSET... UTF8
    Querying NLS_NCHAR_CHARACTERSET... UTF16
    Switching logfile... ok
    Querying current log sequence [tibero]... 196
    Querying current snapshot#... 4463078
    
    ********************************************************************************
    * Install to Target Database (4/5)
    ********************************************************************************
    Dropping ProSync objects... ok
    Dropping ProSync tablespace... DROP TABLESPACE instance_ts INCLUDING CONTENTS AND DATAFILES;
    
    done
    
    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 [tibero (group 1)]... ok
    Generating initial commit history... ok
    
    ********************************************************************************
    * Generate Configuration Parameters (5/5)
    ********************************************************************************
    Generating Wallet... ok
    Generating Extract [tibero] configuration...  ok
    Generating Apply [tar_tibero] configuration...  ok
    Generating LONG/LOB configuration...  ok
    Generating instance map to prs_instance.map ...
    
    
    ********************************************************************************
    * ProSync is installed successfully on Mon, 21 Apr 2025 13:04:35 +0900.
    *
    *   PRS_HOME     = /home/prosync/example
    *   Binary Path  = /home/prosync/example/bin
    *   ProSync User = prosync_user
    *
    *   Archived Log Path     = /home/tibero/tibero/tibero7/database/tibero/archive/
    *   Archived Log Format   = log-t%t-r%r-s%s.arc
    *   Initial log sequence# = 196
    *
    *   Initial change# (TSN) = 4463078 
    *
    ********************************************************************************
    total 35
    drwxr-xr-x 3 tibero tibero 4096 Apr 18 02:15 ./
    drwxr-xr-x 8 tibero tibero 4096 Apr 18 02:24 ../
    -rw-r--r-- 1 tibero tibero  534 Apr 18 02:15 SINGLE2SINGLE_apply1.cfg
    -rw-r--r-- 1 tibero tibero  339 Apr 18 02:15 prs_adm.cfg
    -rw-r--r-- 1 tibero tibero  353 Apr 18 02:15 prs_agent_agent2.cfg
    -rw-r--r-- 1 tibero tibero 1262 Apr 18 02:07 prs_instance.map
    drwxr-xr-x 2 tibero tibero 4096 Apr 17 10:51 templates/
    -rw-r--r-- 1 tibero tibero    5 Feb  5 04:59 variant
    # var directory tree 예시
    .
    ├── admin
    │   └── log
    ├── agent
    │   └── agent1
    └── SINGLE2SINGLE
        ├── alloc
        ├── log
        ├── lr1
        ├── path
        └── sam