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>