En este articulo se comenta la instalacion de Oracle XE (Oracle Express Edition), en un articulo posterior ya comentare como instalar la version Oracle 11g en Linux. ¿Y Que diferencias hay entre Oracle XE y Oracle 11g? te preguntaras. Bien, Oracle XE es una version de Oracle que puedes instalar en tu equipo, pero tiene una serie de limitaciones. La primera es que no soporta el uso de varios procesadores, asi p.ej si tienes un equipo dual core, solo utilizaras 1 de los procesadores. Otra limitacion es en el espacio de almacenamiento, aunque dispongas de mas espacio, solo utilizaras hasta 1 maximo de 1 Gb de memoria y 4 Gb a nivel de espacio de almacenanamiento en disco, lo que implica, que tu base de datos no podra crecer si excede de cierto tamaño. ¿Y por que es todo esto?. Pues naturalmente Oracle es un producto de pago, si quieres usarla a nivel empresarial tienes que adquirir las licencias correspondientes, pero esta version de Oracle XE es muy sencilla de instalar y esta orientada a los desarrolladores, siendo completamente funcional para por ejemplo poder montar un entorno de trabajo en tu casa e ir haciendo desarrollos que podras complementar con los de tu empresa, donde tengas acceso a el Oracle server con toda su potencia.
Bien, despues de todo este pequeño “rollo”, procedamos a instalarlo.
Lo primero que tenemos que hacer es descargarnos el paquete .deb correspondiente, Para ello accedemos a la pagina oficial de oracle. A la hora de escribir este articulo, ese era el enlace, en el caso de que no puedas acceder, haz una busqueda en google con la cadena “Oracle XE download” para obtener la referencia al sitio.
El fichero se llama: oracle-xe-universal_10.2.0.1-1.0_i386.deb y ocupa aproximadamente 262 Mb.
Nota: Para poder descargar este fichero, tenemos que estar registrados en la web de Oracle.
El registro es gratuito.
Nos descargamos el fichero al escritorio
y procedemos a instalarlo haciendo doble click sobre el.
Una vez que termina de instalarse el paquete. Tenemos que configurar la base de datos. Para ello ejecutamos el comando:
sudo /etc/init.d/oracle-xe configure
Con eso arranca un configurador en modo texto que nos va a hacer una serie de preguntas: nos va a pedir el puerto de la aplicacion web que nos permite administrar graficamente la base de datos, el puerto de la base de datos, la password que queremos para el usuario SYS y SYSTEM de Oracle, y si queremos arrancar la base de datos cada vez que iniciemos la maquina.
Yo respondi usando los valores por defecto, cambia los valores de los puertos si entran en conflicto con otros usados en tu maquina y no te olvides de la contraseña que pongas para SYS y SYSTEM, la usaremos posteriormente.
Oracle Database 10g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 10g Express
Edition. The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts. Press to accept the defaults.
Ctrl-C will abort.
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
Specify a password to be used for database accounts. Note that the same
password will be used for SYS and SYSTEM. Oracle recommends the use of
different passwords for each database account. This can be done after
initial configuration:
Confirm the password:
Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]:y
Starting Oracle Net Listener...Done
Configuring Database...Done
Starting Oracle Database 10g Express Edition Instance...Done
Installation Completed Successfully.
To access the Database Home Page go to "http://127.0.0.1:8080/apex"
Y “san” se acabo. Ya esta instalada. Joder, que facil y que rapido he terminado de escribir este post. Me voy a descansar…
Bueno aun no, comentemos cosas interesantes. La base de datos si no ha habido problemas ya esta instalada. Veamos como poder acceder a ella, para administrarla.
Pues como bien dice al acabar, puedes usar la siguiente URL para administrar graficamente tu base de datos.
http://127.0.0.1:8080/apex
Como usuario puedes usar: SYS o SYSTEM
y como password: la clave que indicaste en el instalador.
Desde aplicacion web podemos administrar toda la base de datos: tablespace, esquemas, tablas, usuarios, permisos, etc… es cuestion de ir navegando por las diferentes opciones:
Si de todas formas queremos entrar desde la consola, podemos hacerlo mediante sql*plus.
Antes, eso si, es conveniente dar permisos al usuario que trae de ejemplo la base de datos y de definir correctamente las variables de entorno de acceso a la base de datos en nuestro fichero profile, que se encuentra en el directorio home y tiene de nombre .bashrc
Vamos a ello.
Accedemos a nuestro directorio HOME
$ cd
y editamos el fichero .bashrc añadiendo 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
Si queremos cargar de manera inmediata esas variables, podemos hacerlo, ejecutando . .bashrc
jose@soledad:~$ . .bashrc
jose@soledad:~$ echo $ORACLE_HOME
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
jose@soledad:~$ echo $ORACLE_SID
XE
Como observas el ORACLE_HOME es /usr/lib/oracle/xe/app/oracle/product/10.2.0/server
, esa es la ruta donde se ha instalado el producto.
Y el ORACLE_SID es XE
Los alias de nuestra base de datos y de las diferentes otras bases de datos a las que podemos acceder se almacenan en un fichero llamado tnsnames.ora que se encuentra en el directorio $ORACLE_HOME/network/admin
$ cd $ORACLE_HOME/network/admin
$ cat tnsnames.ora
# tnsnames.ora Network Configuration File:
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = soledad)(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)
)
)
En $ORACLE_HOME/bin suelen estar los ejecutables de la base de datos (sqlplus, lsnrctl, etc…)
Si queremos comprobar si podemos conectar a una base de datos podemos hacer uso del comando “tnsping”, este comando nos devuelve OK si podemos conectar remotamente, o un error en otro caso:
Como el sid de la base de datos (y asi tambien esta en el tnsnames) es XE, ejecuto:
jose@soledad:~$ tnsping XE
TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 11-MAY-2008 20:36:59
Copyright (c) 1997, 2005, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = soledad)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))
OK (0 msec)
Guay, tenemos conexion a la base de datos. Accedo ahora como usuario SYS mediante sqlplus y le doy permisos (habilito) el usuario que trae de ejemplo la base de datos (este usuario es HR).
Siempre sera luego mejor entrar como ese usuario, pues si accedemos como SYS o SYSTEM podriamos hacer algo mal y estropear la base de datos (es mejor entrar como SYS o SYSTEM cuando tengamos que hacer alguna operacion de dba, administradores de la base de datos y como usuario normal en el resto de los casos).
Entro como sys:
jose@soledad:~$ sqlplus sys as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sat May 10 16:20:04 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
Ahora desbloqueo al usuario HR:
SQL> alter user HR account unlock;
User altered.
SQL> alter user HR identified by aqui_la_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 como le he dado al usuario la password HR (alter user HR identified by HR) y la sintaxis es: sqlplus user/pass@BBDD, Entraria como:
jose@soledad:~$ sqlplus HR/HR@XE
Y el resultado:
SQL*Plus: Release 10.2.0.1.0 - Production on Sat May 10 16:21:02 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
REGIONS
LOCATIONS
DEPARTMENTS
JOBS
EMPLOYEES
JOB_HISTORY
COUNTRIES
7 rows selected.
SQL> select * from regions;
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
-----------------------------
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:
jose@soledad:/usr/lib/oracle/xe/app/oracle/product/10.2.0/server$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 11-MAY-2008 20:50:50
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 11-MAY-2008 18:47:25
Uptime 0 days 2 hr. 3 min. 27 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service XE
Listener Parameter File /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/admin/listener.ora
Listener Log File /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=soledad)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=8080))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "XE" has 1 instance(s).
Instance "XE", status READY, has 1 handler(s) for this service...
Service "XEXDB" has 1 instance(s).
Instance "XE", status READY, has 1 handler(s) for this service...
Service "XE_XPT" has 1 instance(s).
Instance "XE", status READY, has 1 handler(s) for this service...
The command completed successfully
LSNRCTL>
Pero como os 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. Podemos hacerlo desde Sistema > Administracion > Usuarios y Grupos.
A la administracion de la base de datos, tambien podemos acceder desde el menu de aplicaciones:
Acceder a la base de datos desde la consola puede resultar a algun@s bastante incomodo, veamos como instalar un cliente grafico de SQL para ORACLE.
Instalando ExecuteQuery
ExecuteQuery es un buen cliente JDBC para SQL. ¿Esto que quiere decir?, esto quiere decir que podemos acceder a cualquier base de datos para la que dispongamos un driver JDBC, no necesariamente a oracle solamente. Ventajas, al ser un cliente JDBC solo necesitamos tener instalado el driver JDBC de Oracle para poder conectar con la base de datos. No tenemos que tener instalado el instant client de Oracle ni preocuparnos de las variables de entorno. Desventaja: es una aplicacion Java, para que funcione requiere que tengas instalado el JRE (Java Runtime de Java). En caso de que ya lo tengas instalado, entonces no es mayor problema.
Nos descargamos el instalador de execute query desde la pagina web y lo iniciamos con:
$ java -jar executequery-installer-v3.1.0.jar
Se instala en el directorio elegido. Para iniciarlo, accedemos a esa carpeta y ejecutamos el script “eq.sh”:
$ cd executequery
$ ./eq.sh &
Si no te arranca, edita el fichero eq.sh, en el se indica la ruta al JRE, asi que puede que tengas que editar esa localizacion:
jose@soledad:~/executequery$ cat eq.sh
#!/bin/sh
# Java heap size, in megabytes
JAVA_HEAP_SIZE=256
# determine the java command to be run
JAVA=/usr/lib/jvm/java-6-openjdk/jre/bin/java
if [ "X$JAVA" = "X" ]; then
# try possible default location (which should have come up anyway...)
JAVA=/usr/bin/java
fi
exec $JAVA -mx${JAVA_HEAP_SIZE}m -jar "/home/jose/executequery/eq.jar" &
Bien, lo primero que tenemos que hacer en Execute Query es instalar el driver JDBC para ORACLE. Yo instale el ojdbc14.jar, puedes descargarlo desde la pagina de Oracle.
Iriamos a la pestaña “Drivers” y creariamos un nuevo Driver, indicando como ruta de la clase java, el lugar donde hayamos dejado el fichero ojdbc14.jar.
Ahora que ya tenemos el driver JDBC de Oracle instalado. Creamos una nueva Conexion a la base de datos que tenemos instalada en local. Para ello seleccionamos la pestaña “Conexiones” y creamos una nueva entrada para nuestra base de datos (XE):
Ahora ya podriamos conectar con la base de datos (usuario HR, password HR o el que hubieramos puesto). Desde la aplicacion, podemos examinar el esquema de la base de datos, incluso las relaciones entre las tablas:
Aunque lo que mas usaremos sera el editor de SQL:
Instalando SQL Developer
Otro cliente SQL muy bueno y en Java es SQL Developer, este proporcionado por el propio Oracle. Es un cliente que podemos descargar gratuitamente y que se va actualizando cada cierto tiempo. Para descargarlo (requiere registro) nos conectamos a la siguiente pagina de Oracle.
La instalacion es muy sencilla, basta con descomprimir el fichero.
Nota: al contrario que en el caso anterior para que funcione correctamente requiere de en este caso no un JRE (Java Runtime) sino un JDK (Java development Kit) 1.4 o superior de Java. De hecho, la primera vez que ejecutemos el cliente, si no encuentra la ruta, nos pedira que se la indiquemos.
Para arrancar el cliente ejecutamos:
$ cd sqldeveloper
$ ./sqldeveloper.sh
Y ya arranca la aplicacion. Lo primero que tendremos que hacer es crear una conexion a nuestra base de datos:
Y ya podriamos conectar:
Resumen:
En este pequeño articulo hemos visto como instalar un servidor de Oracle en nuestra maquina, y acceder a ella mediante un cliente grafico.