A veces debemos realizar trabajos donde mezclamos herramientas de código abierto con otras licenciadas y se nos viene el problema. Mientras para el opensource hay muchísima información disponible en internet, para las herramientas licenciadas, generalmente no es así. Hoy te hablare de como instalar los drivers de conexión a db's Oracle en Linux Centos 7 ademas de su modulo Oci8 para php.
Esto que te mostrare en las lineas mas abajo fueron varias noches de no dormir y pruebas y mas pruebas ya que la información es escasa y dividida por internet lo que me tomo tiempo resolver. Pero bueno, aquí va, comenzamos?
Que es Oracle Instant Client?
Las Oracle Instant Client son un grupo de herramientas, apis, módulos. Todos gratuitos para conectar nuestras aplicaciones a bases de datos Oracle, ya sea de forma local o remota.Una forma común es por medio de aplicaciones PHP y el modulo Oci8 que veremos en nuestro articulo hoy.
Requerimientos para Oracle Instant Client en Centos
- Linux Centos 7 (aunque funciona en Centos 6, nos centraremos en la versión 7) actualizado
- Conectividad a internet
- Si la db Oracle no es local, debemos tener conectividad a su servidor desde Centos
Configurando Instant Client Oracle en Linux Centos 7
-Abrimos un browser en nuestro equipo de trabajo y navegamos al URL oficial Oracle para crear una cuenta gratuita y descargar los rpms. No te asustes por la cantidad de datos solicitados, es gratuito (aunque casi que se nos pedirá hasta el RH, jejeje). Solo ten cuidado en descargar los que sirvan para tu equipo, de 32 o de 64bits. Transferimos los rpm descargados a nuestro Linux Centos 7
-Instalamos dependencias en nuestro servidor Centos
yum install libaio
yum groupinstall "Development tools"
-Te muestro los archivos descargados para este articulo
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-jdbc-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-odbc-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-tools-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-jdbc-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-odbc-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-tools-12.1.0.2.0-1.x86_64.rpm
-Instalamos los rpm's
rpm -vi oracle*
-Verificamos su instalación
rpm -qa|grep oracle
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64
oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64
oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64
oracle-instantclient12.1-odbc-12.1.0.2.0-1.x86_64
oracle-instantclient12.1-tools-12.1.0.2.0-1.x86_64
oracle-instantclient12.1-jdbc-12.1.0.2.0-1.x86_64
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64
oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64
oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64
oracle-instantclient12.1-odbc-12.1.0.2.0-1.x86_64
oracle-instantclient12.1-tools-12.1.0.2.0-1.x86_64
oracle-instantclient12.1-jdbc-12.1.0.2.0-1.x86_64
-Verificamos la instalación de librerías y demás archivos (en caso de tu instalación ser de 32 bits, el path cambiaría)
ls -la /usr/lib/oracle/12.1/client64/lib/
total 199296
drwxr-xr-x 2 root root 4096 mar 27 18:56 .
drwxr-xr-x 5 root root 43 mar 27 19:00 ..
-rw-r--r-- 1 root root 342 jul 7 2014 glogin.sql
lrwxrwxrwx 1 root root 21 mar 27 18:56 libclntshcore.so -> libclntshcore.so.12.1
-rw-r--r-- 1 root root 6990875 jul 7 2014 libclntshcore.so.12.1
lrwxrwxrwx 1 root root 17 mar 27 18:56 libclntsh.so -> libclntsh.so.12.1
-rw-r--r-- 1 root root 58793741 jul 7 2014 libclntsh.so.12.1
-rw-r--r-- 1 root root 18027 jul 7 2014 libheteroxa12.so
-rw-r--r-- 1 root root 1768370 jul 7 2014 libipc1.so
-rw-r--r-- 1 root root 544150 jul 7 2014 libmql1.so
-rw-r--r-- 1 root root 6213011 jul 7 2014 libnnz12.so
lrwxrwxrwx 1 root root 15 mar 27 18:56 libocci.so -> libocci.so.12.1
-rw-r--r-- 1 root root 2576030 jul 7 2014 libocci.so.12.1
-rw-r--r-- 1 root root 109549133 jul 7 2014 libociei.so
-rw-r--r-- 1 root root 156353 jul 7 2014 libocijdbc12.so
-rw-r--r-- 1 root root 337137 jul 7 2014 libons.so
-rw-r--r-- 1 root root 118491 jul 7 2014 liboramysql12.so
-rw-r--r-- 1 root root 1564082 jul 7 2014 libsqlplusic.so
-rw-r--r-- 1 root root 1546540 jul 7 2014 libsqlplus.so
-rw-r--r-- 1 root root 4421284 jul 7 2014 libsqora.so.12.1
-rw-r--r-- 1 root root 3670975 jul 7 2014 ojdbc6.jar
-rw-r--r-- 1 root root 3677511 jul 7 2014 ojdbc7.jar
-rw-r--r-- 1 root root 1657951 jul 7 2014 orai18n.jar
-rw-r--r-- 1 root root 86899 jul 7 2014 orai18n-mapping.jar
-rw-r--r-- 1 root root 311555 jul 7 2014 ottclasses.zip
-rw-r--r-- 1 root root 35925 jul 7 2014 xstreams.jar
ls -la /usr/lib/oracle/12.1/client64/lib/
total 199296
drwxr-xr-x 2 root root 4096 mar 27 18:56 .
drwxr-xr-x 5 root root 43 mar 27 19:00 ..
-rw-r--r-- 1 root root 342 jul 7 2014 glogin.sql
lrwxrwxrwx 1 root root 21 mar 27 18:56 libclntshcore.so -> libclntshcore.so.12.1
-rw-r--r-- 1 root root 6990875 jul 7 2014 libclntshcore.so.12.1
lrwxrwxrwx 1 root root 17 mar 27 18:56 libclntsh.so -> libclntsh.so.12.1
-rw-r--r-- 1 root root 58793741 jul 7 2014 libclntsh.so.12.1
-rw-r--r-- 1 root root 18027 jul 7 2014 libheteroxa12.so
-rw-r--r-- 1 root root 1768370 jul 7 2014 libipc1.so
-rw-r--r-- 1 root root 544150 jul 7 2014 libmql1.so
-rw-r--r-- 1 root root 6213011 jul 7 2014 libnnz12.so
lrwxrwxrwx 1 root root 15 mar 27 18:56 libocci.so -> libocci.so.12.1
-rw-r--r-- 1 root root 2576030 jul 7 2014 libocci.so.12.1
-rw-r--r-- 1 root root 109549133 jul 7 2014 libociei.so
-rw-r--r-- 1 root root 156353 jul 7 2014 libocijdbc12.so
-rw-r--r-- 1 root root 337137 jul 7 2014 libons.so
-rw-r--r-- 1 root root 118491 jul 7 2014 liboramysql12.so
-rw-r--r-- 1 root root 1564082 jul 7 2014 libsqlplusic.so
-rw-r--r-- 1 root root 1546540 jul 7 2014 libsqlplus.so
-rw-r--r-- 1 root root 4421284 jul 7 2014 libsqora.so.12.1
-rw-r--r-- 1 root root 3670975 jul 7 2014 ojdbc6.jar
-rw-r--r-- 1 root root 3677511 jul 7 2014 ojdbc7.jar
-rw-r--r-- 1 root root 1657951 jul 7 2014 orai18n.jar
-rw-r--r-- 1 root root 86899 jul 7 2014 orai18n-mapping.jar
-rw-r--r-- 1 root root 311555 jul 7 2014 ottclasses.zip
-rw-r--r-- 1 root root 35925 jul 7 2014 xstreams.jar
-Creamos un conf para cargar las librerías dinámicas. Prestamos mucha atención a escribir bien el path
sh -c "echo /usr/lib/oracle/12.1/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
-Aunque ya lo hicimos en el paso anterior con un conf, también escribimos el path en el conf principal de librerías dinámicas ademas de donde estarán los módulos php
vi /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/lib64/php/modules/
/usr/lib/oracle/12.1/client64/lib/
-Creamos directorio para tnsnames.ora. Ya el directorio base esta creado, solo es agregarle network/admin
mkdir -p /usr/lib/oracle/12.1/client64/network/admin
-Creamos el archivo tnsnames.ora. Importante tomar nota del tns, ip-servidor-oracle, puerto y servicio-a-conectar
vi /usr/lib/oracle/12.1/client64/network/admin/tnsnames.ora
tns = "(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip-servidor-oracle)(PORT = 1521))
(LOAD_BALANCE = yes)(FAILOVER = ON)
)
(CONNECT_DATA =(SERVER = DEDICATED)
(SERVICE_NAME = servicio-a-conectar)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
)
)
-Creamos script con variables de ambiente
vi /etc/profile.d/client.sh
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin
-Cerramos sesion y nos volvemos a logear. Ejecutamos el script
sh /etc/profile.d/client.sh
-Verificamos variable de ambiente
echo $ORACLE_HOME
/usr/lib/oracle/12.1/client64
-Verificamos conexión desde linea de comandos. Se nos pedirá una contraseña, nuestro Oracle DBA ya debe habernos dado esos datos
sqlplus usuario@tns
SQL*Plus: Release 12.1.0.2.0 Production on Tue Mar 27 19:02:03 2018
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Enter password:
Last Successful login time: Tue Mar 27 2018 12:42:38 -05:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management and Advanced Analytics options
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management and Advanced Analytics options
sqlplus usuario@tns
SQL*Plus: Release 12.1.0.2.0 Production on Tue Mar 27 19:02:03 2018
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Enter password:
Last Successful login time: Tue Mar 27 2018 12:42:38 -05:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management and Advanced Analytics options
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management and Advanced Analytics options
Como instalar y configurar Oci8 en Centos 7
-Instalamos repositorio remi. Por default Centos 7 viene con php 5.4 donde no nos funcionara Oci8. Debemos mínimo instalar php 7 y en Remi ya lo tenemos todo
-Instalamos php 7.0
yum install yum-utils
yum-config-manager --enable remi-php70
Para mis pruebas yo instale los siguientes módulos, puede que no se necesiten todos, es tu tarea verificar si podemos quitar alguno sin que afecte la instalación de Oci8
yum install php-cli php-mcrypt php-xml php-devel php-pecl-jsonc php-pecl-zip php-pdo php php-gd php-ldap php-process php-fedora-autoloader php-pecl-jsonc-devel php-mbstring php-common php-mysqlnd php-pear
-Verificamos paquetes php instalados
rpm -qa|grep php
php-common-7.0.29-1.el7.remi.x86_64
php-gd-7.0.29-1.el7.remi.x86_64
php-ldap-7.0.29-1.el7.remi.x86_64
php-fedora-autoloader-1.0.0-1.el7.noarch
php-pear-1.10.5-6.el7.remi.noarch
php-pecl-zip-1.15.2-1.el7.remi.7.0.x86_64
php-json-7.0.29-1.el7.remi.x86_64
php-pdo-7.0.29-1.el7.remi.x86_64
php-devel-7.0.29-1.el7.remi.x86_64
php-mysqlnd-7.0.29-1.el7.remi.x86_64
php-mcrypt-7.0.29-1.el7.remi.x86_64
php-xml-7.0.29-1.el7.remi.x86_64
php-process-7.0.29-1.el7.remi.x86_64
php-cli-7.0.29-1.el7.remi.x86_64
php-7.0.29-1.el7.remi.x86_64
php-mbstring-7.0.29-1.el7.remi.x86_64
-Verificamos paquetes php instalados
rpm -qa|grep php
php-common-7.0.29-1.el7.remi.x86_64
php-gd-7.0.29-1.el7.remi.x86_64
php-ldap-7.0.29-1.el7.remi.x86_64
php-fedora-autoloader-1.0.0-1.el7.noarch
php-pear-1.10.5-6.el7.remi.noarch
php-pecl-zip-1.15.2-1.el7.remi.7.0.x86_64
php-json-7.0.29-1.el7.remi.x86_64
php-pdo-7.0.29-1.el7.remi.x86_64
php-devel-7.0.29-1.el7.remi.x86_64
php-mysqlnd-7.0.29-1.el7.remi.x86_64
php-mcrypt-7.0.29-1.el7.remi.x86_64
php-xml-7.0.29-1.el7.remi.x86_64
php-process-7.0.29-1.el7.remi.x86_64
php-cli-7.0.29-1.el7.remi.x86_64
php-7.0.29-1.el7.remi.x86_64
php-mbstring-7.0.29-1.el7.remi.x86_64
-Instalamos Oci8 en nuestro Linux Centos 7 actualizado
yum install php-oci8
-Abrimos los puertos 80 y 443 en nuestro servidor (en caso, claro, de que estés ejecutando firewalld)
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
-Reiniciamos el servicio de firewalld para que tome cambios
systemctl restart firewalld
-Creamos un archivo para probar la carga de Oci8 entre los módulos php instalados
vi /var/www/html/test.php
<?php
phpinfo();
?>
-Le damos permisos a apache
chown apache.apache /var/www/html/test.php
-Reiniciamos el servicio de apache para que lea los módulos php instalados
systemctl restart httpd
-Abrimos un browser en otro equipo y navegamos a nuestro servidor para verificar que se cargue el modulo Oci8
-En el listado debe aparecernos el modulo oci8 con sus parámetros
Unas tareas son mas complejas que otras, pero instalar Oracle Instant Client y su modulo Oci8 en Linux Centos debe ser sin problemas siempre y cuando sigas un orden y prestes atención a los detalles
Artículos recomendados: Como instalar Zend Framework 2 paso a paso
Como instalar VirtualBox headless paso a paso
Como personalizar seguridad de Oracle Java
Como instalar java en linux paso a paso
Como instalar Virtualbox en Linux Ubuntu 16.04
Quiero vivir de mi blog, de enseñar opensource, pero esto no sera posible sin tu apoyo, me ayudas?
Satisfech@ con el articulo? Bien, hazme un favor, compártelo en tus redes sociales (compartir es sexy). Escríbeme en los comentarios aquí debajo y pasa la voz compartiendo el tweet.
Sígueme en twitter, google+, facebook, email, YouTube o Patreon y podrás estar enterado de todas mis publicaciones.Como instalar Instant Client #Oracle en #Linux #Centos 7 https://t.co/YdNqKgxh1l pic.twitter.com/MJyc7Nn0aG— Manuel Cabrera C (@drivemeca) March 29, 2018
Disfrútenlo.
No hay comentarios:
Publicar un comentario
Dejame un comentario, aprecio la retroalimentacion. Leave me a comment, I appreciate the feedback.