martes, 26 de julio de 2016

Guía 11g - Parte 1: Instalando Base de Datos Oracle 11g XE


Para probar escenarios es esencial establecer un entorno local con el fin de profundizar en el aprendizaje y el conocimiento, pensando en ello, en este documento voy a mostrar paso a paso cómo realizar la instalación de Oracle SOA Suite 11g sobre Ubuntu 16.04 LTS.

La SOA Suite requiere una base de datos para la persistencia. La versión 11g Express Edition fue elegida para el entorno de desarrollo.

La instalación se hará en Ubuntu Linux 16.04 versión de 64 bits: el hardware y software mínimo requeridos para la instalación de Oracle SOA Suite 11g se puede encontrar aquí: http://docs.oracle.com/html/E18558_01/fusion_requirements.htm

La instalación está divida en partes de la siguiente manera:

• Parte 2: Java SE Development Kit 7 – JDK
• Parte 3: Oracle WebLogic Server 10.3.6
• Parte 4: Repository Creation Utility (RCU) 11.1.1.7.0
• Parte 5: SOA Suite 11.1.1.7.0
• Parte 6: OSB 11.1.1.7.0
• Parte 7: OEPE Indigo 11.1.1.8.0
• Parte 8: SOA Developer Domain
• Parte 9: Oracle JDeveloper 11.1.1.7.0



Instalando Oracle Database XE 11g

1) - Descargar la Base de Datos Oracle versión 11g XE

Descargar el archivo necesario usando el siguiente link:

Aqui, hacer clic en Accept License Agreement


Seleccionamos la opción Oracle Database Express Edition 11g Release 2 for Linux x64 haciendo clic en ella.


Verás una pantalla de Login donde necesitarás tus credenciales de Oracle para acceder a dicha descargar. De no contar con una cuenta Oracle, creamos una cuenta haciendo clic en Create Account



Una vez introducida las credenciales, aparecerá la siguiente ventana donde haremos clic en la opción Guardar archivo y luego en Aceptar.


Empezará la descarga... mientras vamos a hacer unos ajustes para preparar nuestro entorno para la instalación.

2) - Instalar las dependencias para armar el paquete DEB.

Si notamos, vemos que el archivo que estamos bajando es uno con extensión RPM.ZIP lo cual indica que tendremos que convertir ese RPM en un DEB que sea compatible con Ubuntu. Para ello necesitamos algunas librerías. Entonces, abrimos una terminal presionando Ctrl + Alt + T y corremos los siguientes comandos:

sudo apt-get update

sudo apt-get install alien libaio1 unixodbc vim

3) - Extraer el archivo oracle-xe-11.2.0-1.0.x86_64.rpm.zip

Bien, una vez que la descarga del archivo finalice... debemos descomprimir dicho archivo por linea de comandos para que los archivos se extraigan con los permisos y propietarios correctos. Para ello desde la terminal nos dirigimos a la carpeta de Descargas que es normalmente donde se bajaría el archivo. Descomprimos con estos comandos:

cd Downloads/

unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip


4) - Convertir el arhivo RPM a DEB,

Si notamos, la extracción del archivo descargado ha generado una carpeta Disk1. Accedemos a ella con la terminal para ejecutar el comando que transformará el archivo RPM en DEB para poder realizar la instalación. Para ello corremos estos comandos:

cd Disk1/

sudo alien --scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm

Nota: este ultimo comando (alien) puede tomar entre 2 a 10 minutos en terminar, dependiendo de la configuración de tu hardware. Se paciente.

Si volvemos a mirar dentro de la carpeta Disk1 (con el comando ll o ls -l) podremos ver que se ha creado el archivo oracle-xe_11.2.0-2_amd64.deb.



5) - Preparando el entorno antes de la instalación.

A continuación ejecutaremos algunos comandos... pero se tomará en cuenta que versión de Ubuntu estamos usando antes de ejecutar dichos comandos. Otra cosa, necesitamos copiar estos comandos en un archivo de texto porque algunos navegadores web pueden llegar a cerrarse al ejecutar los comandos sin abrirse hasta completar cada uno de ellos.

Nota: estos comandos ayudan a prevenir el error de instalación: MEMORY TARGET error ( ORA-00845: MEMORY_TARGET not supported on this system )

En Ubuntu 14.04:

sudo rm -rf /dev/shm

sudo mkdir /dev/shm

sudo mount -t tmpfs shmfs -o size=2048m /dev/shm



En Ubuntu 16.04:

sudo mount -t tmpfs shmfs -o size=2048m /dev/shm

Dado a que estos cambios son temporales para la sesión actual y serán perdido tras reiniciar el sistema. Vamos a crear unos archivo ejecutables que se ejecuten al inicio del sistema y que hagan estos cambios de forma permanente.


6) - Crear archivos ejecutables para dejar la configuración anterior de forma permamente.

Para ello ejecutamos estos comandos en una terminal:

sudo touch /etc/rc2.d/S10oracle-mount

sudo gedit /etc/rc2.d/S10oracle-mount

Esto creará un archivo S10oracle-mount, copiar el texto de abajo como contenido del archivo creado.

#! /bin/sh
### BEGIN INIT INFO
# Provides:          Creates Oracle mount point
# Required-Start:    
# Required-Stop:     
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Used for Oracle installation
# Description:       Used for Oracle installation
### END INIT INFO

# Aktionen
case "$1" in
    start)
        mkdir /var/lock/subsys 2>/dev/null
        touch /var/lock/subsys/listener
        rm /dev/shm 2>/dev/null
        mkdir /dev/shm 2>/dev/null
        mount -t tmpfs shmfs -o size=2048m /dev/shm
        ;;
    stop)
        ;;
    restart)
        ;;
esac
exit 0
Si vemos el código, tendremos debajo del sector "start)" varios de los comandos que ejecutamos anteriormente según nuestra versión de Ubuntu. Adaptar el codigo a la version de Ubuntu que usemos (el codigo que figura arriba es para la versión 14.04 de Ubuntu).


Guardamos el archivo, y cerramos la ventana. Luego, corremos el siguiente comando para darle los permisos necesarios:

sudo chmod 755 /etc/rc2.d/S10oracle-mount

7) - Crear usuarios y grupos para la instalación.

Ahora vamos a crear algunos usuarios de Oracle ejecutando estos comandos:

sudo su -

groupadd oinstall

groupadd dba

useradd -m -g oinstall -G dba oracle

passwd oracle

introduzca la contraseña 123 (o la contraseña que te resulte mejor... recordarla) y volverla a escribir presionando ENTER para confirmar la contraseña.

groupadd nobody

usermod -g nobody nobody

8) - Configurar valores del Kernel y otras hierbas.

Se debe establecer algunos valores para el kernel y para la base de datos. Esto se logra creando algunos archivos de configuracion.

Entonces, ejecutamos el siguiente comando para crear un archivo que creará una carpeta temoral que usará la base de datos oracle:

sudo gedit /etc/rc2.d/S01shm_load

Esto creará el archivo S01shm_load, copiar el texto de abajo como contenido del archivo creado.

#!/bin/sh
case “$1” in
start) mkdir /var/lock/subsys 2>/dev/null
       touch /var/lock/subsys/listener
       rm /dev/shm 2>/dev/null
       mkdir /dev/shm 2>/dev/null
       mount -t tmpfs shmfs -o size=2048m /dev/shm ;;
*) echo error
   exit 1 ;;
esac

Guardamos el archivo, y cerramos la ventana. Y luego, corremos el siguiente comando para darle los permisos necesarios:

sudo chmod 755 /etc/rc2.d/S01shm_load

Ahora, corremos el siguiente comando:

sudo gedit /etc/sysctl.conf

Este comando abrira el archivo sysctl.conf, añadir las lineas de abajo al final del archivo:

##############################
# Oracle XE Recommended Values
kernel.sem = 250 32000 100 128
kernel.shmmax = 536870912
##############################

Guardar el archivo y cerrar la ventana. Luego ejecutar el siguiente comando:

sudo gedit /sbin/chkconfig

Esto creará el archivo chkconfig, copiar el texto de abajo como contenido del archivo creado.

#!/bin/bash
file=/etc/init.d/oracle-xe
if [[ ! `tail -n1 $file | grep INIT` ]]; then
echo >> $file
echo ‘### BEGIN INIT INFO’ >> $file
echo ‘# Provides: OracleXE’ >> $file
echo ‘# Required-Start: $remote_fs $syslog’ >> $file
echo ‘# Required-Stop: $remote_fs $syslog’ >> $file
echo ‘# Default-Start: 2 3 4 5’ >> $file
echo ‘# Default-Stop: 0 1 6’ >> $file
echo ‘# Short-Description: Oracle 11g Express Edition’ >> $file
echo ‘### END INIT INFO’ >> $file
fi
update-rc.d oracle-xe defaults 80 01

Guardamos el archivo, y cerramos la ventana. Luego, corremos el siguiente comando para darle los permisos necesarios:

sudo chmod 755 /sbin/chkconfig

Ahora ejecuta el siguiente comando para crear el archivo que establecerá los parametros del kernel:

sudo gedit /etc/sysctl.d/60-oracle.conf

Esto creará el archivo 60-oracle.conf, copiar el texto de abajo como contenido del archivo creado.

# Oracle 11g XE kernel parameters
fs.file-max=6815744
net.ipv4.ip_local_port_range=9000 65000
kernel.sem=250 32000 100 128
kernel.shmmax=536870912

Guardamos el archivo, y cerramos la ventana.

Comprobamos que el contenido se ha guardado correctamente ejecutando el siguiente comando:

sudo cat /etc/sysctl.d/60-oracle.conf

Deberíamos ver la siguiente pantalla:


Una vez establecidos los parametros del kernel, debemos cargarlos en la sesión actual ejecutando el siguiente comando:

sudo service procps start

9) - Crear enlaces simbólicos y dejar todo listo para la instalación propiamente dicha.

Ejecutar los siguientes comandos:

sudo ln -s /usr/bin/awk /bin/awk

sudo mkdir /var/lock/subsys

sudo touch /var/lock/subsys/listener

Por fin estamos listos para instalar Oracle 11g XE :)

10) - Instalar Oracle 11g XE.

Primero debemos estar dentro del directorio ~/Downloads/Disk1/ y recien ahí ejecutar el siguiente comando para empezar la instalación:

sudo dpkg --install oracle-xe_11.2.0-2_amd64.deb


Todo bien hasta el momento, ahora solo resta configurar Oracle XE. Para ello, ejecutamos el siguiente comando:

sudo /etc/init.d/oracle-xe configure

A continuación se nos hace una pregunta, presionar ENTER para haceptar el valor por defecto 

Specify the HTTP port that will be used for Oracle Application Express [8080]:

En la siguiente pregunta volvemos a presionar ENTER para haceptar el valor por defecto

Specify a port that will be used for the database listener [1521]:

En la pregunta que sigue nos pide la contraseña para el usuario SYS, ponemos 123 (o la contraseña que escogimos anteriormente).

/etc/init.d/oracle-xe: line 405: /bin/awk: No such file or directory
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:

tendremos que confirmar la contraseña introduciendola de nuevo.

Y en la última pregunta escribimos la letra Y para aceptar que la base de datos se inicie con el sistema.

Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]:

Al parecer todo va bien de momento como se muestra en la imagen:


Sin embargo, aunque aparezcan "los siguientes errores" no hay ningún problema realmente en las líneas 775, 776, 777, 778, 779, 780, 781 y 782. Es solo que tienen un comilla simple al principio de cada línea nada mas. Se podrá apreciar al final del archivo /etc/init.d/oracle-xe como se ve a continuación:

‘### BEGIN INIT INFO’
‘# Provides: OracleXE’
‘# Required-Start: ’
‘# Required-Stop: ’
‘# Default-Start: 2 3 4 5′
‘# Default-Stop: 0 1 6′
‘# Short-Description: Oracle 11g Express Edition’
‘### END INIT INFO’

Cada vez que detengamos o iniciemos la base de datos veremos los errores anteriores. Si desean dejar de mostrar estos errores, es tan simple como borrar las comillas simples al comienzo de cada linea. Para ello ejecutamos el siguiente comando:

sudo gedit /etc/init.d/oracle-xe

y borramos las comillas simples de las ultimas lineas del archivo.


Nota: Si los errores son diferentes de los anteriores, comprobar cual es el problema y no proceder con el resto de la instalación de la SOA Suite.

11) - Configurar la variable $ORACLE_HOME y habilitar comandos oracle (sqlplus, entre otros.)

Ejecutamos el siguiente comando:

sudo gedit ~/.bashrc

Esto abrira el archivo .bashrc, añadir las lineas de abajo al final del archivo:

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_SID=XE
export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export ORACLE_BASE=/u01/app/oracle
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH


Guardar el archivo y cerrar la ventana.

Ahora ejecutamos lo siguientes comandos para cargar estos cambios a la sesión actual:

cd

. ./.profile

12) - Configurando la base de datos.

Ahora vamos a acceder a la base de datos con el usuario SYS y vamos a configurar algunos parámetros. Para ello ejecutar el siguiente comando en la terminal:

sqlplus

Enter user-name: sys as sysdba

Enter Password:    (en mi caso ingrese la contraseña 123)


Ejecutamos las siguientes sentencias para aumentar el número de procesos y sesiones de Oracle XE:

alter system set sessions = 600 scope=spfile;

alter system set processes = 750 scope=spfile;

Luego:

Shutdown;

Y una vez que termine de apagarse la base de datos, ejecutamos:

Startup;


13) - Accediendo a Oracle XE Web.

Ejecutar el siguiente comando:

chmod +x ~/Desktop/oraclexe-gettingstarted.desktop

Para probar en tu navegador web, tipea la URL:


Si en tu navegador web ves la siguiente pantalla, has realizado bien la instalación:


Si deseas acceder, ingresa la siguiente información:

Workspace: INTERNAL
Username: ADMIN
Password:  (ingresar la contraseña que hemos establecido cuando configuramos la base de datos, en mi caso 123).

Nota: La primera vez que accedas se te pedirá que cambies la contraseña, pero puedes poner la misma si lo deseas.

Despues de esto, volver a la pantalla de inicio de sesión y loguearse. Veras la siguiente pantalla:



Eso es todo. Ya tenemos la base de datos Oracle 11g XE.

Nos vemos en la siguiente entrega de esta guía 11g.


Cosas útiles

Crear esquema de usuario en blanco para realizar pruebas

Acceder con el usuario SYS y ejecutamos las siguiente sentencias SQL para crear un esquema de usuario nuevo:

create user DEMO identified by DEMO;

grant connect, resource, create any view to DEMO;

Luego de esto, podemos acceder al esquema de usuario DEMO desde sqlplus o SQL Developer con los siguientes datos:

host: localhost
puerto: 1521
SID: XE
user: DEMO (nombre de usuario, esto es cuando hace create user DEMO)
pass: DEMO (contraseña del usuario, esto se hace en identified by DEMO)



Habilitar esquema HR de Oracle para cursos y pruebas

Ya sea para realizar el curso de SQL o realizar pruebas sobre tablas que tengan datos ya cargados. Se puede habilitar el esquema de usuario HR (Human Resource, o Recursos Humanos).

Para ello ejecutar las siguiente sentencia desde sqlplus con el usuario SYS:

@?/demo/schema/human_resources/hr_main.sql

Se nos pedira una serie de datos, para ello completamos asi:

• Ingresar una contraseña para el esquema HR. (se recomienda la contraseña hr o HR)

specify password for HR as parameter 1:
Enter value for 1:

• Ingresar un espacio de tablas por defecto. Aca debemos ingresar el valor users

specify default tablespace for HR as parameter 2:
Enter value for 2:

• Ingresar un espacio de tablas temporal. Ingresar el valor temp

specify temporary tablespace for HR as parameter 3:
Enter value for 3:

• Debemos ingresar también nuestra contraseña para el usuario SYS (en mi caso 123).

specify password for SYS as parameter 4:
Enter value for 4:

• Y por ultimo, establecer la ruta (path) hacia una carpeta de log (puede ser cualquiera). En mi caso introduje el path: $ORACLE_HOME/log

specify log path as parameter 5:
Enter value for 5:

2 comentarios:

  1. Traeré una versión actualizada de esta guía para Ubuntu 18.04 o superior, ya que hay comandos que no funcionan. Por ejemplo, en la parte donde se vuelve a montar la particion /dev/shm, el comando actualizado es el siguiente: $ mount -o remount,size=2048m /run/shm

    ResponderEliminar
  2. Otra dependencia que hace falta en Ubuntu 18.04 o superior a la hora de instalar dependencias es la siguiente: $ sudo apt-get install net-tools

    ResponderEliminar