All pages
1 of 10

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”

ProSync๋Š” Extract ํ”„๋กœ์„ธ์Šค์—์„œ Apply ํ”„๋กœ์„ธ์Šค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ๋ณด์•ˆ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

AES-256-CBC ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ Redo(Archive)log ์—์„œ ์ถ”์ถœํ•œ ๋ณ€๊ฒฝ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์•”ํ˜ธํ™”๋งŒ์„ ์ œ๊ณตํ•œ๋‹ค.

์‚ฌ์šฉ

ENABLE_NETWORK_ENCRYPT=[Y|N]

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

ENABLE_NETWORK_ENCRYPT

์ „์†กํ•˜๋Š” Chunk์˜ ์•”ํ˜ธํ™” ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค

ํ•ด๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ Y๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ๋ฐ ๋ณตํ˜ธํ™” ๊ณผ์ •์ด ์ถ”๊ฐ€๋˜๋ฏ€๋กœ ๋™๊ธฐํ™” ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค.

Archive Log ๋ชจ๋“œ

ProSync๋Š” Archiving๋˜์ง€ ์•Š์€ ์˜จ๋ผ์ธ Redo Log๋Š” ์ถ”์ถœํ•˜์ง€ ์•Š๊ณ , Archiving์ด ์™„๋ฃŒ๋œ Archive Log๋งŒ์„ ์ถ”์ถœํ•˜์—ฌ Apply ํ”„๋กœ์„ธ์Šค๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

EXTRACT_ARCHIVE_LOG_ONLY=[Y|N]

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

EXTRACT_ARCHIVE_LOG_ONLY

Archive Log๋งŒ์„ ์ถ”์ถœํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค.

์ฃผ์˜

์œ„ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, Archive Log๋งŒ์„ ์ถ”์ถœํ•˜๊ฒŒ ๋˜์–ด ์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์— ์œ ์˜ํ•œ๋‹ค.

Extract Process

Process ์„ค๋ช…

Extract ํ”„๋กœ์„ธ์Šค๋Š” Source DB์˜ ๋ณ€๊ฒฝ ๋กœ๊ทธ๋ฅผ ์ถ”์ถœํ•˜์—ฌ Apply ํ”„๋กœ์„ธ์Šค๋กœ ์ „๋‹ฌํ•˜๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

Source DB๊ฐ€ Tibero ๋˜๋Š” Oracle์ธ ๊ฒฝ์šฐ, redo log๋ฅผ ์ฝ์–ด ๋ณ€๊ฒฝ ๋กœ๊ทธ๋ฅผ ์ถ”์ถœํ•˜๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ redo log์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์œ„์น˜(์ผ๋ฐ˜์ ์œผ๋กœ Source DB๊ฐ€ ์กด์žฌํ•˜๋Š” ์žฅ๋น„)์—์„œ ๊ธฐ๋™๋˜์–ด์•ผ ํ•œ๋‹ค.

๋ณ€๊ฒฝ์˜ ์ตœ์†Œ ๋‹จ์œ„๋Š” LCR๋กœ, ๋ ˆ์ฝ”๋“œ ๋‹จ์œ„์˜ ๋ณ€๊ฒฝ์„ ์˜๋ฏธํ•˜๋ฉฐ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์—ฌ๋Ÿฌ LCR์„ Chunk๋กœ ๋งŒ๋“ค์–ด Apply ํ”„๋กœ์„ธ์Šค์— ์ „๋‹ฌํ•œ๋‹ค.

๊ทธ๋ฆผ 1. Extract Process


Threads

Control Thread

๊ธฐ๋™ ์‹œ ๋‹ค๋ฅธ Thread ์‹œ์ž‘, ๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ๋ฐ ์ „์†ก ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

Resource Thread

ํ”„๋กœ์„ธ์Šค์˜ CPU/Memory ์‚ฌ์šฉ๋Ÿ‰์„ ์ˆ˜์ง‘ํ•œ๋‹ค. ProSync ๋งค๋‹ˆ์ € ์‚ฌ์šฉ ์‹œ, Agent ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ์ˆ˜์ง‘ํ•œ ๊ฐ’์„ ํ”„๋กœ์‹ฑํฌ ๋งค๋‹ˆ์ €๋กœ ์ „์†กํ•œ๋‹ค.

๋™๊ธฐํ™” ํ…Œ์ด๋ธ” ์ถ”๊ฐ€, ๋™๊ธฐํ™” ํ•  ํ…Œ์ด๋ธ” ๋ฐ ์ปฌ๋Ÿผ๋“ค์˜ ์ •๋ณด์ธ DD image ์กฐํšŒ, DB์˜ ์ƒํƒœ ํŒŒ์•…์„ ์œ„ํ•œ dummy tx ์ƒ์„ฑ ๋“ฑ ๋ณ€๊ฒฝ ๋ฐ์ดํ„ฐ ์ถ”์ถœ๊ณผ๋Š” ์ƒ๊ด€์—†๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์กฐํšŒ๋‚˜ ์ˆ˜์ •๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์ถ”์ถœํ•œ ๋ณ€๊ฒฝ์„ Text ํŒŒ์ผ๋กœ ์ถœ๋ ฅํ•˜๋Š” SAM ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๋ณ€๊ฒฝ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์ด๋ฅผ Chunkํ˜•ํƒœ๋กœ ๋งŒ๋“  ๋’ค Control ์Šค๋ ˆ๋“œ๋ฅผ ํ†ตํ•ด Apply ํ”„๋กœ์„ธ์Šค์— ์ „๋‹ฌํ•œ๋‹ค.

Log Reader ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด redo log์— ์ ‘๊ทผํ•˜๋ฉฐ ๋น„์ •์ƒ ์ข…๋ฃŒ, Apply ํ”„๋กœ์„ธ์Šค ์žฌ์—ฐ๊ฒฐ ๋“ฑ์˜ ์žฅ์•  ์ƒํ™ฉ ๋ฐœ์ƒ ์‹œ, ๋งˆ์ง€๋ง‰์œผ๋กœ ์ฝ๊ณ  ์žˆ๋˜ redo๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ฝ๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

์ถ”์ถœ ์‹œ์ž‘ ์ง€์ ์€ Apply ํ”„๋กœ์„ธ์Šค์— ์ €์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, Apply ํ”„๋กœ์„ธ์Šค์™€ ์—ฐ๊ฒฐ ์ „๊นŒ์ง€๋Š” ์ถ”์ถœ์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.

Worker Thread

Sam Thread

Read Thread

Sequence ๋™๊ธฐํ™”

๊ฐœ์š”

ProSync๋Š” Source ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ Sequence ๊ฐ์ฒด ๊ฐ’์„ Target ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. Sequence์˜ NEXTVAL์ด ํ˜ธ์ถœ๋˜๋ฉฐ ์†์„ฑ๊ฐ’์ด ๊ฐฑ์‹ ๋  ๋•Œ ๋งˆ๋‹ค Target์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค.


์ง€์› ํ™˜๊ฒฝ

Source ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
Target ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
์ง€์› ์—ฌ๋ถ€

Tibero

Tibero

์ง€์›

Source Tibero์—์„œ Sequence์˜ NEXTVAL์ด ํ˜ธ์ถœ๋˜๋ฉด, ํ•ด๋‹น ๊ฐ’์ด Target Tibero์˜ ๋™์ผ Sequence์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜๋œ๋‹ค.

  1. Source์™€ Target์— ๋™์ผํ•œ ์ด๋ฆ„์˜ ์œ ์ € ์•„๋ž˜์— ๋™์ผํ•œ ์ด๋ฆ„์˜ Sequence๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  2. ProSync ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  3. ๋™๊ธฐํ™” ๋Œ€์ƒ ๋ฆฌ์ŠคํŠธ ํŒŒ์ผ(๊ธฐ๋ณธ๊ฐ’: prs_obj_group1.list) ํŒŒ์ผ์— SYS._DD_SEQ ํ…Œ์ด๋ธ”์ด ๊ธฐ์žฌ๋ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  4. ๋™๊ธฐํ™” ๋Œ€์ƒ ๋ฆฌ์ŠคํŠธ ํŒŒ์ผ(๊ธฐ๋ณธ๊ฐ’: prs_obj_group1.list) ํŒŒ์ผ์— ๋™๊ธฐํ™”ํ•˜๊ณ ์ž ํ•˜๋Š” SEQUENCE๊ฐ€ ๊ธฐ์žฌ๋ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  1. Sequence ์ƒ์„ฑ ์‹œ NOCACHE ์˜ต์…˜์œผ๋กœ ์ƒ์„ฑ ํ•„์š”ํ•˜๋‹ค.

  2. Source, Target DB ์˜ ๋™๊ธฐํ™” ๋Œ€์ƒ์ด ๋˜๋Š” SEQUENCE ์ง์˜ ์„ค์ •๊ฐ’์€ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค.

  3. ํ”„๋กœ์‹ฑํฌ์—์„œ Sequence ALTER ์ˆ˜ํ–‰ ์‹œ ํƒ€๊ฒŸ DB์—์„œ SYS._DD_SEQ NEXTVAL ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ Boundary Check๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํƒ€๊ฒŸ NextVal ๊ฐ’๋ณด๋‹ค MAX/MIN ๊ฐ’์ด ๋” ์ž‘์€/ํฐ ๊ฒฝ์šฐ, TBR-7134 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

Source Oracle์—์„œ Sequence์˜ NEXTVAL์ด ํ˜ธ์ถœ๋˜๋ฉด, ํ•ด๋‹น ๊ฐ’์ด Target Tibero์˜ ๋™์ผ Sequence์— ๋ฐ˜์˜๋œ๋‹ค. Target์˜ Sequence ๊ฐ’์ด Source ์™€ ๊ฒน์น˜์ง€ ์•Š๊ณ , ๋™์ผํ•˜๊ฑฐ๋‚˜ ์•ž์„œ๊ฐ€๋„๋ก ๋™๊ธฐํ™”๊ฐ€ ์ง„ํ–‰๋œ๋‹ค.

  1. Source Oracle๊ณผ Target Tibero์— ๋™์ผํ•œ ์ด๋ฆ„์˜ Sequence๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  2. ProSync ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  3. ๋™๊ธฐํ™” ๋Œ€์ƒ ๋ฆฌ์ŠคํŠธ ํŒŒ์ผ(๊ธฐ๋ณธ๊ฐ’: prs_obj_group1.list) ํŒŒ์ผ์— SYS.SEQ$ ํ…Œ์ด๋ธ”์ด ๊ธฐ์žฌ๋ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  4. ๋™๊ธฐํ™” ๋Œ€์ƒ ๋ฆฌ์ŠคํŠธ ํŒŒ์ผ(๊ธฐ๋ณธ๊ฐ’: prs_obj_group1.list) ํŒŒ์ผ์— ๋™๊ธฐํ™”ํ•˜๊ณ ์ž ํ•˜๋Š” SEQUENCE๊ฐ€ ๊ธฐ์žฌ๋ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  1. Source, Target DB ์˜ ๋™๊ธฐํ™” ๋Œ€์ƒ์ด ๋˜๋Š” SEQUENCE ์ง์˜ ์„ค์ •๊ฐ’์€ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค.

  2. SEQUENCE ๊ฐ’์˜ ์ •ํ•ฉ์„ฑ์„ ์œ„ํ•ด ORDER ์˜ต์…˜์˜ ์‚ฌ์šฉ์ด ๊ถŒ์žฅ๋œ๋‹ค.


ํ•ญ๋ชฉ
์„ค๋ช…

Source DB ์˜ config ํŒŒ์ผ์— _DDL_SEQ_SUPPLOG=Y ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

  • Target DB ์˜ config ํŒŒ์ผ์— SEQ_GET_NEXTVAL_FROM_DD_TABLE=Y ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

  • Oracle

    Tibero

    ์ง€์›

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

    Instance ์„ค์น˜ ๊ณผ์ •์—์„œ DB ์˜ PRS_INSTALL_USER ๋Š” SYS.SEQ$(SYS._DD_SEQ) ํ…Œ์ด๋ธ” ๋ฐ ๋™๊ธฐํ™” ํ•˜๊ณ ์ž ํ•˜๋Š” SEQUENCE ์— ๋Œ€ํ•œ SELECT ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋‹ค.

    ๋™๊ธฐํ™” ์‹œ์ 

    NEXTVAL ํ˜ธ์ถœ ์‹œ์—๋งŒ ๋™๊ธฐํ™”๋œ๋‹ค. CURRVAL ์กฐํšŒ๋Š” ๋™๊ธฐํ™”๋˜์ง€ ์•Š๋Š”๋‹ค.

    Sequence ์กด์žฌ ํ•„์ˆ˜

    Tibero to Tibero ํ™˜๊ฒฝ

    ๋™๊ธฐํ™” ๋ฐฉ์‹

    ์‚ฌ์ „ ์ค€๋น„์‚ฌํ•ญ

    ์ œ์•ฝ์‚ฌํ•ญ

    Oracle to Tibero ํ™˜๊ฒฝ

    ๋™๊ธฐํ™” ๋ฐฉ์‹

    ์‚ฌ์ „ ์ค€๋น„์‚ฌํ•ญ

    ์ œ์•ฝ์‚ฌํ•ญ

    ์ฃผ์˜์‚ฌํ•ญ

    Target์— ๋™์ผํ•œ ์ด๋ฆ„์˜ Sequence๊ฐ€ ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

    ALTER SEQUENCE

    Sequence ์†์„ฑ ๋ณ€๊ฒฝ(INCREMENT BY, MAXVALUE ๋“ฑ)์€ DDL ๋™๊ธฐํ™”๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌ๋œ๋‹ค.

    ๋Œ€๋Ÿ‰ ํ˜ธ์ถœ ์‹œ

    ๋นˆ๋ฒˆํ•œ NEXTVAL ํ˜ธ์ถœ ์‹œ ๋™๊ธฐํ™” ์ง€์—ฐ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ ์ ˆํ•œ CACHE ๊ฐ’ ์„ค์ •์œผ๋กœ ํ˜ธ์ถœ ๋นˆ๋„๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋œ๋‹ค.

    Active-Active ํ™˜๊ฒฝ ์ง€์–‘

    Target DB ์—์„œ SEQUENCE ์˜ ์‚ฌ์šฉ์„ ์ง€์–‘ํ•œ๋‹ค. NEXTVAL์„ ํ†ตํ•ด Target DB ์—์„œ SEQUENCE ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋™๊ธฐํ™” ์ค‘์ธ SEQUENCE ์˜ ์ •ํ•ฉ์„ฑ, ํŠนํžˆ ๊ณ ์œ ์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

    Extract

    ๋ณธ ๋ฌธ์„œ๋Š” ProSync Extract ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ๋‚ด์šฉ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. Extract ํ”„๋กœ์„ธ์Šค ์ •์˜๋ถ€ํ„ฐ ์—ญํ•  ๋ฐ ์„ธ๋ถ€์ ์ธ Configuration ๋“ฑ์„ ์•ˆ๋‚ดํ•œ๋‹ค.

    ๋ฐ์ดํ„ฐ ์••์ถ•

    ProSync๋Š” Extract ํ”„๋กœ์„ธ์Šค์—์„œ Apply ํ”„๋กœ์„ธ์Šค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๊ฐ์†Œ๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์••์ถ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    ENABLE_NETWORK_COMPRESS=[Y|N] NETWORK_COMPRESS_LEVEL=compress_level

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

    ENABLE_NETWORK_COMPRESS

    ์ „์†กํ•˜๋Š” Chunk์˜ ์••์ถ• ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

    NETWORK_COMPRESS_LEVEL

    ๋ฐ์ดํ„ฐ ์••์ถ• ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐ์ดํ„ฐ ์••์ถ•๋ฅ ์„ ์„ค์ •ํ•œ๋‹ค.

    0~9๊นŒ์ง€ ์„ค์ • ๊ฐ€๋Šฅํ•˜๋ฉฐ, 0์œผ๋กœ ์„ค์ •ํ•œ ๊ฒฝ์šฐ ์••์ถ•์„ ํ•˜์ง€ ์•Š๊ณ  9์— ๊ฐ€๊นŒ์›Œ์งˆ์ˆ˜๋ก ์••์ถ•๋ฅ ์ด ์ปค์ง„๋‹ค.

    User Filtering

    ProSync๋Š” ํŠน์ • ์‚ฌ์šฉ์ž์— ์˜ํ•ด์„œ ๋ฐœ์ƒ๋œ DML ๋ฐ DDL์„ ๋™๊ธฐํ™”์—์„œ ์ œ์™ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

    ์–‘๋ฐฉํ–ฅ ๋™๊ธฐํ™”

    ๊ฐ™์€ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด Source DB์—์„œ Target DB๋กœ, Target DB์—์„œ Source DB๋กœ ๋™๊ธฐํ™” ํ•˜๋„๋ก 2๊ฐœ์˜ Prosync ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ๋ณ„ ๋‹ค๋ฅธ ์„ค์ •์ด ์—†๋‹ค๋ฉด ์ƒ๋Œ€๋ฐฉ์˜ PRS_USER๊ฐ€ ๋ฐ˜์˜ํ•œ ๋™๊ธฐํ™” ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค์‹œ ์ถ”์ถœ๋˜์–ด Source DB๋กœ ์ „์†ก๋  ์ˆ˜ ์žˆ๋‹ค.

    Redo Log์—๋Š”, tx์— ๋Œ€ํ•ด ์ด๋ฅผ ์ˆ˜ํ–‰ ํ•œ User๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๊ฐ€ ์žˆ์œผ๋ฉฐ ProSync๋Š” ์ด ์ •๋ณด๋ฅผ ํ™œ์šฉํ•ด ์ƒ๋Œ€๋ฐฉ์˜ PRS_USER๋กœ EXCLUDE_USER ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ด๋ฏธ ๋ฐ˜์˜ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ๋ฐ˜์˜ํ•˜๋Š” ํ˜„์ƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.

    ์‚ฌ์šฉ

    ๋‹ค์Œ์€ TEST ์‚ฌ์šฉ์ž์™€ PRS_USER ์‚ฌ์šฉ์ž๋ฅผ ๋™๊ธฐํ™”์—์„œ ์ œ์™ธํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค.

    EXCLUDE_USER=PRS_USER.TEST

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

    EXCLUDE_USER

    ๋™๊ธฐํ™”์—์„œ ์ œ์™ธํ•  ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ๋“ฑ๋กํ•œ๋‹ค

    ์ฐธ๊ณ 

    ์–‘๋ฐฉํ–ฅ ๊ณผ Oracle ๊ด€๋ จ ์ œ์•ฝ์‚ฌํ•ญ

    ProSync 4.4.x ๋ฒ„์ „์˜ Oracle ์ด ํฌํ•จ๋œ ์–‘๋ฐฉํ–ฅ ๋™๊ธฐํ™”์—์„  ROLLBACK_OBJECT_IDS ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ค์ •ํ•ด์•ผํ•œ๋‹ค.

    Redo์ƒ์— ๋‚จ๋Š” ์„ธ์…˜ ์ •๋ณด๋ฅผ ํ†ตํ•ด ํ•„ํ„ฐ๋ง ํ•˜๋Š” ๊ธฐ์กด ๋ฐฉ์‹๊ณผ ๋‹ค๋ฅด๊ฒŒ, ProSync๊ฐ€ ๋™๊ธฐํ™”ํ•œ ํŠธ๋žœ์žญ์…˜์„ Object id(Segment id)๋กœ ๊ฐ์ง€ํ•˜๊ณ  ์ด๋ฅผ ํ†ตํ•ด ํŠธ๋žœ์žญ์…˜ ์ž์ฒด๋ฅผ ๋กค๋ฐฑํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

    ProSync์˜ Applyํ”„๋กœ์„ธ์Šค๋Š” PRS_COMMITTED_TX_LIST ํ…Œ์ด๋ธ”์„ ์กฐ์ž‘ํ•˜๊ฒŒ ๋˜์–ด์žˆ์œผ๋ฉฐ, ์ด์— ๋Œ€ํ•œ Object id, Segment id๋ฅผ ์œ„ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋ชจ๋‘ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ๋‹ค์Œ์€ ์กฐํšŒ ์ฟผ๋ฆฌ ์˜ˆ์‹œ์ด๋‹ค. (Tibero์˜ ๊ฒฝ์šฐ ์ถ”์ถœ ์‹œ Supplemental Log๋กœ Object id๊ฐ€ ๋‚จ์œผ๋ฏ€๋กœ Segment๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•  ํ•„์š”๋Š” ์—†๋‹ค.)

    • Target Oracle Object ID ์กฐํšŒ

    • Target Oracle SGMT ID ์กฐํšŒ

    • Target Tibero Object ID ์กฐํšŒ

    SELECT O.OBJ#
    FROM SYS.OBJ$ O, SYS.USER$ U
    WHERE O.OWNER# = U.USER#
    AND O.TYPE# = 2
    AND U.TYPE# = 1
    AND U.NAME = 'Target Prosync Instance Meta User'
    AND O.NAME = 'PRS_COMMITTED_TX_LIST';
    SELECT DATAOBJ#
    FROM SYS.OBJ$ O, SYS.USER$ U
    WHERE O.OWNER# = U.USER#
    AND O.TYPE# IN (2, 19, 34)
    AND U.TYPE# = 1
    AND U.NAME = 'Target Prosync Instance Meta User'
    AND O.NAME = 'PRS_COMMITTED_TX_LIST'
    AND O.DATAOBJ# IS NOT NULL;
    SELECT DATAOBJ#, OBJ#
    FROM SYS.OBJ$ O, SYS.USER$ U
    WHERE O.OWNER# = U.USER#
    AND O.TYPE# IN (2, 19, 34)
    AND U.TYPE# = 1
    AND U.NAME = 'Target Prosync Instance Meta User'
    AND O.NAME = 'PRS_COMMITTED_TX_LIST'
    AND O.DATAOBJ# IS NOT NULL;
    SELECT O.OBJ_ID
    FROM SYS._DD_OBJ O, SYS._DD_USER U
    WHERE O.OWNER_ID = U.USER_ID
    AND O.TYPE_NO = 1
    AND U.TYPE_NO = 1
    AND U.NAME = 'Target Prosync Instance Meta User'
    AND O.NAME = 'PRS_COMMITTED_TX_LIST';

    Key Features

    Extract ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์•ˆ๋‚ดํ•œ๋‹ค.

    Tables

    Extract ํ”„๋กœ์„ธ์Šค์—์„œ Source DB์— ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”ํƒ€ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ์•ˆ๋‚ดํ•œ๋‹ค.

    PRS_OBJ_LIST

    ๋™๊ธฐํ™”ํ•  object๋“ค์˜ Type, Owner, Name, ๋“ฑ๋ก ์‹œ๊ธฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

    PRS_TXINFO

    tlr(olr)ํŒŒ์ผ์˜ ์œ„์น˜, seq ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

    tlr(olr)ํŒŒ์ผ์€ Redo Log๋ฅผ ๋ชจ๋‘ ์ฝ๊ณ  ๋‹ค์Œ Log๋ฅผ ์ฝ๊ธฐ ์ „ ์•„์ง commit๋˜์ง€ ์•Š์€ tx ์ •๋ณด๋ฅผ ์ €์žฅํ•œ ํŒŒ์ผ๋กœ ProSync๋Š” Begin์ด ์—†๋Š” tx์— ๋Œ€ํ•ด์„œ๋Š” ์ถ”์ถœํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ๋™ ์‹œ์ ์— ๋”ฐ๋ผ ๋ˆ„๋ฝ๋˜๋Š” tx๊ฐ€ ์—†๋„๋ก ์ด์ „ Redo Log๋ฅผ ์ฝ์—ˆ์„ ๋•Œ ์•„์ง commit๋˜์ง€ ์•Š์€ tx ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

    PRS_DDL_HIST

    ๋ฐœ์ƒํ•œ DDL์˜ ์‹œ์ , DDL ์ข…๋ฅ˜, ๋ฉ”ํƒ€ ํ…Œ์ด๋ธ” ์—…๋ฐ์ดํŠธ ์—ฌ๋ถ€, ์ดํ›„ ProSync๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” DD์˜ Sequence ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

    PRS_DICT_HIST

    Source DB๊ฐ€ Oracle์ด๋ฉฐ Log Miner๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™๊ธฐํ™” ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค. DD ์ •๋ณด๋ฅผ ์ €์žฅํ•œ dictํŒŒ์ผ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

    PRS_DD_USR

    Source DB์— ์กด์žฌํ•˜๋Š” USER๋“ค์˜ ์ด๋ฆ„๊ณผ USER_ID๋ฅผ ์ €์žฅํ•œ๋‹ค. User Filtering ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ €์žฅํ•œ๋‹ค.

    PRS_DD_TBL

    ๋™๊ธฐํ™” ํ…Œ์ด๋ธ”์˜ DD sequence, object id, ํ…Œ์ด๋ธ”๋ช… ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. Redo Log๋Š” object id๋งŒ ๋‚จ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์—, ํ•ด๋‹น ์ •๋ณด๋ฅผ Apply ํ”„๋กœ์„ธ์Šค์— ์ „๋‹ฌํ•˜์—ฌ ์ ์ ˆํ•˜๊ฒŒ ๋ฐ˜์˜ ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

    ํŠน์ • object_id๊ฐ€ ์–ด๋А ํ…Œ์ด๋ธ”์— ์†ํ•˜๋Š”์ง€ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

    ํŒŒํ‹ฐ์…˜ ๋“ฑ์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ํ…Œ์ด๋ธ”๊ณผ๋Š” ๋‹ค๋ฅธ object_id๋ฅผ ๋‚จ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์—, ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ œ์—†์ด ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด ํŒŒํ‹ฐ์…˜์˜ object_id์™€ ํ…Œ์ด๋ธ”์˜ object_id๋ฅผ ๋งคํ•‘ํ•œ๋‹ค.

    ์ปฌ๋Ÿผ์˜ ์†์„ฑ๊ณผ ์–ด๋А ํ…Œ์ด๋ธ”์— ์†ํ•˜๋Š”์ง€ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. Redo Log๋Š” ์ปฌ๋Ÿผ ์†์„ฑ ์ •๋ณด๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ํ•ด๋‹น ์ •๋ณด๋ฅผ Apply ํ”„๋กœ์„ธ์Šค์— ์ „๋‹ฌํ•˜์—ฌ ์ ์ ˆํ•˜๊ฒŒ ๋ฐ˜์˜ ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

    ์ปฌ๋Ÿผ์˜ ์ œ์•ฝ ์กฐ๊ฑด ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. Apply ํ”„๋กœ์„ธ์Šค์˜ Parallel Replay์—์„œ ์ ์ ˆํ•˜๊ฒŒ ๋ฐ˜์˜ ์ˆœ์„œ๋ฅผ ์กฐํ•ฉํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉ๋œ๋‹ค.

    ํ…Œ์ด๋ธ”์˜ ์•”ํ˜ธํ™” ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. Apply ํ”„๋กœ์„ธ์Šค์—์„œ ๋ณตํ˜ธํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ €์žฅํ•œ๋‹ค.

    ๋ณ€๊ฒฝ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋„ ์ถ”์ถœ, ๋ฐ˜์˜์— ๋ฌธ์ œ ์—†๋Š”์ง€ ํ™•์ธ์šฉ์œผ๋กœ์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ถ€ํ•˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ๋ถ€ํ•˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, ์ฃผ๊ธฐ์ ์œผ๋กœ ํ•ด๋‹น ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋ถ€ํ•˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

    Source DB๊ฐ€ Oracle์ด๋ฉฐ Log Miner๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™๊ธฐํ™” ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ถ”์ถœํ•œ ์‹œ์  ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

    ์‹œํ€€์Šค ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

    ProSync์˜ ์ดˆ๊ธฐ์ ์žฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

    Source DB๊ฐ€ Oracle์ด๋ฉฐ Log Miner๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™๊ธฐํ™” ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค. instance ์ด๋ฆ„์„ ์ €์žฅํ•œ๋‹ค.

    PRS_DD_SGMT

    PRS_DD_COL

    PRS_DD_CON

    PRS_DD_ENC

    PRS_DUMMY_TBL

    PRS_LOGMNR_INFO

    PRS_DD_SEQ_TBL

    PRS_DD_ETL_HIST

    PRS_INSTALL_TOP

    ์ฐธ๊ณ 

    ๋ณธ ํŽ˜์ด์ง€์— ์–ธ๊ธ‰๋˜์ง€ ์•Š์€ ํ…Œ์ด๋ธ”์€ Deprecated ๋˜์–ด ๋ถˆํ•„์š”ํ•œ ํ…Œ์ด๋ธ”์ด๋‹ค.

    ์•”ํ˜ธํ™” ํ…Œ์ด๋ธ” ์ถ”์ถœ

    Source DB๊ฐ€ Tibero์ธ ๊ฒฝ์šฐ, ์•”ํ˜ธํ™”๋œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•œ๋‹ค. ์•”ํ˜ธํ™”๋œ ํ…Œ์ด๋ธ” ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋ณตํ˜ธํ™”๋ฅผ ์œ„ํ•œ Wallet file ์ ‘๊ทผ ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋‹ค.

    TDE_FOR_EXT=[Y|N] TDE_WALLET_FILE=file_path TDE_WALLET_PWD=wallet_password TDE_FOR_APPLY=[Y|N] TDE_FOR_TABLESPACE=[Y|N]

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

    TDE_FOR_EXT

    ๋ฐ์ดํ„ฐ ๋ณตํ˜ธํ™” ๊ธฐ๋Šฅ ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค.

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

    TDE_WALLET_FILE

    Source DB์—์„œ ์ƒ์„ฑํ•œ Wallet file์˜ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•œ๋‹ค. ๋ฐ˜๋“œ์‹œ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

    TDE_WALLET_PWD

    Source DB์—์„œ ์ƒ์„ฑํ•œ Wallet file์˜ Password๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. ์„ค์น˜ ๊ณผ์ •์—์„œ ์ž…๋ ฅํ–ˆ๋‹ค๋ฉด, ์ž๋™์ ์œผ๋กœ ProSync๊ฐ€ ํ•ด๋‹น ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ €์žฅํ•˜์—ฌ #encrypted ๊ฐ’์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋ฉฐ, ์„ค์น˜ ๊ณผ์ •์—์„œ ์ž…๋ ฅํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ง์ ‘ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ์ˆ˜๋™์œผ๋กœ ProSync Wallet์„ ์ƒ์„ฑํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

    TDE_FOR_APPLY

    ๋ฐ์ดํ„ฐ ๋ณตํ˜ธํ™” ๊ธฐ๋Šฅ ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค. Apply ํ”„๋กœ์„ธ์Šค์—์„œ ์„ค์ •ํ•˜๋ฉฐ TDE_FOR_EXT์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.

    TDE_FOR_TABLESPACE

    ์•”ํ˜ธํ™”๋œ Tablespace ๋™๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์‚ฌ์šฉํ•œ๋‹ค. ๋งŒ์•ฝ ๋™๊ธฐํ™” ๋Œ€์ƒ์— ์•”ํ˜ธํ™”๋œ Tablespace ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ณธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ™œ์„ฑํ™” ํ•˜์ง€ ์•Š์„ ์‹œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.