unixODBC 로 oracle 서버에 연결하기

1. oracle instant client 설치

오라클 홈페이지 에서

  • oracle-instantclient-basic-21.1.0.0.0.-1.x86_64.rpm
  • oracle-instantclient-sqlplus-21.1.0.0.0-1.x86_64.rpm 을 받아서 설치한다.

oracle instant client 는 보통 /usr/lib/oracle/21/client64 에 설치된다.
필요한 경우 $ORACLE_HOME 를 여기로 잡아주면 된다.

2. tnsnames.ora 설정

unixODBC 로 연결하면 필요 없지만 sqlplus 를 사용하는 경우 필요하다.
$ORACLE_HOME/bin/network/admin 에 vim 으로 tnsnames.ora 를 아래와 같이 작성한다.

연결할 원격 정보)

10.10.123.123 : 1521
id : TEST / pw : TEST
database : ORCL
SID : ORCL


tnsname.ora 내용)

ORCL = 
    (DESCRIPTION = 
        (ADDRESS_LIST = 
            (ADDRESS = (PROTOCOL = TCP)(HOST= 10.10.123.123) (PORT = 1521))
        ) 
        (CONNECT_DATA = 
            (SID = ORCL)
        )    
    )
// HOST : 연결하려는 oracle 서버 주소
// SID : oracle SID

3. path export 는 따로 해줄 필요 없음

/etc/bashrc 에

export ORACLE_HOME=/usr/lib/oracle/21/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=AMERICAN_AMERICA.UTF8

과 같은 설정을 따로 해줄 필요 없다.

4. unixODBC 연결을 위한 libsqora.so.21.1 다운로드

오라클 홈페이지에서

  • instantclient-odbc-linuxx64.zip

을 받아서 압축을 푼다.
압축푼 폴더 안의 libsqora.so.21.1 파일을 원하는 곳으로 옮기고 odbcinst.ini 의 Driver, Driver64, Setup 에 경로를 적어준다.
ex) libsqora.so.21.1 을 /usr/lib, /usr/lib64 로 옮겼다.

[OracleDB]
Description     = ODBC for Oracle
Driver          = /usr/lib/libsqora.so.21.1
Driver64        = /usr/lib64/libsqora.so.21.1
Setup           = /usr/lib/libsqora.so.21.1
FileUsage       = 1
DontDLClose     = 1
CPTimeout       = 5000

5. odbc.ini 의 ODBC 설정에 ServerName 정보 추가

<oracle target server ip 주소>:<oracle 포트>/[database]

형식으로 추가하지 않으면
[unixODBC][Oracle][ODBC][Ora]ORA-12162: TNS: 네트 서비스 이름이 부정확하게 지정됨
에러가 발생한다. ex)

[OracleDB]
Trace       = No
Driver      = OracleDB
Description = Oracle ODBC Datasource
SERVER      = 10.10.123.123
PORT        = 1521
SID         = ORCL
User        = TEST
Password    = TEST
Database    = ORCL
ServerName  = //10.10.123.123:1521/ORCL