I’ve seen a lot of interest in the create_home mode of AutoUpgrade. It allows you to easily provision new Oracle homes and the feedback has been very positive.
A few customers reported an error during installation of an Oracle home on Oracle Linux 9.
Errors in database [create_home_1]
Stage [OH_PATCHING]
Operation [STOPPED]
Status [ERROR]
Info [Exception: PATCH111
Err message: AutoUpgradePatchingException [OPatch failed to install ...]
Digging into the referenced log file revealed:
[Jun 25, 2025 10:48:51 AM] [WARNING]OUI-67200:Make failed to invoke "/usr/bin/make -f ins_rdbms.mk javavm_refresh ORACLE_HOME=/u01/app/oracle/product/dbhome_1927 OPATCH_SESSION=apply"....'Can't locate File/Copy.pm in @INC (you may need to install the File::Copy module) (@INC contains: /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /u01/app/oracle/product/dbhome_1927/javavm/install/update_javavm_binaries.pl line 64.
BEGIN failed--compilation aborted at /u01/app/oracle/product/dbhome_1927/javavm/install/update_javavm_binaries.pl line 64.
make: *** [ins_rdbms.mk:573: javavm_refresh] Error 2
The Workaround
You can avoid the problem by installing Perl before you start AutoUpgrade:
dnf -y install perl-core
Big shoutout to Martin Berger for providing a workaround.
Is My Server Affected
Use this command to test whether your server is affected:
perl -e 'use File::Copy;'
If it returns without any error or output, everything is fine. If you get an error, you must install Perl before proceeding:
perl -e 'use File::Copy;'
Can't locate File/Copy.pm in @INC (you may need to install the File::Copy module) (@INC contains: /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
Why Does It Happen
-
AutoUpgrade starts by installing the Oracle home and in some cases also applies the Release Update using the
-applyRUcommand line parameter. -
Next, it installs additional patches using OPatch. Some patches, like the OJVM bundle patch, requires a compilation using
make. This process fails if there’s no usable Perl installation. -
There are several MOS notes on this specific issues advising to set the
PERL5LIBenvironment variable (Patching fails during relink , with error code 102 :: Fatal error: Command failed for target `javavm_refresh’ (Doc ID 2002334.1)). -
To solve an unrelated issue, AutoUpgrade doesn’t always set
PERL5LIBwhen calling OPatch and this leads to this error during the compilation. -
We’re trying to find a smart way to handle this (without re-introducing the other issue).
To summarize, you get this error when:
- Your operating system doesn’t have a normal Perl installation. You might have the
perlexecutable, but not the normal modules. - You install the OJVM bundle patch.
The Rabbit Hole
I learned something new about Perl today. Do you dare walking down that rabbit hole with me? I’ll make it short.
-
The error from
makementions the missing Perl module, File::Copy:/usr/bin/make -f ins_rdbms.mk javavm_refresh ORACLE_HOME=/u01/app/oracle/product/dbhome_1927 OPATCH_SESSION=apply"....'Can't locate File/Copy.pm in @INC (you may need to install the File::Copy module) -
A Perl module can be loaded from disk. Perl automatically attempts to find the file in the following locations:
perl -e 'print "@INC\n"' /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 -
So, I can check these directories for the Perl module. To find the File::Copy module, I need to check in the
Filesubdirectory for the fileCopy.pm:ll /usr/local/lib64/perl5/5.32/File/Copy.pm ll /usr/local/share/perl5/5.32/File/Copy.pm ll /usr/lib64/perl5/vendor_perl/File/Copy.pm ll /usr/share/perl5/vendor_perl/File/Copy.pm ll /usr/lib64/perl5/File/Copy.pm ll /usr/share/perl5/File/Copy.pm ls: cannot access '/usr/local/lib64/perl5/5.32/File/Copy.pm': No such file or directory ls: cannot access '/usr/local/share/perl5/5.32/File/Copy.pm': No such file or directory ls: cannot access '/usr/lib64/perl5/vendor_perl/File/Copy.pm': No such file or directory ls: cannot access '/usr/share/perl5/vendor_perl/File/Copy.pm': No such file or directory ls: cannot access '/usr/lib64/perl5/File/Copy.pm': No such file or directory ls: cannot access '/usr/share/perl5/File/Copy.pm': No such file or directory -
The file is not found in any of the directories, so Perl will fail to load the module.
-
Had the file been found in just one location, all would be good.
Happy patching!
You saved my day today.
LikeLike
I’m glad that worked out for you.
Regards,
Daniel
LikeLike