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
Replica a tatu Cancelar la respuesta