Instalando ORDS
Tags: oracle, ords, apex, spanish
Published: 2021-02-21 21:20:54

Hasta este punto ya tenemos disponibles dos servidores, uno con las base de datos XE 18c con APEX instalado y otro con Apache Tomcat. Ahora procederemos a instalar ORDS en la base de datos y a desplegarlo en Tomcat.

Primero verifiquemos que todos los usuarios de la base de datos que son requeridos estén desbloqueados y que conocemos sus contraseñas.

```
ALTER USER APEX_LISTENER IDENTIFIED BY SomePassword1 ACCOUNT UNLOCK;
ALTER USER APEX_PUBLIC_USER IDENTIFIED BY SomePassword1 ACCOUNT UNLOCK;
ALTER USER APEX_REST_PUBLIC_USER IDENTIFIED BY SomePassword1 ACCOUNT UNLOCK;
```
ORDS lo instalaremos en el servidor ubuntu que creamos previamente, por lo que tomaremos los archivos que descargamos desde la pagina de Oracle (tanto el archivo `ords-19.2.0.199.1647.zip` como el archivo `apex_20.1.zip`, de este ultimo vamos a necesitar un directorio) y los pondremos en el directorio donde se encuentra el archivo `Vagrantfile` de nuestra VM.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ke8fb3z6kma8t934szed.png)
Luego ingresamos a la VM y los copiaremos desde el directorio /vagrant hasta el directorio ~/ (el home de nuestro usuario)
```sh
cd /vagrant/
cp ords-19.2.0.199.1647.zip ~/
cp apex_20.1.zip ~/
cd ~
mkdir ords
mv ords-19.2.0.199.1647.zip ords
cd ords/
unzip ords-19.2.0.199.1647.zip
```
Al finalizar de descomprimir, vamos a crear un directorio para almacenar la configuracion
```sh
mkdir conf
```
Para hacer mas sencilla la instalación, vamos a modificar el archivo `ords/params/ords_params.properties` donde colocaremos los parametros requeridos por el proceso de instalación de ORDS
```
db.hostname=192.168.56.3
db.port=1521
db.servicename=XEPDB1
db.sid=
db.username=APEX_PUBLIC_USER
db.password=SomePassword1
migrate.apex.rest=false
plsql.gateway=true
rest.services.apex.add=true
rest.services.ords.add=true
schema.tablespace.default=APEX
schema.tablespace.temp=TEMP
standalone.mode=false
user.tablespace.default=USERS
user.tablespace.temp=TEMP
user.apex.listener.password=SomePassword1
user.apex.restpublic.password=SomePassword1
user.public.password=SomePassword1
user.tablespace.default=APEX
user.tablespace.temp=TEMP
sys.user=SYS
sys.password=SomePassword1
restEnabledSql.active=true
```
Ahora utilizaremos el archivo ords.war para configurar el directorio donde se almacenara la configuracion de ORDS (que sería el directorio que creamos hace unos momentos)
```
vagrant@localhost:~/ords$ java -jar ords.war configdir /home/vagrant/ords/conf
Feb 16, 2021 7:40:10 PM  
INFO: Set config.dir to /home/vagrant/ords/conf in: /home/vagrant/ords/ords.war
```
Y finalmente ejecutamos la instalacion con el siguiente comando (todos los parametros se leeran del achivos que editamos más arriba, si algún parametro falta o esta incorrecto entonces el proceso de instalación lo solicitará)
```
java -jar ords.war
vagrant@localhost:~/ords$ java -jar ords.war 

Retrieving information.
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]:
Feb 16, 2021 7:43:00 PM  
INFO: reloaded pools: []
Installing Oracle REST Data Services version 19.2.0.r1991647
... Log file written to /home/vagrant/ords_install_core_2021-02-16_194301_00301.log
Warning: Nashorn engine is planned to be removed from a future JDK release
... Verified database prerequisites
... Created Oracle REST Data Services proxy user
... Created Oracle REST Data Services schema
... Granted privileges to Oracle REST Data Services
... Created Oracle REST Data Services database objects
... Log file written to /home/vagrant/ords_install_datamodel_2021-02-16_194355_00262.log
... Log file written to /home/vagrant/ords_install_apex_2021-02-16_194359_00566.log
Completed installation for Oracle REST Data Services version 19.2.0.r1991647. Elapsed time: 00:01:03.64 
```
Ahora descomprimimos el archivo de apex y procedemos a copiar el directorio de imagenes en el directorio webapps de Tomcat, asi como el archivo ords.war
```sh
sudo mkdir /var/lib/tomcat8/webapps/i
sudo cp -R apex/images/* /var/lib/tomcat8/webapps/i/
sudo cp ords/ords.war /var/lib/tomcat8/webapps/
sudo service tomcat8 restart
```
Y finalmente pueden ingresar a localhost:8080/ords para ingresar a su instancia de APEX instalada sobre Tomcat.
![Inicio APEX](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6czuo6fhlsis8wlkea72.png)

Para ingresar simplemente coloquen INTERNAL como workspace, usuario ADMIN y la contraseña que ingresaron al correr el script apxchpwd.sql cuando instalamos APEX.

**En caso de problemas**
El error más común que he encontrado al hacer esta instalación es que los usuarios de BD no se encuentran desbloqueados o que la contraseña que colocamos en el archivo de configuración no es la correcta. Si este fuera el caso recuerden que deben borrar el contenido del directorio `conf` antes de intentar nuevamente la instalación.

También es importante que vean el contenido del archivo `/var/lib/tomcat8/logs/catalina.out` (probablemente deban ingresar como root) y ver los mensajes de error que allí se muestren al momento de levantar el proceso.

**Referencias**
Este [artículo sobre la instalación de APEX](https://oracle-base.com/articles/misc/oracle-application-express-apex-installation) y este sobre la [instalación de ORDS](https://oracle-base.com/articles/misc/oracle-rest-data-services-ords-installation-on-tomcat) fueron imprescindibles para crear esta serie.