Aplicando o Oracle Database Bundle Patch em ambiente Oracle 12.1 RAC Multitenant

Revisado por Lorenzo Mota

Por Rogerio Eguchi
Publicado em Março 2018

Esse artigo demonstrará como aplicar o último Oracle Database Proactive Bundle Patch em ambiente Oracle RAC Multitenant.

Nesse momento, o patch a ser aplicado é o 26022196 - Database Proactive Bundle Patch 12.1.0.2.170718.

Validação dos pré-requisitos de instalação

1. Atualização do Opatch

A Oracle recomenda que seja feita a atualização do OPatch antes de iniciar a instalação do Oracle BP.

Para tal, acesse o MOS e faça o download do patch em https://support.oracle.com/epmos/faces/ui/patch/PatchDetail.jspx?parent=DOCUMENT&sourceId=1306814.1&patchId=6880880

Copie para o servidor e descompacte.

Copie para o servidor e descompacte.

Remova o OPatch antigo e copie o novo OPatch para os ORACLE_HOMEs:




rm -rf /u01/app/oracle/product/db/12.1/OPatch/*

  rm -rf /u01/app/12.1.0/grid/OPatch/*

  cp -r OPatch/* /u01/app/oracle/product/db/12.1/OPatch/

  cp -r OPatch/* /u01/app/12.1.0/grid/OPatch/

  chown -R grid:oinstall /u01/app/12.1.0/grid/OPatch/

  chown -R oracle:oinstall 

  /u01/app/oracle/product/db/12.1/OPatch/

Execute o opatch version para checar se a atualização foi concluída com sucesso.

Execute o opatch version para checar se a atualização foi concluída com sucesso.

2. Valide o Oracle Inventory para checar a consistência das informações do inventório.




GI: via usuário grid, execute:
ORACLE_HOME=/u01/app/12.1.0/grid/; $ORACLE_HOME/OPatch/opatch lsinventory  
-detail -oh $ORACLE_HOME




DB: via usuário oracle, execute:
ORACLE_HOME=/u01/app/oracle/product/db/12.1/; $ORACLE_HOME/OPatch/opatch  
lsinventory -detail -oh $ORACLE_HOME

Uma lista com os componentes instalados deve ser reportada pelo comando.

3. Download e descompactação do patch

Acesse o MOS e busque pela nota Master Note for Database Proactive Patch Program (Doc ID 756671.1).

Localize os patches recentes disponíveis para a versão do Oracle que deseje atualizar:

 Download e descompactação do patch

Clique no Patch Number e escolha a versão para o seu sistema operacional:

Download e descompactação do patch

Faça o download, copie o arquivo para o servidor e descompacte.

Mude as permissões para o grid owner: chown -R grid:oinstall 26022196

4. Verificação de conflitos

Para verificar se existe algum one-off patch instalado que conflite com o patch que iremos aplicar, execute:

GI (como usuário grid):




 $ORACLE_HOME/OPatch/opatch prereq 
CheckConflictAgainstOHWithDetail -phBaseDir
<UNZIPPED_PATCH_LOCATION>/26022196/25869760

$ORACLE_HOME/OPatch/opatch prereq  
CheckConflictAgainstOHWithDetail -phBaseDir  
<UNZIPPED_PATCH_LOCATION>/26022196/25869825

$ORACLE_HOME/OPatch/opatch prereq  
CheckConflictAgainstOHWithDetail -phBaseDir 
<UNZIPPED_PATCH_LOCATION>/26022196/25869830

$ORACLE_HOME/OPatch/opatch prereq  
CheckConflictAgainstOHWithDetail -phBaseDir 
<UNZIPPED_PATCH_LOCATION>/26022196/21436941

DB (como usuário oracle):
 $ORACLE_HOME/OPatch/opatch prereq  
CheckConflictAgainstOHWithDetail -phBaseDir  
<UNZIPPED_PATCH_LOCATION>/26022196/25869760

$ORACLE_HOME/OPatch/opatch prereq  
CheckConflictAgainstOHWithDetail -phBaseDir 
<UNZIPPED_PATCH_LOCATION>/26022196/25869825

Resultado esperado: Prereq "checkConflictAgainstOHWithDetail" passed.

Exemplos:

Resultado esperado
Resultado esperado

O opatch categoriza os conflitos em:

  • Conflito com um patch já aplicado no ORACLE_HOME. Nesse caso pare a atualização e registre um chamado no Oracle Suporte.
  • Conflito com um subset patch já aplicado no ORACLE_HOME.

    Nesse caso continue com a instalação pois o novo patch conterá todas as correções já aplicadas pelo patch instalado. Um subset patch é automaticamente removido antes da instalação do novo patch.

5. Verifique o espaço livre disponível.

Execute a checagem de espaço livre disponível no filesystem do ORACLE_HOME.

a. GI (como usuário grid): crie o arquivo /tmp/patch_list_gihome.txt com o seguinte conteúdo:




cat /tmp/patch_list_gihome.txt
<UNZIPPED_PATCH_LOCATION>/26022196/21436941
<UNZIPPED_PATCH_LOCATION>/26022196/25869830
<UNZIPPED_PATCH_LOCATION>/26022196/25869825
<UNZIPPED_PATCH_LOCATION>/26022196/25869760

E rode o opatch para checar se existe espaço disponível na home do Grid Infrastructure:




$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace 
-phBaseFile /tmp/patch_list_gihome.txt

Verifique o espaço livre disponível.

b. DB (como usuário oracle): crie o arquivo /tmp/patch_list_dbhome.txt com o seguinte conteúdo:



cat /tmp/patch_list_dbhome.txt
<UNZIPPED_PATCH_LOCATION>/26022196/25869825
<UNZIPPED_PATCH_LOCATION>/26022196/25869760

E rode o opatch para checar se existe espaço disponível na home do Banco:




 $ORACLE_HOME/OPatch/opatch  prereq CheckSystemSpace 
  -phBaseFile /tmp/patch_list_dbhome.txt


Caso o opatch reporte falha, remova arquivos desnecessários ou cresça o volume.

6. Backup e Recovery

A Oracle recomenda que seja realizado o backup dos ORACLE_HOMEs antes de se aplicar qualquer patch. Utilize sua ferramenta preferida do sistema operacional, exemplos: zip, cp -r, tar, cpio.

Lembre-se de parar os processos Oracle antes de iniciar o backup.

Dica: Faça a instalação do Oracle Software em um LVM e utilize o recurso de snapshots para realizar o backup sem parar os processos do Oracle. Você pode utilizar a própria documentação do Oracle Exadata como referência para execução do backup: http://docs.oracle.com/cd/E80920_01/DBMMN/maintaining-exadata-database-servers.htm#DBMMN21377

Repitas os passos de 1 a 6 nos outros nós do cluster.

Aplicando o Oracle BP 12.1.0.2.170718

No exemplo de execução abaixo, aplicarei o patch em um nó por vez (a Oracle chama esse procedimento de rolling fashion).

No node 1, logue como usuário root e adicione o diretório que contém o opatchauto no PATH:

export PATH=$PATH:<GI_HOME>/OPatch

Para aplicar o patch no GI home e em todos Oracle RAC database homes da mesma versão, rode:

opatchauto apply <UNZIPPED_PATCH_LOCATION>/26022196,

e aguarde a execução concluir.

Logue então no outro nó do cluster e execute os mesmos passos do node 1.



export PATH=$PATH:<GI_HOME>/OPatch   
opatchauto apply <UNZIPPED_PATCH_LOCATION>/26022196,

e aguarde a execução concluir.

Continue até atualizar todos os nós do cluster.

Exemplo:

Execução do OPatchAuto no node 1:

Execução do OPatchAuto no node 1:
Execução do OPatchAuto no node 1:

Execução do OPatchAuto no node 2:

Execução do OPatchAuto no node 1:
Execução do OPatchAuto no node 1:

Para verificar se os patches foram aplicados, você pode por exemplo rodar:

./opatch lspatches nos ORACLE_HOMEs do GI e DB, em todos os servidores.

Exemplo:

Execução do OPatchAuto no node 1:
Execução do OPatchAuto no node 1:
Execução do OPatchAuto no node 1:
Execução do OPatchAuto no node 1:

O Datapatch foi executado automaticamente no container root, como podemos verificar abaixo:

Execução do OPatchAuto no node 1:

Para os PDBs, execute o datapatch manualmente se durante o processo de atualização via opatchauto, algum PDB não estiver aberto.

No exemplo abaixo, o PDB1 estava off-line durante o opatchauto. A execução deve ser feita em um dos nós do cluster somente:

Execução do OPatchAuto no node 1:

Links úteis:

Automated Multi-Node Patching of Grid Infrastructure and RAC DB Environment Using OPatchAuto - https://docs.oracle.com/cd/E24628_01/doc.121/e39376/opatchauto.htm#OPTCH615

README.HTML - Patch 26022196 - Database Proactive Bundle Patch 12.1.0.2.170718 -

Notas técnicas no MOS:

Datapatch: Database 12c Post Patch SQL Automation (Doc ID 1585822.1)

12.1.0.2 Database Proactive Bundle Patches / Bundle Patches for Engineered Systems and DB In-Memory - List of Fixes in each Bundle (Doc ID 1937782.1)

Database 12.1.0.2 Proactive Patch Information (Doc ID 2285558.1)

Concluímos assim o procedimento de atualização para o último Oracle 12.1.0.2 BP, utilizando-se do OPatchAuto, em um ambiente Oracle RAC Multitenant.

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.