Install Oracle 12.1.0.1++ on Fedora 17 – 20


I’m using Fedora 19 on my notebook and tried to install oracle 12.1.0.1 for evaluation purposes. As I tried, I’vh got an error during “Link binaries” step. Maybe the following steps are working on other operating systems too. NOTICE: I’vh tested this workaround on Fedora 20 also -> Success.

UPDATE 22.07.2014: Oracle released 12.1.0.2.0 Patchset for 12.1.0.1.0. With this PatchSet the Installation should work without problems. I’vh tested on Fedora 19/20 and RHEL 7 which worked for me without any issue!

Here the error:

  • Error in invoking target ‘links proc gen_pcscfg procob’ of makefile ‘<ORACLE_HOME>/precomp/lib/ins_precomp.mk
  • INFO: /usr/bin/ld: <ORACLE_HOME>/lib//libnls12.a(lxhlang.o): undefined reference to symbol ‘__tls_get_addr@@GLIBC_2.3’ /usr/bin/ld: note: ‘__tls_get_addr@@GLIBC_2.3’ is defined in DSO /lib64/ld-linux-x86-64.so.2 so try adding it to the linker command line /lib64/ld-linux-x86-64.so.2: could not read symbols: Invalid operation

fedora_error The problem are the link dependencies. To solve this issue: 1. Goto <ORACLE_HOME>/lib/stubs/ take a backup and delete this folder. Here an example:

[bash]$ rm -rf /opt/oracle/app/product/12.1.0/dbhome_3/lib/stubs/

2. Backup and then edit <ORACLE_HOME>/rdbms/lib/env_rdbms.mk: 2.1 Search for “LINKTTLIBS” and change the line from

   176 LINKTTLIBS=$(LLIBCLNTSH) $(ORACLETTLIBS) $(LINKLDLIBS)

to

   176 LINKTTLIBS=$(LLIBCLNTSH) $(ORACLETTLIBS) $(LINKLDLIBS) -lons

2.2 Now search for “LINK=” and change the line from

    279 LINK=$(FORT_CMD) $(PURECMDS) $(ORALD) $(LDFLAGS) $(COMPSOBJS)
    280 LINK32=$(FORT_CMD) $(PURECMDS) $(ORALD) $(LDFLAGS32) $(COMPSOBJS)

to

    279 LINK=$(FORT_CMD) $(PURECMDS) $(ORALD) $(LDFLAGS) $(COMPSOBJS) -Wl,--no-as-needed
    280 LINK32=$(FORT_CMD) $(PURECMDS) $(ORALD) $(LDFLAGS32) $(COMPSOBJS) -Wl,--no-as-needed

2.3 Last but not least, search for “TG4PWD_LINKLINE” and change the line from

   3041 TG4PWD_LINKLINE= $(LINK) $(OPT) $(TG4PWDMAI) \
   3042         $(LLIBTHREAD) $(LLIBCLNTSH) $(LINKLDLIBS)

to

   3041 TG4PWD_LINKLINE= $(LINK) $(OPT) $(TG4PWDMAI) \
   3042         $(LLIBTHREAD) $(LLIBCLNTSH) $(LINKLDLIBS) -lnnz12

The line number changes in future releases to

3126 TG4PWD_LINKLINE= $(LINK) $(OPT) $(TG4PWDMAI) \
3127         $(LLIBTHREAD) $(LLIBCLNTSH) $(LINKLDLIBS) -lnnz12

3. Return back to installer an click “retry”. The installation should complete without errors now. 4. After installed successfully you have to start relinking process again, because some executables are missing now. Therefor change current folder to <ORACLE_HOME>\bin:

[bash]$ /opt/oracle/app/product/12.1.0/dbhome_3/bin
[bash]$ ls -l | wc -l
239
[bash]$ ./relink all
writing relink log to: /opt/oracle/app/product/12.1.0/dbhome_3/install/relink.log
[bash]$ grep -i err /opt/oracle/app/product/12.1.0/dbhome_3/install/relink.log
[bash]$ ls -l | wc -l
240

If you want to setup Oracle Grid Infrastructure 12c (see here)

UPDATE 22.04.2014:

In future Patchsets you may get the following error: fedora20_12102 In the logfile you will see the following error

INFO: /opt/oracle/product/12.1.0.2/dbhome_1/bin/orald -o ctxhx -m64 -z noexecstack -Wl,--disable-new-dtags -L/opt/oracle/product/12.1.0.2/dbhome_1/ctx/lib/ -L/opt/oracle/product/12.1.0.2/dbhome_1/lib/ -L/opt/oracle/product/12.1.0.2/dbhome_1/lib/stubs/  /opt/oracle/product/12.1.0.2/dbhome_1/ctx/lib/ctxhx.o -Wl,--unresolved-symbols=ignore-in-shared-libs -L/opt/oracle/product/12.1.0.2/dbhome_1/ctx/lib/ -lm -lsc_ca -lsc_fa -lsc_ex -lsc_da -lsc_ut -lsc_ch -lsc_fi -lsc_fmt -lsc_ind -lwv_core -lsc_lo -lsc_fut -lsc_anno 
INFO: -lz -lctxhx -Wl,-L/opt/oracle/product/12.1.0.2/dbhome_1/ctx/lib -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12  `cat /opt/oracle/product/12.1.0.2/dbhome_1/lib/sysliblist` `cat /opt/oracle/product/12.1.0.2/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnro12 `cat /opt/oracle/product/12.1.0.2/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnnz12 -lzt12 -lztkg12 -Wl,-rpath,'/opt/oracle/
INFO: product/12.1.0.2/dbhome_1/lib:/opt/oracle/product/12.1.0.2/dbhome_1/ctx/lib'

INFO: /usr/bin/ld: /opt/oracle/product/12.1.0.2/dbhome_1/lib//libcore12.a(sslss.o): undefined reference to symbol '__tls_get_addr@@GLIBC_2.3'
/usr/bin/ld: note: '__tls_get_addr@@GLIBC_2.3' is defined in DSO /lib64/ld-linux-x86-64.so.2 so try adding it to the linker command line
/lib64/ld-linux-x86-64.so.2: could not read symbols: Invalid operation

INFO: collect2: error: ld returned 1 exit status

INFO: make: *** [ctxhx] Error 1

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'install' of makefile '/opt/oracle/product/12.1.0.2/dbhome_1/ctx/lib/ins_ctx.mk'. See '/opt/oracle/oraInventory/logs/installActions2014-04-22_04-37-48PM.log' for details.
Exception Severity: 1

Therefore you have to change the following: 1. Do step 1 from top of this article and delete the stubs folder 2. Open file $ORACLE_HOME/ctx/lib/env_ctx.mk and change from

 153 PURECMDS=$(PURELINK) $(PURIFY) $(PURECOV) $(QUANTIFY)
 154 LINK=$(LDCCOM)
 155 LINKCC=$(LDCCOMCC)

to

 153 PURECMDS=$(PURELINK) $(PURIFY) $(PURECOV) $(QUANTIFY)
 154 LINK=$(LDCCOM) --Wl,--no-as-needed
 155 LINKCC=$(LDCCOMCC)

3. Retry relink