๋ณธ ์ฅ์์๋ DB Link์ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ๊ณผ ์ฅ,๋จ์ ์ ๋ํด์ ์ค๋ช ํฉ๋๋ค.
DB Link๋ ํ์ฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋คํธ์ํฌ์์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ๊ธฐ ์ํด ์ ์ ์ค์ ์ ์ ์ํ๋ ๊ฐ ์ฒด์ ๋๋ค.
์ฅ์
๋ถ์ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ํธ๋ฆฌํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋ฒ๋ง ์ ์ํด๋ Link๋ฅผ ํตํด ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐํธํ ์ ์ํ ์ ์์ต๋๋ค.
๋จ์
Link๋ฅผ ํตํด ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ์ ๊ณผ Lock์ด ์ฆ๊ฐํ ์ ์์ผ๋ฏ๋ก ์ค์๊ฐ ํธ๋์ญ์ ์ด ๋ง์ ์์คํ ์์ ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ฐฐ์น์์ ๊ณผ ๊ฐ์ ํฐ ํธ๋์ญ์ ์ DB Link๋ฅผ ํตํด ์ง์ ์์ ํ ๊ฒฝ์ฐ ์ฅ์ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์ฆ๊ฐํฉ๋๋ค.
DB ์ด์์์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ 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 ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์กด์ฌํด์ผ ํฉ๋๋ค.
Oracle ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ Oracle ์๋ฒ์ ์ฐ๊ฒฐ๋์ง ์๋๋ค๋ฉด DB Link ์ญ์ ์ฐ๊ฒฐ๋ ์ ์์ต๋๋ค.
LONG RAW, NCLOB์ ์ง์ํ์ง ์์ต๋๋ค.
LOB, LONG์ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ ํํ๋ฅผ ์ผ๋ถ ์ง์ํฉ๋๋ค.
insert into (local) ~ select from (dblink)
insert into (dblink) ~ select from (local)
๋ณธ ์ ์์๋ Gateway for Oracle์ ๊ตฌ์ฑ ๋ฐฉ์๊ณผ ์ค์ ๋ฐฉ๋ฒ์ ๋ํด์ ์ค๋ช ํฉ๋๋ค.
Gateway for Oracle์ ๋ค์์ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํฉ๋๋ค.
Local ๋ฐฉ์ Gateway๋ฅผ ๋ฏธ๋ฆฌ ๊ธฐ๋ํ์ง ์๊ณ DB Link๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ Gateway ํ๋ก์ธ์ค๊ฐ ๊ธฐ๋๋๋ ๋ฐฉ์์ผ๋ก, Tibero ์ ๋ฒ์ Gateway for Oracle์ด ๋์ผ ์๋ฒ์ ์กด์ฌํ ๊ฒฝ์ฐ์ Local ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค.
Listener ๋ฐฉ์ Gateway๋ฅผ ๋ฏธ๋ฆฌ ๊ธฐ๋ํด์ Listeningํ๋ ๋ฐฉ์์ผ๋ก ๋ชจ๋ ๊ฒฝ์ฐ์ ์ค์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
Local ๋๋ Listener ๋ฐฉ์ ์ค ํ๋์ ๋ฐฉ์์ ์ ํํ์ฌ ์ค์ ํฉ๋๋ค.
์ค์ ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ ๊ฐ๋ณ์ ์ผ๋ก ์ค๋ช ํ๋ฉฐ ๋์ผํ ๊ฒฝ์ฐ๋ ๊ตฌ๋ถํ์ง ์๊ณ ์ ๋ชฉ์ '๊ณตํต'์ด๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ค์์ UNIX ๊ณ์ด์์ Gateway๋ฅผ ์ค์ ํ๋ ๊ณผ์ ์ ๋๋ค.
profile ์ค์ (๊ณตํต)
Oracle ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ จ ๊ถํ ๋ณ๊ฒฝ(๊ณตํต)
Gateway ๋ฐ์ด๋๋ฆฌ ๋ณต์ฌ(๊ณตํต)
Network Alias ์ค์
๊ฐ ๊ณผ์ ์ ๋ํ ์์ธํ ์ค๋ช ์ ํด๋น ์ ์ ๋ด์ฉ์ ์ฐธ๊ณ ํฉ๋๋ค.
Local ๋ฐฉ์
profile ์ค์ (๊ณตํต) Gateway for Oracle์ด ๊ธฐ๋๋๋ ์ฌ์ฉ์์ OS ํ๊ฒฝ ํ์ผ(.profile, .bash_profile ๋ฑ)์ ๋ค์๊ณผ ๊ฐ์ด ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.
์ค์ ๋ฐฉ๋ฒ
์ค์ ์
Oracle ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ จ ๊ถํ ๋ณ๊ฒฝ(๊ณตํต) Oracle ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ ์ฌ์ฉ์ ๋๋ root ๊ณ์ ์์ ๋ค์๊ณผ ๊ฐ์ด ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
Gateway ๋ฐ์ด๋๋ฆฌ ๋ณต์ฌ(๊ณตํต) ์ง์ ๋ ๊ฒฝ๋ก์ ๋ฐ์ด๋๋ฆฌ ๋ณต์ฌ๋ฅผ ์ํํฉ๋๋ค.
์ค์ ๋ฐฉ๋ฒ
์ค์ ์
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 ์ค์ ์
Gateway ํ๊ฒฝ์ค์ (๊ณตํต) tbgw.cfg ํ์ผ์ ์ด๊ธฐํ ํ๋ผ๋ฏธํฐ์ ์ค์ ๊ฐ์ ๋ช ์ํจ์ผ๋ก์จ Gateway์ ๊ด๋ จ๋ ์ค์ ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. Gateway๋ฅผ ์ค์นํ ์๋ฒ์์ $TBGW_HOME/oracle/config/tbgw.cfg ํ์ผ์ ์ค์ ํฉ๋๋ค.
์ค์ ๋ฐฉ๋ฒ
์ค์ ์
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 ๋ฐฉ์
profile ์ค์ (๊ณตํต)
Gateway for Oracle์ด ๊ธฐ๋๋๋ ์ฌ์ฉ์์ OS ํ๊ฒฝ ํ์ผ(.profile, .bash_profile ๋ฑ)์ ๋ค์๊ณผ ๊ฐ์ด ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.
์ค์ ๋ฐฉ๋ฒ
์ค์ ์
Oracle ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ จ ๊ถํ ๋ณ๊ฒฝ(๊ณตํต)
Oracle ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ ์ฌ์ฉ์ ๋๋ root ๊ณ์ ์์ ๋ค์๊ณผ ๊ฐ์ด ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
Gateway ๋ฐ์ด๋๋ฆฌ ๋ณต์ฌ(๊ณตํต)
์ง์ ๋ ๊ฒฝ๋ก์ ๋ฐ์ด๋๋ฆฌ ๋ณต์ฌ๋ฅผ ์ํํฉ๋๋ค.
์ค์ ๋ฐฉ๋ฒ
์ค์ ์
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 ์ค์ ์
Gateway ํ๊ฒฝ์ค์ (๊ณตํต) tbgw.cfg ํ์ผ์ ์ด๊ธฐํ ํ๋ผ๋ฏธํฐ์ ์ค์ ๊ฐ์ ๋ช ์ํจ์ผ๋ก์จ Gateway์ ๊ด๋ จ๋ ์ค์ ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. Gateway๋ฅผ ์ค์นํ ์๋ฒ์์ $TBGW_HOME/oracle/config/tbgw.cfg ํ์ผ์ ์ค์ ํฉ๋๋ค.
์ค์ ๋ฐฉ๋ฒ
์ค์ ์
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 ํด๋ผ์ด์ธํธ๋ฅผ ์ค์ ํ๋ ๊ณผ์ ์ ๋ํ ์ค๋ช ์ ๋๋ค.
Instant ํด๋ผ์ด์ธํธ ๋ค์ด๋ก๋ ๋ฐ ์์ถ ํด์
profile ์ค์
tnsnames.ora ์์ฑ ๋ฐ ์ค์
Network Alias ์ค์ (UNIX ๊ณ์ด ์ฐธ๊ณ )
๊ฐ ๊ณผ์ ์ ๋ํ ์์ธํ ์ค๋ช ์ ํด๋น ์ ์ ๋ด์ฉ์ ์ฐธ๊ณ ํฉ๋๋ค.
4~6 ๊ณผ์ ์ 3.2.1.1 ๊ณผ 3.2.1.2์ ๊ณผ์ ๊ณผ ๋์ผํ์ฌ ์ฐธ๊ณ ํ์ฌ ์งํํฉ๋๋ค.
Instant ํด๋ผ์ด์ธํธ ๋ค์ด๋ก๋ ๋ฐ ์์ถ ํด์
Oracle ํํ์ด์ง ์ ์ํ ํ Gateway๊ฐ ์ค์น๋ ์๋ฒ์ OS์ bit์ ๋ง๋ Instant ํด๋ผ์ด์ธํธ๋ฅผ ๋ค์ด๋ก๋ํ์ฌ ์์ถ์ ํด์ ํฉ๋๋ค.
๋ค์์ Linux ๋ฒ์ ์ ์คํ ๊ฒฐ๊ณผ์ ๋๋ค.
Profile ์ค์
๋ค์์ profile ์ค์ ์์ ๋๋ค. TNS_ADMIN์ ๊ฒฝ์ฐ tnsnames.ora ํ์ผ์ ์์น๋ฅผ ์ค์ ํฉ๋๋ค.
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
Cannot participate in distributed transactions
์ฐ๊ฒฐ๋ฐฉ์์ OS์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
Tibero ODBC Driver ์ง์ ์ฐ๊ฒฐ๋ฐฉ์์ ๊ฒฝ์ฐ Oracle to Tibero ํธ์ถ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Oracle ์๋ฒ์ Gateway ์๋ฒ๊ฐ ๋ถ๋ฆฌ๋ ๊ฒฝ์ฐ ๋ค์์ ์ค์ ์ผ๋ก ์ํ๋์ง๋ง ๋ถ๋ฆฌ๋์ง ์๋๋ค๋ฉด ๋ชจ๋ ์ค์ ์ Oracle์๋ฒ์์ ํฉ๋๋ค.
[๊ทธ๋ฆผ 4.2] Oracle to Tibero ํธ์ถ ํ๋ฆ
create database ~ using ๋ฌธ๊ตฌ๋ฅผ ์ํํ๋ค.
tnsnames.ora ํ์ผ์ Alias๋ช ์ SID๋ฅผ ์ฐพ๋๋ค.
listener.ora ํ์ผ์์ SID๋ฅผ ์ฐพ์์ ๋ค์ ๋จ๊ณ๋ฅผ ์ํํ๋ค.
init{sid}.ora ํ์ผ์ ์ค์ ์ ๋ณด๋ฅผ ์ฝ์ด์จ๋ค.
๋ค์์ UNIX ๊ณ์ด์์ DB Link ๋ฅผ ์ค์ ํ๋ ๊ณผ์ ์ ๋๋ค.
์ฌ์ ํ์ธ ๋ฐ ์ค๋น์ฌํญ
Tibero ํด๋ผ์ด์ธํธ ์ค์น
tnsnames.ora ์ค์
Listener ์ค์ ๋ฐ ๊ธฐ๋
๊ฐ ๊ณผ์ ์ ๋ํ ์์ธํ ์ค๋ช ์ ํด๋น ์ ์ ๋ด์ฉ์ ์ฐธ๊ณ ํฉ๋๋ค.
์ฌ์ ํ์ธ ๋ฐ ์ค๋น์ฌํญ ๋ค์๊ณผ ๊ฐ์ ์ฌํญ๋ค์ ํ์ธ ๋ฐ ์ค๋นํฉ๋๋ค.
Oracle Gateway ์ค์น ์ฌ๋ถ ํ์ธ ๋ค์๊ณผ ๊ฐ์ด ์กฐํํ์ฌ ํ์ผ ์ฌ์ด์ฆ๊ฐ 0๋ณด๋ค ํฌ๋ฉด ์ค์น๋ ๊ฒ์ด๊ณ , 0์ผ๋ก ๋์จ๋ค๋ฉด ์ค์น๊ฐ ๋์ง ์์ ๊ฒ์ ๋๋ค.
Oracle Gateway ํ์ผ์ bit ํ์ธ OS ๋ช ๋ น์ด์ธ file ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ 32bit์ธ์ง 64bit์ธ์ง ํ์ธํฉ๋๋ค. ๋ค์์ Gateway ํ์ผ์ bit๋ฅผ ํ์ธํ๋ ์์ ์ด๋ค. ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ํด๋น ํ์ผ์ Linux 64bit์ธ ๊ฒ์ ํ ์ธํ ์ ์์ต๋๋ค.
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 ํ์ผ์ ์ค์ ์ ๋ณด๋ฅผ ํ์ธํฉ๋๋ค.
tnsnames.ora ์ค์
DB Link Object๋ฅผ ์์ฑํ๋ Oracle ์๋ฒ์์ $ORACLE_HOME/network/admin/tnsnames.ora ํ์ผ์ ์ค์ ํฉ๋๋ค.
์ค์ ๋ฐฉ๋ฒ
์ค์ ์
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์ธ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
Oracle Gateway ํ๊ฒฝ์ค์ (init{DSN}.ora)
Gateway ์๋ฒ์ ์ค์ ํ๊ณ '$ORACLE_HOME/hs/admin' ๋๋ ํฐ๋ฆฌ ์์ inithsodbc.ora ๋๋ initdg4odbc.ora ํ์ผ์ ๋ณต์ฌํ์ฌ init{DSN}.ora ํ์ผ์ ์์ฑํฉ๋๋ค.
๋ค์์ ์ค์ ํญ๋ชฉ์ ๋ํ ์ค๋ช ์ ๋๋ค.
Oracle Gateway ํ๊ฒฝ์ค์ ํญ๋ชฉ
Oracle Gateway ํ๊ฒฝ๋ณ์
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๋ฅผ ์ค์นํ๋ ๊ณผ์ ์ ๋ํ ์ค๋ช ์ ๋๋ค.
Driver Manager ์ค์น
profile ์ค์
tnsnames.ora ์ค์ (UNIX ๊ณ์ด ์ฐธ๊ณ )
ODBC ํ๊ฒฝ ํ์ผ ์ค์ ๋ฐ ํ์ธ
๊ฐ ๊ณผ์ ์ ๋ํ ์์ธํ ์ค๋ช ์ ํด๋น ์ ์ ๋ด์ฉ์ ์ฐธ๊ณ ํฉ๋๋ค.
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) ์ค์น ํ์ธ
profile ์ค์
profile ๋ด์ ์๋์ ๊ฐ์ ๋ด์ฉ์ ์ถ๊ฐํฉ๋๋ค. IODBC_HOME์ ๊ฒฝ์ฐ iodbc๋ฅผ ์ค์นํ ์์น๋ก ์ค์ ํฉ๋๋ค.
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๋ฅผ ์ด์ํ ์ฐ๊ฒฐ ํ ์คํธ ์ฌ์ฉ ์์ ๋๋ค.
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 ์ค์ ์ ํตํด ํด๊ฒฐํฉ๋๋ค. ๋ค์ ์ค์ ๊ฐ์ ์ฌ์ดํธ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ต๋๋ค.
์์ ๊ฐ์ด ์ค์ ํ ํ์ ์ฌ์ ์ ๋ฐ ํ ์คํธ๋ฅผ ์ํํ๋ฉด ์ ์์ ์ผ๋ก ์ํ๋ฉ๋๋ค.
Long Type, CLOB, BLOB ํ์ ์ Link๋ฅผ ํตํด DML ์์ ํ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
< ์ ์์ ์ฌ์ฉํ alias >
Source DB์ tbdsn.tbr์ ์ค์ ๋ Alias ์ด๋ฆ์ด๋ค.
Multi Threaded Agent๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
DB Link๋ฅผ ํตํ UDF(User Defined Function) ์ฌ์ฉ์ PSM(=PL/SQL) ๋ด๋ถ์์ ๊ฐ๋ฅํฉ๋๋ค.
Select ์ ์ ์ง์ ์ ์ผ๋ก DB Link๋ฅผ ํตํ UDF ์ฌ์ฉ์ ์ง์ํ์ง ์์ต๋๋ค.
PSM(=PL/SQL) ๋ด๋ถ์์ DB Link UDF๋ฅผ ์ฌ์ฉํ๊ณ ํด๋น PSM์ Select ์ ์์ ๊ฐ์ ์ฌ์ฉํ๋ ๊ตฌ์กฐ๋ ๊ฐ๋ฅํฉ๋๋ค.
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)
DB Link ์์ฑ ๋ฐ ํ์ธ(UNIX ๊ณ์ด ์ฐธ๊ณ )
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
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์ ํ๊ฒฝ๋ณ์๋ฅผ ๋ฐ๋ฅธ๋ค. (์ ํ)
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 ์๋ฒ์ ์ ์ํ ์ฌ์ฉ์ ์ด๋ฆ์ด๋ค.
< ์ ์ ํจ์ค์๋ >
$ 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:$PATHchmod 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
[/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
$ cd $TBGW_HOME/oracle/config
$ vi tbgw.cfg
LOG_DIR=/yuha/t7/gateway/oracle/log
LOG_LVL=2
MAX_LOG_SIZE=502400000create 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:$PATHchmod 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
[/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
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
$ 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
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
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
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.oraHS_FDS_CONNECT_INFO = dg4_tibero
HS_FDS_SHAREABLE_NAME = /yuha/oracle/tibero7/client/lib/libtbodbc.soHS_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
ํ๊ฒฝ๋ณ์
์ค๋ช
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-guimakemake 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 strippedexport 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
$ 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 = tmaxiodbctest "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=TRACEHS_FDS_CONNECT_INFO=Tibero7
# iODBC Driver Manager
HS_FDS_SHAREABLE_NAME=/yuha/oracle/iodbc/lib/libiodbc.soSQL> select name, value$ from sys.props$ where name like 'NLS_CHAR%';
NAME
-----------------------------------------------------------------
VALUE$
-----------------------------------------------------------------
NLS_CHARACTERSET
AL32UTF8SQL> 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: 14464HS_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์ฃผ์
Local ๋ฐฉ์์ ๊ฒฝ์ฐ, Tibero ์๋ฒ๊ฐ ๊ธฐ๋ํ๊ธฐ ์ ์ ์ ํ๊ฒฝ๋ณ์ ์ค์ ์ ๊ฐ์ง๊ณ ๊ธฐ๋์ด ๋์ด์ผ ํฉ๋๋ค. ๋ง์ฝ, ํ๊ฒฝ๋ณ์ ์ค์ ๋ฐ Local ๋ฐฉ์์ ์๋กญ๊ฒ ๊ตฌ์ฑํ๋ค๋ฉด Tibero ์๋ฒ ์ฌ๊ธฐ๋์ด ํ์ํ๋ฉฐ ์ฌ๊ธฐ๋์ด ํ๋ค๋ค๋ฉด Listener ๋ฐฉ์์ ๊ณ ๋ คํฉ๋๋ค.
OS์ ๋ง๊ฒ ํ๊ฒฝ๋ณ์ LD_LIBRARY_PATH(Linux), LIBPATH(AIX)๋ฅผ ์ค์ ํฉ๋๋ค.
TBGW_HOME์ Tibero ๋ฐ์ด๋๋ฆฌ ํด๋ ๋ฐ์ผ๋ก ์ค์ ํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
์ฃผ์
profile ์ค์ ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ถํ์ ์ค์ ํ ํ ldd gw4orcl๋ฅผ ์ํํ์ ๋ Oracle ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ not found ๋ถ๋ถ์ด ์์ด์ผ ํฉ๋๋ค.
์ฃผ์
Local ๋ฐฉ์์ ๊ฒฝ์ฐ, Tibero ์๋ฒ๊ฐ ๊ธฐ๋ํ๊ธฐ ์ ์ ์ ํ๊ฒฝ๋ณ์ ์ค์ ์ ๊ฐ์ง๊ณ ๊ธฐ๋์ด ๋์ด์ผ ํฉ๋๋ค. ๋ง์ฝ, ํ๊ฒฝ๋ณ์ ์ค์ ๋ฐ Local ๋ฐฉ์์ ์๋กญ๊ฒ ๊ตฌ์ฑํ๋ค๋ฉด Tibero ์๋ฒ ์ฌ๊ธฐ๋์ด ํ์ํ๋ฉฐ ์ฌ๊ธฐ๋์ด ํ๋ค๋ค๋ฉด Listener ๋ฐฉ์์ ๊ณ ๋ คํฉ๋๋ค.
OS์ ๋ง๊ฒ ํ๊ฒฝ๋ณ์ LD_LIBRARY_PATH(Linux), LIBPATH(AIX)๋ฅผ ์ค์ ํฉ๋๋ค.
TBGW_HOME์ Tibero ๋ฐ์ด๋๋ฆฌ ํด๋ ๋ฐ์ผ๋ก ์ค์ ํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
์ฃผ์
profile ์ค์ ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ถํ์ ์ค์ ํ ํ ldd gw4orcl๋ฅผ ์ํํ์ ๋ Oracle ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ not found ๋ถ๋ถ์ด ์์ด์ผ ํฉ๋๋ค.
์ฃผ์
LD_LIBRARY_PATH ์ค์ ์ ํด๋น ๊ฒฝ๋ก์ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์กด์ฌํ๋ฏ๋ก $ORACLE_HOME์ ์ค์ ์ ์ฃผ์ ํ๋ค.
OS์ ๋ง๊ฒ ํ๊ฒฝ๋ณ์ LD_LIBRARY_PATH(Linux), LIBPATH(AIX)๋ฅผ ์ค์ ํ๋ค.
profile ์ค์ ํ ldd gw4orcl๋ฅผ ์ํํ์ ๋ Oracle ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด์ not found ๋ถ๋ถ์ด ์์ด์ผ ํ๋ค. $ ldd gw4orcl
์ฃผ์
OS์ ๋ง๊ฒ ํ๊ฒฝ๋ณ์ LD_LIBRARY_PATH(Linux), LIBPATH(AIX)๋ฅผ ์ค์ ํฉ๋๋ค.
์ฃผ์: ๊ดํธ๊ฐ ๋๋ฝ๋๋ ๊ฒฝ์ฐ, ๋ฌธ์ ๋ฅผ ์ฐพ์ ์ ์์ผ๋ฏ๋ก ์ ๋ฌธ๋ฒ์ ์ฃผ์ํฉ๋๋ค.
์ฃผ์: OS์ ๋ง๊ฒ ํ๊ฒฝ๋ณ์ LD_LIBRARY_PATH(Linux), LIBPATH(AIX)๋ฅผ ์ค์ ํฉ๋๋ค.





๋์ DB ์๋ฒ์ ์ ์ํ ํจ์ค์๋์ด๋ค.
์ฒ๋ฆฌ ๋ฐฉ์์ ๊ธ๋ก๋ฒ ํธ๋์ญ์ (Global Transaction)๊ณผ ๋ก์ปฌ ํธ๋์ญ์ (Local Transaction) ์ค์์ ์ค์ ํ๋ค. Commit์ ์์ฒญํ ๊ฒฝ์ฐ ๊ธ๋ก๋ฒ ํธ๋์ญ์ ๋ง Two- phaseCommit์ผ๋ก ๋์ํ๋ค.
TX_MODE์ ๊ฐ์ ์ฒ๋ฆฌ ์ฌ๋ถ์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ ์ ์๋ค.
GLOBAL : ๊ธ๋ก๋ฒ ํธ๋์ญ์ ์ธ ๊ฒฝ์ฐ ์ค์ ๊ฐ์ด๋ค.
LOCAL : ๋ก์ปฌ ํธ๋์ญ์ ์ธ ๊ฒฝ์ฐ ์ค์ ๊ฐ์ด๋ค.
๋ก๊ทธ ํ์ผ์ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ค์ ํ๋ค. (๋จ์ : Byte)
์ฒ๋ฆฌ ๋ฐฉ์์ ๊ธ๋ก๋ฒ ํธ๋์ญ์ (Global Transaction)๊ณผ ๋ก์ปฌ ํธ๋์ญ์ (Local Transaction) ์ค์์ ์ค์ ํ๋ค. Commit์ ์์ฒญํ ๊ฒฝ์ฐ ๊ธ๋ก๋ฒ ํธ๋์ญ์ ๋ง Two- phaseCommit์ผ๋ก ๋์ํ๋ค.
TX_MODE์ ๊ฐ์ ์ฒ๋ฆฌ ์ฌ๋ถ์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ ์ ์๋ค.
GLOBAL : ๊ธ๋ก๋ฒ ํธ๋์ญ์ ์ธ ๊ฒฝ์ฐ ์ค์ ๊ฐ์ด๋ค.
LOCAL : ๋ก์ปฌ ํธ๋์ญ์ ์ธ ๊ฒฝ์ฐ ์ค์ ๊ฐ์ด๋ค.
๋ก๊ทธ๋ ๋ฒจ์ ์ค์ ํ๋ค. (๊ธฐ๋ณธ๊ฐ : 2)
0-6 ๊น์ง ์ค์ ๊ฐ๋ฅํ๋ฉฐ ๋์์๋ก ๋ง์ ๋ก๊ทธ๋ฅผ ์์ฑํ๋ค.
์ด์์ธ ๊ฒฝ์ฐ : 1 ๋๋ 2๋ฅผ ์ค์ ํ๋ค.
๋ฌธ์ ๋์์ธ ๊ฒฝ์ฐ : 5 ๋๋ 6์ ์ค์ ํ๋ค.
๋์ Oracle ์๋ฒ์ ์ฐ๊ฒฐ ๋ฐฉ์ ๋ฐ SID๋ฅผ ์ค์ ํ๋ค.
SERVER : ์๋ฒ์ ์ฐ๊ฒฐ ๋ฐฉ์์ด๋ค.
SERVICE_NAME : ๋์ ORACLE ์๋ฒ์ SID ์ด๋ค.
DB Link์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ Tibero ์๋ฒ์ ์ ์ ํฌํธ ๋ฒํธ ์ ๋ณด์ด๋ค.
๋์ Oracle ์๋ฒ์ SID๋ฅผ ์ค์ ํ๋ค.
- SID : ์์๋ก ์ค์ ํ๋ค. ๋จ, Gateway ์๋ฒ์ listener.ora์ SID_NAME ์ค์ ๊ณผ ์ผ์นํด์ผ ํ๋ค.
์์๋ก ์ค์ ํ๋ค. ๋จ, Oracle ์๋ฒ์์ ์ค์ ๋ tnsnames.ora์ SID ์ค์ ๊ณผ ์ผ์นํด์ผ ํ๋ค. Oracle Gateway ์ค์ ํ์ผ์ ์ฐพ์ ๋ ํด๋น ์ด๋ฆ์ ์ฌ์ฉํ๋ค.
Oracle Gateway์ ๋ก๊ทธ ๋ ๋ฒจ์ ์ค์ ํ๋ค. '$ORACLE_HOME/hs/log' ๊ฒฝ๋ก์ ๋ก๊ทธ๊ฐ ๋จ๋๋ค. (์ ํ)
ODBC Manager์์ ๋ก๋ํ๋ Tibero ODBC Driver ํ์ผ์ด๋ค. ํด๋น ํ์ผ ์กด์ฌ ์ฌ๋ถ ๋ฐ ๊ถํ์ ๋ํด์ ํ์ธ์ด ํ์ํ๋ค.
$ 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)