Aplicando o Oracle Release Update no Oracle 12.2 RAC Multitenant

Esse artigo demostrará como aplicar o último Release Update (RU) em ambiente Oracle RAC 12.2 Multitenant.

Por Rogerio Eguchi
Publicado em Novembro 2017

Sobre o ambiente:
Sistema Operacional: Oracle Linux 7.3 Kernel 4.1.12-94.3.9.el7uek.x86_64
Banco de Dados: Oracle Enterprise Edition 12.2.0.1 RAC Multitenant

Você pode encontrar a lista atualizada de patches através do MOS Master Note for Database Proactive Patch Program (Doc ID 756671.1):

A quadro abaixo mostra a seção que lista os patches disponíveis para o Oracle Database 12.2.0.1. Recomenda-se o acesso a este documento para obter sempre o conteúdo mais atualizado.

Neste material mostrarei como aplicar os patches liberados em 14/08/2017:

  • Patch 26610291 para o Grid Infrastructure
  • Patch 26609817 para o Oracle Database

Faça o download somente do patch 26610291 (ele será aplicado em ambos ORACLE_HOMEs), copie para o servidor (node 1) e descompacte-o.

Importante: Esse patch pode ser aplicado em modo Rolling Fashion, ou seja, não haverá indisponibilidade total dos serviços.

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.

Atualizando a versão do OPatch grid home:

Atualizando a versão do opatch oracle home:

Repita a atualização do OPatch em todos os nodes do cluster.

2. Antes de iniciar a instalação do patch, precisamos validar a consistência do Inventário dos ORACLE_HOMEs. Para isso, execute:

$ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME, onde a variável de ambiente $ORACLE_HOME aponta para o OH que faremos a validação, exemplo:

Grid Infrastructure

Database

3. Verificação de conflitos:

Para o Grid Infrastructure, execute com o dono do Home:



$ORACLE_HOME/OPatch/opatch prereq  CheckConflictAgainstOHWithDetail -phBaseDir 
UNZIPPED_PATCH_LOCATION>/26610291/26609817
$ORACLE_HOME/OPatch/opatch prereq  CheckConflictAgainstOHWithDetail -phBaseDir  
UNZIPPED_PATCH_LOCATION>/26610291/26609966
$ORACLE_HOME/OPatch/opatch prereq  CheckConflictAgainstOHWithDetail -phBaseDir  
UNZIPPED_PATCH_LOCATION>/26610291/25586399
Para o Database, execute como dono do  Home:

$ORACLE_HOME/OPatch/opatch prereq  CheckConflictAgainstOHWithDetail -phBaseDir 
UNZIPPED_PATCH_LOCATION>/26610291/26609817
$ORACLE_HOME/OPatch/opatch prereq  CheckConflictAgainstOHWithDetail -phBaseDir  
UNZIPPED_PATCH_LOCATION>/26610291/26609966

Exemplos:

Grid Infrastructure

Database

Resultado esperado: Prereq "checkConflictAgainstOHWithDetail" passed.

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.

Verificação de espaço disponível para instalação do patch:

Para o Grid Infrastructure Home, execute com o dono do home grid:

Crie o arquivo /tmp/patch_list_gihome.txt com o seguinte conteúdo:




<UNZIPPED_PATCH_LOCATION>/26610291/25586399
<UNZIPPED_PATCH_LOCATION>/26610291/26609966
<UNZIPPED_PATCH_LOCATION>/26610291/26609817

Execute o OPatch para realizar a verificação de espaço disponível no OH do GI:

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

Para o Database home, execute como dono do home oracle:

Crie o arquivo /tmp/patch_list_dbhome.txt com o seguinte conteúdo:




cat /tmp/patch_list_dbhome.txt
<UNZIPPED_PATCH_LOCATION>/26610291/26609966
<UNZIPPED_PATCH_LOCATION>/26610291/26609817

Rode o opatch para realizar a verificação de espaço disponível no OH do DB:

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

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. No caso do Exadata,  você pode utilizar a própria documentação do produtocomo 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 5 nos outros nós do cluster.

Aplicando o Oracle RU 12.2.0.1.170814

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

No node 1, conectar com o usuário root e adicionar 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, execute:

opatchauto apply <UNZIPPED_PATCH_LOCATION>/26610291

Aaguarde a conclusão do comando.

Conectar no outro nó do cluster e executar os mesmos passos do node 1.




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

Aguarde a conclusão do comando.

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

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

     

    Execução do OPatchAuto no node 2:

    Para verificar se os patches foram aplicados, você pode executar o seguinte comando no ORACLE_HOME do GI e do DB, em todos os servidores:

    ./opatch lspatches Node1:

    Node2:

     

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

    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. Neste caso, a execução deve ser feita somente em um dos nós do cluster.
    Para a execução do Datapatch ser bemsucedida, abra o PDB em modo upgrade.

    Em seguida execute o Datapatch conforme exemplo abaixo:

    Veja que a violação da abertura do PDB foi resolvida:

    E o patch foi registrado com sucesso no PDB1:

    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 26610291 - Grid Infrastructure Jul2017 Release Update 12.2.0.1.170814

    Notas técnicas no MOS:

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

    Master Note for Database Proactive Patch Program (Doc ID 756671.1)

    12.2.0.1 Grid Infrastructure Release Update - List of Fixes in each RU/RUR (Doc ID 2245185.1)

    Conclusão Realizamos com sucesso a execução do procedimento de instalação do último Oracle Release Update no Oracle 12.2, utilizand o OPatchAuto em um ambiente Oracle com RAC e Multitenant.

    Observem que os passos utilizados para realizar a instalação do RU patch são muito próximos aqueles realizados para a atualização do BundlePatch para o Oracle 12.1.

    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.