Instalar Oracle Express Edition con soporte desde PHP5 en Ubuntu/Debian
Para instalar Oracle Express Edition en Ubuntu o Debian, de manera que luego podamos atacarla desde nuestra aplicación web desarrollada en PHP5 seguiremos los siguientes pasos.
A) INSTALACIÓN Y CONFIGURACIÓN DE ORACLE XE
1.- Instalación dependencias
#apt-get install bc libaio12.- Instalación del paquete , descargarlo desde aquí
#cd /usr/src
#dpkg -i oracle-xe-universal_10.2.0.1-1.0_i386.deb3.- configuración de parámetros
/etc/init.d/oracle-xe configureSpecify 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]: y4.- 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 PATH5.- Pruebas de variables
#echo $ORACLE_HOME
#echo $ORACLE_SID6.- Verificar variables de inicio de oracle
#cat $ORACLE_HOME/network/admin/tnsnames.ora
#mkdir /etc/oracle
#cp $ORACLE_HOME/network/admin/tnsnames.ora /etc/oracle7.- verificar inicio correcto
# cd $ORACLE_HOME/bin
# tnsping XEsi 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 existreiniciar 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: 123456Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 – ProductionSQL>
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 – ProductionSQL>
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 12000Hasta 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 XEUsed 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 libaio12.-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.rpmde 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/oracle5.- 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:$SQLPATH7.- 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-dev2.- Si no está creado, creamos el directorio de fuentes
#mkdir -p /usr/local/src3.- Descargamos las fuentes PECL del futuro módulo OCI:
#wget http://pecl.php.net/get/oci8-1.2.4.tgz4.- Descomprimimos
#tar xzf oci8-1.2.4.tgz5.- Entramos al directorio creado
#cd /usr/local/src/oci8-1.2.46.- Preparamos el módulo para que sea generado para PHP
#phpize7.- 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 install9.- Editamos la configuración de PHP.
#vim /etc/php5/apache2/php.ini
Añadimos la línea:
extension=oci8.soy repetimos lo mismo para el archivo /etc/php5/cli/php.ini
10.- Reiniciamos Apache
#/etc/init.d/apache2 restart11.- 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