Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Wiki

The Oracle Database (commonly referred to as Oracle RDBMS or simply as Oracle) is an object-relational database management system produced and marketed by Oracle Corporation.

Official Website www.oracle.com

Download Link www.oracle.com/technetwork/database/enterprise-edition/downloads

Operating System Version : Ubuntu Desktop 12.04.4 64-bit
Oracle Database Version  : Database 12c Release 1 Standard Edition, Standard Edition One, and Enterprise Edition (12.1.0.1.0)

Original author of this article 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@ubuntu:~# 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@ubuntu:~# addgroup oinstall
root@ubuntu:~# addgroup dba
root@ubuntu:~# useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle
root@ubuntu:~# mkdir /home/oracle
root@ubuntu:~# chown -R oracle:dba /home/oracle

Create and prepare location to install the oracle binaries

root@ubuntu:~# mkdir -p /oracle
root@ubuntu:~# chown -R oracle:dba /oracle

Edit and add to the sysctl.conf

root@ubuntu:~# gedit /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@ubuntu:~# sysctl -p

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

root@ubuntu:~# gedit /etc/security/limits.conf
#Oracle 12c
oracle soft nproc 2048
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

Edit /etc/sudoers file, and modify

# User privilege specification
root    ALL=(ALL:ALL) ALL

to

# User privilege specification
root    ALL=(ALL:ALL) ALL
oracle  ALL=(ALL:ALL) ALL

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@ubuntu:~$ cd /tmp/Oracle12c/database
oracle@ubuntu:/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 3813 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2014-04-04_07-51-39PM. Please wait ...

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

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

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Choose whether you like to be spammed by OTN. I choose not to. Press Next.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

I'm pretty sure about this, so press Yes.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

This is not a test run for patching, so for now I choose to skip software updates (seems to be the default, anyway). Press Next.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

This 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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Choose 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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

A single installation will do for now. Press Next.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

I prefer English, so I press Next.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Select the option most applicable here, I choose Enterprise so I get to test all the components to my hearts delight! Press Next.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Enter 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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Enter 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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Select the preferred groups, I keep everything on the "dba" group, since the oracle user is taking care of all the Oracle stuff. Press Next.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Check the configuration parameters, edit where necessary. When done, press Install. The PREPARE phase should not give much issues..not at all actually. The 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 ...

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

The 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/installActions2014-04-05_08-51-51PM.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.

oracle@ubuntu:~$ tail -f /oracle/oraInventory/logs/installActions2014-04-05_08-51-51PM.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/installActions2014-04-05_08-51-51PM.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@ubuntu:~# locate libpthread_nonshared
/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@ubuntu:~# mkdir /usr/lib64
root@ubuntu:~# ln -s /usr/lib /usr/lib/lib64
root@ubuntu:~# 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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Again: 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/installActions2014-04-05_08-51-51PM.log' for details.
Exception Severity: 1

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

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

root@ubuntu:~# ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64
root@ubuntu:~# ls -l /usr/lib64/libc_nonshared.a
lrwxrwxrwx 1 root root 42 Apr  4 20:11 /usr/lib64/libc_nonshared.a -> /usr/lib/x86_64-linux-gnu/libc_nonshared.a

Now: hit the "retry" button of the installer. The installer should continue for a bit with the linking part..until...

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Let'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/installActions2014-04-05_08-51-51PM.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@ubuntu:~$ cd /oracle/base/dbhome_1/lib/
oracle@ubuntu:/oracle/base/dbhome_1/lib$ ldd libnnz12.so
    linux-vdso.so.1 =>  (0x00007fff5dbc5000)
    libclntshcore.so.12.1 => not found
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f38629f5000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f38634dd000)

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@ubuntu:~# ln -s /oracle/base/dbhome_1/lib/libclntshcore.so.12.1 /usr/lib/
root@ubuntu:~# ls -l /usr/lib/libclntshcore.so.12.1
lrwxrwxrwx 1 root root 47 Apr  4 20:13 /usr/lib/libclntshcore.so.12.1 -> /oracle/base/dbhome_1/lib/libclntshcore.so.12.1

Check if the linker can resolve the library

oracle@ubuntu:~$ ldd /oracle/base/dbhome_1/lib/libnnz12.so
    linux-vdso.so.1 =>  (0x00007fffaf748000)
    libclntshcore.so.12.1 => /usr/lib/libclntshcore.so.12.1 (0x00007fe059479000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe0590b9000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe058eb4000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe058bb8000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe05899b000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fe058792000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fe05a0f1000)

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@ubuntu:~$ gedit /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. 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/installActions2014-04-05_08-51-51PM.log' for details.
Exception Severity: 1

Let's see

INFO: /usr/bin/ld: /oracle/base/dbhome_1/lib//libagtsh.so: undefined

A different library..Let's investigate and fix

oracle@ubuntu:~$ 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@ubuntu:~# ln -s /oracle/base/dbhome_1/lib/libclntsh.so.12.1 /usr/lib
root@ubuntu:~# ls -l /usr/lib/libclntsh.so.12.1
lrwxrwxrwx 1 root root 47 Apr  4 20:13 /usr/lib/libclntsh.so.12.1 -> /oracle/base/dbhome_1/lib/libclntsh.so.12.1

Check if this did the trick

oracle@ubutu:~$ 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@ubuntu:~$ gedit /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/env_rdbms.mk

oracle@ubuntu:~$ gedit /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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Again!? 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/installActions2014-04-05_08-51-51PM.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@ubuntu:~$ gedit /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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

And 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/installActions2014-04-05_08-51-51PM.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@ubuntu:~$ gedit /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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

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/installActions2014-04-05_08-51-51PM.log' for details.
Exception Severity: 1

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

oracle@ubuntu:~$ gedit /oracle/base/dbhome_1/rdbms/lib/env_rdbms.mk

Search for the lines

AMDU_LINKLINE=$(LINK) $(S0MAIN) $(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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Check, 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/installActions2014-04-05_08-51-51PM.log' for details.
Exception Severity: 1

ah, KFED..Also not dynamic.

oracle@ubuntu~$ gedit /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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Yep...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/installActions2014-04-05_08-51-51PM.log' for details.
Exception Severity: 1

The fix is known by now, open the make file

oracle@ubuntu:~$ gedit /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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Yes, 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/installActions2014-04-05_08-51-51PM.log' for details.
Exception Severity: 1

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

oracle@ubuntu:~$ gedit /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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Yes, 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/installActions2014-04-05_08-51-51PM.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@ubuntu:~$ gedit /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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

And 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/installActions2014-04-05_08-51-51PM.log' for details.
Exception Severity: 1

And edit the make file to get the compilers satisfaction

oracle@ubuntu:~$ gedit /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@ubuntu:~$ gedit /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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Almost 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/installActions2014-04-05_08-51-51PM.log' for details.
Exception Severity: 1

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

oracle@ubuntu:~$ gedit /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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Yes, 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/installActions2014-04-05_08-51-51PM.log' for details.
Exception Severity: 1

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

Fix it like this

oracle@ubuntu:~$ 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@ubuntu:~# ln -s /oracle/base/dbhome_1/lib//libocrutl12.so /usr/lib
root@ubuntu:~# 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@ubuntu:~$ gedit /oracle/base/dbhome_1/rdbms/lib/env_rdbms.mk

Find out

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.
Wait,WAIT!! ... Is it for real!? YES! We are PAST THE LINKER!! Now let the installer humm along..

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

AH! This looks familiar...well..let's just do this..

Execute the scripts AS ROOT

root@ubuntu:~# /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@ubuntu:~# /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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Indeed...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

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

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Press Next.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

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

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

A General purpose db with samples: perfect! Press Next.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Due to lack of OEM Cloud…we stick to the EM Database express (also VERY nice to play with!)

Press Next.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

One ring to rule them all…erhm..password that is..will do..Press Next after making the adjustments.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

One listener will suffice for now..Press Next.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Just 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.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Yes, we love the examples…and we do need some data to play and display with..Press Next.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

I can live with these settings, and we change them later anyway..so press Next.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Hmm, yes, please create a template for future reference, and yes, please create the database. Click the options and press Next.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Check the settings…and press Finish (the moment of truth!)..

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Almost then...Click the pop-up..Press OK.
The DBCA gets going..

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

And finishes! Note down this information and press OK.

Install Oracle Database 12c on Ubuntu Desktop 12.04 LTS

Press Close.

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

A small test is, of course, mandatory

oracle@ubuntu:~$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Fir Apr 4 21:18:00 2014

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=oraclepdb
oracle$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Fir Apr 4 21:18:00 2014
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
----------------
oracledb

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 Fir Apr 4 21:18:00 2014

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

connected to target database: ORACLEDB (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!

0.00 avg. rating (0% score) - 0 votes