All pages
1 of 1

Loading...

DBLink ์•ˆ๋‚ด์„œ

DB Link ์†Œ๊ฐœ

๋ณธ ์žฅ์—์„œ๋Š” DB Link์˜ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…๊ณผ ์žฅ,๋‹จ์ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์š”

DB Link๋Š” ํ˜„์žฌ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋„คํŠธ์›Œํฌ์ƒ์˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด ์ ‘์† ์„ค์ •์„ ์ •์˜ํ•˜๋Š” ๊ฐ ์ฒด์ž…๋‹ˆ๋‹ค.

DB Link ์žฅ, ๋‹จ์ 

  • ์žฅ์ 

    • ๋ถ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํ•œ๋ฒˆ๋งŒ ์ ‘์†ํ•ด๋„ Link๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ฐ„ํŽธํžˆ ์ ‘์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋‹จ์ 

    • Link๋ฅผ ํ†ตํ•ด ์ ‘์†๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ธ์…˜๊ณผ Lock์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹ค์‹œ๊ฐ„ ํŠธ๋žœ์žญ์…˜์ด ๋งŽ์€ ์‹œ์Šคํ…œ ์—์„œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๋ฐฐ์น˜์ž‘์—…๊ณผ ๊ฐ™์€ ํฐ ํŠธ๋žœ์žญ์…˜์„ DB Link๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์ž‘์—…ํ•  ๊ฒฝ์šฐ ์žฅ์•  ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋ณธ ์žฅ์—์„œ๋Š” Tibero์™€ Tibero ๊ฐ„์˜ DB Link ์ƒ์„ฑ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ Tibero ๊ฐ„์˜ ํ˜ธํ™˜์„ฑ์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

  • Source์— ํ•ด๋‹นํ•˜๋Š” Tibero์—์„œ Target์— ํ•ด๋‹นํ•˜๋Š” Tibero์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค๋ฉด Link ๊ตฌ์„ฑ์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ ‘์†ํ•˜๋ ค๋Š” Tibero(Tibero_A๋ผ๊ณ  ํ•จ)์˜ IP ์ฃผ์†Œ, ํฌํŠธ ๋ฒˆํ˜ธ, DB NAME ๋‚ด์šฉ์„ ํ™•์ธํ•˜๊ณ , DB Link๋ฅผ ์ƒ์„ฑํ•  Tibero(Tibero_B๋ผ๊ณ  ํ•จ)์˜ ๋„คํŠธ์›Œํฌ ์„ค์ • ํŒŒ์ผ(tbdsn.tbr)์— ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Tibero_A๋Š” ์„ค์ •์ด ํ•„์š”์—†๊ณ , Tibero_B๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ์„œ๋ฒ„์˜ tbdsn.tbr ํŒŒ์ผ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•ด์„œ Tibero_B Instance์— tbdsn.tbr ํŒŒ์ผ์˜ ์„ค์ •์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • ์ ‘์†ํ•˜๋ ค๋Š” Tibero(Tibero_A)๋กœ ์ ‘์†ํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Tibero to Tibero DB Link๋ฅผ ์ƒ์„ฑํ•  ๊ณ„์ •(Tibero_B)์œผ๋กœ ์ ‘์†ํ•˜์—ฌ DB Link ์ƒ์„ฑ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ DB Link Object๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ tbsql์— ์ ‘์†ํ•˜์—ฌ DB Link Object ์ƒ์„ฑ์— ๋Œ€ํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค.

์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด < @Link๋ช… >์„ ๋ถ™์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์ค‘์ธ Link์˜ ์ด๋ฆ„์œผ๋กœ ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด View๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

๋ณธ ์žฅ์—์„œ๋Š” Tibero์—์„œ DB Link Object๋ฅผ ๋งŒ๋“ค์–ด Oracle์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

DB Link๋ฅผ ํ†ตํ•ด ์งˆ์˜๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ DB Link ๋Œ€์ƒ์ด Tibero๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ DBMS๋ผ๋ฉด ๊ฐ๊ฐ์˜ DBMS๋ฅผ ์œ„ํ•œ Gateway๋ฅผ ํ†ตํ•ด DB Link๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Tibero ์„œ๋ฒ„๋Š” ๋‹ค๋ฅธ DBMS์— ํ•„์š”ํ•œ ์งˆ์˜๋ฅผ ํ•ด๋‹น Gateway์— ์ „๋‹ฌํ•˜๊ณ , Gateway๋Š” ๋‹ค๋ฅธ DBMS์— ์ ‘์†ํ•˜์—ฌ Tibero ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ ๋ฐ›์€ ์งˆ์˜๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ Tibero ์„œ๋ฒ„๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ DBMS์˜ DB Link ๊ธฐ๋Šฅ์„ ์‚ฌ ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น DBMS์— ๋Œ€ํ•œ Gateway ๋ฐ”์ด๋„ˆ๋ฆฌ์™€ ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

[๊ทธ๋ฆผ 3.1] Tibero to Oracle ๊ตฌ์กฐ๋„

Gateway๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ TBGW_HOME ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์„ค์ • ํŒŒ์ผ์„ ์ฝ๊ณ  ๋กœ๊ทธ ํŒŒ์ผ์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. TBGW_HOME ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋””ํดํŠธ ๊ฐ’์€ '$TB_HOME/client/gateway'์ž…๋‹ˆ๋‹ค. Gateway๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์„ค์ • ํŒŒ์ผ๊ณผ ๋กœ๊ทธ ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ํŒŒ์ผ์˜ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

  • < DBMS Vender๋ช… >/config Gateway ์„ค์ • ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๋Š” ์œ„์น˜์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ์˜ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

  • < DBMS Vender๋ช… >/log Gateway์™€ ๊ด€๋ จ๋œ ๋กœ๊ทธ ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๋Š” ์œ„์น˜์ž…๋‹ˆ๋‹ค.

Tibero to Oracle DB Link๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ์˜ ์‚ฌํ•ญ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ ๋ฐ”์ด๋„ˆ๋ฆฌ ์œ„์น˜

    • Gateway for Oracle ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์€ Tibero ๋ฒ„์ „ ๋ฐ OS์— ๋”ฐ๋ผ ์œ„์น˜ ๋ฐ ํŒŒ์ผ๋ช…์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

    • Tibero 6 ์ดํ•˜ ๋ฒ„์ „์—์„œ๋Š” oracle๊ณผ์˜ dblink๋ฅผ ์œ„ํ•œ gw4orcl ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ oracle ๋ฒ„์ „์— ๋”ฐ๋ผ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์—ˆ๋Š”๋ฐ, Tibero 7 ๋ถ€ํ„ฐ๋Š” gw4orcl ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ํ†ตํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๋ถ€์ ์œผ๋กœ Oracle ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • Oracle ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

    • Gateway for Oracle์ธ ๊ฒฝ์šฐ ๋‚ด๋ถ€์ ์œผ๋กœ Oracle ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Oracle์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค. (Oracle ์„œ๋ฒ„ ๋ฐ”์ด๋„ˆ๋ฆฌ ์•ˆ์— ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, Instant ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ๊ฐ€๋Šฅ)

    • Gateway๊ฐ€ ์„ค์น˜๋œ ๊ณณ์— Oracle ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • LONG RAW, NCLOB์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • LOB, LONG์˜ ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋ฅผ ์ผ๋ถ€ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

    • insert into (local) ~ select from (dblink)

๋ณธ ์ ˆ์—์„œ๋Š” Gateway for Oracle์˜ ๊ตฌ์„ฑ ๋ฐฉ์‹๊ณผ ์„ค์ • ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Gateway for Oracle์€ ๋‹ค์Œ์˜ ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • Local ๋ฐฉ์‹ Gateway๋ฅผ ๋ฏธ๋ฆฌ ๊ธฐ๋™ํ•˜์ง€ ์•Š๊ณ  DB Link๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ Gateway ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ธฐ๋™๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ, Tibero ์„œ ๋ฒ„์™€ Gateway for Oracle์ด ๋™์ผ ์„œ๋ฒ„์— ์กด์žฌํ•  ๊ฒฝ์šฐ์— Local ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • Listener ๋ฐฉ์‹ Gateway๋ฅผ ๋ฏธ๋ฆฌ ๊ธฐ๋™ํ•ด์„œ Listeningํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์„ค์ •์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Local ๋˜๋Š” Listener ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜์˜ ๋ฐฉ์‹์„ ์„ ํƒํ•˜์—ฌ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์„ค์ •์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ ๊ฐœ๋ณ„์ ์œผ๋กœ ์„ค๋ช…ํ•˜๋ฉฐ ๋™์ผํ•  ๊ฒฝ์šฐ๋Š” ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ์ œ๋ชฉ์— '๊ณตํ†ต'์ด๋ผ๋Š” ๋ฌธ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ UNIX ๊ณ„์—ด์—์„œ Gateway๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

  1. profile ์„ค์ •(๊ณตํ†ต)

  2. Oracle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ จ ๊ถŒํ•œ ๋ณ€๊ฒฝ(๊ณตํ†ต)

  3. Gateway ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ณต์‚ฌ(๊ณตํ†ต)

  4. Network Alias ์„ค์ •

๊ฐ ๊ณผ์ •์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ์„ค๋ช…์€ ํ•ด๋‹น ์ ˆ์˜ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

Local ๋ฐฉ์‹

  1. profile ์„ค์ •(๊ณตํ†ต) Gateway for Oracle์ด ๊ธฐ๋™๋˜๋Š” ์‚ฌ์šฉ์ž์˜ OS ํ™˜๊ฒฝ ํŒŒ์ผ(.profile, .bash_profile ๋“ฑ)์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์„ค์ • ๋ฐฉ๋ฒ•

  • ์„ค์ • ์˜ˆ

  1. Oracle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ จ ๊ถŒํ•œ ๋ณ€๊ฒฝ(๊ณตํ†ต) Oracle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•œ ์‚ฌ์šฉ์ž ๋˜๋Š” root ๊ณ„์ •์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

  1. Gateway ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ณต์‚ฌ(๊ณตํ†ต) ์ง€์ •๋œ ๊ฒฝ๋กœ์— ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ณต์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • ์„ค์ • ๋ฐฉ๋ฒ•

  • ์„ค์ • ์˜ˆ

  1. Network Alias ์„ค์ • Tibero ํด๋ผ์ด์–ธํŠธ์˜ Network Alias ์„ค์ • ํŒŒ์ผ์— Gateway ์ •๋ณด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. Network Alias ์„ค์ • ํŒŒ์ผ๋ช…์€ Tibero ๋ฒ„์ „์— ๋”ฐ๋ผ ๊ฐ๊ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Tibero 7 : $TB_HOME/client/config/tbdsn.tbr

  • tbdsn.tbr ์„ค์ • ๋ฐฉ๋ฒ•

  • TARGET ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ ‘์† ํ™•์ธ ๋ฐฉ๋ฒ• TARGET์— ์ž…๋ ฅ ๊ฐ’์„ sqlplus์˜ Alias๋กœ ์ž‘์„ฑํ•˜์—ฌ ์ ‘์†์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • tbdsn.tbr ์„ค์ • ์˜ˆ

  1. Gateway ํ™˜๊ฒฝ์„ค์ •(๊ณตํ†ต) tbgw.cfg ํŒŒ์ผ์— ์ดˆ๊ธฐํ™” ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์„ค์ •๊ฐ’์„ ๋ช…์‹œํ•จ์œผ๋กœ์จ Gateway์™€ ๊ด€๋ จ๋œ ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Gateway๋ฅผ ์„ค์น˜ํ•œ ์„œ๋ฒ„์—์„œ $TBGW_HOME/oracle/config/tbgw.cfg ํŒŒ์ผ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์„ค์ • ๋ฐฉ๋ฒ•

  • ์„ค์ • ์˜ˆ

  1. DB Link ์ƒ์„ฑ ๋ฐ ํ™•์ธ DB Link ์ƒ์„ฑ ๋ฐฉ๋ฒ•์€ Local๊ณผ Listener ๋ฐฉ์‹์ด ๋™์ผํ•ฉ๋‹ˆ๋‹ค. Local ๋ฐฉ์‹์—์„œ๋Š” Gateway ํ”„๋กœ์„ธ์Šค์˜ ๊ธฐ๋™์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ DB Link ์ƒ์„ฑ๊ณผ ํ™•์ธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

  • DB Link ์ƒ์„ฑ ๋ฐฉ๋ฒ•

Link๋ฅผ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ ๊ถŒํ•œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

  • DB Link ์ƒ์„ฑ ์˜ˆ

  • DB Link ์ƒ์„ฑ ํ™•์ธ ์˜ˆ DB Link ์ƒ์„ฑ์„ ํ™•์ธํ•  ๋•Œ select๋ฌธ์„ 'Table๋ช…@< DB Link๋ช… >'์œผ๋กœ ์„ค์ •ํ•˜๋ฉด DB Link๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • DB Link ์ด์šฉํ•˜์—ฌ Oracle์˜ Table ์กฐํšŒ ์˜ˆ Oracle ์— Table ์ƒ์„ฑ ํ›„ ์ƒ์„ฑํ•œ Database Link ๋ฅผ ์ด์šฉํ•˜์—ฌ ์กฐํšŒํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. Oracle ์— test ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Tibero ์—์„œ ์ƒ์„ฑํ•œ Database Link (T7LINK) ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ, ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Listener ๋ฐฉ์‹

  1. profile ์„ค์ •(๊ณตํ†ต)

Gateway for Oracle์ด ๊ธฐ๋™๋˜๋Š” ์‚ฌ์šฉ์ž์˜ OS ํ™˜๊ฒฝ ํŒŒ์ผ(.profile, .bash_profile ๋“ฑ)์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์„ค์ • ๋ฐฉ๋ฒ•

  • ์„ค์ • ์˜ˆ

  1. Oracle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ จ ๊ถŒํ•œ ๋ณ€๊ฒฝ(๊ณตํ†ต)

Oracle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•œ ์‚ฌ์šฉ์ž ๋˜๋Š” root ๊ณ„์ •์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

  1. Gateway ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ณต์‚ฌ(๊ณตํ†ต)

์ง€์ •๋œ ๊ฒฝ๋กœ์— ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ณต์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • ์„ค์ • ๋ฐฉ๋ฒ•

  • ์„ค์ • ์˜ˆ

  1. Network Alias ์„ค์ •

Tibero ํด๋ผ์ด์–ธํŠธ์˜ Network Alias ์„ค์ • ํŒŒ์ผ์— Gateway ์ •๋ณด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Network Alias ์„ค์ • ํŒŒ์ผ๋ช…์€ Tibero ๋ฒ„์ „์— ๋”ฐ๋ผ ๊ฐ๊ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Tibero 7 : $TB_HOME/client/config/tbdsn.tbr

  • tbdsn.tbr ์„ค์ • ๋ฐฉ๋ฒ•

  • TARGET ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ ‘์† ํ™•์ธ ๋ฐฉ๋ฒ• TARGET์— ์ž…๋ ฅ ๊ฐ’์„ sqlplus์˜ Alias๋กœ ์ž‘์„ฑํ•˜์—ฌ ์ ‘์†์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • tbdsn.tbr ์„ค์ • ์˜ˆ

  1. Gateway ํ™˜๊ฒฝ์„ค์ •(๊ณตํ†ต) tbgw.cfg ํŒŒ์ผ์— ์ดˆ๊ธฐํ™” ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์„ค์ •๊ฐ’์„ ๋ช…์‹œํ•จ์œผ๋กœ์จ Gateway์™€ ๊ด€๋ จ๋œ ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Gateway๋ฅผ ์„ค์น˜ํ•œ ์„œ๋ฒ„์—์„œ $TBGW_HOME/oracle/config/tbgw.cfg ํŒŒ์ผ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์„ค์ • ๋ฐฉ๋ฒ•

  • ์„ค์ • ์˜ˆ

  1. DB Link ์ƒ์„ฑ ๋ฐ ํ™•์ธ DB Link ์ƒ์„ฑ ๋ฐฉ๋ฒ•์€ Local๊ณผ Listener ๋ฐฉ์‹์ด ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, Listener ๋ฐฉ์‹์€ ๋จผ์ € Gateway ํ”„๋กœ์„ธ์Šค์˜ ๊ธฐ๋™์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Listener ๋ฐฉ์‹์—์„œ Gateway ํ”„๋กœ์„ธ์Šค์˜ ๊ธฐ๋™ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด Gateway ํ”„๋กœ์„ธ์Šค ๊ธฐ๋™ ํ›„, gw4orcl ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ธฐ๋™๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ง€์ • ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ 9999์ผ ๊ฒฝ์šฐ, Listening ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•˜๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์€ DB Link ์ƒ์„ฑ๊ณผ ํ™•์ธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

  • DB Link ์ƒ์„ฑ ์˜ˆ

  • DB Link ์ƒ์„ฑ ํ™•์ธ ์˜ˆ

DB Link ์ƒ์„ฑ์„ ํ™•์ธํ•  ๋•Œ select ๋ฌธ์„ 'Table๋ช…@< DB Link๋ช… >'์œผ๋กœ ์„ค์ •ํ•˜๋ฉด DB Link๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณธ ์ ˆ์—์„œ๋Š” Oracle ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ํ˜ธํ™˜์„ฑ ํ™•์ธ๊ณผ Instant ํด๋ผ์ด์–ธํŠธ ์„ค์ • ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Tibero to Oracle DB Link์˜ ๊ฒฝ์šฐ Gateway๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ Oracle ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ Oracle ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ํ˜ธํ™˜๋˜์ง€ ์•Š์œผ๋ฉด DB Link๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ํ˜ธํ™˜์„ฑ ๋„ํ‘œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

[๊ทธ๋ฆผ 3.2] Oracle ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ํ˜ธํ™˜์„ฑ ๋„ํ‘œ

Gateway for Oracle์˜ ๊ฒฝ์šฐ ๋‚ด๋ถ€์ ์œผ๋กœ Oracle ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ์„œ๋ฒ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ Oracle์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

Oracle ํด๋ผ์ด์–ธํŠธ ๋˜๋Š” ์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์šด ๊ฒฝ์šฐ Instant ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ด์šฉํ•œ DB Link ์„ค์ •์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ Oracle Instant ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

  1. Instant ํด๋ผ์ด์–ธํŠธ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์••์ถ• ํ•ด์ œ

  2. profile ์„ค์ •

  3. tnsnames.ora ์ƒ์„ฑ ๋ฐ ์„ค์ •

  4. Network Alias ์„ค์ •(UNIX ๊ณ„์—ด ์ฐธ๊ณ )

๊ฐ ๊ณผ์ •์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ์„ค๋ช…์€ ํ•ด๋‹น ์ ˆ์˜ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

4~6 ๊ณผ์ •์€ 3.2.1.1 ๊ณผ 3.2.1.2์˜ ๊ณผ์ •๊ณผ ๋™์ผํ•˜์—ฌ ์ฐธ๊ณ ํ•˜์—ฌ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. Instant ํด๋ผ์ด์–ธํŠธ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์••์ถ• ํ•ด์ œ

Oracle ํ™ˆํŽ˜์ด์ง€ ์ ‘์†ํ•œ ํ›„ Gateway๊ฐ€ ์„ค์น˜๋œ ์„œ๋ฒ„์˜ OS์™€ bit์— ๋งž๋Š” Instant ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์••์ถ•์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ Linux ๋ฒ„์ „์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

  1. Profile ์„ค์ •

๋‹ค์Œ์€ profile ์„ค์ • ์˜ˆ์ž…๋‹ˆ๋‹ค. TNS_ADMIN์˜ ๊ฒฝ์šฐ tnsnames.ora ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  1. tnsnames.ora ์ƒ์„ฑ ๋ฐ ์„ค์ •

$TNS_ADMIN์œผ๋กœ ์„ค์ •๋œ ๊ฒฝ๋กœ์— tnsnames.ora ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • ์„ค์ • ๋ฐฉ๋ฒ•

  • ์„ค์ • ์˜ˆ ๋‹ค์Œ์€ Oracle 19c์— ํ•ด๋‹นํ•˜๋Š” ์„ค์ •์œผ๋กœ ๊ฐ Oracle ๋ฒ„์ „๋งˆ๋‹ค ๋ฌธ๋ฒ•์ด ์ผ๋ถ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ $TNS_ADMIN์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋Š” "ORACLE_HOME/network/admin" ์ž…๋‹ˆ๋‹ค.

๊ธ€์ž ๊นจ์ง ํ˜„์ƒ

DB Link๋ฅผ ํ†ตํ•˜์—ฌ Oracle์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ๊ธ€์ž๊ฐ€ ๊นจ์ง€๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๊ธ€์ž ๊นจ์ง ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ๋•Œ ํ™•์ธํ•ด์•ผ ํ•  ํ•ญ๋ชฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ทธ๋ฆผ์œผ๋กœ ์ƒํ™ฉ์— ๋งž๊ฒŒ ๊ฐ ํ•ญ๋ชฉ์˜ ์ ์ ˆํ•œ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

[๊ทธ๋ฆผ 3.3] ๊ธ€์ž ๊นจ์ง ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ํ™•์ธ ์š”์†Œ

  • ํด๋ผ์ด์–ธํŠธ ํ™˜๊ฒฝ (1)

    • ํ„ฐ๋ฏธ๋„์ฐฝ์œผ๋กœ ์ ‘์†ํ•˜์—ฌ tbsql์„ ํ†ตํ•ด ํ™•์ธํ•  ๊ฒฝ์šฐ OS ์–ธ์–ด ์„ค์ •(LANG, LC_ALL ๋“ฑ), ์ ‘์†ํ•˜๋Š” SSH ๋˜๋Š” ํ…”๋„ท์˜ ์–ธ์–ด ์„ค์ •, TB_NLS_LANG ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ฐ’์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    • ํด๋ผ์ด์–ธํŠธ Tool์„ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์ธํ•  ๊ฒฝ์šฐ

  • Tibero ์บ๋ฆญํ„ฐ ์…‹ (2) Oracle ์บ๋ฆญํ„ฐ ์…‹์ด Tibero์—์„œ ํ˜ธํ™˜์ด ๋˜๋Š” ์บ๋ฆญํ„ฐ ์…‹์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Tibero์˜ ์บ๋ฆญํ„ฐ ์…‹์ด MSWIN949(ํ•œ๊ธ€), Oracle ์บ๋ฆญํ„ฐ ์…‹์ด JA16SJIS(์ผ๋ณธ์–ด)์ผ ๊ฒฝ์šฐ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • Gateway (3) Gateway๋Š” Oracle์—์„œ Tibero๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ฌ ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์€ 2๊ฐœ์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜์˜ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

  • Oracle (4) Oracle ์ž์ฒด์—์„œ ๊นจ์ง„ ๊ธ€์ž๊ฐ€ ์•„๋‹Œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Tibero7 ์—์„œ gw4orcl ๋กœ Gateway ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ํ†ตํ•ฉ๋˜๋ฉฐ $TB_HOME/client/bin ์— gw_install.sh ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ถ”๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

gw_install.sh ์ˆ˜ํ–‰ ์‹œ, $TBGW_HOME์™€ ํ•˜์œ„ ํด๋”๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜์–ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

ldd gw4orcl ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ์ ‘์†์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณธ ์žฅ์—์„œ๋Š” Oracle์—์„œ DB Link Object๋ฅผ ๋งŒ๋“ค์–ด Tibero์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” DB Link ์ƒ์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Oracle์—์„œ๋Š” ์ด๊ธฐ์ข… ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™˜๊ฒฝ์—์„œ Non-Oracle ์‹œ์Šคํ…œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด Heterogeneous Services(HS)์™€ Database Gateway(DG) ๋ชจ๋“ˆ์„ ์ง€์›ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํ•ด๋‹น ๋ชจ๋“ˆ๊ณผ ํƒ€ DB์˜ Generic ODBC Driver ์—ฐ๋™์ž‘์—…์„ ํ†ตํ•ด DB Link๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[๊ทธ๋ฆผ 4.1] Oracle to Tibero ๊ตฌ์กฐ๋„

Oracle ๋ฒ„์ „์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•˜๋Š” Gateway๊ฐ€ ๋‹ค๋ฅด๋ฉฐ Oracle to Tibero์˜ ๊ฒฝ์šฐ Oracle์—์„œ ์ œ๊ณตํ•˜๋Š” Gateway๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

Oracle 10g ์ดํ•˜ ๋ฒ„์ „์—์„œ๋Š” HSODBC๋ฅผ ์ด์šฉํ•˜๋ฉฐ, Oracle 11g ์ด์ƒ ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” DG4ODBC๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ œ์•ฝ์‚ฌํ•ญ

๋‹ค์Œ์€ Oracle์—์„œ ์ œ๊ณตํ•˜๋Š” Gateway์ธ HSODBC์™€ DG4ODBC์˜ ์ œ์•ฝ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

Databse Gateway for ODBC Limitations

  • BLOB/CLOB data cannot be read through pass-through queries

  • Updates or deletes that include unsupported functions within a WHEREclause are not allowed

  • Stored procedures are not supported

์—ฐ๊ฒฐ๋ฐฉ์‹์€ OS์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

Tibero ODBC Driver ์ง์ ‘ ์—ฐ๊ฒฐ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ Oracle to Tibero ํ˜ธ์ถœ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Oracle ์„œ๋ฒ„์™€ Gateway ์„œ๋ฒ„๊ฐ€ ๋ถ„๋ฆฌ๋  ๊ฒฝ์šฐ ๋‹ค์Œ์˜ ์„ค์ •์œผ๋กœ ์ˆ˜ํ–‰๋˜์ง€๋งŒ ๋ถ„๋ฆฌ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ชจ๋“  ์„ค์ •์„ Oracle์„œ๋ฒ„์—์„œ ํ•ฉ๋‹ˆ๋‹ค.

[๊ทธ๋ฆผ 4.2] Oracle to Tibero ํ˜ธ์ถœ ํ๋ฆ„

  1. create database ~ using ๋ฌธ๊ตฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  2. tnsnames.ora ํŒŒ์ผ์˜ Alias๋ช…์˜ SID๋ฅผ ์ฐพ๋Š”๋‹ค.

  3. listener.ora ํŒŒ์ผ์—์„œ SID๋ฅผ ์ฐพ์•„์„œ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  4. init{sid}.ora ํŒŒ์ผ์˜ ์„ค์ • ์ •๋ณด๋ฅผ ์ฝ์–ด์˜จ๋‹ค.

๋‹ค์Œ์€ UNIX ๊ณ„์—ด์—์„œ DB Link ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

  1. ์‚ฌ์ „ํ™•์ธ ๋ฐ ์ค€๋น„์‚ฌํ•ญ

  2. Tibero ํด๋ผ์ด์–ธํŠธ ์„ค์น˜

  3. tnsnames.ora ์„ค์ •

  4. Listener ์„ค์ • ๋ฐ ๊ธฐ๋™

๊ฐ ๊ณผ์ •์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ์„ค๋ช…์€ ํ•ด๋‹น ์ ˆ์˜ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์‚ฌ์ „ํ™•์ธ ๋ฐ ์ค€๋น„์‚ฌํ•ญ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌํ•ญ๋“ค์„ ํ™•์ธ ๋ฐ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.

  • Oracle Gateway ์„ค์น˜ ์—ฌ๋ถ€ ํ™•์ธ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์กฐํšŒํ•˜์—ฌ ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๊ฐ€ 0๋ณด๋‹ค ํฌ๋ฉด ์„ค์น˜๋œ ๊ฒƒ์ด๊ณ , 0์œผ๋กœ ๋‚˜์˜จ๋‹ค๋ฉด ์„ค์น˜๊ฐ€ ๋˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • Oracle Gateway ํŒŒ์ผ์˜ bit ํ™•์ธ OS ๋ช…๋ น์–ด์ธ file ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 32bit์ธ์ง€ 64bit์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ Gateway ํŒŒ์ผ์˜ bit๋ฅผ ํ™•์ธํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค. ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ํ•ด๋‹น ํŒŒ์ผ์€ Linux 64bit์ธ ๊ฒƒ์„ ํ™• ์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Tibero ํด๋ผ์ด์–ธํŠธ ์„ค์น˜

Oracle Gateway๊ฐ€ ์„ค์น˜๋œ ์„œ๋ฒ„์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ์—ฐ๋™์„ ์œ„ํ•ด์„œ๋Š” '$TB_HOME/client/lib/libtbodbc.so(๋˜๋Š” libtbodbc.sl)'๋งŒ ์žˆ์–ด๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ฐ ์„ค์น˜์˜ ํŽธ์˜์„ฑ์„ ์œ„ํ•˜์—ฌ Tibero ํด๋ผ์ด์–ธํŠธ ์„ค์น˜๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ Tibero ์„œ๋ฒ„๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด ๊ถŒํ•œ ์„ค์ •์„ ํ•œ ํ›„ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ„๋„๋กœ Tibero ํด๋ผ์ด์–ธํŠธ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์—†์„ ๋•Œ Tibero ์„œ๋ฒ„ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๊ฐ€์ ธ๋‹ค๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •์„ ํ•ฉ๋‹ˆ๋‹ค. Alias ํ•ญ๋ชฉ์€ ํŽธ์˜์„ฑ์„ ์œ„ํ•˜์—ฌ ์„ค์ •ํ•œ ๋ถ€๋ถ„์œผ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

  • profile ์„ค์ •

  • tbdsn.tbr ์„ค์ • $TB_HOME/client/config/tbdsn.tbr ํŒŒ์ผ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    • ์„ค์ • ๋ฐฉ๋ฒ•

  • ์„ค์ • ์˜ˆ

  • Tibero ์ ‘์† ํ…Œ์ŠคํŠธ ๊ฐ ์„ค์ •์ด ์™„๋ฃŒ๋œ ํ›„ Alias๋ช…์œผ๋กœ ์ ‘์†ํ•ด์„œ ์„ค์ • ์ •๋ณด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ ‘์†์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ tbdsn.tbr ํŒŒ์ผ์˜ ์„ค์ • ์ •๋ณด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  1. tnsnames.ora ์„ค์ •

DB Link Object๋ฅผ ์ƒ์„ฑํ•˜๋Š” Oracle ์„œ๋ฒ„์—์„œ $ORACLE_HOME/network/admin/tnsnames.ora ํŒŒ์ผ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์„ค์ • ๋ฐฉ๋ฒ•

  • ์„ค์ • ์˜ˆ

  1. Listener ์„ค์ • ๋ฐ ๊ธฐ๋™ ํ•ด๋‹น ์„ค์ • ๋ฐ ๊ธฐ๋™์€ Gateway ์„œ๋ฒ„์— ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ณ„๋„๋กœ Oracle ์„œ๋ฒ„์™€ ๋ถ„๋ฆฌ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด Oracle ์„œ๋ฒ„์— ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • listener.ora ์„ค์ • $ORACLE_HOME/network/admin/listener.ora ํŒŒ์ผ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    • ์„ค์ • ๋ฐฉ๋ฒ•

  • ์„ค์ • ์˜ˆ

  • Listener ๊ธฐ๋™ listener.ora์—์„œ ์„ค์ •ํ•œ LISTENER_NAME์œผ๋กœ ๊ธฐ๋™, ์ข…๋ฃŒ, ์ƒํƒœ ์ •๋ณด ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

- ๊ธฐ๋™ Oracle to Tibero DB Link๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ Listener๋ฅผ ๊ธฐ๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ LISTENER_NAME์ด LTIBERO์ผ ๊ฒฝ์šฐ Listener ๊ธฐ๋™ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์€ Listening ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•˜๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ 1522์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

- ์ข…๋ฃŒ

- ์ƒํƒœ ์ •๋ณด

  • tnsping ํ™•์ธ Listener๊นŒ์ง€ ๊ธฐ๋™์„ ํ–ˆ๋‹ค๋ฉด tnsping์„ ์ด์šฉํ•˜์—ฌ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. tnsnames.ora๋ฅผ ์„ค์ •ํ•œ Oracle์„œ๋ฒ„์—์„œ ํ™•์ธํ•˜๋ฉฐ ํ•ด๋‹น ํŒŒ์ผ์˜ Alias ์ด๋ฆ„์„ ์ด์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ tnsping์œผ๋กœ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์€ tnsping์„ ์‹คํ–‰ํ•œ ์˜ˆ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด tnsnames.ora์—์„œ ์„ค์ •ํ•œ Alias ์ด๋ฆ„์ด tibero์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Oracle Gateway ํ™˜๊ฒฝ์„ค์ • (init{DSN}.ora)

Gateway ์„œ๋ฒ„์— ์„ค์ •ํ•˜๊ณ  '$ORACLE_HOME/hs/admin' ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์˜ inithsodbc.ora ๋˜๋Š” initdg4odbc.ora ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜์—ฌ init{DSN}.ora ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์„ค์ • ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

  • Oracle Gateway ํ™˜๊ฒฝ์„ค์ • ํ•ญ๋ชฉ

  • Oracle Gateway ํ™˜๊ฒฝ๋ณ€์ˆ˜

  1. DB Link ์ƒ์„ฑ ๋ฐ ํ™•์ธ

  • DB Link ์ƒ์„ฑ ๋ฐฉ๋ฒ•

Link๋ฅผ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ ๊ถŒํ•œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

  • DB Link ์ƒ์„ฑ ์˜ˆ

  • DB Link ํ™•์ธ ์˜ˆ DB Link ์ƒ์„ฑ ํ›„ ํ™•์ธ์„ ํ•˜๋Š” ๊ฒฝ์šฐ select ๋ฌธ์— 'Table๋ช…@< DB Link๋ช… >'์œผ๋กœ ์„ค์ •ํ•˜๋ฉด DB Link๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • sqlplus์— ์ ‘์†ํ•˜์—ฌ Tibero ํ…Œ์ด๋ธ” ์กฐํšŒ ๋ฐ ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ์˜ˆ

Tibero ์—์„œ test ํ…Œ์ด๋ธ” ์ƒ์„ฑ

sqlplus ์ ‘์†ํ•˜์—ฌ Tibero์˜ test ํ…Œ์ด๋ธ” ์กฐํšŒ ๋ฐ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…

๋ณธ ์ ˆ์—์„œ๋Š” UNIX ๊ณ„์—ด(Linux ํฌํ•จ)์—์„œ iodbc ์„ค์น˜ ๋ฐ ์—ฐ๋™ํ•˜๋Š” ๊ณผ์ •์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

UNIX ๊ณ„์—ด์˜ ๊ฒฝ์šฐ, ODBC Manager๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ iodbc ๋˜๋Š” UNIX ODBC๋ฅผ ๋ณ„๋„๋กœ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ODBC Manager๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

  1. Driver Manager ์„ค์น˜

  2. profile ์„ค์ •

  3. tnsnames.ora ์„ค์ •(UNIX ๊ณ„์—ด ์ฐธ๊ณ )

  4. ODBC ํ™˜๊ฒฝ ํŒŒ์ผ ์„ค์ • ๋ฐ ํ™•์ธ

๊ฐ ๊ณผ์ •์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ์„ค๋ช…์€ ํ•ด๋‹น ์ ˆ์˜ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

  1. Driver Manager ์„ค์น˜ ๋‹ค์Œ์€ Driver Manager๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

1) ๋‹ค์šด๋กœ๋“œ

์—์„œ ๋‹ค์šด๋กœ๋“œ ํ›„ ์„ค์น˜๋ฅผ ์›ํ•˜๋Š” ์„œ๋ฒ„์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ libiodbc-3.52.7.tar.gz ์†Œ์ŠคํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์•„ ์„œ๋ฒ„์— ์„ค์น˜ํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ, tar ์˜ต์…˜์˜ xvzf๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋จผ์ € gunzip์œผ๋กœ ์••์ถ•์„ ํ•ด์ œํ•œ ํ›„ tar -xvf ์˜ต์…˜์œผ๋กœ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

2) iodbc ์„ค์น˜

tar.gz ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ธฐ๋ณธ์ ์ธ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

์„ค์น˜ ์ „ ์‚ฌ์ „ํ™˜๊ฒฝ ์ ๊ฒ€์—์„œ prefix๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ /usr/local ์•„๋ž˜์— ์„ค์น˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ง€์ •ํ•˜์—ฌ ์„ค์น˜ํ•˜๊ณ , ์ปดํŒŒ์ผ ๋ฐ ์„ค์น˜ ์ž‘์—…์„ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•  ๊ฒฝ์šฐ make clean ์ดํ›„์— ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

a) '$HOME/iodbc' ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์„ค์น˜ ์ „ ์‚ฌ์ „ํ™˜๊ฒฝ ์ ๊ฒ€์„ ํ•ฉ๋‹ˆ๋‹ค.

b) ์ ๊ฒ€ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฌธ์ œ ์—†์œผ๋ฉด ์ปดํŒŒ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค.

c) ์ปดํŒŒ์ผ๋œ ํŒŒ์ผ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

3) ์„ค์น˜ ํ™•์ธ

์„ค์น˜๋œ ์„œ๋ฒ„์— ์›ํ•˜๋Š” bit๋กœ ์„ค์น˜๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • OS์— ๋”ฐ๋ผ 64bit ์„œ๋ฒ„์— 32bit๋กœ ์„ค์น˜๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ file ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ, ODBC Manager๊ฐ€ 64bit๋กœ ์„ค์น˜๋๋‹ค๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Tibero ODBC ์—ญ์‹œ 64bit์—ฌ์•ผ ํ•˜๋ฉฐ ์žฌ์„ค์น˜๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ make clean ์ดํ›„์— ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • Linux

a. ์‚ฌ์ „ ํ™˜๊ฒฝ ์ ๊ฒ€

b. ์ปดํŒŒ์ผ

c) ์„ค์น˜

d) ์„ค์น˜ ํ™•์ธ

  • AIX

a) ์‚ฌ์ „ ํ™˜๊ฒฝ ์ ๊ฒ€

b) ์ปดํŒŒ์ผ

c) ์„ค์น˜

d) ์„ค์น˜ ํ™•์ธ

  1. profile ์„ค์ •

profile ๋‚ด์— ์•„๋ž˜์™€ ๊ฐ™์€ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. IODBC_HOME์˜ ๊ฒฝ์šฐ iodbc๋ฅผ ์„ค์น˜ํ•œ ์œ„์น˜๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  1. ODBC ํ™˜๊ฒฝ ํŒŒ์ผ ์„ค์ • ๋ฐ ํ™•์ธ

ODBC Driver Manager์˜ ํ™˜๊ฒฝ ํŒŒ์ผ์— Tibero ODBC Driver๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ ์ „์— Tibero ํด๋ผ์ด์–ธํŠธ ๋˜๋Š” ์„œ๋ฒ„์˜ ์„ค์น˜ ๋ฐ ๊ด€๋ จ ํ™˜๊ฒฝ์„ค์ •์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1) ํ™˜๊ฒฝ ํŒŒ์ผ ์œ„์น˜ ๋ฐ ์ด๋ฆ„ ์„ค์ •

$HOME/.odbc.ini(๊ฐœ์ธ ์„ค์ •) ๋˜๋Š” /etc/odbc.ini(๊ณตํ†ต ์„ค์ •)์œผ๋กœ ์„ค์ • ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„๋Š”$HOME/.odbc.ini(๊ฐœ์ธ ์„ค์ •)์ด ๋†’์Šต๋‹ˆ๋‹ค.

  • ODBC ํ™˜๊ฒฝ ํŒŒ์ผ ์„ค์ • ๋ฐฉ๋ฒ•

  • ODBC ํ™˜๊ฒฝ ํŒŒ์ผ ์„ค์ • ์˜ˆ

2) ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ

'$IODBC_HOME/bin' ํด๋”์— ์žˆ๋Š” iodbctest๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ODBC ํ™˜๊ฒฝ ํŒŒ์ผ ์ด๋ฆ„ ๋ฐ ์œ„์น˜์™€ ์„ค์ •์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ iodbctest๋ฅผ ์ด์šฉํ•œ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ ์„ค์ • ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์€ iodbctest๋ฅผ ์ด์š”ํ•œ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ ์˜ˆ์ž…๋‹ˆ๋‹ค.

  1. Oracle Gateway ํ™˜๊ฒฝ์„ค์ • (init{DSN}.ora)

HS_FDS_CONNECT_INFO, HS_FDS_SHAREABLE_NAME์— ODBC Driver ๊ด€๋ จ ์„ค์ •์„ ํ•ฉ๋‹ˆ๋‹ค.

Oracle to Tibero DB Link ์„ค์ • ๋ฐ ์‚ฌ์šฉํ•  ๋•Œ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Oracle ์บ๋ฆญํ„ฐ ์…‹์ด AL32UTF8์ผ ๊ฒฝ์šฐ

DB Link Object๋ฅผ ์ƒ์„ฑํ•˜๋Š” Oracle ์„œ๋ฒ„์˜ ์บ๋ฆญํ„ฐ ์…‹์ด AL32UTF8์ผ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. Gateway ์„œ๋ฒ„๊ฐ€UNIX ๊ณ„์—ด์ผ ๋•Œ ๋ฐœ์ƒํ•˜๋ฉฐ Windows ๊ณ„์—ด์€ ํ•ด๋‹นํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ํ•ด๋‹น ๋ฌธ์ œ์˜ ํ˜„์ƒ๊ณผ ํ•ด๊ฒฐ๋ฐฉ์•ˆ์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

  • ํ˜„์ƒ Oracle ์„œ๋ฒ„์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ํ•ด๊ฒฐ๋ฐฉ์•ˆ Oracle Gateway ํŒŒ์ผ์ธ init{DSN}.ora ํŒŒ์ผ์— HS_LANGUAGE ์„ค์ •์„ ํ†ตํ•ด ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์„ค์ •๊ฐ’์€ ์‚ฌ์ดํŠธ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•œ ํ›„์— ์žฌ์ ‘์† ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

DB ์šด์˜์ž์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ„ DB Link์— ๋Œ€ํ•ด ์‚ฌ์šฉํ˜„ํ™ฉ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๊ฐœ๋ฐœ, ์‹œ์Šคํ…œ ์šด์˜, ๋„คํŠธ์›Œํฌ, DB ์—…๋ฌด ๋‹ด๋‹น์ž๊ฐ„ ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • Long Type, CLOB, BLOB ํƒ€์ž…์„ Link๋ฅผ ํ†ตํ•ด DML ์ž‘์—…ํ•  ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • < ์ ‘์†์— ์‚ฌ์šฉํ•  alias >

    Source DB์˜ tbdsn.tbr์— ์„ค์ •๋œ Alias ์ด๋ฆ„์ด๋‹ค.

    Oracle ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ Oracle ์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด DB Link ์—ญ์‹œ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    insert into (dblink) ~ select from (local)
  • Multi Threaded Agent๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • DB Link๋ฅผ ํ†ตํ•œ UDF(User Defined Function) ์‚ฌ์šฉ์€ PSM(=PL/SQL) ๋‚ด๋ถ€์—์„œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    • Select ์ ˆ์— ์ง์ ‘์ ์œผ๋กœ DB Link๋ฅผ ํ†ตํ•œ UDF ์‚ฌ์šฉ์€ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    • PSM(=PL/SQL) ๋‚ด๋ถ€์—์„œ DB Link UDF๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ•ด๋‹น PSM์„ Select ์ ˆ์—์„œ ๊ฐ„์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ๋Š” ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • Gateway ํ™˜๊ฒฝ์„ค์ •(๊ณตํ†ต)

  • DB Link ์ƒ์„ฑ ๋ฐ ํ™•์ธ

  • MAX_LOG_BAKCUP_SIZE

    ๋ฐฑ์—… ํด๋”์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

    ๋ฐฑ์—… ํด๋”์˜ ํฌ๊ธฐ๊ฐ€ MAX_LOG_BACKUP_SIZE๋ณด๋‹ค ์ปค์ง€๋ฉด ์˜ค๋ž˜๋œ ํŒŒ ์ผ ์ˆœ์œผ๋กœ ์•ฝ 1/3 ๊ฐ€๋Ÿ‰์˜ ๋ฐฑ์—… ํŒŒ์ผ์ด ์‚ญ์ œ๋œ๋‹ค.

    ๋ฐฑ์—…์ด ์ด๋ฃจ์–ด์ง€๋Š” ์‹œ์ ์€ 2๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

    • ๋กœ๊ทธ๋ฅผ ์“ฐ๋ ค ํ•  ๋•Œ ์“ฐ๊ณ  ์žˆ๋˜ ๋กœ๊ทธ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ MAX_LOG_SIZE๋ณด ๋‹ค ํฌ๋‹ค๋Š” ๊ฒƒ์ด ๊ฐ์ง€๋  ๋•Œ

    • ๋กœ๊ทธ ํŒŒ์ผ์„ ์“ฐ๋˜ ์„ธ์…˜์ด ์ข…๋ฃŒ๋  ๋•Œ

    FETCH_SIZE

    fetch์ผ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์ด์ฆˆ๋กœ ์ตœ๋Œ€ 64KB์ด๋‹ค. (๊ธฐ๋ณธ๊ฐ’ : 32K)

    ๋Œ€์šฉ๋Ÿ‰ fetch์ผ ๊ฒฝ์šฐ ์„ค์ •๊ฐ’์„ ๋†’์ด๋ฉด ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

    SKIP_CHAR_CONV

    ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด๋‹น ์„ค์ •์€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ํŠน์ˆ˜ํ•œ ์ƒํ™ฉ(US7ASCII ์บ ๋ฆญํ„ฐ ์…‹์— ํ•œ๊ธ€์ด ๋“ค์–ด์žˆ๋Š” ๊ฒฝ์šฐ)์—๋งŒ ์ ์šฉํ•œ๋‹ค.

    • Y : Gateway๊ฐ€ Oracle๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ๋•Œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ NLS_LANG์„ ์‚ฌ์šฉํ•˜๊ณ  ์ „๋‹ฌ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ Tibero ์„œ๋ฒ„์— ๋ณด ๋‚ธ๋‹ค.

    • N : Tibero์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์บ๋ฆญํ„ฐ ์…‹์— ๋งž์ถ”์–ด Oracle ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ ์š”์ฒญ์„ ํ•œ๋‹ค. ์ด๋Ÿด๊ฒฝ์šฐ Oracle์—์„œ ํ•ด๋‹น ์บ๋ฆญํ„ฐ ์…‹์— ๋งž๊ฒŒ ์ฒ˜๋ฆฌํ•˜์—ฌ Gateway๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ๋‹ค. (๊ธฐ๋ณธ๊ฐ’)

    MAX_LOG_SIZE

    ๋กœ๊ทธ ํŒŒ์ผ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•œ๋‹ค. (๋‹จ์œ„ : Byte)

    Gateway ํ™˜๊ฒฝ์„ค์ •(UNIX ๊ณ„์—ด ์ฐธ๊ณ )

  • DB Link ์ƒ์„ฑ ๋ฐ ํ™•์ธ(UNIX ๊ณ„์—ด ์ฐธ๊ณ )

  • Cannot participate in distributed transactions
  • they support single-sitetransactions only.Gateways are an integral component of the overall hetero geneous connectivity solution. Specifically, they provide: SQL and Data Dictionary Translation infor mation

  • Datatype Translation

  • Callback link is not supported

  • tbdsn.tbr๋กœ Tibero ์„œ๋ฒ„๋ฅผ ์ฐพ๋Š”๋‹ค.

    Oracle Gateway ํ™˜๊ฒฝ์„ค์ •(init<DSN>.ora)

  • DB Link ์ƒ์„ฑ ๋ฐ ํ™•์ธ

  • DB_NAME

    DB Link์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” Tibero ์„œ๋ฒ„์˜ ์ ‘์† DB_NAME ์ •๋ณด์ด๋‹ค.

    HS

    OK๋กœ ์„ค์ •ํ•œ๋‹ค.

    ORACLE_HOME

    Gateway ์„œ๋ฒ„์— ์„ค์น˜๋œ Oracle ํ™ˆ ์ฃผ์†Œ์ด๋‹ค.

    PROGRAM

    • dg4odbc : Gateway ์„œ๋ฒ„๊ฐ€ Oracle 11g์ด์ƒ์ผ ๋•Œ ์„ค์ •ํ•œ๋‹ค.

    • hsodbc : Gateway ์„œ๋ฒ„๊ฐ€ Oracle 10g์ผ ๋•Œ ์„ค์ •ํ•œ๋‹ค.

    HS_LANGUAGE

    Gateway์˜ ์บ๋ฆญํ„ฐ ์…‹์„ ์„ค์ •ํ•œ๋‹ค. ๋ฏธ์„ค์ •์ผ ๋•Œ Listener๋ฅผ ๊ธฐ๋™ ํ•˜๋ฉด ์ ์šฉ๋œ NLS_LANG์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๋”ฐ๋ฅธ๋‹ค. (์„ ํƒ)

    Oracle Gateway ํ™˜๊ฒฝ์„ค์ •(init<DSN>.ora)

  • DB Link ์ƒ์„ฑ ๋ฐ ํ™•์ธ(UNIX ๊ณ„์—ด ์ฐธ๊ณ )

  • SID

    Tibero ํด๋ผ์ด์–ธํŠธ ๋˜๋Š” ์„œ๋ฒ„์˜ tbdsn.tbr ํŒŒ์ผ์— ์„ค์ •ํ•œ Alias ์ • ๋ณด์ด๋‹ค.

    User

    ์‚ฌ์šฉ์ž๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

    ํ…Œ์ŠคํŠธ ๋ฐ ๋งํฌ ์ƒ์„ฑ์˜ ๊ฒฝ์šฐ ๋ณ„๋„๋กœ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ€์ ธ๊ฐ€๋ฏ€๋กœ ํฌ๊ฒŒ ์˜ ๋ฏธ๋Š” ์—†๋‹ค.

    Password

    ์‚ฌ์šฉ์ž ํŒจ์Šค์›Œ๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ๋ฐ ๋งํฌ ์ƒ์„ฑ์˜ ๊ฒฝ์šฐ ๋ณ„๋„๋กœ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ€์ ธ๊ฐ€๋ฏ€๋กœ ํฌ๊ฒŒ ์˜๋ฏธ๋Š” ์—†๋‹ค.

    # Tibero_B ์ •๋ณด
    tibero=(
        (INSTANCE=(HOST=localhost)
                  (PORT=5555)
                  (DB_NAME=tibero)
              )
    )
    
    # ์ ‘์†ํ•  Tibero_A์˜ ์ •๋ณด ์ถ”๊ฐ€ ์„ค์ •
    tibero_a=(
              (INSTANCE=(HOST=192.168.1.121) 
                        (PORT=4444)
                        (DB_NAME=tibero)
              )
    )
    $ tbsql sys/tibero@tibero_a
    
    tbSQL 7
    
    TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
    
    Connected to Tibero using tibero_a.
    SQL> select * from v$instance;
    
    INSTANCE_NUMBER     INSTANCE_NAME     DB_NAME    HOST_NAME    PARALLEL    THREAD# VERSION    
    STARTUP_TIME STATUS      SHUTDOWN_PENDING TIP_FILE
    -----------------    ------------    ----------    ---------    -------    ----------------
    ---------------------    ----------------------------------
            0 tibero       tibero        dqa-optane1        NO        0 7
    2023/06/12        NORMAL        NO
    /hdd/home/sampler22/tibero7/config/tibero.tip
    
    
    1 row selected.
    SQL> create database link < DB LINK๋ช… > connect to < ์ ‘์† ์‚ฌ์šฉ์ž ID > identified by < ์ ‘์† ํŒจ์Šค์›Œ๋“œ >
        2 using < ์ ‘์†์— ์‚ฌ์šฉํ•  alias >;

    ํ•ญ๋ชฉ

    ์„ค๋ช…

    < DB LINK๋ช… >

    ์ƒ์„ฑํ•  DB Link Object ์ด๋ฆ„์ด๋‹ค.

    < ์ ‘์† ์‚ฌ์šฉ์ž ID >

    ๋Œ€์ƒ DB ์„œ๋ฒ„์— ์ ‘์†ํ•  ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด๋‹ค.

    < ์ ‘์† ํŒจ์Šค์›Œ๋“œ >

    ๋Œ€์ƒ DB ์„œ๋ฒ„์— ์ ‘์†ํ•  ํŒจ์Šค์›Œ๋“œ์ด๋‹ค.

    $ tbsql tibero/tmax
    
    tbSQL 7
    
    TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
    
    Connected to Tibero.
    
    SQL> create database link T7LINK connect to tibero identified by 'tmax'
        2 using 'tibero_a';
    
    Database Link 'T7LINK' created.
    SQL> CONN tibero/tmax 
    Connected to Tibero.
    
    SQL> ls
    
    
    NAME		                    SUBNAME		  TYPE
    --------------------------------    ------------------    -------------------
    T7LINK			                                  DATABASE LINK	
    
    SQL> select * from dual@T7LINK;
    
    
    DUMMY				
    -------
    X				
    
    1 row selected.
    SQL> select * from user_db_links;
    
    OWNER    DB_LINK   USERNAME  HOST      CREATED
    -------  --------  --------  -----     ----------
    TIBERO   T7LINK	   TIBERO    tibero_a  2023/06/14	
    
    1 row selected.		
    $TBGW_HOME
        +-- < DBMS Vender๋ช… >
            |-- config
                |-- tbgw.cfg
            |-- log
                |-- Log File
    [/yuha/t7/gateway]$ cd $TBGW_HOME 
    [/yuha/t7/gateway]$ pwd
    /yuha/t7/gateway
    [/yuha/t7/gateway]$ tree -F
    .
    โ”œโ”€โ”€ gw4orcl*
    โ””โ”€โ”€ oracle/
        โ”œโ”€โ”€ config/
        โ””โ”€โ”€ log/
    
    3 directories, 1 file

    ํŒŒ์ผ

    ์„ค๋ช…

    tbgw.cfg

    Gateway ์„ค์ • ํŒŒ์ผ๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ Gateway์™€ ๊ด€๋ จ๋œ ์„ค์ •๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ ์ƒ์„ฑํ•œ๋‹ค.

    Tibero ๋ฒ„์ „

    OS

    ์œ„์น˜ ๋ฐ ํŒŒ์ผ๋ช…

    Tibero 7

    Unix ๊ณ„์—ด

    $TB_HOME/client/bin/gw4orcl

    export TBGW_HOME=$TB_HOME/client/gateway 
    export ORACLE_HOME=<Oracle Home>
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH 
    export ORACLE_SID=<Oracle SID>
    export PATH=$ORACLE_HOME/bin:$PATH
    # Gateway for Oracle 19c
    export TBGW_HOME=/yuha/t7/gateway
    export ORACLE_HOME=/yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1 
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
    export ORACLE_SID=oracle19
    export PATH=$ORACLE_HOME/bin:$PATH
    chmod o+rx $HOME
    chmod o+rx $ORACLE_HOME 
    chmod o+rx $ORACLE_HOME/lib 
    chmod o+r $ORACLE_HOME/lib/* 
    chmod o+rx $ORACLE_HOME/bin
    chmod o+rx $ORACLE_HOME/bin/sqlplus 
    chmod o+x $ORACLE_HOME/network
    chmod o+x $ORACLE_HOME/network/admin
    chmod o+r $ORACLE_HOME/network/admin/tnsnames.ora
    $ mkdir $TBGW_HOME
    $ cp <Gateway Binary๋ช…> $TBGW_HOME/gw4orcl
    $ chmod u+x $TBGW_HOME/gw4orcl
    $ mkdir $TBGW_HOME
    $ cp $TB_HOME/client/bin/gw4orcl $TBGW_HOME/gw4orcl
    $ chmod u+x $TBGW_HOME/gw4orcl
    
    $ cd $TBGW_HOME
    
    $ ls 
    gw4orcl
    $ ldd gw4orcl
        linux-vdso.so.1 => (0x00007fff1e1ee000) 
        libclntsh.so.19.1 =>
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/lib/libclntsh.so.19.1
    (0x00007f3c88537000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f3c88333000) 
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3c88117000) 
        libm.so.6 => /lib64/libm.so.6 (0x00007f3c87e15000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f3c87a47000) 
        libnnz19.so =>
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/lib/libnnz19.so
    (0x00007f3c872ff000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f3c870e5000) 
        librt.so.1 => /lib64/librt.so.1 (0x00007f3c86edd000) 
        libaio.so.1 => /lib64/libaio.so.1 (0x00007f3c86cdb000) 
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f3c86ac1000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f3c8c545000) 
        libclntshcore.so.19.1 =>
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/lib/libclntshcore.so.19.1 
    (0x00007f3c86521000)
    <Gateway 
        Alias๋ช…>=( (GATEWAY=
            (PROGRAM=<Gateway Binary ๊ฒฝ๋กœ ๋ฐ ํŒŒ์ผ๋ช…>)
            (TARGET=<tnsnames.ora์— ์„ค์ •๋œ Alias>) 
            (TX_MODE={GLOBAL | LOCAL})
        )
    )

    ํ•ญ๋ชฉ

    ์„ค๋ช…

    PROGRAM

    Gateway ๋ฐ”์ด๋„ˆ๋ฆฌ(gw4orcl)์˜ ๊ฒฝ๋กœ๋ฅผ ๋ฐ˜๋“œ์‹œ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ์ž…๋ ฅํ•œ๋‹ค.

    TARGET

    Oracle ํด๋ผ์ด์–ธํŠธ์˜ tnsnames.ora์— ์„ค์ •ํ•œ Alias ์ด๋ฆ„์œผ๋กœ ๋Œ€์†Œ๋ฌธ์ž ์ˆ˜์ค€๊นŒ์ง€ ์ผ์น˜ํ•ด์•ผ ํ•˜๋ฉฐ, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋กœ sqlplus๋ฅผ ์ด์šฉํ•ด ํ•ด๋‹น Alias๋กœ ์ ‘์†์ด ๋˜๋Š”์ง€ ํ™•์ธํ•œ ๋‹ค.

    TX_MODE

    ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ๊ธ€๋กœ๋ฒŒ ํŠธ๋žœ์žญ์…˜(Global Transaction)๊ณผ ๋กœ์ปฌ ํŠธ๋žœ์žญ์…˜(Local Transaction) ์ค‘์—์„œ ์„ค์ •ํ•œ๋‹ค. Commit์„ ์š”์ฒญํ•  ๊ฒฝ์šฐ ๊ธ€๋กœ๋ฒŒ ํŠธ๋žœ์žญ์…˜๋งŒ Two- phaseCommit์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

    TX_MODE์˜ ๊ฐ’์€ ์ฒ˜๋ฆฌ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • GLOBAL : ๊ธ€๋กœ๋ฒŒ ํŠธ๋žœ์žญ์…˜์ธ ๊ฒฝ์šฐ ์„ค์ •๊ฐ’์ด๋‹ค.

    • LOCAL : ๋กœ์ปฌ ํŠธ๋žœ์žญ์…˜์ธ ๊ฒฝ์šฐ ์„ค์ •๊ฐ’์ด๋‹ค.

    [/yuha/t7/tibero7/client/config]$ sqlplus tibero/tmax@ORCL
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jun 14 14:56:07 2023
    Version 19.3.0.0.0
    
    Copyright (c) 1982, 2019, Oracle. All rights reserved.
    
    Last Successful login time: Wed Jun 14 2023 14:55:11 +09:00
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production 
    Version 19.3.0.0.0
    
    SQL>
    # gateway for oracle 
    # local
    gw_local=(
            (GATEWAY=
                    (PROGRAM=/yuha/t7/gateway/gw4orcl) 
                    (TARGET=ORCL)
                    (TX_MODE=GLOBAL)
            )
    )
    LOG_DIR = <log-dir> 
    LOG_LVL = <log_lvl>
    MAX_LOG_SIZE = <max-log-size> 
    MAX_LOG_BAKCUP_SIZE = <max-log-backup-size> 
    FETCH_SIZE = <fetch-size>
    SKIP_CHAR_CONV = <skip-char-conv>

    ํ•ญ๋ชฉ

    ์„ค๋ช…

    LOG_DIR

    ๋กœ๊ทธ๊ฐ€ ์ƒ์„ฑ๋  ๋””๋ ‰ํ„ฐ๋ฆฌ์ด๋‹ค. (๊ธฐ๋ณธ๊ฐ’: $TBGW_HOME์˜ log ํด๋”)

    LOG_LVL

    ๋กœ๊ทธ๋ ˆ๋ฒจ์„ ์„ค์ •ํ•œ๋‹ค. (๊ธฐ๋ณธ๊ฐ’ : 2)

    0-6 ๊นŒ์ง€ ์„ค์ • ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋†’์„์ˆ˜๋ก ๋งŽ์€ ๋กœ๊ทธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

    • ์šด์˜์ธ ๊ฒฝ์šฐ : 1 ๋˜๋Š” 2๋ฅผ ์„ค์ •ํ•œ๋‹ค.

    • ๋ฌธ์ œ ๋Œ€์‘์ธ ๊ฒฝ์šฐ : 5 ๋˜๋Š” 6์„ ์„ค์ •ํ•œ๋‹ค.

    MAX_LOG_SIZE

    ๋กœ๊ทธ ํŒŒ์ผ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•œ๋‹ค. (๋‹จ์œ„ : Byte)

    $ cd $TBGW_HOME/oracle/config
    
    $ vi tbgw.cfg 
    LOG_DIR=/yuha/t7/gateway/oracle/log 
    LOG_LVL=2
    MAX_LOG_SIZE=502400000
    create database link <DB Link๋ช…> connect to <user๋ช…> identified by '<password>' 
    using '<Network Alias๋ช…>';
    GRANT CREATE DATABASE LINK TO USER_NAME;
    GRANT CREATE PUBLIC DATABASE LINK TO USER_NAME;
    $ tbsql tibero/tmax
    
    tbSQL 7
    
    TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
    
    Connected to Tibero.
    
    SQL> create database link T7LINK connect to tibero identified by 'tmax'
        2 using 'gw_local';
        
    Database Link 'T7LINK' created.
    $ tbsql tibero/tmax
    
    tbSQL 7
    
    TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
    
    
    Connected to Tibero.
    SQL> select * from dual@T7LINK;
    
    DUMMY
    -------
    X
    
    1 row selected.
    $ sqlplus tibero/tmax
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jun 14 16:01:10 2023
    Version 19.3.0.0.0
    
    Copyright (c) 1982, 2019, Oracle. All rights reserved.
    
    Last Successful login time: Wed Jun 14 2023 15:58:11 +09:00
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production 
    Version 19.3.0.0.0
    
    SQL> create table test(c1 number);
    
    Table created.
    
    SQL> insert into test values(100);
    
    1 row created.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> select * from test;
    
            C1
    ------------
            100
    $ tbsql tibero/tmax
    
    tbSQL 7
    
    TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
    
    Connected to Tibero.
    
    SQL> select * from test@T7LINK;
    
        C1
    --------
        100
        
    1 row selected.
    
    SQL> insert into test@T7LINK values(200);
    
    row inserted.
    
    SQL> commit;
    
    Commit completed.
    
    SQL> select * from test@T7LINK;
    
        C1
    --------
        100
        200
        
    2 rows selected.
    export TBGW_HOME=$TB_HOME/client/gateway 
    export ORACLE_HOME=<Oracle Home>
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH 
    export ORACLE_SID=<Oracle SID>
    export PATH=$ORACLE_HOME/bin:$PATH
    # Gateway for Oracle 19c
    export TBGW_HOME=/yuha/t7/gateway
    export ORACLE_HOME=/yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1 
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
    export ORACLE_SID=oracle19
    export PATH=$ORACLE_HOME/bin:$PATH
    chmod o+rx $HOME
    chmod o+rx $ORACLE_HOME 
    chmod o+rx $ORACLE_HOME/lib 
    chmod o+r $ORACLE_HOME/lib/* 
    chmod o+rx $ORACLE_HOME/bin
    chmod o+rx $ORACLE_HOME/bin/sqlplus 
    chmod o+x $ORACLE_HOME/network
    chmod o+x $ORACLE_HOME/network/admin
    chmod o+r $ORACLE_HOME/network/admin/tnsnames.ora
    $ mkdir $TBGW_HOME
    $ cp <Gateway Binary๋ช…> $TBGW_HOME/gw4orcl
    $ chmod u+x $TBGW_HOME/gw4orcl
    $ mkdir $TBGW_HOME
    $ cp $TB_HOME/client/bin/gw4orcl $TBGW_HOME/gw4orcl
    $ chmod u+x $TBGW_HOME/gw4orcl
    
    $ cd $TBGW_HOME
    
    $ ls 
    gw4orcl
    $ ldd gw4orcl
            linux-vdso.so.1 => (0x00007fff1e1ee000) 
            libclntsh.so.19.1 =>
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/lib/libclntsh.so.19.1 
    (0x00007f3c88537000)
            libdl.so.2 => /lib64/libdl.so.2 (0x00007f3c88333000) 
            libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3c88117000) 
            libm.so.6 => /lib64/libm.so.6 (0x00007f3c87e15000)
            libc.so.6 => /lib64/libc.so.6 (0x00007f3c87a47000) 
            libnnz19.so =>
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/lib/libnnz19.so 
    (0x00007f3c872ff000)
            libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f3c870e5000) 
            librt.so.1 => /lib64/librt.so.1 (0x00007f3c86edd000) 
            libaio.so.1 => /lib64/libaio.so.1 (0x00007f3c86cdb000) 
            libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f3c86ac1000)
            /lib64/ld-linux-x86-64.so.2 (0x00007f3c8c545000)
            libclntshcore.so.19.1 =>
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/lib/libclntshcore.so.19.1 
    (0x00007f3c86521000)
    <Gateway 
        Alias๋ช…>=( (GATEWAY=
            (LISTENER=
                (HOST=<Gateway IP>) 
                (PORT=<Gateway PORT>)
            )
            (TARGET=<tnsnames.ora์— ์„ค์ •๋œ Alias>) 
            (TX_MODE= {GLOBAL | LOCAL })
        )
    )

    ํ•ญ๋ชฉ

    ์„ค๋ช…

    LISTENER

    Listener๊ฐ€ ๊ธฐ๋™๋˜์–ด ์žˆ๋Š” ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

    • HOST : Gateway๊ฐ€ ๊ธฐ๋™๋˜์–ด ์žˆ๋Š” ์„œ๋ฒ„ IP ์ฃผ์†Œ์ด๋‹ค.

    • PORT : Gateway๊ฐ€ Listening ํ•˜๋Š” ํฌํŠธ ๋ฒˆํ˜ธ์ด๋‹ค. (๊ธฐ๋ณธ๊ฐ’ : 9999)

    TARGET

    Oracle ํด๋ผ์ด์–ธํŠธ์˜ tnsnames.ora์— ์„ค์ •ํ•œ Alias ์ด๋ฆ„์œผ๋กœ ๋Œ€์†Œ๋ฌธ์ž ์ˆ˜์ค€๊นŒ์ง€ ์ผ ์น˜ํ•ด์•ผ ํ•˜๋ฉฐ, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋กœ sqlplus๋ฅผ ์ด์šฉํ•ด ํ•ด๋‹น Alias๋กœ ์ ‘์†์ด ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

    TX_MODE

    ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ๊ธ€๋กœ๋ฒŒ ํŠธ๋žœ์žญ์…˜(Global Transaction)๊ณผ ๋กœ์ปฌ ํŠธ๋žœ์žญ์…˜(Local Transaction) ์ค‘์—์„œ ์„ค์ •ํ•œ๋‹ค. Commit์„ ์š”์ฒญํ•  ๊ฒฝ์šฐ ๊ธ€๋กœ๋ฒŒ ํŠธ๋žœ์žญ์…˜๋งŒ Two- phaseCommit์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

    TX_MODE์˜ ๊ฐ’์€ ์ฒ˜๋ฆฌ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • GLOBAL : ๊ธ€๋กœ๋ฒŒ ํŠธ๋žœ์žญ์…˜์ธ ๊ฒฝ์šฐ ์„ค์ •๊ฐ’์ด๋‹ค.

    • LOCAL : ๋กœ์ปฌ ํŠธ๋žœ์žญ์…˜์ธ ๊ฒฝ์šฐ ์„ค์ •๊ฐ’์ด๋‹ค.

    [/yuha/t7/tibero7/client/config]$ sqlplus tibero/tmax@ORCL
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jun 14 14:56:07 2023
    Version 19.3.0.0.0
    
    Copyright (c) 1982, 2019, Oracle. All rights reserved.
    Last Successful login time: Wed Jun 14 2023 14:55:11 +09:00
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production 
    Version 19.3.0.0.0
    
    SQL>
    # gateway for oracle 
    # listener 
    gw_listen=(
            (GATEWAY=
                    (LISTENER=
                            (HOST=192.168.17.24) 
                            (PORT=9999)
                    ) 
                    (TARGET=ORCL)
                    (TX_MODE=GLOBAL)
            )
    )
    LISTENER_PORT = <port-no> 
    LOG_DIR = <log-dir> 
    LOG_LVL = <log_lvl>
    MAX_LOG_SIZE = <max-log-size> 
    MAX_LOG_BAKCUP_SIZE = <max-log-backup-size> 
    FETCH_SIZE = <fetch-size>
    SKIP_CHAR_CONV = <skip-char-conv>

    ํ•ญ๋ชฉ

    ์„ค๋ช…

    LISTENER_PORT

    Listening ํฌํŠธ ๋ฒˆํ˜ธ๋กœ ๋กœ์ปฌ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค. (๊ธฐ๋ณธ๊ฐ’ : 9999)

    LOG_DIR

    ๋กœ๊ทธ๊ฐ€ ์ƒ์„ฑ๋  ๋””๋ ‰ํ„ฐ๋ฆฌ์ด๋‹ค. (๊ธฐ๋ณธ๊ฐ’: $TBGW_HOME์˜ log ํด๋”)

    LOG_LVL

    ๋กœ๊ทธ๋ ˆ๋ฒจ์„ ์„ค์ •ํ•œ๋‹ค. (๊ธฐ๋ณธ๊ฐ’ : 2)

    0-6 ๊นŒ์ง€ ์„ค์ • ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋†’์„์ˆ˜๋ก ๋งŽ์€ ๋กœ๊ทธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

    • ์šด์˜์ธ ๊ฒฝ์šฐ : 1 ๋˜๋Š” 2๋ฅผ ์„ค์ •ํ•œ๋‹ค.

    • ๋ฌธ์ œ ๋Œ€์‘์ธ ๊ฒฝ์šฐ : 5 ๋˜๋Š” 6์„ ์„ค์ •ํ•œ๋‹ค.

    MAX_LOG_BAKCUP_SIZE

    ๋ฐฑ์—… ํด๋”์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

    ๋ฐฑ์—… ํด๋”์˜ ํฌ๊ธฐ๊ฐ€ MAX_LOG_BACKUP_SIZE๋ณด๋‹ค ์ปค์ง€๋ฉด ์˜ค๋ž˜๋œ ํŒŒ ์ผ ์ˆœ์œผ๋กœ ์•ฝ 1/3 ๊ฐ€๋Ÿ‰์˜ ๋ฐฑ์—… ํŒŒ์ผ์ด ์‚ญ์ œ๋œ๋‹ค.

    ๋ฐฑ์—…์ด ์ด๋ฃจ์–ด์ง€๋Š” ์‹œ์ ์€ 2๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

    • ๋กœ๊ทธ๋ฅผ ์“ฐ๋ ค ํ•  ๋•Œ ์“ฐ๊ณ  ์žˆ๋˜ ๋กœ๊ทธ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ MAX_LOG_SIZE๋ณด ๋‹ค ํฌ๋‹ค๋Š” ๊ฒƒ์ด ๊ฐ์ง€๋  ๋•Œ

    • ๋กœ๊ทธ ํŒŒ์ผ์„ ์“ฐ๋˜ ์„ธ์…˜์ด ์ข…๋ฃŒ๋  ๋•Œ

    FETCH_SIZE

    fetch์ผ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์ด์ฆˆ๋กœ ์ตœ๋Œ€ 64KB์ด๋‹ค. (๊ธฐ๋ณธ๊ฐ’ : 32K)

    ๋Œ€์šฉ๋Ÿ‰ fetch์ผ ๊ฒฝ์šฐ ์„ค์ •๊ฐ’์„ ๋†’์ด๋ฉด ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

    SKIP_CHAR_CONV

    ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด๋‹น ์„ค์ •์€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ํŠน์ˆ˜ํ•œ ์ƒํ™ฉ(US7ASCII ์บ ๋ฆญํ„ฐ ์…‹์— ํ•œ๊ธ€์ด ๋“ค์–ด์žˆ๋Š” ๊ฒฝ์šฐ)์—๋งŒ ์ ์šฉํ•œ๋‹ค.

    • Y : Gateway๊ฐ€ Oracle๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ๋•Œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ NLS_LANG์„ ์‚ฌ์šฉํ•˜๊ณ  ์ „๋‹ฌ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ Tibero ์„œ๋ฒ„์— ๋ณด ๋‚ธ๋‹ค.

    • N : Tibero์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์บ๋ฆญํ„ฐ ์…‹์— ๋งž์ถ”์–ด Oracle ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ ์š”์ฒญ์„ ํ•œ๋‹ค. ์ด๋Ÿด๊ฒฝ์šฐ Oracle์—์„œ ํ•ด๋‹น ์บ๋ฆญํ„ฐ ์…‹์— ๋งž๊ฒŒ ์ฒ˜๋ฆฌํ•˜์—ฌ Gateway๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ๋‹ค. (๊ธฐ๋ณธ๊ฐ’)

    $ cd $TBGW_HOME/oracle/config
    
    $ vi tbgw.cfg 
    LISTENER_PORT=9999
    LOG_DIR=/yuha/t7/gateway/oracle/log 
    LOG_LVL=2
    MAX_LOG_SIZE=502400000
    $ ./gw4orcl
    $ ps -ef |grep gw4orcl
    
    t7     15840 12233 0 15:35 pts/2  00:00:00 grep --color=auto gw4orcl
    
    $ ./gw4orcl
    
    $ ps -ef |grep gw4orcl
    t7    15844     1 1 15:35 ?        00:00:00 ./gw4orcl
    t7    15857 12233 0 15:35 pts/2    00:00:00 grep --color=auto gw4orcl
    $ netstat -na |grep 9999
    tcp         0 0 0.0.0.0:9999    0.0.0.0:*    LISTEN
    $ tbsql tibero/tmax
    
    tbSQL 7
    
    TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
    
    Connected to Tibero.
    
    SQL> create database link T7LINK connect to tibero identified by 'tmax'
        2 using 'gw_listen';
        
    Database Link 'T7LINK' created.
    $ tbsql tibero/tmax
    
    tbSQL 7
    
    TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
    
    Connected to Tibero.
    
    SQL> select * from dual@T7LINK;
    
    DUMMY
    -----
    X
    
    1 row selected.
    $ unzip instantclient-basic-linux.x64-19.16.0.0.0dbru.zip 
    Archive: instantclient-basic-linux.x64-19.16.0.0.0dbru.zip
        inflating: instantclient_19_16/adrci 
        inflating: instantclient_19_16/BASIC_LICENSE 
        inflating: instantclient_19_16/BASIC_README 
        inflating: instantclient_19_16/genezi
        inflating: instantclient_19_16/libclntshcore.so.19.1
            linking: instantclient_19_16/libclntsh.so -> libclntsh.so.19.1 
            linking: instantclient_19_16/libclntsh.so.10.1 -> libclntsh.so.19.1 
            linking: instantclient_19_16/libclntsh.so.11.1 -> libclntsh.so.19.1 
            linking: instantclient_19_16/libclntsh.so.12.1 -> libclntsh.so.19.1 
            linking: instantclient_19_16/libclntsh.so.18.1 -> libclntsh.so.19.1
    inflating: instantclient_19_16/libclntsh.so.19.1
    inflating: instantclient_19_16/libipc1.so inflating: i
    nstantclient_19_16/libmql1.so inflating: 
    instantclient_19_16/libnnz19.so
        linking: instantclient_19_16/libocci.so -> libocci.so.19.1 
        linking: instantclient_19_16/libocci.so.10.1 -> libocci.so.19.1 
        linking: instantclient_19_16/libocci.so.11.1 -> libocci.so.19.1 
        linking: instantclient_19_16/libocci.so.12.1 -> libocci.so.19.1 
        linking: instantclient_19_16/libocci.so.18.1 -> libocci.so.19.1
    inflating: instantclient_19_16/libocci.so.19.1 
    inflating: instantclient_19_16/libociei.so 
    inflating: instantclient_19_16/libocijdbc19.so 
    inflating: instantclient_19_16/liboramysql19.so
        creating: instantclient_19_16/network/ 
    inflating: instantclient_19_16/ojdbc8.jar 
    inflating: instantclient_19_16/ucp.jar 
    inflating: instantclient_19_16/uidrvci 
    inflating: instantclient_19_16/xstreams.jar
        creating: instantclient_19_16/network/admin/ 
    inflating: instantclient_19_16/network/admin/README
    finishing deferred symbolic links: 
        instantclient_19_16/libclntsh.so -> libclntsh.so.19.1 
        instantclient_19_16/libclntsh.so.10.1 -> libclntsh.so.19.1 
        instantclient_19_16/libclntsh.so.11.1 -> libclntsh.so.19.1 
        instantclient_19_16/libclntsh.so.12.1 -> libclntsh.so.19.1 
        instantclient_19_16/libclntsh.so.18.1 -> libclntsh.so.19.1 
        instantclient_19_16/libocci.so -> libocci.so.19.1 
        instantclient_19_16/libocci.so.10.1 -> libocci.so.19.1 
        instantclient_19_16/libocci.so.11.1 -> libocci.so.19.1 
        instantclient_19_16/libocci.so.12.1 -> libocci.so.19.1 
        instantclient_19_16/libocci.so.18.1 -> libocci.so.19.1
    # Instanct client
    export TBGW_HOME=/yuha/t7/gateway
    export ORACLE_HOME=/yuha/t7/instantclient_19_16 
    export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH 
    export PATH=.:$ORACLE_HOME:$PATH
    export TNS_ADMIN=$ORACLE_HOME
    $ cd $TNS_ADMIN
    $ vi tnsnames.ora
    <Alias๋ช…> =
        (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = <Oracle ์„œ๋ฒ„ ์ ‘์† IP>)
            (PORT = <Oracle ์„œ๋ฒ„ ์ ‘์† Port>))
            (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = <Oracle ์„œ๋ฒ„์˜ SID>)
        )
    )

    ํ•ญ๋ชฉ

    ์„ค๋ช…

    < Alias๋ช… >

    tbdsn.tbr ์„ค์ •์˜ TARGET ๋ถ€๋ถ„๊ณผ ๋Œ€์†Œ๋ฌธ์ž ์ˆ˜์ค€๊นŒ์ง€ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค.

    ADDRESS

    ๋Œ€์ƒ Oracle์— ๋Œ€ํ•œ ์ ‘์† ์ •๋ณด๋ฅผ ์„ค์ •ํ•œ๋‹ค.

    • PROTOCOL : ํ”„๋กœํ† ์ฝœ์„ ์„ค์ •ํ•œ๋‹ค.

    • HOST : ๋Œ€์ƒ ORACLE ์„œ๋ฒ„์˜ ์ ‘์† IP ์ฃผ์†Œ ์ •๋ณด์ด๋‹ค.

    • PORT : ๋Œ€์ƒ ORACLE ์„œ๋ฒ„์˜ ์ ‘์† ํฌํŠธ ๋ฒˆํ˜ธ ์ •๋ณด์ด๋‹ค.

    CONNECT_DATA

    ๋Œ€์ƒ Oracle ์„œ๋ฒ„์˜ ์—ฐ๊ฒฐ ๋ฐฉ์‹ ๋ฐ SID๋ฅผ ์„ค์ •ํ•œ๋‹ค.

    • SERVER : ์„œ๋ฒ„์˜ ์—ฐ๊ฒฐ ๋ฐฉ์‹์ด๋‹ค.

    • SERVICE_NAME : ๋Œ€์ƒ ORACLE ์„œ๋ฒ„์˜ SID ์ด๋‹ค.

    $ cd $TNS_ADMIN
    
    $ cat tnsnames.ora 
    ORCL =
        (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.17.24)(PORT = 1521)) 
            (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = oracle19)
        )
    )

    ๊ตฌ๋ถ„

    ์„ค๋ช…

    Tibero Studio ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

    ์ ‘์†ํ•  ๋•Œ ์ง€์ •ํ•˜๋Š” ์บ๋ฆญํ„ฐ ์…‹ ์„ค์ • ํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค. ๋งŒ์•ฝ, ๋ฏธ์ง€์ •์˜ ๊ฒฝ์šฐ ์ ‘์†ํ•˜๋Š” Tibero ์„œ๋ฒ„์˜ ์บ๋ฆญํ„ฐ ์…‹์œผ๋กœ ์„ค์ •๋œ๋‹ค.

    ODBC๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ

    (Orange for Tibero ๋“ฑ)

    TB_NLS_LANG ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ฐ’์„ ํ™•์ธํ•œ๋‹ค.

    ํ™˜๊ฒฝ๋ณ€์ˆ˜

    ์„ค๋ช…

    TB_NLS_LANG

    Gateway์—์„œ Tibero๋กœ ์ ‘์†ํ•  ๋•Œ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

    NLS_LANG

    Gateway์—์„œ Oracle๋กœ ์ ‘์†ํ•  ๋•Œ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

    $ sh gw_install.sh
    Configuring gateway environment for tibero to oracle... 
    TBGW_HOME is /yuha/t7/gateway.
    Gateway configuration file is created in /yuha/t7/gateway/oracle/config. Check the file, 
    and add or rewrite options if you want.
    Gateway install is done.
    $ cd $TBGW_HOME
    
    $ tree -f
    .
    โ””โ”€โ”€ ./oracle
        โ”œโ”€โ”€ ./oracle/config
        โ”‚ โ””โ”€โ”€ ./oracle/config/tbgw.cfg
        โ”œโ”€โ”€ ./oracle/lib
        โ”‚ โ””โ”€โ”€ ./oracle/lib/libclntsh.so.19.1 ->
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/lib/libclntsh.so
        โ””โ”€โ”€ ./oracle/log
        
    4 directories, 2 files
    $ pwd
    /yuha/t7/tibero7/client/bin
    
    $ ldd gw4orcl
        linux-vdso.so.1 => (0x00007fffd65df000)
        libclntsh.so.19.1 =>
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/lib/libclntsh.so.19.1 
    (0x00007f055e271000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f055e06d000) 
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f055de51000) 
        libm.so.6 => /lib64/libm.so.6 (0x00007f055db4f000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f055d781000)
        libnnz19.so => /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/lib/libnnz19.so 
    (0x00007f055d039000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f055ce1f000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f055cc17000) 
        libaio.so.1 => /lib64/libaio.so.1 (0x00007f055ca15000) 
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f055c7fb000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f056227f000)
        libclntshcore.so.19.1 =>
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/lib/libclntshcore.so.19.1 
    (0x00007f055c25b000)
    $ tbsql tibero/tmax@gw_listen
    
    tbSQL 7
    
    TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
    
    Connected to using gw_listen.
    
    SQL> select * from dual;
    
    DUMMY
    ------
    X
    
    1 row selected.

    ๋ถ„๋ฅ˜

    ์„ค๋ช…

    HSODBC

    Oracle 10g์—์„œ ์‚ฌ์šฉํ•œ๋‹ค. Oracle 10g ํด๋ผ์ด์–ธํŠธ ๋ฐ”์ด๋„ˆ๋ฆฌ์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉฐ Oracle 10g ์„œ๋ฒ„ ๋ฐ”์ด๋„ˆ๋ฆฌ์—๋งŒ ์กด์žฌํ•œ๋‹ค.

    DG4ODBC

    Oracle 11g ์ด์ƒ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค. Oracle 11g ์ด์ƒ ํด๋ผ์ด์–ธํŠธ ๋ฐ”์ด๋„ˆ๋ฆฌ์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉฐ Oracle 11g ์ด์ƒ Gateway ๋ฐ”์ด๋„ˆ๋ฆฌ ๋˜๋Š” Oracle 11g ์ด์ƒ ์„œ๋ฒ„ ๋ฐ”์ด๋„ˆ๋ฆฌ์— ์กด์žฌํ•œ๋‹ค.

    ๋ถ„๋ฅ˜

    ์„ค๋ช…

    UNIX ๊ณ„์—ด

    ์•„๋ž˜ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

    • HSODBC(10g) ๋˜๋Š” DG4ODBC(11g ์ด์ƒ)์—์„œ Tibero ODBC Driver ์ง์ ‘ ์—ฐ๊ฒฐ ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ, ๋ณ„๋„์˜ Manager ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.

    • Driver Manager ์‚ฌ์šฉ ์—ฐ๊ฒฐ๋ฐฉ์‹ ๋˜๋Š” iodbc, unixodbc ์‚ฌ์šฉ์˜ ๊ฒฝ์šฐ, ๋ณ„๋„์˜ Manager ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

    $ ls -al $ORACLE_HOME/bin/dg4odbc
    -rwxr-x--x 1 oracle dba 738168 4์›” 10 15:49
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/bin/dg4odbc
    $ file $ORACLE_HOME/bin/dg4odbc
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/bin/dg4odbc: ELF 64-bit LSB 
    executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for 
    GNU/Linux 2.6.32, BuildID[sha1]=05c8c6e1646c7f78af76fec4fc034f83383843f1, not 
    stripped
    # Oracle To Tibero DB Link Setting 
    export TB_HOME=/yuha/oracle/tibero7
    export LD_LIBRARY_PATH=$TB_HOME/client/lib:$LD_LIBRARY_PATH 
    export PATH=$TB_HOME/client/bin:$PATH
    alias nadm='cd $ORACLE_HOME/network/admin' 
    alias hadm='cd $ORACLE_HOME/hs/admin'
    <Alias๋ช…>=( (INSTANCE=(HOST=<Tibero ์„œ๋ฒ„ IP>)
    (PORT=<Tibero ์„œ๋ฒ„ Port>) 
    (DB_NAME=<Tibero ์„œ๋ฒ„ DB๋ช…>)
    )
    )

    ํ•ญ๋ชฉ

    ์„ค๋ช…

    < Alias ๋ช…>

    ์ž„์˜๋กœ ์„ค์ •ํ•œ๋‹ค. ๋‹จ, Tibero ODBC Driver ์ง์ ‘ ์—ฐ๊ฒฐ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ Oracle Gateway ํ™˜๊ฒฝ์„ค์ •์˜ HS_FDS_CONNECT_INFO ํŒŒ๋ผ๋ฏธํ„ฐ์— ์„ค์ •๋œ ๊ฐ’๊ณผ ์ผ์น˜ ํ•ด์•ผ ํ•œ๋‹ค.

    HOST

    DB Link์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” Tibero ์„œ๋ฒ„์˜ ์ ‘์† IP ์ฃผ์†Œ ์ •๋ณด์ด๋‹ค.

    PORT

    DB Link์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” Tibero ์„œ๋ฒ„์˜ ์ ‘์† ํฌํŠธ ๋ฒˆํ˜ธ ์ •๋ณด์ด๋‹ค.

    o2t=(
        (INSTANCE=(HOST=192.168.17.24) 
                    (PORT=5555
                    (DB_NAME=tibero)
                )
    )
    $ tbsql sys/tibero@o2t
    
    tbSQL 7
    
    TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
    
    Connected to VGliZXJv using o2t.
    <Alias๋ช…>=
        (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = <Gateway ์„œ๋ฒ„ IP>)
            (PORT = <Gateway ์„œ๋ฒ„ Port>))
            (CONNECT_DATA = (SID = <Gateway ์„œ๋ฒ„ SID๋ช…>)) 
            (HS = OK)
    )

    ํ•ญ๋ชฉ

    ์„ค๋ช…

    < Alias๋ช… >

    ์ž„์˜๋กœ ์„ค์ •ํ•œ๋‹ค. ๋‹จ, DB Link๋ฅผ ์ƒ์„ฑํ•  ๋•Œ using ์ ˆ์— ํ•ด๋‹น Alias๋ฅผ ์ฃผ์–ด์•ผ ํ•œ ๋‹ค.

    ADDRESS

    ๋Œ€์ƒ Oracle์— ๋Œ€ํ•œ ์ ‘์† ์ •๋ณด๋ฅผ ์„ค์ •ํ•œ๋‹ค.

    • PROTOCOL : ํ”„๋กœํ† ์ฝœ์„ ์„ค์ •ํ•œ๋‹ค.

    • HOST : Gateway ์„œ๋ฒ„์˜ ์ ‘์† IP ์ฃผ์†Œ ์ •๋ณด์ด๋‹ค.

    • PORT : Gateway ์„œ๋ฒ„์˜ ์ ‘์† ํฌํŠธ ๋ฒˆํ˜ธ ์ •๋ณด์ด๋‹ค.

    CONNECT_DATA

    ๋Œ€์ƒ Oracle ์„œ๋ฒ„์˜ SID๋ฅผ ์„ค์ •ํ•œ๋‹ค.

    - SID : ์ž„์˜๋กœ ์„ค์ •ํ•œ๋‹ค. ๋‹จ, Gateway ์„œ๋ฒ„์˜ listener.ora์˜ SID_NAME ์„ค์ • ๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค.

    tb7=
        (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.17.24)(PORT = 1522))
            (CONNECT_DATA = (SID = dg4_tibero)) 
            (HS = OK)
        )
    <LISTENER_NAME> = 
        (ADDRESS_LIST=
            (ADDRESS=(PROTOCOL=tcp)(HOST=<Listeningํ•  IP>)(PORT=<Listeningํ•  Port>))
        )
        SID_LIST_<LISTENER_NAME> = 
            (SID_LIST=
                (SID_DESC=
                    (SID_NAME=<Oracle ์„œ๋ฒ„ SID๋ช…>) 
                    (ORACLE_HOME=<Oracle ํ™ˆ์ฃผ์†Œ>)
                    (PROGRAM= {dg4odbc | hsodbc})
                )
            )

    ํ•ญ๋ชฉ

    ์„ค๋ช…

    < LISTENER_NAME >

    ์ž„์˜๋กœ ์„ค์ •ํ•œ๋‹ค. Listener๋ฅผ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ข…๋ฃŒํ•  ๋•Œ ํ•ด๋‹น ์ด๋ฆ„์„ ์‚ฌ์šฉํ•œ๋‹ค.

    ADDRESS

    Listening ํ•  ์ •๋ณด๋ฅผ ์„ค์ •ํ•œ๋‹ค.

    • PROTOCOL : ํ”„๋กœํ† ์ฝœ์„ ์„ค์ •ํ•œ๋‹ค.

    • HOST : Listeningํ•  IP ์ฃผ์†Œ ์ •๋ณด์ด๋‹ค.

    • PORT: Listeningํ•  ํฌํŠธ ๋ฒˆํ˜ธ ์ •๋ณด์ด๋‹ค.

    SID_NAME

    ์ž„์˜๋กœ ์„ค์ •ํ•œ๋‹ค. ๋‹จ, Oracle ์„œ๋ฒ„์—์„œ ์„ค์ •๋œ tnsnames.ora์˜ SID ์„ค์ • ๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค. Oracle Gateway ์„ค์ • ํŒŒ์ผ์„ ์ฐพ์„ ๋•Œ ํ•ด๋‹น ์ด๋ฆ„์„ ์‚ฌ์šฉํ•œ๋‹ค.

    LTIBERO =
            (ADDRESS_LIST=
                    (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.17.24)(PORT=1522))
            )
            
    SID_LIST_LTIBERO =
            (SID_LIST=
                    (SID_DESC=
                            (SID_NAME=dg4_tibero)
                            
    (ORACLE_HOME=/yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1)
                            (PROGRAM=dg4odbc)
                    )
            )
    $ lsnrctl start <listener_name>
    ]$ lsnrctl start ltibero
    
    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 15-JUN-2023 17:17:49
    
    Copyright (c) 1991, 2019, Oracle. All rights reserved.
    Starting /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/bin/tnslsnr: please 
    wait...
    
    TNSLSNR for Linux: Version 19.0.0.0.0 - Production 
    System parameter file is
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/network/admin/listener.ora 
    Log messages written to
    /yuha/oracle/ORA19/app/oracle/diag/tnslsnr/haeun/ltibero/alert/log.xml 
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.17.24) 
    (PORT=1522)))
    
    Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.17.24)(PORT=1522)) 
    STATUS of the LISTENER
    --------------------------
    Alias	                        ltibero
    Version                    	TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Start Date	                15-JUN-2023 17:17:49
    Uptime	                        0 days 0 hr. 0 min. 0 sec
    Trace Level	                off
    Security	                ON: Local OS Authentication
    SNMP	                        OFF
    Listener Parameter File
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/network/admin/listener.ora 
    Listener Log File
    /yuha/oracle/ORA19/app/oracle/diag/tnslsnr/haeun/ltibero/alert/log.xml
    Listening Endpoints Summary... 
        (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.17.24)(PORT=1522)))
    Services Summary...
    Service "dg4_tibero" has 1 instance(s).
        Instance "dg4_tibero", status UNKNOWN, has 1 handler(s) for this service...
    The command completed successfully
    $ netstat -na |grep 1522
    tcp         0     0 192.168.17.24:1522    0.0.0.0:*        LISTEN
    $ lsnrctl stop <listener_name>
    $ lsnrctl stop ltibero
    
    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 15-JUN-2023 16:13:05
    
    Copyright (c) 1991, 2019, Oracle. All rights reserved.
    
    Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.17.24)(PORT=1522))
    The command completed successfully
    $ lsnrctl status <listener_name>
    $ lsnrctl status ltibero
    
    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 15-JUN-2023 17:18:20
    
    Copyright (c) 1991, 2019, Oracle. All rights reserved.
    
    Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.17.24)(PORT=1522)) 
    STATUS of the LISTENER
    -------------------------
    Alias	                    ltibero
    Version	                    TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Start Date	            15-JUN-2023 17:18:15
    Uptime	                    0 days 0 hr. 0 min. 4 sec
    Trace Level	            off
    Security	            ON: Local OS Authentication
    SNMP	                    OFF
    Listener Parameter File
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/network/admin/listener.ora 
    Listener Log File
    /yuha/oracle/ORA19/app/oracle/diag/tnslsnr/haeun/ltibero/alert/log.xml 
    Listening Endpoints Summary...
        (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.17.24)(PORT=1522)))
    Services Summary...
    Service "dg4_tibero" has 1 instance(s).
        Instance "dg4_tibero", status UNKNOWN, has 1 handler(s) for this service...
    The command completed successfully
    $ tnsping <alias_name>
    $ tnsping tb7
    
    TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 15-JUN-2023 17:18:34
    
    Copyright (c) 1997, 2019, Oracle. All rights reserved.
    
    Used parameter files:
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/network/admin/sqlnet.ora
    
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)
    (HOST = 192.168.17.24)(PORT = 1522)) (CONNECT_DATA = (SID = dg4_tibero)) (HS = OK))
    OK (0 msec)
    $ pwd
    /yuha/oracle/ORA19/app/oracle/product/19.0.0/db_1/hs/admin
    
    $ ls -al |grep init
    -rw-r--r-- 1 oracle dba 489 4์›” 17 2019 initdg4odbc.ora
    
    ๋งŒ์•ฝ SID_NAME์ด 'dg4_tibero'์ผ ๊ฒฝ์šฐ initdg4_tibero.ora ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.
    
    ```shell
    $ cp initdg4odbc.ora initdg4_tibero.ora
    HS_FDS_CONNECT_INFO = dg4_tibero
    HS_FDS_SHAREABLE_NAME = /yuha/oracle/tibero7/client/lib/libtbodbc.so
    HS_FDS_CONNECT_INFO=dg4_tibero 
    #HS_FDS_TRACE_LEVEL=DEBUG
    # Tibero ODBC Driver 
    HS_FDS_SHAREABLE_NAME=/home/ora11/tibero7/client/lib/libtbodbc.so 
    # iODBC Driver Manager 
    #HS_FDS_SHAREABLE_NAME=/home/ora11/iodbc/lib/libiodbc.so 
    #HS_LANGUAGE=AMERICAN_AMERICA.KO16MSWIN949
    #
    # ODBC specific environment variables 
    #
    #set ODBCINI=<full path name of the odbc initilization file> 
    #set ODBCINI=/home/ora11/.odbc.ini
    #
    # Environment variables required for the non-Oracle system 
    #
    #set <envvar>=<value>
    #set TB_NLS_LANG=UTF8 
    #set TBCLI_LOG_LVL=TRACE

    ํ•ญ๋ชฉ

    ์„ค๋ช…

    HS_FDS_CONNECT_INFO

    ODBC Datasource ์ด๋ฆ„์„ ๊ธฐ์ˆ ํ•˜๋ฉฐ ์—ฐ๊ฒฐ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค. (ํ•„์ˆ˜)

    • Tibero ODBC Driver ์ง์ ‘ ์—ฐ๊ฒฐ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ : tbdsn.tbr์— ์„ค์ • ๋œ Alias๋ช…์„ ์„ค์ •ํ•œ๋‹ค.

    ๋งŒ์•ฝ, .odbc.ini ์„ค์ • ํŒŒ์ผ์ด ์กด์žฌํ•˜๊ฑฐ๋‚˜ tbdsn.tbr๊ณผ ๋™์ผํ•œ Alias

    ๊ฐ€ ์žˆ๋‹ค๋ฉด .odbc.ini ์„ค์ • ํŒŒ์ผ์„ ๋จผ์ €์ฝ์–ด๋“ค์ด๋ฏ€๋กœ ์ฃผ์˜ํ•œ๋‹ค.

    • Driver Manager ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ : Datasource ์ด๋ฆ„์„ ์„ค์ •ํ•œ๋‹ค.

    HS_FDS_SHAREABLE_NAME

    ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒฝ๋กœ ๋ฐ ์ด๋ฆ„ ์ง€์ •, ์—ฐ๊ฒฐ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค. (ํ•„์ˆ˜)

    • Tibero ODBC Driver ์ง์ ‘ ์—ฐ๊ฒฐ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ : Tibero ๋ผ์ด๋ธŒ๋Ÿฌ ๋ฆฌ ๊ฒฝ๋กœ ๋ฐ ์ด๋ฆ„์„ ์„ค์ •ํ•œ๋‹ค.

    • Driver Manager ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ : ํ•ด๋‹น Manager Driver ๋ผ์ด๋ธŒ๋Ÿฌ ๋ฆฌ ๊ฒฝ๋กœ ๋ฐ ์ด๋ฆ„์„ ์„ค์ •ํ•œ๋‹ค.

    HS_FDS_TRACE_LEVEL

    Oracle Gateway์˜ ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ์„ค์ •ํ•œ๋‹ค. '$ORACLE_HOME/hs/log' ๊ฒฝ๋กœ์— ๋กœ๊ทธ๊ฐ€ ๋‚จ๋Š”๋‹ค. (์„ ํƒ)

    ํ™˜๊ฒฝ๋ณ€์ˆ˜

    ์„ค๋ช…

    ODBCINI

    ODBC ์ดˆ๊ธฐ ์„ค์ • ํŒŒ์ผ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ณ€์ˆ˜์ด๋‹ค. ์—ฐ๊ฒฐ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.

    • Tibero ODBC Driver ์ง์ ‘ ์—ฐ๊ฒฐ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ : ์„ค์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.

    • Driver Manager ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ : ์ดˆ๊ธฐ ์„ค์ • ํŒŒ์ผ ์œ„์น˜๋ฅผ ์ง€์ •ํ•œ๋‹ค.

    Tibero ํ™˜๊ฒฝ ๋ณ€์ˆ˜

    Tibero ODBC Driver ๋กœ๋“œ์ผ ๋•Œ ์ „๋‹ฌํ•˜๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜์ด๋‹ค. ๋ฏธ์„ค์ •์ผ ๋•Œ Listener๋ฅผ ๊ธฐ๋™ํ•˜๋ฉด ์ ์šฉ๋œ Tibero์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

    ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” TB_NLS_LANG, TBCLI_LOG_LVL์ด๋‹ค.

    create database link <DB Link๋ช…> connect to <user๋ช…> identified by "<password>" using 
    '<Network Alias๋ช…>';
    GRANT CREATE DATABASE LINK TO USER_NAME;
    GRANT CREATE PUBLIC DATABASE LINK TO USER_NAME;
    $ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jun 15 17:26:24 2023
    Version 19.3.0.0.0
    
    Copyright (c) 1982, 2019, Oracle. All rights reserved.
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production 
    Version 19.3.0.0.0
    
    SQL> drop database link o2t_link;
    
    Database link dropped.
    
    SQL> create database link o2t_link connect to tibero identified by tmax using 'tb7';
    
    Database link created.
    SQL> select * from dual@o2t_link;
    
    DUM
    --- 
    X
    $ tbsql tibero/tmax@o2t
    tbSQL 7
    TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
    Connected to VGliZXJv using o2t.
    SQL> create table test(c1 number);
    Table 'TEST' created.
    SQL> insert into test values(10);
    1 row inserted.
    SQL> commit;
    Commit completed.
    $ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jun 15 17:34:02 2023
    Version 19.3.0.0.0
    
    Copyright (c) 1982, 2019, Oracle. All rights reserved.
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production 
    Version 19.3.0.0.0
    
    SQL> select * from test@o2t_link;
    
            C1
    ----------
            10
            
    SQL> insert into test@o2t_link values(20);
    
    1 row created.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> select * from test@o2t_link;
    
            C1
    ----------
            10
            20
    $ tar -xvzf libiodbc-3.52.7.tar.gz
    
    $ ls -al libiodbc-3.52.7
    ํ•ฉ๊ณ„ 868
    drwxr-xr-x	14	oracle	dba	4096	9์›”	10	2009	.
    drwxrwxrwx	16	oracle	dba	4096	6์›”	15	17:53	..
    -rw-r--r--	1	oracle	dba	1038	7์›”	27	2005	AUTHORS
    -rw-r--r--	1	oracle	dba	735	8์›”	30	2009	COPYING
    -rw-r--r--	1	oracle	dba	66851	9์›”	10	2009	ChangeLog
    -rw-r--r--	1	oracle	dba	1480	9์›”	10	2009	IAFA-PACKAGE
    -rw-r--r--	1	oracle	dba	9236	2์›”	21	2004	INSTALL
    -rw-r--r--	1	oracle	dba	735	8์›”	30	2009	LICENSE
    -rw-r--r--	1	oracle	dba	1520	8์›”	30	2009	LICENSE.BSD
    -rw-r--r--	1	oracle	dba	25277	1์›”	21	2006	LICENSE.LGPL
    -rw-r--r--	1	oracle	dba	10099	9์›”	10	2009	Makefile.am
    -rw-r--r--	1	oracle	dba	32869	9์›”	10	2009	Makefile.in
    -rw-r--r--	1	oracle	dba	12592	9์›”	10	2009	NEWS
    -rwxr-xr-x	1	oracle	dba	8828	9์›”	9	2009	PORT.OpenLink
    -rw-r--r--	1	oracle	dba	11328	8์›”	30	2009	README
    -rw-r--r--	1	oracle	dba	3193	9์›”	1	2009	README.CVS
    -rw-r--r--	1	oracle	dba	2653	9์›”	10	2009	README.MACOSX
    -rw-r--r--	1	oracle	dba	3949	8์›”	30	2009	acinclude.m4
    -rw-r--r--	1	oracle	dba	37029	9์›”	10	2009	aclocal.m4
    drwxr-xr-x	2	oracle	dba	4096	9์›”	10	2009	admin
    drwxr-xr-x	2	oracle	dba	4096	9์›”	10	2009	bin
    -rwxr-xr-x	1	oracle	dba	5963	8์›”	30	2009	bootstrap.sh
    -rwxr-xr-x	1	oracle	dba	512594	9์›”	10	2009	configure
    -rw-r--r--	1	oracle	dba	22978	9์›”	10	2009	configure.in
    drwxr-xr-x	2	oracle	dba	4096	9์›”	10	2009	debian
    drwxr-xr-x	4	oracle	dba	4096	9์›”	10	2009	drvproxy
    drwxr-xr-x	2	oracle	dba	4096	9์›”	10	2009	etc
    drwxr-xr-x	2	oracle	dba	4096	9์›”	10	2009	include
    drwxr-xr-x	3	oracle	dba	4096	9์›”	10	2009	iodbc
    drwxr-xr-x	4	oracle	dba	4096	9์›”	10	2009	iodbcadm
    drwxr-xr-x	2	oracle	dba	4096	9์›”	10	2009	iodbcinst
    drwxr-xr-x	11	oracle	dba	4096	9์›”	10	2009	mac
    drwxr-xr-x	2	oracle	dba	4096	9์›”	10	2009	man
    drwxr-xr-x	2	oracle	dba	4096	9์›”	10	2009	samples
    $ mkdir iodbc
    $ cd libiodbc-3.52.7/
    
    ./configure --prefix=$HOME/iodbc --disable-gui
    make
    make install
    $ cd $HOME/iodbc/bin
    
    $ file iodbctest
    iodbctest: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically 
    linked (uses shared libs), for GNU/Linux 2.6.32, 
    BuildID[sha1]=9074c37e82e67ad88dfcf2534021d0b3d45edda4, not stripped
    export CFLAGS=-m64
    ./configure --prefix=$HOME/iodbc --disable-gui
    ./make
    ./make install
    $ file iodbctest
    iodbctest: ELF 64-bit LSB executable, AMD x86-64, version 1(SYSV),
    for GNU/Linux 2.6.9, dynamically linked(uses shared libs), not stripped
    ```
    export CFLAGS=-maix64
    export LDFLAGS="-maix64 -brtl"
    ./configure --prefix=$HOME/iodbc --disable-gui
    ```
    ```
    export OBJECT_MODE=64
    ./make
    ```
    ```
    ./make install
    ```
    ```
    $ file iodbctest
    iodbctest: 64-bit XCOFF executable or object module not stripped
    ```
    # iodbc setting
    export IODBC_HOME=$HOME/iodbc
    export LD_LIBRARY_PATH=$IODBC_HOME/lib:$LD_LIBRARY_PATH 
    export PATH=$IODBC_HOME/bin:$PATH
    [ODBC Data Sources]
    <ODBC Data Sources> = Tibero7 ODBC driver 
    [ODBC]
    Trace = 1
    TraceFile = /yuha/oracle/iodbc/tmp/odbc.trace 
    [<ODBC Data Sources ์„ธ๋ถ€์„ค์ •>]
    Driver = <Tibero ODBC Driver ํŒŒ์ผ>
    Description = Tibero5 ODBC Datasource 
    SID = <tbdsn.tbr ํŒŒ์ผ์— ์„ค์ •ํ•œ alias ์ •๋ณด> 
    User = dbtech
    Password = dbtech

    ํ•ญ๋ชฉ

    ์„ค๋ช…

    < ODBC Data Sources >

    Datasource ์ด๋ฆ„์œผ๋กœ Oracle Gateway ์„ค์ • ํŒŒ์ผ์— ํ•ด๋‹น ๋‚ด์šฉ์ด ๋“ค์–ด๊ฐ„๋‹ค.

    < ODBC Data Sources ์„ธ๋ถ€ ์„ค์ • >

    ODBC Data Sources์—์„œ ์„ค์ •ํ•œ ์ด๋ฆ„์œผ๋กœ ๋Œ€์†Œ๋ฌธ์ž๊นŒ์ง€ ์ผ์น˜ํ•ด ์•ผ ํ•œ๋‹ค.

    Driver

    ODBC Manager์—์„œ ๋กœ๋“œํ•˜๋Š” Tibero ODBC Driver ํŒŒ์ผ์ด๋‹ค. ํ•ด๋‹น ํŒŒ์ผ ์กด์žฌ ์—ฌ๋ถ€ ๋ฐ ๊ถŒํ•œ์— ๋Œ€ํ•ด์„œ ํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค.

    $ cat .odbc.ini 
    [ODBC Data Sources]
    tibero7 = Tibero7 ODBC driver
    
    [ODBC]
    Trace = 1
    TraceFile = /yuha/oracle/iodbc/tmp/odbc.trace
    
    [Tibero7]
    Server = 192.168.17.24
    Port = 5555 
    Database = tibero
    Driver = /yuha/oracle/tibero7/client/lib/libtbodbc.so 
    Description = Tibero7 ODBC Datasource
    SID = tibero 
    User = tibero 
    Password = tmax
    iodbctest "DSN=<dsn>;UID=<user>;PWD=<pwd>"

    ํ•ญ๋ชฉ

    ์„ค๋ช…

    DSN

    ODBC ํ™˜๊ฒฝ ํŒŒ์ผ์—์„œ ์„ค์ •ํ•œ ODBC Datasources ์ด๋ฆ„์ด๋‹ค.

    UID, PWD

    ํ…Œ์ŠคํŠธ ํ•  ์ ‘์† ๊ณ„์ • ๋ฐ ํŒจ์Šค์›Œ๋“œ์ด๋‹ค.

    $ iodbctest "DSN=Tibero7;UID=tibero;PWD=tmax" 
    iODBC Demonstration program
    This program shows an interactive SQL processor
    Driver Manager: 03.52.0709.0909
    Driver: 07.00.0218 (libtbodbc.so)
    
    SQL>select * from test;
    
    C1
    ----------------------------------
    10
    20
    
    result set 1 returned 2 rows.
    HS_FDS_CONNECT_INFO=tibero 
    #HS_FDS_TRACE_LEVEL=DEBUG
    # Tibero ODBC Driver 
    HS_FDS_SHAREABLE_NAME=/home/ora11/tibero5/client/lib/libtbodbc.so
    
    # iODBC Driver Manager 
    #HS_FDS_SHAREABLE_NAME=/home/ora11/iodbc/lib/libiodbc.so 
    #HS_LANGUAGE=AMERICAN_AMERICA.KO16MSWIN949
    #
    # ODBC specific environment variables 
    #
    #set ODBCINI=<full path name of the odbc initilization file>
    #set ODBCINI=/home/ora11/.odbc.ini 
    #
    # Environment variables required for the non-Oracle system
    #
    #set <envvar>=<value>
    #set TB_NLS_LANG=UTF8 
    #set TBCLI_LOG_LVL=TRACE
    HS_FDS_CONNECT_INFO=Tibero7
    
    # iODBC Driver Manager 
    HS_FDS_SHAREABLE_NAME=/yuha/oracle/iodbc/lib/libiodbc.so
    SQL> select name, value$ from sys.props$ where name like 'NLS_CHAR%';
    
    NAME
    -----------------------------------------------------------------
    VALUE$
    -----------------------------------------------------------------
    NLS_CHARACTERSET 
    AL32UTF8
    SQL> conn scott/tiger 
    Connected.
    SQL> select * from dual@tlink; 
    select * from dual@tlink
    *
    ERROR at line 1:
    ORA-28511: lost RPC connection to heterogeneous remote agent using 
    SID=ORA-28511: lost RPC connection to heterogeneous
    remote agent using
    SID=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.70.185)(PORT=1522)) 
    (CONNECT_DATA=(SID=tibero)))
    ORA-02063: preceding line from TLINK 
    Process ID: 14824
    Session ID: 8 Serial number: 14464
    HS_LANGUAGE=AMERICAN_AMERICA.KO16MSWIN949
    $ sqlplus scott/tiger
    SQL*Plus: Release 11.2.0.1.0 Production on Tue Jun 4 14:23:11 2013 
    Copyright (c) 1982, 2009, Oracle. All rights reserved.
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production 
    With the Partitioning, OLAP, Data Mining and Real Application Testing options 
    SQL> select * from dual@tlink;
    DUM
    --- 
    X

    ์ฐธ๊ณ : Link ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๋ฉฐ, AP์—์„œ ๊ฐ๊ฐ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

    Tibero to Tibero

    Tibero to Tibero DB Link

    ์ œ์•ฝ์‚ฌํ•ญ

    Tibero ํด๋ผ์ด์–ธํŠธ ์„ค์ •

    ๋Œ€์ƒ ์„œ๋ฒ„ ์—ฐ๊ฒฐ ํ™•์ธ

    DB Link ์ƒ์„ฑ ๋ฐ ์‚ฌ์šฉ

    tbsql์— ์ ‘์†ํ•˜์—ฌ DB Link Object ์ƒ์„ฑ

    ์ฐธ๊ณ 

    DB Link๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” CREATE DATABASE LINK ๋˜๋Š” CREATE PUBLIC DATABASE LINK ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    SQL ์‹คํ–‰

    Tibero to Oracle

    ๊ฐœ์š”

    Gateway

    Gateway ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ

    ํ™•์ธ์‚ฌํ•ญ

    ์ œ์•ฝ์‚ฌํ•ญ

    Gateway for Oracle ์„ค์ •

    Gateway ์„ค์ •(UNIX ๊ณ„์—ด)

    ์ฃผ์˜

    1. Local ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ, Tibero ์„œ๋ฒ„๊ฐ€ ๊ธฐ๋™ํ•˜๊ธฐ ์ „์— ์œ„ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •์„ ๊ฐ€์ง€๊ณ  ๊ธฐ๋™์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ, ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ๋ฐ Local ๋ฐฉ์‹์„ ์ƒˆ๋กญ๊ฒŒ ๊ตฌ์„ฑํ•œ๋‹ค๋ฉด Tibero ์„œ๋ฒ„ ์žฌ๊ธฐ๋™์ด ํ•„์š”ํ•˜๋ฉฐ ์žฌ๊ธฐ๋™์ด ํž˜๋“ค๋‹ค๋ฉด Listener ๋ฐฉ์‹์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

    2. OS์— ๋งž๊ฒŒ ํ™˜๊ฒฝ๋ณ€์ˆ˜ LD_LIBRARY_PATH(Linux), LIBPATH(AIX)๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    3. TBGW_HOME์€ Tibero ๋ฐ”์ด๋„ˆ๋ฆฌ ํด๋” ๋ฐ–์œผ๋กœ ์„ค์ •ํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

    ์ฃผ์˜

    profile ์„ค์ •๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ถŒํ•œ์„ ์„ค์ •ํ•œ ํ›„ ldd gw4orcl๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ Oracle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ์„œ not found ๋ถ€๋ถ„์ด ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์ฃผ์˜

    1. Local ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ, Tibero ์„œ๋ฒ„๊ฐ€ ๊ธฐ๋™ํ•˜๊ธฐ ์ „์— ์œ„ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •์„ ๊ฐ€์ง€๊ณ  ๊ธฐ๋™์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ, ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ๋ฐ Local ๋ฐฉ์‹์„ ์ƒˆ๋กญ๊ฒŒ ๊ตฌ์„ฑํ•œ๋‹ค๋ฉด Tibero ์„œ๋ฒ„ ์žฌ๊ธฐ๋™์ด ํ•„์š”ํ•˜๋ฉฐ ์žฌ๊ธฐ๋™์ด ํž˜๋“ค๋‹ค๋ฉด Listener ๋ฐฉ์‹์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

    2. OS์— ๋งž๊ฒŒ ํ™˜๊ฒฝ๋ณ€์ˆ˜ LD_LIBRARY_PATH(Linux), LIBPATH(AIX)๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    3. TBGW_HOME์€ Tibero ๋ฐ”์ด๋„ˆ๋ฆฌ ํด๋” ๋ฐ–์œผ๋กœ ์„ค์ •ํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

    ์ฃผ์˜

    profile ์„ค์ •๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ถŒํ•œ์„ ์„ค์ •ํ•œ ํ›„ ldd gw4orcl๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ Oracle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ์„œ not found ๋ถ€๋ถ„์ด ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    Oracle ํด๋ผ์ด์–ธํŠธ

    ํ˜ธํ™˜์„ฑ ํ™•์ธ

    Instant ํด๋ผ์ด์–ธํŠธ ์„ค์ •

    ์ฃผ์˜

    1. LD_LIBRARY_PATH ์„ค์ •์— ํ•ด๋‹น ๊ฒฝ๋กœ์˜ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ $ORACLE_HOME์˜ ์„ค์ •์— ์ฃผ์˜ ํ•œ๋‹ค.

    2. OS์— ๋งž๊ฒŒ ํ™˜๊ฒฝ๋ณ€์ˆ˜ LD_LIBRARY_PATH(Linux), LIBPATH(AIX)๋ฅผ ์„ค์ •ํ•œ๋‹ค.

    3. profile ์„ค์ • ํ›„ ldd gw4orcl๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ Oracle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด์„œ not found ๋ถ€๋ถ„์ด ์—†์–ด์•ผ ํ•œ๋‹ค. $ ldd gw4orcl

    ๋ฌธ์ œ ํ•ด๊ฒฐ

    ๋ฐ์ดํ„ฐ ์กฐํšŒ

    ์ฐธ๊ณ 

    Tibero6 ์ดํ•˜์˜ TB_NLS_LANG์˜ ๊ธฐ๋ณธ๊ฐ’์€ MSWIN949(ํ•œ๊ธ€)์ด๋ฏ€๋กœ Tibero์˜ ํ™˜๊ฒฝ์ด ํ•œ๊ธ€์ด ์•„๋‹Œ ๋‹ค๋ฅธ ํ™˜ ๊ฒฝ์ผ ๊ฒฝ์šฐ TB_NLS_LANG ์„ค์ •์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

    Tibero7 ์˜ TB_NLS_LANG์˜ ๊ธฐ๋ณธ๊ฐ’์€ UTF8์ž…๋‹ˆ๋‹ค.

    Tibero7 ์˜ gw_install.sh ์ˆ˜ํ–‰

    Oracle to Tibero

    ๊ฐœ์š”

    ์ฐธ๊ณ 

    Oracle Gateway ๋Š” ์ด๊ธฐ์ข…๊ฐ„ ์„œ๋น„์Šค(Heterogeneous Connectivity)์— ์˜ํ•ด Oracle SQL ์„ Non-Oracle ์‹œ์Šคํ…œ์˜ ์ ์ ˆํ•œ ์–ธ์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ Non-Oracle ์‹œ์Šคํ…œ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋กœ์ปฌ ์„œ์‹์—์„œ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ์ดํ„ฐ ๋”•์…”๋„ˆ๋ฆฌ ๋ณ€ ํ™˜์˜ 2 ๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ๋ณ€ํ™˜์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

    ๋ณ€ํ™˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” Pass-Through ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด Oracle ์ด์™ธ์˜ ์‹œ์Šคํ…œ์— ์‹œ์Šคํ…œ ๊ณ ์œ ์˜ SQL ๋ฌธ์„ ์‹ค ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    Pass-Through ์ด๋ž€, Oracle Database ์—์„œ ํ•ด์„ ์—†์ด non-oracle ์‹œ์Šคํ…œ์œผ๋กœ ์ง์ ‘ SQL ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

    DBMS_HS_PASSTHROUGH ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๊ธฐ์ข… DB ๊ณ ์œ ์˜ ์ปค๋ฉ˜๋“œ๋‚˜ ๋ฌธ์žฅ์„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” Oracle ์„œ ๋ฒ„์—์„œ ์ด๊ธฐ์ข… ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ „๋‹ฌ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    Oracle Gateway

    ์ฐธ๊ณ 

    ์—ฌ๋Ÿฌ ๊ฐœ์˜ Oracle Database Gateway๋ฅผ ์„ค์น˜ํ•  ๊ฒฝ์šฐ, ์ œํ’ˆ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ Oracle Database Gateway for ODBC๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์ฐธ๊ณ 

    ์œ„ ๋‚ด์šฉ์€ Oracle์— ๋Œ€ํ•œ ์ œ์•ฝ ์‚ฌํ•ญ์œผ๋กœ Tibero ์ œ์•ฝ์‚ฌํ•ญ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚ด์šฉ์˜ ์ž์„ธํ•œ ์„ค๋ช…์€ Oracle ํ™ˆ ํŽ˜์ด์ง€(http://www.oracle.com)๋ฅผ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

    DB Link ์—ฐ๊ฒฐ๋ฐฉ์‹

    DB Link ์„ค์ •

    UNIX ๊ณ„์—ด (Linux ํฌํ•จ)

    ์ฐธ๊ณ 

    1. Oracle 10g์˜ ๊ฒฝ์šฐ file ORACLE_HOME/bin/hsodbc๋กœ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

    2. Gateway๊ฐ€ 32bit๋ผ๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Tibero ODBC Driver ์—ญ์‹œ 32bit๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 64bit๋กœ ์„ค์น˜๋˜์–ด ์žˆ์–ด๋„ ํ•ด๋‹น ๋ชจ๋“ˆ์ด 32bit์ธ ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ฃผ์˜

    OS์— ๋งž๊ฒŒ ํ™˜๊ฒฝ๋ณ€์ˆ˜ LD_LIBRARY_PATH(Linux), LIBPATH(AIX)๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    ์ฃผ์˜: ๊ด„ํ˜ธ๊ฐ€ ๋ˆ„๋ฝ๋˜๋Š” ๊ฒฝ์šฐ, ๋ฌธ์ œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์œ„ ๋ฌธ๋ฒ•์— ์ฃผ์˜ํ•ฉ๋‹ˆ๋‹ค.

    ์ฐธ๊ณ  ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ํ•ญ๋ชฉ๋“ค์€ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์ด๊ณ  ์ด์™ธ์— ์ž์„ธํ•œ ์„ค๋ช…์€ Oracle ํ™ˆํŽ˜์ด์ง€(http://www.oracle.com)๋ฅผ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

    ์ฐธ๊ณ 

    ์ž‘์€๋”ฐ์˜ดํ‘œ(' '), ํฐ๋”ฐ์˜ดํ‘œ(" ") ์‚ฌ์šฉ์— ์ฃผ์˜ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹จ, < user ๋ช…>์„ ํฐ๋”ฐ์˜ดํ‘œ(" ")๋กœ ๊ฐ์‹ธ๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    ODBC Manager ์„ค์น˜

    ์ฐธ๊ณ : ๋‹ค์Œ์€ OS๋ณ„๋กœ iodbc 64bit ์„ค์น˜์™€ ์„ค์น˜ ํ™•์ธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

    ์ฃผ์˜: OS์— ๋งž๊ฒŒ ํ™˜๊ฒฝ๋ณ€์ˆ˜ LD_LIBRARY_PATH(Linux), LIBPATH(AIX)๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    ๋ฌธ์ œ ํ•ด๊ฒฐ

    DB Link ์„ค์ • ๋ฌธ์ œ

    ์ฐธ๊ณ 

    Oracle์„ AL32UTF8๋กœ ์ƒ์„ฑํ•œ ์ƒํƒœ์—์„œ Oracle generic ODBC Gateway๋ฅผ ์ด์šฉํ•ด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ DB Link ๊ตฌ์„ฑ์„ ํ•˜์—ฌ ์ ‘์†ํ•  ๊ฒฝ์šฐ SQLDriverConnectW๋กœ ์ฃผ๋Š” ์ธ์ž๊ฐ€ wchar_t ํ˜•ํƒœ(UTF-16ํ˜•ํƒœ)๊ฐ€ ์•„๋‹ˆ๋ผ UTF- 8 ํ˜•ํƒœ๋กœ ๋“ค์–ด์˜ต๋‹ˆ๋‹ค.

    http://iodbc.org
    $ echo $TB_HOME
    /yuha/t7/tibero7
    
    $ echo $TBGW_HOME
    /yuha/t7/gateway
    $ echo $TB_HOME
    /yuha/t7/tibero7
    
    $ echo $TBGW_HOME
    /yuha/t7/gateway
    $ ldd gw4orcl
            linux-vdso.so.1 => (0x00007ffd9d59b000)
            libclntsh.so.19.1 => /yuha/t7/instantclient_19_16/libclntsh.so.19.1 
    (0x00007f4b5b99a000)
            libdl.so.2 => /lib64/libdl.so.2 (0x00007f4b5b796000) 
            libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4b5b57a000) 
            libm.so.6 => /lib64/libm.so.6 (0x00007f4b5b278000)
            libc.so.6 => /lib64/libc.so.6 (0x00007f4b5aeaa000) 
            libnnz19.so => /yuha/t7/instantclient_19_16/libnnz19.so
    (0x00007f4b5a836000)
            libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f4b5a61c000) 
            librt.so.1 => /lib64/librt.so.1 (0x00007f4b5a414000) 
            libaio.so.1 => /lib64/libaio.so.1 (0x00007f4b5a212000) 
            libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f4b59ff8000)
            /lib64/ld-linux-x86-64.so.2 (0x00007f4b5fab5000) 
            libclntshcore.so.19.1 =>
    /yuha/t7/instantclient_19_16/libclntshcore.so.19.1 (0x00007f4b59a54000)