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
I’m talking about the ‘third’ field in the database entries. Field number three. Which indicates there could be a fourth, fifth etc… right?
A customer where I came (who went from AIX to Linux), who had interpreted this comment and therefore expanded the oratab with an extra column, to datapump the database (y/n).
When I shut down the databases, there was some unexpected behaviour when I invoked dbshut… Strange, but the extra (last) field ‘for datapump’ was read, not the third!
SOLVED: this issue is solved in Linux 6.4 (kernel: 2.6.39-400.17.1.el6uek and 2.6.32-358.el6).
A single entry in /etc/fstab like [tmpfs /dev/shm tmpfs size=3g 0 0] now works as it should!
There is a bug in Red Hat Linux 6 and Oracle Enterprise Linux 6 (UEK and RHEL-kernel) and probably all other Red Hat 6 related Linux Distro’s.
When you need more memory for SGA/PGA when using MEMORY_MAX_TARGET, you need to resize /dev/shm. By default this is 50% of total memory and Oracle tells you to add the following to /etc/fstab, ‘mounting’ the /dev/shm twice (?):
tmpfs /dev/shm tmpfs size=3g 0 0
IMPORTANT NOTE: make sure the first field (fs_spec) ‘shmfs’ or ‘tmpfs’ gets the same name as the already existing ‘defaults’ name. So if you have a line [tmpfs /dev/shm tmpfs defaults 0 0], make sure the ‘overruled’ line also starts with ‘tmpfs’: [tmpfs /dev/shm tmpfs size=3g 0 0].
If not, a `mount -a` will un-mount (!!!) the ‘shmfs’ and remount ‘tmpfs’, this results in immediate clearing the ‘/dev/shm’ memory and all your SGA is instantly gone! Running this when databases are running, your databases with AMM will crash! This ‘issue’ is still there last time checked in Linux 7.3. In Oracle documentation about /dev/shm, the first field is ‘shmfs’ with can result in crashing databases when a `mount -a` done!
In Oracle Linux 6, it looks like the ‘oracle-validated’ package is missing, but Oracle actually renamed it to ‘oracle-rdbms-server-11gR2-preinstall.x86_64‘.
To quickly use the public yum repository of Oracle and install ‘oracle-rdbms-server-11gR2-preinstall.x86_64’:
yum clean all
yum install oracle-rdbms-server-11gR2-preinstall.x86_64
You will get the ‘latest’ build enabled.
If you don’t want this, vi /etc/yum.repos.d/public-yum-ol6.repo .
Today I ran into an add-on for FireFox which can create a wget command from a download file dialog box. First thing that came in mind was; Will this work for Metalink / My Oracle Support? Yes is does!
The add-on is called ‘cliget’ and can be downloaded here: cliget add-on for FireFox. Continue reading
I was preparing some fresh installed OEL5.5 machines for database software installation, but after running ‘yum install oracle-validated‘, the OUI did not pass the prerequisites on two packages. It seems it did not install unixODBC-devel x86_64 and libaio-devel x86_64.
Their Linux may be unbreakable, but their ‘oracle-validated’ package on the public yum server seemed to be broken. Continue reading
Many people will use the WebLogic’s NodeManager to use the start script for starting Managed Servers:
The NodeManager will start the Managed Server using the script and monitor the Managed Server when it fails.
One of the mistakes people can make is creating their own start script and start the Managed Server using ‘nohup &’ within this script: Metalink [ID 984122.1] and [ID 861098.1]. The script will finish and the server keeps running, but the NodeManager thinks the Managed Server has failed… Continue reading
Oracle has released it’s first patch set for Oracle Database 11g Release 2 (220.127.116.11).
See the README at Oracle® Database Patch Set Notes 11g Release 2 (18.104.22.168) Patch Set 1 and Metalink Note ID 1189783.1 at Important Changes to Oracle Database Patch Sets Starting With 22.214.171.124 for more information.
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.
MEMORY_TARGET and MEMORY_MAX_TARGET
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.
When moving/deleting the listener.log, I used to stop and start the listener and move/delete the listener in between the actions.
This method has a big inconvenience: users can not connect to the database for a few seconds…
What I never knew was that the listener could be told to stop and start logging and take the appropriate action in between. Continue reading