Ir al contenido principal

Instalación Oracle 10g XE en Linux

Oracle XE (Oracle Express Edition) es básicamente una manera plenamente funcional, pero un poco limitado de la versión completa base de datos Oracle 10g. Para el usuario doméstico medio / desarrollador es una herramienta perfecta, donde las limitaciones no tendrán ningún efecto real. Citando de la página principal de Oracle XE:



Oracle Database 10g Express Edition
(Oracle Database XE)is an entry-level,
small-footprint database based on the
Oracle Database 10g Release 2 code base
that's freeto develop, deploy, and distribute;
fast to download;and simple to administer.


Limitaciones

* utilizará máximo de 1 GB de RAM
* 4GB datos de usuario (max)
* puede ser instalado en un servidor múltiple de CPU, sino que sólo puede ser ejecutado en un procesador
* 1 Base de Datos (max)

Requerimientos de Hardware.

El motor es bastante robusto, por lo que no es recomendado instalarlo en equipos antiguos ni con menos de 256 MB en ram. También requiere que tengamos una partición swap del doble de tamaño que la cantidad de ram que tengamos hasta llegar a 1 GB. Es decir que si tenemos 1 GB de ram, nuestra swap no tiene porque ser forzosamente de 2 GB, bastara con que tengamos 1 GB de swap. Si tenemos 256 MB en ram, necesitaremos 512 en swap.
Atención: Oracle detecta la cantidad de memoria ram instalada, no diferencia si esta esta compartida en vídeo. En mi caso, tengo 512 en ram compartida con la tarjeta de vídeo.hay que redimensionar la partición swap porque de lo contrario no se instalará.
Es recomendable tener 1.5 gb libres como mínimo para el servidor.
Redimensionando nuestra Swap

Como a muchos de nosotros nos puede ocurrir haber asignado una swap de 256mb y a la hora de querer instalar oracle tenemos como requerimiento 512mb bueno vamos a explicar como redimensionar la swap en linux centos, si este no fuera tu caso puedes obviar estos pasos.

pero seria bueno observar cuanto de swap tenemos en total y libre usando el siguiente comando


$ cat /proc/meminfo
#SwapTotal: 1570672 kB <- swap actual.  
Para extender un volumen lógico de intercambio LVM2 (suponiendo / dev/VolGroup00/LogVol01 es el volumen que desee ampliar): vamos a observar en que volúmen de intercambio se encuentra nuestro swap para hacer la modificación.
$ cat /etc/fstab
1.Deshabilitar asociados para el intercambio de volúmenes lógicos:
$ swapoff -v /dev/VolGroup00/LogVol01
2.Cambie el tamaño del volumen lógico LVM2 de incrementando 256 MB
$ lvm lvresize /dev/VolGroup00/LogVol01 -L +256M
3.El formato del nuevo espacio de intercambio:
$ mkswap /dev/VolGroup00/LogVol01
4.Permitir la ampliación del volumen lógico
$ swapon -va
5.Prueba de que el volumen lógico se ha ampliado correctamente:
$ cat /proc/swaps # free
Requerimientos de Software Funciona en las siguientes distribuciones según la documentación de Oracle.
    Red Hat Enterprise Linux RHEL3 – RHEL4 -RHEL5Suse SLES – 9Fedora Core 4Debian 3.1 Red Flag DC Server 5.0/MIRACLE LINUX V4.0/Haansoft Linux 2006 Server (Asianux 2.0 Inside)
Pero este manual esta basado en una instalación RHEL5 (Centos 5.2)
Descargando Server Usted puede descargar Oracle 10g Express Edition (XE) Server for Linux x86 Usted necesitará una cuenta de Oracle OTN para descargar los rpms y tendrá que aceptar los acuerdos de licencia. Descargar"Oracle Database 10g Express Edition (Universal)" * oracle-xe-univ-10.2.0.1-1.0.i386.rpm
que es la multi-byte Unicode/UTF-8 base de datos, no la "Europa Occidental" único byte LATIN1 base de datos.
Cliente
También tendrá el Oracle Instant Cliente: i386 o versión x86_64. Ver las siguientes dos rpms (si bien su arquitectura es i386 o x86_64):
* oracle-instantclient-basic-10.2.0.4-1.ARCH.rpm * oracle-instantclient-sqlplus-10.2.0.4-1.ARCH.rpm * oracle-instantclient-odbc-10.2.0.4-1.ARCH.rpm
Requerimiento de Librerias Es necesario instalar las librerias bc, Libaio y glibc antes de empezar la instalación.
$ yum install bc libaio.i386 glibc.i686
Instalando Oracle 10g XE Si está ejecutando SELinux, desactivar esta opción durante el proceso de instalación.
$ /usr/sbin/setenforce 0
Si desea ejecutar con SELinux activado, ejecutar los siguientes dos comandos para crear el grupo y usuario para el oráculo-xe-univ paquete, antes de instalar dicho paquete:
$ /usr/sbin/groupadd -r dba
$ /usr/sbin/useradd -r -M -g dba -d /usr/lib/oracle/xe -s /bin/bash oracle
$ yum localinstall --nogpgcheck oracle-xe-univ-10.2.0.1-1.0.i386.rpmoracle-instantclient-basic*.rpm oracle-instantclient-sqlplus*.rpm# yum install oracle-lib-compat
* BC es una dependencia de oracle-xe. * Nogpgcheck es necesaria porque el Oracle RPMs no están firmados. *Nota: No se olvide de glibc.i686 han instalado en un sistema x86_64. No va a ser tirado en automáticamente! *Advertencia: No correr oracle_env.sh (o oracle_env.csh) en su configuración de entorno. Instantclient las cosas funciona bien sin él. Es útil sólo para la administración de servidores de comandos XE bajo oracle usuario.
Instalando SELinux Policy
Si está ejecutando SELinux activado instale los siguientes paquetes antes de ejecutar el oráculo-xe configure.
$ yum install oracle-xe-selinux oracle-instantclient-selinux
esto probablemente requiera compat-libstdc++-33, oracle-lib-compat, and oracle-nofcontext-selinux también. Configuración Server Asegúrese de que su nombre de host se encuentra en /etc/hosts antes de configurar la base de datos Oracle XE. para configurar la base de datos Oracle XE escriba el siguiente comando.
$ /etc/init.d/oracle-xe configure
Se nos requerira el ingreso de algunos datos para la configuración.
HTTP port for Oracle Application Express: 9000
Database listener port: 1521
Password for SYS/SYSTEM: xxxx
Start at boot: y
Tenga en cuenta que el puerto 8080 es utilizado por tomcat por lo que no puede aceptar el valor predeterminado para la Oracle Application Express, en mi caso use el puerto 9000. Como se puede apreciar en la imagen tenemos instalado Oracle Xe y configurado e iniciado.
Ahora vamos a probar el puerto que habilitamos para la administración por consola web nos dirigimos en nuestro navegador a http://localhost:9000/apex
Ahora es solo cuestión de logearnos con el usuario SYS o SYSTEM usando el password anteriormente asignado. Configurando tnsnames.ora necesitamos ubicar el tnsnames.ora para configurar conexiones adicionales a otros servidores de base de datos Oracle que puedan encontrarse en nuestra red. y hacer uso de ellas desde nuestro server linux usando SQLPlus.
$ locate tnsnames.ora
una vez ubicado tnsnames.ora vamos a mostrar que datos tiene.
$ cat /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/admin/tnsnames.ora
ahora vamos a modificar los terminos de escritura y lectura de tnsnames.ora para poder editarlo y agregar un alias para una base de datos oracle 10g xe en otro servidor.
$ cd /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/admin/
$ chmod 755 tnsnames.ora
$ vi tnsnames.ora
observemos la modificación que le acabo de agregar para que el alias apunte a un equipo con ip 172.16.0.52 y su service name tambien se llama XE.
Configurando las Variables de entorno se ha vuelto algo engorrozo ingresar al path de oracle por que las rutas son demasiado largas ahora vamos a registrar el path de oracle, su directorio bin y el SID para que el manejo sea facil; pero para esto vamos a registrarlo en el archivo /root/.bashrc las siguientes lineas.
# variables para ORACLE
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
$ vi /root/.bashrc
Si queremos cargar de manera inmediata esas variables, podemos hacerlo, ejecutando
$ . /root/.bashrc
ahora queremos ver si se hizo efectivo el registro probamos ejecutando.
$ echo $ORACLE_HOME
En $ORACLE_HOME/bin suelen estar los ejecutables de la base de datos (sqlplus, lsnrctl, etc…) probemos tener respuesta de conexion a los alias creados en el tnsnames.
$ cd $ORACLE_HOME/bin
$ tnsping XE
$ tnsping WIN
Ahora vamos acceder con sqlplus con el usuario SYS si de casualidad te muestra un error como el que se muestra en la imagen se debe a que no hemos declarado la variable de entorno LD_LIBRARY_PATH
Hay que corregir el archivo /root/.bashrc y agregarle las lineas siguientes
LD_LIBRARY_PATH=$ORACLE_HOME/libexport LD_LIBRARY_PATH
Nos deberia quedar como se muestra en la imagen.
y para cargar las variables imediatamente como el ejemplo anterior ejecutamos
$ . /root/.bashrc
es momento de probar conectar como sys y luego desbloquear al usuario HR y asignarle como password "oracle"
$ sqlplus sys as sysdba

#SQL*Plus: Release 10.2.0.1.0 - Production on thu Jun 18 16:03:53 2009
#Copyright (c) 1982, 2005, Oracle. All rights reserved.Enter
password:
#Connected to:Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
SQL> alter user HR account unlock;
#User altered.
SQL> alter user HR identified by aqui_el_password;
#User altered.
SQL> exit;
#Disconnected from Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
Perfecto!, comprobemos que podemos entrar como usuario HR. Yo le he dado al usuario el password "oracle" (alter user HR identified by oracle) y la sintaxis es: sqlplus user/pass@BBDD, Entraria como:
$ sqlplus HR/oracle@XE
Parece que todo esta bien. Ni que decir que este usuario de ejemplo (HR) ya trae unos tablas de ejemplo, y su propio esquema. pero que no hay ningun problema en crear otras tablas o quien dice esquemas y usuarios. Cuando hemos instalado Oracle XE, se ha creado en nuestro sistema un nuevo usuario oracle, y un nuevo grupo dba. Es conveniente añadir nuestro usuario al grupo dba para que podamos hacer ciertas funciones para las que en otro caso no tendriamos permisos. Por ejemplo: recargar el listener. El listener es el servicio que permite que otras maquinas conecten remotamente a nuestra base de datos. Puede darse el caso de que la base de datos este funcionando, y entremos a ella localmente mediante sqlplus pero cuando intentamos conectar desde otra maquina remota no podamos. Eso seguramente sea porque el servicio listener este caido. Para levantar el listener, nos vamos a $ORACLE_HOME
$ cd $ORACLE_HOME
y ejecutamos: lsnrctl
$ lsnrct
Como comandos principales del listener podemos usar: help, reload, start, stop, status. help, muestra una ayuda con los comandos. reload, lo recarga. start, lo inicia. stop, lo para y status nos muestra el estado actual Pero como les comentaba antes, si intentamos parar el listener como nuestro usuario home actual nos daria un error porque no tenemos permisos suficientes:
LSNRCTL> stop
#Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
#TNS-01190: The user is not authorized to execute the requested listener command
Estas operaciones debemos ejecutarlas como usuario oracle, que si tiene permisos:
$ sudo -s
$ su - oracle
Ojo, tenemos que tener tambien definidas las variables ORACLE_HOME y ORACLE_SID para este usuario oracle o nos dara error a la hora de intentar acceder a la base de datos. Con el usuario “oracle” si que podriamos ya ejecutar lsnrctl y luego stop. La otra opcion es añadir nuestro usuario al grupo de dba. Instalación Librerias ODBC Oracle Es momento de ampliar la idea y de mostrar como registrar nuestras librerias odbc para UnixODBC, para esto necesitamos descargar oracle-instantclient-odbc-10.2.0.4-1.i386.rpm y oracle-instantclient-odbc-10.2.0.4-1.i386.zip. Bueno yo he descargado los archivos dentro de un directorio /root/Downloads. Ahora lo que hare sera instalar el rpm desde esa ubicación con YUM
$ yum localinstall --nogpgcheck oracle-instantclient-odbc-10.2.0.4-1.i386.rpm
Una vez instalado vamos a descomprimir instantclient-odbc-linux32-10.2.0.3-20061115.zip por que se hace esto por que la instalación del RPM no actualiza el UnixODBC.
$ unzip instantclient-odbc-linux32-10.2.0.3-20061115.zip
Ahora moveremos todos (*) los archivos de la carpeta descomprimida al directorio donde deben de estar /lib si les pregunta que ya existe alguno y si queremos reemplazar digiten (s)
$ mv /instantclient_10_2/*  /usr/lib/oracle/10.2.0.4/client/lib/.
luego nos vamos a ubicar en ese directorio para crear un enlace simbolico.
$ cd /usr/lib/oracle/10.2.0.4/client/lib/
$ ln -s libsqora.so.10.1 libsqora.so
$ mv libsqora.so /usr/lib
por ultimo necesitamos actualizar nuestro UnixODBC. con el script odbc_update_ini.sh, hay que darle permisos de ejecución y luego ejecutarlo.
$ chmod u+x /usr/lib/oracle/10.2.0/client/lib/odbc_update_ini.sh
$ /usr/share/oracle/10.2.0.4/client/odbc_update_ini.sh     /
para estar seguros de que la actualización se llevo acabo vamos a editar el contenido del archivo /etc/odbcinst.ini
$vi /etc/odbcinst.ini
tendras que modificar solo la parte de oracle10g como se muestra en la imagen.
Una vez hecho esto tenemos que ir a modificar un DSN que se creo en nuestro home a la hora de actualizar el UnixODBC
$ vi /root/.odbc.ini
y lo dejamos como se ve en la imagen; en este caso yo intento conectar a mi server XE de mi tnsnames con el usuario HR.
es hora de pasarle los datos anteriores corregidos al /ect/odbc.ini
$ cat /root/.odbc.ini >> /etc/odbc.ini
lo que que estamos haciendo es crear un DSN de sistema pasandoselo al /etc/odbc.ini por que el anterior el que esta en el home es un DSN de usuario, observemos visualmente como se ve con el ODBCConfig y con el DataManager.
Observan la imagen 2 DSN con el mismo nombre OracleDSN pero uno de sistema y otro de usuario. vamos a hacerle clic al OracleDSN de sistema para ver sus tablas y otros objetos que pueda tener, y nos pedira como se ve en la imagen el nombre de usuario y password.
Una vez logueado nos muestra el arbol de objetos que contiene ese usuario. entonces la prueba odbc ha sido un exito.
que no me creen aun. bueno vamos a mostrarles ahora modo consola usando isql syntaxis isql [-modo][DSN][USER][PWD]
$ isql -v OracleDSN HR oracle
Casi la mayoria estara diciendo pero yo necesito un analizador de consultas que sea rapido y que me permita hacer muchas mas cosas que el SQLPlus y que funcione en Linux, por que ojo yo en Windows tengo "Toad For Oracle" o "Embarcadero" ok pueden usar ExecuteQuery

Comentarios

  1. QUE PACIENCIA DE TRABAJAR EN TODO ESTO PARA PODER AYUDAR A OTRAS PERSONAS SIEMPRE SUPE LA PERSONA QUE ERAS DESDE UN INICIO TE FELICITO

    ResponderBorrar
  2. Superahacker eres lo maximo para explixarnos, todo este tema. Ninguna en la red, explica tan bien como vos. Un abrazo muchas gracias.

    gogo

    ResponderBorrar
  3. Buenas
    Estoy tratando de instalar el Oracle XE y me sale esto

    sudo rpm -iv oracle-xe-univ-10.2.0.1-1.0.i386.rpm
    rpm: RPM should not be used directly install RPM packages, use Alien instead!
    rpm: However assuming you know what you are doing...
    error: Failed dependencies:
    glibc >= 2.3.2 is needed by oracle-xe-univ-10.2.0.1-1.0.i386
    libaio >= 0.3.96 is needed by oracle-xe-univ-10.2.0.1-1.0.i386
    /bin/sh is needed by oracle-xe-univ-10.2.0.1-1.0.i386
    al tratar de bajar las dependencias con yum me dice
    No existe disponible ningún paquete

    Me pueden ayudar, gracias!

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

JSP y MySQL Conexion a Base de Datos

Tema anterior: http://superahacker.blogspot.com/2009/06/instalacion-netbeans-glassfish.html El modulo JSP con conexion a una base de datos MySQL, tiene las siguientes caracteristicas usar una clase Java llamada "Customers" que se encuentra en un package llamado "Mypackage" , para usar sus metodos y con ellos llevar acabo una consulta.

JSP y MsSQL Conexion a Base de Datos

Tema anterior: http://superahacker.blogspot.com/2009/09/jsp-y-mysql-conexion-base-de-datos.html El modulo JSP con conexion a una base de datos Ms SQL Server, tiene las siguientes caracteristicas usar una clase Java llamada "Customers" que se encuentra en un package llamado "Mypackage" , para usar sus metodos y con ellos llevar acabo una consulta.

FreeTDS para el acceso a MsSQL desde PHP en Linux CentOS 5

Tema Anterior: http://superahacker.blogspot.com/2009/04/instalacion-de-unixodbc-para-la.html En esta ocasion la situación es como conectar con PHP 5 desde un Servidor Linux a una base de Datos Ms Sql Server en Servidor Windows.