Oracle Direct NFS bypasses the kernel NFS client for better performance. This requires enabling the dNFS library and telling Oracle where to find the NFS servers.
Enable dNFS library:
# Create the soft link
cd $ORACLE_HOME/lib
mv libodm19.so libodm19.so.backup
ln -s libnfsodm19.so libodm19.so
# Verify the symlink :
ls -l $ORACLE_HOME/lib/libodm19.so
# Expected output
lrwxrwxrwx 1 oracle oinstall 16 Jan 12 10:30 libodm19.so -> libnfsodm19.so
Note: repeat on all nodes for Real Application Clusters.
Create oranfstab:
Location: $ORACLE_HOME/dbs/oranfstab
Enter values in the following format:
server: <SERVER_NAME>
path: <FLASHBLADE_VIP>
export: /<FILESYSTEM_NAME>
mount: <MOUNT_POINT>
nfs_version: NFSv4.1
Example for nfsv4.1:
server: flashblade
path: 10.21.221.21
export: /rman-backups
mount: /rman
nfs_version: nfsv4.1
Restart database to activate dNFS:
# Standalone
sqlplus / as sysdba <<< "SHUTDOWN IMMEDIATE; STARTUP;"
# RAC
srvctl stop database -d <DBNAME>
srvctl start database -d <DBNAME>
Verify dNFS is active:
grep -i "direct nfs" $ORACLE_BASE/diag/rdbms/*/*/trace/alert_*.log | tail -5
# Expected Output
Oracle instance running with ODM: Oracle Direct NFS ODM Library Version 6.0
Direct NFS: channel id [0] path [flashblade] to filer [flashblade] via local [] is UP
If you see Using default NFS mount options instead, dNFS is not active. Check mount options and oranfstab configuration.
Query registered servers:
SELECT svrname, dirname, nfsversion, wtmax, rtmax
FROM V$DNFS_SERVERS;
# Example Output
SVRNAME DIRNAME NFSVERSION WTMAX RTMAX
--------------- ------------- ----------- -------- --------
flashblade /rman-backups NFSv4.1 1048576 1048576
Note:
V$DNFS_SERVERS only shows entries when there is active I/O to the NFS mount. If the query returns no rows, run a test backup or create a test file on the mount point, then query again.