HOW TO : Instalación servidor ORACLE XE y soporte en PHP5 sobre DEBIAN ETCH-R4

Hola, voy a describir la manera configuráramos un entorno de desarrollo sobre debian, para programar con Oracle y php, para esto instalamos Oracle XE sobre debian etch-r4  , y la configuración del modulo oci8 , necesario en PHP5 , necesario para consultar bases de oracle en general , pero esto sobre un debian etch-R4 , bueno al grano.

ATENCIÓN : REQUISITO INDESPENSABLE , REPITO ¨INDISPENSABLE¨ , TENER UN SWAP DE POR LO MENOS 1.5GB , si no mejor no sigas adelante.

A) INSTALACIÓN Y CONFIGURACIÓN DE ORACLE XE

1.- Instalación dependencias
#apt-get install bc libaio1

2.- Instalación del paquete , descargarlo desde aquí
#cd /usr/src
#dpkg -i  oracle-xe-universal_10.2.0.1-1.0_i386.deb

3.-  configuración de parámetros
/etc/init.d/oracle-xe configure

Specify the HTTP port that will be used for Oracle Application Express [8080]: 8080
Specify a port that will be used for the database listener [1521]:1521
Ingresar el password para las cuentas de administración (SYS & SYSTEM) : 123456
Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]: y

4.- Configuración de variables de entorno

#vi /root/.bashrc

##Variables de servidor oracle xe
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME
export ORACLE_SID=XE
export PATH

5.- Pruebas de variables

#echo $ORACLE_HOME
#echo $ORACLE_SID

6.- Verificar variables de inicio de oracle

#cat $ORACLE_HOME/network/admin/tnsnames.ora
#mkdir /etc/oracle
#cp $ORACLE_HOME/network/admin/tnsnames.ora /etc/oracle

7.- verificar inicio correcto

# cd $ORACLE_HOME/bin
# tnsping XE

si sale :

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dapper)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))
TNS-12545: Connect failed because target host or object does not exist

reiniciar servicio : /etc/init.d/oracle restart

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = mail)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))
OK (10 msec)

entonces todo esta correcto.

8.-  conexión al servidor vía sqlplus como sys

#sqlplus sys as sysdba
Enter password: 123456

Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 – Production

SQL>

9.- Desbloquear usuario HR , para poder conectarnos

SQL> alter user HR account unlock;
User altered.

SQL> alter user HR identified by 654321;
User altered.

SQL> exit;

10.- Conectarse por sqlplus como usuario HR

#sqlplus HR/654321@XE

SQL*Plus: Release 11.1.0.6.0 – Production on Sat Nov 1 09:12:54 2008

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

Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 – Production

SQL>
11.- Estamos conectados ahora Probamos  realizar una consulta a una tabla ya creada en la instalación.

SQL> select * from JOBS;

JOB_ID       JOB_TITLE                   MIN_SALARY MAX_SALARY
———- ———————————– ———- ———-
AD_PRES    President                    20000      40000
AD_VP       Administration Vice President        15000      30000
AD_ASST    Administration Assistant             3000    6000
FI_MGR       Finance Manager                 8200      16000
FI_ACCOUNT Accountant                     4200    9000
AC_MGR       Accounting Manager                 8200      16000
AC_ACCOUNT Public Accountant                 4200    9000
SA_MAN       Sales Manager                10000      20000
SA_REP       Sales Representative              6000      12000

Hasta aquí tenemos correcto el servidor ahora configuramos apache php para hacer consultas

ANEXOS

1.-Verificar si el servicio esta activo , Aveces no se porque el servicio no se inicia durante el startup , para eso podemos verificar si el servicio esta activo.

# cd $ORACLE_HOME/bin
# tnsping XE

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = mail)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))
OK (10 msec)

B-1) INSTALACIÓN DEL SOPORTE PARA ORACLE EN PHP5

1.- Instalar dependencias
#apt-get install apache2.2-common libapache2-mod-php5 php5 php5-cli rpm libaio1

2.-Bajar los paquetes :

– oracle-instantclient-basic-11.1.0.1-1.i386.rpm
– oracle-instantclient-devel-11.1.0.1-1.i386.rpm
– oracle-instantclient-sqlplus-11.1.0.1-1.i386.rpm

de la siguiente direccion : http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html
3.-Instalar los paquetes
#rpm -ivh /root/oracle-instantclient-*
4.- Crear directorio para archivos de configuración
#mkdir /etc/oracle

5.- Copiar/verificar el archivo tnsnames.ora del servidor local/remoto dónde nos vamos a conectar y copiarlo a /etc/oracle/

###########################################
# tnsnames.ora Network Configuration File:

XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = mail)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)

################################################################

Donde ¨mail¨ es el nombre del servidor.

6.- Agregar variables de entorno
#vim /root/.bashrc

#Variables de cliente oracle xe
export TNS_ADMIN=/etc/oracle
export SQLPATH=/usr/lib/oracle/11.1.0.1/client/bin
export LD_LIBRARY_PATH=/usr/lib/oracle/11.1.0.1/client/lib/;$LD_LIBRARY_PATH
export PATH=$PATH:$SQLPATH

7.- Reiniciar la sesión de root para que los cambios en las variables de entorno tengan efecto.

8.- Comprobar conectividad con servidor  local/remoto

#sqlplus usuario@servidor

Dónde usuario es el nombre de usuario o esquema y servidor es uno de los definidos en el tnsnames.ora
Pedirá la contraseña y si todo va bien nos devolverá el prompt del servidor Oracle.

B-2) Generar e Instalar módulo OCI en PHP

1.- Instalar dependencias
#apt-get install build-essential php5-dev

2.- Si no está creado, creamos el directorio de fuentes
#mkdir -p /usr/local/src

3.- Descargamos las fuentes PECL del futuro módulo OCI:
#wget http://pecl.php.net/get/oci8-1.2.4.tgz

4.- Descomprimimos
#tar xzf oci8-1.2.4.tgz

5.- Entramos al directorio creado
#cd /usr/local/src/oci8-1.2.4

6.- Preparamos el módulo para que sea generado para PHP
#phpize

7.- Configuramos el módulo para la generación
#./configure –with-oci8=instantclient,/usr/lib/oracle/11.1.0.1/client/lib/

La ruta es dónde se encuentran los *.so que hemos instalado con el InstantClient

8.- Construcción e instalación
#make
#make install

9.- Editamos la configuración de PHP.

#vim /etc/php5/apache2/php.ini

Añadimos la línea:
extension=oci8.so

y repetimos lo mismo para el archivo /etc/php5/cli/php.ini

10.- Reiniciamos Apache
#/etc/init.d/apache2 restart

11.- crear phpinfo.php para verificar el modulo oci8
#vi /var/www/apache2-default/phpinfo.php

<?php

// Muestra toda la información, por omisión INFO_ALL
phpinfo();

// Mostrar sólo la información de módulos.
// phpinfo(8) produce el mismo resultado.
phpinfo(INFO_MODULES);

?>

12.- Generar consulta basica

#vi /var/www/apache2-default/consulta.php

<?php

$connection = ocilogon(“HR”,”654321″,”//192.168.1.180/XE”);
$query = “select * from JOBS”;
$statement = oci_parse ($connection, $query);
oci_execute ($statement);
$statement = oci_parse ($connection, $query);
oci_execute ($statement);
echo “JOD_ID|JOB_TITLE|MIN_SALARY|MAX_SALARY”;
while ($row = oci_fetch_array ($statement, OCI_BOTH)) {
echo “$row[0]|$row[1]|$row[2]|$row[3]”;
}
oci_close($connection);

?>

– Donde  ¨192.168.1.180¨ seria la ip del servidor o maquina de la implementacion
– Verficiamos la consulta  entrando a :  http://ipdelamaquina/apache2-default/consulta.php   , si nos genera la consulta entonces ya tenemos todo completo y podemos empezar a desarrollar nuestras aplicaciones

Espero que les sirva la info.

Referencias
http://www.esdebian.org/configuracion/24219/how-to-apache22-php-oci-cliente-oracle
http://afosorio.blogspot.com/2006/05/php-oracle-sobre-iis.html
http://marqueta.org/linux/oracle/
http://www.esdebian.org/instalacion/23992/como-instalar-oracle-10g-express-editon-debian-etchlenny
http://ubuntulife.wordpress.com/2008/05/11/instalar-oracle-xe-en-ubuntu-804-hardy-heron/

Anuncios
Esta entrada fue publicada en Manuales y tutoriales por jroliva. Guarda el enlace permanente.

Acerca de jroliva

Juan Oliva, es un consultor de seguridad informática y telefonía IP con 10 años de experiencia en el campo . Muy involucrado en proyectos de pruebas de penetración , análisis y explotación vulnerabilidades, pruebas de ingeniería social, seguridad física, revisión de código, entre otras tareas de seguridad informática. Así mismo, desarrolla proyectos de implementación y mantenimiento de VoIP, basadas en Asterisk y Elastix, proyectos de callcenter, soluciones en la nube y hosted PBX, Aseguramiento de plataformas Linux, Windows. Ha estado trabajando para una variedad de empresas en donde ha desarrollado proyectos para el estado peruano, así como para entidades privadas, nacionales y del extranjero, cuenta con certificaciones vigentes en Ethical hacking, Linux y telefonía IP. Es instructor de cursos de Ethical Hacking y certificaciónes como Linux Professional Institute y Elastix, donde ha tenido oportunidad de realizar capacitaciones en el Perú, así como en el extranjero. Es investigador de vulnerabilidades, y creador de contenidos, que son publicados en su blog personal jroliva.wordpress.com el cual mantiene desde hace mas de 6 años.

8 pensamientos en “HOW TO : Instalación servidor ORACLE XE y soporte en PHP5 sobre DEBIAN ETCH-R4

  1. Buenos dias,
    Te agradezco este excelente tutorial, me funciono perfecto.
    Tuve algun problema con los *instantclient*.rpm ya que tu usas una version en concreto, y en la web de oracle ya tienen una mas actualizada (Tuve que adaptarlo)

    Mi servidor es un Ubuntu Server 8.10 de 32 bits, y siguiendo tu tutorial al pie de la letra funciono todo a la primera. ¡¡ Muchas gracias !!
    Tambien me sirve para el proyecto de final de Ciclo formativo, doblemente: ¡¡ Gracias !!

    Saludos desde España

  2. Pingback: Instalar Oracle Express Edition con soporte desde PHP5 en Ubuntu/Debian « pedroescudero.info

  3. Buenas,
    He seguido los pasos pero a la hora de conectar el php con la BD oracle me devuelve el error:

    [Wed Feb 22 09:46:46 2012] [error] [client 172.25.65.75] PHP Warning: oci_connect(): ORA-12154: TNS:could not resolve the connect identifier specified in /var/www/html/aplicacion/SID.php on line 3
    [Wed Feb 22 09:46:46 2012] [error] [client 172.25.65.75] PHP Fatal error: ORA-12154: TNS:could not resolve the connect identifier specified in /var/www/html/aplicacion/SID.php on line 6

    Si hago la conexión desde el propio servidor al servidor remoto de BD me conecta sin problemas, y si pongo la cadena de conexión en vez del SID de la BD también conecta OK; pero a la hora de conectar a través de la url de la aplicación no me resuelve el tnsnames.

    He añadido las variables de oracle al .bashrc de root y reiniciado el servicio de apache, pero sigue sin funcionar.

    export ORACLE_HOME=/usr/lib/oracle/11.2/client64
    export TNS_ADMIN=/etc/oracle
    export SQLPATH=/usr/lib/oracle/11.2/client64/bin
    export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
    export PATH=$PATH:$SQLPATH:$TNS_ADMIN:$ORACLE_HOME

    ¿Qué puede estar fallando? ¿Alguna idea?
    Gracias.

  4. I’ll right away take hold of your rss feed as I can not to find your e-mail subscription link or newsletter service. Do you have any? Kindly allow me understand so that I may subscribe. Thanks.

  5. Greate post. Keep writing such kind of information on your page.

    Im really impressed by it.
    Hey there, You have done an excellent job. I’ll certainly digg it and for my part recommend to my friends. I’m sure they’ll be benefited from this site.

  6. Thanks on your marvelous posting! I truly enjoyed reading it,
    you will be a great author. I will be sure to bookmark your blog and may come back later on.
    I want to encourage you continue your great writing, have a nice holiday weekend!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s