Olá pessoal,

Espero que estejam bem!

Nas últimas semanas, eu publiquei dois blog posts sobre atualização do servidor de banco de dados do RHEL 7 para o RHEL 8.

No meu último blog post, eu descrevi como corrigir um erro/bug que está relacionado aos módulos de kernel do ACFS/AFD se você estiver fazendo upgrade para o RHEL 8.9.

Você pode ver meu último blog post aqui:

ACFS-9459: ADVM/ACFS is not supported on this OS version: ‘4.18.0-513.11.1.el8_9.x86_64’ after upgrade to RHEL/OEL 8.9

Quando você está aplicando um patch usando opatchauto, uma das tarefas que são executadas/gerenciadas pelo opatchauto é o postpatch. Esse geralmente é o último passo quando você está aplicando um patch.

Durante o postpatch, recebemos o erro exibido abaixo:

—————————Patching Failed———————————

Command execution failed during patching in home: /oracle/app/193/grid, host: dbl01.

Command failed: bash -c “LD_LIBRARY_PATH=/oracle/app/193/grid/lib:/oracle/app/193/grid/srvm/lib:/oracle/app/193/grid/lib:/oracle/app/193/grid/lib:/oracle/app/193/grid/srvm/lib /oracle/app/193/grid/perl/bin/perl -I/oracle/app/193/grid/perl/lib -I/oracle/app/193/grid/opatchautocfg/db/dbtmp/bootstrap_dbl01/patchwork/crs/install -I/oracle/app/193/grid/opatchautocfg/db/dbtmp/bootstrap_dbl01/patchwork/xag /oracle/app/193/grid/opatchautocfg/db/dbtmp/bootstrap_dbl01/patchwork/crs/install/rootcrs.pl -postpatch”

Command failure output:

Using configuration parameter file: /oracle/app/193/grid/opatchautocfg/db/dbtmp/bootstrap_dbl01/patchwork/crs/install/crsconfig_params

The log of current session can be found at:

/oracle/app/grid/crsdata/dbl01/crsconfig/crs_postpatch_apply_inplace_dbl01_2024-03-13_02-13-54AM.log

2024/03/13 02:14:07 CLSRSC-180: An error occurred while executing the command ‘/bin/rpm -qf /sbin/init’

After fixing the cause of failure Run opatchauto resume

Se você observou, o erro está destacado aqui:

2024/03/13 02:14:07 CLSRSC-180: An error occurred while executing the command ‘/bin/rpm -qf /sbin/init’

Vamos checar o log mencionado, o path/caminho default para o log é $ORACLE_BASE/crsdata/<hostname>/crsconfig/crs_postpatch_apply_inplace_<hostname>_YYYY-MM-DD_HH-MI-SSAM.log.

Então, no meu caso, o log é /oracle/app/grid/crsdata/dbl01/crsconfig/crs_postpatch_apply_inplace_dbl01_2024-03-13_02-13-54AM.log.

Vamos checar o log:

2024-03-13 02:14:07: Command output:

> error: rpmdb: BDB0113 Thread/process 4954/140508599121984 failed: BDB1507 Thread died in Berkeley DB library

> error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery

> error: cannot open Packages index using db5 – (-30973)

> error: cannot open Packages database in /var/lib/rpm

> error: rpmdb: BDB0113 Thread/process 4954/140508599121984 failed: BDB1507 Thread died in Berkeley DB library

> error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery

> error: cannot open Packages database in /var/lib/rpm

> error: rpmdb: BDB0113 Thread/process 4954/140508599121984 failed: BDB1507 Thread died in Berkeley DB library

> error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery

> error: cannot open Packages database in /var/lib/rpm

> file /sbin/init is not owned by any package

OK, nesse caso podemos ver que o erro está relacionado ao Berkeley DB, e, se você se lembra, o erro aconteceu durante a execução do seguinte comando:

/bin/rpm -qf /sbin/init

Vamos ver o que acontece se tentarmos executar esse comando:

rpm -qf /sbin/init


error: db5 error(-30973) from dbenv->open: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db5 – (-30973)
error: cannot open Packages database in /var/lib/rpm
error: db5 error(-30973) from dbenv->open: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db5 – (-30973)
error: cannot open Packages database in /var/lib/rpm
error: db5 error(-30973) from dbenv->open: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db5 – (-30973)
error: cannot open Packages database in /var/lib/rpm
file /sbin/init is not owned by any package

Humm, isso significa que o banco de dados do RPM (do Sistema Operacional) está corrompido. A causa raiz pode se dar por diversos motivos e não vou focar em encontrar a causa-raiz nesse post, até porque parece que esse é um erro isolado e não um erro recorrente.

Então, nesse caso, a gente precisa fazer o rebuild do RPM DB. Com o usuário root, execute o seguinte comando:

rm -f /var/lib/rpm/__*

/bin/rpm –rebuilddb

Vamos agora checar se o comando foi executado com sucesso, a saída esperada é 0 (zero):

echo $?

0

Vamos checar se receberemos o erro novamente:

rpm -qf /sbin/init

systemd-239-78.el8.x86_64

OK, agora parece bom!

Se você observou no log do patch, você deve agora executar o opatchauto resume para continuar com os passos restantes do seu patch.

Esse erro também é citado na nota de suporte abaixo:

Postpatch Command Fails on Grid Infrastructure Home Due To rpm Database Corruption At The OS Level (Doc ID 2365433.1)

Espero que seja útil!

Um abraço!

Vinicius