Patching – Oracle Exadata Cloud at Customer

Por Rogerio Eguchi
Publicado em Setembro 2019

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.






Atualizando o dbaascli


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:





O 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.






Atualizando o Oracle Grid Infrastructure


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.






Atualizando o Oracle Database


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








Atualizando o Sistema Operacional


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:

  1. Gere as chaves: ssh-keygen -t rsa
  2. Copie a chave pública para o /tmp/
  3. Use o usuário opc para copiar a chave pública para os outros servidores: scp /tmp/id_rsa.pub opc@exacc0102vm01:/tmp/
  4. Copie a chave pública para o arquivo authorized_keys: cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys
  5. Valide a conexão ssh via root para o outro servidor.
  6. Repita o procedimento, porém agora no node 2.

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.





Referências

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.