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:
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:
Espero que seja útil!
Um abraço!
Vinicius
Related posts
Disclaimer
Minhas postagens refletem minhas próprias opiniões e não representam necessariamente as opiniões do meu empregador, a Accenture.