Por Clarisa Maman Orfali
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:
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.
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.
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:
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:
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:
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
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;
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);
Este paso creará 2 usuarios adicionales que son utilizados para el REST.
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
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.
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.
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:
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; /
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>
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]: …
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.
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.
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.