Tibero to Oracle, Oracle to Tibero / dblink

eungjj·2023년 11월 15일

- TIBERO

목록 보기
2/8

--
참고함
https://www.tmaxtibero.com/img/service/pdf/Tibero%20to%20Oracle%20DB%20Link%20Guide.pdf

--


oracle에서 listening port 확인 쿼리
select *
from table(dbms_xplan.display_cursor);   
port단 생각을 좀 많이 해보쟈

======================================================
📍tbgw.cfg

LOG_LVL=2
LISTENER_PORT=8999
LOG_DIR=/home/tibero/gateway/oracle/log
MAX_LOG_SIZE=10M
MAX_LOG_BACKUP_SIZE=100M
FETCH_SIZE=64k
ORACLE_FETCH_SIZE=1M
MAX_POOL_SIZE=500

CHARACTER_SET=UTF8

📍tnsnames.ora
orcl1 = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT=1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =orcl1)
)
)

📍tbdsn.tbr --tibero instance
orcl1=(
(GATEWAY=(LISTENER=(HOST=localhost)(PORT=8999))
(TARGET=orcl1)
(TX_MODE=LOCAL)
)
)

======================================================

★★★
Tibero to Oracle

0) [Oracle 서버]

$lsnrctl status 확인

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))

--안떠있다면
$lsnrctl start


1) [Tibero 서버]
Oracle client 설치
--Oracle Server 에서 정보 가져와.

  • /home/oracle/database/product/12g/network/admin/listener.ora [oracle 서버에서 참고]
  • /home/tibero/instantclient_11_2/network/admin/tnsnames.ora @계정 Oracle 계정 추가라고 생각
orcl1 = (DESCRIPTION =
               (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT=1521))
               (CONNECT_DATA =
               (SERVER = DEDICATED)
               (SERVICE_NAME =orcl1)
        )
)
--그리고 alias랑 SVname, SID 일단 다 통일해줬는데 확실히 알 필요있음.

-- bash_profile 환경변수 설정 [세가지 필수]

  • export LD_LIBRARY_PATH=$ ORACLE_HOME:$ LD_LIBRARY_PATH
  • export PATH=$ ORACLE_HOME/bin:$ PATH
  • export ORACLE_HOME=/home/tibero/instantclient_11_2 ]

2가지 완료 후ㅜ!!!! tbsql 에서의 접속 여부 확인

(ORACLE에서 새로운 user 만들어줬음 // username = orcl1 password = oracle)
tbsql orcl1/oracle@orcl1

2)

추가 환경변수 설정

  • export ORACLE_SID=orcl1
  • export TBGW_HOME=/home/tibero/gateway --tibero6 밖으로 설정하기를 권장

GW는 기본적으로 TBGW_HOME 변수를 통해 설정파일을 읽고 로그파일을 기록한다.

디렉토리 생성 및 tbgw.cfg 파일 생성

mkdir /home/tibero/gateway/log    -GW 관련 로그 파일이 생성되는 위치
mkdir /home/tibero/gateway/config
vi /home/tibero/gateway/config/tbgw.cfg  

LOG_LVL=2
LISTENER_PORT=8999
LOG_DIR=/home/tibero/gateway/oracle/log
MAX_LOG_SIZE=10M
MAX_LOG_BACKUP_SIZE=100M
FETCH_SIZE=64k
ORACLE_FETCH_SIZE=1M
MAX_POOL_SIZE=500

CHARACTER_SET=UTF8

gw4orcl 파일 복사

cp $TB_HOME/client/bin/gw4orcl_11g $TBGW_HOME/gw4orcl   --oracle 11인지 12인지 확인
ldd gw4orcl 
  • GW관련 library에 대한 link가 정상적으로 이루어져있는지 점검해보는 명령어
  • not found 안나오면 됨

$cd $ORACLE_HOME --여기에서 실행..
tbsql orcl1/oracle@orcl1

3)

LISTENER와 GATEWAY에 이상없으면, 연결 완료 됨...

create database link orlink1 connect to orcl1 identified by 'oracle' using 'orcl1'

select *
from dual@orcl1

select *
from user_db_links;

======================================================

#GW는 기본적으로 TBGW_HOME 변수를 통해 설정파일을 읽고 로그파일을 기록한다.

LOCAL 방식 환경변수를 통해서 기동됨, 변수 설정에 변동이 생긴 후엔 T 서버 재기동 필수
LISTENER 방식 -- GW 리스너 포트와 연결

tbboot 를 보고 인스턴스가 동작한다.
이때 인스턴스는 시작할 때의 파라미터 파일의 내용만을 기억하기 때문에 시작한 후에 수정된 파라미터 파일 내용은 반영이 안됨
변경된 사항이 있디면 재부트 해야하는 이유??

-- 완료!!!!

1) [oracle 서버] tibero client 설치

  • 환경변수 설정

    • $ LD_LIBRARY_PATH
    • $ PATH
    • $ TB_HOME
  • Tibero 서버 정보 추가 Alias (IP주소, DB_NAME, PORT)

vi $TB_HOME/client/config/tbdsn.tbr  
   
eun1=(
    (INSTANCE=(HOST=localhost)
              (PORT=8629)
              (DB_NAME=eun1)
    )
)
  • 설정완료후 @Alias 이용하여 tbsql 정상 접속 확인
tbsql sys/tibero@eun1

============GW에 붙기 위한 Oracle 내부 설정============

2)
$ ORACLE_HOME/network/admin/tnsnames.ora

tbsv = (DESCRIPTION =
                (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.188 )(PORT = 1515))
                (CONNECT_DATA = (SID = tbsv))
                (HS = OK)
           )

[EX]

eun1 = (DESCRIPTION =
                (ADDRESS = (PROTOCOL = TCP)(HOST = localhost )(PORT = 1515))
                (CONNECT_DATA = (SID = eun1))
                (HS = OK)
           )

IP, PORT, SID >> GW 서버 정보


3)
$ORACLE_HOME/network/admin/listener.ora

tbsv =
       (ADDRESS_LIST=
                     (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.188 ) (PORT=1515))
)
SID_LIST_tbsv =
        (SID_LIST=
        (SID_DESC=
                (SID_NAME=tbsv)
                (ORACLE_HOME=/ora11/product/11g)
                (PROGRAM=dg4odbc)
        )
)

[EX]


eun1 =
       (ADDRESS_LIST=
                     (ADDRESS=(PROTOCOL=tcp)(HOST=localhost ) (PORT=1515))
)
SID_LIST_eun1 =
        (SID_LIST=
        (SID_DESC=
                (SID_NAME=eun1)
                (ORACLE_HOME=/ora11/product/11g)
                (PROGRAM=dg4odbc)
        )
)
  • SID name 일치 확인 필수

[버전별 상이]
#dg4odbc oracle11g
#hsodbc oracle 10g


4) tnsnames.ora, listener.ora 설정 후 Listener 기동

$ lsnrctl stop  (NAME)
$ lsnrctl start (NAME)
$ lsnrctl status (NAME)

$ tnsping (NAME) >> oracle에서 Cli에서 SV로 접속할 때 리스너가 올라와 있는지, 통신은 되는지 등등 확인 가능

5) ORACLE GW 환경설정

cp $ ORACLE_HOME/hs/admin/initsodbc.ora $ ORACLE_HOME/hs/admin/init(NAME).ora 

SID_NAME 따라 파일 생성> init(NAME).ora

HS_FDS_CONNECT_INFO=(NAME)
HS_FDS_SHAREABLE_NAME= $TB_HOME/client/lib/libtbodbc.so #windows 에서는 불필요

[오류내용] ORA-28500: Oracle 이외 시스템으로 ORACLE을 접속하는데 이 메시지가 리턴되었습니다


$ORACLE_HOME/hs/admin/inithsodbc.ora 파일에서
HS_LANGUAGE=AMERICAN_AMERICA.KO16MSWIN949 #미설정일 때 Listener를 기동하면 NLS_LANG 환경변수를 따른다.
위 구문 주석 뗐더니 실행됨 ..... why........... TB_NLS_LANG=UTF8 이거!?!?!?

§참고§
[Oracle을 AL32UTF8로 생성한 상태에서 Oracle generic ODBC Gateway를 이용해 다른 데이터베이스와 DB Link 구성을
하여 접속할 경우 SQLDriverConnectW로 주는 인자가 wchar_t 형태(UTF-16형태)가 아니라 UTF-8 형태로 들어온다.]


7) DB link 생성 및 확인

create database link tbsv1 connect to "USER명" identified by 'PW' using 'tbsv' ;
-- create database link tblink1 connect to sys identified by 'tibero' using 'eun1';

따옴표 이슈

  • PUBLIC 모든 유저 사용 가능
  • PRIVATE 특정 유저 사용 가능 --생성한 사용자만 사용 가능
select *
from dual@tbsv1 ;
select *
from all_db_links ;

DB link 제거 구문

drop public database link (LINKNAME);

0개의 댓글