I’ve been doing some Enterprise Manager installs a bit more lately. At the same time, I’ve been working on Data Integration items such as GoldenGate and ODI. What these products have in common are that they require an Oracle Database for a repository. Needless to say I’ve been installing a lot of 126.96.36.199 databases in test and production environments. The one thing that has been consistent is the issue I keep seeing with PERL that is packaged with the Grid Infrastructure and/or Database.
Tip: This may not be happening to everyone and I may have a bad set of binaries. In discussing this with a co-worker, the md5sum sets were the same for my set of binaries as they were for his. So I couldn’t say if this issue was bad binaries or something else.
As I was doing installs of Grid Infrastructure or Database on Oracle Enterprise Linux 6.6, I would get the following issue when trying to run the root.sh scripts from either the OUI or from the command line.
[root@rac1 grid]./root.sh Performing root user operation.</p> <p>The following environment variables are set as: <br> ORACLE_OWNER=oracle <br> ORACLE_HOME=/u01/app/grid/12.1.0/grid <br> Copying dbhome to /usr/local/bin... <br> Copying oraenv to /usr/local/bin... <br> Copying coraenv to/usr/local/bin ...</p> <p>Entries will be added to the /etc/oratab file as needed by <br>Database Configuration Assistant when a database is created <br>Finished running generic part of root script.<br>Now product-specific root actions will be performed.<br><strong>/u01/app/grid/12.1.0/grid/crs/config/rootconfig.sh: line 131: 20862 Segmentation fault (core dumped) $ROOTSCRIPT $ROOTSCRIPT_ARGS</strong><strong>The command '/u01/app/grid/12.1.0/grid/perl/bin/perl -I/u01/app/grid/12.1.0/grid/perl/lib -I/u01/app/grid/12.1.0/grid/crs/install /u01/app/grid/12.1.0/grid/crs/install/rootcrs.pl ' execution failed</strong>
You will notice that the execution failed with a “Segmentation fault”. In looking at the command, I noticed that this is running perl from the $ORACLE_HOME/perl/bin directory. When I did a “which perl”, the perl that the operating system is using is coming from /usr/bin/perl. This is not the correct one being used by the root.sh script. Also if I did a “perl -v” from the command line it returns that the version of perl is 5.10.
Now that it is established that the operating system installed perl is fine, I took a look at the perl in $ORACLE_HOME/perl/bin. When I navigated to the $ORACLE_HOME/perl/bin directory and executed “perl -v”; I was met with the “Segmentation fault” issue. Knowing that the problem is within the Oracle binaries; how can this be resolved?
To resolve this “Segmentation fault” issue, I had to recompile the perl binaries that Oracle uses in the $ORACLE_HOME path. To do this, I had to download and recompile the perl binaries in the $ORACLE_HOME directories.
<br>$cd ~/Downloads <br>$wget http://www.cpan.org/src/5.0/perl-5.14.4.tar.gz <br>$tar -xzf perl-5.14.4.tar.gz <br>$cd perl-5.14.4 <br>$./Configure -des -Dprefix=$GI_HOME/perl <br>$make <br>$make test <br>$make install <br>
With the binaries recompiled, I was now able to run a “perl -v” from the $ORACLE_HOME and get a successful result set.
<br>[oracle@rac1 ~] cd /u01/app/grid/188.8.131.52/grid <br>[oracle@rac1 grid] cd perl/bin <br>[oracle@rac1 bin]./perl -v </p> <p>This is perl 5, version 14,subversion 4 (v5.14.4) built for x86_64-linux </p> <p>Copyright 1987-2013,Larry Wall </p><p>Perl may be copied only under the terms of either the Artistic License or the <br>GNU General Public License, which may be found in the Perl 5 source kit.</p><p>Complete documentation for Perl, including FAQ lists, should be found on <br>this system using "man perl" or "perldoc perl". If you have access to the <br>Internet, point your browser at http://www.perl.org/, the Perl Home Page. <br>
This process can be done if the OUI is running and the step that hung can be retried. If you closed out the OUI, then the root.sh scripts will run successfully now from the $ORACLE_HOME directories.