sábado, 27 de agosto de 2011

Usando la última versión de Oracle XE (11.2)

Oracle ofrece una edición gratiuta de la base de datos, llamada XE, que tiene algunos límites respecto a la versión comercial.

Desde Abril está disponible la última versión, 11.2 en beta y sólo para linux 64 bits o windows 32 bits.

En esta versión, los límites de recursos que puede utilizar son:
  • una sola instancia

  • una CPU

  • 11 GB de datos de usuario

  • 1 GB RAM



La instalación en Opensuse 11.4 es simple.


oraculo:/local/soft/oracle/oracle-xe # rpm -Uvh oracle-xe-11.2.0-0.5.x86_64.rpm
Preparing... ########################################### [100%]
1:oracle-xe ########################################### [100%]
Executing post-install steps...

You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.


En mi caso, ya tenía una instalación de oracle anterior y por lo tanto ya estaba creado el usuario oracle en el sistema operativo, instalados los paquetes necesarios y ajustados los parámetros del kernel.
En una instalación nueva sin estos, son unos pasos más siguiendo el manual, o usando el paquete orarun.

Hecha la introducción, me interesa comentar algo que encontré y no está tan claro: para bajar la base, el script provisto funciona sólo si está configurado el inicio autómatico. Sino, debe bajarse manualmente.

En mi instalación, respondí que no quería inicio automático de la base al momento de la configuración:


oraculo:/local/soft/oracle/oracle-xe # /etc/init.d/oracle-xe configure

Oracle Database 11g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 11g 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]:

Specify a port that will be used for the database listener [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 11g Express Edition to be started on boot (y/n) [y]:n

Starting Oracle Net Listener...Done
Configuring database...Done
Starting Oracle Database 11g Express Edition instance...Done
Installation completed successfully.



Una vez que está funcionando..


oraculo:/local/soft/oracle/oracle-xe # ps -eaf | grep XE | grep pmon
oracle 7663 1 0 01:50 ? 00:00:09 xe_pmon_XE

oracle@oraculo:/u01/app/oracle/product/11.2.0/xe/bin> sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Beta on Sun Aug 28 13:14:36 2011

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


Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Beta

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Beta
PL/SQL Release 11.2.0.2.0 - Beta
CORE 11.2.0.2.0 Production
TNS for Linux: Version 11.2.0.2.0 - Beta
NLSRTL Version 11.2.0.2.0 - Production


..cuando intentamos bajarla, no lo hace:


oraculo:/local/soft/oracle/oracle-xe # service oracle-xe stop

oraculo:/local/soft/oracle/oracle-xe # ps -eaf | grep XE | grep pmon
oracle 7663 1 0 01:50 ? 00:00:09 xe_pmon_XE


Revisando el código de /etc/init.d/oracle-xe se puede ver a partir de la línea 644 que la bajada depende de la configuración escrita en /etc/sysconfig/oracle-xe ($CONFIGURATION):


stop)
if test -f "$CONFIGURATION"
then
if test "$ORACLE_DBENABLED" != "true"
then
exit 0
fi
else
echo "Oracle Database 11g Express Edition is not configured. You must run
'/etc/init.d/oracle-xe configure' as the root user to configure the database."
exit 0
fi
stop
;;


Comprobamos que entramos en el segundo if ($ORACLE_DBENABLED):


oraculo:> grep DBENABLED /etc/sysconfig/oracle-xe
# ORACLE_DBENABLED:'true' means to load the Database at system boot.
ORACLE_DBENABLED=false



La solución simple es bajarla manualmente, y no olvidarse de bajar el listener.

Sino, habilitar el inicio automático:


oraculo: # service oracle-xe enable

oraculo:> grep DBENABLED /etc/sysconfig/oracle-xe
# ORACLE_DBENABLED:'true' means to load the Database at system boot.
ORACLE_DBENABLED=true

oraculo: # service oracle-xe stop
Shutting down Oracle Database 11g Express Edition instance.
Stopping Oracle Net Listener.

oraculo: # ps -eaf | grep XE
root 22607 7011 0 13:00 pts/0 00:00:00 grep XE