php_oracle-instantclient_01.vol1.egg

php_oracle-instantclient_01.vol2.egg

php_oracle-instantclient_01.vol3.egg

php_oracle-instantclient_01.vol4.egg

php_oracle-instantclient_01.vol5.egg

php_oracle-instantclient_01.vol6.egg

기본 운영 환경을  Nginx, php, mariadb 에 Oracle 10g로 pdo-oci 와 oci8 을 이용하여 연동 설정을 한다.



1. 일단  오라클 사이트에서  instantclient 패키지을 다운 받아 설치 한다.

   ( http://www.oracle.com/technetwork/indexes/downloads/index.html#database )


   oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

   oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm

   oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm




2. oci8 을  다운로하여 컴파일 한다.

  ( wget http://pecl.php.net/get/oci8-1.4.9.tgz  또는  http://pecl.php.net/package/oci8  )   

 

   pecl download oci8-1.4.9.tgz

tar xvzf oci8-1.4.9.tgz
cd oci8-1.4.9
phpize
./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib
ln -s /usr/include/oracle/11.2/client64/ /usr/lib/oracle/11.2/client64/lib/include
make all install



3. pdo_oci 드라이버 설치

  (첨부 : 

pdo_oci_php7.1.tar

  ) 

  또는 rpm으로 설치  --> 확인 필요. 

 

  pdo_oci_php7.tar 압출 해제 후 컴파일

tar xvf pdo_oci_php7.tar cd pdo_oci phpize ./configure --with-pdo-oci=instantclient,/usr,11.2 make make install

vim /etc/php.d/pdo_oci.ini

extension=pdo_oci.so



4. PHP와 OCI 연동

  

   echo 'extension=oci8.so' > /etc/php.d/oci8.ini

systemctl restart nginx

systemctl restart php-fpm



5. PHP.ini  설정

  

   [oci8]

   ; oci8.statement_cache_size int    

   ; 명령문 캐싱을 사용 가능하게 하고, 캐시할 명령문의 수를 지정한다. 명려문 캐싱을 사용하지 않으려면

   ; 옵션을 0 으로 설정한다.

   ;  -- 명령문 캐싱은  명령문 텍스트를 데이터베이스로 전송할 필요를 없애고 명령문에 대한 메타 테이터를 

   ;  -- php로 다시 전송하지 않아도 됩다. 이렇게 하면 연결이 유지되는 동안 명령문을 다시 사용하는 응용 프로그램

   ;  -- 에서 전반적인 시스템 성능이 향상된다

oci8.statement_cache_size = 0

--> 명령문 캐싱을 사용안함.

   


6. Oracle instantclient lib 링크 및 환경변수 파일(/etc/profile)에 추가하기

  

  [root@localhost ]# ln  -s  /usr/lib/oracle/11.2/client64   /usr/lib/oracle/11.2/client    

   --> sqlplus 명령 실행시 발생하는 lib 오류를 해결해야 한다.  

     예) ./sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory


  [root@localhost ]# vim  /etc/profile  

   # Oracle 라이브러리 추가

   export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib

   alias sqlplus='/usr/lib/oracle/11.2/client64/bin/sqlplus'



7.  확인하기

  1.  [root@localhost tmp]# php -r "oci_connect();"

      PHP Warning:  oci_connect() expects at least 2 parameters, 0 given in Command line code on line 1

      PHP Stack trace:

      PHP   1. {main}() Command line code:0

      PHP   2. oci_connect() Command line code:1


     → oci_connect의 사용법이 잘못되었다고 한다. PHP와 OCI 모듈이 연동된 것이다.

 

 2. [root@localhost tmp]# sqlplus  DB계정/DB비번@오라클서버:1521/DB명

     SQL*Plus: Release 11.2.0.4.0 Production on Wed Jan 16 18:03:03 2019

     Copyright (c) 1982, 2013, Oracle.  All rights reserved.


     Connected to:

     Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production

     With the Partitioning and Real Application Clusters options


    SQL>

+ Recent posts