Revisado por Francisco Riccio
As soluções Cloud at Customer trazem a experiência Cloud da Oracle para dentro do Datacenter do cliente.
Existe, porém, uma separação em relação a responsabilidade do equipamento, conforme explicado pela figura abaixo:

Ou seja, dentro das atividades do cliente temos o gerenciamento do Sistema Operacional, Oracle GI e DB.
Esse artigo demonstrará ao leitor como realizar a aplicação dos principais patches no ambiente ExaCC.
A tabela abaixo resume as obrigações:
Patch |
Método de Aplicação |
Diretório de Log |
|---|---|---|
|
dbaascli |
exadbcpatch |
/var/opt/oracle/log/exadbcpatch/ |
|
Oracle Grid Infrastructure |
Control Plane ou exadbcpatchmulti | |
|
Oracle Database |
||
|
Patch Manager |
Unzip |
n/a |
|
Sistema Operacional |
patchmgr |
<patchmgr dir> |
Importante: Os patches são rolling upgrade, ou seja, aplicados node a node e não impactam o serviço totalmente.
O utilitário dbaascli deve ser o primeiro a ser atualizado. Antes de iniciar, faça um backup do arquivo /var/opt/oracle/exapatch/exadbcpatch.cfg.
Para consultar a versão atual do dbaascli, execute: rpm -qa |grep -i dbaas.
Exemplo:

comando /var/opt/oracle/exapatch/exadbcpatch -list_tools mostra as versões disponíveis para atualização do dbaascli.
Exemplo:

Nesse caso, a versão atual é a 18.2.3.1.190222 e está disponível a atualização para a versão 18.2.3.1.0_190329.
Para atualizá-lo para a última versão, execute: /var/opt/oracle/exapatch/exadbcpatch -toolsinst -rpmversion=LATEST.
Exemplo:

Lembre-se de executar o mesmo procedimento em todos os db nodes.
O Oracle GI pode ser atualizado pelo control plane.
Quando existirem patches disponíveis, eles aparecerão no canto inferior esquerdo (em destaque):

Clicando em Administration, os patches disponíveis são detalhados:

Também podemos visualizar os patches disponíveis para atualização via linha de comando:
/var/opt/oracle/exapatch/exadbcpatchmulti -list_patches -oh=hostname:oracle_home


Atualize primeiramente o Grid Infrastructure. Porém, antes, rode o Precheck:

O status Prechecks in progress aparecerá:

Quando o Precheck finalizar o resultado é demonstrado:

A execução do Precheck também pode ser realizada via linha de comando:
#/var/opt/oracle/exapatch/exadbcpatchmulti -precheck_async patchid
-instance1=hostname:oracle_home1[,oracle_home2 ...]
[-instance2=hostname:oracle_home1[,oracle_home2 ...] ...] -dbname=dbname
Exemplo:
/var/opt/oracle/exapatch/exadbcpatchmulti -precheck_async 28828733-GI -instance1=exacc0101vm01:/u01/app/12.2.0.1/grid
-instance2=exacc0102vm04:/u01/app/12.2.0.1/grid

A atualização em si também pode ser feita pelo painel clicando em Patch:

Ou linha de comando:
/var/opt/oracle/exapatch/exadbcpatchmulti -apply_async patchid
-instance1=hostname:oracle_home1[,oracle_home2 ...]
[-instance2=hostname:oracle_home1[,oracle_home2 ...] ...] [-dbname=dbname] [-run_datasql=1] [-sshkey=sshkey_file]
Exemplo:
/var/opt/oracle/exapatch/exadbcpatchmulti -apply_async 28828733-GI -instance1=exacc0101vm01:/u01/app/12.2.0.1/grid
-instance2=exacc0102vm01:/u01/app/12.2.0.1/grid

Patch instalado no node 1 com sucesso e execução do patch no node 2:

Patch instalado no node 2.

Podemos confirmar a versão instalada via opatch:

Conclusão: o utilitário exadbcpatchmulti concluiu com sucesso a atualização do Oracle GI para o último Release Update.
O procedimento para atualização do Database é similar ao do GI.
Rodamos inicialmente o Precheck pelo painel:

Ou linha de comando:
#/var/opt/oracle/exapatch/exadbcpatchmulti -precheck_async patchid
-instance1=hostname:oracle_home1[,oracle_home2 ...]
[-instance2=hostname:oracle_home1[,oracle_home2 ...] ...] -dbname=dbname
Exemplo:
/var/opt/oracle/exapatch/exadbcpatchmulti -precheck_async 28828733
-instance1= exacc0101vm01:/u02/app/oracle/product/12.2.0/dbhome_3
-instance2= exacc0102vm01:/u02/app/oracle/product/12.2.0/dbhome_3

A atualização em si também pode ser feita pelo painel:

Ou linha de comando:
/var/opt/oracle/exapatch/exadbcpatchmulti -apply_async patchid -dbname=dbname [-alldbs] [-run_datasql=1] [-sshkey=sshkey_file]
Exemplo:
/var/opt/oracle/exapatch/exadbcpatchmulti -apply_async 28828733 -dbnames=CDB122P -alldbs -run_datasql=1


O utilitário patchmgr é pré-requisito para aplicarmos o patch no SO. A Oracle recomenda a sua atualização antes de iniciar o patching.
Faça o download do patchmgr através do patch 21634633.
Utilize a nota MOS Exadata Cloud Service Software Versions (Doc ID 2333222.1) como guia para o download da versão a ser utilizada para atualização.
No momento em que escrevo esse artigo, a última versão disponível é a 18.1.14.0.0.190320, porém versões anteriores também podem ser utilizadas:

Você pode verificar a versão atual através do comando imageinfo –ver.
Exemplo:

Faça o download dos patches indicados e copie para os servidores do cluster no diretório /root/patch, por exemplo.
Crie o arquivo dbs_group e informe o nome do servidor que será atualizado. Exemplo: no servidor node 1 o conteúdo desse arquivo deve conter somente o nome do servidor node 2.
Exemplo:

O meu ambiente é um Exadata quarter rack, ou seja, são somente dois db nodes. O node 1 será utilizado para atualizar o node 2 e o node 2 será utilizado para atualizar o node 1.
Vamos agora configurar o SSH Equivalence entre os servidores para o usuário root:
No final você conseguirá logar via root entre os servidores sem a necessidade de senhas.
Descompacte o arquivo do patchmgr. O diretório dbserver_patch_19.190306 será criado.
Acesso o diretório e execute o precheck: ./patchmgr -dbnodes /root/patch/dbs_group -precheck -iso_repo /root/patch/p29412613_181000_Linux-x86-64.zip -target_version 18.1.14.0.0.190320 -nomodify_at_prereq

Verifique agora o arquivo patchmgr.log:

Tudo OK, podemos seguir.
Crie um backup do SO:
./patchmgr -dbnodes /root/patch/dbs_group -backup -iso_repo /root/patch/p29412613_181000_Linux-x86-64.zip -target_version 18.1.14.0.0.190320 -allow_active_network_mounts

Atualize o SO:
./patchmgr -dbnodes /root/patch/dbs_group -upgrade -iso_repo /root/patch/p29412613_181000_Linux-x86-64.zip -target_version 18.1.14.0.0.190320 -allow_active_network_mounts –nobackup
Atualização com concluída com sucesso.

Exadata Cloud Service Software Versions (Doc ID 2333222.1)
How to update the Exadata Image (OS) in Exadata Cloud at Customer (Doc ID 2391164.1)
Patching Exadata Cloud at Customer - https://docs.oracle.com/en/cloud/cloud-at-customer/exadata-cloud-at-customer/exacc/patch.html
Rogerio Bacchi Eguchi é um DBA Oracle Sênior com extensa experiência em ambientes OLTP de missão crítica e que empregam as tecnologias da "Oracle Maximum Availability Architecture". Atuou como DBA em empresas como Oracle, UOL, UOLDiveo, PagSeguro e atualmente atua como DBA/DMA na TOTVS. Possui as certificações Oracle OCP 8i, 9i, 10g, 11g, 12c e OCE Exadata. Atua também como SysAdmin/DEVOPS onde é certificado Linux RHCE. Entusiata de novas tecnologias como big data, automações e cloud computing. Compartilha conhecimento no blog reguchi.wordpress.com e twitter @reguchi_br.
Este artigo foi revisto pela equipe de produtos Oracle e está em conformidade com as normas e práticas para o uso de produtos Oracle.