Oracle Database 12c Direct NFS

Oracle direct NFS or dNFS introduced in Oracle 11gR2 allows the NFS operations to be moved to the database layer instead of operating system kernel. After installing Oracle RAC it appears the direct NFS is enabled by default.
You can check the alert log to verify that the direct NFS ODM library has been loaded. Messages similar to the following will be displayed.

Oracle instance running with ODM: Oracle Direct NFS ODM Library Version 3.0

Direct NFS may use several configuration files to determine the mount points on which it is used.

If oranfstab is not configured then it will check the currently mounted filesystems from /etc/mtab and if the mount options are correct it will use dNFS for database I/O.
For example:
cat /etc/mtab | grep oraclelinuxtest
filer1:/vol/volnds001_oraclelinuxtest_db/nds001 /u03/oradata nfs rw,bg,hard,nointr,tcp,nfsvers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0,addr= 0 0
filer1:/vol/volnds001_oraclelinuxtest_cf/nds001 /u03/racctl nfs rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,nfsvers=3,timeo=600,actimeo=0,addr= 0 0
You can verify from the v$dnfs views whether or not Oracle is actively using direct NFS.
SQL> select * from v$dnfs_servers;
no rows selected
The query above checks if Oracle is actively using dNFS filers defined in either /etc/oranfstab, $ORACLE_HOME/oranfstab or /etc/mtab. This view is populated the first time that Oracle accesses the filers. Based on our output either Oracle hasn't performed any IO using dNFS.

Looking at the alert log we can see that direct NFS is defined on Filer1. There are other seemingly benign messages to check oradism. After all there are no warning or error messages.

tail alert_racdb1.log
Fri Sep 06 15:01:01 2013
Direct NFS: please check that oradism is setuid
Fri Sep 06 15:48:12 2013
Direct NFS: please check that oradism is setuid
Fri Sep 06 16:51:50 2013
Direct NFS: channel id [0] path [Filer1] to filer [Filer1] via local [] is UP
Fri Sep 06 16:51:50 2013
Direct NFS: attempting to mount /vol/volnds001_oraclelinuxtest_db/nds001 on filer Filer1 defined in mtab
Fri Sep 06 16:51:50 2013
Direct NFS: please check that oradism is setuid

The following MOS note describes this issue:
Database Startup Failed with "Direct NFS: please check that oradism is setuid" (Doc ID 1430654.1)

Check permissions on oradism. It should be owned by root.

[root@lnxvmoraract02 ~]# cd /u01/app/oracle/product/12.1.0/dbhome_1/bin
[root@lnxvmoraract02 bin]# ls -l oradism
-rwxr-x--- 1 oracle oinstall 105070 Sep  4 16:27 oradism

The permissions for oradism is incorrect and setuid is not set.
Change the permissions (as root) so that it's owned by root:root and change permissions to enable the suid.
[root@lnxvmoraract02 bin]# chown root:root oradism
[root@lnxvmoraract02 bin]# chmod 4755 oradism

Restart the database and query v$dnfs_server to verify that dNFS is actually being used.

SQL> col svrname format a60
SQL> col dirname format a80
SQL> set lines 200
SQL> select svrname,dirname,mntport,nfsversion,wtmax,rtmax,con_id
  2  from v$dnfs_servers;

SVRNAME                                                      DIRNAME                                              MNTPORT NFSVERSI      WTMAX       RTMAX     CON_ID
------------------------------------------------------------ -------------------------------------------------------------------------------- ---------- -------- ---------- ---------- ----------

Filer1                                          /vol/volnds001_oraclelinuxtest_db/nds001                4046 NFSv3.0       65536       65536          0


Popular posts from this blog

Viewing ASM trace files and alert logs in Unix/Linux

ORA-00020: maximum number of processes (%s) exceeded

Troubleshooting RAC Public Network Failure