So here I am trying to install Oracle Application Server 10g release 2 (10.1.2.0.2) on my Solaris x86 64-bit VM to test out some stuff. Then, I get this error.

“Error in invoking target ‘agent nmo nmb’ of makefile ‘home/oracle/OraHome_1/sysman/lib/ins_sysman.mk’. See ‘/home/oracle/oraInventory/logs/installAction2011-11-17_07-04-25AM.log’ for details.”

Nice. Just nice.

Checking out the logs, there were a few warnings and errors that showed what was wrong.

ld: warning: file libclntsh.so.10.1: required by /home/oracle/OraHome_1/lib//libnmemso.so, not found
...
...
...
ld: fatal: symbol referencing errors. No output written to /home/oracle/OraHome_1/sysman/lib/emagent
*** Error code 1
make: Fatal error: Command failed for target `/home/oracle/OraHome_1/sysman/lib/emagent'
Current working directory /home/oracle/OraHome_1/sysman/lib
*** Error code 1
make: Fatal error: Command failed for target `emergent'
...
...
...
End output from spawned process.
----------------------------------
Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'agent nmo nmb' of makefile '/home/oracle/OraHome_1/sysman/lib/ins_sysman.mk'. See '/home/oracle/oraInventory/logs/installActions2011-11-17_07-04-25AM.log' for details.
Exception Severity: 1
The output of this make operation is also available at: '/home/oracle/OraHome_1/install/make.log'

Basically, it looks like there was some error in the makefile process somewhere. So, I checked out the make.log file to see what was wrong.

It turns out that the error started when the installer tried to make the libclntsh.so.10.1 lib file. Which also explains why it was not found in the earlier log.

/usr/ccs/bin/make -f ins_net_client.mk client_sharedlib ORACLE_HOME=/home/oracle/OraHome_1//home/oracle/OraHome_1/bin/genclntsh
ld: fatal: symbol 'ntcontab' in file /home/oracle/OraHome_1/lib/libn10.a(ntcontab.o): section [3].data: size 0x60: symbol (address 0, size 0x70) lies outside of containing section
ld: fatal: file processing errors. No output written to /home/oracle/OraHome_1/lib/libclntsh.so.10.1
/home/oracle/OraHome_1/bin/genagtsh /home/oracle/OraHome_1/lib/libagtsh.so 1.0
ld: fatal: symbol 'ntcontab' in file /home/oracle/OraHome_1/lib/libn10.a(ntcontab.o): section [3].data: size 0x60: symbol (address 0, size 0x70) lies outside of containing section
ld: fatal: file processing errors. No output written to /home/oracle/OraHome_1/lib/libagtsh.so


But it looks like there’s a bug with somewhere. This ain’t good at all. However, I knew I can’t be the only one who has faced this problem and I’m sure this issue has surely been reported to Oracle’s support. Thus, I searched support for a fix on this exact issue. And indeed, there was a workaround posted in a support document title “Solaris and Oracle 32bit Linking Error “fatal: symbol ‘ntcontab’ in file $O_H/lib/libn10.a(ntcontab.o): section [3].data: : symbol lies outside of containing section” [ID 1364167.1]
It appears that this applies to the following products:-

  • Oracle Server – Enterprise Edition – Version: 10.1.0.2 to 10.2.0.5 – Release: 10.1 to 10.2
  • Oracle Server – Standard Edition – Version: 10.1.0.2 to 10.2.0.5   [Release: 10.1 to 10.2]
  • Oracle Solaris on x86 (32-bit)
  • Oracle Solaris on x86-64 (64-bit)

And this issue is also currently known to affect only the 32bit version of Oracle Software on Solaris x86 and Solaris x86-64 where OS patch 144501-19 has been installed or in the latest Solaris builds:- Solaris 11 [Nevada] or Solaris 10 Update 10 and above ( Solaris 10 8/11 ).

True enough. I was trying to install Oracle Application Server 10.1.2.0.2 on Solaris 10 8/11.

Thankfully, the fix is rather simple. If you don’t want to login to My Oracle Support, then here it is posted for your convenience.

1. If you are doing a 1st install on the machine and encountered this error during the installation as I had, then open a new Terminal window and firstly set the ORACLE_HOME path. You do this by running the following command.

ORACLE_HOME=/usr/oracle/OraHome_1; export ORACLE_HOME

2. Go to the bin directory of ORACLE_HOME

cd $ORACLE_HOME/bin

3. Make a copy of the file you need to correct just in case. Backing up is ALWAYS a best practice.

cp gennttab gennttab_orig

4. Run gedit to edit the genntab file. I prefer to do it graphically, so gedit it is for me. You may use any editor that you prefer too.

gedit gennttab

5. Here’s what you need to change. Search for the word “ntcontab:” and you should find what you need to change. I’ve highlighted in red what you need to change.

ntcontab:
.type   ntcontab,@object
.size   ntcontab,112
.align  4

to

ntcontab:
.type   ntcontab,@object
.size   ntcontab,96
.align  4

6. Now that that’s fix, let’s remake the required lib file.

cd $ORACLE_HOME/network/lib
/usr/ccs/bin/make -f ins_net_client.mk ntcontab.o
$ORACLE_HOME/bin/genclntsh

7. If this error occurred during an installation of base release or patchset and you received the pop-up described above, click on ‘Retry’ and the link error should resolve itself.
8.  If this error occurred during a patching installation via opatch utility then complete the following after doing steps 1-4 above

relink Oracle
relink all > relink.txt 2>&1

9. review the relink.txt file for errors (if any)

And that’s it. You should be ok now. Phew!

Please Google +1 my article if you think it was useful. Thanks!