Como Aplicar OGG RU + JDK Update no Golden Gate 19c

Introdução

Assim como outros produtos da Oracle como o Grid Infrastructure e Oracle Database, a Oracle também lança os patches de segurança para o software do Golden Gate. É recomendado manter este software atualizado com a mesma regularidade que atualizamos o banco de dados, de forma a garantir uma melhor compatibilidade entre os produtos, além de deixar o ambiente compliance em relação as atualizações de segurança.

O procedimento para aplicar o Release Update (RU) no OGG é simples e costuma ser rápido, sendo totalmente viável de se aproveitar a mesma janela de manutenção usada para o GRID e RDBMS. Este post demonstra os passos para aplicar o patch em uma instalação do Golden Gate 19c na arquitetura clássica.

Download do Patch

É importante considerar que mesmo se tratando da mesma versão do Golden Gate, existem variações do binário, sendo uma para cada versão do Oracle Database.

Por exemplo:

  • Oracle Golden Gate 19c for DB 19c
  • Oracle Golden Gate 19c for DB 18c
  • Oracle Golden Gate 19c for DB 12c
  • Oracle Golden Gate 19c for DB 11g

Você precisa identificar qual a versão usada no ambiente e baixar o patch corretamente, usando como base a nota abaixo:

Primary Note for Oracle GoldenGate Core Product Patch Sets (Doc ID 1645495.1)

Para o exemplo deste post, está sendo usado o patch 36238779 que é o RU 19.22 (JAN/2024) do OGG 19c para Oracle Database 11g:

Note que este mesmo patch não poderia ser usado em instalação do OGG 19c for DB 19c, por exemplo. Se você tem apenas uma versão de banco de dados sendo usada por instalações do OGG, essa tarefa é mais simples. Por outro lado, se tem diferentes versões de bancos de dados com Golden Gate, é necessário ter uma atenção especial nesse detalhe para ter conflito com o patch sendo aplicado.

O OPatch utilizado para aplicar patch no OGG é o mesmo do GRID e RDBMS e você pode baixá-lo normalmente através do Patch 6880880

No dia a dia eu costumo usar as notas PAD (Patch Availability Document) de cada trimestre, que já contém de forma resumida todos os patches que preciso para da ciclo de atualização, incluindo o patch do último JDK que é entregue separadamente.

Critical Patch Update (CPU) Program Apr 2024 Patch Availability Document (DB-only) (Doc ID 3000005.1)

Antes de Começar

Para facilitar o procedimento de ser repetido múltiplas vezes e em servidores diferentes, onde normalmente haverá números de patches diferentes devido a variação das versões do Oracle Database, eu ajustei todos os comandos para fazer referência as variáveis de ambiente abaixo:

export HORABKP=$(date '+%d-%m-%Y_%H-%M-%S')
export STAGE_DIR=/u01/patches
export PATCH_ZIP=p36475238_1923000OGGRU_Linux-x86-64.zip #trocar pelo nome correto
export PATCH_DIR=$STAGE_DIR/36238779 #trocar pelo numero do patch correto
export OPATCH_ZIP=p6880880_190000_Linux-x86-64.zip
export JDK_ZIP_FILE=$STAGE_DIR/p18143322_1800_Linux-x86-64.zip

Dessa forma, uma vez ajustado os valores acima de acordo ao patch que está sendo aplicado, os demais comandos podem ser usados no modo “copia e cola” facilmente, assumindo que as variáveis de ambiente padrão como ORACLE_HOME e OGG_HOME já estejam definida na sessão.

Preparação (Pré Janela)

1) Backup do binário em um diretório diferente:

cd $OGG_HOME
tar -cf $STAGE_DIR/bkp_ogg_home_${HORABKP}.tar --exclude dirdat . 

2) Backup do JDK dentro do próprio OGG Home que pode ser usado para rollback apenas do JDK, caso necessário:

zip -qr BKP${HORABKP}.jdk.zip jdk

3) Atualize o OPatch do OGG Home:

mv OPatch OPatch.BKP_${HORABKP}
unzip -qo $STAGE_DIR/$OPATCH_ZIP -d .

$OGG_HOME/OPatch/opatch version

4) Descompacte o patch do OGG RU:

unzip -qo $STAGE_DIR/$PATCH_ZIP -d $STAGE_DIR

5) Descompacte o patch do JDK em uma subpasta temporária:

mkdir -p $STAGE_DIR/new_jdk_stage
unzip -p $JDK_ZIP_FILE jdk*linux-x64.tar.gz > $STAGE_DIR/new_jdk_stage/new_jdk.tar.gz
cd $STAGE_DIR/new_jdk_stage
tar -xf new_jdk.tar.gz
mv jdk1* jdk

6) Precheck do OGG RU:

export DB_HOME=$ORACLE_HOME
export ORACLE_HOME=$OGG_HOME

$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph $PATCH_DIR

export ORACLE_HOME=$DB_HOME

Se o comando acima falhar com erro “PrereqSession falhou: RawInventory gets null OracleHomeInfo”, execute o procedimento demonstrado no post abaixo e tente novamente:

OPatch Falha com “RawInventory gets null OracleHomeInfo” em Patch do Golden Gate

Apply (Janela de Manutenção)

Se for executada em uma nova sessão do shell, exporte as variáveis novamente com os mesmos valores usados na etapa anterior:

export STAGE_DIR=/u01/patches
export PATCH_ZIP=p36475238_1923000OGGRU_Linux-x86-64.zip #trocar pelo nome correto
export PATCH_DIR=$STAGE_DIR/36238779 #trocar pelo numero do patch correto
export OPATCH_ZIP=p6880880_190000_Linux-x86-64.zip
export JDK_ZIP_FILE=$STAGE_DIR/p18143322_1800_Linux-x86-64.zip

7) Pare os processos do Golden Gate (aguarde alguns segundos até todos ficarem STOPPED)

ggsci
info all
stop *
stop mgr

8) Aplique o patch do OGG RU:

export DB_HOME=$ORACLE_HOME
export ORACLE_HOME=$OGG_HOME

cd $PATCH_DIR
$ORACLE_HOME/OPatch/opatch apply -silent
$ORACLE_HOME/OPatch/opatch lspatches

9) Atualize o JDK dentro do OGG Home:

cd $OGG_HOME
rm -rf jdk
cp -rp $STAGE_DIR/new_jdk_stage/jdk .
chmod -R 775 jdk
$OGG_HOME/jdk/bin/java -version

10) OPCIONAL: Delete os arquivos da pasta de stage do JDK pra não aparecer em um SCAN de vulnerabilidades futuramente.

rm -rf $STAGE_DIR/new_jdk_stage/*

11) Sobe todos os processos do Golden Gate novamente:

export ORACLE_HOME=$DB_HOME
ggsci
start mgr
start *
info all

Tendo chegado até aqui, você deve ter atualizado o Golden Gate com sucesso.

Rollback

O procedimento de rollback não tem nada de especial e costuma ser tão rápido quanto o procedimento de apply.

Antes de qualquer coisa, assim como no Apply, para o Rollback do RU ou do JDK, os processos do Golden Gate não podem estar em execução:

ggsci
info all
stop *
stop mgr

Assim como um patch do GRID ou RDBMS, basta executar o opatch com a sintaxe abaixo (assumindo o exemplo do patch 36238779):

export ORACLE_HOME=$OGG_HOME
$ORACLE_HOME/OPatch/opatch rollback -id 36238779

Se for o rollback do JDK, basta remover a pasta “jdk” dentro do OGG Home e descompactar o arquivo “.zip” que criamos da pasta jdk original antes da atualização.

cd $OGG_HOME
ls -lrt BKP*.jdk.zip
rm -rf jdk
unzip BKP<TIMESTAMP>.jdk.zip

DICA: Você não precisa fazer rollback de tudo, podendo fazer apenas do RU ou apenas do JDK se desejar.

Inicie os processo do OGG novamente:

export ORACLE_HOME=$DB_HOME
ggsci
start mgr
start *
info all

Leave a Reply

Scroll to Top

Discover more from Blog do Dibiei

Subscribe now to keep reading and get access to the full archive.

Continue reading