Configurando uma VPN entre a Oracle Cloud Classic e Oracle Cloud OCI

INTRODUÇÃO

Neste artigo iremos abordar o processo de criação de uma VPN IPSec utilizando o libreswan para integrar um ambiente Oracle Cloud Classic e Oracle Cloud OCI, ambos localizados no datacenter de São Paulo.

Atualmente no datacenter Oracle de São Paulo não é possível ativar uma VPNaaS (VPN as a Service) diretamente entre os ambientes Oracle Cloud Classic e Oracle Cloud OCI. Por isso temos a necessidade de utilizar uma ferramenta para implementação e configuração de conexões VPN IPSec. Em nosso artigo utilizaremos o libreswan.

O libreswan é um software open source para implementação de VPN baseado em (IPsec) e Internet Key Exchange (IKE). A maioria das distribuições Linux incluem o libreswan ou são compatíveis com a instalação do mesmo.

Vale destacar que o libreswan também é recomendado para a conexões entre a  Oracle Cloud e outras nuvens ou mesmo com ambientes on premisses.


Diagrama da conexão entre a Oracle Cloud Classic e Oracle Cloud OCI:

CONFIGURAÇÕES

A primeira configuração a ser feita é a criação de uma compute instance Linux no ambiente OCI para a instalação e configuração do libreswan. Para realizarmos esta configuração podemos utilizar o novo shape VM.Standard.E2.1.Micro que é um shape gratuito disponibilizado recentemente.

Desta forma, a máquina utilizada não irá gerar custos adicionais. A compute instance criada precisa ter um IP Público associado, para que seja possível fechar a conexão VPN.

Tendo em vista que o objetivo deste artigo se restringe a implementação e configuração da VPN, o processo de criação da compute instance não será detalhado.


Após a criação da máquina libreswan, é necessário editar a VNIC anexada a mesma, marcando a opção skipe Source/Destination Check. 



Concluída a edição da VNIC, será necessário criar as rotas para que a VPN possa se comunicar entre a rede do Classic e do OCI.
Para isso, serão criadas duas rotas. A rota Internet Gateway 0.0.0.0/0 para que o libreswan possa se comunicar com a VPN e a rota CIDR para o endereço da rede Classic 192.168.1.0/24.

Rede Classic:

Adição das rotas na default route table da VCN na qual a máquina libreswan foi criada.


Concluída a criação das rotas, a próxima etapa é a criação das regras de segurança permitindo o tráfego de entrada UDP na porta 500 para o Internet Key Exchange (IKE), UDP na porta 4500 para o IKE Nat Transverssal, IPsec para o Encapsulated Security Payload (ESP), TCP em todas as portas para o CIDR 192.168.1.0/24 (Rede Classic) e saída para internet 0.0.0.0/0.

Regras de entrada:

Regras de saída:


O próximo passo a ser executado é a criação da VPNaaS no ambiente Classic. Pra isso, vamos em network, VPNaaS, VPN Connections, clicar em Create VPN Connection.


Devem ser preenchidos os seguintes itens e posteriormente clicar em create VPN Connection.

Name:VPNaaSOCI
IP Network:CIDR para a rede IP do Classic
Customer Gateway: IP público da instância OCI do libreswan
Customer Reachable Routes: OCI VCN CIDR
Pre-shared key: pwdvpnociclassic

Name:VPNaaSOCI
IP Network:192.168.1.0/24
Customer Gateway: 152.67.35.47
Customer Reachable Routes: 172.0.0.0/24
Pre-shared key: pwdvpnociclassic


Após criar a VPNaaS no Classic, a mesma não ficará com status Up/Ready pois ainda é preciso instalar e configurar o libreswan. Porém precisamos do IP Público da VPNaaS Classic, para podermos configurar no libreswan.


Agora vamos acessar a máquina libreswan via ssh e realizar a instalação do aplicativo libreswan. Para isso basta utilizar o comando yum -y install libreswan.


Neste artigo a versão instalada foi a 4.14.35-1902.5.2.2, porém o procedimento para versões anteriores é o mesmo.


Feita a instalação do libreswan, iremos realizar a configuração do mesmo. Inicialmente, precisaremos adicionar as linhas abaixo no arquivo /etc/sysctl.conf.

net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens3.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.ens3.accept_redirects = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.ens3.rp_filter = 0
net.ipv4.conf.ip_vti0.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0


Após o ajuste, devemos executar o comando o comando sysctl -p para que as alterações realizadas sejam aplicadas.


Agora devemos ajustar as configurações do /etc/ipsec.conf, adicionando os dados conforme abaixo. Vale ressaltar que a identação deve ser mantida para que não apresente erro na inicialização.

config setup
          plutoopts="--perpeerlog"
          protostack=auto
          nat_traversal=yes
include /etc/ipsec.d/*.conf


O próximo passo é realizar as configurações da VPN com o Classic, para isso, criaremos o arquivo /etc/ipsec.d/VPNaaS.conf

vi /etc/ipsec.d/VPNaaS.conf
    conn vpnaas1
         authby=secret
         auto=start
         pfs=yes
         leftid=144.22.68.211     #OCI-C VPNaaS IPSec IP Pubico
         left=144.22.68.211       #OCI-C VPNaaS IPSec IP Publico
         leftsubnets={192.168.1.0/24} #OCI-C IP-Network CIDR
         right=172.0.0.2            #OCI Libreswan local VPC endereço interno
         rightid=152.67.35.47    #OCI Libreswan IP Publico
         rightsubnet=172.0.0.0/16    #OCI VPC CIDR

Por último, é preciso criar e configurar o arquivo /etc/ipsec.d/VPNaaS.secrets, que conterá a Pre-shared Key utilizada pela VPN.

#OCI-C_VPNaaS-IP-Publico  OCI_LibreSWAN-IP-Publico   :   PSK    "Secret Key(VPNaaS Pre-shared key)"
144.22.68.211 152.67.35.47   :    PSK    "pwdvpnociclassic"


Concluídas as configurações, podemos realizar um restart do ipsec na máquina libreswan e posteriormente um verify para validar as configurações.


Para configurar a inicialização automática do libreswan, basta executar comando systemctl enable ipsec.


É possível verificar o status da conexão através do comando ipsec auto --status.


Podemos atualizar a pagina da VPNaaS Classic e validar que agora a conexão está UP/Ready. Também é possível validar que os endereços estão pingando normalmente de uma rede para outra.


Ping da rede 192.168.1.0/24 para 172.0.0.0/16.


Ping da rede 172.0.0.0/16 para 192.168.1.0/24

Desta forma, concluímos a configuração e implementação da VPN entre os ambientes Oracle Cloud Classic e Oracle Cloud OCI.

Fonte:
https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/libreswan.htm

#DicaOCI - Erro ao adicionar segunda VNIC a um compute Windows

Após adicionar uma segunda VNIC a uma VM Windows na OCI, quando é executado o script secondary_vnic_windows_configure.ps1 tivemos o erro abaixo.
PS C:\Temp> .\secondary_vnic_windows_configure.ps1 "ocid1.vnic.oc1.sa-saopaulo-1.hhhhhhh"
.\secondary_vnic_windows_configure.ps1 : File C:\Temp\secondary_vnic_windows_configure.ps1 cannot be loaded. The file
C:\Temp\secondary_vnic_windows_configure.ps1 is not digitally signed. You cannot run this script on the current
system. For more information about running scripts and setting execution policy, see about_Execution_Policies at
http://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\secondary_vnic_windows_configure.ps1 "ocid1.vnic.oc1.sa-saopaulo-1. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
PS C:\Temp>
Para poder executar esse processo é preciso ignorar a política de segurança na atual execução do PowerShell. Vale ressaltar que esta liberação ocorre a nível de sessão, desta forma, assim que uma nova janela do PowerShell for aberta, ela utilizará a política de execução padrão.
PS C:\Temp> Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
http://go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): A
PS C:\Temp>
Executado o comando a acima, basta executar o processo de adição da nova VNIC, conforme documentação.
PS C:\Temp>
PS C:\Temp> .\secondary_vnic_windows_configure.ps1 "ocid1.vnic.oc1.sa-saopaulo-1.hhhhhhhh"
+ Specified VNIC: ocid1.vnic.oc1.sa-saopaulo-1.hhhhhhhh

+ Found VNIC Settings:  {
    "vnicId":  "ocid1.vnic.oc1.sa-saopaulo-1.hhhhhhhh",
    "privateIp":  "10.1.1.2",
    "vlanTag":  351,
    "macAddr":  "02:00:17:00:E5:F7",
    "virtualRouterIp":  "10.1.1.1",
    "subnetCidrBlock":  "10.1.1.0/24"
}
+ Found Network Interface:  Ethernet 3

WARNING!
The Network Interface for the specified VNIC already has an IP Address. The current settings will be overwritten.
Proceed?
[Y] Yes  [N] No  [?] Help (default is "N"): Y

Confirm
Are you sure you want to perform this action?
Performing operation "Remove" on Target "NetIPAddress -IPv4Address xxxxxxxx-InterfaceIndex 24 -Store Active"
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): A


IPAddress         : 10.1.1.2
InterfaceIndex    : 24
InterfaceAlias    : Ethernet 3
AddressFamily     : IPv4
Type              : Unicast
PrefixLength      : 24
PrefixOrigin      : Manual
SuffixOrigin      : Manual
AddressState      : Tentative
ValidLifetime     : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource      : False
PolicyStore       : ActiveStore

IPAddress         : 10.1.1.2
InterfaceIndex    : 24
InterfaceAlias    : Ethernet 3
AddressFamily     : IPv4
Type              : Unicast
PrefixLength      : 24
PrefixOrigin      : Manual
SuffixOrigin      : Manual
AddressState      : Invalid
ValidLifetime     : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource      : False
PolicyStore       : PersistentStore

Assigned a static IP Address to the Network Interface.
Set the DNS server IP Address.
Created a default route for the Network Interface.
The Network Interface was successfully configured.


PS C:\Temp>
É possível validar que a VNIC foi adicionada com sucesso.
https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingVNICs.htm

Nova Oracle Cloud Trial - "Ilimitada"

Neste Oracle Open World foi lançada a nova versão do ambiente cloud trial, que trouxe a possibilidade de uso ilimitado de alguns serviços. Serviços que que podem ser utilizados por tempo indeterminado: - 2 Autonomous Databases (Autonomous Data Warehouse or Autonomous Transaction Processing), each with 1 OCPU and 20 GB storage; - 2 Compute VMs, each with 1/8 OCPU and 1 GB memory; - 2 Block Volumes, 100 GB total, with up to 5 free backups; - 10 GB Object Storage, 10 GB Archive Storage, and 50,000/month API requests; - 1 Load Balancer, 10 Mbps bandwidth; - 10 TB/month Outbound Data Transfer; - 500 million ingestion Datapoints and 1 billion Datapoints for Monitoring Service; - 1 million Notification delivery options per month and 1000 emails per month. Cada conta também terá direito a USD300 em créditos gratuitos, com validade de 30 dias para usar e validar os demais serviços disponíveis na Oracle Cloud. https://www.oracle.com/corporate/pressrelease/oow19-oracle-free-tier-091619.html https://www.oracle.com/br/cloud/free/

Oracle Cloud OCI - Ajustando o timezone do serviço de banco de dados

No artigo de hoje, estarei demonstrando como realizar a alteração do timezone do Oracle Database Service, apos o serviço já estar criado e disponível.

No exemplo abaixo, o serviço de banco de dados foi criado no datacenter de São Paulo, com timezone UTC, ou seja, 3 horas adiantado em relação ao horario de Brasília.

Horario de Brasilia:09:19
Horario do Servidor de banco: 12:19


Para ajustar o timezone, o primeiro passo necessário é conectar via ssh no servidor de banco de dados, uma vez que não existe opção de alteração via console.

Posteriormente, com o usuário root, devemos editar o arquivo /etc/sysconfig/clock com o timezone correto. No exemplo abaixo, estaremos alterando de UTC para America/Sao_Paulo e comentando as demais entradas.
[root@standbycloud ~]# cat /etc/sysconfig/clock
ZONE="UTC"
UTC=true
ARC=false
[root@standbycloud ~]# vi /etc/sysconfig/clock
[root@standbycloud ~]# cat /etc/sysconfig/clock
ZONE="America/Sao_Paulo"
#UTC=true
#ARC=false

Os timezones disponíveis podem ser validados no diretório /usr/share/zoneinfo/
Após a edição do arquivo, vamos recriar o link /etc/localtime e com isso o horário da maquina já estará ajustado.
[root@standbycloud ~]# date
Tue Sep 17 12:28:04 UTC 2019
[root@standbycloud ~]# ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
[root@standbycloud ~]# date
Tue Sep 17 09:28:23 -03 2019
[root@standbycloud ~]#
Posteriormente, é necessário ajustar o horario no grid. Para isso, devemos parar os serviços e ajustar o arquivo GRID_HOME/crs/install/s_crsconfig_<node_name>_env.txt, alterando a variável TZ. Este ajuste deve ser feito em todos os nodes, para ambientes cluster.
[root@standbycloud ~]# ls -ltr /u01/app/18.0.0.0/grid/crs/install/s_crsconfig*
-rwxr-xr-x 1 root oinstall 3593 Dec 30  2014 /u01/app/18.0.0.0/grid/crs/install/s_crsconfig_defs
-rwxr-xr-x 1 root oinstall  990 Sep  9 09:21 /u01/app/18.0.0.0/grid/crs/install/s_crsconfig_standbycloud_env.txt
[root@standbycloud ~]# cat /u01/app/18.0.0.0/grid/crs/install/s_crsconfig_standbycloud_env.txt
#########################################################################
#This file can be used to set values for the NLS_LANG and TZ environment
#variables and to set resource limits for Oracle Clusterware and
#Database processes.
#1. The NLS_LANG environment variable determines the language and
#   characterset used for messages. For example, a new value can be
#   configured by setting NLS_LANG=JAPANESE_JAPAN.UTF8
#2. The Time zone setting can be changed by setting the TZ entry to
#   the appropriate time zone name. For example, TZ=America/New_York
#3. Resource limits for stack size, open files and number of processes
#   can be specified by modifying the appropriate entries.
#
#Do not modify this file except as documented above or under the
#direction of Oracle Support Services.
#########################################################################
TZ=UTC
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
CRS_LIMIT_STACK=2048
CRS_LIMIT_OPENFILE=65536
CRS_LIMIT_NPROC=65536
TNS_ADMIN=
[root@standbycloud ~]# vi /u01/app/18.0.0.0/grid/crs/install/s_crsconfig_standbycloud_env.txt
[root@standbycloud ~]# cat /u01/app/18.0.0.0/grid/crs/install/s_crsconfig_standbycloud_env.txt
#########################################################################
#This file can be used to set values for the NLS_LANG and TZ environment
#variables and to set resource limits for Oracle Clusterware and
#Database processes.
#1. The NLS_LANG environment variable determines the language and
#   characterset used for messages. For example, a new value can be
#   configured by setting NLS_LANG=JAPANESE_JAPAN.UTF8
#2. The Time zone setting can be changed by setting the TZ entry to
#   the appropriate time zone name. For example, TZ=America/New_York
#3. Resource limits for stack size, open files and number of processes
#   can be specified by modifying the appropriate entries.
#
#Do not modify this file except as documented above or under the
#direction of Oracle Support Services.
#########################################################################
TZ=AMERICA/SAO_PAULO
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
CRS_LIMIT_STACK=2048
CRS_LIMIT_OPENFILE=65536
CRS_LIMIT_NPROC=65536
TNS_ADMIN=
[root@standbycloud ~]#
Concluído o ajuste do arquivo do listener, devemos ajustar os serviços do listener e database e depois iniciar os serviços.
Grid:
srvctl setenv listener -l listener -t 'TZ=America/Sao_Paulo'

Oracle:
srvctl setenv database -d LAMIM -t 'TZ=America/Sao_Paulo'

[root@standbycloud ~]# service ohasd start
Starting ohasd:

CRS-4123: Oracle High Availability Services has been started.
[root@standbycloud ~]#
Referência: 
https://minersoracleblog.wordpress.com/2014/09/19/changing-timezone-settings-on-oracle-database-servers/

How do I change the timezone setting of my Oracle Cloud Database? (Doc ID 2165725.1)


É possível renomear um pdb durante o processo de duplicate rman?

Imagine um cenário composto por um ambiente Oracle Database 12.2 Single Tenant no qual a temos a necessidade de realizar um processo de duplicate para um novo cdb também Single Tenant no mesmo servidor.

A aplicação conecta no pdb como serviço, desta forma não podemos simplesmente realizar um duplicate pois o novo cdb conterá um pdb com o mesmo nome do pdb de origem, o que irá gerar um conflito nas conexões, uma vez que teremos registrado no listener 1 serviço com 2 instâncias, a de origem e a clonada, conforme exemplo grifado abaixo.
[oracle@tst-oracle12c:eximio /]$ lsnrctl status
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 23-AUG-2019 14:23:39
Copyright (c) 1991, 2016, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=tst-oracle12c)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                23-AUG-2019 08:56:09
Uptime                    0 days 5 hr. 27 min. 30 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /orabin01/app/oracle/product/12.2/dbhome_1/network/admin/listener.ora
Listener Log File         /orabin01/app/oracle/diag/tnslsnr/tst-oracle12c/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=tst-oracle12c)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=tst-oracle12c)(PORT=5500))(Security=(my_wallet_directory=/orabin01/app/oracle/admin/eximio/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "7743c5ddfc2d18a4e0530705a8c0c7b9" has 2 instance(s).
  Instance "eximio", status READY, has 1 handler(s) for this service...
  Instance "exitst", status READY, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "eximio" has 1 instance(s).
  Instance "eximio", status READY, has 1 handler(s) for this service...
Service "eximioXDB" has 2 instance(s).
  Instance "eximio", status READY, has 1 handler(s) for this service...
  Instance "exitst", status READY, has 1 handler(s) for this service...
Service "eximiopdb" has 2 instance(s).
  Instance "eximio", status READY, has 1 handler(s) for this service...
  Instance "exitst", status READY, has 1 handler(s) for this service...
Service "exitst" has 2 instance(s).
  Instance "exitst", status UNKNOWN, has 1 handler(s) for this service...
  Instance "exitst", status READY, has 1 handler(s) for this service...
The command completed successfully 
Podemos assim que o processo de duplicate finalizar, renomear o pdb. Porém ate que isso seja feito as conexões ja podem estar caindo na base clonada e aí teremos problema de consistência de dados.

É possível renomear um pdb durante o processo de duplicate rman? A resposta é não, não é possivel renomear um pdb através do duplicate, conforme pode ser confirado através da Doc ID 24359000.1.
Para evitar a situação mencionada acima, podemos definir um valor diferente de produção para o 
parametro db_domain, que por default está nulo.

No exemplo abaixo, foi alterado o parametro db_domain na instancia tst para tst.com antes de iniciar o processo de carga.
SQL>  show parameter db_domain;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_domain                            string      tst.com
Após o processo de carga ser realizado, podemos validar que o serviço registrado no lister para a nova base duplicada é eximiopdb.tst.com e não mais eximiopdb. Com isso evitamos qualquer impacto de conexao do ambiente principal.
[oracle@tst-oracle12c:eximio /]$ lsnrctl status

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 23-AUG-2019 14:54:27

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=tst-oracle12c)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                23-AUG-2019 08:56:09
Uptime                    0 days 5 hr. 58 min. 18 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /orabin01/app/oracle/product/12.2/dbhome_1/network/admin/listener.ora
Listener Log File         /orabin01/app/oracle/diag/tnslsnr/tst-oracle12c/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=tst-oracle12c)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=tst-oracle12c)(PORT=5500))(Security=(my_wallet_directory=/orabin01/app/oracle/admin/eximio/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "7743c5ddfc2d18a4e0530705a8c0c7b9" has 1 instance(s).
  Instance "eximio", status READY, has 1 handler(s) for this service...
Service "7743c5ddfc2d18a4e0530705a8c0c7b9.tst.com" has 1 instance(s).
  Instance "exitst", status READY, has 1 handler(s) for this service...
Service "EXITST.tst.com" has 1 instance(s).
  Instance "exitst", status READY, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "eximio" has 1 instance(s).
  Instance "eximio", status READY, has 1 handler(s) for this service...
Service "eximioXDB" has 1 instance(s).
  Instance "eximio", status READY, has 1 handler(s) for this service...
Service "eximioXDB.tst.com" has 1 instance(s).
  Instance "exitst", status READY, has 1 handler(s) for this service...
Service "eximiopdb" has 1 instance(s).
  Instance "eximio", status READY, has 1 handler(s) for this service...
Service "eximiopdb.tst.com" has 1 instance(s).
  Instance "exitst", status READY, has 1 handler(s) for this service...
Service "exitst" has 1 instance(s).
  Instance "exitst", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[oracle@tst-oracle12c:eximio /]$
Por hoje, era isso :)

#Dica RMAN-06136: ORACLE error from auxiliary database: ORA-19563: Inspect Datafile Copy: SCN number validation unsuccessful header validation failed for file

Ao realizar um processo de active duplicate no Oracle Database 12.2.0.1.0 (Sem Patch Aplicado) tivemos a ocorrência do erro abaixo ao final do processo de duplicate.

Comando utilizado para o duplicate:
run {
allocate channel prmy1 type disk;
allocate auxiliary channel stby type disk;
SET NEWNAME FOR DATABASE TO '/dados/oradata/exitst2/%b'; 
DUPLICATE TARGET DATABASE TO exitst FROM ACTIVE DATABASE
logfile '/dados/oradata/exitst2/redo01.rdo' size 50m,'/dados/oradata/exitst2/redo02.rdo' size 50m,'/dados/oradata/exitst2/redo03.rdo' size 50m,'/dados/oradata/exitst2/redo04.rdo' size 50m;
}
Erro no processo:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 08/23/2019 10:52:48
RMAN-05501: aborting duplication of target database
RMAN-03015: error occurred in stored script Memory Script
RMAN-06136: ORACLE error from auxiliary database: ORA-19563: Inspect Datafile Copy: SCN number validation unsuccessful header validation failed for file /dados/oradata/exitst2/system01.dbf

RMAN>
Este erro é ocasionado pelo bug 25042823 que possuí patch de correção e workaround.

Patch para a versão 12.2.0.1:


Apos aplicar o patch o processo foi executado com sucesso.