Agent 프로세스를 설치하기 위해 각 계정의 설정 정보를 $PRS_HOME/install/prs_install_agent.cfg 파일에 작성한다.
############################################
#
# ProSync Agent Configurations (Template)
#
############################################
# ID have to be unique in prs_instance.map.
# It will be checked when executing prs_install_agent.sh.
# Because of multi-agent environment,
# HOSTNAME(defined in /etc/hosts) is not recommended, IP will be better.
# AGENT_HOST[%d]=192.xxx.xxx.xxx
# AGENT_ID is unique key in prosync
# All nodes have to use same AGENT_ID in same agent.
AGENT_CNT=1
AGENT_ID_0=agent
AGENT_HOST_0=localhost
AGENT_PORT_0=7600
#AGENT_CM_GROUP_0=0
#AGENT_CM_ID_0=0
#AGENT_ID_1=agent2
#AGENT_HOST_1=localhost
#AGENT_PORT_1=7601
#AGENT_CM_GROUP_1=1
#AGENT_CM_ID_1=1AGENT_CNT
설치할 Agent의 개수를 지정한다. 지정한 수만큼 아래 항목을 추가로 작성해야 한다. (필수)
아래는 4개의 Agent를 설정한 예시이다:
설정 파일(prs_install_agent.cfg)이 준비된 후에는 다음과 같이 설치 스크립트를 실행한다.
옵션 없이 기본 설정 파일로 설치를 수행하는 경우
설치가 진행되면 시스템 환경 체크, 설정 파일 검증, agent 파일 생성 등의 단계가 자동으로 수행된다.
중간에 기존 설정 파일이 존재할 경우 덮어쓸지 여부를 묻는 메시지가 표시되며, 사용자가 Y/N으로 응답해야 한다.
설치 예시
설치가 완료되면 다음 디렉터리에서 결과 파일을 확인할 수 있다.
prs_agent_<agent_id>.cfg: 개별 Agent의 설정 파일
prs_instance.map: 전체 Agent들의 연결 정보를 관리하는 매핑 파일
CM Failover 기능을 사용하기 위해 AGENT_CM_GROUP[n] 및 AGENT_CM_ID[n]을 설정한 경우, 설치 시 $PRS_HOME/bin 경로에 prs_<AGENT_CM_ID>.sh 형식의 스크립트 파일이 자동 생성된다.
이 스크립트 파일에는 Agent 기동을 위한 환경 변수를 설정해야 하며, 반드시 TB_HOME, AGENT_ID 등을 환경에 맞게 수정해야 한다.
AGENT_ID_[n]
각 Agent의 고유 ID를 지정한다. 숫자로 시작할 수 없으며, 고유하게 식별 가능한 이름을 설정해야 한다. (필수)
AGENT_HOST_[n]
Agent가 설치될 호스트를 지정한다. Hostname보다 IP 주소를 사용하는 것을 권장한다. (필수)
AGENT_PORT_[n]
Agent가 사용할 포트를 지정한다. (필수)
AGENT_CM_GROUP_[n]
CM Failover 기능을 사용하는 경우, 해당 Agent가 속한 CM 그룹 이름을 지정한다.
AGENT_CM_ID_[n]
CM Failover 기능을 사용하는 경우, Agent가 연결될 CM의 ID를 지정한다. 각 그룹 내에서는 중복되지 않아야 하며, 그룹이 다를 경우 중복 가능하다.
-h
도움말 출력
-c
사용할 환경설정 파일 지정 (기본값: prs_install_agent.cfg)
-y
기존 Agent 설정을 제거하고 새로 생성. prs_instance.map의 중복 항목도 교체됨
AGENT_CNT=4
AGENT_ID_0=agent1
AGENT_HOST_0=172.17.0.1
AGENT_PORT_0=7600
AGENT_CM_GROUP_0=CM1
AGENT_CM_ID_0=0
AGENT_ID_1=agent2
AGENT_HOST_1=172.17.0.2
AGENT_PORT_1=7601
AGENT_CM_GROUP_1=CM1
AGENT_CM_ID_1=1
AGENT_ID_2=agent3
AGENT_HOST_2=172.17.0.3
AGENT_PORT_2=7602
AGENT_CM_GROUP_2=CM2
AGENT_CM_ID_2=0
AGENT_ID_3=agent4
AGENT_HOST_3=172.17.0.4
AGENT_PORT_3=7603
AGENT_CM_GROUP_3=CM2
AGENT_CM_ID_3=1$ cd $PRS_HOME/install
$ ./prs_install_agent.sh [option] [config file]$ 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.17.0.1
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.17.0.2
AGENT_PORT: 7601
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.17.0.3
AGENT_PORT: 7602
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.17.0.4
AGENT_PORT: 7603
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.17.0.1
* Writing Agent.. AGENT_PORT: 7600
* Writing Agent.. AGENT_CM_GROUP: CM1
* Writing Agent.. AGENT_CM_ID: 0
* Writing Agent configuration...
File already exists...
[/home/prosync/example/config/prs_agent_agent1.cfg]
Want to Delete ? (Y/N)
n
Skip deleting...
* 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.17.0.2
* Writing Agent.. AGENT_PORT: 7601
* 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.17.0.3
* Writing Agent.. AGENT_PORT: 7602
* 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.17.0.4
* Writing Agent.. AGENT_PORT: 7603
* 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.$ cd $PRS_HOME/config
$ ls -al
total 51
drwxr-xr-x 3 users users 4096 Apr 16 15:42 .
drwxr-xr-x 15 users users 4096 Apr 14 15:08 ..
-rw-r--r-- 1 users users 367 Feb 27 19:22 prs_agent_agent1.cfg
-rw-r--r-- 1 users users 367 Apr 16 15:32 prs_agent_agent2.cfg
-rw-r--r-- 1 users users 367 Apr 16 15:32 prs_agent_agent3.cfg
-rw-r--r-- 1 users users 367 Apr 16 15:32 prs_agent_agent4.cfg
-rw-r--r-- 1 users users 1272 Apr 16 15:32 prs_instance.map
drwxr-xr-x 2 users users 4096 Apr 14 15:08 templates
-rw-r--r-- 1 users users 5 Feb 27 13:06 variant#--------------------------------------------------------
# ProSync Instances Map (prs_instance.map)
#
# Generated by Dummy Time: 04-16T14:22:21.920319
#
AGENT=(ID=agent1)(HOST=172.17.0.1)(PORT=7600)(CM_GROUP=CM1)(CM_ID=0)
#--------------------------------------------------------
# Appended by prs_install_agent.sh at Wed Apr 16 03:32:37 PM KST 2025
#
AGENT=(ID=agent2)(HOST=172.17.0.2)(PORT=7601)(CM_GROUP=CM1)(CM_ID=1)
#--------------------------------------------------------
# Appended by prs_install_agent.sh at Wed Apr 16 03:32:37 PM KST 2025
#
AGENT=(ID=agent3)(HOST=172.17.0.3)(PORT=7602)(CM_GROUP=CM2)(CM_ID=0)
#--------------------------------------------------------
# Appended by prs_install_agent.sh at Wed Apr 16 03:32:37 PM KST 2025
#
AGENT=(ID=agent4)(HOST=172.17.0.4)(PORT=7603)(CM_GROUP=CM2)(CM_ID=1)
################################################################################
# ProSync Agent Configurations (Template)
################################################################################
LISTENER_PORT=7600
LOG_LEVEL=3
LOG_DIR=/home/prosync/example/var/agent/agent1/log
LOG_BACKUP_DIR=/home/prosync/example/var/agent/agent1/log/backup#!/bin/sh
export TB_HOME=
export PRS_HOME=/home/prosync/example
AGENT_ID=agent1
TIMEOUT_CNT=7
source $PRS_HOME/bin/prs_cm.sh
export logdir=$PRS_HOME/var
echo "------------------------------------------------------------" >> $logdir/cmagent.log
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 "result : $rc" >> $logdir/cmagent.log
echo "`date +%Y/%m/%d\ %H:%M:%S` cm agent End (Agent Command $1)" >> $logdir/cmagent.log
exit $rc
$ cd $PRS_HOME/install
$ ./prs_install.sh [option] [config file] [list file]$ cd $PRS_HOME/install
$ ./prs_install.shProSync 설치를 위해서는 아래 세 가지 계정 정보가 필요하다.
PRS_USER
SRC_INSTALL_USER
TAR_INSTALL_USER
ProSync가 내부적으로 운영에 사용하는 테이블들을 관리하기 위한 계정이다. Source DB와 Target DB 모두에 생성하며, 운영 시 사용된다.
CONNECT RESOURCE ALTER SYSTEM
CREATE TABLE ALTER ANY TABLE DROP ANY TABLE
FLASHBACK ANY TABLE SELECT ANY TABLE LOCK ANY TABLE
SELECT ON V$DATABASE SELECT ON V$INSTANCE SELECT ANY DICTIONARY
EXECUTE ON SYS.SEAFCONNECT RESOURCE ALTER SYSTEM
CREATE TABLE ALTER ANY TABLE DROP ANY TABLE
FLASHBACK ANY TABLE SELECT ANY TABLE LOCK ANY TABLE
ADMINISTER DATABASE TRIGGER SELECT ANY DICTIONARY EXECUTE ON SYS.DBMS_AQADM
EXECUTE ON SYS.DBMS_AQ EXECUTE ON SYS.DBMS_AQIN AQ_ADMINISTRATOR_ROLE
SELECT ON SYS.USER$ EXECUTE ON SYS.DBMS_AQADM_SYS
SELECT ANY TRANSACTION SELECT ON SYS.ENC$ SELECT ON SYS.OBJ$
# (12c 이상)
LOGMINING CREATE ANY DIRECTORY
READ, WRITE ON DIRECTORY PRS_DICT_$INSTANCE_ID
# 권한 외 필요한 사전 설정
ALTER USER PRS_USER QUOTA UNLIMITED ON PRS_TS_NAME
CREATE OR REPLACE DIRECTORY PRS_DICT AS DICT_FILE_DIRCREATE SESSION ALTER SESSION
CREATE TABLE CREATE SEQUENCE CREATE VIEW
CREATE SYNONYM CREATE PROCEDURE
INSERT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE
SELECT ANY TABLE SELECT ANY SEQUENCE ALTER ANY SEQUENCE
SELECT ANY DICTIONARY
# 권한 외 필요한 사전 설정
ALTER USER PRS_USER QUOTA UNLIMITED ON PRS_TS_NAMEDBASUPERUSER설치 과정에서만 사용하는 계정으로, PRS_USER 계정을 생성하고 권한을 부여하기 위한 역할을 한다. 설치 완료 후에는 운영과 무관하다.
SRC_INSTALL_USER와 마찬가지로, 설치 과정에서만 사용하는 계정이다.
Instance를 설치하기 위해 각 계정의 설정 정보를 $PRS_HOME/install/prs_install.cfg 파일에 작성한다.
TSC 소스의 실제 설치 구성은 의 설치 구성 절을 참고한다.
아래는 파라미터를 설정한 예시이다.
설정 파일(prs_install.cfg)이 준비된 후에는 다음과 같이 설치 스크립트를 실행한다.
옵션 없이 기본 설정 파일로 설치를 수행하는 경우
설치가 완료되면 다음 디렉터리에서 결과 파일을 확인할 수 있다.
<instance_id>_ext1.cfg: ext process의 설정 파일
<instance_id>_apply1.cfg: apply process의 설정 파일
<instance_id>_llob.cfg: llob process의 설정 파일
Instance 설치가 성공적으로 완료되면, $PRS_HOME/var 디렉토리 하위에 다음과 같은 서브 디렉토리가 자동으로 생성된다:
admin
instance_id
이 디렉토리들 하위에는 해당 프로세스의 실행 로그 파일이나 dump 파일, prosync 운영에 필요한 파일들이 저장된다.
설치가 완료되면 Source DB 및 Target DB에 ProSync 운영에 필요한 메타 테이블과 객체들이 생성된다.
아래는 정상적으로 생성되었는지 확인해야 할 주요 메타 테이블 및 객체 목록이다.
동기화 및 추출 이력 관리 테이블
동기화 및 추출 관련 PACKAGE 및 TRIGGER
동기화 및 추출 이력 관리 테이블
ProSync Manager 에서 instance 설치 시 tablespace 이름에 소문자 알파벳을 사용한 경우, 이후에 ProSync install 스크립트를 사용해 재설치 진행 시 사전에 관련 tablespace의 삭제가 필요하다.
PRS_PWD
PRS_USER의 암호. 설정하지 않으면 설치 중에 입력받는다.
PRS_TS_NAME
ProSync 운영 데이터를 저장할 테이블스페이스 이름. PostgreSQL의 경우, 파라미터 미지원. (기본값: [INSTANCE_ID]_ts)
PRS_TS_FILE
ProSync 운영 데이터를 저장할 테이블스페이스 파일명. PostgreSQL의 경우, 파라미터 미지원. (기본값:[INSTANCE_ID]_ts.dtf)
PRS_TS_SIZE
ProSync 운영 데이터를 저장할 테이블스페이스 크기. PostgreSQL의 경우, 파라미터 미지원. (기본값: 1G)
PRS_SKIP_USER_CREATE
ProSync 운영에 사용되는 데이터베이스 사용자를 생성하지 않고 기존 사용자를 사용할 경우 설정 (기본값: N)
PRS_TARGET_MIN_PRIVILEGE
Target DB 사용자에게 최소 권한만 부여해 DML 동기화만 수행할 경우 설정 (기본값: N)
PRS_LOG_DIR
ProSync 운영 중 생성되는 로그 파일의 저장 경로 (기본값: $PRS_HOME/var/{INSTANCE_ID}/log)
LOG_BACKUP_DIR
이전 로그 파일을 저장할 경로. 설정하지 않으면 프로세스별로 $PRS_HOME/var/{INSTANCE_ID}/log/ext_backup, log/apply_backup, log/llob_backup이 기본값으로 사용되며, 사용자가 명시하면 해당 경로로 대체된다.
CREATE_DSN_FILE
ProSync가 사용할 tbdsn.tbr/tnsnames.ora/pg_service.conf 파일을 생성하려는 경우 설정(기본값: N)
DSN_DIR
ProSync가 DB 접속에 사용할 tbdsn.tbr/tnsnames.ora/pg_service.conf 파일이 위치한 경로. 설정하지 않거나 존재하지 않는 경우, 시스템 기본값 사용
DSN_FILE
ProSync가 DB 접속에 사용할 tbdsn.tbr/pg_service.conf 파일 명. 설정하지 않거나 존재하지 않는 경우, 시스템 기본값 사용
AGENT_LIST_DELIMITER
Agent 정보가 2개 이상일 경우 구분자로 사용할 문자. 현재는 Agent 1개 사용 권장
EXT_CNT
Ext 프로세스 수. Source DB 수와 동일하게 설정 (필수 항목)
EXT_AGENT_ID_LIST
Ext 프로세스에 연결할 Agent ID. EXT_CNT 수만큼 입력 (필수 항목)
APPLY_PORT
Apply 프로세스의 포트 번호 (필수 항목)
APPLY_AGENT_ID_LIST
Apply 프로세스에 연결할 Agent ID (필수 항목)
LLOB_PORT
Llob 프로세스의 포트 번호 (필수 항목)
LLOB_AGENT_ID_LIST
Llob 프로세스에 연결할 Agent ID (필수 항목)
SRC_DB_TYPE
Source DB 종류. (TIBERO / ORACLE / POSTGRESQL) (필수 항목)
SRC_DB_NAME
Source DB의 별칭(Alias). PostgreSQL의 경우 pg_service.conf에 정의한 service 이름을 입력한다. (필수 항목)
USE_TSC=Y인 경우 읽기 가능한 Standby 별칭을 지정한다.
USE_TSC
Tibero TSC Standby를 소스로 사용할지 지정한다. 기본값은 N이며, SRC_DB_TYPE=TIBERO에서만 사용할 수 있다.
SRC_PRIMARY_DB_NAME
쓰기 가능한 Primary 별칭. USE_TSC=Y이면 필수이며 SRC_DB_NAME과 달라야 한다.
SRC_PRIMARY_DB_ALIAS_N
TAC-TSC에서 SRC_DB_ALIAS_N에 대응하는 Primary 인스턴스 직결 별칭. 선택 항목이며 사용 시 0부터 SRC_DB_CNT-1까지 지정한다.
SRC_INSTALL_USER
Source DB 접속용 계정. 설치에 필요한 권한을 갖춘 계정이어야 함. (필수 항목)
SRC_INSTALL_PWD
SRC_INSTALL_USER의 암호. 설정하지 않으면 설치 중 입력받음.
AUTO_ADD_SUPP_LOG
동기화 대상 테이블에 supplemental log를 자동 추가할지 여부. (기본값: Y)
SRC_SKIP_TS_CREATE
테이블스페이스를 생성하지 않고 기존 것을 사용할 경우 설정. (기본값: N)
SRC_DB_CNT
클러스터 환경에서 노드 수. (기본값: 1)
SRC_DB_REAL_NAME
Source DB의 DB Name.
SRC_DB_IP
Source DB의 IP 주소.
SRC_DB_PORT
Source DB의 포트 번호.
SRC_DB_ALIAS_[n]
클러스터 환경에서 각 노드의 DB 별칭. SRC_DB_CNT 수만큼 입력.
SUPP_LOG_LVL_ALL
supplemental log를 걸 때 level 설정 여부. Y 설정 시 database level로 설정됨. (기본값: N )
AUTO_SYNC_ON_CREATE
ProSync 설치 이후 CREATE 문으로 생성된 테이블 및 시퀀스를 자동으로 동기화 대상에 등록할지 여부를 지정 (기본값: N)
USE_LOGMNR
Oracle LogMiner를 통해 로그를 추출할 경우 설정. (기본값: N)
DICT_FILE_DIR
Oracle LogMiner 사용 시 dict 파일 저장 위치. Oracle 유저가 접근 가능해야 함.
PRS_EXT_IP
MySQL 전용 파라미터. 현재 배포 빌드에서는 MySQL을 지원하지 않으므로 사용하지 않는다.
TAR_DB_TYPE
Target DB 종류. (TIBERO / ORACLE / POSTGRESQL) (필수 항목)
TAR_DB_NAME
Target DB 별칭(Alias). (필수 항목)
TAR_INSTALL_USER
Target DB 접속용 계정. 설치 권한을 갖춘 계정이어야 함. (필수 항목)
TAR_INSTALL_PWD
TAR_INSTALL_USER의 암호. 설정하지 않으면 설치 중 입력받음.
TAR_SKIP_TS_CREATE
테이블스페이스를 생성하지 않고 기존 것을 사용할 경우 설정. (기본값: N)
TAR_DB_REAL_NAME
Target DB의 DB Name.
TAR_DB_IP
Target DB의 IP 주소.
TAR_DB_PORT
Target DB의 포트 번호.
PRS_APPLY_IP
MySQL 전용 파라미터. 현재 배포 빌드에서는 MySQL을 지원하지 않으므로 사용하지 않는다.
GROUP_NUM
Multi-Grouping 모드에서 replay group 수. (기본값: 1)
USE_TDE
TDE_WALLET_PWD를 수동으로 입력받기 위한 설정. Y로 설정 시 설치 중 사용자 입력 요구.
ASM_DB_NAME
Source Oracle이 ASM을 사용하는 경우 접속할 ASM 인스턴스 별칭(Alias). ASM 경로(+DISKGROUP/...)의 redo/archive log 접근에 필요.
ASM_USER
ASM 인스턴스 접속 계정.
ASM_PWD
ASM_USER의 암호. 설치 시 암호화되어 $PRS_HOME/var/{INSTANCE_ID}/.wallet_asm에 저장되며, 생성되는 Extract config에는 #encrypted로 기입된다.
prs_adm.cfg: admin process의 설정 파일
PRS_DD_ENC
암호화된 컬럼 관련 정보
PRS_DD_SEQ_TBL
Data Dictionary에 대한 시퀀스와 그 때의 오브젝트 정보를 가지고 있다. 이 테이블은 추가적으로 drop된 여부까지 판단한다.
PRS_DD_SGMT
동기화 대상 테이블의 세그먼트 ID 정보를 저장
PRS_DD_TBL
동기화 대상 테이블 이름 정보를 저장
PRS_DD_USR
Source DB 사용자 정보를 저장
PRS_DD_SEQ
Data Dictionary용 시퀀스
PRS_DICT_HIST
TSN 기준 Dictionary 파일 이름 저장
PRS_DUMMY_TBL
Dummy log를 생성시키기 위해 dummy dml을 수행하는 테이블
PRS_IMPORTED_ARCHIVE_LOG
Oracle 로그마이너 모드에서 특정 archive log 지정 시 사용
PRS_INSTALL_HIST
설치한 유저 정보 및 설치 시간 저장
PRS_IPARAM
ProSync 파라미터 정보를 저장
PRS_LOGMNR_INFO
Oracle 로그마이너 추출 관련 정보를 저장
PRS_OBJ_LIST
동기화 대상 오브젝트 ID 정보를 저장
PRS_TXINFO
트랜잭션 정보 저장 테이블
PRS_LCT
반영 스레드가 마지막으로 반영한 TX의 정보를 저장
PRS_COMMITTED_TX_LIST
Source DB에서 커밋된 TX 정보 저장
INSTANCE_ID
ProSync를 설치하기 위한 ID. 사용자가 관리 목적으로 임의로 지정한 ID를 입력한다. 이 값은 Tablespace name으로 유효한 형식이어야 하며, 숫자로 시작할 수 없다. (필수 항목)
PRS_USER
-h
도움말 출력
-c
사용할 환경설정 파일 지정 (기본값: prs_install.cfg)
-l
PRS_DDL_HIST
DDL 발생에 따른 DD 이미지 정보 관련 히스토리 테이블
PRS_DD_COL
동기화 대상 테이블의 컬럼 정보
PRS_DD_CON
PRS_DD_META
PRS_DDL_TRG가 이미지 관리를 위해 사용
PRS_DUMMY
Dummy 부하 생성을 위한 PACKAGE
PRS_DDL_TRG
PRS_INSTALL_HIST
설치 정보 저장
PRS_CONST_HIST
반영된 리두/아카이브 로그 정보 저장
PRS_CONST_SEQ
ProSync 운영을 위해 소스 및 Target DB에 생성할 사용자 이름
동기화 리스트 파일 지정 (기본값: prs_obj_group1.list)
DB constraint 정보를 저장
DD 이미지 관리를 위한 Trigger
반영된 리두/아카이브 로그 정보의 시퀀스 저장
CONNECT CREATE USER DROP USER
CREATE TABLESPACE DROP TABLESPACE ALTER DATABASE
ALTER SYSTEM ADMINISTER DATABASE TRIGGER ALTER ANY TABLE
ALTER ANY TRIGGER EXECUTE ANY PROCEDURE DROP ANY PROCEDURE
DROP ANY TABLE DROP ANY TRIGGER DROP ANY SEQUENCE
GRANT ANY ROLE GRANT ANY PRIVILEGE SELECT ANY TABLE
INSERT ANY TABLE UPDATE ANY TABLE SELECT ON V$LOG
SELECT ON V$PARAMETERS
SELECT ON V$DATABASE WITH GRANT OPTION
SELECT ON V$INSTANCE WITH GRANT OPTION
SELECT ON SYS._DD_OBJ WITH GRANT OPTION
SELECT ON SYS._DD_USER WITH GRANT OPTION
SELECT ON SYS._DD_IDX WITH GRANT OPTION
SELECT ON SYS._DD_IDXPART WITH GRANT OPTION
SELECT ON SYS._DD_TBL WITH GRANT OPTION
SELECT ON SYS._DD_TBLPART WITH GRANT OPTION
SELECT ON SYS._DD_TBLSUBPART WITH GRANT OPTION
SELECT ON SYS._DD_COL WITH GRANT OPTION
SELECT ON SYS._DD_ICOL WITH GRANT OPTION
EXECUTE ON SYS.SEAF WITH GRANT OPTIONCONNECT CREATE SESSION ALTER SESSION
CREATE USER DROP USER CREATE TABLESPACE
DROP TABLESPACE ALTER DATABASE ALTER SYSTEM
ADMINISTER DATABASE TRIGGER ALTER ANY TABLE ALTER ANY TRIGGER
EXECUTE ANY PROCEDURE DROP ANY PROCEDURE DROP ANY TABLE
DROP ANY TRIGGER DROP ANY SEQUENCE GRANT ANY ROLE
GRANT ANY PRIVILEGE SELECT ANY TABLE INSERT ANY TABLE
UPDATE ANY TABLE ALTER USER SELECT ON SYS.V_$PARAMETER
SELECT ON SYS.V_$DATABASE SELECT ON SYS.V_$INSTANCE SELECT ON SYS.V_$LOG
SELECT ON SYS.USER$ WITH GRANT OPTION
SELECT ON SYS.ENC$ WITH GRANT OPTION
SELECT ON SYS.OBJ$ WITH GRANT OPTION
EXECUTE ON SYS.DBMS_AQ WITH GRANT OPTION
EXECUTE ON SYS.DBMS_AQIN WITH GRANT OPTION
EXECUTE ON SYS.DBMS_AQADM WITH GRANT OPTION
EXECUTE ON SYS.DBMS_AQADM_SYS WITH GRANT OPTION
EXECUTE ON SYS.DBMS_LOGMNR WITH GRANT OPTION
EXECUTE ON SYS.DBMS_LOGMNR_D WITH GRANT OPTION
EXECUTE ON SYS.DBMS_LOGMNR_INTERNAL WITH GRANT OPTION
EXECUTE DBMS_AQADM.GRANT_SYSTEM_PRIVILEGE('MANAGE_ANY', 'PRS_INSTALL_USER')
-- PDB의 경우 common user에 대해 수행 필요
SET CONTAINERSUPERUSERCONNECT CREATE USER DROP USER
CREATE TABLESPACE DROP TABLESPACE EXECUTE ANY PROCEDURE
DROP ANY PROCEDURE DROP ANY TABLE DROP ANY SEQUENCE
GRANT ANY ROLE GRANT ANY PRIVILEGE SELECT ANY TABLE
INSERT ANY TABLE SELECT ANY SEQUENCE SELECT ON V$PARAMETERSCONNECT CREATE USER DROP USER
CREATE TABLESPACE DROP TABLESPACE EXECUTE ANY PROCEDURE
DROP ANY PROCEDURE DROP ANY TABLE DROP ANY SEQUENCE
GRANT ANY ROLE GRANT ANY PRIVILEGE SELECT ANY TABLE
INSERT ANY TABLE SELECT ANY SEQUENCE SELECT ON SYS.V_$PARAMETERSUPERUSER############################################
#
# ProSync Installation Parameters
#
############################################
# (Mandatory)
INSTANCE_ID=
PRS_USER=prosync
PRS_PWD=
# (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=
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=
SRC_INSTALL_USER=
SRC_INSTALL_PWD=
# (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 Oracle ASM only)
# Required when using ASM redo files (+DISKGROUP/...)
#ASM_DB_NAME=
#ASM_USER=
#ASM_PWD=
# (for MySQL only)
#PRS_EXT_IP=
############################################
#
# Target database informations
#
############################################
# (Mandatory)
TAR_DB_TYPE=TIBERO
TAR_DB_NAME=
TAR_INSTALL_USER=
TAR_INSTALL_PWD=
# (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############################################
#
# 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=
#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=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=src_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 Oracle ASM only)
# Required when using ASM redo files (+DISKGROUP/...)
#ASM_DB_NAME=
#ASM_USER=
#ASM_PWD=
# (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 [option] [config file] [list file]$ 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/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...
* instance 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... src_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 [src_tibero]... ok
Get Archive log directory [src_tibero]... ok
Get Archive log format [src_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 [src_tibero]... 188
Querying current snapshot#... 4306566
********************************************************************************
* 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 [src_tibero (group 1)]... ok
Generating initial commit history... ok
********************************************************************************
* Generate Configuration Parameters (5/5)
********************************************************************************
Generating Wallet... ok
Generating Extract [src_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 Thu, 17 Apr 2025 14:38:38 +0900.
*
* PRS_HOME = /home/prosync/example
* Binary Path = /home/prosync/example/bin
* ProSync User = prosync_user
*
* Archived Log Path = /home/tibero/tibero7/database/tibero/archive/
* Archived Log Format = log-t%t-r%r-s%s.arc
* Initial log sequence# = 188
*
* Initial change# (TSN) = 4306566
*
********************************************************************************$ cd $PRS_HOME/config
$ ls -al
total 55
drwxr-xr-x 3 users users 4096 Apr 16 15:42 .
drwxr-xr-x 15 users users 4096 Apr 14 15:08 ..
-rw-r--r-- 1 users users 547 Apr 17 14:38 instance_apply1.cfg
-rw-r--r-- 1 users users 574 Apr 17 14:38 instance_ext1.cfg
-rw-r--r-- 1 users users 470 Apr 17 14:38 instance_llob.cfg
-rw-r--r-- 1 users users 352 Apr 3 16:19 prs_adm.cfg
-rw-r--r-- 1 users users 367 Feb 27 19:22 prs_agent_agent1.cfg
-rw-r--r-- 1 users users 367 Apr 16 15:32 prs_agent_agent2.cfg
-rw-r--r-- 1 users users 367 Apr 16 15:32 prs_agent_agent3.cfg
-rw-r--r-- 1 users users 367 Apr 16 15:32 prs_agent_agent4.cfg
-rw-r--r-- 1 users users 1272 Apr 16 15:32 prs_instance.map
drwxr-xr-x 2 users users 4096 Apr 14 15:08 templates
-rw-r--r-- 1 users users 5 Feb 27 13:06 variant#--------------------------------------------------------
# Appended by prs_install.sh at Thu Apr 17 02:38:37 PM KST 2025
#
instance=(
EXT1=(AGENT=agent1)(PROGRAM=prs_ext)
APPLY1=(AGENT=agent1)(PORT=7620)(PROGRAM=prs_apply)
LLOB=(AGENT=agent1)(PORT=7630)(PROGRAM=prs_llob)
)################################################################################
#
# ProSync (Ext) Initialization Parameters
#
################################################################################
LOG_LEVEL=3
PRS_USER=prosync_user
PRS_PWD=#encrypted
EXTRACT_NUM=1
SRC_DB_TYPE=TIBERO
SRC_DB_NAME=src_tibero
ARCHIVE_LOG_DIR=/home/tibero/tibero7/database/tibero/archive/
ARCHIVE_LOG_FORMAT=log-t%t-r%r-s%s.arc
LOG_DIR=/home/prosync/example/var/instance/log
LOG_BACKUP_DIR=/home/prosync/example/var/instance/log/ext_backup################################################################################
#
# ProSync (Apply) Initialization Parameters
#
################################################################################
LOG_LEVEL=3
PRS_USER=prosync_user
PRS_PWD=#encrypted
APPLY_NUM=1
TAR_DB_TYPE=TIBERO
TAR_DB_NAME=tar_tibero
SRC_DB_CNT=1
MAP=(TABLE DEFAULT)
DDL=(INCLUDE DEFAULT, TYPE=('ALTER TABLE','TRUNCATE TABLE'))
LOG_DIR=/home/prosync/example/var/instance/log
LOG_BACKUP_DIR=/home/prosync/example/var/instance/log/apply_backup
################################################################################
#
# ProSync (llob) Initialization Parameters
#
################################################################################
LOG_LEVEL=3
PRS_USER=prosync_user
PRS_PWD=#encrypted
SRC_DB_TYPE=TIBERO
SRC_DB_NAME=src_tibero
LLOB_FLASHBACK_ERROR=CURRENT
LOG_DIR=/home/prosync/example/var/instance/log
LOG_BACKUP_DIR=/home/prosync/example/var/instance/log/llob_backup################################################################################
#
# ProSync (Admin) Initialization Parameters
#
################################################################################
LOG_LEVEL=3
LOG_DIR=/home/prosync/example/var/admin/log
LOG_BACKUP_DIR=/home/prosync/example/var/admin/log/backup# tree 결과 예제
.
├── admin
├── agent
└── instanceAgent 및 Instance 설치 방법을 단계별로 안내한다.