Aplicando o Oracle Release Update no Oracle 12.2 RAC Multitenant

Por Rogerio Eguchi
Publicado em Novembro 2017


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

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:

    1. Conflito com um patch já aplicado no ORACLE_HOME. Nesse caso pare a atualização e registre um chamado no Oracle Suporte.
    2. 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.



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



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


    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  - https://updates.oracle.com/Orion/Services/download?type=readme&aru=21483405

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.