Neste artigo, vamos explorar as etapas necessárias para habilitarmos o EM Express em nosso DB System 19C no OCI.
Configuring the EM Express port
Vamos confirmar qual é a porta que está sendo utilizada no banco de dados para o EM Express (na versão 19C, o EM está disponível apenas com o protocolo HTTPS):
[oracle@luxor ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jun 11 07:54:01 2021
Version 19.11.0.0.0
Copyright (c) 1982, 2020, Oracle. All rights reserved.
Connected to:
Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
Version 19.11.0.0.0
SQL> SELECT DBMS_XDB_CONFIG.GETHTTPSPORT() FROM DUAL;
DBMS_XDB_CONFIG.GETHTTPSPORT()
------------------------------
5500
Apenas para registro, caso essa porta não esteja definida ou por motivos de segurança se deseje trocá-la, podemos rodar o comando abaixo com a porta desejada (o que não será necessário em nosso caso):
exec DBMS_XDB_CONFIG.SETHTTPSPORT(5555);
Opening the EM Express port in the internal firewall
Por padrão, o Firewall interno do nosso DB System (Iptables) não possui regra habilitada para a porta 5500. Desse modo, vamos fazer o processo de liberação. Realizando um backup das configurações vigentes:
[oracle@luxor ~]$ exit
logout
[opc@luxor ~]$ sudo su -
Last login: Fri Jun 11 07:51:23 UTC 2021
[root@luxor ~]# iptables-save > /tmp/iptables.11062021
Adicionando a regra para permitir inbound traffic na porta 5500:
[root@luxor ~]# iptables -I INPUT 8 -p tcp -m state --state NEW -m tcp --dport 5500 -j ACCEPT -m comment --comment "Necessário para o EM Express."
[root@luxor ~]#
Confirmando status:
[root@luxor ~]# service iptables status
Redirecting to /bin/systemctl status iptables.service
● iptables.service - IPv4 firewall with iptables
Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
Active: active (exited) since Fri 2021-06-11 07:49:13 UTC; 11min ago
Process: 1098 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
Main PID: 1098 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/iptables.service
Jun 11 07:49:13 luxor systemd[1]: Starting IPv4 firewall with iptables...
Jun 11 07:49:13 luxor iptables.init[1098]: iptables: Applying firewall rules: [ OK ]
Jun 11 07:49:13 luxor systemd[1]: Started IPv4 firewall with iptables.
Salvando alterações:
[root@luxor ~]# /sbin/service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Opening the EM Express port in the Security Lists
Por padrão, não temos a porta 5500 liberada na Security List, e nesta etapa vamos fazer essa liberação. Acessando a parte de VCN no OCI Console:

Entrando em nossa VCN:

Entrando em nossa Subnet:

Acessando a Security List:

Clicando em “Add Ingress Rules”:

Preenchendo a regra com a porta que precisamos liberar:

Regra criada:

Changing the permissions of the XDB Wallet files
Por último, precisamos definir as permissões de S.O para 640 dos nossos arquivos de Wallet. Para identificar sua localização, rodamos o comando abaixo:
[opc@luxor ~]$ sudo su - oracle
Last login: Fri Jun 11 08:13:02 UTC 2021
[oracle@luxor ~]$ lsnrctl status | grep HTTP
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=luxor.luxorsubnet.luxorvcn.oraclevcn.com)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/product/19.0.0.0/dbhome_2/admin/CORTEX_phx1hb/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Acessamos o diretório em questão:
[oracle@luxor ~]$ cd /u01/app/oracle/product/19.0.0.0/dbhome_2/admin/CORTEX_phx1hb/xdb_wallet
[oracle@luxor xdb_wallet]$
Mudamos a permissão dos arquivos conforme abaixo:
[oracle@luxor xdb_wallet]$ chmod 640 ./*
[oracle@luxor xdb_wallet]$ ll
total 8
-rw-r----- 1 oracle asmadmin 3912 Jun 5 11:47 cwallet.sso
-rw-r----- 1 oracle asmadmin 3867 Jun 5 11:47 ewallet.p12
Testing EM Express
Para realizar a validação, basta coletarmos o endereço de IP público de nosso DB System e seguir o padrão abaixo:
https://<public IP address of the Db System>:5500/em



Preenchendo usuário e senha e logando:

Acesso realizado com sucesso:

Obs: Este procedimento foi criado pelo senhor Ahmed Baraka (www.ahmedbaraka.com) e foi apenas reproduzido por mim em um laboratório pessoal para fins de aprendizado.