lunes, marzo 19, 2012

Usando oracle express edition 10.2 (XE) con ubuntu 10.04 LTS

Usando oracle express edition 10.2 (XE) con ubuntu 10.04 LTS

(using oracle express edition XE with ubuntu)

Primero vamos a indicar las carencias y defectos que se presentan una vez desempacado e instalado el software

El paquete de oracle server xe contiene una utilidad de conección en modo consola la que se denomina sqlplus, sin embargo el sistema no queda configurado adecuadamente para encontrar este programa, y para ejecutarlo se requiere llamar a otros scripts que se supone que han sido escritos por profesionales de una compañia tan grande como Oracle, sin embargo dejan mucho que desear.

Como podemos ver por el acceso directo que crea la instalación:

el software se instala en:

/usr/lib/oracle/xe/app/oracle/product/10.2.0/server

y el script que corre para abrir sqlplus es:
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/runsqlplus.sh

if [ -f /usr/bin/gnome-terminal ]
then
    /usr/bin/gnome-terminal -t "SQL*Plus" -e "/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/sqlplus.sh"
else
    /usr/bin/xterm  -T "SQL*Plus" -n "SQL*Plus" -e "/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/sqlplus.sh"
fi

el cual lo único que hace es escoger el programa de terminal a utilizar, dando preferencia si esta presente a gnome-terminal sobre xterm, y fijando el título de la ventana para invocar a:
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/sqlplus.sh


ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export ORACLE_HOME
ORACLE_SID=XE
export ORACLE_SID
NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export NLS_LANG
PATH=$ORACLE_HOME/bin:$PATH
export PATH
sqlplus /nolog


este otro lo que hace es fijar adecuadamente las variables
ORACLE_HOME
ORACLE_SID
NLS_LANG
PATH
y finalmente arrancar el sqlplus sin log

lo feo del caso es que el script
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/nls_lang.sh
contiene un error en la linea 108 y 110, al evaluar una condición

originalmente esta así:
if [[ -n "$LC_ALL" ]]; then
  locale=$LC_ALL
elif [[ -n "$LANG" ]]; then
  locale=$LANG
else
  locale=
fi


pero se puede corregir simplemente cambiandolo para que quede así:
if [ -n "$LC_ALL" ]; then
  locale=$LC_ALL
elif [ -n "$LANG" ]; then
  locale=$LANG
else
  locale=''
fi


para que ahora si podamos correr con toda confianza en nuestra terminal
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/sqlplus.sh

lo cual nos dará un prompt como este:

SQL*Plus: Release 10.2.0.1.0 - Production on Lun Mar 19 16:22:22 2012

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

SQL>



¿y luego que se hace?

Primero nos tenemos que conectar usando un comando connect (nos podemos conectar a un motor oracle ya sea local o remoto), para ello tenemos que saber el usuario y password

en este caso nos conectamos a un server local (127.0.0.1)

como un usuario normal, ej. username
 
SQL> connect username@127.0.0.1

(sqlplus connect as sys)
si queremos conectarnos como DBA hay que agregar:


SQL> connect sys@127.0.0.1 as sysdba


posteriormente pregunta el password y lo proporcionamos para obtener acceso


y saldrá un mensaje que dice:

Conectado.
SQL >



Podemos desconectarnos usando

SQL> disconnect

¿y luego que se hace?


podemos mostrar ayuda para un comando utilizando el comando help

SQL> help connect


Otros comandos a probar son:


help
help accept
help index


Sin embargo seguramente te estas preguntando como se le hace para correr un script sql?


Pues basicamente una vez conectados ya podemos escribir nuestros querys sql


SQL> create table t ( a int ) ;
Tabla creada.

Podemos definir nuestro editor favorito para invocarlo desde sqlplus:


SQL> define _EDITOR = gvim
o
SQL> define _EDITOR = gedit



Luego ya podemos editar un archivo mediante


SQL> edit filename


Esto abrira nuestro editor con el archivo filename.sql
Para correr los comandos en dicho archivo podemos usar:

SQL> start filename

o
SQL> @filename


Para guardar la salida de la ejecución en un archivo podemos usar:

SQL> spool output_filename append


append es opcional pero es recomendable para no borrar datos previos que haya en el archivo,

para guardar la salida en el archivo es necesario detener el spool

SQL> spool off



Con la información anterior ya nos es posible editar y ejecutar scripts, así como guardar la salida de ejecución, por lo que hasta aquí voy a dejar esta introducción a la linea de comandos de oracle sqlplus, esto para los que preferimos usar una linea de comandos a la interface html, que es un poco impractica.

Podeís encontrar mas información usando este link:
http://docs.oracle.com/cd/B19306_01/server.102/b14357/pt2.htm









Fuentes:
http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch3.htm

4 comentarios:

Alfonso Baqueiro dijo...

SQL > set echo on

permite visualizar el query junto con la salida del query

Jesules dijo...
Este comentario ha sido eliminado por el autor.
Jesules dijo...

Hola, a ver si me puedes ayudar, mi problema es que al hacer una consulta en la terminal mediante sqlplus, me salen las columnas movidas, dificultando la legibilidad. He aumentado el ancho del terminal, pero desperdicia el tamaño que le he añadido.

¿Qué puedo hacer para que me lo muestre correctamente?

Gracias y un saludo.

Alfonso Baqueiro dijo...

pues yo te recomiendo que uses otro software para este propósito como Aquafold Datastudio o Toad.