Installing Oracle 12c on Ubuntu 12.04 (64 bit)..a hard journey, but it’s worth it!

This post will document the steps needed to overcome the installation issues one can encounter when installing the latest release of the Oracle Database 12c. Some of the errors encountered look like the ones on 11c, but since there are quite a few more now, I decided to document these for others as a reference.

Disclaimer: When I set out to tackle the installation errors, my goal was to “make it work, one way or the other”. I’m not running this installation on a production environment, not in the least since Ubuntu 12.04 is not supported, but I needed to have a local database to fiddle with on my local laptop. The solution provided can make a Linux Admin cringe, and if not landing one in a grave, at least make one turn itself over in his/her grave.

I won’t delve into the specific system configuration packages and required settings, since these are documented in abundance either on the OTN, or on other sites. Basically these kind of issues are easy to resolve by  just installing the missing package and re-run the installer. The issues discussed below are the errors one will encounter when the linker starts doing it’s thing.

However, for ease of getting started, I’ll list a quick listing of needed packages and needed settings, from a “freshly” installed ubuntu 12.04 installation:

As root:

root# apt-get install elfutils libaio1 libaio-dev libstdc++6-4.4-dev numactl pdksh sysstat unixODBC-dev unixODBC build-essential libaio1 gawk ksh libmotif3 alien libtool

Create and prepare Oracle user:

root# addgroup oinstall
root# addgroup dba
root# useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle
root# mkdir /home/oracle
root# chown -R oracle:dba /home/oracle

Create and prepare location to install the oracle binaries:

root# mkdir -p /oracle
root# chown -R oracle:dba /oracle

Edit and add to the sysctl.conf:

root# vi /etc/sysctl.conf
# Oracle 12c entries
fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=2097152
kernel.shmmni=4096
kernel.sem=250 32000 100 128
net.ipv4.ip_local_port_range=9000 65500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586
kernel.shmmax=1073741824

Save the file.

Note: kernel.shmmax = max possible value, e.g. size of physical memory in bytes. This machine has 8GB, but I want to keep the memory allocation low, so we are specifying 1GB. Adjust the parameter as needed.

Load new kernel parameters, by running following as root user,

root# sysctl -p

Edit and adjust the /etc/security/limits.conf file:

root# vi /etc/security/limits.conf
#Oracle 12c
oracle soft nproc 2048
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

Prerequisites:

  • Prepare the system settings.
  • Install all the packages needed for the Oracle software as usual.

Download and install the Oracle Database software, make sure you have the correct bit version (in my case: 64 bit).

Unpack the software in a location with ample room to hold the unpacked software. For sake of documentation, let’s assume I’ve unpacked this in the /tmp/Oracle12c directory.

Navigate to /location_of_unpacked_software/database and run the command:

oracle$/tmp/Oracle12c/database$ ./runInstaller
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 500 MB.   Actual 115797 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 952 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2013-09-17_06-57-27PM. Please wait ...

Selection_003A pop-up appears while the installer loads the files.

Oracle Database 12c Release 1 Installer - Installing database - Step 1 of 10_004Choose whether you like to be spammed by OTN. I choose not to.
Press Next.

My Oracle Support Username-Email Address Not Specified_005I’m pretty sure about this, so press Yes.

Oracle Database 12c Release 1 Installer - Installing database - Step 2 of 10_007This is not a test run for patching, so for now I choose to skip software updates (seems to be the default, anyway). Press Next.

Oracle Database 12c Release 1 Installer_008This pop-up can appear, and is to be expected since we are not running a supported environment. I choose to ignore this, since I have a running installation of Oracle 11c on this system. One can take the prerequisites of this Oracle version as a guideline of which packages to install.

Oracle Database 12c Release 1 Installer - Installing database - Step 3 of 10_001Choose to install the database software only, since if this is succeeding, we can install a database later to test if the installation is successful. Press Next.

Oracle Database 12c Release 1 Installer - Installing database - Step 4 of 10_002A single installation will do for now. Press Next.

Oracle Database 12c Release 1 Installer - Installing database - Step 5 of 12_003I prefer English, so I press Next.

Oracle Database 12c Release 1 Installer - Installing database - Step 6 of 12_004Select the option most applicable here, I choose Enterprise so I get to test all the components to my hearts delight! Press Next.

Oracle Database 12c Release 1 Installer - Installing database - Step 7 of 12_003Enter the location where the database software (aka oracle binaries) need to be installed. I deviate from any form of standard and place it for ease of reference in /oracle and below. Be sure to grant the oracle user ownership en access permissions on this location.
Press Next.

Oracle Database 12c Release 1 Installer - Installing database - Step 8 of 12_004Enter the location of the Oracle Inventory directory. In this case it is in a new location, but a previous run has shown me you can perfectly use an existing 11g inventory location. Press Next.

Oracle Database 12c Release 1 Installer - Installing database - Step 9 of 13_005Select the preferred groups, I keep everything on the  “dba” group, since the oracle user is taking care of all the Oracle stuff. Press Next.

Oracle Database 12c Release 1 Installer - Installing database - Step 11 of 13_006Check the configuration parameters, edit where necessary. When done, press Install.

Oracle Database 12c Release 1 Installer - Installing database - Step 12 of 13_007The PREPARE phase should not give much issues..not at all actually.

Oracle Database 12c Release 1 Installer - Installing database - Step 12 of 13_008The COPY phase should also pass, since this is just extracting and well..copying..If this fails, check the bit version of the download, of the extracted files..or disk space…

Oracle Database 12c Release 1 Installer - Installing database - Step 12 of 13_009The linking phase…now here is where the fun starts! Expect to see a couple of these pop-ups, but no need to fret, we are going to take them on one at a time!

As the pop-up suggest, open the log file on the console. Note: in the console where the ./runinstaller.sh was started, you can find the location of the log file also.

In this case the log file is located at:

/oracle/oraInventory/logs/installActions2013-09-19_08-51-51AM.log

Open a separate window and put a ‘tail’ on this log file, since we need to keep on top of this now, and use this a lot.

$ tail -f  /oracle/oraInventory/logs/installActions2013-09-19_08-51-51AM.log

What we are looking for is this:

INFO: Start output from spawned process:
INFO: ----------------------------------
INFO:

INFO: /oracle/base/dbhome_1/bin/genclntsh

INFO: /usr/bin/ld: cannot find /usr/lib64/libpthread_nonshared.a inside

INFO: collect2: ld returned 1 exit status

INFO: genclntsh: Failed to link libclntshcore.so.12.1

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

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'client_sharedlib' of makefile '/oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk'. See '/oracle/oraInventory/logs/installActions2013-09-19_08-51-51AM.log' for details.
Exception Severity: 1

This line looks interesting:

INFO: /usr/bin/ld: cannot find /usr/lib64/libpthread_nonshared.a inside

We seem to have missed a lib..let’s fix this:

root:~# locate libpthread_nonshared
/usr/lib/i386-linux-gnu/libpthread_nonshared.a
/usr/lib/x86_64-linux-gnu/libpthread_nonshared.a

Ah, the lib is on the system, but not on the location the installer expects it.

root:~# ln -s /usr/lib /usr/lib/lib64
root:~# ln /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/libpthread_nonshared.a

Note: The system used is pure 64 bit, but oracle seems not to be aware of this. Ergo: the symlink.

Now: hit the “Retry” button of the installer.

Oracle Database 12c Release 1 Installer - Installing database - Step 12 of 13_009Again: an error. As expected. Look in the tail of the log file:

INFO: /oracle/base/dbhome_1/bin/genclntsh

INFO: /usr/bin/ld: cannot find /usr/lib64/libc_nonshared.a inside
collect2:
INFO: ld returned 1 exit status

INFO: genclntsh: Failed to link libclntshcore.so.12.1
make: *** [client_sharedlib] Error 1

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'client_sharedlib' of makefile '/oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk'. See '/oracle/oraInventory/logs/installActions2013-09-19_08-51-51AM.log' for details.
Exception Severity: 1

Another lib we seem to miss. Let’s repeat our previous trick:

root:~# locate libc_nonshared.a
/usr/lib/libc_nonshared.a
/usr/lib/x86_64-linux-gnu/libc_nonshared.a

root:~# ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64
root:~# ls -l /usr/lib64/libc_nonshared.a
lrwxrwxrwx 1 root root 42 Sep 19 10:53 /usr/lib64/libc_nonshared.a -> /usr/lib/x86_64-linux-gnu/libc_nonshared.a

Now: hit the “retry” button of the installer.

Oracle Database 12c Release 1 Installer - Installing database - Step 12 of 13_001

The installer should continue for a bit with the linking part..until…

Selection_004Let’s check the log file again:

INFO:  - Linking password utility (orapwd)

INFO: rm -f /oracle/base/dbhome_1/rdbms/lib/orapwd

INFO: /oracle/base/dbhome_1/bin/orald -o /oracle/base/dbhome_1/rdbms/lib/orapwd -m64 -z noexecstack -Wl,--disable-new-dtags -L/oracle/base/dbhome_1/rdbms/lib/ -L/oracle/base/dbhome_1/lib/ -L/oracle/base/dbhome_1/lib/stubs/   /oracle/base/dbhome_1/rdbms/lib/s0kuzr.o /oracle/base/dbhome_1/rdbms/lib/kuzrclsr.o  -lclntsh -lclntshcore  `cat /oracle/base/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnro12 `cat /oracle/base/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnnz12
INFO:  -lzt12 -lztkg12 -lztkg12 -lclient12 -lnnetd12  -lvsn12 -lcommon12 -lgeneric12 -lmm -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 `cat /oracle/base/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnro12 `cat /oracle/base/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lclient12 -lnnetd12  -lvsn12 -lcommon12 -lgeneric12   -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -ln
INFO: ls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 -lclient12 -lnnetd12  -lvsn12 -lcommon12 -lgeneric12 -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12   `cat /oracle/base/dbhome_1/lib/sysliblist` -Wl,-rpath,/oracle/base/dbhome_1/lib -lm    `cat /oracle/base/dbhome_1/lib/sysliblist` -ldl -lm   -L/oracle/base/dbhome_1/lib -lasmclntsh12 -lcell12 -lskgxp12 -lskgxn2 -lhasgen12 -locr12 -lclsra12 -ldbcfg12

INFO: /usr/bin/ld: /oracle/base/dbhome_1/lib//libclntsh.so: undefined reference to symbol 'ztucxtb'
/usr/bin/ld: note: 'ztucxtb' is defined in DSO /oracle/base/dbhome_1/lib//libnnz12.so so try adding it to the linker command line
/oracle/base/dbhome_1/lib//libnnz12.so: could not read symbols: Invalid operation

INFO: collect2: ld returned 1 exit status

INFO: make: *** [/oracle/base/dbhome_1/rdbms/lib/orapwd] Error 1

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'all_no_orcl' of makefile '/oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk'. See '/oracle/oraInventory/logs/installActions2013-09-19_08-51-51AM.log' for details.
Exception Severity: 1

Ah, we seem to have problems with building ORAPWD.

This line looks promising:

/oracle/base/dbhome_1/lib//libnnz12.so: could not read symbols: Invalid operation

Let’s investigate this lib:

oracle$ cd /oracle/base/dbhome_1/lib/
oracle$/oracle/base/dbhome_1/lib$ ldd libnnz12.so
linux-vdso.so.1 =>  (0x00007fff759d9000)
        libclntshcore.so.12.1 => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f324050f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3240ff5000)
oracle@anniepb:/oracle/base/dbhome_1/lib$

Weird, this lib is an oracle lib..and the installer is looking for it in the wrong location. I’ll link this lib in the general lib location where it always can be found: /usr/lib.

root# ln -s /oracle/base/dbhome_1/lib/libclntshcore.so.12.1 /usr/lib/
root# ls -l /usr/lib/libclntshcore.so.12.1
lrwxrwxrwx 1 root root 47 Sep 19 11:08 /usr/lib/libclntshcore.so.12.1 -> /oracle/base/dbhome_1/lib/libclntshcore.so.12.1
root#

Check if the linker can resolve the library.

oracle$ ldd /oracle/base/dbhome_1/lib/libnnz12.so
linux-vdso.so.1 =>  (0x00007fffb9fff000)
        libclntshcore.so.12.1 => /usr/lib/libclntshcore.so.12.1 (0x00007f6278756000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6278397000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f6278192000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f6277e96000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f6277c79000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f6277a70000)
/lib64/ld-linux-x86-64.so.2 (0x00007f62793cd000)

Ok, that is one. But there is more! Due to how the GCC is configured in Ubuntu, we need to do some extra alterations..

Open  the make file: /oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk

oracle$ vi /oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk

Search for the lines:

$(ORAPWD) : $(ALWAYS) $(ORAPWD_DEPS)
$(SILENT)$(ECHO)
$(SILENT)$(ECHO) " - Linking password utility (orapwd)"
$(RMF) $@
$(ORAPWD_LINKLINE)

Add the following:

$(ORAPWD) : $(ALWAYS) $(ORAPWD_DEPS)
$(SILENT)$(ECHO)
$(SILENT)$(ECHO) " - Linking password utility (orapwd)"
$(RMF) $@
$(ORAPWD_LINKLINE) -lnnz12

Don’t forget to save the file!

Now: hit the “Retry” button of the installer.

Selection_004*kabloe-ie..* again an error…the same? No! check the log:

INFO:  - Linking HS OTS agent

INFO: rm -f /oracle/base/dbhome_1/rdbms/lib/hsots

INFO: /oracle/base/dbhome_1/bin/orald -o /oracle/base/dbhome_1/rdbms/lib/hsots -m64 -z noexecstack -Wl,--disable-new-dtags -L/oracle/base/dbhome_1/rdbms/lib/ -L/oracle/base/dbhome_1/lib/ -L/oracle/base/dbhome_1/lib/stubs/   /oracle/base/dbhome_1/rdbms/lib/hormt.o           /oracle/base/dbhome_1/rdbms/lib/homts.o                 /oracle/base/dbhome_1/rdbms/lib/hoat.o /oracle/base/dbhome_1/rdbms/lib/hsxaora.o /oracle/base/dbhome_1/rdbms/lib/xaondy.o -lagtsh -lpthread -lclntsh -lclntshcore   `cat /oracle/base/dbhome_1/lib/sysliblist` -
INFO: Wl,-rpath,/oracle/base/dbhome_1/lib -lm    `cat /oracle/base/dbhome_1/lib/sysliblist` -ldl -lm   -L/oracle/base/dbhome_1/lib  -lnsgr12

INFO: /usr/bin/ld: /oracle/base/dbhome_1/lib//libagtsh.so: undefined reference to symbol 'ssMemRealloc'
/usr/bin/ld: note: 'ssMemRealloc' is defined in DSO /oracle/base/dbhome_1/lib//libclntshcore.so so try adding it to the linker command line
/oracle/base/dbhome_1/lib//libclntshcore.so: could not read symbols: Invalid operation

INFO: collect2: ld returned 1 exit status

INFO: make: *** [/oracle/base/dbhome_1/rdbms/lib/hsots] Error 1

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'all_no_orcl' of makefile '/oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk'. See '/oracle/oraInventory/logs/installActions2013-09-19_08-51-51AM.log' for details.
Exception Severity: 1

Let’s see:

INFO: /usr/bin/ld: /oracle/base/dbhome_1/lib//libagtsh.so: undefined reference to symbol 'ssMemRealloc

A different library..Let’s investigate and fix:

oracle$ ldd /oracle/base/dbhome_1/lib//libagtsh.so
linux-vdso.so.1 =>  (0x00007fffd9151000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f50778cd000)
        libclntsh.so.12.1 => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f507750d000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5077eaf000)

ah, an missing lib again..Also an Oracle lib..

root# ln -s /oracle/base/dbhome_1/lib/libclntsh.so.12.1 /usr/lib
root# ls -l /usr/lib/libclntsh.so.12.1
lrwxrwxrwx 1 root root 43 Sep 19 11:20 /usr/lib/libclntsh.so.12.1 -> /oracle/base/dbhome_1/lib/libclntsh.so.12.1
root#

Check if this did the trick:

oracle$ ldd /oracle/base/dbhome_1/lib//libagtsh.so
linux-vdso.so.1 =>  (0x00007fff12137000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007faa87fca000)
        libclntsh.so.12.1 => /usr/lib/libclntsh.so.12.1 (0x00007faa852db000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007faa84f1b000)
/lib64/ld-linux-x86-64.so.2 (0x00007faa885ac000)
libnnz12.so => /oracle/base/dbhome_1/lib/libnnz12.so (0x00007faa84805000)
libons.so => /oracle/base/dbhome_1/lib/libons.so (0x00007faa845c1000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007faa842c4000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007faa840a7000)
libaio.so.1 => /lib/x86_64-linux-gnu/libaio.so.1 (0x00007faa83ea5000)
libclntshcore.so.12.1 => /oracle/base/dbhome_1/lib/libclntshcore.so.12.1 (0x00007faa83954000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007faa8374c000)

Perfect!

Adjust the makefile again: /oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk

 
oracle$ vi /oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk

Search for the lines:

$(HSOTS) : $(ALWAYS) $(HSOTS_DEPS)
$(SILENT)$(ECHO)
$(SILENT)$(ECHO) " - Linking HS OTS agent"
$(RMF) $@
$(HSOTS_LINKLINE)

Add the following:

$(HSOTS) : $(ALWAYS) $(HSOTS_DEPS)
$(SILENT)$(ECHO)
$(SILENT)$(ECHO) " - Linking HS OTS agent"
$(RMF) $@
$(HSOTS_LINKLINE) -lagtsh

Save the file.

For this error, the above fix doesn’t seem to be enough, so let’s put in a extra parameter somewhere to pacify the compiler:

Open  the environment file: /oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk

oracle$ vi /oracle/base/dbhome_1/rdbms/lib/env_rdbms.mk

Search for the lines:

HSOTS_LINKLINE=$(LINK) $(OPT) $(HSOTSMAI) $(HSALIB_SUBSET1) \
$(HS_OTS_DRIVER) $(HS_XASWITCH_ORA) $(RDBMSLIB)$(XAD_OFF) \
$(HSALIB_SUBSET2)

Add the following:

HSOTS_LINKLINE=$(LINK) $(OPT) -Wl,--no-as-needed $(HSOTSMAI) $(HSALIB_SUBSET1) \
$(HS_OTS_DRIVER) $(HS_XASWITCH_ORA) $(RDBMSLIB)$(XAD_OFF) \
$(HSALIB_SUBSET2)

Save the file.

Now: hit the “Retry” button of the installer.

Selection_004Again!? Yep. Again. Same error? No! Check the log file:

INFO:  - Linking HS Distributed External Procedure agent

INFO: rm -f /oracle/base/dbhome_1/rdbms/lib/hsdepxa

INFO: /oracle/base/dbhome_1/bin/orald -o /oracle/base/dbhome_1/rdbms/lib/hsdepxa -m64 -z noexecstack -Wl,--disable-new-dtags -L/oracle/base/dbhome_1/rdbms/lib/ -L/oracle/base/dbhome_1/lib/ -L/oracle/base/dbhome_1/lib/stubs/   /oracle/base/dbhome_1/rdbms/lib/hormd.o                 /oracle/base/dbhome_1/rdbms/lib/homts.o                 /oracle/base/dbhome_1/rdbms/lib/hoax.o /oracle/base/dbhome_1/rdbms/lib/xaondy.o -lagtsh -lpthread -lclntsh -lclntshcore   `cat /oracle/base/dbhome_1/lib/sysliblist` -Wl,-rpath,/oracle/base/dbhome_1/lib -lm
INFO:    `cat /oracle/base/dbhome_1/lib/sysliblist` -ldl -lm   -L/oracle/base/dbhome_1/lib  -lnsgr12

INFO: /usr/bin/ld: /oracle/base/dbhome_1/lib//libagtsh.so: undefined reference to symbol 'ssMemRealloc'
/usr/bin/ld: note: 'ssMemRealloc' is defined in DSO /oracle/base/dbhome_1/lib//libclntshcore.so so try adding it to the linker command line
/oracle/base/dbhome_1/lib//libclntshcore.so: could not read symbols: Invalid operation

INFO: collect2: ld returned 1 exit status

INFO: make: *** [/oracle/base/dbhome_1/rdbms/lib/hsdepxa] Error 1

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'all_no_orcl' of makefile '/oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk'. See '/oracle/oraInventory/logs/installActions2013-09-19_08-51-51AM.log' for details.
Exception Severity: 1

We already fixed the dynamic library dependency, so we just adjust the following:

Open  the environment file: /oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk

oracle$ vi /oracle/base/dbhome_1/rdbms/lib/env_rdbms.mk

Search for the lines:

HSDEPXA_LINKLINE=$(LINK) $(OPT) $(HSDEPMAI) $(HSALIB_SUBSET1) \
$(HS_DEP_DRIVER) $(RDBMSLIB)$(XAD_OFF) \
$(HSALIB_SUBSET2)

Change this to:

HSDEPXA_LINKLINE=$(LINK) $(OPT) -Wl,--no-as-needed $(HSDEPMAI) $(HSALIB_SUBSET1) \
$(HS_DEP_DRIVER) $(RDBMSLIB)$(XAD_OFF) \
$(HSALIB_SUBSET2)

Save the file.

Now: hit the “Retry” button of the installer.

Selection_004And again…an error..Let’s see what the problem is.. check the log file:

INFO: ly+0x3296): undefined reference to `oss_cell_discovery_close'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoOpenFile'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoCreateCtxExt'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoIO'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoFnameMax'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoCommit2P'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined refere
INFO: nce to `kgfoCheckHdl'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoRenameFile'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoDeleteFile'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoCloseFile'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoErrorMessage'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoGetSize'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoCreateFile'
/oracl
INFO: e/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoOpenDirty'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoCheckMount'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoDestroyCtx'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoShrinkFile'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoControl'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoCreate2P'

INFO: collect2: ld returned 1 exit status

INFO: make: *** [/oracle/base/dbhome_1/rdbms/lib/kfod] Error 1

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'all_no_orcl' of makefile '/oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk'. See '/oracle/oraInventory/logs/installActions2013-09-19_08-51-51AM.log' for details.
Exception Severity: 1

Ow. Ok..So..This is a completely different one..

This line though..

INFO: make: *** [/oracle/base/dbhome_1/rdbms/lib/kfod] Error 1

This is a not a dynamic executable, so we just open the env file again..

oracle$ vi /oracle/base/dbhome_1/rdbms/lib/env_rdbms.mk

Search for the lines:

KFOD_LINKLINE=$(LINK) $(S0MAIN) $(SSKFODED) $(SKFODPT) $(KFODOBJ) \
$(LIBGENERIC) $(LLIBDBTOOLS) \
$(LIBGENERIC) $(LLIBSAGE) $(LLIBSKGXP) $(LIBCORE) \
$(CSSCLNTLIBS_SERVER) $(LLIBASMCLNT) $(LINKTTLIBS)

Change this to:

KFOD_LINKLINE=$(LINK) $(S0MAIN) -Wl,--no-as-needed $(SSKFODED) $(SKFODPT) $(KFODOBJ) \
$(LIBGENERIC) $(LLIBDBTOOLS) \
$(LIBGENERIC) $(LLIBSAGE) $(LLIBSKGXP) $(LIBCORE) \
$(CSSCLNTLIBS_SERVER) $(LLIBASMCLNT) $(LINKTTLIBS)

Save the file.

Now: hit the “Retry” button of the installer.

Selection_004*boink* Again! let’s check the log:

INFO: ellScanInit':
kfkl.c:(text.unlikely+0x3081): undefined reference to `oss_initialize'
kfkl.c:(text.unlikely+0x30e9): undefined reference to `oss_cell_discovery_open'
kfkl.c
INFO: :(text.unlikely+0x3172): undefined reference to `oss_cell_discovery_fetch'
/oracle/base/dbhome_1/lib//libasmclnt12.a(kfkl.o): In function `kfklCellScanNext':
kfkl.c:(text.unlikely+0x3231): undefined reference to `oss_cell_discovery_fetch'
/oracle/base/dbhome_1/lib//libasmclnt12.a(kfkl.o): In function `kfklCellScanTerm':
kfkl.c:(text.unlikely+0x3296): undefined reference to `oss_cell_discovery_close'
collect2: ld returned 1 exit status

INFO: make: *** [/oracle/base/dbhome_1/rdbms/lib/amdu] Error 1

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'all_no_orcl' of makefile '/oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk'. See '/oracle/oraInventory/logs/installActions2013-09-19_08-51-51AM.log' for details.
Exception Severity: 1

Ah, the AMDU is the issue..again: we adjust the gcc parameter..

oracle$ vi /oracle/base/dbhome_1/rdbms/lib/env_rdbms.mk

Search for the lines:

AMDU_LINKLINE=$(LINK) $(S0MAIN) -Wl,--no-as-needed $(SSKFMUED) $(SKFMUPT) \
$(LLIBDBTOOLS) $(LLIBCORE) $(LLIBGENERIC) $(LLIBUNLSRTL) \
$(LLIBNLSRTL) $(LLIBCORE) $(LLIBSAGE) $(LLIBSKGXP) \
$(LLIBNLSRTL) $(CSSCLNTLIBS_SERVER) $(LLIBASMCLNT) $(LINKTTLIBS)

Change these to:

AMDU_LINKLINE=$(LINK) $(S0MAIN) -Wl,--no-as-needed $(SSKFMUED) $(SKFMUPT) \
$(LLIBDBTOOLS) $(LLIBCORE) $(LLIBGENERIC) $(LLIBUNLSRTL) \
$(LLIBNLSRTL) $(LLIBCORE) $(LLIBSAGE) $(LLIBSKGXP) \
$(LLIBNLSRTL) $(CSSCLNTLIBS_SERVER) $(LLIBASMCLNT) $(LINKTTLIBS)

Save the file.

Now: hit the “Retry” button of the installer.

Selection_004Check, another one! Check the log..

INFO: make: *** [/oracle/base/dbhome_1/rdbms/lib/kfed] Error 1

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'all_no_orcl' of makefile '/oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk'. See '/oracle/oraInventory/logs/installActions2013-09-19_08-51-51AM.log' for details.
Exception Severity: 1

ah, KFED..Also not dynamic.

oracle$ vi /oracle/base/dbhome_1/rdbms/lib/env_rdbms.mk

Search for the lines:

KFED_LINKLINE=$(LINK) $(S0MAIN) $(SSKFEDED) $(SKFEDPT)  \
$(LLIBDBTOOLS) $(LLIBSAGE) \
$(LLIBSKGXP) $(CSSCLNTLIBS_SERVER) $(LLIBASMCLNT) $(LINKTTLIBS)

Add the line below:

KFED_LINKLINE=$(LINK) $(S0MAIN) -Wl,--no-as-needed $(SSKFEDED) $(SKFEDPT)  \
$(LLIBDBTOOLS) $(LLIBSAGE) \
$(LLIBSKGXP) $(CSSCLNTLIBS_SERVER) $(LLIBASMCLNT) $(LINKTTLIBS)

Save the file.

Now: hit the “Retry” button of the installer.

Selection_004Yep…It’s for real..Another one..Check the log:

INFO: rm -f /oracle/base/dbhome_1/rdbms/lib/plshprof

INFO: /oracle/base/dbhome_1/bin/orald -o /oracle/base/dbhome_1/rdbms/lib/plshprof -m64 -z noexecstack -Wl,--disable-new-dtags -L/oracle/base/dbhome_1/rdbms/lib/ -L/oracle/base/dbhome_1/lib/ -L/oracle/base/dbhome_1/lib/stubs/   /oracle/base/dbhome_1/rdbms/lib/s0khpf.o  -lclient12 -lpls12  -lrt -lplp12 -lslax12 -lpls12  -lrt -lplp12 -lclntsh -lclntshcore  `cat /oracle/base/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnro12 `cat /oracle/base/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs
INFO: 12 -ln12 -lnl12 -lnnz12 -lzt12 -lztkg12 -lztkg12 -lclient12 -lnnetd12  -lvsn12 -lcommon12 -lgeneric12 -lmm -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 `cat /oracle/base/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnro12 `cat /oracle/base/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lclient12 -lnnetd12  -lvsn12 -lcommon12 -lgeneric12   -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls1
INFO: 2 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 -lclient12 -lnnetd12  -lvsn12 -lcommon12 -lgeneric12 -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12   `cat /oracle/base/dbhome_1/lib/sysliblist` -Wl,-rpath,/oracle/base/dbhome_1/lib -lm    `cat /oracle/base/dbhome_1/lib/sysliblist` -ldl -lm   -L/oracle/base/dbhome_1/lib

INFO: /usr/bin/ld: /oracle/base/dbhome_1/lib//libclient12.a(kpue.o): undefined reference to symbol 'ons_subscriber_close'
/usr/bin/ld: note: 'ons_subscriber_close' is defined in DSO /oracle/base/dbhome_1/lib/libons.so so try adding it to the linker command line
/oracle/base/dbhome_1/lib/libons.so: could not read symbols: Invalid operation

INFO: collect2: ld returned 1 exit status

INFO: make: *** [/oracle/base/dbhome_1/rdbms/lib/plshprof] Error 1

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'utilities' of makefile '/oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk'. See '/oracle/oraInventory/logs/installActions2013-09-19_08-51-51AM.log' for details.
Exception Severity: 1

The fix is known by now, open the make file:

oracle$ vi /oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk

Search for the lines:

$(PLSHPROF) : $(ALWAYS) $(PLSHPROF_DEPS)
$(SILENT)$(ECHO)
$(SILENT)$(ECHO) " - Linking hierarchical profiler utility (plshprof)"
$(RMF) $@
$(PLSHPROF_LINKLINE)

Explicitly add the libons.so file, to satisfy the compiler again:

$(PLSHPROF) : $(ALWAYS) $(PLSHPROF_DEPS)
$(SILENT)$(ECHO)
$(SILENT)$(ECHO) " - Linking hierarchical profiler utility (plshprof)"
$(RMF) $@
$(PLSHPROF_LINKLINE) -lons

Save the file.

Now: hit the “Retry” button of the installer.

Selection_004Yes, indeed..The next one is popping up..Again: hit the log file..

INFO:  - Linking recovery manager (rman)

INFO: rm -f /oracle/base/dbhome_1/rdbms/lib/rman

INFO: /oracle/base/dbhome_1/bin/orald -o /oracle/base/dbhome_1/rdbms/lib/rman -m64 -z noexecstack -Wl,--disable-new-dtags -L/oracle/base/dbhome_1/rdbms/lib/ -L/oracle/base/dbhome_1/lib/ -L/oracle/base/dbhome_1/lib/stubs/   /oracle/base/dbhome_1/lib/s0main.o /oracle/base/dbhome_1/rdbms/lib/sskrmed.o /oracle/base/dbhome_1/rdbms/lib/skrmpt.o -ldbtools12 -lclient12 -lsql12 -lpls12  -lrt -lplp12 -lsnls12 -lunls12 -lnls12 -lslax12 -lpls12  -lrt -lplp12 /oracle/base/dbhome_1/lib/libplc12.a -lclntsh -lclntshcore  `cat /o
INFO: racle/base/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnro12 `cat /oracle/base/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnnz12 -lzt12 -lztkg12 -lztkg12 -lclient12 -lnnetd12  -lvsn12 -lcommon12 -lgeneric12 -lmm -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 `cat /oracle/base/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnro12 `cat /oracle/base/dbhome_1/
INFO: lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lclient12 -lnnetd12  -lvsn12 -lcommon12 -lgeneric12   -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 -lclient12 -lnnetd12  -lvsn12 -lcommon12 -lgeneric12 -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12   `cat /oracle/base/dbhome_1/lib/sysliblist` -Wl,-rpath,/oracle/base/dbhome_1/lib -lm
INFO:    `cat /oracle/base/dbhome_1/lib/sysliblist` -ldl -lm   -L/oracle/base/dbhome_1/lib

INFO: /usr/bin/ld: /oracle/base/dbhome_1/lib//libclient12.a(kpue.o): undefined reference to symbol 'ons_subscriber_close'
/usr/bin/ld: note: 'ons_subscriber_close' is defined in DSO /oracle/base/dbhome_1/lib/libons.so so try adding it to the linker command line
/oracle/base/dbhome_1/lib/libons.so: could not read symbols: Invalid operation

INFO: collect2: ld returned 1 exit status

INFO: make: *** [/oracle/base/dbhome_1/rdbms/lib/rman] Error 1

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'utilities' of makefile '/oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk'. See '/oracle/oraInventory/logs/installActions2013-09-19_08-51-51AM.log' for details.
Exception Severity: 1

Ah, not an un-important one..Let’s fix this quickly:

oracle$ vi /oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk

Search for the lines:

$(RMAN) : $(ALWAYS) $(RMAN_DEPS)
$(SILENT)$(ECHO)
$(SILENT)$(ECHO) " - Linking recovery manager (rman)"
$(RMF) $@
$(RMAN_LINKLINE)

Change to:

$(RMAN) : $(ALWAYS) $(RMAN_DEPS)
$(SILENT)$(ECHO)
$(SILENT)$(ECHO) " - Linking recovery manager (rman)"
$(RMF) $@
$(RMAN_LINKLINE) -lons

Save the file.

Now: hit the “Retry” button of the installer.

Selection_004Yes, again…But the end is nigh..Check the log files again..

INFO:  - Linking dg4pwd utility

INFO: rm -f /oracle/base/dbhome_1/rdbms/lib/dg4pwd

INFO: /oracle/base/dbhome_1/bin/orald -o /oracle/base/dbhome_1/rdbms/lib/dg4pwd -m64 -z noexecstack -Wl,--disable-new-dtags -L/oracle/base/dbhome_1/rdbms/lib/ -L/oracle/base/dbhome_1/lib/ -L/oracle/base/dbhome_1/lib/stubs/   /oracle/base/dbhome_1/rdbms/lib/dg4pwd.o /oracle/base/dbhome_1/rdbms/lib/houzi.o        -lpthread -lclntsh -lclntshcore   `cat /oracle/base/dbhome_1/lib/sysliblist` -Wl,-rpath,/oracle/base/dbhome_1/lib -lm    `cat /oracle/base/dbhome_1/lib/sysliblist` -ldl -lm   -L/oracle/base/dbhome_1/lib

INFO: /usr/bin/ld: /oracle/base/dbhome_1/rdbms/lib/houzi.o: undefined reference to symbol 'ztcsh'
/usr/bin/ld: note: 'ztcsh' is defined in DSO /oracle/base/dbhome_1/lib/libnnz12.so so try adding it to the linker command line
/oracle/base/dbhome_1/lib/libnnz12.so: could not read symbols: Invalid operation

INFO: collect2: ld returned 1 exit status

INFO: make: *** [/oracle/base/dbhome_1/rdbms/lib/dg4pwd] Error 1

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'utilities' of makefile '/oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk'. See '/oracle/oraInventory/logs/installActions2013-09-19_01-00-29PM.log' for details.
Exception Severity: 1

Ah, GCC is in a twitch again:

/oracle/base/dbhome_1/lib/libnnz12.so: could not read symbols: Invalid operation

Edit the make file again:

oracle$ vi /oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk

Search for the lines:

$(TG4PWD) : $(ALWAYS) $(TG4PWD_DEPS)
$(SILENT)$(ECHO)
$(SILENT)$(ECHO) " - Linking $(TG4DG4)pwd utility"
$(RMF) $@
$(TG4PWD_LINKLINE)

And add the following:

$(TG4PWD) : $(ALWAYS) $(TG4PWD_DEPS)
$(SILENT)$(ECHO)
$(SILENT)$(ECHO) " - Linking $(TG4DG4)pwd utility"
$(RMF) $@
$(TG4PWD_LINKLINE) -lnnz12

Save the file.

Now: hit the “Retry” button of the installer.

Selection_004And again: Check the log file:

INFO: Linking external procedure agent (/oracle/base/dbhome_1/rdbms/lib/extproc)

INFO: rm -f /oracle/base/dbhome_1/rdbms/lib/extproc

INFO: /oracle/base/dbhome_1/bin/orald -o /oracle/base/dbhome_1/rdbms/lib/extproc -m64 -z noexecstack -Wl,--disable-new-dtags -L/oracle/base/dbhome_1/rdbms/lib/ -L/oracle/base/dbhome_1/lib/ -L/oracle/base/dbhome_1/lib/stubs/   /oracle/base/dbhome_1/rdbms/lib/hormc.o   /oracle/base/dbhome_1/rdbms/lib/homts.o               -lagtsh -lpthread -lclntsh -lclntshcore   `cat /oracle/base/dbhome_1/lib/sysliblist` -Wl,-rpath,/oracle/base/dbhome_1/lib -lm    `cat /oracle/base/dbhome_1/lib/sysliblist` -ldl -lm   -L/oracle/base/dbhome_1/
INFO: lib  -lnsgr12

INFO: /usr/bin/ld: /oracle/base/dbhome_1/lib//libagtsh.so: undefined reference to symbol 'nsdisc'
/usr/bin/ld: note: 'nsdisc' is
INFO:  defined in DSO /oracle/base/dbhome_1/lib//libclntsh.so so try adding it to the linker command line
/oracle/base/dbhome_1/lib//libclntsh.so: could not read symbols: Invalid operation
collect2: ld returned 1 exit status

INFO: make: *** [/oracle/base/dbhome_1/rdbms/lib/extproc] Error 1

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'utilities' of makefile '/oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk'. See '/oracle/oraInventory/logs/installActions2013-09-19_01-00-29PM.log' for details.
Exception Severity: 1

And edit the make file to get the compilers satisfaction:

oracle$ vi /oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk
Search for the lines:
$(EXTPROC): $(ALWAYS) $(EXTPROC_DEPS)
$(SILENT)$(ECHO)
$(SILENT)$(ECHO) "Linking external procedure agent ($@)"
$(RMF) $@
$(EXTPROC_LINKLINE)

And change to:

$(EXTPROC): $(ALWAYS) $(EXTPROC_DEPS)
$(SILENT)$(ECHO)
$(SILENT)$(ECHO) "Linking external procedure agent ($@)"
$(RMF) $@
$(EXTPROC_LINKLINE) -lagtsh

Save the file.

Now edit the env file:

oracle$ vi /oracle/base/dbhome_1/rdbms/lib/env_rdbms.mk

Search for the lines:

EXTPROC_LINKLINE=$(LINK) $(OPT) $(EXTPMAI) $(PROD_EXTPROC_OPT) \
$(HSALIB_SUBSET1) $(HSALIB_SUBSET2)

And add:

EXTPROC_LINKLINE=$(LINK) $(OPT) -Wl,--no-as-needed $(EXTPMAI) $(PROD_EXTPROC_OPT) \
$(HSALIB_SUBSET1) $(HSALIB_SUBSET2)

Save the file.

Now: hit the “Retry” button of the installer.

Selection_004Almost there! Check the log again:

INFO:  - Linking tnslsnr

INFO: rm -f tnslsnr

INFO: /oracle/base/dbhome_1/bin/orald -o tnslsnr -m64 -z noexecstack -Wl,--disable-new-dtags -L/oracle/base/dbhome_1/network/lib/ -L/oracle/base/dbhome_1/lib/ -L/oracle/base/dbhome_1/lib/stubs/  /oracle/base/dbhome_1/network/lib/s0nsgl.o /oracle/base/dbhome_1/network/lib/snsglp.o -lclntsh -lclntshcore  `cat /oracle/base/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnro12 `cat /oracle/base/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnnz12 -lzt12 -lztkg12 -lztkg12 -lc
INFO: lient12 -lnnetd12  -lvsn12 -lcommon12 -lgeneric12 -lmm -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 `cat /oracle/base/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lnro12 `cat /oracle/base/dbhome_1/lib/ldflags`    -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lclient12 -lnnetd12  -lvsn12 -lcommon12 -lgeneric12   -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls1
INFO: 2 -lsnls12 -lnls12 -lcore12 -lnls12 -lclient12 -lnnetd12  -lvsn12 -lcommon12 -lgeneric12 -lsnls12 -lnls12  -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12   `cat /oracle/base/dbhome_1/lib/sysliblist` -Wl,-rpath,/oracle/base/dbhome_1/lib -lm    `cat /oracle/base/dbhome_1/lib/sysliblist` -ldl -lm   -L/oracle/base/dbhome_1/lib -lons -lnl12  -ln12 -lnlsnr12 -lnlsnrc12 -lnsgr12 -lncm12 -lnro12 -ln12   -lnl12 -lnlsnr12 -lnlsnrc12 -lncm12 -ln12     -l
INFO: m

INFO: /usr/bin/ld: /oracle/base/dbhome_1/lib//libclntsh.so: undefined reference to symbol 'ztcr2rnd'
/usr/bin/ld: note: 'ztcr2rnd' is defined in DSO /oracle/base/dbhome_1/lib//libnnz12.so so try adding it to the linker command line
/oracle/base/dbhome_1/lib//libnnz12.so: could not read symbols: Invalid operation

INFO: collect2: ld returned 1 exit status

INFO: make: *** [tnslsnr] 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 '/oracle/base/dbhome_1/network/lib/ins_net_server.mk'. See '/oracle/oraInventory/logs/installActions2013-09-19_01-00-29PM.log' for details.
Exception Severity: 1

Edit the make file (THIS IS NOT THE SAME AS BEFORE!):

/oracle/base/dbhome_1/network/lib/ins_net_server.mk

look for:

tnslsnr: $(S0NSGL) $(SNSGLP) $(NSGLPNP)
$(SILENT)$(ECHO) " - Linking $(TNSLSNR)"
$(RMF) $@
$(TNSLSNR_LINKLINE)

And add TWO libs:

tnslsnr: $(S0NSGL) $(SNSGLP) $(NSGLPNP)
$(SILENT)$(ECHO) " - Linking $(TNSLSNR)"
$(RMF) $@
$(TNSLSNR_LINKLINE) -lnnz12 -lons

Save the file.

Now: hit the “Retry” button of the installer.

Selection_004Yes, again..This is still expected..Well..You know where to look now, don’t you? 😉

INFO: /oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoCloseFile'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoShrinkFile'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoCommit2P'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoErrorMessage'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoGetSize'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoOpenDirty'
/oracle/base/dbhome_1/lib//libo
INFO: crb12.so: undefined reference to `kgfoIO'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoCreateCtxExt'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoCreate2P'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoCheckHdl'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoDestroyCtx'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoRenameFile'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kg
INFO: foCreateFile'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoDeleteFile'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoFnameMax'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoCheckMount'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoControl'
/oracle/base/dbhome_1/lib//libocrb12.so: undefined reference to `kgfoOpenFile'
/oracle/base/dbhome_1/lib//libocrutl12.so: undefined reference to `lfieno'
collect2: ld returned 1 e
INFO: xit status

INFO: make: *** [/oracle/base/dbhome_1/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 '/oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk'. See '/oracle/oraInventory/logs/installActions2013-09-19_01-00-29PM.log' for details.
Exception Severity: 1

Ah, we have seen this before! A library is not feeling satisfied..

Fix it like this:

oracle$  ldd /oracle/base/dbhome_1/lib//libocrb12.so
linux-vdso.so.1 =>  (0x00007fffa83e3000)
libocrutl12.so => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe62fe75000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe630520000)
root# ln -s /oracle/base/dbhome_1/lib//libocrutl12.so /usr/lib
root# ls -l /usr/lib/libocrutl12.so
lrwxrwxrwx 1 root root 41 Sep 19 13:44 /usr/lib/libocrutl12.so -> /oracle/base/dbhome_1/lib//libocrutl12.so

oracle$ ldd /oracle/base/dbhome_1/lib//libocrb12.so
linux-vdso.so.1 =>  (0x00007fff3d7ff000)
        libocrutl12.so => /usr/lib/libocrutl12.so (0x00007fec9674c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fec9638d000)
/lib64/ld-linux-x86-64.so.2 (0x00007fec96c48000)

Ok, the library is happy..

Then edit the file : /oracle/base/dbhome_1/rdbms/lib/env_rdbms.mk

ORACLE_LINKLINE=$(ORACLE_LINKER) $(PL_FLAGS) $(ORAMAI) $(SSORED) $(TTCSOI) \
$(ORACLE_KERNEL_LIBS) $(LINKLDLIBS)

Change to:

ORACLE_LINKLINE=$(ORACLE_LINKER) -Wl,--no-as-needed $(PL_FLAGS) $(ORAMAI) $(SSORED) $(TTCSOI) \
$(ORACLE_KERNEL_LIBS) $(LINKLDLIBS)

Save the file.

Now: hit the “Retry” button of the installer.

Oracle Database 12c Release 1 Installer - Installing database - Step 12 of 13_005Wait,WAIT!! … Is it for real!?!? YES! We are PAST THE LINKER!! Now let the installer humm along..

Selection_007AH! This looks familiar…well..let’s just do this..

Execute the scripts AS ROOT:

root# /oracle/oraInventory/orainstRoot.sh
Changing permissions of /oracle/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /oracle/oraInventory to oinstall.
The execution of the script is complete.
root# /oracle/base/dbhome_1/root.sh
Performing root user operation for Oracle 12c

The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME=  /oracle/base/dbhome_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...

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.

And continue by pressing OK on the install screen.

Oracle Database 12c Release 1 Installer - Installing database - Step 13 of 13_008Indeed…Successful indeed…The base software is installed!

Great job, well done! Now grab yourself a good cup of coffee and relish in this accomplishment! No mean feat at all!

Of course, this is only the basis, we need to reap the benefits of all this work by installing (and at the same time do a sanity check to see if we really did our work correct) an database..

So: let’s fire up  the DBCA!

Quickly setup the environment:

~$ export ORACLE_HOME=/oracle/base/dbhome_1
oracle:~$ export PATH=$PATH:$ORACLE_HOME/bin
oracle:~$ dbca

_003

Database Configuration Assistant - Welcome - Step 1 of 5_010Press Next.

Database Configuration Assistant - Welcome - Step 1 of 5_010

Select advanced mode (we like control!) and press Next.

Database Configuration Assistant - Create Database - Step 3 of 13_013A General purpose db with samples: perfect! Press Next.

Database Configuration Assistant - Create Database - Step 4 of 13_015

Of course we go for the new features, but let’s play it cool, just create a container with just one PDB first..

Make the adjustments, and press Next.

Database Configuration Assistant - Create Database - Step 5 of 13_001Due to lack of OEM Cloud…we stick to the EM Database express (also VERY nice to play with!)

Press Next.

Database Configuration Assistant - Create Database - Step 6 of 14_002One ring to rule them all…erhm..password that is..will do..Press Next after making the adjustments.

Database Configuration Assistant - Create Database - Step 7 of 14_003One listener will suffice for now..Press Next.

Database Configuration Assistant - Create Database - Step 8 of 14_004Just a simple setup for now WITH FRA and ARCHIVING enabled..we are going to backup this database before we “rough treat” it ;-)..Make the adjustments, and press Next.

Database Configuration Assistant - Create Database - Step 9 of 14_005Yes, we love the examples…and we do need some data to play and display with..Press Next.

Database Configuration Assistant - Create Database - Step 10 of 14_006I can live with these settings, and we change them later anyway..so press Next.

Database Configuration Assistant - Create Database - Step 11 of 14_007Hmm, yes, please create a template for future reference, and yes, please create the database. Click the options and press Next.

Database Configuration Assistant - Create Database - Step 13 of 14_008Check the settings…and press Finish (the moment of truth!)..

Database Configuration Assistant_009Almost then…Click the pop-up..Press OK.

Database Configuration Assistant - Create Database - Step 14 of 14_002The DBCA gets going..

Selection_004

And finishes! Note down this information and press OK.

Selection_005Press Close.

And we are done. A new fresh database ready to use and abuse!

A small test is, of course, mandatory:

~$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Thu Sep 19 19:11:17 2013

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

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
oracle$ export ORACLE_SID=packarddb
oracle$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Thu Sep 19 19:11:17 2013
Copyright (c) 1982, 2013, Oracle.  All rights reserved.

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

SQL> select instance_name from gv$instance;

INSTANCE_NAME
----------------
packarddb

SQL>exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

And RMAN:

$ rman  target /

Recovery Manager: Release 12.1.0.1.0 - Production on Thu Sep 19 19:13:50 2013

Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

connected to target database: PACKARDD (DBID=415606655)

RMAN> show all;

using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name PACKARDDB are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/base/dbhome_1/dbs/snapcf_packarddb.f'; # default

RMAN>

It seems we are ready to roll!

I hope this post was of use to you, and of course, I’m open to suggestions. Please correct me if I made wrong assumptions, or you have improvements.

Happy Database’ing!

About GemsOfProgramming

Beeing a previously enthusiastic Java programmer, I rolled into the Oracle Database Administration world. It turned out I got a knack for this, and since approx. 2000 I'm a full time DBA. My experiences touches lot of Oracle products like Forms and Reports 9/10, JDAPI, Application Server, Weblogic Fusion and of course: Oracle Enterprise Databases, JavaFX, Swing and other Java components.
This entry was posted in Databases, Technical Stuff and tagged , , . Bookmark the permalink.

190 Responses to Installing Oracle 12c on Ubuntu 12.04 (64 bit)..a hard journey, but it’s worth it!

  1. rcsurya says:

    This really nice tutorial. I am able to install the oracle using this manual. did not find any difficulty.

  2. LargeDacshund says:

    GOP: I owe you a debt of gratitude. thank you so much for this tutorial. I was trying to install 12c on debian, and, as a noob, had no clue about that make error. you pointed me in the right direction to handle the peculiar errors on my setup.

    you’re making the world a better place. thanks,

  3. Moshe says:

    I follow this steps and now my server is installed. Thanks a lot!!!!!

  4. b4ptxbaptx says:

    Thanks, your tutorial looks crazy but now I’m running Oracle 12g on Ubuntu 13.04! I was stuck a week with these errors and an incomplete installation. I’ve followed original tutorials for Oracle Linux http://www.oracle-base.com/articles/12c/oracle-db-12cr1-installation-on-oracle-linux-6.php and alternatives for Ubuntu but with older Oracle 11g http://www.makina-corpus.org/blog/howto-install-oracle-11g-ubuntu-linux-1204-precise-pangolin-64bits. Now I can successfully connect to sqlplus using “system” user and the password specified at install. PS: I didn’t have any lib not found when using ldd, maybe beacause I did export LD_LIBRARY_PATH=$ORACLE_HOME/lib before install. You article is very new, I found it my mistake when searching “undefined reference to symbol ‘ztucxtb'” on Google 🙂

  5. narendra says:

    really helpfull..thank you thank you very much

  6. abderrahmane says:

    Hello,
    First of all thank you for your amazing work, i’m actually stuck at the installation launch step, when ever i try executing runInstall i get this :
    oracle@abdou-pc:/home/abdou/Downloads/database$ bash ./runInstaller
    Source location is incomplete. Make sure you have downloaded and extracted
    all the relevant archives.
    even though my files are complete (I compared the checksums ) each zip file was extracted in a directory then i merged them.
    thanks

    • Hi,

      You might want to leave out the “bash” part, so:

      oracle@abdou-pc:/home/abdou/Downloads/database$ ./runInstaller

      This will be enough, when you add “bash” in front of this, you spawn a new process of bash were you try to run the installation..Not going to work as you have noticed..

      Success!!

      • abdou says:

        thank you, I restarted the entire process, it installed without any errors (thanks to your amazing work) now i can’t get sql developer to connect to the database, i’m getting this error :Status : Failure -Test failed: IO Error: The Network Adapter could not establish the connection

      • This might be because the listener is not yet configured. Did you run the “netca” command on the server? Configured the listener and naming convention (tns names and eazy connect).

        Can you tnsping the database? Make sure you have set the correct oracle environment settings..

      • abdou says:

        hum, yeah i kidna guessed it had something to do with the service not being up or the listener not running but couldn’t manage to find a good tutorial … ( i haven’t done much more than what your tutorial said to do )

      • abdou says:

        i tried running netca (couldn’t run the actual command so i executed the bin) and i get this :
        oracle@abdou-pc:/oracle/base/dbhome_1/bin$ ./netca

        Oracle Net Services Configuration:
        No protocol specified
        No protocol specified
        Error: null

        and here is the log :
        http://pastebin.com/ir4ecG3u

      • Hi,

        I take a look at this later today, perhaps I can find out something to help. However, taken from your comment regarding launching the netca, it seems the oracle environment is not set correctly. Try setting the settings below, and re-execute the netca again:

        export ORACLE_HOME=/srv/oracle/base/db_home01
        export ORACLE_UNQNAME=ORACLE_SID
        export ORACLE_SID=ORACLE_SID
        export PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/java/bin:/srv/oracle/base/db_home01/bin

      • abdou says:

        i changed the path a little bitn got the netca command to execute directly, but still when executing it, i get the same result :
        oracle@abdou-pc:/oracle/base/dbhome_1/bin$ netca

        Oracle Net Services Configuration:
        No protocol specified
        No protocol specified
        Error: null
        Check the trace file for details: /oracle/base/cfgtoollogs/netca/trace_OraDB12Home1-1311241PM4104.log
        Oracle Net Services configuration failed. The exit code is 1

      • abdou says:

        Ouuuuuff , did it ! it works ! , actually there were to many things all messed up, path variables, xhost config, SID config, now i’m connected via sqldeveloper, man Thank very freaking much =) !

      • Glad it worked out for you!

        Have fun with the new release, it is really worth it, and from what I can see from here: you already gained experience!

  7. Pingback: How to run Oracle 12c on Ubuntu 12.04? | Ubuntu InfoUbuntu Info

  8. Aditya says:

    Very nice tutorial, thank you

  9. Gems says:

    how to create ……..oracle$/tmp/Oracle12c/database$ ./runInstaller

    plz rply me very ugent

    • I’m not sure if I understand what you are trying to ask..It seems to me you are trying to run the installer..If you are asking where this is, you should make you have the correct installation files and unpacked all of these. The “runInstaller” is delivered by Oracle.

      Regarding the urgent part: I don’t think a blog is the place to urge people on. I can’t be a personal assistent to help you with this. Altough if you can provide me a remote desktop connection, I’m sure we can work out something with regarding my fee 😉

  10. Gems says:

    My os is ubuntu desktop 12.04 64bit
    plz give step by step installation .
    i am fesher n linux plz help me

    • I believe the steps are already described. Please clarify where you are stuck, and I will try to make it clear..Although I must say, if you are fresh on Linux, this exercise on installing Oracle on an unsupported OS might be a bridge to far..

  11. Very helpful. I don’t know how you had the patience to work out all the link errors. I’d have quit after one or two. Thanks for publishing this.

  12. Dhruba says:

    It was an excellent tutorial. I only faced an issue while running root.sh. I have used Ubuntu 12.04 LTS. It says /bin/awk not found. So I simply linked it with /usr/bin/awk and rest was perfectly ok.

  13. joshihardik says:

    Hi, your blog is simply awasome I have completed installation but stuck at dbca it gives me error:
    Recovery Manager failed to restore datafiles. Refer logs for details.
    could you guide me further.
    Thanks

    • Hi,
      Good to hear the information is useful. I think you have a “normal” issue like permissions or environment settings not set correctly. If you send the contents of the log file, we can take a look at where it is bailing out..

  14. Gonzalo says:

    Muchas Gracias!!…
    Felicitaciones por el excelente trabajo.
    Saludos desde Chile.
    ————————————-
    Thank you! …
    Congratulations on the excellent work.
    Greetings from Chile.

  15. Brian says:

    That helped a whole lot!!!!! Thanks! When is Oracle ever going to come up with early releases w/o installation pains?

  16. David says:

    Hi, I’m currently trying to install Oracle 12c on Linux Mint 16 (64 bits), and I’ve a weird error : INFO: /usr/bin/ld: /home/david/app/david/product/12.1.0/dbhome_1/rdbms/lib/houzi.o: référence au symbole non défini «ztcsh»
    /home/david/app/david/product/12.1.0/dbhome_1/lib/libnnz12.so: error adding symbols: DSO missing from command line , I’ve checked libnnz12.so, without any success and apparently everything is linked in that file :
    > ldd libnnz12.so
    linux-vdso.so.1 => (0x00007fffbd706000)
    libclntshcore.so.12.1 => /usr/lib/libclntshcore.so.12.1 (0x00007f5b6048e000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5b600c6000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5b5fec1000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5b5fbbd000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5b5f9a0000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f5b5f797000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f5b61110000)

    Thanking you in advance , I bet this would help some people which are encoutering that issue
    Have you any idea ?

    • David says:

      Solved by adding : -lnnz12 in ins_rdbms.mk

      1063 $(TG4PWD) : $(ALWAYS) $(TG4PWD_DEPS)
      1064 $(SILENT)$(ECHO)
      1065 $(SILENT)$(ECHO) ” – Linking $(TG4DG4)pwd utility”
      1066 $(RMF) $@
      1067 $(TG4PWD_LINKLINE) -lnnz12

      See you next issue !

  17. Milen says:

    Thank you! Great guide!

    3 small notes:
    “ln -s /usr/lib /usr/lib64” instead of “ln -s /usr/lib /usr/lib/lib64” (as above)
    2 x “Open the environment file: /oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk” instead of “…/env_…”
    (in my case) in order to run the last root scripts, have run “ln -s /usr/bin/awk /bin/awk” before

  18. mahdiiiiiii says:

    I encounter this error: ln /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/libpthread_nonshared.a

  19. baulkers says:

    brilliant instructions – it saved me hours. Thank you

  20. vinkyin says:

    Brilliant job! Thanks for putting these together

  21. $D_programmer says:

    thanks dude …. helped alot
    given full detail of installation great job ..

  22. anil raju says:

    Thanks a lot. But each time i restart the box i get a could not find the initSID.ora file error. 😦

    • Hi!

      I don’t have much information to go on, but you might want to double check your environment settings..like if the ORACLE_HOME is set correct, or the ORACLE_SID, and don’t forget to check the PATH variable to include the “$ORACLE_HOME/bin”

      hth!

  23. JvRo says:

    Hello, I had the following error, sorry if this mistranslated and to use the google translator, my English is not very good :/

    Javier-oracle @ Ubuntu :/ home / javier / Desktop / database $. / runInstaller
    You do not have sufficient permissions to access the inventory ‘/ u01/app/oraInventory’. You can not continue the installation. It is necessary that the primary user group facility is at the group owner’s inventory. Ensure that the installation user is part of the inventory owner and reboot Installer. No such file or directory

    thanks in advance

    • Hi,

      Basically the explanation you have when this error is thrown is the solution..The permissions you have on the oraInventory are not the correct ones granted to the OS user you use when running the install.

  24. Pingback: Oracle 12c Ubuntu Xen Server Setup | Silva Tech Solutions LLC

  25. JTS says:

    We are very close thanks to your brilliant instructions. Thank you very much
    Our last error is the following. Anyone else have a problem like this?

    INFO: /dbdrive/oracle/app/oracle/product/12.1.0/dbhome_2/rdbms/lib/config.o: file not recognized: File truncated

    INFO: collect2: ld returned 1 exit status

    INFO: make: *** [/dbdrive/oracle/app/oracle/product/12.1.0/dbhome_2/rdbms/lib/oracle] Error 1

    INFO: End output from spawned process.
    INFO: ———————————-
    SEVERE: oracle.sysman.oii.oiil.OiilActionException: Error in invoking target ‘irman ioracle’ of makefile ‘/dbdrive/oracle/app/oracle/product/12.1.0/dbhome_2/rdbms/lib/ins_rdbms.mk’. See ‘/dbdrive/oracle/app/oracle/product/12.1.0/dbhome_2/install/relinkActions2014-05-01_03-59-55-PM.log’ for details.
    at oracle.sysman.oii.oiis.OiisMakeDeps.invokeMakefile(OiisMakeDeps.java:537)
    at oracle.sysman.oii.oiis.OiisMakeDeps.doRelink(OiisMakeDeps.java:614)
    at oracle.sysman.oii.oiis.OiisMakeDeps.doOperation(OiisMakeDeps.java:799)
    at oracle.sysman.oii.oiis.OiisMakeDeps.main(OiisMakeDeps.java:809)

    • mjgleason says:

      I had a similar problem installing Oracle 11. The problem was that apparently Oracle’s Makefiles are not meant to be parallelized but I had a “MAKEFLAGS=-j 2” variable in my environment. To fix the problem, I did “unset MAKEFLAGS” (and also “unset CC CFLAGS”) before running the installer.

  26. Pingback: ldd - Diligent Cat

  27. tt says:

    sir, i is in your debt! thank you

  28. You’r an awesome man! I see you put a lot of effort to accomplish this article. Lots of contribution. Cause of your gratitude, I’ve successfully installed and able to run the oracle on my debian, ubuntu 12.0.4. I was almost about to surrender to use the oracle database since before I saw your article. Thanks infinite.

  29. bikash kc says:

    Sir, this guideline is very very useful for me. And I request you to help me in installing oracle forms and reports on debian wheezy also. If could please help me..!

  30. me_jonathan says:

    Sir, this guideline is very very useful for me. And I request you to help me in installing oracle forms and reports on debian wheezy also. If you could please help me..!

  31. zaghouan says:

    This really saved me! Works on Debian

  32. neurogeek says:

    Thank you so much for this information. I’m trying to install 12c on Ubuntu 14.04. After fixing the first linking error (libpthread_nonshared.a), I then get this error in the log file that you didn’t seem to encounter:

    INFO: make[1]: Entering directory `/oracle/base/dbhome_1/precomp/lib’

    INFO: Linking /oracle/base/dbhome_1/precomp/lib/proc

    INFO: /usr/bin/ld: /oracle/base/dbhome_1/lib//libnls12.a(lxhlang.o): undefined reference to symbol ‘__tls_get_addr@@GLIBC_2.3’
    //lib/x86_64-linux-gnu/ld-linux-x86-64.so.2: error adding symbols: DSO missing from command line

    INFO: collect2: error: ld returned 1 exit status

    INFO: /bin/chmod: cannot access ‘/oracle/base/dbhome_1/precomp/lib/proc’
    INFO: : No such file or directory

    Any ideas? Thanks.

  33. Attackwave says:

    Hi,

    installing on 14.04…

    I have to add the following packages:

    apt-get install lib32z1-dev libc6-dev-i386

    libc6-dev-i386: resolve libpthread_nonshared.a problem, i386 lib was not installed
    lib32z1-dev: resolve /usr/bin/ld: cannot find -lz in …ctx/lib/ins_ctx.mk

    precomp/lib/ins_precomp.mk:
    Error: /bin/chmod: Zugriff auf »/home/oracle/app/oracle/product/12.1.0/dbhome_1/precomp/lib/proc“ nicht möglich
    Fix: delete/backup ../lib/stubs folder (mv …/lib/stubs …/lib/stubs.bak)

  34. Attackwave says:

    …me again

    root scripts need awk in /bin/

    ln -s /usr/bin/awk /bin/awk

    Thanx a lot! Find this thread and now I can install 12c on 14.04.

    • Hi, sorry for the late reply, I’m glad you were able to solve this. I’m still running Ubuntu 12.10, since..we’ll, it just works 😉

      However I’m working on a blog to have Oracle 12cR1 on a Redhat 7 installation..should be a lot of fun also!

  35. Larry says:

    All hail GoP: I would never have got my 11g upgraded to 12c without this site: at my time of access at least, it was top of the search page for ‘ubuntu upgrade oracle 11g 12c’, and deservedly so.
    In my case – on a brand new Ubuntu upgrade to v14.04 LTS – I had a few occurrences of a linker error not mentioned here – “unresolved symbol: ‘__tls_get_addr@@GLIBC_2.3’ ” which I solved with the help of:
    http://gumpx.wordpress.com/tag/__tls_get_addrglibc_2-3/

    Thanks!

  36. Hi ..
    I received the pop up saying “did not meet the requirements do you want to continue” I havent had oracle11c running on my system before.. What should I do know, Press yes or no ?

  37. sivaram says:

    lI am trying harder to install though the instructions are given.. ln /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/libpthread_nonshared.a is not getting executed it is saying not a directory could you please help me out with this.

  38. goutham bommakanti says:

    Hi I am able to login with user name as “oracle” but i am unable to run the file ./runInstaller it is throwing me an error please help me out with this. It is very urgent

  39. goutham bommakanti says:

    I went on with whole procedure.. but missing seperator is the error i am getting in “ins_rdbms.mk” file

  40. ashwinrk1115 says:

    Hello there,
    It is indeed a long journey phew… I’m trying to install 12c on ubuntu, after fixing KFED_LINKLINE
    and hitting retry, its throwing an error oracle/base/dbhome_1/rdbms/lib/renamedg.. What should I do now? Please help me.

    • Ivan says:

      to fix:

      vi env_rdbms.mk

      and add “-Wl,–no-as-needed” to KFNDG_LINKLINE as show you below

      KFNDG_LINKLINE=$(LINK) $(S0MAIN) -Wl,–no-as-needed $(SSKFNDGED) $(SKFNDGPT) $(KFNDGOBJ) \
      $(LLIBCLNTSH) $(LIBGENERIC) $(DEF_OPT) $(LLIBDBTOOLS) $(LIBGENERIC) \
      $(LIBCORE) $(CSSCLNTLIBS) $(ASMCLNT_LIBS) $(LINKTTLIBS)

  41. Hi. Actually i installed Oracle before reading this post, with the help of ubuntu official site, by downloading three *.rpm files from oracle site and converting them to *.deb files using alien software, which installed int /opt directory by themselves. Now, i dont have a UI for oracle and i am able to run it on the terminal without a glitch. But, the problem now is that, we have been using mysql in my college via server-client architecture and the faculties alloted us user id and passwords. Now that i am trying to use this locally on my personal computer, i didn’t know what to enter when mysql prompts for user id and password. I searched everywhere and i could’nt find anyting helpful, but just your blog of this. So, can you please help me progress in this?

  42. Jeevan says:

    Wow. Excellent details. I hit almost all error as you described and all your solution worked well. I am really thankful to you for such a nice and detailed description.

  43. Jörg says:

    Hi,

    nice tutorial. For the newest Version *12.1.0.2* you need to adjust *env_rdbms.mk* again to fix a relink issue with ‘renamedg’. The lines must be:

    KFNDG_LINKLINE=$(LINK) $(S0MAIN) -Wl,–no-as-needed $(SSKFNDGED) $(SKFNDGPT) $(KFNDGOBJ) \
    $(LLIBCLNTSH) $(LIBGENERIC) $(DEF_OPT) $(LLIBDBTOOLS) $(LIBGENERIC) \
    $(LIBCORE) $(CSSCLNTLIBS) $(ASMCLNT_LIBS) $(LINKTTLIBS)

    like for kfod, kfed and so on.

    • ufuk sakar says:

      you need to adjust *ins_rdbms.mk*

      KFNDG_LINKLINE=$(LINK) $(S0MAIN) -Wl,–no-as-needed $(SSKFNDGED) $(SKFNDGPT) $(KFNDGOBJ) \
      $(LLIBCLNTSH) $(LIBGENERIC) $(DEF_OPT) $(LLIBDBTOOLS) $(LIBGENERIC) \
      $(LIBCORE) $(CSSCLNTLIBS) $(ASMCLNT_LIBS) $(LINKTTLIBS)

  44. Robert Willams says:

    Hi,

    I found the instructions very helpful. I had to make the following minor changes:

    root:~# ln -s /usr/lib /usr/lib/lib64
    should be changed to: root:~# ln -s /usr/lib /usr/lib64

    root:~# ln /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/libpthread_nonshared.a
    should be changed to:
    root:~# ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/libpthread_nonshared.a

    Another error happened while linking renamedg. To fix the issue I did the following:

    oracle$ vi /oracle/base/dbhome_1/rdbms/lib/ins_rdbms.mk

    Search for the lines:

    KFNDG_LINKLINE=$(LINK) $(S0MAIN) $(SSKFNDGED) $(SKFNDGPT) $(KFNDGOBJ) \
    $(LLIBCLNTSH) $(LIBGENERIC) $(DEF_OPT) $(LLIBDBTOOLS) $(LIBGENERIC) \
    $(LIBCORE) $(CSSCLNTLIBS) $(ASMCLNT_LIBS) $(LINKTTLIBS)

    Add the following:

    KFNDG_LINKLINE=$(LINK) $(S0MAIN) -Wl,–no-as-needed $(SSKFNDGED) $(SKFNDGPT) $(KFNDGOBJ) \
    $(LLIBCLNTSH) $(LIBGENERIC) $(DEF_OPT) $(LLIBDBTOOLS) $(LIBGENERIC) \
    $(LIBCORE) $(CSSCLNTLIBS) $(ASMCLNT_LIBS) $(LINKTTLIBS)

    Excellent tutorial. Thank you for your effort.

    Rob

  45. I guess the best way to thank you for this tutorial is to provide an update: using this blog as a base I was able to install Oracle 12c Enterprise Edition on Ubuntu 14.04.1. For completeness, here are the details:
    Hardware: Dell OptiPlex 790 with an i5 processor (4 cores) and 16 GB RAM
    Operating system: Ubuntu Server 14.04.1 LTS x86_64 kernel 3.13.0-34-generic
    Oracle installation: 12.1.0.2.0 Enterprise Edition.

    Some extra-notes:
    – my problems were related to some wrong dependencies that I had (the assembler -as- was not configured for a target of `x86_64-linux-gnu’ so I had to install the binutils-aarch64-linux-gnu package; I also forgot to install the libaio1 which gave me some hard times towards the end).
    – there were a couple of minor differences in the errors I got, but essentially the same linking thing…

  46. David says:

    I’m getting a different error:
    INFO: make: *** [/home/david/app/david/product/12.1.0/dbhome_1/rdbms/lib/renamedg] Error 1
    Can you help me?

  47. Robotron1000 says:

    Hi,
    I was wondering where did you find the entries that go into /etc/sysctl.conf and /etc/security/limits.conf? I went through the Oracle documentation on installing 12c on Linux but couldn’t find those anywhere.
    With regards.

    P.s. Thank you for the article. Didn’t try it out yet, but will do when I find a bit of time.

  48. You can get the software started, but don’t be surprised if you run into some weird errors. I’ve experienced some issues in the past where I had not set the memory parameters correct, and could not allocate more memory to the database from the OS. When I have the time I’ll post about this..

  49. jaehoon Lee says:

    Hi, when I install the oracle in ubuntu 12.04,
    I couldn’t solve the problem.
    The major problem is two.
    One is that I write the sentence such as
    $ su – oracle
    then I had a message right after that sentence
    -su: ulimit: open files: cannot modify limit: Operation not permitted

    Second,
    $oracle:~database$ ./runInstaller
    ./runInstaller: line 254: /opt/oracle/database/install/.oui: cannot execute binary file

    I cound’t fix that problem. Could you help me to solve that problem?

    Thanks

    • Based on the information given, it seems you do not meet the OS requirements of the Oracle Software. Make sure you adjust the OS to the specs as specified by Oracle (and the installer provides these also).

      Second: the permissions for the user who is trying to run the install are off.. Make sure you read up on the minimum requirements prior to install for this user. Or just google it, there are countless of examples out there which provide the correct user environment settings..

      Good Luck!

  50. OracleDBA says:

    Great!
    Works on Ubunt13 also, although complains over twio async libs not existing in apt-get, just leaving those out will do!

  51. Marcel says:

    Oracle should pay you for such a comprehensive installation guide. This has actually promote the use of Oracle on Ubuntu.

  52. Hi,
    GOP, can i use this guide to install 11g R2 on ubuntu 14.04 64bit?

  53. srikanth says:

    Hi GoP

    I am trying to install oracle 12.1.0.2.0 on ubuntu 14.10, facing this error

    INFO: /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/ins_rdbms.mk:1164: recipe for target ‘/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/renamedg’ failed

    INFO: make: *** [/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/renamedg] Error 1

    INFO: End output from spawned process.
    INFO: ———————————-
    INFO: Exception thrown from action: make
    Exception Name: MakefileException
    Exception String: Error in invoking target ‘all_no_orcl’ of makefile ‘/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/ins_rdbms.mk’. See ‘/u01/app/oraInventory/logs/installActions2014-12-30_08-03-31PM.log’ for details.
    Exception Severity: 1

    please help me out here, thanks in advance

    • Pawel dba says:

      For error dbhome_1/rdbms/lib/renamedg] Error 1
      change:
      KFNDG_LINKLINE=$(LINK) $(S0MAIN) $(SSKFNDGED) $(SKFNDGPT) $(KFNDGOBJ) \
      $(LLIBCLNTSH) $(LIBGENERIC) $(DEF_OPT) $(LLIBDBTOOLS) $(LIBGENERIC) \
      $(LIBCORE) $(CSSCLNTLIBS) $(ASMCLNT_LIBS) $(LINKTTLIBS)
      to:
      KFNDG_LINKLINE=$(LINK) $(S0MAIN) -Wl,–no-as-needed $(SSKFNDGED) $(SKFNDGPT) $(KFNDGOBJ) \
      $(LLIBCLNTSH) $(LIBGENERIC) $(DEF_OPT) $(LLIBDBTOOLS) $(LIBGENERIC) \
      $(LIBCORE) $(CSSCLNTLIBS) $(ASMCLNT_LIBS) $(LINKTTLIBS)

      in 12.1.0/rdbms/lib/env_rdbms.mk file

  54. INFO: Building Client Shared Libraries
    INFO: Building Client Shared Libraries
    INFO: The output of this make operation is also available at: ‘/home/aman/app/aman/product/12.1.0/dbhome_1/install/make.log’
    INFO:

    INFO: Start output from spawned process:
    INFO: ———————————-
    INFO:

    INFO: /home/aman/app/aman/product/12.1.0/dbhome_1/bin/genclntsh

    INFO: /usr/lib64/libc_nonshared.a: file not recognized: File format not recognized

    INFO: collect2: error: ld returned 1 exit status

    INFO: genclntsh: Failed to link libclntshcore.so.12.1

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

    INFO: End output from spawned process.
    INFO: ———————————-
    INFO: Exception thrown from action: make
    Exception Name: MakefileException
    Exception String: Error in invoking target ‘client_sharedlib’ of makefile ‘/home/aman/app/aman/product/12.1.0/dbhome_1/rdbms/lib/ins_rdbms.mk’. See ‘/home/aman/app/oraInventory/logs/installActions2015-01-15_01-27-46AM.log’ for details.
    Exception Severity: 1

  55. Thundor123 says:

    It’s a great post, Thank you very much!!!!….

  56. Ola Aronsson says:

    Sorry for spamming, your reply-parser screwed up my comment, making it unreadable : last attempt 🙂

    Just two… shortcuts to your lengthy informative (and overall great) help:

    -All those load lib as needed issues, as oracle fix them in a one liner like

    oracle@LeChat:/usr/share/oracle/database$ cat $ORACLE_HOME/rdbms/lib/env_rdbms.mk | sed s#”=\$(LINK) \$(OPT)”#”=\$(LINK) \$(OPT) -Wl,–no-as-needed”#g > /tmp/apa && mv /tmp/apa $ORACLE_HOME/rdbms/lib/env_rdbms.mk

    -Linking problems in the lines of

    “oracle undefined reference to `kgfocontrol'”

    $ ls -lart /usr/bin | grep gcc

    You will find it’s linked to some later version than 4.4 (in may case 4.8).
    If you have access (you probably do) to the gcc-4.4

    $ apt-cache search gcc | grep “4.4”
    cpp-4.4 – GNU C preprocessor
    gcc-4.4 – GNU C compiler
    ..
    $ cd /usr/bin
    $ apt-get install gcc-4.4
    $ echo “gcc_used_to_be_linked_to_4.8” > gcc_was_linked.txt
    $ rm /usr/bin/gcc
    $ ln -s gcc-4.4 gcc

    Then stuff started to work.

  57. Ola Aronsson says:

    Again, thanks for your excellent tutorial!

    First, in above comment I either did a mistake or it was parsed away, of course the linking flags should be double-dashed:

    --Wl,--no-as-needed
    


    and nothing else, sorry. But anyway, since I had to perform this operation on 3 laptops, Oracle 12c Enterprise Edition on Ubuntu 14.04s, I made a simple script that will basically do all for you and some more. It can be fetched at

    http://nollettnoll.net/oracle/prepareToInstallOracle.sh

    The procedure is simple, download the script, chmod +x it, either sudo or be root and run it, simply as

    $ ./prepareToInstallOracle.sh
    


    Then fetch the oracle install zips, place them in /tmp, extract them there and then do

    $ su - oracle
    $ source $HOME/.bashrc
    $ cd /tmp/database
    $ ./runInstaller
    


    Do not change the suggested base and software location! As always, the linking will fail. As it does, simple execute

    $ ./prepareToInstallOracle.sh -p
    


    and your installation should work fine upon retry, tested it at least two and a half times on Ubuntu 14.04 laptops. It also installs a boot script so oracle should be started every time you reboot.

  58. Udit says:

    Having issues with starting runinstaller. I did all thing mentioned above for installing Oracle 12c on ubuntu (x86_64). Everything looks good while verification until i start runinstaller, it fails with error as below:
    “Source location is incomplete. Make sure you have downloaded and extracted
    all the relevant archives”
    I dont know what is wrong with my approach. I think there is something missing required for my version of ubuntu.
    uname as below: 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
    thanks for your help in advance

    • Hi!

      I think it is more likely you have downloaded an incomplete or wrong version of the Oracle Software. Please try to re-download this and mind the 64/32 bit versions. As well make sure you have adequate space to store both the installation and the downloaded (uncompressed and compressed) files.

      Good luck!

  59. Udit Vardhan says:

    I am gonna try this time with moving all files to one folder instead of two separate DATABASE folders. lets see it that helps

  60. Pingback: Oracle 12c on Ubuntu 12.04 | XL-UAT

  61. proton says:

    Hi, I just want to thank you for saving my life.

  62. Pingback: Installing Oracle database 12c on Ubuntu 14.04 - TecHub

    • Most of the steps documented are applicable for Ubuntu 14. Read the comments for the one or two libs who also bail out..I have Oracle running both on Ubuntu 12 and 14. And Centos..but that is different story.. 😉

  63. Pingback: Install Oracle 12c on Ubuntu Ec2 instance | sunjialei

  64. candlelighte says:

    Please every think is ok, untill i want to use sqlplus command ! it doesn’t work, console says that the command dont exist !

  65. Vinh Nguyen says:

    This is a perfect tutorial. I’ve got it installed on my Ubuntu 12.04. It would be really nice to update with the comments.

  66. That’s really neat.I used it twice to follow along for installtion Oracle 12c on Ubuntu 12.04 -I don’t get all of the linker errors you did which is a goodness but the fixes are the same thruought, naturally. the very first library name error ln -s /usr/lib /usr/lib/lib64 was slightly different for me. my usr/lib64 symlink was broken. I had to fix that. Thanks

  67. oops I mean Ubuntu 14.04

  68. Hi, Mr. Gems

    First of all, I must say your tutorial was very helpful. Thanks 🙂

    I found a problem, though. I am trying to install in silent mode and manage to fix all but 4 errors. Threre were in ‘/u01/app/oraInventory/logs/silentInstall2015-07-18_11-20-38AM.log:

    Error in invoking target ‘all_no_orcl’ of makefile ‘…/rdbms/lib/ins_rdbms.mk’. …
    Error in invoking target ‘irman ioracle’ of makefile ‘…/rdbms/lib/ins_rdbms.mk’. …
    Error in invoking target ‘utilities’ of makefile ‘…/rdbms/lib/ins_rdbms.mk’. …
    Error in invoking target ‘install’ of makefile ‘…/network/lib/ins_net_server.mk’. …

    The problem is: running silently, the installation goes on until the end, so I do not have the chance of editing both env_rdbms.mk and ins_rdbms.mk, because they are being rebuildt

    So, is it possible to do some relink after “succesful” installation?

    I found this weird option in runInstaller:

    -relink
    For performing relink actions on the oracle home
    Usage: -relink -maketargetsxml [-makedepsxml ] [name=value]

    Have you already used it? Would it help me to fix my silent installation?

    Thanks in advance, and, again, congratulations for your awesome job

    Eduardo Morelli
    (from Brazil)

    • I did not attempt to do this with a silent install, although it sounds like fun, and I see the advantages. But I’m fairly sure this would work. two approaches are possible:

      1) Apply all the known and found solutions on forehand and run the installer with the “patched” files.
      2) Run the silent installer to completion, and re-compile the missed ones. Although this is more risky..

      When I find the time, I’ll do some experimentation, Thx for this approach!

      • Actually, I managed to solve the problem using something similar. As you said, I have applied all the known fixes on forehound. Then, I manually linked broken modules:

        cd $ORACLE_HOME/rdbms/lib/
        make -f ins_rdbms.mk ioracle
        make -f ins_net_server.mk install

        The last one was very intersesting. Any attempt to run lsnrctl was simply ignored untli I applied this magical make.

        It seems to be allright…

        Best regards,
        Eduardo Morelli

  69. Anonymous says:

    Hello,
    Thanks for the detailed tutorial, but I’m stuck at :
    Error in invoking target ‘install’ of makefile ‘../network/lib/ins_net_server.mk’.
    and the solution you mentioned is somehow not working, do you have any idea what could work…?

  70. BigMatt says:

    I’ve tried multiple guides, and I thank you in advance for yours and any help you can provide. I am at the step of running the oracle installer (./runInstaller) and I have tried to do so in term and xterm. In xterm I tried setting the display as export DISPLAY=localhost:0.0.

    Every time I try and run the installer I get the error that it has failed to check for 256 colors, and if I continue the installer fails to load. I have limited linux experience (obviosuly) and have not found a way to get passed this using your tutorial and several others.

    Can you tell me like explaining it to a two year old – what did you use to launch the installer and what steps were required?

    Thanks!

  71. Pat says:

    Install of 12.1.0.2 successful.
    Thanks, You saved my day. I just had to add the KFNDG_LINKLINE mod explained in the comment. Note: creation of script in DBCA is failing if choosen.

  72. Calin says:

    Very helpful – installed it on Debian 8 (jessie)
    Thanks a lot!

  73. Brandon says:

    Great tutorial, but I ran into this error during the Oracle Database Configuration Assistant:

    “Error while executing “/home/brandon/app/brandon/product/12.1.0/dbhome_1/rdbms/admin/dbmssml.sql”. Refer to “/home/brandon/app/brandon/cfgtoolings/dbca/orcl/dbmssml0.log” for more details. Error in Process: /home/brandon/app/brandon/product/12.1.0/dbhome_1/perl/bin/perl”

    I opened dbmssml0.log and it was empty. I came across another thread recommending me to link dbhome_1/perl/bin/perl to the systems default perl file, but this didn’t work either:

    cd /u01/app/oracle/product/12.1.0/dbhome_1/perl/bin/
    mv perl perl.bak
    ln -s /usr/bin/perl

    Any suggestions?

    I’m installing Oracle 12c on Ubuntu 15.04 by the way.

  74. Ashraf says:

    Hi, The tutorial was very helpful. I struggled a bit but managed to get it right at the end. Could you please suggest on the following : After installation I failed to start the database automatically. I have my database named NYN and container database NYNN. Since it failed to start automatically, I managed to start it this way:
    $ export ORACLE_HOME=/oracle/base/product/12.1.0.dbhome_1
    $ export PATH=$PATH:$ORACLE_HOME/bin
    $ export ORACLE_SID=nynn
    $ sqlplus / as sysdba
    SQL> startup pfile=/oracle/base/admin/nyn/pfile/init.ora.8222015142940

    And then it works as expected.
    Could you please suggest how can I automate the startup task?

  75. Dave says:

    An absolute gem of a post you got there !

    Being new to the DBA arena this helped me install Oracle Database 12c and also learned how to debug and resolve future installation issues.

    PS: Installed Oracle 12C on Elementary OS 😉

  76. Pingback: Ubuntu:Installing Oracle database 12c on Ubuntu 14.04 – Ubuntu Linux Questions

  77. Radu says:

    Great tutorial !!!!

  78. Vicente says:

    Incredible, what a great job.

  79. Andy says:

    Great work, thank you so much, but there is one part where you have a typo -Wl,–no-as-needed -> -Wl,–no-as-needed

  80. maurorufino86 says:

    Epic!. Thank you very much! Regards.

  81. Carlos Alberto Lopez Garcia says:

    Great, the ultimiate guide!

  82. Krishna says:

    Thanks a lot for the guide. Is the guide same for ORACLE 11gR2? Should I need to make any changes for it?

  83. Pingback: Softwareentwicklung Jacek Kempski Oracle 12c on Ubuntu 16.04 - Softwareentwicklung Jacek Kempski

  84. Karan says:

    how to use sqldeveloper and how to write a simple java program using this database?

    • Just download the sqldeveloper software from download.oracle.com. Also there is more information on how to connect to the database, but the most simple way is to create a class file, and use this code (untested!):

      import java.sql.Connection;
      import java.sql.SQLException;
      import org.apache.log4j.Logger;
      import oracle.jdbc.pool.OracleDataSource;

      public class DBConnections {

      private static Logger log=Logger.getLogger(DBConnections.class);
      private static Connection connectionSourceDB;
      private static String username=”user”;
      private static String password=”password”;
      private static String url=””;

      public static Connection setupConnectionSourceDB(String sid,String sourceServer) {
      try {
      OracleDataSource ods2 = new OracleDataSource();
      url = “jdbc:oracle:thin:@”+sourceServer+”:1521/”+sid;
      ods2.setURL(url);
      ods2.setUser(username);
      ods2.setPassword(password);
      connectionSourceDB=ods2.getConnection();
      log.debug(“Connected to “+ sourceServer + ” “+ sid);
      } catch (SQLException ex) {
      // Handle any errors
      log.error(“DBConnection SQLException: ” + ex.getMessage());
      log.error(“DBConnection SQLState: ” + ex.getSQLState());
      log.error(“DBConnection VendorError: ” + ex.getErrorCode());
      }
      return(connectionSourceDB);
      }
      }

  85. hiep says:

    Very, very useful and U got me to dig into it and after a half day then oracle 12c running on Ubuntu. Thanks 🙂
    Regards Hiep

  86. jkstill says:

    Thanks, this saved me a bunch of work – just trying to setup a full client on Linux Mint, which now works.

  87. Jijil says:

    Just want to add one more line… I faced the same but your blog helped alot..
    /u01/app/oracle/product/12.1.0/dbhome_1/rdbms/lib/env_rdbms.mk file.
    Open /u01/app/oracle/product/12.1.0/dbhome_1/rdbms/lib/env_rdbms.mk and search for EXTPROC_LINKLINE.
    You will see following lines in the file.
    Now change it to as follows. Note that you need to add

    -Wl,–no-as-needed

  88. Awesome awesome awesome…this helped me a lot after struggling with other tutorials lacking solutions. Thanks man, you’re the boss!

  89. Gery says:

    nvm ,it just my typo.already fixed lol

  90. Andreas says:

    Hi, thank you for the great walk through…
    I have installed Oracle Database 12c Release 1 on Debian 8 x64. When the installer complains that it cannot find libpthread_nonshared.a it was sufficient for me to execute sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
    The installer continued without any errors.

    • Hi! This is indeed a quick solution, which I also apply in dedicated VMs, but it is a system wide setting, which some readers might not to be willing to do..there are more ways to reach Rome, as they say!

      Thanks for the feedback! Appreciated!

      • Andreas says:

        Ah, ok. I just saw that you first link the whole /usr/lib to /usr/lib64 which means that the non-x64 libs are found in /usr/lib64 (which is expected to contain x64 libs), right?

        What confuses me now is, that libclntsh.so.12.1, libclntshcore.so.12.1 and libocrutl12.so which are both contained in dbhome_1/lib// are not contained in /usr/lib64 but the compiler does not complain that it can not find them. Furthermore, why is it no longer necessary to edit the env_rdbms.mk and ins_rdbms.mk? I just linked /usr/lib/x86_64-linux-gnu to /usr/lib64. I did not link the libs from dbhome_1/lib to /usr/lib64.
        Can you explain this? I do not have enough knwoledge about those linux stuff 😉

  91. Gery says:

    bro when im already finished following your instalation step .im trying to run sqlplus on terminal .but it said command not found . whats the proble ?

  92. Siqueira says:

    I followed this tutorial to install the Oracle 12c on Ubuntu 14.04.
    I got this error:

    error invoking target “install” of makefile ”/u01/app/oracle/product/12.2.0/dbhome_1/plsql/lib/ins_plsql.mk”. Consulte ”/u01/app/oraInventory/logs/installActions2017-03-29_06-56-36PM.log”

    Someone has a clue of how to solve it.

    Thanks in advance!!

    • Hi, If I’m not mistaken, somewhere in the log you should see around the time/line of the error message some clue as of WHY the error occurred..The reason is in the log file..

      • As I resolved this issue:-
        1. Open file YOUR_INSTALLATION_PATH/dbhome_1/plsql/lib/env_plsql.mk
        2. Find this line:
        LDFLAGS=-o $@ $(LDOBJSZ) $(LDPLATFORMFLAGS) $(LDPATHFLAG)$(PRODLIBHOME) $(LDPATHFLAG)$(LIBHOME) $(LDSTUBLIBS)

        3. And Modify to:
        LDFLAGS=-o $@ $(LDOBJSZ) $(LDPLATFORMFLAGS) $(LDPATHFLAG)$(PRODLIBHOME) $(LDPATHFLAG)$(LIBHOME) -Wl,–no-as-needed $(LDSTUBLIBS)

        4. Push “Retry” button in installation window

      • Thank you for this admission! This certainly helps others also to install the software..

  93. Pingback: Oracle 12c Ubuntu Xen Server Setup – Silva Tech

  94. The O says:

    Dude, you rock!!
    Thanks for this post!!!
    Would not have gotten Oracle 12.1.0.1.0 installed on my CentOS Linux 7.4 VM.

  95. Pingback: install oracle 12 on ubuntu – shengli

  96. If we use 12102 after all required RPMs are in place then we do not see this error:)

    • good to hear! At the time of creation of this document, not all libs where at the level they are now, so this makes in a way sense..Good to know it gets easier to install this great piece of software!

  97. Heiner Chale says:

    Thanks a lot. Your tutorial helped me so much.
    Now i have Oracle12c work in mi local computer.
    I has a problem when a try to connect from other computer, but i fix it change localhost for the ip given by the network, in the listener.ora y el tnsnames.ora
    I like yous jokes 😛

  98. Thank you! It is the most complete guide!
    But I am looking to do it in oracle 18c and the ORAPWD error is resisted … 😦

    • ah, Oracle 18..yes, although it’s a relabelled 12c version, it does have some quirks. I need to create a new version of this document with Oracle 18 and find out where…when time permits, I’ll do a new version. Currently I’m working on getting the whole 11g to 12c migration documentation online.. 😉

  99. jkstill says:

    There is an alternative: do not install SQL Libraries, install Docker instead.
    I already have 11.2 and 12.1 libraries installed on my Linux Mint workstation.
    What I wanted to do was install 12.2.

    Can’t be done with the other libs installed.

    So instead I used docker images. Once completed I cannot tell the difference between using docker and sqlplus. And it is as fast as sqlplus natively.

    Here a two examples I wrote on my employers blog of creating docker images to replace sqlplus docker images for 12.2 and 18c.

    https://blog.pythian.com/how-to-use-oracle-instant-client-docker-images/

    https://blog.pythian.com/how-to-create-an-oracle-18c-client-image-in-docker/

    The 18c method is preferred IMO, as the Oracle bits are more easily installed.

  100. mrdemolay says:

    By far the best walkthrough available. Is also relevant for Ubuntu 18.04

  101. Anil says:

    Hello everyone,
    I had similar linking issue on SLES (SUSE) 12 SP2 while installing oracle 12.1.0.2, because of missing OS packages. After installing below OS packages I did clean deinstall and reinstalled oracle 12c, able to complete without any issues. Hope this help with same configurations.

    binutils-2.25.0-13.1 already installed
    gcc-4.8-6.189 installed
    gcc48-4.8.5-24.1 installed
    glibc-2.19-31.9 already installed
    glibc-32bit-2.19-31.9 already installed
    glibc-devel-2.19-31.9.x86_64 already installed
    glibc-devel-32bit-2.19-31.9.x86_64 already installed
    mksh-50-2.13 already installed
    libaio1-0.3.109-17.15 already installed
    libaio-devel-0.3.109-17.15 installed
    libcap1-1.10-59.61 already installed
    libstdc++48-devel-4.8.5-24.1.x86_64 installed
    libstdc++48-devel-32bit-4.8.5-24.1.x86_64 installed
    libstdc++6-5.2.1+r226025-4.1.x86_64 already installed
    libstdc++6-32bit-5.2.1+r226025-4.1.x86_64 already installed
    libstdc++-devel-4.8-6.189.x86_64 installed
    libstdc++-devel-32bit-4.8-6.189.x86_64 installed
    libgcc_s1-5.2.1+r226025-4.1.x86_64 already installed
    libgcc_s1-32bit-5.2.1+r226025-4.1.x86_64 already installed
    make-4.0-4.1.x86_64 already installed
    sysstat-10.2.1-3.1.x86_64 already installed
    xorg-x11-driver-video-7.6_1-14.30.x86_64 installed
    xorg-x11-server-7.6_1.15.2-36.21.x86_64 already installed
    xorg-x11-essentials-7.6_1-14.17.noarch installed
    xorg-x11-Xvnc-1.4.3-7.2.x86_64 installed
    xorg-x11-fonts-core-7.6-29.45.noarch already installed
    xorg-x11-7.6_1-14.17.noarch installed
    xorg-x11-server-extra-7.6_1.15.2-36.21.x86_64 installed
    xorg-x11-libs-7.6-45.14.noarch installed
    xorg-x11-fonts-7.6-29.45.noarch installed

  102. Pingback: Oracle 12c on Ubuntu 12.04

Leave a reply to GemsOfProgramming Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.