Instalar Oracle APEX 18.2 en una Base de Datos Oracle XE 18C Usando ORDS

Por Clarisa Maman Orfali Oracle ACE director
Publicado en Mayo 2019

Revisado por Francisco Riccio




Después de completar la instalación de la base de datos Oracle XE 18c, explicada en un artículo anterior, deberíamos tener una base de datos en funcionamiento llamada XE con un PDB llamado XEPDB1.

En esta segunda parte de esta guía vamos a cubrir los pasos necesarios para configurar e instalar Oracle APEX 18.2 con ORDS en la base de datos Oracle XE 18c para disponer de un entorno de desarrollo completo de Oracle APEX 18.2 localmente.

Primero debemos descargar el software del Oracle APEX 18.2 y el Oracle REST Data Services (ORDS) 18.4 del sitio web de Oracle.

Iniciamos sesión en el sitio web: https://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html

Descargamos el Oracle APEX para todos los lenguajes:

Oracle APEX 18.2 – All Languages Download
[MD5 Checksum: 8332806e5cd355af16e9f817c915559d]

Guardamos el archivo apex_18.2.zip  en una ubicación dentro de nuestro sistema de archivos.




Descargamos el ORD desde el siguiente link:
https://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html

Oracle REST Data Services (ORD):
MD5: 980c9a24622799d615761c69a44f7faa
SHA1: fef0c39949591c3d9c19dda4fdbfebb913e1331e



El esquema principal de APEX utiliza una convención de nombres específica de la versión, para APEX 18.2 el esquema principal es APEX_180200.

Hay diferentes tipos de usuarios en APEX que debemos tener en cuenta:

  • Administradores de Instancias: estos usuarios son Súper usuarios que administran la instancia usando una aplicación separada llamada Oracle Application Express Administration Services
  • Administradores del Espacio de Trabajo: estos usuarios realizan tareas de administración específicas para un área o espacio de trabajo
  • Desarrolladores: estos usuarios inician sesión en un espacio de trabajo y pueden crear aplicaciones
  • Usuarios Finales: estos usuarios solo pueden ejecutar aplicaciones existentes





El Web Listener



Para que Oracle Application Express pueda ejecutarse debe tener acceso a un web listener.

El web listener funciona como un intermediario de comunicaciones entre el navegador web y los objetos de Oracle Application Express en la base de datos de Oracle al asignar las solicitudes del navegador a las llamadas a procedimientos almacenados de la base de datos.

Podemos elegir cualquiera de estos tres Web Listener:

 

  • Oracle REST Data Services
  • Oracle HTTP Server (en desuso)
  • Embedded PL/SQL Gateway (legacy web listener)

Oracle Application Express utiliza una arquitectura simple en la que las páginas se generan dinámicamente utilizando metadatos almacenados en la base de datos Oracle. No hay generación de código o compilación basada en archivos. Una vez que está completamente instalado, se define un Localizador Uniforme de Recursos (URL) para que tanto los desarrolladores como los usuarios finales accedan a Oracle Application Express. Los usuarios requieren solo un navegador web y la URL requerida. No se requiere software de cliente adicional.

Mas adelante en esta guía vamos a instalar y configurar el Web Listener Oracle Rest Data Services, el cual este servicio es el mas rico en funcionalidades y el único, ya que las otras dos opciones se consideran obsoletas.

Oracle recomienda eliminar Oracle Application Express de la base de datos del contenedor raíz (CDB) para la mayoría de los casos de uso. Recordemos que, en nuestra configuración, previamente realizada en un artículo anterior, la base de datos del contenedor raíz es XE y el PDB es XEPDB1.






Desinstalar Application Express 18.2 de un CDB



La instalación o eliminación de Application Express de un CDB requiere una conexión local a la base de datos.

Descomprimimos el archivo apex_18.2.zip dentro de una carpeta, por ejemplo, llamada C:\apex

Debemos mantener el árbol de directorios donde descomprimimos los archivos que sean cortos y no en directorios que contengan espacios en blanco.




Cambiamos al directorio de APEX en la ubicación donde hemos descomprimido la carpeta de los archivos de APEX 18.2.

Iniciamos el SQLPlus y nos conectamos a la base de datos donde Application Express está instalado como SYS con privilegios de SYSDBA.

C:\>cd apex

C:\apex>sqlplus /nolog

SQL> conn sys as sysdba
Enter password:
Connected.


Ejecutamos el script @apxremov.sql.

Nota: Si ejecutamos apexremov.sql después de haber agregado un PDB al CDB, entonces Application Express se desinstala de todos los PDB. Por lo tanto, se eliminarán todas las aplicaciones definidas en cualquiera de los PDB.






Instalación de APEX 18.2 localmente en el PDB XEPDB1



Cambiamos al directorio de APEX en la ubicación donde hemos descomprimido la carpeta de los archivos de APEX 18.2.

Iniciamos SQLPlus y nos conectamos a la base de datos donde Application Express está instalado como SYS con privilegios de SYSDBA.

C:\>cd apex

C:\apex>sqlplus /nolog

SQL> conn sys as sysdba
Enter password:
Connected.



Nos aseguramos de estar dentro del contenedor XEPDB1:

ALTER SESSION SET CONTAINER = <PDB_name>;

SQL> ALTER SESSION SET CONTAINER = XEPDB1;

Session altered.

SQL> show con_name

CON_NAME
------------------------------
XEPDB1

SQL> show user
USER is "SYS"



Esperamos que la salida de arriba sea XEPDB1 y SYS. Ahora vamos a crear un nuevo tablespace llamado APEX.

CREATE TABLESPACE APEX datafile 'C:\app\Clarisa\product\18.0.0\oradata\XE\XEPDB1\apex_data01.dbf'  
SIZE 1G EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;
  
Tablespace created.



Seleccionamos la opción de instalación más adecuada para nosotros. En este caso yo utilizaré la opción del entorno de desarrollo completo.

El entorno de desarrollo completo proporciona acceso completo al entorno de App Builder para desarrollar aplicaciones. Un entorno de tiempo de ejecución permite a los usuarios ejecutar aplicaciones que no pueden modificarse.

Las opciones de instalación disponibles incluyen:

Entorno de desarrollo completo: ejecutamos apexins.sql pasando los siguientes cuatro argumentos en el orden mostrado:

@apexins.sql tablespace_apex tablespace_files tablespace_temp images

Dónde:

  • tablespace_apex: es el nombre del tablespace para el usuario de la aplicación de Application Express.
  • tablespace_files: es el nombre del tablespace para el usuario de los archivos de Application Express.
  • tablespace_temp: es el nombre del tablespace temporal o del grupo de tablespaces.
  • Images: es el directorio virtual para las imágenes de Application Express. Para admitir futuras actualizaciones de Application Express, definimos el directorio de imagen virtual como /i/.


Por ejemplo:

@apexins.sql SYSAUX SYSAUX TEMP /i/


Entorno de ejecución: ejecutamos apxrtins.sql pasando los siguientes cuatro argumentos en el orden mostrado:

@apxrtins.sql tablespace_apex tablespace_files tablespace_temp images

Dónde:

  • tablespace_apex: es el nombre del tablespace para el usuario de la aplicación Application Express.
  • tablespace_files: es el nombre del tablespace para el usuario de los archivos de Application Express.
  • tablespace_temp: es el nombre del tablespace temporal o del grupo de tablespaces.
  • Images: es el directorio virtual para las imágenes de Application Express. Para admitir futuras actualizaciones de Application Express, definimos el directorio de imagen virtual como /i/.


Por ejemplo:

@apxrtins.sql SYSAUX SYSAUX TEMP /i/


Seguidamente ejecutamos la instalación de APEX usando el siguiente comando en SQLPlus.

Recordemos que debemos estar dentro de la carpeta apex y luego abrir el SQLPlus.

SQL> @apexins.sql APEX APEX TEMP /i/ 


Se inicia la instalación de Oracle APEX 18.2.





Al final de la instalación veremos:

Thank you for installing Oracle Application Express 18.2.0.00.12
Oracle Application Express is installed in the APEX_180200 schema.
…
  


El script de instalación crea 3 nuevas cuentas de base de datos:

  • APEX_180200: Es la cuenta propietaria del esquema y los metadatos de Application Express

  • FLOWS_FILES: Es la cuenta propietaria de los archivos cargados de Application Express

  • APEX_PUBLIC_USER: Es la cuenta con privilegios mínimos que se utiliza para la configuración de Oracle Application Express con Oracle REST Data Services u Oracle HTTP Server y mod_plsql





Instalación de APEX y configuración del Oracle REST Data Services



Vamos a crear la cuenta de administración de la Instancia.

Abrimos una ventana de comandos del DOS. Nos aseguramos de estar dentro del contenedor XEPDB1:

SQL> ALTER SESSION SET CONTAINER = XEPDB1;



Ejecutamos el siguiente script:

SQL> @apxchpwd.sql
Usuario administrador: [ADMIN]
Email: mi email@dominio.com
Pass: my_password








Configurar el APEX_PUBLIC_USER



La cuenta APEX_PUBLIC_USER se crea con una contraseña aleatoria en una nueva instalación de Oracle Application Express y también se bloquea.

SQL> ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK;

SQL> ALTER USER APEX_PUBLIC_USER IDENTIFIED BY my_password;



Ahora vamos a crear un nuevo perfil para asignar la cuenta APEX_PUBLIC_USER para que no caduque por defecto después de 180 días:

SQL> create profile APEX_USER_PROFILE limit PASSWORD_LIFE_TIME UNLIMITED;

SQL> alter user APEX_PUBLIC_USER profile APEX_USER_PROFILE;
  





Deshabilitar el Oracle XML DB Protocol Server



Si anteriormente estábamos usando la configuración de embedded PL/SQL gateway y ahora deseamos usar el Oracle REST Data Services, debemos deshabilitar el Oracle XML DB Protocol Server.

Para deshabilitar el Oracle XML DB Protocol Server:

Iniciamos SQLPlus y nos conectamos a la base de datos donde Oracle Application Express está instalado como el usuario SYS con privilegios de SYSDBA.

Ejecutamos el siguiente comando:

EXEC DBMS_XDB.SETHTTPPORT(0);





Instalar y Configurar el ORDS



Este paso creará 2 usuarios adicionales que son utilizados para el REST.

  • APEX_REST_PUBLIC_USER: Se usa cuando se invocan definiciones de Servicios RESTful almacenadas en APEX
  • APEX_LISTENER: Se utiliza para consultar las definiciones de servicios RESTful almacenadas en Application Express



Crear Nuevo Tablespace para el ORDS

Nos conectamos:

C:\> sqlplus SYS/my_password@XE as SYSDBA
SQL> ALTER SESSION SET CONTAINER = XEPDB1;



Creamos un tablespace para ORDS:

CREATE TABLESPACE ORDS datafile 'C:\app\Clarisa\product\18.0.0\oradata\XE\XEPDB1\
ords_data01.dbf' SIZE 1G EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;


Salimos del SQLPlus con el comando Exit.




Configurar el ORDS

Las siguientes tareas serán las que realizaremos para la configuración del ORDS:

  • Copiando el Directorio de Imágenes: Tanto sea que, si estamos cargando una nueva instalación o realizando una actualización de una versión anterior, debemos copiar el directorio de imágenes desde el nivel superior del directorio apex\images, por ejemplo C:\apex, a la ubicación utilizada por nuestra instalación del Oracle REST Data Services.

  • Validación de la instalación del Oracle REST Data Services: En una nueva instalación o actualización de Oracle Application Express, debemos validar la instalación de Oracle REST Data Services.

  • Configurando RESTful Services: En una nueva instalación o actualización de Oracle Application Express, debemos ejecutar el script de configuración apex_rest_config.sql para configurar los servicios RESTful.

  • Configuración de Static File Support: Para configurar archivos estáticos, debemos ejecutar apex_rest_config.sql después de una nueva instalación o actualización de Oracle Application Express.



Copiando el Directorio de Imágenes

Descomprimimos el archivo ords-18.4.0.354.1002.zip  que anteriormente descargamos dentro de una carpeta llamada C:\ords.



Copiamos la carpeta images de la instalación de APEX que se encuentra en C:\apex\ y la pegamos dentro de la carpeta C:\ords.






Validación de la instalación del Oracle REST Data Services



Cuando se instala el Oracle REST Data Services los archivos de configuración se instalan en la carpeta /temp/apex de Windows y esa ubicación no es el mejor lugar para disponer de esos archivos, por ello vamos a crear una carpeta que albergue esos archivos de configuración dentro del directorio ords y lo llamaremos config y en configuración de la carpeta le otorgamos acceso de escritura.

Abrimos una ventana CMD y ejecutamos lo siguiente:

C:\ords>java -jar ords.war configdir C:\ords\config



Ahora vamos a configurar los detalles de conexión de la base de datos:

C:\ords>java -jar ords.war install advanced
Enter the name of the database server [localhost]:
Enter the database listen port [1521]:
Enter 1 to specify the database service name, or 2 to specify the database SID [1]:
Enter the database service name [XEPDB1]:
Enter 1 if you want to verify/install Oracle REST Data Services schema or 2 to skip 
this step [1]:
Enter the database password for ORDS_PUBLIC_USER:
Confirm password:
Requires SYS AS SYSDBA to verify Oracle REST Data Services schema.

Enter the database password for SYS AS SYSDBA:
Confirm password:

Retrieving information.
Enter the default tablespace for ORDS_METADATA [AUX]:ORDS
Enter the temporary tablespace for ORDS_METADATA [TEMP]:
Enter the default tablespace for ORDS_PUBLIC_USER [USERS]:
Enter the temporary tablespace for ORDS_PUBLIC_USER [TEMP]:
Enter 1 if you want to use PL/SQL Gateway or 2 to skip this step.
If using Oracle Application Express or migrating from mod_plsql then you must enter 1 [1]:
Enter the PL/SQL Gateway database user name [APEX_PUBLIC_USER]:
Enter the database password for APEX_PUBLIC_USER:
Confirm password:
Enter 1 to specify passwords for Application Express RESTful Services database users 
(APEX_LISTENER, APEX_REST_PUBLIC_USER) or 2 to skip this step [1]:
Enter the database password for APEX_LISTENER:
Confirm password:
Enter the database password for APEX_REST_PUBLIC_USER:
Confirm password:
Mar 18, 2019 10:45:19 PM
INFO: reloaded pools: []
Installing Oracle REST Data Services version 18.4.0.r3541002
... Log file written to C:\Users\Clarisa\ords_install_core_2019-03-18_224519_00586.log
... Verified database prerequisites
... Created Oracle REST Data Services schema
... Created Oracle REST Data Services proxy user
... Granted privileges to Oracle REST Data Services
... Created Oracle REST Data Services database objects
... Log file written to C:\Users\Clarisa\ords_install_datamodel_2019-03-18_224529_00602.log
... Log file written to C:\Users\Clarisa\ords_install_apex_2019-03-18_224530_00633.log
Completed installation for Oracle REST Data Services version 18.4.0.r3541002. 
Elapsed time: 00:00:12.78
Enter 1 if you wish to start in standalone mode or 2 to exit [1]:2
C:\ords>



Configurando RESTful Services

Abrimos una Ventana de comandos y nos ubicamos dentro de la carpeta de instalación de APEX.

C:\apex



Nos conectamos a nuestro contenedor XEPDB1

C:\apex> sqlplus SYS/my_password@XE as SYSDBA
SQL> ALTER SESSION SET CONTAINER = XEPDB1;
SQL> @apex_rest_config.sql


Ingresamos las contraseñas para las cuentas APEX_LISTENER y APEX_REST_PUBLIC_USER




Configuración de Static File Support

Para configurar los archivos estáticos, debemos ejecutar apex_rest_config.sql después de una nueva instalación o actualización de Oracle Application Express.

Oracle Application Express permite a los desarrolladores de aplicaciones incluir archivos estáticos con sus aplicaciones. Los archivos estáticos se pueden asociar con un espacio de trabajo, una aplicación, un complemento o un tema de aplicación. Cuando utilizamos Oracle REST Data Services como nuestro listener, los archivos estáticos se sirven mediante el módulo de servicio RESTful integrado en Oracle Application Express. Por lo tanto, debemos ejecutar apex_rest_config.sql después de una nueva instalación o actualización de Oracle Application Express.






Otorgar Privilegios de Conexión en la Base de Datos Oracle 12c o Posterior



La habilitación de los servicios de red permite la compatibilidad con el envío de correo saliente en Oracle Application Express, el uso de servicios web en Oracle Application Express y la impresión de informes en PDF.

De forma predeterminada, la capacidad de interactuar con los servicios de red está deshabilitada en Oracle Database 11g versión 2 o posterior. Por lo tanto, si estamos ejecutando Oracle Application Express con Oracle Database 11g Release 2 o posterior, debemos usar el nuevo paquete DBMS_NETWORK_ACL_ADMIN para otorgar privilegios de conexión a cualquier host para el usuario de la base de datos APEX_180200. El no otorgar estos privilegios da como resultado problemas con:

  • Envío de correo saliente en Oracle Application Express.
  • Los usuarios pueden llamar a los métodos del paquete APEX_MAIL, pero surgen problemas al enviar correos electrónicos salientes.
  • Uso de servicios web en Oracle Application Express.
  • Impresión de informes en PDF.


Los procedimientos CREATE_ACL, ASSIGN_ACL, ADD_PRIVILEGE y CHECK_PRIVILEGE en DBMS_NETWORK_ACL_ADMIN están en desuso en Oracle Database 12c o versiones posteriores. Oracle recomienda utilizar APPEND_HOST_ACE.

El siguiente ejemplo muestra cómo otorgar privilegios de conexión a cualquier host para el usuario de la base de datos APEX_180200. En este ejemplo, se supone que nos conectamos a la base de datos donde se instaló Oracle Application Express como SYS con privilegios de SYSDBA.

BEGIN
    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => '*',
        ace => xs$ace_type(privilege_list => xs$name_list('connect'),
                           principal_name => 'APEX_180200',
                           principal_type => xs_acl.ptype_db));
END;
/





Configurar el Parámetro JOB_QUEUE_PROCESSES



El parámetro JOB_QUEUE_PROCESSES determina el número máximo de trabajos que se ejecutan simultáneamente. En Oracle Application Express, el soporte transaccional y los scripts SQL requieren trabajos. Si JOB_QUEUE_PROCESSES no está habilitado y funciona correctamente, no puede ejecutar un script con éxito.

C:\apex> sqlplus SYS/my_password@XE as SYSDBA

SQL> ALTER SESSION SET CONTAINER = XEPDB1;

SQL> SELECT VALUE FROM v$parameter WHERE NAME = 'job_queue_processes';

VALUE
-----------------------------------------------------------------
4000


Si necesitamos incrementar el número ejecutamos el siguiente comando:

ALTER SYSTEM SET JOB_QUEUE_PROCESSES = <number>





Arrancar el ORDS Rest Data Services Manualmente



Nosotros podemos arrancar el ORDS manualmente con el siguiente comando:

C:\ords>java  -jar ords.war standalone
Enter  the APEX static resources location [C:\ords\images]:
Enter  1 if using HTTP or 2 if using HTTPS [1]:
Enter the HTTP port [8080]:
…





Creación de un Espacio de Trabajo Manualmente



Abrimos un navegador web e ingresamos la siguiente URL:

http://localhost:8080/ords/apex_admin





Nombre de usuario: ADMIN

Contraseña: my_password

Hacemos click en Manage Workspaces luego click en Create Workspace





Ingresamos los siguientes detalles:

Workspace Name: APEXDEV

Workspace ID: Lo dejamos en blanco

Workspace Description: Espacio de Trabajo para Desarrollo en APEX





Hacemos click en el botón Next.

Re-use existing schema?         : No

Schema Name                            : APEXDEV

Schema Password                    : my_password

Space Quota (MB)                      : aceptamos el valor por defecto de 100MB





Hacemos click en el botón Next.

Administrator Username           : ADMINAPEXDEV

Administrator Password            : my_password

Email                                         : info@midominio.com





Hacemos click en el botón Next





Hacemos click en el botón Create Workspace



Hacemos clic en el botón Done. Cerramos sesión y el navegador.






Ingresar a la Página de Inicio de Oracle APEX 18.2



Abrimos el navegador e ingresamos la siguiente URL:

http://localhost:8080/ords

Ingresamos las nuevas credenciales de acceso para nuestro nuevo espacio de trabajo.





APEX nos solicita cambiar la contraseña por una nueva contraseña.





Realizamos el cambio de contraseña, e ingresamos a la página de inicio de Oracle Application Express 18.2.







Instalar Oracle APEX 18.2 en Español



Finalmente, si queremos tener nuestro APEX traducido al español necesitamos primero establecer la variable NLS en nuestro sistema operativo Windows.

C:\>set NLS_LANG=American_America.AL32UTF8



Ahora nos ubicamos en la carpeta de instalación de APEX C:\apex\builder\es y abrimos el SQLPlus y ejecutamos el script  load_es.sql.

C:\apex\builder\es>sqlplus SYS/my_password@XE as SYSDBA
SQL> ALTER SESSION SET CONTAINER = XEPDB1;
SQL> @load_es.sql



El script comienza a ejecutarse para traducir el APEX al español.





Una vez finalizado el script, comprobamos que nuestro APEX ahora pueda verse en Inglés y Español.
Arrancamos el ORDS Standalone desde la ventana de comandos.

C:\ords> java -jar ords.war standalone



Abrimos el navegador e ingresamos la URL:

http://localhost:8080/ords

Workspace: APEXDEV

Username: ADMINAPEXDEV

Password: my_password





De esta forma hemos llegado al final de esta guía de instalación de Oracle Application Express 18.2 en una base de datos Oracle XE 18c y podemos empezar a trabajar en la creación de aplicaciones web con esta poderosa herramienta.




Clarisa Maman Orfali es fundadora y CEO de ClarTech Solutions Inc. Se ha convertido en Oracle ACE hace algunos años, tiene más de 15 años de experiencia en el desarrollo y la capacitación en tecnologías de la información. Hace unos años descubrió la belleza de Oracle Application Express (APEX) y se ha especializado en esa área. Ella también es una Co-Fundadora y Directora del Argentina Oracle User Group (AROUG) y ha participado activamente en la organización de grandes y populares eventos. Ella tiene una gran pasión por las tecnologías de Oracle y quiere ampliar esa pasión e influencia transfiriendo su conocimiento y experiencia a la totalidad de las comunidades de Oracle América Latina y en todo el mundo.

Este artículo ha sido revisado por el equipo de productos Oracle y se encuentra en cumplimiento de las normas y prácticas para el uso de los productos Oracle.