Well, you know it is weekend, it is when more free time we have to play with Oracle Stuff plus the 12 hours at night that we have everyday;  it was raining, there was coffee, and only Oracle was pending. So I decided to practice some topics for Oracle 12.1.0.2 but my laptop got full with a lot of virtual machines with 11g since many months ago when I was getting prepared for my OCM 11g, so I decided to delete all of them and start creating new ones, this time for 12c. But this time was different, I found problems. At the past I installed a couple of times Oracle 12c single instances and also 2 times Oracle Flex Clusters and I haven't seen before those problems. I came back since I thought maybe I was doing something wrong, like skipping a RPM package or mixing software for 32 bits with 64, etc... But after all the fun , it looks like the issue is with Oracle VirtualBox, that makes sense since last week I upgrated VirtualBox to the latest version (5). So let me show you what problems I found and how I resolved them, so that if you are having these problems you can go directly to the solution and avoid spending many cups of coffee like me as you know nowadays every cup of coffee is expensive :)

Basically I had 2 problems:

  • Error "ins_rdbms.mk" while Oracle Universal Installer was performing the installation.
  • Error "Segmentation fault" when I was configuring ASM and Database

I will show you the first problem:

"ins_rdbms.mk" at while installing:

You know you found this problem when Oracle Universal Installer shows you the following image:


NOTE: When you get that image, don't do anything, just leave that session there and go to the solution section, since after the fix you have to come back and resume the installation.

... and you confirm by the log that the problem is because of a java library:

INFO: /u01/app/grid/product/12.1.0/grid/bin/orald -o /u01/app/grid/product/12.1.0/grid/rdbms/lib/oracle -m64 -z noexecstack -Wl,--disable-new-dtags -L/u01/app/grid/product/12.1.0/grid/rdbms/lib/ -L/u01/app/grid/product/12.1.0/grid/lib/ -L/u01/app/grid/product/12.1.0/grid/lib/stubs/ -Wl,-E /u01/app/grid/product/12.1.0/grid/rdbms/lib/opimai.o /u01/app/grid/product/12.1.0/grid/rdbms/lib/ssoraed.o /u01/app/grid/product/12.1.0/grid/rdbms/lib/ttcsoi.o -Wl,--whole-archive -lperfsrv12 -Wl,--no-whole-archive /u01/app/g
INFO: rid/product/12.1.0/grid/lib/nautab.o /u01/app/grid/product/12.1.0/grid/lib/naeet.o /u01/app/grid/product/12.1.0/grid/lib/naect.o /u01/app/grid/product/12.1.0/grid/lib/naedhs.o /u01/app/grid/product/12.1.0/grid/rdbms/lib/config.o -lserver12 -lodm12 -lcell12 -lnnet12 -lskgxp12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 -lclient12 -lvsn12 -lcommon12 -lgeneric12 -lknlopt `if /usr/bin/ar tv /u01/app/grid/product/12.1.0/grid/
INFO: rdbms/lib/libknlopt.a | grep xsyeolap.o > /dev/null 2>&1 ; then echo "-loraolap12" ; fi` -lskjcx12 -lslax12 -lpls12 -lrt -lplp12 -lserver12 -lclient12 -lvsn12 -lcommon12 -lgeneric12 `if [ -f /u01/app/grid/product/12.1.0/grid/lib/libavserver12.a ] ; then echo "-lavserver12" ; else echo "-lavstub12"; fi` `if [ -f /u01/app/grid/product/12.1.0/grid/lib/libavclient12.a ] ; then echo "-lavclient12" ; fi` -lknlopt -lslax12 -lpls12 -lrt -lplp12 -ljavavm12 -lserver12 -lwwg `cat /u01/app/grid/product/12.1.0/grid
INFO: /lib/ldflags` -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnro12 `cat /u01/app/grid/product/12.1.0/grid/lib/ldflags` -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnnzst12 -lzt12 -lztkg12 -lmm -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 -lztkg12 `cat /u01/app/grid/product/12.1.0/grid/lib/ldflags` -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnro12 `cat /u01/app/grid/product/12.1.0/grid/lib/ldflags` -lncrypt12 -lnsgr1
INFO: 2 -lnzjs12 -ln12 -lnl12 -lnnzst12 -lzt12 -lztkg12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 `if /usr/bin/ar tv /u01/app/grid/product/12.1.0/grid/rdbms/lib/libknlopt.a | grep "kxmnsd.o" > /dev/null 2>&1 ; then echo " " ; else echo "-lordsdo12 -lserver12"; fi` -L/u01/app/grid/product/12.1.0/grid/ctx/lib/ -lctxc12 -lctx12 -lzx12 -lgx12 -lctx12 -lzx12 -lgx12 -lordimt12 -lclsra12 -ldbcfg12 -lhasgen12 -lskgxn2 -lnnzst12 -lzt
INFO: 12 -lxml12 -locr12 -locrb12 -locrutl12 -lhasgen12 -lskgxn2 -lnnzst12 -lzt12 -lxml12 -lgeneric12 -loraz -llzopro -lorabz2 -lipp_z -lipp_bz2 -lippdcemerged -lippsemerged -lippdcmerged -lippsmerged -lippcore -lippcpemerged -lippcpmerged -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 -lsnls12 -lunls12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -ln
INFO: ls12 -lasmclnt12 -lcommon12 -lcore12 -laio -lons `cat /u01/app/grid/product/12.1.0/grid/lib/sysliblist` -Wl,-rpath,/u01/app/grid/product/12.1.0/grid/lib -lm `cat /u01/app/grid/product/12.1.0/grid/lib/sysliblist` -ldl -lm -L/u01/app/grid/product/12.1.0/grid/lib

INFO: /usr/bin/ld: cannot find -ljavavm12
collect2: ld returned 1 exit status

INFO: make: *** [/u01/app/grid/product/12.1.0/grid/rdbms/lib/oracle] Error 1

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'irman ioracle' of makefile '/u01/app/grid/product/12.1.0/grid/rdbms/lib/ins_rdbms.mk'. See '/u01/app/oraInventory/logs/installActions2015-11-22_09-41-37AM.log' for details.
Exception Severity: 1
[root@db12102 u01]#


Solution:

Oracle binaries already have that jave library, all what you have to do is copy it from one directory to the other where Oracle Universal Installer will use it:


[root@db12102 u01]# cp $ORACLE_HOME/javavm/jdk/jdk7/lib/libjavavm12.a $ORACLE_HOME/lib
[root@db12102 ~]# chown grid:oinstall $ORACLE_HOME/lib/libjavavm12.a

After that, came back to Oracle Universal Installer and just click on "Retry" button. The force will be with you.

IMPORTANT NOTE: I was installing GI standalone here, but I found the problem also when I was installing database software. if you are lucky enough you will have to fix this twice.

2. Error "Segmentation fault" when I was configuring ASM and Database

The second error was related to perl. I found this problem for the first time when I was executing "root.sh" to configure GI standalone. Immediately after execute "root.sh" I received the following:

Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
/u01/app/grid/product/12.1.0/grid/crs/config/rootconfig.sh: line 131: 6642 Segmentation fault (core dumped) $ROOTSCRIPT $ROOTSCRIPT_ARGS
The command '/u01/app/grid/product/12.1.0/grid/perl/bin/perl -I/u01/app/grid/product/12.1.0/grid/perl/lib -I/u01/app/grid/product/12.1.0/grid/crs/install /u01/app/grid/product/12.1.0/grid/crs/install/roothas.pl ' execution failed
[root@db12102 ~]#

Solution:

The solution was already found by Laurent Leturgez in this link (This was the first link I found with the issue)

The problem is related to perl binaries. Basically you have to download a new perl binaries and replace the oracle's one.

The second time I found this problem, was when I was creating a new database using "DBCA". "root.sh" for Oracle Database Software ran successfully, but DBCA had the problem. I had to execute the fix again at this time before use DBCA to create my database.

I recommend you the following:

Before to execute "root.sh" for GI, execute the following little test:

[root@db12102 bin]# cd $ORACLE_HOME/perl/bin
[root@db12102 bin]# ./perl -v
Segmentation fault

if you get that result "Segmentation fault" go directly to execute the fix.

If you get the following output (or an output alike), then just ignore this post and proceed with your configuration:

./perl -v

This is perl 5, version 14, subversion 1 (v5.14.1) built for x86_64-linux-thread-multi

Copyright 1987-2011, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

Well, that was for GI.

I recommend you the same test, using ORACLE_HOME pointing to your oracle database software installation, before to create databases with DBCA. If you get the same "Segmentation Fault" for Oracle Database Perl, go directly to execute the fix.

If everything goes well you will see finally your database running:

[oracle@db12102 perl]$ ps -ef |grep pmon
oracle 21660 1 0 16:47 ? 00:00:00 ora_pmon_cdb1
oracle 22475 1267 0 17:03 pts/1 00:00:00 grep pmon
grid 29278 1 0 16:26 ? 00:00:00 asm_pmon_+ASM
[oracle@db12102 perl]$

[oracle@db12102 perl]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sun Nov 22 17:03:47 2015

Copyright (c) 1982, 2014, Oracle. All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options

SQL> select name, open_mode from v$database;

NAME OPEN_MODE
--------- --------------------
CDB1 READ WRITE

NOTE: While writing this blog post, my friend Bobby Curtis already was aware of it, so it looks like this issue is more frequent than we think:)

Enjoy!

Follow me: