opatch auto falhando com "Can't locate Switch.pm in @INC"

This post is also available in: English

Esses dias, quando tentei executar um "opatch auto" em um servidor Enterprise Linux 7 para atualizar automaticamente a minha GI Home e todas Database Homes, recebi o erro:

[root@localhost 20834621]# opatch auto ./20485808 -ocmrf /tmp/ocm.rsp
Can't locate Switch.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /u01/app/11.2.4/grid/OPatch/crs/auto_patch.pl line 2730.
BEGIN failed--compilation aborted at /u01/app/11.2.4/grid/OPatch/crs/auto_patch.pl line 2730.

O problema era que a lib "Switch.pm" não estava presente. Verificando no MOS, encontrei o Doc ID 1915430.1 (Opatch Auto fails with: Can't locate Switch.pm) dizendo que no Perl 5.10 ou maior, "the Switch module has been is deprecated" (esse módulo está deprecado) e dando como workaround para baixar e instalar o Switch.pm do www.cpan.org e depois tentar novamente executar o "opatch auto".

No entanto, eu fiz algo muito mais simples que funcionou.

Primeiro, procurei por este arquivo no meu servidor:

[root@localhost ~]# find / -name Switch.pm
/u01/app/oracle/product/11.2.4/dbhome_1/perl/lib/5.10.0/CGI/Switch.pm
/u01/app/oracle/product/11.2.4/dbhome_1/perl/lib/5.10.0/Switch.pm
/u01/app/11.2.4/grid/perl/lib/5.10.0/CGI/Switch.pm
/u01/app/11.2.4/grid/perl/lib/5.10.0/Switch.pm

Por fim, copiei copiei um deles para a minha pasta de lib do perl:

[root@localhost ~]# cp -p $ORACLE_HOME/perl/lib/5.10.0/Switch.pm /usr/lib64/perl5/vendor_perl/

Após reexecutar "opatch auto", tudo funcionou bem.

Gostou? Não deixe de comentar ou deixar um 👍!

Deixe um comentário

Seu e-mail não será publicado.