Aplicando o Oracle Database Bundle Patch (BP) e o Oracle JavaVM Database PSU no Banco de Dados Oracle 12c

Por Rogerio Eguchi,
Publicado en Setembro 2017

Revisado por Luciano Verissimo

A Oracle disponibiliza para seus clientes dois tipos de patches:

  • Patches reativos

    Conhecidos como “interim patches” ou “one-off” patches, são aqueles que corrigem um bug específico.

  • Patches proativos

    Os patches proativos são categorizados em:

    Secure Patch Update (SPU): contém patches de segurança do programa Critical Patch Update.

    Patch Set Update (PSU): Contém os patches de segurança (CPU) e patches críticos de alto impacto e baixo risco.

    Bundle Patch (BP): Contém todos os PSU, mais correções para o ambiente específico do BP.

    Quarterly Full Stack Download Patch: Contém patches distintos entregues no mesmo pacote de atualização. Específico para Engineered System.

    O conteúdo dos patches pode ser visualizado como:

    01

Você pode realizar a instalação de somente uma das metodulogias de patch: SPU, PSU ou BP.

Todos os métodos permitem a aplicação de “interim patches”, porém a versão do interim patch requerido depende da metodulogia de patch aplicada.

Nesse artigo você aprenderá sobre a instalação do Oracle Database Proactive Bundle Patch (ou BP) uma vez que esta é a metodulogia de patch recomendada pela Oracle a partir da versão Oracle 12.1.0.2.

Faremos também a instalação do Oracle JavaVM Component Database PSU, pois seu deploy é recomendado independentemente da utilização ou não deste recurso. Mais informações podem ser obtidas no documento MOS: Oracle Recommended Patches -- "Oracle JavaVM Component Database PSU" (OJVM PSU) Patches (Doc ID 1929745.1)

Os Bundle Patches são disponibilizados em datas pré-definidas e podem ser mais frequentes do que os PSU patches. Além disso eles são sempre “RAC Rulling and Standby First installable”.

Os patches recomendados para o Oracle Database podem ser visualizados no documento MOS: Note: 756671.1 - Oracle Recommended Patches - Oracle Database.

Nesse momento, o último bundle patch disponível para instalação é o 12.1.0.2.170418 Database Proactive Bundle Patch (Apr 2017).

Uma boa prática de instalação do Bundle Patch é a atualização do opatch, ou seja, devemos sempre atualizar o opatch para a última versão antes de aplicar um BP.

O opatch está disponível para download através do patch 6880880.

Atualizando o opatch

Faça o download do Patch 6880880 para a sua plataforma e transfira o arquivo para o servidor. Exemplo para ambiente Linux 64 Bits:

02

Descompacte-o:

03

Mova o diretório opatch criado pela descompactação para o ORACLE_HOME do banco a ser atualizado. O comando opatch version confirma que a versão foi atualizada e está de acordo com o pacote que fizemos download do MOS.

04

Preparando os Patches para instalação

Como estamos num ambiente Single Instance, devemos parar os bancos e os Listeners que foram iniciados no ORACLE_HOME que será atualizado. Caso você tenha um Oracle Agent iniciado nesse servidor, ele também deve ser parado.

Neste artigo, realizaremos a aplicação dos patches 25433352 (Proactive Bundle Patch – Apr 2017) e 25437695 (JavaVM Component).

05

Faça o download dos patches esculhidos, copie para o servidor que será atualizado e descompacte os arquivos.

06

07

Serão criados dois diretórios, cada um com o conteúdo do patch a ser aplicado:

25437695 - Oracle JavaVM Component 12.1.0.2.170418 Database PSU (Apr 2017) (OJVM PSU)

25433352 - 12.1.0.2.170418 Database Proactive Bundle Patch (Apr 2017)

Acesse cada um dos diretórios e leia com atenção o conteúdo do arquivo README.html.

Como um dos pré-requisitos do patch 25437695 é termos o Database Proactive Bundle Patch 12.1.0.2.1 (Oct2014)

 ou superior aplicado, devemos primeiro aplicar o patch 25433352.

Aplicando o BP.

Para isso, entre no diretório 25433352 e execute os passos abaixo:

  • Validação do Oracle Inventory opatch lsinventory –detail
  • Verificação de conflito com outros patches aplicados

    opatch prereq CheckConflictAgainstOHWithDetail – phBaseDir /25433352/25397136

    opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /25433352/25481150

    08

    Se não existem conflitos, podemos seguir.

  • Verificação de espaço

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

    /25433352/25481150 /25433352/25397136

    Se, por exemplo, você descompactar os arquivos no diretório /u01/patches, o conteúdo ficará como abaixo:

    /u01/patches/25433352/25481150 u01/patches/25433352/25397136

    Em seguida execute o comando:

    opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_dbhome.txt

    09

    Se a verificação for bem-sucedida, podemos aplicar o patch.

  • Para aplicar o patch entre no diretório /25433352/25397136, em seguida execute o comando $ORACLE_HOME/OPatch/opatch apply. Responda “y” para os questionamentos.

    10

Aplicando o JavaVM Component (OJVM PSU)

Entre no diretório em que o patch foi descompactado.

Exemplo: cd /u01/patches/25437695

  • Verifique se há algum conflito

    opatch prereq CheckConflictAgainstOHWithDetail -ph ./

    11

    Não existindo conflitos, continue com a aplicação do patch.

  • Execute o comando: Opatch apply

    12

Verifique se o Patch foi aplicado com sucesso.

Em seguir devemos executar os passos de pós-instalação:

  • Subir o banco em modo upgrade

    13

  • Executar o datapatch dentro do diretório OPatch:

    cd $ORACLE_HOME/OPatch

    ./datapatch -verbose

    14

    Verifique se os patches foram instalados com sucesso.

    Devemos agora reiniciar o banco, executando o shutdown, seguido do startup.

    15

Agora vamos executar o utilitário utlrp.sql para que objetos inválidos sejam recompilados:

16

Verificando os patches aplicados

Podemos verificar os patches aplicados no $ORACLE_HOME de duas maneiras:

  • Executando opatch lsinventory

    17

  • Executando uma consulta no banco:

    select PATCH_ID,VERSION,STATUS,DESCRIPTION from dba_registry_sqlpatch;

    18

Mais informações sobre os tipos de patch disponíveis consulte a nota MOS Oracle Database - Overview of Database Patch Delivery Methods (Doc ID 1962125.1)

Rogerio Bacchi Eguchi é um DBA Oracle Sênior com extensa experiência em ambientes ulTP de missão crítica e que empregam as tecnulogias da "Oracle Maximum Availability Architecture". Atuou como DBA em empresas como Oracle, Uul, UulDiveo, 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 tecnulogias 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.