Friday, January 25, 2013

Instalación Oracle Instant Client 11g en Red Hat

Hoy tuve la necesidad de automatizar reportes que se generan utilizando información de varias bases de datos Oracle. El Oracle Instant Client nos permite accesar y manejar bases de datos utilizando sqlplus sin la necesidad de hacer una instalacion completa. 

Aquí verás como hacer esta instalación.


1. Primero necesitamos bajar el Instant Client y sqlplus de aqui.
- oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm 
- oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm

2. Luego de que los bajes los instalas con este comando (tienes que ser root):
$ rpm -ilv oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
3. Creamos un grupo específico para Oracle:
$ groupadd -g dba
4. Ahora creamos el usuario y le asignamos un password: 
**Nota: Si tu sistema es 32 bits elimina el numero 64 de todos los comandos que sometamos de este paso en adelante.
$ useradd -d /usr/lib/oracle/11.2/client64 -g "dba" oracle
$ passwd 
5. Modificamos el profile del usuario oracle (añade las lineas en negro):
vim ~oracle/.bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
export TNS_ADMIN=/usr/lib/oracle/11.2/client64
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
PATH=$ORACLE_HOME/bin:$PATH
export PATH
6. Creamos el archivo tnsnames.ora que es donde se definen las conexiones de las bases de datos:
$ vim /usr/lib/oracle/11.2/client/tnsnames.ora
Recuerda: Las entradas en este archivo deben tener este formato:
<AddressName> =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = <IP>)(PORT = <Puerto>))
    )
    (CONNECT_DATA =
      (SID = <SID>)
    )
  )
Entras al servidor con el usuario oracle e intentamos conexion a una base de datos con el siguiente comando:
$ sqlplus user/pass@DB

SQL*Plus: Release 11.2.0.3.0 Production on Fri Jan 25 14:30:01 2013

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>

**Nota: Para tener la misma funcionalidad con el usuario root solo tienes que repetir el paso #5 en su .bash_profile.

Ya tenemos el Instant Client 11g de Oracle instalado y conectado a una base de datos!

Thursday, January 17, 2013

Como corregir error 'sqlplus: not found' definiendo la variable $ORACLE_HOME y añadiendola al $PATH

Heredé un servidor SunOS que tiene ya una instalación de Oracle a la cual quiero conectarme a través de command line usando 'sqlplus'. Cuando utilizé el comando me daba este error:


$ sqlplus 
sqlplus: not found
¿La causa? La variable de $ORACLE_HOME no estaba configurada. Aquí te voy a decir como solucionar ese problema.

1) Primero verificamos que tiene la variable de $ORACLE_HOME y confirmamos que esta vacía. De no estarlo entonces salta al paso 3.

$ $ORACLE_HOME
$
 2) Ahora necesitamos saber donde esta la instalación de Oracle. En mi caso estaba en /home/app/oracle/product/10.2.0.
**Nota: El ORACLE_HOME es un nivel antes de donde se encuentra el archivo llamado bin.
La parte en negro es el ORACLE_HOME:
/home/app/oracle/product/10.2.0/bin

Le asignamos el valor a la variable $ORACLE_HOME y le damos export.

$ ORACLE_HOME=/home/app/oracle/product/10.2.0
$ export ORACLE_HOME
3) Ahora lo añadimos a nuestro $PATH:


$ PATH=$ORACLE_HOME/bin:$PATH

Ya podemos intentar conectarnos con el comando 'sqlplus'


$ sqlplus

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Jan 17 16:15:39 2013

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Enter user-name: