Issues installing (and on Linux 7 (RHEL7 and OEL7)

REHL 7 and Oracle Linux 7 was not released when Oracle database came out, so the installer does give some issues in the pre-requisites and when installing the software. I advice to do a software only installation first, because of an issue that you will need to fix with a patch after software installation, but before creating a database.

These issues popped-up when I was installing a database on RHEL7 (not a Certified product combination!), but the solutions given for worked for it as well:

  • elfutils-libelf-devel package missing;
  • compat-libstdc++ package missing;
  • pdksh package missing;
  • “Error in invoking target ‘agent nmhs’ of makefile” when installing.
    • This one also counts for installing Oracle Fusion Middleware.

Continue reading

Direct NFS, configuring and network considerations in practise

Oracle Direct NFS (dNFS for short) is an NFS Client functionality integrated directly in the Oracle database software, optimizing the I/O (multi)path to your NFS storage without the overhead of the OS client/kernel software.

In this blog post I’ll describe network considerations, configurations and problems I have encountered during set-ups I have done.

dNFS uses two kinds of NFS mounts, the OS mount of NFS (also referred to as kernel NFS of kNFS) and, of course, Oracle’s database NFS mount, Direct NFS or dNFS.

According to [Direct NFS: FAQ (Doc ID 954425.1)] and [How to configure DNFS to use multiple IPs (Doc ID 1552831.1)], an kNFS mount is needed, although Oracle also claims it will also work on platforms that don’t natively support NFS, e.g. Windows… [Oracle Database 11g Direct NFS Client White Paper] (I don’t know how yet…).

Because dNFS implements multipath I/O internally, these is no need for bonding the interfaces to storage via active-backup or Link Aggregation. However, it’s good practice to bond the OS kNFS connection:

1 - eth0 -\
           - bond0 - OS / kNFS
2 - eth1 -/
3 - eth2 --------- - dNFS path 1
4 - eth3 --------- - dNFS path 2

Above schematic shows [How to configure DNFS to use multiple IPs (Doc ID 1552831.1)]:
“A good solution could be to use bonded NICs (…) to perform the mount and then use unbonded NICs via dNFS for the performance critical path.” Continue reading

Remove Oracle Database Options with chopt in 12c

In 10g and 11g Enterprise Edition, one could select which options to install or not to install during the installation process (excl. the 10g ‘custom database’ option, you would get partioning, OLAP and rat). In 12g, one is not able to choose during install anymore, you will get all the options and they must be removed afterwards. Remove / disable them after installing the database software (only), but before creating databases.

The best way to do this is using the ‘chopt’ tool, or when the option is not available, the Oracle Universal Installer must most likely be used. It’s available in Windows and Linux. When using Windows, one can also rename the .dll’s which ‘enable’ the options. It will NOT remove the objects from the database! Continue reading

oracle.cluster.verification.VerificationException: [hostname]: [hostname]

A couple of days ago I did a new install of the Oracle Database Software (on a Virtual Machine) and it kept failing. I got some oracle.cluster.verification.VerificationException error, but I could not get more information from the logs. Usually it’s a bit more detailed after the colon, but this time it just said: [hostname]: [hostname]. Continue reading

Partition pruning fails when using functions: use virtual column partitioning

Using partitions may decrease search time when searching through a lot of data from minutes to seconds, from hours to minutes. Storing information partitioned per month/year and retrieving it knowing which month/year you want from millions of records is more efficient than an index on all those months and years. Unfortunately changing to partitions afterwards almost always needs application changes, (I actually never tried an sql_profile…).

When looking for a solution using partitioning, I came across another problem. They were using a function in the one and only predicate in the query and the fact is that when a database uses partitioning for storing data, using a function on the partitioned column will the optimizer searching all data, not the partition. Understandable, because with the function you are searching for derived values, not the actual values in the partition. Oracle must search all the partitions and can not ‘prune’ the partitions. Determining and using a partition is called Partition Pruning.

The solution to be used here is called Virtual Column Partitioning and as a coincidence and nice extra they didn’t even had to change the application! Continue reading


I knew in Oracle 11g with Automatic Memory Management (AMM), the database was able to give unused memory back to the OS, controlled by MEMORY_TARGET and MEMORY_MAX_TARGET.

This mechanism is present in 11g since day 1 (in 2007), but I never actually played with it.


The Oracle documents state the following:

MEMORY_TARGET specifies the Oracle system-wide usable memory.
MEMORY_MAX_TARGET (…) decide on a maximum amount of memory that you would want to allocate to the database for the foreseeable future.

So my guess is, MEMORY_MAX_TARGET (static) is the maximum you can set MEMORY_TARGET (dynamic) to. A couple of days ago, I wanted to experiment a bit with these memory settings.

Continue reading

Oracle Database 11g Release 2 for Windows released!

They have finally arrived, the Windows 64 and 32 bit versions of Oracle 11gR2.

Download Oracle Database 11g Release 2 for Windows

The 64 bit version was released a bit earlier, so I was hoping the 32 bit version would not come… Why do we want the 32 bit versions? Older systems? Ancient systems! Why…?!

Now I don’t have an excuse to update my almost 10 years old Windows XP OS (running on 64bit hardware) to a much nicer Windows 7 64 bit. The only excuse now is that I could use 600+ megs of memory… enough to run that XP OS virtually!