Pular para o conteúdo

Como instalar o APEX e o ORDS no Oracle 19c

Instalando o APEX e o ORDS

Olá pessoal !

Hoje eu irei mostrar a vocês como instalar o APEX e o ORDS, para isso, utilizarei o meu container com o Oracle 19c EE que criei no meu último artigo.

A versão e distribuição do Linux no container é o Red Hat Enterprise Linux 7.9 e o banco de dados é o Oracle 19c EE 19.3.0. A versão do APEX é a 22.1 e a do ORDS é a 21.2.

Para fazer o download, basta clicar nos links abaixo:

Entenda que o fato de eu estar instalando o APEX e o ORDS diretamente no container, não muda os procedimentos feitos em uma instalação padrão (com SO e banco instalados em uma máquina física ou VM). Se esse for o seu caso, apenas pule os comandos referentes ao docker. Eles aqui constarão, apenas para que aqueles que acompanharam o último artigo, possam efetuar a instalação utilizando o mesmo container.

Então vamos lá !

Copiando as instalações para o container

Primeiro, iremos conectar no container como root, para isso, utilizaremos o comando abaixo:

sudo docker exec -it -u 0 oracle19c /bin/bash

O argumento -u 0 utiliza o id 0 (root) para se conectar no container.

Screenshot from 2022 05 15 13 34 22

Agora vamos copiar os arquivos do APEX e do ORDS para o container. Para isso, usarei o comando docker cp.

sudo docker cp ords-21.2.0.174.1826.zip 7c71ae50073c7256ffbaae4ee85e5b78bff93cbba02c41b80f78a973fb0feee5:/opt/ords

Sendo:

docker cp <arquivo> <container id>:<path>

Screenshot from 2022 05 15 13 40 36
Screenshot from 2022 05 15 13 41 04

Agora faremos a cópia do APEX para o container.

sudo docker cp V1020797-01.zip 7c71ae50073c7256ffbaae4ee85e5b78bff93cbba02c41b80f78a973fb0feee5:/opt
Screenshot from 2022 05 15 20 23 57

Agora vamos descompactar os arquivos.

unzip V1020797-01.zip
cd ords
unzip ords-21.2.0.174.1826.zip
Screenshot from 2022 05 15 20 27 03

Instalando o APEX

Agora vamos instalar o APEX.

Primeiro vamos setar a variável APEX_SOFTLOC com a localização da instalação do APEX.

export APEX_SOFTLOC=/opt/apex

Vamos ao diretório de instalação do APEX.

cd $APEX_SOFTLOC

Conectemos no SQL*Plus, utilizando o usuário SYS.

sqlplus sys@ORCL as sysdba
Screenshot from 2022 05 15 20 33 57

Vamos verificar se o APEX já está instalado.

select status 
from   dba_registry 
where  comp_id = 'APEX'
/
Screenshot from 2022 05 15 20 40 31

Verifique que não há instalações anteriores do APEX, portanto, vamos continuar a nossa instalação.

Verifiquemos se estamos conectados no PDB.

show con_id con_name
Screenshot from 2022 05 15 20 41 59

Hora de criar os tablespaces APEX_DATA e APEX_FILE.

create tablespace APEX_DATA datafile 'tbs_apex_data' size 1G autoextend on;
create tablespace APEX_FILE datafile 'tbs_apex_file' size 1G autoextend on;
Screenshot from 2022 05 15 20 53 10

Após todos os preparativos, finalmente iremos iniciar a instalação do APEX. O primeiro script a ser executado é o apexins.sql. Nele, vamos informar as tablespaces de dados e arquivos, além do TEMP.

@apexins.sql APEX_DATA APEX_FILE TEMP /i/
Screenshot from 2022 05 15 21 00 37
Screenshot from 2022 05 15 21 06 41

Verifiquemos agora o status da instalação:

select status from dba_registry where comp_id = 'APEX'
Screenshot from 2022 05 15 21 18 12

Instalação efetuada com sucesso !

Hora de verificarmos as instalações dos USUÁRIOS.

select * 
from  all_users 
where username LIKE '%APEX%' 
or    username LIKE '%FLOWS%';
Screenshot from 2022 05 15 21 35 47

Tudo ok ! Vamos DESBLOQUEAR a conta APEX_PUBLIC_USER.

alter user APEX_PUBLIC_USER account unlock identified by <password>;
image 8

Chegou o momento de habilitarmos os servicos de rede:

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

Substitua o principal_name pelo usuário sua instalação. No meu caso, é o APEX_220100.

image 9

Iremos agora configurar o servico RESTful. Isso será feito através do script apex_rest_config.sql.

Siga as instruções e cadastre a senha do usuário APEX_LISTENER.

@apex_rest_config.sql
Screenshot from 2022 05 15 21 42 49

Por último, acessemos novamente o SQL*Plus com o usuário SYS, e executemos os comandos abaixo:

SHOW PARAMETER job_queue_processes

Se o valor for do JOB_QUEUE_PROCESSES for menor que 20, execute o comando abaixo:

ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 20;

Instalação do APEX concluído com sucesso ! Parabéns !

Instalando o ORDS

Para iniciarmos a instalação do ORDS, primeiramente vamos setar algumas variáveis de ambiente para nos ajudar na instalação. Serão elas a JAVA_HOME, ORDS_SOFTLOC e a PATH.

A JAVA_HOME já é auto explicativa:

export JAVA_HOME=/opt/oracle/product/19c/dbhome_1/jdk/jre/bin

A ORDS_SOFTLOC é o path da instalação do ORDS:

export ORDS_SOFTLOC=/opt/ords

Na PATH será incluída a JAVA_HOME para não termos que digitar o caminho para executar o Java:

export PATH=$JAVA_HOME/bin:$PATH

Executando o instalador

cd $ORDS_SOFTLOC
java -jar ords.war setup advanced

O instalador iniciará a instalação do REST Data Services.

This Oracle REST Data Services instance has not yet been configured.
Please complete the following prompts


Enter the location to store configuration data: /opt/ords/config
Specify the database connection type to use.
Enter number for [1] Basic  [2] TNS  [3] Custom URL [1]:
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:ORCL

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 to login with administrator privileges to verify Oracle REST Data Services schema.

Enter the administrator username:sys

Enter the database password for SYS AS SYSDBA:
Confirm password:
Connecting to database user: SYS AS SYSDBA url: jdbc:oracle:thin:@//localhost:1521/ORCL

Retrieving information.
Enter the default tablespace for ORDS_METADATA [SYSAUX]:
Enter the temporary tablespace for ORDS_METADATA [TEMP]:
Enter the default tablespace for ORDS_PUBLIC_USER [SYSAUX]:
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:
Enter a number to select a feature to enable:
   [1] SQL Developer Web  (Enables all features)
   [2] REST Enabled SQL
   [3] Database API
   [4] REST Enabled SQL and Database API
   [5] None
Choose [1]:
2022-05-25T21:33:11.908Z INFO        reloaded pools: []
Installing Oracle REST Data Services version 21.2.0.r1741826
... Log file written to /root/ords_install_core_2022-05-25_213312_00617.log
... 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 /root/ords_install_datamodel_2022-05-25_213400_00156.log
... Log file written to /root/ords_install_apex_2022-05-25_213401_00972.log
Completed installation for Oracle REST Data Services version 21.2.0.r1741826. Elapsed time: 00:00:51.432 

ATENÇÃO: Todas as opções DEFAULT, estão com as linhas em NEGRITO. Já ás que estão em ITÁLICO, devem ser preenchidas com o valor informado.

Agora vamos configurar os arquivos estáticos. O ORDS para funcionar, precisa que a pasta images do APEX, que no nosso caso está em /opt/apex/images, seja copiado para a pasta /opt/ords/images. ^^

cp * -R /opt/ords/images/

Agora vamos prosseguir com a instalação do ORDS. Dessa vez será a configuração dos arquivos estáticos.

cd $ORDS_SOFTLOC
java -jar ords.war static /opt/ords/images/
WAR Generation complete
 WAR location     : /opt/ords/i.war
 Context path     : /i
 Static resources : /opt/ords/images/
Ensure the static resources are available at path: /opt/ords/images/
on the server where the WAR is deployed 

Finalmente chegamos ao penúltimo passo ! Vamos configurar e executar o ORDS Standalone Server.

Na primeira vez que o executarmos, ele irá configurar o ORDS Server. Já nas vezes subsequentes, ele apenas levantará o serviço.

java -jar ords.war standalone
Enter the APEX static resources location:/opt/ords/images
Enter 1 if using HTTP or 2 if using HTTPS [1]:

Enter the HTTP port [8080]:8202

2022-05-25T22:04:26.750Z INFO        HTTP and HTTP/2 cleartext listening on host: localhost port: 8202
2022-05-25T22:04:26.783Z INFO        Disabling document root because the specified folder does not exist: /opt/ords/config/ords/standalone/doc_root
2022-05-25T22:04:30.767Z INFO        Configuration properties for: |apex|al|
database.api.enabled=true
db.connectionType=basic
db.hostname=localhost
db.port=1521
db.servicename=ORCL
feature.sdw=true
restEnabledSql.active=true
security.requestValidationFunction=wwv_flow_epg_include_modules.authorize
security.validationFunctionType=plsql
db.password=******
db.username=APEX_LISTENER
resource.templates.enabled=true

2022-05-25T22:04:30.769Z WARNING     *** jdbc.MaxLimit in configuration |apex|al| is using a value of 10, this setting may not be sized adequately for a production environment ***
2022-05-25T22:04:30.769Z WARNING     *** jdbc.InitialLimit in configuration |apex|al| is using a value of 3, this setting may not be sized adequately for a production environment ***
2022-05-25T22:04:34.097Z INFO        Configuration properties for: |apex||
database.api.enabled=true
db.connectionType=basic
db.hostname=localhost
db.port=1521
db.servicename=ORCL
feature.sdw=true
restEnabledSql.active=true
security.requestValidationFunction=wwv_flow_epg_include_modules.authorize
security.validationFunctionType=plsql
db.password=******
db.username=APEX_PUBLIC_USER
resource.templates.enabled=true

2022-05-25T22:04:34.097Z WARNING     *** jdbc.MaxLimit in configuration |apex|| is using a value of 10, this setting may not be sized adequately for a production environment ***
2022-05-25T22:04:34.098Z WARNING     *** jdbc.InitialLimit in configuration |apex|| is using a value of 3, this setting may not be sized adequately for a production environment ***
2022-05-25T22:04:34.353Z INFO        Configuration properties for: |apex|pu|
database.api.enabled=true
db.connectionType=basic
db.hostname=localhost
db.port=1521
db.servicename=ORCL
feature.sdw=true
restEnabledSql.active=true
security.requestValidationFunction=wwv_flow_epg_include_modules.authorize
security.validationFunctionType=plsql
db.password=******
db.username=ORDS_PUBLIC_USER
resource.templates.enabled=true

2022-05-25T22:04:34.354Z WARNING     *** jdbc.MaxLimit in configuration |apex|pu| is using a value of 10, this setting may not be sized adequately for a production environment ***
2022-05-25T22:04:34.354Z WARNING     *** jdbc.InitialLimit in configuration |apex|pu| is using a value of 3, this setting may not be sized adequately for a production environment ***
2022-05-25T22:04:34.623Z INFO        Configuration properties for: |apex|rt|
database.api.enabled=true
db.connectionType=basic
db.hostname=localhost
db.port=1521
db.servicename=ORCL
feature.sdw=true
restEnabledSql.active=true
security.requestValidationFunction=wwv_flow_epg_include_modules.authorize
security.validationFunctionType=plsql
db.password=******
db.username=APEX_REST_PUBLIC_USER
resource.templates.enabled=true

2022-05-25T22:04:34.623Z WARNING     *** jdbc.MaxLimit in configuration |apex|rt| is using a value of 10, this setting may not be sized adequately for a production environment ***
2022-05-25T22:04:34.624Z WARNING     *** jdbc.InitialLimit in configuration |apex|rt| is using a value of 3, this setting may not be sized adequately for a production environment ***
2022-05-25T22:04:37.593Z INFO        Oracle REST Data Services initialized
Oracle REST Data Services version : 21.2.0.r1741826
Oracle REST Data Services server info: jetty/9.4.42.v20210604

ATENÇÃO: Na primeira opção, mantive o DEFAULT que é o http. Já ao definir a porta, eu escolhi a 8202 ao invés da 8080.

A razão para mudança de porta, é que vários serviços utilizam a porta 8080. Para evitar conflitos, foi escolhida a 8202.

Abra o navegador e digite:

http://localhost:8202/ords

image 3

Se essa tela apareceu para você, parabéns !!!! APEX e ORDS instalados com sucesso ! 🙂

Agora vem a pergunta de ouro. Qual o workspace, username e password eu utilizo ?!?!?

Lembra-se que eu escrevi acima, que configurar e executar o ORDS Server era o PENÚLTIMO passo da instalação ? Bem, agora iremos para o ÚLTIMO !

Até pensei em explicar isso em um outro artigo, mas pensei bem e vi que seria muita MALDADE. Imagine chegar até esse ponto, e não conseguir logar ? rs

Configurando o usuário ADMIN do APEX

Voltemos ao diretório de instalação do APEX.

cd $APEX_SOFTLOC

Conectemos novamente no SQL*Plus com o usuário SYS.

sqlplus sys@ORCL as sysdba

Vamos agora executar o script apxchpwd.sql e cadastrar uma senha para o usuário ADMIN.

O atributo alt desta imagem está vazio. O nome do arquivo é Screenshot-from-2022-05-26-20-46-36.png

Pronto, usuário ADMIN resolvido ! Mas como ficam as credenciais para conexão no ORDS ?

Não vou entrar a fundo no APEX e no conceito de workspace. Já que não é esse o objetivo do artigo. Mas vou ensinar o suficiente para se criar o workspace e usuário, e assim se conectar no ORDS.

Criando workspace e usuário no APEX

Vamos acessar o APEX através da url abaixo:

http://localhost:8082/apex/apex_admin

image 4

Entre com o usuário ADMIN e a senha que você definiu.

image 5

Agora é só criar o seu workspace/usuário e depois conectar no ORDS.

Conectando no ORDS

Com o workspace e usuário criados, acesse o link abaixo para se conectar ao ORDS:

http://localhost:8202/ords

image 3

Faça o login com o workspace/usuário criados.

image 6

Parabéns !!!! Tudo instalado, configurado e funcionando !!!!!

Espero que esse artigo tenha sido de grande valia e que ajude nos estudos daqueles interessados em ORDS.

No próximo artigo, mostrarei como configurar e administrar o REST Data Services no SQL Developer !

Referências

Sergio Willians

Sergio Willians

Sergio Willians é o fundador do GPO (Grupo de Profissionais Oracle) e possui quase 30 anos de experiência em tecnologias Oracle, sendo especialista em desenvolvimento Forms/Reports, PL/SQL e EBS (E-Business Suite) nos módulos Receivables, Payables e General Ledger. Atualmente trabalha na Scania Latin America, onde se dedica à área de integração de dados com Confluent Kafka. Sua paixão é compartilhar conhecimento com a comunidade Oracle, contribuindo para o crescimento e a excelência da plataforma.

Comentário(s) da Comunidade

  1. Bom Dia. Muito bom seu post. Parabéns. Estou com problemas para criar tipo um vhost do apache no ores pois tenho aplicações. Sabe uma forma de conseguir funcionar?

    1. Primeiramente, muito obrigado pelo seu comentário. Fico feliz que tenha gostado ! 🙂

      Sobre a sua pergunta, eu não consegui compreender muito bem. Você está com dificuldades de instalar o Apache em uma máquina virtual ? Seria isso ?

  2. Segui seu roteiro sem a instalação do docker, mas ao final ta dando erro:

    There is a problem with your environment because the Oracle APEX files have not been loaded. Please verify that you have copied the images directory to your application server as instructed in the Installation Guide. In addition, please verify that your image prefix path is correct. Your current path is /opt/oracle/product/19c/dbhome_1/ords/images/ (it should contain both starting and ending forward slashes, such as the default /i/). Use the SQL script reset_image_prefix.sql if you need to change it.

    Sabe me informar o por que desse erro? Já rodei o script reset_image_prefix.sql, mas ele continua com esse mesmo erro.

    Agradeço sua atenção

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress