PHP와 tbOCI(Tibero OCI) 연동
PHP와 tbOCI(Tibero OCI) 연동
테스트 환경
OS : OEL release 7.2
PHP : 5.6.11
Tibero : 5SP1 FS05
Oracle : 10.2.0.3(10g Release 2)
Tibero OCI 설치
Tibero OCI
는 참 아이러니 한 명칭이다.
Tibero는 Tibero니깐 맞다.
하지만, OCI는 Oracle Call Interface의 약자다.
Tibero지만 Oralce이다. 오묘한 명칭이다.
OCI와 관련해서는 해당을 참조하자.
Tibero OCI 설치
라고 했지만 실제로는 TIbero Client 설치와 동일하다.
(또는, Tibero 엔진 설치와 동일하다.그게 그거다.)- 티맥스소프트 TECHNET에서 설치하고자 하는 엔진을 받을 수 있다.
- 문제는 설치 파일별로
Tibero OCI
라이브러리인libtboci.so
파일이 없는 경우가 있다.
(좀 더 정확하게는 들어있는 경우가 있다.) - 따라서, 해당
libtboci.so
라이브러리가 없는 경우 TMAX에 요청하는게 빠르다. - 정상적인 경우라면
$TB_HOME/client/lib/libtboci.so
에 존재하게 된다.
$ gzip -dc tibero5-bin-5_rel_FS05-linux64-127068-opt-tested.tar.gz | tar -xvf -
Oracle Client 설치
- oracle 사이트 이용하여 서버버전(리눅스 64bit)에 맞는 Instant Client를 확보한다.
(Instant Client가 아니어도 상관은 없다. 가벼워서 사용하기 좋다.) - zip 파일로 적당한 위치에 압축을 푼다.(본 테스트에서는 OS 계정의
HOME
경로 아래로 설정하였다.) - 참고로 Oracle DBLINK에서 퍼왔다.
$ unzip instantclient-basic-linux-x86-64-10.2.0.3-20070103.zip
- Instant Client Package 중 SDK가 추가적으로 필요하다. (동일한 사이트에서 받을 수 있다.)
- OCI와 관련된 Header 파일들이 들어있다.
$ unzip instantclient-sdk-linux-x86-64-10.2.0.3-20070103.zip
PHP 설치
- 당연한 이야기지만 PHP를 설치해야 한다.
- PHP 사이트에서 받을 수 있다.
- 버전은 크게 상관없는듯 하니 필요한 버전을 받도록 하자.(본 테스트에서는 5.6.11버전을 사용한다.)
- 적당한 위치에 압출을 풀어주고 역시나 적당한 위치에 설치해 준다.
(본 테스트에서는$HOME/php5
경로에 PHP를 설치한다.)
$ gzip -dc php-5.6.11.tar.gz | tar -xvf -
$ cd php-5.6.11
$ ./configure --prefix=$HOME/php5 ##경로는 환경에 맞게 변경
$ make
$ make install
OS 계정 환경설정
- Oracle client 및 Tibero client 경로, Library 경로 등을 추가한다.
ORACLE_HOME
및TIBERO_HOME
경로는 위의 각 Client 설치 경로가 된다.- 각 경로는 적당한 위치로 지정한다.(본 테스트에서는 OS 계정의
HOME
경로 아래로 설정하였다.) - 본 테스트에서는 리눅스의
bash
쉘을 사용하므로$HOME/.bash_profile
을 편집한다.
- 다른 쉘을 사용하는 경우 해당 쉘의 환경파일을 편집하면 된다.(e.g.
.profile
등) - OS에 따라 Library 경로 설정이 달라진다.(e.g.
SHLIB_PATH
,LIBPATH
,LD_LIBRARY_PATH
등등)
- 다른 쉘을 사용하는 경우 해당 쉘의 환경파일을 편집하면 된다.(e.g.
- 아래와 같은 내용을 추가해 준다.(해당 OS 계정으로 재접속시 적용된다. 또는 강제적용(
. ~/.bash_profile
)한다.) - PHP의 경우도 설치경로를 추가 해주어야 한다.
PHP_HOME
추가 및PATH
등록이 필요하다.제품_HOME
환경변수를 설정하는 이유는 다음과 같다.(꼭 필요하지는 않을 수 있다.)
각 제품(Software)별로 경로를 단순화하고 환경설정 파일의 가독성을 높일 수 있다.
간혹 제품별로 기본적으로제품_HOME
경로를 통해 구현되는 로직이 있기는 하다.
하지만PATH
나Labrary 경로
설정을 통해 대부분은 해결된다.
(전략)
############## TIBERO ENV ##############
TB_HOME=$HOME/tibero5
export TB_HOME
LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
PATH=.:$TB_HOME/bin:$TB_HOME/client/bin:$PATH
export PATH
##################ORACLE ENV##################
ORACLE_HOME=$HOME/instantclient_10_2
export ORACLE_HOME
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
export LD_LIBRARY_PATH
##############PHP ENV############
PHP_HOME=$HOME/php5
export PHP_HOME
PATH=.:$PHP_HOME/bin:$PATH
export PATH
$TB_HOME/client/bin/libtbOCI_info
이 포함된 경우 해당 파일을 실행하면 tbOCI 버전을 알 수 있다.- profile 적용 후에 한다.
$ $TB_HOME/client/bin/libtbOCI_info
Get tbOCI Build Version Success!!!
Build Version: 5sp1 r126804
- 설정이 정상적인 경우 PHP 버전도 확인 가능하다.
$ php -v
PHP 5.6.11 (cli) (built: Jun 14 2016 17:43:01)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
라이브러리 설정
- 다음단계를 위해 Tibero Client 라이브러리 경로에 Oracle Client의 일부 파일의 심볼릭 링크 파일을 생성해준다.
- 또한,
libtboci.so
파일을libclntsh.so.10.1
로 심볼릭 링크를 걸어준다.
(tbOCI라는 이름만큼 변태적인 단계다.) - Tibero의 라이브러리를 Oracle의 라이브러리처럼 인식시키는 단계다.
$ cd $TB_HOME/client/lib
$ ln -s libtboci.so libclntsh.so.10.1
$ ln -s libclntsh.so.10.1 libclntsh.so
$ ln -s $ORACLE_HOME/libnnz10.so libnnz10.so
- SDK의 Header 파일들도
$TB_HOME/client/include
로 복사해준다.
$ cp $ORACLE_HOME/sdk/include/* $TB_HOME/client/include/.
oci8 설치
- oci8 설치가 필요하다.
- PHP 확장 모듈인것 같다.
(자세한건 해당페이지를 참조하자.나도 모른다는 말이다.) pecl
이란 명령을 통해 받을 수 있으며phpize
명령으로 설치하게 된다.- 설치전에 OCI관련 함수(
oci_connect()
)를 호출하면 정의되지 않았다고 나온다.
$ php -r "oci_connect();"
Fatal error: Call to undefined function oci_connect() in Command line code on line 1
pecl
명령으로 oci 확장 모듈을 다운받는다.
$ pecl download oci8-2.0.8
downloading oci8-2.0.8.tar ...
Starting to download oci8-2.0.8.tar (1,608,704 bytes)
.................................done: 1,608,704 bytes
File /home/bach/oci8-2.0.8.tar downloaded
- oci 확장 모듈을 적당한 위치에 풀어
phpize
명령으로 PHP 확장모듈을 위한 빌드환경을 만든다. - oci8을 설치한다.
$ tar -xvf oci8-2.0.8.tar
$ cd oci8-2.0.8
$ phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
$ ./configure --with-oci8=shared,instantclient,$TB_HOME/client/lib
$ make all install
- PHP의
ini
파일에 oci8 관련 설정을 추가한다.
$ php --ini
Configuration File (php.ini) Path: $HOME/php5/lib
Loaded Configuration File: (none)
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
$ echo 'extension=oci8.so' >> $HOME/php5/lib/php.ini
$ php --ini
Configuration File (php.ini) Path: $HOME/php5/lib
Loaded Configuration File: $HOME/php5/lib/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
PHP + OCI 설치 확인
- 정상적으로 설치가 되었는지 확인해보자.
$ php -i | grep oci
oci8
oci8.default_prefetch => 100 => 100
oci8.events => Off => Off
oci8.max_persistent => -1 => -1
oci8.old_oci_close_semantics => Off => Off
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20
$ php -m | grep oci
oci8
- 설치후
oci_connect()
함수를 호출하면 파라미터가 부족하다고 나온다.
$ php -r "oci_connect();"
Warning: oci_connect() expects at least 2 parameters, 0 given in Command line code on line 1
'Tibero > 기타' 카테고리의 다른 글
Tibero Session Kill (0) | 2016.09.06 |
---|---|
Tibero To Tibero DB Link (0) | 2016.06.14 |
Tibero To MS-SQL DB Link (0) | 2016.06.03 |
Tibero To Sybase DB Link (0) | 2016.06.03 |
Tibero to Oracle DB Link(Local Gateway) (0) | 2016.06.03 |
댓글