All pages
1 of 25

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

์„ค์น˜ ์•ˆ๋‚ด์„œ

ProSync๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ณผ์ •์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์•ˆ๋‚ดํ•œ๋‹ค. '์ œํ’ˆ ์„ค๊ณ„' ํŽ˜์ด์ง€์—์„œ ์†Œ๊ฐœ๋œ ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์„ค์น˜ ๊ณผ์ •๊ณผ ์‹œ์Šคํ…œ ์š”๊ตฌ์‚ฌํ•ญ ๋“ฑ์˜ ๋‚ด์šฉ์„ ๋ชจ๋‘ ํฌํ•จํ•œ๋‹ค.

ํ•˜๋“œ์›จ์–ด ์š”๊ตฌ์‚ฌํ•ญ

ProSync๋Š” On-Line ์œผ๋กœ ์šด์˜๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ํ˜น์‹œ ๋ชจ๋ฅผ ์ค‘๋‹จ์ด๋‚˜ ๋น„์ •์ƒ ์ข…๋ฃŒ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ์ด ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์šฉ์ž๋Š” ํ•˜๋“œ์›จ์–ด ์š”๊ตฌ์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ ์–ด๋А์ •๋„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

๋ณธ ์žฅ์—์„œ๋Š” CPU์™€ Memory ๊ทธ๋ฆฌ๊ณ  Disk ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฐจ๋ก€๋Œ€๋กœ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•ด๋„ ๋™๊ธฐํ™” ํ•˜๋Š” ๋ฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ, CPU๋‚˜ Memory๊ฐ€ ์–ด๋–ค ๋ถ€๋ถ„์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š”์ง€, Disk๋Š” ์–ด๋А์ •๋„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋“ฑ์— ๋Œ€ํ•ด ๋Œ€๋žต์ ์ธ ์ •๋ณด๋ฅผ ์ •๋ฆฌํ•œ๋‹ค.

ProSync ์„ค์น˜

Agent ๋ฐ Instance ์„ค์น˜ ๋ฐฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ์•ˆ๋‚ดํ•œ๋‹ค.

์‹œ์Šคํ…œ ์š”๊ตฌ์‚ฌํ•ญ

ProSync ์„ค์น˜ ๋ฐ ์šด์˜์„ ์œ„ํ•ด ํ•„์š”ํ•œ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ํ•˜๋“œ์›จ์–ด, ์šด์˜์ฒด์ œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋„คํŠธ์›Œํฌ, ์†Œํ”„ํŠธ์›จ์–ด ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ํ•ญ๋ชฉ๋ณ„๋กœ ๋ช…์‹œํ•œ๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ์š”๊ตฌ์‚ฌํ•ญ

ProSync๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์šด์˜ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ํ™˜๊ฒฝ์„ ์„ค๋ช…ํ•œ๋‹ค. ์ง€์›๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ๊ณผ์˜ ํ˜ธํ™˜์„ฑ, ์šด์˜์ฒด์ œ ๋ฐ ํ”Œ๋žซํผ, ์ปดํŒŒ์ผ๋Ÿฌ, JDK ๋“ฑ์˜ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ์š”๊ตฌ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์•ˆ๋‚ดํ•œ๋‹ค.

์„ค์น˜ ์ „ ์ค€๋น„

ProSync๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•ด์•ผ ํ•  ํ•ญ๋ชฉ๋“ค์„ ์•ˆ๋‚ดํ•œ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •, DB ์‚ฌ์ „ ์„ค์ • ๋“ฑ ์„ค์น˜๊ฐ€ ์›ํ™œํžˆ ์ง„ํ–‰๋˜๊ธฐ ์œ„ํ•œ ์ค€๋น„ ๊ณผ์ •์„ ์„ค๋ช…ํ•œ๋‹ค.

Memory ์š”๊ตฌ์‚ฌํ•ญ

Memory ์‚ฌ์šฉ๋Ÿ‰์€ ProSync ์‚ฌ์šฉ์— ์žˆ์–ด์„œ ๊ฐ€์žฅ ๋ฏผ๊ฐํ•œ ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์ œํ’ˆ ์„ค๊ณ„ ์—์„œ ๋ณด์•˜๋“ฏ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ์ชฝ์—์„  ํฌ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ผ์ด ์—†์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š” ์ชฝ์—์„  ํŠธ๋žœ์žญ์…˜ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ์—ฌ์•ผ ๋ฐ์ดํ„ฐ๋ฅผ peer์ชฝ์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด ๋ฐ์ดํ„ฐ๋“ค์„ ๋ชจ์•„๋†“๋Š” ๋ฐ์— ์žˆ์–ด์„œ ๋งŽ์€ ์–‘์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.

๋ณธ ์žฅ์—์„  ๋Œ€ํ‘œ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋ ๋งŒํ•œ ๋ถ€๋ถ„์„ Sender (Extract / Llob ) ์™€ Receiver(Apply) ๋กœ ๋‚˜๋ˆ„์–ด์„œ ์„ค๋ช…ํ•œ๋‹ค.

Sender(Extract, Llob) ์ธก์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ

Extract ํ”„๋กœ์„ธ์Šค๋Š” Non-Blocking I/O๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค. ๋Œ€๊ธฐ ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ์ˆ˜์‹ ์ธก์—์„œ ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. TCP ์˜ ์ˆ˜์‹ ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋น„์›Œ์ง€์ง€ ์•Š์œผ๋ฉด Sender์ชฝ์€ Blocking์ด๋˜ Non-Blocking์ด๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ณด๋‚ด์ง€ ๋ชปํ•œ ๋ฐ์ดํ„ฐ๋Š” Queue์— ์Œ“์ด๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚˜๊ฒŒ ๋œ๋‹ค.

ProSync๋Š” ๋„คํŠธ์›Œํฌ ์ง€์—ฐ ์ƒํ™ฉ ๋ฐœ์ƒ ์‹œ 512MB ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ Queue์— ์Œ“์ผ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๊ณ  ๋Œ€๊ธฐํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ํฌ๊ธฐ๋Š” ๊ธฐ๋ณธ๊ฐ’์ด๋ฉฐ ํžˆ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์กฐ์ ˆ์€ ๊ฐ€๋Šฅํ•˜๋‹ค. (_MSG_LIST_SIZE_TO_PAUSE) ํ•˜์ง€๋งŒ ์ง€์—ฐ ์ƒํ™ฉ์—์„œ ์ด ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฑฐ์˜ ์—†์–ด ํžˆ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ฒ˜๋ฆฌ๋˜๊ณ  ์žˆ๊ณ , ์‚ฌ์šฉ์ž๋Š” ์ด ์‚ฌ์‹ค๋งŒ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์˜ฌ๋ผ๊ฐ€๋Š” ์ด์œ ๋ฅผ ์‰ฝ๊ฒŒ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ๋‹ค.

Llob ํ”„๋กœ์„ธ์Šค์˜ ๊ฒฝ์šฐ ๋™์ž‘์ด ์‚ด์ง ๋‹ค๋ฅธ๋ฐ, ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ๋ฐ›์„ ๋•Œ 64k ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ฒŒ ๋˜์–ด์žˆ์œผ๋ฉฐ, ๊ฐ ๋ฐ์ดํ„ฐ๊ฐ€ Llob ๊ณผ Apply ํ”„๋กœ์„ธ์Šค๊ฐ„ ์†ก์ˆ˜์‹ ์ด ์™„๋ฃŒ๋˜์–ด์•ผ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋„๋ก ์งœ์—ฌ์ ธ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ Blocking ์—ฌ๋ถ€์™€ ์ƒ๊ด€ ์—†์ด, Llob ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ตœ๋Œ€ Thread ๊ฐฏ์ˆ˜๋ฅผ ๋”ฐ๋ผ๊ฐ€๊ณ , ์ด ํฌ๊ธฐ ์ž์ฒด๊ฐ€ ๋ฏธ๋ฏธํ•˜๋‹ค.


TCP ๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ Receive์—์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ค‘์˜ ํ•˜๋‚˜๋Š” Kernel์˜ Receive Buffer๋ฅผ ๋น ๋ฅด๊ฒŒ ๋น„์›Œ์ฃผ๋Š” ๋™์ž‘์ด๋‹ค. ์ด๊ฒŒ ๋Šฆ์–ด์ง€๋ฉด Window Size์— ์—ฌ์œ ๊ฐ€ ์—†์–ด์ ธ์„œ ๊ฒฐ๊ตญ Sender์ชฝ์—์„  ์•„๋ฌด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์—†๋Š” ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ProSync์˜ Apply Process๋Š” ์ˆ˜์‹ ์„ ๋Œ€๊ธฐํ•˜๋Š” file descriptor(Socket)์— ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ์ง€๋˜๋ฉด ๊ฐ€์žฅ ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฅผ Memory๋กœ ๋ณต์‚ฌํ•˜๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๋ณต์‚ฌ๋œ ๋ฐ์ดํ„ฐ๋“ค์€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ Apply์ชฝ์— ์Œ“์ด๊ฒŒ ๋œ๋‹ค. ์Œ“์ธ ๋ฐ์ดํ„ฐ๋Š” Apply ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ จ์˜ ํŒŒ์ดํ”„ ๋ผ์ธ์— ์˜์กดํ•˜์—ฌ ๊ด€๋ฆฌ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•ด๋‹น ๋‚ด์šฉ์„ ์ž์„ธํžˆ ๋‹ค๋ฃจ์ง„ ์•Š๊ณ , ์™€ ํ•ด๋‹น ๋ฌธ์„œ ํ•˜๋‹จ์˜ ์—์„œ ๋” ์ƒ์„ธํ•˜๊ฒŒ ๋‹ค๋ฃจ๋„๋ก ํ•œ๋‹ค.

๊ฐ„๋‹จํ•˜๊ฒŒ ์š”์•ฝํ•˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด ํŒŒ์ผ๋กœ ๋‚ด๋ฆฌ๋Š” ๋‚ด์šฉ์ด๊ณ  ํŒŒ์ผ๋กœ ๋‚ด๋ฆด ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด ๋งŽ์ด ์Œ“์ด๊ฒŒ ๋˜๋ฉด Socket ์ž์ฒด๋กœ๋ถ€ํ„ฐ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์ง€ ์•Š๋Š”๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์•ž์„œ ์„ค๋ช…ํ•œ Sender ์ชฝ์˜ Non-Blocking ๋™์ž‘์— ์˜ํ•ด ์•Œ์•„์„œ ์ฝ๊ธฐ ๋™์ž‘์„ ๋ฉˆ์ถ”๊ฒŒ ๋œ๋‹ค.

์‹œ์Šคํ…œ ํ™˜๊ฒฝ ์š”๊ตฌ์‚ฌํ•ญ

Platform
CPU
OS
Compiler
JDK Version
Binary Bits

SUN

SPARC

์‹œ์Šคํ…œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

ProSync๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค๋ช…ํ•œ๋‹ค.

ProSync๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

ํ™˜๊ฒฝ ๋ณ€์ˆ˜
์„ค๋ช…

CPU ์š”๊ตฌ์‚ฌํ•ญ

CPU๋Š” 64bit ๋ช…๋ น์–ด ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•˜๋Š” CPU๊ฐ€ ์š”๊ตฌ๋œ๋‹ค. 32bit ๋ช…๋ น์–ด ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•˜๋Š” CPU ์ƒ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ํ˜„์žฌ ๊ณ ๋ ค๋˜๊ณ ์žˆ์ง€ ์•Š๋‹ค.

ProSync๋Š” ๋Œ€์ฒด๋กœ CPU๋ฅผ ๋งŽ์ด ์ ์œ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ์•„๋‹ˆ๋‹ค. ์ผ๋ จ์˜ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ์ „์†กํ•˜๊ณ , ์ด๋ฅผ ์ฟผ๋ฆฌํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ peer์ชฝ์˜ ์ €์žฅ์žฅ์น˜์— ์ €์žฅ ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋Š” ๋™์ž‘์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ €์žฅํ•˜๊ณ ์ž ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด(RDBMS)๋‚˜ ํ•˜๋“œ์›จ์–ด์˜ ์˜ํ–ฅ์„ ๋งŽ์ด ๋ฐ›๋Š”๋‹ค.

ProSync๊ฐ€ CPU๋ฅผ ์ ์œ ํ• ๋งŒํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์†ก์‹  ๋ถ€๋ถ„์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—ฌ๋Ÿฌ ์ฒ˜๋ฆฌ๊ณผ์ •์œผ๋กœ ์ธํ•œ ๋ถ€ํ•˜

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ˜ธํ™˜์„ฑ

ProSync๊ฐ€ ์ง€์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ํ•ญ๋ชฉ์„ ์„ค๋ช…ํ•œ๋‹ค.

  • Tibero (Single/TAC/TAS) 6 ์ด์ƒ

  • Oracle 11g

  • Oracle 12c

Solaris 11.4

C99 ์ง€์› ์ปดํŒŒ์ผ๋Ÿฌ

JDK 1.8 ์ด์ƒ

64bit

IBM

PPC 5L

AIX 7.1

C99 ์ง€์› ์ปดํŒŒ์ผ๋Ÿฌ, IBM XL C/C++ Enterprise Edition V7.0

JDK 1.8 ์ด์ƒ

64bit

GNU

x86 (Pentium4 ์ด์ƒ)

Red Hat Enterprise Linux 7.x ~ 9.x

RHEL ํ˜ธํ™˜ Enterprise Linux ๋ฐฐํฌํŒ 7.x ~ 9.x ์˜ˆ: Oracle Linux, Rocky Linux

kernel 2.6.9 ์ด์ƒ, C99 ์ง€์› ์ปดํŒŒ์ผ๋Ÿฌ, gcc 3.4.6

JDK 1.8 ์ด์ƒ

64bit

์ฃผ์˜

HP ํ”Œ๋žซํผ: HP ํ”Œ๋žซํผ์€ ํ˜„์žฌ ProSync ์ง€์›๋ฒ”์œ„์— ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค. HP ํ”Œ๋žซํผ์€ 4.4.0๊นŒ์ง€๋งŒ ์ง€์›๊ฐ€๋Šฅํ•˜๋‹ค.

Linux ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: Linux ํ™˜๊ฒฝ์—์„œ๋Š” ์„ค์น˜ ๋ฐ ์ •์ƒ ์šด์˜์„ ์œ„ํ•ด glibc 2.3.4์™€ libstdc++ 6.0.3์ด ์‚ฌ์ „์— ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

Receiver(Apply) ์ธก์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ

Apply
Flow Control
๋ฐ์ดํ„ฐ ์ˆ˜์‹  ๋ถ€๋ถ„์—์„œ ํŠธ๋žœ์žญ์…˜ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ณ‘๋ ฌ ํ™•์ธ ๋ถ€๋ถ„

๊ฐ๊ฐ์— ๋Œ€ํ•ด ์„ค๋ช…์„ ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

ProSync๋Š” TCP ์Šคํƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์ „์—, ์ž์ฒด ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ง๋ ฌํ™”ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ์ธก์—์„œ๋Š” ๋‹น์—ฐํžˆ ์ž์ฒด ํ”„๋กœํ† ์ฝœ์„ ์ €์žฅํ•  ๋ฐ์ดํ„ฐ ๋ฒ„ํผ๊ฐ€ ํ•„์š”ํ•˜๊ณ , ์ด ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋’ค Non-Blocking์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์ฃผ์–ด์•ผ. ๋Œ€๊ธฐ ์—†์ด ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ์„œ ์••์ถ•์ด ๋  ์ˆ˜๋„ ์žˆ๊ณ , ์•”ํ˜ธํ™”๊ฐ€ ๋˜์–ด ์ „์†ก์ด ๋  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์— ๋ฐ์ดํ„ฐ ์†ก์‹  ์ „์— ์ „์ฒ˜๋ฆฌํ•  ์ž‘์—…๋“ค์ด ๋งŽ์•„์ ธ์„œ CPU ์ ์œ ๋Ÿ‰์ด ๋†’์•„์งˆ ์ˆ˜ ์žˆ๋‹ค.

์†ก์‹  ๋ถ€๋ถ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์ˆ˜์‹ ๋ถ€๋ถ„์—์„œ๋„ ์†Œ์ผ“์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์€ ๋’ค, ๋ณตํ˜ธํ™” ์ž‘์—…์ด๋‚˜ ์••์ถ•๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ํ•ด์ œ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ์ด ๋ถ€๋ถ„์—์„œ CPU ์ ์œ ๋Ÿ‰์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ CPU๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„์€ ์—ญ์ง๋ ฌํ™”๋œ ํŠธ๋žœ์žญ์…˜ ๋ฐ์ดํ„ฐ๋“ค์— ๋Œ€ํ•œ ์ค‘๋ณต ํ™•์ธ ๊ณผ์ •์ด๋‹ค. CDC ์ œํ’ˆ ํŠน์„ฑ์ƒ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์„ ์œ„ํ•ด์„  Change Data ๋“ค์— ๋Œ€ํ•œ ์‹œ๊ฐ„ ์ˆœ์„œ๋ฅผ ์—„๋ฐ€ํžˆ ์ง€์ผœ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ด ๋•Œ๋ฌธ์— N๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์‚ฐํ–ˆ๋‹ค ํ•˜๋”๋ผ๋„, ๋ณ„๋„์˜ ์ฒ˜๋ฆฌ ์—†์ธ ์‹œ๊ฐ„ ์ˆœ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” 1๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋งŒ์ด ์กด์žฌํ•˜๊ฒŒ๋˜์–ด ๋งŽ์€ ์„ฑ๋Šฅ ์†์‹ค์ด ์•ผ๊ธฐ๋œ๋‹ค.

ProSync๋Š” ์ด์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด Change Data ๊ฐ๊ฐ์— ๋Œ€ํ•ด ์„œ๋กœ๊ฐ€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•œ์ง€์— ๋Œ€ํ•œ ํ™•์ธ์„ ํ•˜๊ฒŒ๋œ๋‹ค. ํŠธ๋žœ์žญ์…˜ ๋‹จ์œ„์˜ ACID๋งŒ์„ ์œ ์ง€ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‘ ํŠธ๋žœ์žญ์…˜ ๋‚ด์— ์žˆ๋Š” ๋ชจ๋“  Change Data(=๋ ˆ์ฝ”๋“œ, DML, ...) ๋“ค์ด ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ–ˆ๋‹ค๋ฉด, ๋ณ‘๋ ฌ๋กœ ๋ฐ˜์˜ํ•ด๋„ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.

์ด์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ ProSync๋Š” ์ž์ฒด ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ๊ฒ€์‚ฌํ•˜๊ฒŒ๋œ๋‹ค. ํŠธ๋žœ์žญ์…˜์ด ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Ÿ‰์ด ๋งŽ๋‹ค๋ฉด ์ด์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋„ ๋งŽ์•„์ง€๊ณ , ๊ทธ๋งŒํผ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ์‹œ๊ฐ„๋„ ๊ธธ์–ด์ง€๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋ถ€๋ถ„์„ ํƒ์ƒ‰ํ•˜๋Š” ๋น„์šฉ์—์„œ ProSync๋Š” CPU ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์•„์ง€๊ฒŒ ๋œ๋‹ค.

ProSync๋Š” ์ˆ˜๋งŽ์€ ๋กœ๊ทธ๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ๋กœ๊ทธ๋ฅผ ํฌํ•จํ•˜์—ฌ, SAM(Sequential Access Method) ํŒŒ์ผ์„ ๋‚ด๋ฆฌ๋Š” ๊ธฐ๋Šฅ์ด๋‚˜ Error๊ฐ€ ๋ฐœ์ƒํ•œ DML์„ ํ™•์ธํ•˜๋Š” ๊ธฐ๋Šฅ ๋“ฑ์ด ๋Œ€ํ‘œ์ ์ด๋‹ค. ์ด๋“ค์€ Blocking I/O๋กœ ๋˜์–ด์žˆ์–ด์„œ, Disk์˜ write ๋™์ž‘์„ ๋ฐ˜๋“œ์‹œ ๋Œ€๊ธฐํ•˜๊ณ  ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋กœ๊ทธ ๋ ˆ๋ฒจ์ด ๋†’๊ฑฐ๋‚˜ ์ž‘์„ฑํ•  ๋กœ๊ทธ ํŒŒ์ผ์ด ๋งŽ์•„์ง€๋ฉด CPU๋™์ž‘์ด ๊ทธ๋งŒํผ ์ง€์—ฐ๋  ์ˆ˜ ์žˆ๋‹ค.

๋ฟ ๋งŒ ์•„๋‹ˆ๋ผ ProSync๋Š” ํŠน์ • ์‹œ์ ๋งˆ๋‹ค ์ด๋ ฅ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ๊ฒฝ์šฐ๊ฐ€ RDBMS์˜ Redo Log Switch (์ดํ•˜ Log Switch) ์ด๋‹ค. Log Switch๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด๋ ฅ์ •๋ณด์™€ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ Disk๋กœ writeํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ ์†ก์‹  ๋ถ€๋ถ„

๋ฐ์ดํ„ฐ ์ˆ˜์‹  ๋ถ€๋ถ„

๋ฐ์ดํ„ฐ ๋ณ‘๋ ฌํ™” ๋ถ€๋ถ„

ํŒŒ์ผ I/O ๊ด€๋ จ

Oracle 19c
  • PostgreSQL 15

  • PostgreSQL 16

    • Tibero

    • Oracle 11g

    • Oracle 12c

    • Oracle 19c

    • PostgreSQL 15

    • PostgreSQL 16


    ํŠธ๋žœ์žญ์…˜ ๋‹จ์œ„์˜ ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•œ๋‹ค.

    ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ INSERT, UPDATE, DELETE ์ž‘์—…์„ ๋™๊ธฐํ™”ํ•œ๋‹ค.

    ์•„๋ž˜ ๋Œ€์ƒ์€ ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

    • ์‹ค์ฒดํ™” ๋ทฐ(Materialized View)

    • Clustered Table

    • Indexed Organized Table(IOT) (Source DB๊ฐ€ Oracle์ธ ๊ฒฝ์šฐ)

    • ๋Œ€์ƒ ํ…Œ์ด๋ธ”์— Interval Partitioning์ด ์ ์šฉ๋œ ๊ฒฝ์šฐ, DB๊ฐ€ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•œ Partition์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋Š” ๋™๊ธฐํ™”๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

    • NOLOGGING ์˜ต์…˜์ด ์„ค์ •๋œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ DML ์ž‘์—…์€ ๋™๊ธฐํ™”ํ•˜์ง€ ์•Š๋Š”๋‹ค.

    DDL Rule ์„ ์ฐธ๊ณ ํ•œ๋‹ค.

    DDL ๋™๊ธฐํ™”๋Š” DB ๋‹จ์œ„๋กœ ์ง€์›ํ•œ๋‹ค.

    ์ง€์› ์ปฌ๋Ÿผ ํƒ€์ž…์€ ์‚ฌ์šฉํ•˜๋Š” DB์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฏ€๋กœ, ๋™๊ธฐํ™” ๋Œ€์ƒ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๋ฐ ๋“ฑ๋ก ์„ ์ฐธ๊ณ ํ•˜์—ฌ DB๋ณ„ ์ง€์› ์ปฌ๋Ÿผ ํƒ€์ž… ๋ฐ ๋งคํ•‘ ์ •๋ณด๋ฅผ ํ™•์ธํ•œ๋‹ค.

    • Tibero โž” Tibero

    • Oracle โž” Tibero

    • Tibero โž” Oracle

    • Tibero โž” PostgreSQL

    • PostgreSQL โž” Tibero

    ์ง€์› Database

    Source Database

    Target Database

    ์ง€์› ํ•ญ๋ชฉ

    ํŠธ๋žœ์žญ์…˜ ๋‹จ์œ„ ๋™๊ธฐํ™”

    DML ๋™๊ธฐํ™” ๋Œ€์ƒ

    DML ๋™๊ธฐํ™” ์ œ์•ฝ์‚ฌํ•ญ

    DDL ๋™๊ธฐํ™” ๋Œ€์ƒ

    DDL ๋™๊ธฐํ™” ๋ฒ”์œ„

    ์ง€์› ์ปฌ๋Ÿผ ํƒ€์ž…

    ์ง€์› ๋™๊ธฐํ™” ๋ฐฉํ–ฅ

    ์„ค์น˜ ์˜ˆ์‹œ

    ProSync์˜ ๋‹ค์–‘ํ•œ CDC ๊ตฌ์„ฑ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์‹ค์ œ ํ™˜๊ฒฝ์— ๋งž๋Š” ์„ค์น˜ ๋ฐฉ์•ˆ์„ ์ œ์‹œํ•œ๋‹ค. ํ•„์š” ์‹œ '์ œํ’ˆ ๊ตฌ์„ฑ๋„'๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •

    ProSync ์‚ฌ์šฉ์„ ์œ„ํ•œ Source Database๋ณ„ ์„ค์ • ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•œ๋‹ค.

    Source DB๊ฐ€ Tibero์ธ ๊ฒฝ์šฐ

    Tibero ์„ค์ •

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค TIP ํŒŒ์ผ ์„ค์ •

    ๋‹ค์Œ ํ•ญ๋ชฉ์„ TIP ํŒŒ์ผ์— ์„ค์ •ํ•œ๋‹ค.

    Archive ๋ชจ๋“œ ์„ค์ •


    Source DB๊ฐ€ Oracle์ธ ๊ฒฝ์šฐ

    Oracle ์„ค์ •

    Archive ๋ชจ๋“œ ๋ฐ Supplemental Log ์„ค์ •

    ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค์ •

    AQ์™€ Archive Log ๊ด€๋ จ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•œ๋‹ค.


    Source DB๊ฐ€ PostgreSQL์ธ ๊ฒฝ์šฐ

    PostgreSQL ์„ค์ •

    wal_level = logical ์„ค์ •

    _ENABLE_LOG_MINER=Y # ProSync๊ฐ€ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ redo log๋ฅผ ๋‚จ๊ธฐ๊ธฐ ์œ„ํ•จ
    _SPAN_UNDO=N  # Tibero 6 FS07 ์ด์ƒ์—์„œ ์„ค์ •
    _DDL_TRIGGER_ENABLE=Y # meta table ์ •๋ณด ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์„ค์ •, ๊ธฐ๋ณธ๊ฐ’์€ Y์ด๋ฏ€๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ๋ฌด๋ฐฉํ•จ
    $ tbboot -t mount
    $ tbsql sys/password
    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> QUIT
    $ tbdown
    $ tbboot
    $ sqlplus / as sysdba
    SQL> STARTUP MOUNT;
    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
    SQL> ALTER DATABASE OPEN;
    $ sqlplus / as sysdba
    SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=4 SCOPE=SPFILE;
    SQL> ALTER SYSTEM SET OPEN_LINKS=4 SCOPE=SPFILE;
    SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=1 SCOPE=SPFILE;
    $ cat postgresql.conf | grep wal_level
    wal_level = logical                     # minimal, replica, or logical

    PRS_HOME

    ProSync๊ฐ€ ์„ค์น˜๋œ ์ตœ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

    PATH

    ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ํŠน์ • ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜์ด๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•œ๋‹ค.

    LD_LIBRARY_PATH

    DB ์ ‘์†์„ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

    OS์— ๋”ฐ๋ผ LIBPATH, SHLIB_PATH ๋“ฑ์œผ๋กœ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•œ๋‹ค.

    ์„ค์น˜ ์‹œ Source/Target DB์— ๋ชจ๋‘ ์ ‘์†ํ•˜๊ธฐ ๋•Œ๋ฌธ์— DB๋ณ„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ๋ชจ๋‘ ์„ค์ •๋˜์–ด์•ผ ํ•œ๋‹ค.

    • tbsql ๋ฐ”์ด๋„ˆ๋ฆฌ ๊ฒฝ๋กœ๊ฐ€ PATH ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.

    • Tibero ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ๋ณ„์นญ ์„ค์ • ๊ฐ€์ด๋“œ ์ฐธ๊ณ ํ•˜์—ฌ dsnํŒŒ์ผ ์ƒ์„ฑ ํ›„ TB_DSN_FILE ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ํ•ด๋‹น ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

    • sqlplus ๋ฐ”์ด๋„ˆ๋ฆฌ ๊ฒฝ๋กœ๊ฐ€ PATH ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.

    • Oracle ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ๋ณ„์นญ ์„ค์ • ๊ฐ€์ด๋“œ ์ฐธ๊ณ ํ•˜์—ฌ tnsnames.ora ํŒŒ์ผ ์ƒ์„ฑ ํ›„ TNS_ADMIN ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ํ•ด๋‹น ํŒŒ์ผ์ด ์žˆ๋Š” ํด๋” ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

    • psql ๋ฐ”์ด๋„ˆ๋ฆฌ ๊ฒฝ๋กœ๊ฐ€ PATH ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.

    • PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ๋ณ„์นญ ์„ค์ • ๊ฐ€์ด๋“œ ์ฐธ๊ณ ํ•˜์—ฌ service ํŒŒ์ผ ์ƒ์„ฑ ํ›„ PGSERVICEFILE ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ํ•ด๋‹น ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

    TB_HOME

    Tibero๊ฐ€ Source DB ๋˜๋Š” Target DB์— ํฌํ•จ๋œ ๊ฒฝ์šฐ์—๋งŒ ์„ค์ •ํ•œ๋‹ค. TB_HOME์€ Tibero DB๊ฐ€ ์„ค์น˜๋œ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์ด๋‹ค. ๋ฐ˜๋“œ์‹œ ์„ค์ •๋˜์–ด์•ผ ํ•˜๋ฉฐ Tibero DB๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๊ณต๋ฐฑ์ด๋‚˜ dummy ๊ฒฝ๋กœ ๋“ฑ์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

    ORACLE_HOME

    Oracle DB๊ฐ€ Source DB ๋˜๋Š” Target DB์— ํฌํ•จ๋œ ๊ฒฝ์šฐ์—๋งŒ ์„ค์ •ํ•œ๋‹ค.

    ์„ค์น˜ ์‹œ DB ๋ณ„ ์ฃผ์˜์‚ฌํ•ญ

    Tibero

    Oracle

    PostgreSQL

    ProSync ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

    ProSync ์„ค์น˜ ํ›„ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์„ค๋ช…์ด๋‹ค.

    ProSync ์„ค์น˜ ํ›„ $PRS_HOME ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์•„๋ž˜ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ๊ฐ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ProSync ์‹คํ–‰ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์ง€์›ํ•œ๋‹ค.

    ๋””๋ ‰ํ† ๋ฆฌ
    ์„ค๋ช…

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณ„์นญ(Alias) ํ™•์ธ

    ProSync ์„ค์น˜๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ SID ์„ค์ • ํŒŒ์ผ์„ ํ™•์ธํ•˜์—ฌ ์ ‘์† ๊ฐ€๋Šฅํ•œ ๋ณ„์นญ(Alias)์„ ์„ค์ •ํ•œ๋‹ค.

    Tibero๊ฐ€ Source DB ๋˜๋Š” Target DB๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ, ๋‹ค์Œ ๊ฒฝ๋กœ์— ๋ณ„์นญ์„ ์„ค์ •ํ•œ๋‹ค.


    Oracle์ด Source DB ๋˜๋Š” Target DB๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ, ๋‹ค์Œ ๊ฒฝ๋กœ์— ๋ณ„์นญ์„ ์„ค์ •ํ•œ๋‹ค.


    PostgreSQL์ด Source DB ๋˜๋Š” Target DB๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ, ๋‹ค์Œ ๊ฒฝ๋กœ์— ๋ณ„์นญ์„ ์„ค์ •ํ•œ๋‹ค.

    pg_service.conf ๊ฒฝ๋กœ๋Š” PGSERVICEFILE ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฐ’์œผ๋กœ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ ์ „์—ญ(

    PostgreSQL ์ œ์•ฝ์‚ฌํ•ญ

    ProSync๊ฐ€ ์ง€์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค‘ PostgreSQL ๊ด€๋ จ ์ œ์•ฝ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•œ๋‹ค.

    ์˜์–ด ๋˜๋Š” ํ•œ๊ตญ์–ด๋กœ ์„ค์ •ํ•œ๋‹ค.

    libpq ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ จ ํŒจ์น˜๋“ค์ด ๋ชจ๋‘ ๋ฐ˜์˜๋˜์ง€ ์•Š์•„ ์ˆ˜๋™ ๋นŒ๋“œ ๋˜๋Š” ์ตœ์‹  libpq ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ SCRAMโ€‘SHAโ€‘256 ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก postgresql.conf์˜ password_encryption ์„ค์ •์„ md5 ๋กœ ๋ณ€๊ฒฝ ํ›„ ํ”„๋กœ์‹ฑํฌ ์žฌ์„ค์น˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ ์šฉํ•˜์—ฌ ์šฐํšŒํ•ด์•ผ ํ•œ๋‹ค.

    ๊ธธ์ด 65532 ์ด์ƒ numeric data์˜ ๊ฒฝ์šฐ ์—๋Ÿฌ๋กœ๊ทธ ์ถœ๋ ฅ ํ›„ skip ์ฒ˜๋ฆฌํ•œ๋‹ค.

    ์„ค์น˜ ์‹œ, apply configํŒŒ์ผ์— REPLAY_THREAD_CNT=1 ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค.

    ProSync ์‹คํ–‰

    Agent์™€ Instance๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๋˜์—ˆ๋‹ค๋ฉด, ProSync๋ฅผ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋œ ์ƒํƒœ์—์„œ๋Š” Admin process๋ฅผ ํ†ตํ•ด Agent ๋ฐ Instance์˜ ๊ธฐ๋™, ์ •์ง€, ์ข…๋ฃŒ, ์ƒํƒœ ํ™•์ธ ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ Admin process๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

    ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ‘œ์‹œ๋œ๋‹ค.

    ์ด ํ”„๋กฌํ”„ํŠธ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์˜์–ด์†Œ๋ฌธ์ž์™€ ์ˆซ์ž๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

    postgresql์˜ ์ œ์•ฝ์‚ฌํ•ญ์œผ๋กœ ์ธํ•ด ๋ฌธ์ž์—ด์€ null ์ดํ›„ ์ข…๋ฃŒ๋œ๋‹ค.

    PostgreSQL์˜ object๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์†Œ๋ฌธ์ž๋กœ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์—, MAP ํŒŒ๋ผ๋ฏธํ„ฐ ์‚ฌ์šฉ ๋˜๋Š” "TABLE_NAME" ๊ณผ ๊ฐ™์ด "๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…์‹œ์ ์œผ๋กœ ๋Œ€๋ฌธ์ž ํ…Œ์ด๋ธ” ์ƒ์„ฑ์ด ํ•„์š”ํ•˜๋‹ค.

    PostgreSQL์˜ ์ œํ•œ(ํ•œ row์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋Š” 1GB)๊ณผ ํ”„๋กœ์‹ฑํฌ ๋™๊ธฐํ™” ๋ฐฉ์‹์˜ ์ œ์•ฝ์‚ฌํ•ญ์œผ๋กœ ์ธํ•ด BYTEA ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด์„œ๋Š” 500MB - 2 ๋ฐ”์ดํŠธ(postgresql์—์„œ ๋ถ™์ด๋Š” ์ ‘๋‘์‚ฌ \x)๊นŒ์ง€ ๋™๊ธฐํ™” ๊ฐ€๋Šฅํ•˜๋‹ค.

    postgres ์–ธ์–ด ์„ค์ • ํ•„์š”

    libpq ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์ • ํ•„์š”

    numeric ํƒ€์ž… ๊ธธ์ด ์ œ์•ฝ

    PR ๋ฏธ์ง€์›

    ์–‘๋ฐฉํ–ฅ ๋™๊ธฐํ™” ๋ฏธ์ง€์›

    instance๋ช… ์ œํ•œ

    ๋ฌธ์ž์—ด ์ค‘๊ฐ„์˜ null ๋ฌธ์ž ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ null ์ดํ›„ ๋ฌธ์ž์—ด ๋™๊ธฐํ™” ๋ถˆ๊ฐ€

    ๋ช…์‹œ์ ์ธ object๋ช… ์„ค์ • ํ•„์š”

    BYTEA ์ปฌ๋Ÿผ ๊ธธ์ด ์ œํ•œ

    EXCLUDE_USER ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฏธ์ง€์›

    ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์ด ์œ„์น˜ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ด๋‹ค.

    config

    ProSync ์‹คํ–‰์— ํ•„์š”ํ•œ ์„ค์ • ํŒŒ์ผ์ด ์œ„์น˜ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ด๋‹ค.

    config/templates

    ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ ํ…œํ”Œ๋ฆฟ๋“ค์ด ์œ„์น˜ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ด๋‹ค.

    install

    ProSync ์„ค์น˜์— ํ•„์š”ํ•œ ํŒŒ์ผ์ด ์œ„์น˜ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ด๋‹ค.

    install/prs_install.cfg

    ProSync ์„ค์น˜ ์„ค์ • ํŒŒ์ผ์ด๋‹ค.

    install/prs_install_agent.cfg

    Agent ํ”„๋กœ์„ธ์Šค ์„ค์น˜ ์„ค์ • ํŒŒ์ผ์ด๋‹ค.

    install/prs_install.sh

    ProSync ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ์ด๋‹ค.

    install/prs_install_agent.sh

    Agent ํ”„๋กœ์„ธ์Šค ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ์ด๋‹ค.

    install/prs_common.sh

    prs_install.sh์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ณตํ†ต ํ•จ์ˆ˜๋“ค์„ ๋ชจ์•„๋†“์€ ์Šคํฌ๋ฆฝํŠธ์ด๋‹ค.

    install/prs_common_agent.sh

    prs_install_agent.sh์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ณตํ†ต ํ•จ์ˆ˜๋“ค์„ ๋ชจ์•„๋†“์€ ์Šคํฌ๋ฆฝํŠธ์ด๋‹ค.

    install/prs_common_dsn.sh

    ProSync ์„ค์น˜ ์‹œ DSN ๊ด€๋ จ ๊ณตํ†ต ํ•จ์ˆ˜๋“ค์„ ๋ชจ์•„๋†“์€ ์Šคํฌ๋ฆฝํŠธ์ด๋‹ค.

    install/prs_util.sh

    ProSync ์„ค์น˜ ์‹œ ์‚ฌ์šฉ๋˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋“ค์„ ๋ชจ์•„๋†“์€ ์Šคํฌ๋ฆฝํŠธ์ด๋‹ค.

    install/prs_backup.sh

    ProSync ํŒจ์น˜ ์‹œ ๋ฐฑ์—… ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์ด๋‹ค.

    install/prs_meta.sh

    ProSync ํŒจ์น˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์ด๋‹ค.

    install/prs_obj_group1.list

    ๋™๊ธฐํ™” ๋Œ€์ƒ ํ…Œ์ด๋ธ” ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ ์žˆ๋Š” ํŒŒ์ผ์ด๋‹ค.

    install/scripts

    ProSync ์„ค์น˜์— ํ•„์š”ํ•œ SQL ํŒŒ์ผ๋“ค์ด ์œ„์น˜ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ด๋‹ค.

    install/templates

    ProSync์˜ ์„ค์น˜ ๋ฐ ์„ค์ •์— ํ•„์š”ํ•œ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ๋“ค์ด ์œ„์น˜ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ด๋‹ค.

    license

    ProSync ๋ผ์ด์„ ์Šค ํŒŒ์ผ์ด ์œ„์น˜ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ด๋‹ค.

    bin

    ProSync ํ”„๋กœ์„ธ์Šค ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์ด ์œ„์น˜ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ด๋‹ค.

    client/lib

    pg_config --sysconfdir
    /pg_service.conf) ํŒŒ์ผ์„ ์‚ฌ์šฉ ๋˜๋Š” PGSYSCONFDIR ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฐ’์œผ๋กœ ์ง€์ •๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ pg_service.conf ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์ฃผ์˜

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์ธ ๊ฒฝ์šฐ, ๊ฐ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์„ค์ •์ด ๋ชจ๋‘ ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค.

    ๋˜ํ•œ, ์ ‘์†ํ•˜๋Š” ๋ชจ๋“  DB์— ๋Œ€ํ•œ ๋ณ„์นญ ์„ค์ •์ด ํ•„์š”ํ•˜๋ฉฐ, ๊ฐ DB์— ๋Œ€ํ•œ client ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ PATH์— ์žˆ์–ด์•ผ ํ•œ๋‹ค.

    Tibero ๋ณ„์นญ ์„ค์ •

    ์ผ๋ฐ˜ ๊ตฌ์„ฑ ์˜ˆ์‹œ

    Oracle ๋ณ„์นญ ์„ค์ •

    ๊ตฌ์„ฑ ์˜ˆ์‹œ

    PostgreSQL ๋ณ„์นญ ์„ค์ •

    ๊ตฌ์„ฑ ์˜ˆ์‹œ

    export PATH=$PRS_HOME/bin:$PRS_HOME/client/bin:$PATH
    export LD_LIBRARY_PATH=$PRS_HOME/lib:$PRS_HOME/client/lib:$LD_LIBRARY_PATH
    # tree ๊ฒฐ๊ณผ
    โ”œโ”€โ”€ bin
    โ”‚   โ”œโ”€โ”€ olr_test
    โ”‚   โ”œโ”€โ”€ prs_adm
    โ”‚   โ”œโ”€โ”€ prs_agent
    โ”‚   โ”œโ”€โ”€ prs_cm.sh
    โ”‚   โ”œโ”€โ”€ prs_cred
    โ”‚   โ”œโ”€โ”€ prs_dummy
    โ”‚   โ”œโ”€โ”€ prs_ext
    โ”‚   โ”œโ”€โ”€ prs_glob
    โ”‚   โ”œโ”€โ”€ prs_oapply
    โ”‚   โ”œโ”€โ”€ prs_oext
    โ”‚   โ”œโ”€โ”€ prs_olob
    โ”‚   โ”œโ”€โ”€ prs_pext
    โ”‚   โ”œโ”€โ”€ prs_papply
    โ”‚   โ”œโ”€โ”€ prs_pllob
    โ”‚   โ”œโ”€โ”€ prs_pretty_instance_map
    โ”‚   โ”œโ”€โ”€ prs_vf
    โ”‚   โ””โ”€โ”€ tblr_test
    โ”œโ”€โ”€ client
    โ”‚   โ””โ”€โ”€ lib
    โ”œโ”€โ”€ config
    โ”‚   โ”œโ”€โ”€ templates
    โ”‚   โ””โ”€โ”€ variant
    โ”œโ”€โ”€ install
    โ”‚   โ”œโ”€โ”€ prs_backup.sh
    โ”‚   โ”œโ”€โ”€ prs_common_agent.sh
    โ”‚   โ”œโ”€โ”€ prs_common_dsn.sh
    โ”‚   โ”œโ”€โ”€ prs_common.sh
    โ”‚   โ”œโ”€โ”€ prs_common_topmap.sh
    โ”‚   โ”œโ”€โ”€ prs_install_agent.sh
    โ”‚   โ”œโ”€โ”€ prs_install.sh
    โ”‚   โ”œโ”€โ”€ prs_meta.sh
    โ”‚   โ”œโ”€โ”€ prs_util.sh
    โ”‚   โ”œโ”€โ”€ scripts
    โ”‚   โ””โ”€โ”€ templates
    โ””โ”€โ”€ license
        โ””โ”€โ”€ oss_licenses
    $TB_HOME/client/config/tbdsn.tbr
    [SOURCE_SID]=(
        (INSTANCE=(HOST=SOURCE DB IP)
                  (PORT=SOURCE DB PORT)
                  (DB_NAME=SOURCE DB NAME))
    )
    
    [TARGET_SID]=(
        (INSTANCE=(HOST=TARGET DB IP)
                  (PORT=TARGET DB PORT)
                  (DB_NAME=TARGET DB NAME))
    )
    $ORACLE_HOME/network/admin/tnsnames.ora
    [SOURCE_ALIAS]=
    (DESCRIPTION=
        (ADDRESS=(PROTOCOL=TCP)
                 (HOST=SOURCE DB IP)
                 (PORT=SOURCE DB PORT))
        (CONNECT_DATA=(SERVER=DEDICATED)
                      (SERVICE_NAME=SOURCE DB SERVICE NAME))
    )
    
    [TARGET_ALIAS]=
    (DESCRIPTION=
        (ADDRESS=(PROTOCOL=TCP)
                 (HOST=TARGET DB IP)
                 (PORT=TARGET DB PORT))
        (CONNECT_DATA=(SERVER=DEDICATED)
                      (SERVICE_NAME=TARGET DB SERVICE NAME))
    )
    ~/pg_service.conf
    [SOURCE_ALIAS]
    host=SOURCE DB IP
    port=SOURCE DB PORT
    dbname=SOURCE DB NAME
    
    [SOURCE_ALIAS]
    host=TARGET DB IP
    port=TARGET DB PORT
    dbname=TARGET DB NAME
    
    [EXAMPLE_FOR_REPLICATION]
    host=SOURCE DB IP
    port=SOURCE DB PORT
    dbname=SOURCE DB NAME
    replication=database

    $ prs_adm
    ProSync 4 - Admin Utility
    
    TmaxData Corporation Copyright (c) 2024-. All rights reserved.
    
    Admin>
    Admin> start agent $agent_id
    Admin> start $instance_id

    Admin process ์‹คํ–‰ ๋ฐฉ๋ฒ•

    Agent ์‹คํ–‰

    Instance ์‹คํ–‰

    Admin> status
    ProSync 4 - Admin Utility
    
    TmaxData Corporation Copyright (c) 2024-. All rights reserved.
    
    status
    
    prs_agent ID: agent1, HOST: 172.17.0.1, PORT: 7600, CM_GROUP: CM1, CM_ID: 1 is running
    prs_agent ID: agent2, HOST: 172.17.0.2, PORT: 7601, CM_GROUP: CM1, CM_ID: 1 is stopped
    prs_agent ID: agent3, HOST: 172.17.0.3, PORT: 7602, CM_GROUP: CM2, CM_ID: 0 is stopped
    prs_agent ID: agent4, HOST: 172.17.0.4, PORT: 7603, CM_GROUP: CM2, CM_ID: 1 is stopped
    
    Instance ID: [instance]
    instance_ext1 is running (prs_agent ID : agent1, HOST: 172.17.0.1, PORT: 7600)
    instance_apply1 is running (prs_agent ID : agent1, HOST: 172.17.0.1, PORT: 7600)
    instance_llob is running (prs_agent ID : agent1, HOST: 172.17.0.1, PORT: 7600)

    ์‹คํ–‰ ๊ฒฐ๊ณผ ํ™•์ธ

    ์‹คํ–‰ ๊ฒฐ๊ณผ ํ™•์ธ ์˜ˆ์‹œ

    ์ฐธ๊ณ 

    ์ž์„ธํ•œ ๋ช…๋ น์–ด ๋ฐ ์šด์˜ ๋ฐฉ๋ฒ•์€ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.

    ๋™๊ธฐํ™” ๋Œ€์ƒ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๋ฐ ๋“ฑ๋ก

    ProSync์—์„œ ํ…Œ์ด๋ธ”์„ ๋™๊ธฐํ™”ํ•˜๊ธฐ ์ „์—, ๋จผ์ € ์ง€์›๋˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ํ™•์ธํ•œ๋‹ค. Source DB์— ๋”ฐ๋ผ ์ง€์›ํ•˜๋Š” ์ปฌ๋Ÿผ ํƒ€์ž…์ด ๋‹ค๋ฅด๋ฏ€๋กœ ์ฃผ์˜ํ•œ๋‹ค.

    ๊ตฌ๋ถ„
    ์ง€์› ํƒ€์ž…
    Admin ๊ฐ€์ด๋“œ

    VARCHAR2, NVARCHAR2, NUMBER, FLOAT, LONG, DATE, BINARY_FLOAT, BINARY_DOUBLE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE, INTERVAL YEAR TO MONTH

    PostgreSQL

    CHAR, VARCHAR, INT, SMALLINT, BIGINT, DECIMAL, REAL, DOUBLE PRECISION, BYTEA, TEXT, DATE, TIMESTAMP


    ๋™๊ธฐํ™” ๋Œ€์ƒ ํ…Œ์ด๋ธ”์€ Source DB์™€ Target DB ๊ฐ๊ฐ์— ์กด์žฌํ•ด์•ผ ํ•˜๋ฉฐ, ๋™์ผํ•œ ์‚ฌ์šฉ์ž ๊ณ„์ •๊ณผ ๋™์ผํ•œ ์Šคํ‚ค๋งˆ๋กœ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.

    ๋‹ค์Œ์€ TEST ์‚ฌ์šฉ์ž ๊ณ„์ •์— ํ…Œ์ด๋ธ” T1, T2, T3์„ ์ƒ์„ฑํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค. Source DB์™€ Target DB ๋ชจ๋‘์— ์ˆ˜ํ–‰ํ•œ๋‹ค.


    ๋™๊ธฐํ™” ๋Œ€์ƒ ํ…Œ์ด๋ธ”์€ ์•„๋ž˜ ๊ฒฝ๋กœ์˜ ํŒŒ์ผ์— ๋“ฑ๋กํ•œ๋‹ค.

    • ๋“ฑ๋ก ํ˜•์‹์€ OWNER_NAME.TABLE_NAME ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•œ๋‹ค.

    • ํŠน์ • OWNER์˜ ๋ชจ๋“  ํ…Œ์ด๋ธ” ๋“ฑ๋ก ์‹œ: OWNER_NAME.%

    • ํŠน์ • OWNER๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ณ„์ •๋“ค์˜ ๋ชจ๋“  ํ…Œ์ด๋ธ” ๋“ฑ๋ก ์‹œ: OWNER_NAME%.%

    Tibero

    VARCHAR2, NVARCHAR2, NUMBER, FLOAT, LONG, DATE, BINARY_FLOAT, BINARY_DOUBLE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE, INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND, RAW, CHAR, NCHAR, CLOB, NCLOB, BLOB, XMLTYPE

    ์ง€์› ๋ฐ์ดํ„ฐ ํƒ€์ž…

    Oracle

    $ tbsql sys/password
    
    SQL> CREATE USER TEST IDENTIFIED BY PASSWORD;
    SQL> GRANT RESOURCE, CONNECT TO TEST;
    
    SQL> CREATE TABLE TEST.T1 (C1 NUMBER PRIMARY KEY, C2 VARCHAR(10));
    SQL> CREATE TABLE TEST.T2 (C1 NUMBER PRIMARY KEY, C2 VARCHAR(10));
    SQL> CREATE TABLE TEST.T3 (C1 NUMBER PRIMARY KEY, C2 VARCHAR(10));
    $PRS_HOME/install/prs_obj_group1.list
    TEST.T1
    TEST.T2
    TEST.T3
    TEST.%
    TEST%.%

    ์ฐธ๊ณ 

    • GEOMETRY ์ปฌ๋Ÿผ ํƒ€์ž…์€ Tibero to Tibero ๋™๊ธฐํ™”๋งŒ ์ง€์›๋œ๋‹ค.

    • CLOB

    ์ฃผ์˜

    ์„œ๋กœ ๋‹ค๋ฅธ Character Set ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

    • Source DB์™€ Target DB์˜ Character Set์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ, ํ”„๋กœ์‹ฑํฌ ์ œํ’ˆ ๋‚ด๋ถ€์—์„œ ์ž๋™์œผ๋กœ Character Set์„ Target DB Character Set์— ๋งž๊ฒŒ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.

    ํ…Œ์ด๋ธ” ์ƒ์„ฑ

    ํ…Œ์ด๋ธ” ๋“ฑ๋ก

    ํŠน์ • ํ…Œ์ด๋ธ” ๋“ฑ๋ก ์˜ˆ์‹œ

    ์ „์ฒด ๋˜๋Š” ํŒจํ„ด ๋“ฑ๋ก ์˜ˆ์‹œ

    ์ฐธ๊ณ 

    prs_obj_group#.list ํŒŒ์ผ ๋‚ด์˜ OWNER_NAME๊ณผ TABLE_NAME์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค.

    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์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ


    ๋ฆฌ์†Œ์Šค๋ฅผ deactivate์‹œ์ผœ์ฃผ๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด์ด๋‹ค. deact๋˜์–ด ์žˆ๋Š” ๋™์•ˆ agent๋Š” script๋ฅผ ์ˆ˜ํ–‰์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค.


    ๊ทธ๋ฃน ๋ฆฌ์†Œ์Šค์˜ failover ๊ธฐ๋Šฅ ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด์ด๋‹ค.

    ,
    INTERVAL DAY TO SECOND
    ,
    RAW
    ,
    CHAR
    ,
    NCHAR
    ,
    CLOB
    ,
    NCLOB
    ,
    BLOB
    ,
    XMLTYPE
    ,
    BLOB
    ์ปฌ๋Ÿผ์˜ ๊ฒฝ์šฐ, Target PostgreSQL์˜ OID ์ปฌ๋Ÿผ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ MAPPING RULE์— LARGEOBJECT ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค.

    ๋‹จ, Source DB์—์„œ ์ง€์›ํ•˜๋Š” Character Set์˜ ๋ฒ”์œ„๊ฐ€ Target DB์—์„œ ์ง€์›ํ•˜๋Š” Character Set์˜ ๋ฒ”์œ„๋ณด๋‹ค ๋„“์„ ๊ฒฝ์šฐ, ๋ณ€ํ™˜ ๊ณผ์ •์—์„œ Target DB์—์„œ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ž๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋Š” ๊นจ์ง€๊ฑฐ๋‚˜ ์†์‹ค๋  ์ˆ˜ ์žˆ๋‹ค.

  • ๋”ฐ๋ผ์„œ ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–‘์ชฝ DB์˜ Character Set ํ˜ธํ™˜์„ฑ์„ ์‚ฌ์ „์— ๊ฒ€ํ† ํ•˜๊ณ , ํ•„์š” ์‹œ Target DB์˜ Character Set์„ ์ƒ์œ„ ํ˜ธํ™˜๋˜๋Š” ๋ฌธ์ž ์ง‘ํ•ฉ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋œ๋‹ค.

  • IDENTITY COLUMN

    IDENTITY COLUMN์˜ ๊ฒฝ์šฐ ALWAYS ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋™๊ธฐํ™”๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ ์™ธ BY DEFAULT, NOT NULL ์˜ต์…˜์˜ ๊ฒฝ์šฐ ๋™๊ธฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, target์˜ identity ์นผ๋Ÿผ sequence๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  source์— ์ €์žฅ๋œ ๊ฐ’์„ ๋™๊ธฐํ™”ํ•œ๋‹ค.

    script

    string(directory path)

    agent cmd๋ฅผ ์‹คํ–‰์‹œํ‚ฌ script๊ฐ€ ์œ„์น˜ํ•œ ์ ˆ๋Œ€๊ฒฝ๋กœ์ด๋‹ค (ํ•„์ˆ˜)

    pubnet

    string

    public ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด๋‹ค. dependency๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์ž…๋ ฅํ•ด์•ผํ•œ๋‹ค.

    retry_cnt

    integer

    ์ตœ๋Œ€ retry ์‹œ๋„ ํšŸ์ˆ˜์ด๋‹ค. (default: 3)

    ์œ„์น˜์— script๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
  • script์˜ ๊ถŒํ•œ์ด ์—†๋Š” ๊ฒฝ์šฐ

  • script๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ timeout๋  ๊ฒฝ์šฐ

  • cname

    string

    ํ•ด๋‹น ๊ทธ๋ฃน ๋ฆฌ์†Œ์Šค๊ฐ€ ์†ํ•  cluster ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด๋‹ค. (ํ•„์ˆ˜)

    grptype

    string

    ๊ทธ๋ฃน์˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•œ ์šฉ๋„์ด๋‹ค. (ํ•„์ˆ˜)

    failover

    string

    agent๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์„๋•Œ failover ๊ธฐ๋Šฅ ์‚ฌ์šฉ ์—ฌ๋ถ€์ด๋‹ค. (default: true)

    name

    string

    agent ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด๋‹ค. (unique, ํ•„์ˆ˜)

    grpname

    string

    agent ๋ฆฌ์†Œ์Šค๊ฐ€ ์†ํ•  ๊ทธ๋ฃน ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด๋‹ค (ํ•„์ˆ˜)

    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

    cmrctl add agent --name <agent_name> --grpname <group_name> --script <directory_path>
    --pubnet <public_network_resource_name> --retry_cnt <retry_cnt>
    $ 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>

    Disk ์š”๊ตฌ์‚ฌํ•ญ

    ProSync๊ฐ€ Disk๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์€ ํฌ๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    • Log File

    • TX Hash File

    • Part File

    ์œ„ ์„ธ ํŒŒ์ผ์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๊ด€๋ฆฌ๋˜๊ฑฐ๋‚˜ ์ž๋™์œผ๋กœ ProSync๊ฐ€ ์‚ญ์ œํ•˜๋Š” ๋™์ž‘์„ ํ†ตํ•ด์„œ ๊ด€๋ฆฌ๋œ๋‹ค.

    ๋ณธ ๋ฌธ์„œ์—์„œ๋Š” ์œ„ ํŒŒ์ผ๋“ค์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์†Œ๊ฐœํ•˜๊ณ  ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•œ๋‹ค.

    ProSync์˜ ๋กœ๊ทธ ํŒŒ์ผ์€ ํ”„๋กœ๊ทธ๋žจ ๋กœ๊ทธ๋‚˜ SAM(Sequential Access Method) ํŒŒ์ผ, Discard์™€ ๊ฐ™์€ ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์‚ฌ์šฉ๋˜๋Š” ๋กœ๊ทธ ํŒŒ์ผ๋“ค์ด ์žˆ๋‹ค. ์–ด๋–ค ํŒŒ์ผ์ด๋˜ ํ”„๋กœ์‹ฑํฌ ๋กœ๊ทธ๋Š” ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๊ณ , ์ด ๋ถ€๋ถ„๋งŒ ๊ธฐ์–ตํ•˜๋ฉด Disk ์‚ฌ์šฉ๋Ÿ‰์„ ์‰ฝ๊ฒŒ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค.

    ProSync์˜ ๋กœ๊ทธ๋“ค์€ ์ผ์ • ํฌ๊ธฐ๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ณ , ์ž„๊ณ„์น˜๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด ์ƒˆ ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๋ฉฐ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋Š” Backup ์œ„์น˜๋กœ ์ด๊ด€์‹œํ‚จ๋‹ค. ์ด๊ด€๋œ ์œ„์น˜์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ์Œ“์ด๊ฒŒ ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ฅผ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ†ตํ•˜์—ฌ Backup ์œ„์น˜ ๋‚ด์—์„œ ํŒŒ์ผ ๊ฐฏ์ˆ˜๋ฅผ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

    ์ด ์„ค์ •์€ ๋ชจ๋‘ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ํ•ด๋‹น ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์„ค์ •ํ•˜๋ฉด ์ข‹๋‹ค.


    Apply ํ”„๋กœ์„ธ์Šค์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ ์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋ฉฐ, ๋ณธ ์žฅ์—์„œ๋Š” ๊ฐ„๋žตํžˆ ์–ธ๊ธ‰ํ•œ๋‹ค.

    TX Hash File์€ ์ˆ˜์‹  ์ดํ›„ ๋ฐ์ดํ„ฐ๋“ค์ด ์Œ“์ด๋Š” ๊ณต๊ฐ„์ด๋ฉฐ, ์ด๋ ฅ ์ €์žฅ ์ฃผ๊ธฐ(RDBMS์˜ Log Switch) ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ ์ „์ฒด๊ฐ€ Disk์— ์ž‘์„ฑ๋œ๋‹ค. ์ž‘์„ฑ๋œ ๋ฐ์ดํ„ฐ๋Š” Log File๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ†ตํ•ด ํŠน์ • ๊ฐฏ์ˆ˜ ํ˜น์€ ํŠน์ • ์šฉ๋Ÿ‰๊นŒ์ง€๋งŒ ์ด๋ ฅ์„ ๋ณด๊ด€ํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

    Part File๋Š” Transaction์˜ ํฌ๊ธฐ๊ฐ€ ํด ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ Disk๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ํŒŒ์ผ๋กœ, ๋ฐ˜์˜์ชฝ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜์˜๋˜๊ณ  ๋‚˜์„œ์•ผ ์ œ๊ฑฐ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ProSync ๋™์ž‘ ํŠน์„ฑ ์ƒ Part File์˜ ์šฉ๋Ÿ‰์ด๋‚˜ ๊ฐฏ์ˆ˜๋ฅผ ์ œํ•œํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉ์ž๊ฐ€ ์ถ”์ถœํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ƒ์— ๋งž๊ฒŒ Disk๋ฅผ ์—ฌ์œ ์žˆ๊ฒŒ ์ค€๋น„ํ•ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 10์–ต๊ฑด์˜ DML์„ ๋„ฃ๋Š” Transaction์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ํ™˜๊ฒฝ์ด๋ผ๋ฉด, ์œ ์‚ฌํ•œ ํฌ๊ธฐ์˜ Part File์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ์„ ์ธ์ง€ํ•˜๊ณ  Disk ๊ด€๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

    Log File

    ์ฐธ๊ณ 

    Backup ๋กœ๊ทธ ํŒŒ์ผ ์„ค์ • ๊ด€๋ จ

    ๋กœ๊ทธ ๋ชจ๋“ˆ์˜ Backup๊ณผ ๊ด€๋ จ๋œ ๊ฐฏ์ˆ˜ ์„ค์ •์€ ๋ชจ๋‘ ์šฉ๋Ÿ‰๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋กœ๊ทธ๋ฅผ ์˜ˆ๋กœ ๋ณด๋ฉด, LOG_FILE_SIZE ํฌ๊ธฐ ์ด์ƒ ๋กœ๊ทธ๊ฐ€ ์Œ“์ด๋ฉด LOG_BACKUP_DIR ์œ„์น˜๋กœ ๋กœ๊ทธ ํŒŒ์ผ์ด ๋„˜์–ด๊ฐ€๊ณ , ์ƒˆ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

    ์ด ๋•Œ, LOG_BACKUP_SIZEํฌ๊ธฐ ์ด์ƒ ๋งŒํผ์˜ ๋ฐฑ์—…๋กœ๊ทธ๋“ค์ด LOG_BACKUP_DIR์ƒ์— ์Œ“์ด๊ฒŒ ๋˜๋ฉด, ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋กœ๊ทธ๋ฅผ ์ง€์›Œ ํฌ๊ธฐ๋ฅผ ์œ ์ง€ ์‹œํ‚ค๋„๋ก ๋˜์–ด์žˆ๋‹ค.

    ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ๋กœ๊ทธ ํŒŒ์ผ ๊ฐฏ์ˆ˜๋ฅผ ์œ ์ง€ ์‹œํ‚ค๋Š”๊ฒŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

    TX Hash File / Part File

    ์ฐธ๊ณ 

    Part File ๊ด€๋ จ

    TX Hash๋Š” ํฌ๊ธฐ ์ œํ•œ์ด ์žˆ๋Š” ๊ณต๊ฐ„์ด๋‹ค. Part File์ด ๋ฐœ์ƒํ•˜๋Š” ์‹œ์ ์€ ๋‹จ์ˆœํžˆ ํ•œ TX์˜ ํฌ๊ธฐ๊ฐ€ ์ž„๊ณ„์น˜๋ฅผ ๋„˜์–ด๊ฐ”์„ ๋•Œ๊ฐ€ ์•„๋‹ˆ๋ผ, TX Hash ํฌ๊ธฐ๊ฐ€ ๋ถ€์กฑํ•  ๋•Œ ๊ฐ€์žฅ ํฌ๊ธฐ๊ฐ€ ํฐ Transaction ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ Part File๋กœ ์˜ฎ๊ฒจ์ฃผ๊ฒŒ ๋œ๋‹ค.

    ์„ค๋ช…์ƒ ๋‘ ํ•ญ๋ชฉ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์˜€์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ์ƒํ˜ธ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ด€๋œ ๊ตฌ์„ฑ ์š”์†Œ์ด๋‹ค.

    Flow Control

    Agent ์„ค์น˜

    1. ์„ค์น˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค์ •

    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=1

    ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค๋ช…

    ํŒŒ๋ผ๋ฏธํ„ฐ
    ์„ค๋ช…

    AGENT_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_ID, AGENT_HOST, AGENT_PORT๋Š” ๋ฐ˜๋“œ์‹œ ์„ค์ •ํ•ด์•ผ ํ•˜๋ฉฐ, ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

    ๋ฉ€ํ‹ฐ ๋…ธ๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” IP ๊ธฐ๋ฐ˜ ์„ค์ •์„ ๊ถŒ์žฅํ•œ๋‹ค.

    IP ์ฃผ์†Œ ์ž…๋ ฅ ์‹œ VIP(Virtual IP) ๋Œ€์‹  ์‹ค์ œ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

    2. Agent ์„ค์น˜

    ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์˜ต์…˜

    ์˜ˆ์‹œ

    3. ์„ค์น˜ ๊ฒฐ๊ณผ ํ™•์ธ

    ์ฃผ์š” ํŒŒ์ผ ์„ค๋ช…

    ์ƒ์„ฑ๋œ ์„ค์ • ํŒŒ์ผ ์˜ˆ์ œ

    prs_instance.map ์˜ˆ์‹œ

    prs_agent_agent1.cfg ์˜ˆ์‹œ

    4. CM Failover ์Šคํฌ๋ฆฝํŠธ ์„ค์ •

    $PRS_HOME/bin/prs_0.sh ์˜ˆ์‹œ

    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
    $ . 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/agentA/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
    

    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.
    
    _list_create: Variable AGENT_CM_GROUP_0 is undefined or empty.
    _list_create: Variable AGENT_CM_ID_0 is undefined or empty.
    * Checking Agent configuration... 
    Usage: _list_get <list> <index>
    Usage: _list_get <list> <index>
    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
    Usage: _list_get <list> <index>
    Usage: _list_get <list> <index>
    * 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
    
    # (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 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 proecsses 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
    _list_create: Variable TAR_DB_IP_0 is undefined or empty.
    _list_create: Variable TAR_DB_PORT_0 is undefined or empty.
    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
    Usage: _list_get <list> <index>
    Checking log mining parameters [tibero]... ok
    Usage: _list_get <list> <index>
    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
    Usage: _list_get <list> <index>
    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
    Usage: _list_get <list> <index>
    Generating initial construct history [tibero (group 1)]... ok
    Generating initial commit history... ok
    
    ********************************************************************************
    * Generate Configuration Parameters (5/5)
    ********************************************************************************
    Generating Wallet... ok
    Usage: _list_get <list> <index>
    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)

    • 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

    • llob


    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๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

    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

    3. 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 ์‹คํ–‰

    LOG_LEVEL=3
    
    PRS_USER=example
    PRS_PWD=#encrypted
    
    ...
    
    # have to set
    ODBC_DRIVER=/example/path/psqlodbcw.so
    LOG_LEVEL=3
    
    PRS_USER=example
    PRS_PWD=#encrypted
    
    ...
    
    # have to set
    ODBC_DRIVER=/example/path/psqlodbcw.so
    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.
    
    _list_create: Variable AGENT_CM_GROUP_0 is undefined or empty.
    _list_create: Variable AGENT_CM_ID_0 is undefined or empty.
    * Checking Agent configuration... 
    Usage: _list_get <list> <index>
    Usage: _list_get <list> <index>
    parameter check for Agent[0] Started 
        AGENT_ID: agent1
        AGENT_HOST: 172.19.0.11
        AGENT_PORT: 7600
    parameter check for Agent[0] Done 
    Usage: _list_get <list> <index>
    Usage: _list_get <list> <index>
    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
    Usage: _list_get <list> <index>
    Usage: _list_get <list> <index>
    * 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... 
    
    
    Usage: _list_get <list> <index>
    Usage: _list_get <list> <index>
    * 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
    
    # (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 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 proecsses 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
    _list_create: Variable TAR_DB_IP_0 is undefined or empty.
    _list_create: Variable TAR_DB_PORT_0 is undefined or empty.
    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
    Usage: _list_get <list> <index>
    Checking log mining parameters [tibero]... ok
    Usage: _list_get <list> <index>
    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
    Usage: _list_get <list> <index>
    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
    Usage: _list_get <list> <index>
    Generating initial construct history [tibero (group 1)]... ok
    Generating initial commit history... ok
    
    ********************************************************************************
    * Generate Configuration Parameters (5/5)
    ********************************************************************************
    Generating Wallet... ok
    Usage: _list_get <list> <index>
    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
    

    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
    ์„ค๋ช…

    ๋“ฑ๋ก์— ์„ฑ๊ณตํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ๊ตฌ๊ฐ€ ๋‚˜์˜จ๋‹ค.

    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

    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์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

    grptype

    string

    ๊ทธ๋ฃน์˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•œ ์šฉ๋„์ด๋‹ค. (ํ•„์ˆ˜)

    failover

    string

    agent๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์„๋•Œ failover ๊ธฐ๋Šฅ ์‚ฌ์šฉ ์—ฌ๋ถ€์ด๋‹ค. (default: true)

    script

    string(directory path)

    agent cmd๋ฅผ ์‹คํ–‰์‹œํ‚ฌ script๊ฐ€ ์œ„์น˜ํ•œ ์ ˆ๋Œ€๊ฒฝ๋กœ์ด๋‹ค (ํ•„์ˆ˜)

    pubnet

    string

    public ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด๋‹ค. dependency๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์ž…๋ ฅํ•ด์•ผํ•œ๋‹ค.

    retry_cnt

    integer

    ์ตœ๋Œ€ retry ์‹œ๋„ ํšŸ์ˆ˜์ด๋‹ค. (default: 3)

    USE_CM

    CM ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค. Y๋กœ ์„ค์ •ํ•  ๊ฒฝ์šฐ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์žฌ๊ธฐ๋™์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋‚ด๋ถ€ ์žฅ์•  ๋ฐœ์ƒ ์‹œ cmrctl์„ ํ†ตํ•ด ์ •์ง€ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. (๊ธฐ๋ณธ๊ฐ’: N)

    PRS_AGENT_PROC_MAX_FAIL_CNT

    ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์ƒํƒœ๋ฅผ ๋ณด์ •ํ•˜๊ธฐ ์œ„ํ•ด ์žฌ์‹œ๋„ํ•˜๋Š” ์ตœ๋Œ€ ํšŸ์ˆ˜๋ฅผ ์„ค์ •ํ•œ๋‹ค. (๊ธฐ๋ณธ๊ฐ’: 10)

    PRS_AGENT_PROC_STARTUP_TIMEOUT

    ํ”„๋กœ์„ธ์Šค ๊ธฐ๋™ ์š”์ฒญ ์ดํ›„ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„(์ดˆ)์„ ์„ค์ •ํ•œ๋‹ค. ๊ธฐ๋™ ์š”์ฒญ์ด ์ •์ƒ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, ์„ค์ •ํ•œ ์‹œ๊ฐ„๋งŒํผ ๋Œ€๊ธฐํ•œ ํ›„ ์žฌ์‹œ๋„ํ•œ๋‹ค.

    name

    string

    ๊ทธ๋ฃน ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด๋‹ค. (unique, ํ•„์ˆ˜)

    cname

    string

    ํ•ด๋‹น ๊ทธ๋ฃน ๋ฆฌ์†Œ์Šค๊ฐ€ ์†ํ•  cluster ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด๋‹ค. (ํ•„์ˆ˜)

    name

    string

    agent ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด๋‹ค. (unique, ํ•„์ˆ˜)

    grpname

    string

    agent ๋ฆฌ์†Œ์Šค๊ฐ€ ์†ํ•  ๊ทธ๋ฃน ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด๋‹ค (ํ•„์ˆ˜)

    ์ฐธ๊ณ 

    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 ํ™•์ธ

    7. CM group ๋“ฑ๋ก

    ์˜ˆ์‹œ

    8. CM agent ๋“ฑ๋ก

    ์˜ˆ์‹œ

    ์ฃผ์˜

    prs_0.sh ํŒŒ์ผ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ $PRS_HOME/bin์— ์œ„์น˜ํ•˜๊ณ  ์žˆ๋‹ค.

    cm์—์„œ ํ•ด๋‹น ํŒŒ์ผ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

    5.9. CM group ๊ธฐ๋™

    6. Prosync ๊ธฐ๋™ ํ™•์ธ

    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
    
    # (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 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 proecsses 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
    _list_create: Variable TAR_DB_IP_0 is undefined or empty.
    _list_create: Variable TAR_DB_PORT_0 is undefined or empty.
    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
    Usage: _list_get <list> <index>
    Checking log mining parameters [tibero1]... ok
    Checking log mining parameters [tibero2]... ok
    Usage: _list_get <list> <index>
    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 TAC2TACok
    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
    Usage: _list_get <list> <index>
    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
    Usage: _list_get <list> <index>
    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>
    cmrctl add group --name CM1 --cname cls_tibero --grptype prosync
    $ 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>
    cmrctl add agent --name agent1 --grpname CM1 --script "$TB_HOME/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/prs0.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/prs1.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)
    

    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
    
    # (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 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
    ********************************************************************************
    * 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 proecsses 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
    _list_create: Variable TAR_DB_IP_0 is undefined or empty.
    _list_create: Variable TAR_DB_PORT_0 is undefined or empty.
    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
    Usage: _list_get <list> <index>
    Checking log mining parameters [tibero1]... ok
    Checking log mining parameters [tibero2]... ok
    Usage: _list_get <list> <index>
    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 TAC2TACok
    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
    Usage: _list_get <list> <index>
    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
    Usage: _list_get <list> <index>
    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 ์‹คํ–‰


    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.

    SRC DB ์žฅ๋น„์—์„œ TAR DB Client ์ ‘๊ทผ์„ ์œ„ํ•œ tbdsn.tbr ์„ค์ •์œผ๋กœ, src db ์žฅ๋น„์—์„œ instance๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ src db ์žฅ๋น„์—์„œ tar db client์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด src db ์žฅ๋น„์˜ tbdsn.tbr ํŒŒ์ผ์— tar db ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.

    ์ ‘๊ทผ ํ™•์ธ ์˜ˆ์‹œ

    SRC DB๊ฐ€ ์„ค์น˜๋œ ์žฅ๋น„์—์„œ Instance๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

    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

    ์˜ฎ๊ธด ํŒŒ์ผ ์˜ˆ์‹œ

    Instance ์„ค์น˜

    ProSync ์„ค์น˜๋ฅผ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜ ์„ธ ๊ฐ€์ง€ ๊ณ„์ • ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

    • PRS_USER

    • SRC_INSTALL_USER

    • TAR_INSTALL_USER

    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 ์‹คํ–‰

    #-------------------------------------------------
    # /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)
    )
    
    #-------------------------------------------------
    # /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)
    )            
    $ tbsql sys/tibero@tibero_tar1
    tbSQL 7  
    
    TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
    
    Connected to Tibero using tibero_tar1.
    
    SQL> 
    ############################################
    #
    # 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
    
    # (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 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 proecsses 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
    _list_create: Variable TAR_DB_IP_0 is undefined or empty.
    _list_create: Variable TAR_DB_PORT_0 is undefined or empty.
    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
    Usage: _list_get <list> <index>
    Checking log mining parameters [tibero1]... ok
    Checking log mining parameters [tibero2]... ok
    Usage: _list_get <list> <index>
    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 TAC2TACok
    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
    Usage: _list_get <list> <index>
    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
    Usage: _list_get <list> <index>
    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 
    *
    ********************************************************************************
    
    
    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
    

    ProSync๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์šด์˜์— ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ด๋ธ”๋“ค์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ณ„์ •์ด๋‹ค. Source DB์™€ Target DB ๋ชจ๋‘์— ์ƒ์„ฑํ•˜๋ฉฐ, ์šด์˜ ์‹œ ์‚ฌ์šฉ๋œ๋‹ค.

    ์„ค์น˜ ๊ณผ์ •์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ณ„์ •์œผ๋กœ, PRS_USER ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๊ณ  ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. ์„ค์น˜ ์™„๋ฃŒ ํ›„์—๋Š” ์šด์˜๊ณผ ๋ฌด๊ด€ํ•˜๋‹ค.

    SRC_INSTALL_USER์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์„ค์น˜ ๊ณผ์ •์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ณ„์ •์ด๋‹ค.


    Instance๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ๊ณ„์ •์˜ ์„ค์ • ์ •๋ณด๋ฅผ $PRS_HOME/install/prs_install.cfg ํŒŒ์ผ์— ์ž‘์„ฑํ•œ๋‹ค.

    ํŒŒ๋ผ๋ฏธํ„ฐ
    ์„ค๋ช…

    INSTANCE_ID

    ProSync๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•œ ID. ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€๋ฆฌ ๋ชฉ์ ์œผ๋กœ ์ž„์˜๋กœ ์ง€์ •ํ•œ ID๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. ์ด ๊ฐ’์€ Tablespace name์œผ๋กœ ์œ ํšจํ•œ ํ˜•์‹์ด์–ด์•ผ ํ•˜๋ฉฐ, ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋‹ค. (ํ•„์ˆ˜ ํ•ญ๋ชฉ)

    PRS_USER

    ProSync ์šด์˜์„ ์œ„ํ•ด ์†Œ์Šค ๋ฐ Target DB์— ์ƒ์„ฑํ•  ์‚ฌ์šฉ์ž ์ด๋ฆ„

    PRS_PWD

    PRS_USER์˜ ์•”ํ˜ธ. ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์„ค์น˜ ์ค‘์— ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

    ์•„๋ž˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ค์ •ํ•œ ์˜ˆ์‹œ์ด๋‹ค.


    ์„ค์ • ํŒŒ์ผ(prs_install.cfg)์ด ์ค€๋น„๋œ ํ›„์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

    ์˜ต์…˜
    ์„ค๋ช…

    -h

    ๋„์›€๋ง ์ถœ๋ ฅ

    -c

    ์‚ฌ์šฉํ•  ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ ์ง€์ • (๊ธฐ๋ณธ๊ฐ’: prs_install.cfg)

    -l

    ๋™๊ธฐํ™” ๋ฆฌ์ŠคํŠธ ํŒŒ์ผ ์ง€์ • (๊ธฐ๋ณธ๊ฐ’: prs_obj_group1.list)

    ์˜ต์…˜ ์—†์ด ๊ธฐ๋ณธ ์„ค์ • ํŒŒ์ผ๋กœ ์„ค์น˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ


    ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์Œ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๊ฒฐ๊ณผ ํŒŒ์ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์ฃผ์š” ํŒŒ์ผ ์„ค๋ช…

    • <instance_id>_ext1.cfg: ext process์˜ ์„ค์ • ํŒŒ์ผ

    • <instance_id>_apply1.cfg: apply process์˜ ์„ค์ • ํŒŒ์ผ

    • <instance_id>_llob.cfg: llob process์˜ ์„ค์ • ํŒŒ์ผ

    • prs_adm.cfg: admin process์˜ ์„ค์ • ํŒŒ์ผ

    Instance ์„ค์น˜๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด, $PRS_HOME/var ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„œ๋ธŒ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค:

    • admin

    • instance_id

    ์ด ๋””๋ ‰ํ† ๋ฆฌ๋“ค ํ•˜์œ„์—๋Š” ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰ ๋กœ๊ทธ ํŒŒ์ผ์ด๋‚˜ dump ํŒŒ์ผ, prosync ์šด์˜์— ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์ด ์ €์žฅ๋œ๋‹ค.

    ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด Source DB ๋ฐ Target DB์— ProSync ์šด์˜์— ํ•„์š”ํ•œ ๋ฉ”ํƒ€ ํ…Œ์ด๋ธ”๊ณผ ๊ฐ์ฒด๋“ค์ด ์ƒ์„ฑ๋œ๋‹ค.

    ์•„๋ž˜๋Š” ์ •์ƒ์ ์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•  ์ฃผ์š” ๋ฉ”ํƒ€ ํ…Œ์ด๋ธ” ๋ฐ ๊ฐ์ฒด ๋ชฉ๋ก์ด๋‹ค.

    • ๋™๊ธฐํ™” ๋ฐ ์ถ”์ถœ ์ด๋ ฅ ๊ด€๋ฆฌ ํ…Œ์ด๋ธ”

    ํ…Œ์ด๋ธ”๋ช…
    ์„ค๋ช…

    PRS_DDL_HIST

    DDL ๋ฐœ์ƒ์— ๋”ฐ๋ฅธ DD ์ด๋ฏธ์ง€ ์ •๋ณด ๊ด€๋ จ ํžˆ์Šคํ† ๋ฆฌ ํ…Œ์ด๋ธ”

    PRS_DD_COL

    ๋™๊ธฐํ™” ๋Œ€์ƒ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ ์ •๋ณด

    PRS_DD_CON

    DB constraint ์ •๋ณด๋ฅผ ์ €์žฅ

    • ๋™๊ธฐํ™” ๋ฐ ์ถ”์ถœ ๊ด€๋ จ PACKAGE ๋ฐ TRIGGER

    ๊ฐ์ฒด๋ช…
    ์„ค๋ช…

    PRS_DD_META

    PRS_DDL_TRG๊ฐ€ ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ

    PRS_DUMMY

    Dummy ๋ถ€ํ•˜ ์ƒ์„ฑ์„ ์œ„ํ•œ PACKAGE

    PRS_DDL_TRG

    DD ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ Trigger

    • ๋™๊ธฐํ™” ๋ฐ ์ถ”์ถœ ์ด๋ ฅ ๊ด€๋ฆฌ ํ…Œ์ด๋ธ”

    ํ…Œ์ด๋ธ”๋ช…
    ์„ค๋ช…

    PRS_INSTALL_HIST

    ์„ค์น˜ ์ •๋ณด ์ €์žฅ

    PRS_CONST_HIST

    ๋ฐ˜์˜๋œ ๋ฆฌ๋‘/์•„์นด์ด๋ธŒ ๋กœ๊ทธ ์ •๋ณด ์ €์žฅ

    PRS_CONST_SEQ

    ๋ฐ˜์˜๋œ ๋ฆฌ๋‘/์•„์นด์ด๋ธŒ ๋กœ๊ทธ ์ •๋ณด์˜ ์‹œํ€€์Šค ์ €์žฅ

    ๊ณ„์ •๋ณ„ ํ•„์š” ๊ถŒํ•œ

    ์ฐธ๊ณ 

    DB๊ฐ€ Oracle ์ด๋ฉด์„œ CDB์—์„œ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ, ๊ณตํ†ต ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋‹ค (์˜ˆ: GRANT CONNECT TO INSTALL_USER CONTAINER=ALL;).

    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.SEAF
    CONNECT                       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  
    
    # (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_DIR
    CONNECT              RESOURCE              CREATE SESSION
    INSERT ANY TABLE     CREATE ANY TABLE      CREATE ANY SEQUENCE
    CREATE ANY INDEX     CREATE ANY TRIGGER    CREATE ANY SYNONYM
    CREATE ANY VIEW      CREATE ANY PROCEDURE  UPDATE ANY TABLE
    DELETE ANY TABLE     SELECT ANY TABLE      SELECT ANY DICTIONARY
    ALTER SESSION        ALTER ANY TABLE       ALTER ANY INDEX
    ALTER ANY TRIGGER    ALTER ANY SEQUENCE    ALTER ANY PROCEDURE
    DROP ANY TABLE       DROP ANY INDEX        DROP ANY TRIGGER
    DROP ANY SEQUENCE    DROP ANY VIEW         DROP ANY PROCEDURE
    DROP ANY SYNONYM     COMMENT ANY TABLE
    DBA
    SUPERUSER
    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 OPTION
    CONNECT                     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
    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 CONTAINER
    SUPERUSER
    CONNECT                  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$PARAMETERS
    CONNECT                  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_$PARAMETER
    SUPERUSER
    ############################################
    #
    # 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
    
    # (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
    #AUTO_SYNC_ON_CREATE=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_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
    
    # (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
    #AUTO_SYNC_ON_CREATE=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
    
    $ . 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 proecsses 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
    _list_create: Variable TAR_DB_IP_0 is undefined or empty.
    _list_create: Variable TAR_DB_PORT_0 is undefined or empty.
    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
    Usage: _list_get <list> <index>
    Checking log mining parameters [src_tibero]... ok
    Usage: _list_get <list> <index>
    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
    Usage: _list_get <list> <index>
    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
    Usage: _list_get <list> <index>
    Generating initial construct history [src_tibero (group 1)]... ok
    Generating initial commit history... ok
    
    ********************************************************************************
    * Generate Configuration Parameters (5/5)
    ********************************************************************************
    Generating Wallet... ok
    Usage: _list_get <list> <index>
    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/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/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/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
    โ””โ”€โ”€ instance

    PRS_USER

    Source DB๊ฐ€ Tibero์ธ ๊ฒฝ์šฐ

    Source DB๊ฐ€ Oracle์ธ ๊ฒฝ์šฐ

    Target DB๊ฐ€ Tibero ๋˜๋Š” Oracle์ด๊ณ  DML ๋™๊ธฐํ™”๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

    Target DB๊ฐ€ Tibero ๋˜๋Š” Oracle์ธ ๊ฒฝ์šฐ

    Target DB๊ฐ€ PostgreSQL์ธ ๊ฒฝ์šฐ

    SRC_INSTALL_USER

    Tibero์ธ ๊ฒฝ์šฐ

    Oracle์ธ ๊ฒฝ์šฐ

    ์ฃผ์˜

    Oracle PDB์—์„œ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ, CDB๋กœ container๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” common user์—ฌ์•ผ ํ•˜๋ฉฐ CDB๋‚˜ PDB์— ์œ„ ๊ถŒํ•œ์ด ์—†๋Š” ๊ฒฝ์šฐ ์„ค์น˜์— ์‹คํŒจํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์ฐธ๊ณ 

    Oracle CDB์—์„œ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž ์ƒ์„ฑ ์‹œ C## ์ ‘๋‘์–ด ์ œ์•ฝ์ด ์กด์žฌํ•œ๋‹ค. ์„ค์น˜ ๊ณผ์ •์—์„œ ์ด ์ œ์•ฝ์„ ํ•ด์ œํ•˜๊ธฐ ์œ„ํ•ด ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE; ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉฐ, ํ•ด๋‹น ๋ช…๋ น์€ SYS ๊ณ„์ •์œผ๋กœ ์ ‘์†ํ•œ ์„ธ์…˜์—์„œ๋งŒ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, CDB ํ™˜๊ฒฝ์—์„œ๋Š” SYS ๊ณ„์ •์œผ๋กœ ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

    PostgreSQL์ธ ๊ฒฝ์šฐ

    TAR_INSTALL_USER

    Tibero์ธ ๊ฒฝ์šฐ

    Oracle์ธ ๊ฒฝ์šฐ

    For TIbero, Oracle

    ์„ค์น˜ ์‹œ PRS_TARGET_MIN_PRIVILEGE=Y ์„ค์ •ํ•˜์—ฌ Instance ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ, TAR_INSTALL_USER ์—๊ฒŒ ALTER USER ๊ถŒํ•œ์„ ์ถ”๊ฐ€์ ์œผ๋กœ ๋ถ€์—ฌํ•ด์•ผ ํ•œ๋‹ค.

    PostgreSQL์ธ ๊ฒฝ์šฐ

    1. ์„ค์น˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค์ •

    ์„ค์ • ํ…œํ”Œ๋ฆฟ ์˜ˆ์‹œ

    ์„ค์น˜ ํŒŒ๋ผ๋ฏธํ„ฐ

    ์ฐธ๊ณ 

    ํŠน์ˆ˜๋ฌธ์ž ์‚ฌ์šฉ ์‹œ ์ด์Šค์ผ€์ดํ”„ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

    (์˜ˆ: PRS_PWD="example123!@#" -> PRS_PWD=\"example123\!\@\#\")

    ๋˜ํ•œ, IP ์ฃผ์†Œ ์ž…๋ ฅ ์‹œ VIP(Virtual IP) ๋Œ€์‹  ์‹ค์ œ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

    ์„ค์ • ์˜ˆ์‹œ

    2. Instance ์„ค์น˜

    ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜

    ์„ค์น˜ ์˜ˆ์‹œ

    ์ฐธ๊ณ 

    prs_install.sh ํŒŒ์ผ์„ ์‹คํ–‰ํ•œ ํ›„ prs_install.cfg์— ํŒจ์Šค์›Œ๋“œ ์˜ต์…˜์„ ์ž…๋ ฅํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ฐ ๊ณ„์ •์— ๋Œ€ํ•œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

    ์ฃผ์˜

    prs_install.sh ํŒŒ์ผ ์‹คํ–‰ ์‹œ, ๋ฉ”ํƒ€ ํ…Œ์ด๋ธ” ๋ฐ ํŠธ๋ฆฌ๊ฑฐ ์ƒ์„ฑ ์ค‘ DDL์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ดํ›„ ๋™๊ธฐํ™”์— ์‹คํŒจํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์„ค์น˜ ๊ฒฐ๊ณผ ์˜ˆ์‹œ

    ์ฐธ๊ณ 

    ์„ค์น˜ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ์ง€์ ๊ณผ ๊ด€๋ จ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•œ ๋’ค ์„ค์น˜๋ฅผ ์ค‘๋‹จํ•œ๋‹ค.

    ์ž์„ธํ•œ ์˜ค๋ฅ˜ ๋‚ด์šฉ์€ ๋””๋ฒ„๊น…์„ ์œ„ํ•ด ๋กœ๊ทธ ํŒŒ์ผ(prs_install.log)์— ๊ธฐ๋ก๋˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์›์ธ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

    3. ์„ค์น˜ ๊ฒฐ๊ณผ ํ™•์ธ

    ์ƒ์„ฑ๋œ ์„ค์ • ํŒŒ์ผ ์˜ˆ์ œ

    prs_instance.map ์˜ˆ์‹œ

    instance_ext1.cfg ์˜ˆ์‹œ

    instance_apply1.cfg ์˜ˆ์‹œ

    instance_llob.cfg ์˜ˆ์‹œ

    prs_adm.cfg ์˜ˆ์‹œ

    Var ๋””๋ ‰ํ† ๋ฆฌ ํ™•์ธ

    ๋ฉ”ํƒ€ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ํ™•์ธ

    Source DB

    Target DB

    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}/logs)

    LOG_BACKUP_DIR

    ์ด์ „ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ €์žฅํ•  ๊ฒฝ๋กœ (๊ธฐ๋ณธ๊ฐ’: $PRS_HOME/var/{INSTANCE_ID}/logs/backup)

    CREATE_DSN_FILE

    ํ”„๋กœ์‹ฑํฌ๊ฐ€ ์‚ฌ์šฉํ•  tbdsn.tbr/tnsnames.ora/pg_service.conf ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์„ค์ •(๊ธฐ๋ณธ๊ฐ’: N)

    DSN_DIR

    ํ”„๋กœ์‹ฑํฌ๊ฐ€ DB ์ ‘์†์— ์‚ฌ์šฉํ•  tbdsn.tbr/tnsnames.ora/pg_service.conf ํŒŒ์ผ์ด ์œ„์น˜ํ•œ ๊ฒฝ๋กœ. ์„ค์ •ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ์‹œ์Šคํ…œ ๊ธฐ๋ณธ๊ฐ’ ์‚ฌ์šฉ

    DSN_FILE

    ํ”„๋กœ์‹ฑํฌ๊ฐ€ 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 / POSTGRE) (ํ•„์ˆ˜ ํ•ญ๋ชฉ)

    SRC_DB_NAME

    Source DB์˜ ๋ณ„์นญ(Alias). (ํ•„์ˆ˜ ํ•ญ๋ชฉ)

    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 ๋ฌธ์œผ๋กœ ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ” ๋ฐ ์‹œํ€€์Šค๋ฅผ ์ž๋™์œผ๋กœ ๋™๊ธฐํ™” ๋Œ€์ƒ์— ๋“ฑ๋กํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์ง€์ • (Oracle ์ „์šฉ, ๊ธฐ๋ณธ๊ฐ’: N)

    USE_LOGMNR

    Oracle LogMiner๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ๋ฅผ ์ถ”์ถœํ•  ๊ฒฝ์šฐ ์„ค์ •. (๊ธฐ๋ณธ๊ฐ’: N)

    DICT_FILE_DIR

    Oracle LogMiner ์‚ฌ์šฉ ์‹œ dict ํŒŒ์ผ ์ €์žฅ ์œ„์น˜. Oracle ์œ ์ €๊ฐ€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ.

    PRS_EXT_IP

    for mysql only

    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

    for mysql only

    GROUP_NUM

    Multi-Grouping ๋ชจ๋“œ์—์„œ replay group ์ˆ˜. (๊ธฐ๋ณธ๊ฐ’: 1)

    USE_TDE

    TDE_WALLET_PWD๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ž…๋ ฅ๋ฐ›๊ธฐ ์œ„ํ•œ ์„ค์ •. Y๋กœ ์„ค์ • ์‹œ ์„ค์น˜ ์ค‘ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์š”๊ตฌ.

    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 ์ •๋ณด ์ €์žฅ