Patch no Oracle Fusion Middleware

Acesse o suporte da Oracle: https://support.oracle.com. Selecione Patches & Updates, no Patch Name or Number digite o número 6880880 e clique em Search.

My Oracle Support | Patches & Updates
My Oracle Support | Patches & Updates

Da lista de opções, escolha a versão do OPatch que seja compatível com o seu Sistema Operacional. Clique em Download. O OPatch é a ferramenta que utilizaremos para aplicar os patches em produtos da Oracle. No meu caso a versão que eu baixei é a p6880880_112000_Linux-x86-64.zip.

Nesse artigo eu vou realizar o patch do Oracle BPM/SOA Suite em um Ubuntu 64 bits. Serão aplicados os seguinte patches: 9958661 e 10629189. Após fazer o download do OPatch e dos patches a serem aplicados, descompacte-os. Para ficar melhor organizado, eu removi a versão antiga do OPatch: /opt/Oracle11gSOABPM/Middleware/Oracle_SOA1/OPatch e substitui pela nova versão. Descompactei os patches em uma pasta dentro da Home do usuário chamada patches.

Atribua o valor adequada à sua ORACLE_HOME e coloque o OPatch no PATH:

export ORACLE_HOME="/opt/Oracle11gSOABPM/Middleware/Oracle_SOA1"
export PATH=$PATH:$ORACLE_HOME/OPatch

Para verificar os pré-requisitos de maneira gráfica, acesse a pasta $ORACLE_HOME/Oracle_SOA1/oui/bin e digite o seguinte:

./runInstaller -prereqchecker PREREQ_CONFIG_LOCATION=$ORACLE_HOME/OPatch/opatchprereqs ORACLE_HOME=$ORACLE_HOME OPATCH_PATCH_BASE_DIR=/home/thiago/patches -entryPoint oracle.opatch.apply

Você terá a seguinte tela:

Oracle Prerequisite Checker Version Production
Oracle Prerequisite Checker Version Production

Acesse a $ORACLE_HOME e execute o OPatch

opatch -help

Caso você tenha o seguinte erro:

Invoking OPatch 11.2.0.1.4
java.lang.UnsatisfiedLinkError: Can't load library: /opt/Oracle11gSOABPM/Middleware/Oracle_SOA1/oui/lib/linux/liboraInstaller.so
 at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1657)
 at java.lang.Runtime.load0(Runtime.java:770)
 at java.lang.System.load(System.java:1004)
 at oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps.loadNativeLib(OiipuUnixOps.java:402)
 at oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps.<clinit>(OiipuUnixOps.java:126)
 at oracle.sysman.oii.oiip.oiipg.OiipgEnvironment.ssgetUidux(OiipgEnvironment.java:528)
 at oracle.sysman.oii.oiix.OiixEnvironmentOps.ssgetUidux(OiixEnvironmentOps.java:159)
 at oracle.opatch.OUIReplacer.isRootAccess(OUIReplacer.java:741)
 at oracle.opatch.OPatch.main(OPatch.java:445)
Exception in thread "Main Thread" java.lang.UnsatisfiedLinkError: no oraInstaller in java.library.path
 at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1689)
 at java.lang.Runtime.loadLibrary0(Runtime.java:823)
 at java.lang.System.loadLibrary(System.java:1029)
 at oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps.loadNativeLib(OiipuUnixOps.java:420)
 at oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps.<clinit>(OiipuUnixOps.java:126)
 at oracle.sysman.oii.oiip.oiipg.OiipgEnvironment.ssgetUidux(OiipgEnvironment.java:528)
 at oracle.sysman.oii.oiix.OiixEnvironmentOps.ssgetUidux(OiixEnvironmentOps.java:159)
 at oracle.opatch.OUIReplacer.isRootAccess(OUIReplacer.java:741)
 at oracle.opatch.OPatch.main(OPatch.java:445)

OPatch failed with error code 1

Significa que ele não conseguiu carregar as bibliotecas do OUI, que foi o que ocorreu comigo :). Para verificar com mais detalhes o que está ocorrendo, você pode setar a variável de debug do OPatch:

export OPATCH_DEBUG=true

O problema ocorreu na minha máquina porque ele utilizou o JRockit que veio disponível no Oracle SOA Suite que é 32 bits e a minha máquina é 64 bits e as libs do OUI são 64 bits. Para corrigir baixei uma nova versão do JRockit de 64 bits: http://www.oracle.com/technetwork/middleware/jrockit/downloads/index.html, instalei ele e passei o parâmetro jdk para o OPatch escolher o JDK adequado.

opatch lsinventory -jdk /opt/jrockit-jdk1.6.0_20-R28.1.0-4.0.1

Caso você não tenha tido problema com a JDK, execute sem passar esse parâmetro e o caminho da JDK. Você deverá ficar atento à seguinte informação:

Installed Top-level Products (2):

Application Server 11g SOA Patchset                                  11.1.1.3.0
Oracle SOA Suite 11g                                                 11.1.1.2.0
There are 2 products installed in this Oracle Home.

Caso não apareça essa informação, ou você setou o ORACLE_HOME errado ou ele não encontrou o arquivo /etc/oraInst.loc. Para resolver essa segunda opção crie um arquivo com o seguinte conteúdo:

inventory_loc=/home/thiago/oraInventory
inst_group=thiago

Substituindo o grupo e a localização do inventory corretamente. Após essa verificação, vamos instalar o patch com o Weblogic Server desligado. Caso queira fazer com ele ligado, leia o arquivo README que acompanha o patch para instruções do uso do parâmetro -auto. Acesse o diretório do patch e execute o opatch com o parametro apply. Da seguinte maneira:

opatch apply -jdk /opt/jrockit-jdk1.6.0_20-R28.1.0-4.0.1

Informe seu e-mail e senha de suporte. Confirme a aplicação do patch. Faça o mesmo para os outros patches e pronto. Patches aplicados! Confirme executando o lsinventory novamente.

Interim patches (2) :

Patch  10629189     : applied on Thu Jan 13 08:41:25 BRST 2011
Unique Patch ID:  13322870
 Created on 7 Jan 2011, 02:00:23 hrs PST8PDT
 Bugs fixed:
 9591253
 This patch overlays patches:
 9958661
 This patch needs patches:
 9958661
 as prerequisites

Patch  9958661      : applied on Thu Jan 13 08:39:32 BRST 2011
 Created on 11 Aug 2010, 04:22:49 hrs PST8PDT
 Bugs fixed:
 9773118, 9902801, 9673506, 9788329, 9920703, 9766017, 9766026, 9669174
 9766118, 9839946, 9845950, 9877837, 9828641

Outras informações podem ser encontradas em: http://docs.tpu.ru/docs/oracle/en/owl/E14571_01/doc.1111/e16793/opatch.htm

Atualização: Para remover um patch aplicado, execute o seguinte comando:

opatch rollback -id 10629189 -jdk /opt/jrockit-jdk1.6.0_20-R28.1.0-4.0.1

Sobre: Thiago Galbiatti Vespa

Thiago Galbiatti Vespa é mestre em Ciências da Computação e Matemática Computacional pela USP e bacharel em Ciências da Computação pela UNESP. Coordenador de projetos do JavaNoroeste, membro do JCP (Java Community Process), consultor Oracle, arquiteto de software de empresas de médio e grande porte, palestrante de vários eventos e colaborador de projetos open source. Possui as certificações: Oracle Certified Master, Java EE 5 Enterprise Architect – Step 1, 2 and 3; Oracle WebCenter Portal 11g Certified Implementation Specialist; Oracle Service Oriented Architecture Infrastructure Implementation Certified Expert; Oracle Certified Professional, Java EE 5 Web Services Developer; Oracle Certified Expert, NetBeans Integrated Development Environment 6.1 Programmer; Oracle Certified Professional, Java Programmer; Oracle Certified Associate, Java SE 5/SE 6