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:
Patch 36238779 Oracle GoldenGate 19.22.0.0.240124 for Oracle 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