miércoles, 23 de octubre de 2019

Instalar Apex 18 en Oracle 12c Multitenant


A continuación voy a mostrar unos pasos de manera simple para instalar una nueva versión del APEX en nuestra base de datos, el procedimiento está para base de datos multitenant, pero también se puede realizar sobre tradicionales (non-cdb) obviando el paso del cambio de contenedor.

Para instalar el Apex 18 o superior en una base de datos (El procedimiento también aplica para la versión 5, 5.x, 18.1) primero se debe descargar el archivo ZIP que necesitamos en la página de descargas de oracle (https://www.oracle.com/downloads)

De la descarga obtenemos un archivo ZIP, en este caso, el apex_18.1.zip, el cual subiremos al servidor donde reemplazaremos la carpeta $ORACLE_HOME/apex por la que está dentro del ZIP.

mv /ruta/del/archivo/apex_18.1.zip $ORACLE_HOME/
cd $ORACLE_HOME
-- si se quiere hacer un respaldo de la anterior
zip -r apex_old.zip apex/
rm -rf apex
unzip apex_18.1.zip

He de decir que este paso no es realmente necesario, ya que el ZIP se puede descomprimir en cualquier lugar y ejecutar desde ese lugar, es más una cuestión de orden para futuras instalaciones de la herramienta en otras instancias.

Luego de la "instalación" de la nueva versión en el home, procedemos a instalarlo realmente en la base de datos. Normalmente las bases de datos ya tienen de versiones anteriores, migraciones o de la misma instalación, una versión previa del apex (4.2 creo que es la por defecto) por lo que procederemos a desinstalarla.

Ingresamos al directorio del apex

cd $ORACLE_HOME/apex
-- Ingresamos a la base de datos.
sqlplus / as sysdba

-- Ingresamos a la PDB (si es multitenant)
SQL> alter session set container=nombrepdb;
-- Ejecutamos el desinstalador que vino en el ZIP
SQL> @apxremov.sql

Y esperamos la ejecución. La instrucción final dice que se debe salir de la sesión y volver a ingresar antes de ejecutar el script de instalación.

Luego repetimos el mismo proceso en la CDB, es decir, sin ingresar en la PDB a través del alter session, esto es para asegurarnos que no queden estructuras del APEX en la CDB, aunque no debería ser así, de cualquier modo la desinstalación es más rápida esta vez.

Para Instalar el nuevo APEX ingresamos a la base de datos nuevamente y lo vamos a hacer directamente en la PDB.

El script de instalación pide 4 parámetros que se pueden ingresar directamente en la línea de ejecución
Parámetro 1: Nombre del tablespace para el usuario de aplicación del Application Express
Parámetro 2: Nombre del tablespace para los archivos del usuario del Application Express
Parámetro 3: Nombre del tablespace temporal o del grupo de tablespaces temporales.
Parámetro 4: directorio virtual para las imagenes APEX (/i/)

En este caso utilizaremos el tablespace USERS y TEMP que ya vienen por defecto en las bases de datos, sin embargo se pueden cambiar por cualquiera de nuestra preferencia, el cuarto parámetro es un alias para el directorio de imágenes que se configura en el servidor de aplicaciones, pero que no es necesario tener listo para este paso.

Finalmente, la sintaxis de creación queda así.

@apexins.sql USERS USERS TEMP /i/

cd $ORACLE_HOME/apex
-- Ingresamos a la base de datos.
sqlplus / as sysdba

-- Ingresamos a la PDB (si es multitenant)
SQL> alter session set container=nombrepdb;
-- Ejecutamos el desinstalador que vino en el ZIP
SQL> @apexins.sql USERS USERS TEMP /i/
.
.
.
...set_appun.sql


PL/SQL procedure successfully completed.


Al final la ejecución muestra datos como las URL y los puertos asignados al APEX

Para verificar la nueva versión del apex, realizamos la siguiente consulta:

Select * from apex_release;



ORA-24098: valor invalido <NULL> para EMAIL_SERVER

Este error aparece cuando se quiere adicionar una notificación a un JOB que hemos creado previamente, y sucede porque el scheduler de la b...