Oracle dNFS richtig konfigurieren
Oracle hat dNFS mit der Version 11gR1 eingeführt und über die verschiedenen Releases laufend verbessert und/aber auch die Konfiguration verändert.
In diesem Artikel zeigen wir Ihnen, wie man mit dNFS richtig umgeht - vom Konfigurieren am OS bis hin zu Tipps und Tricks.
Was ist eigentlich Oracle direct NFS (dNFS)?
Hinter Oracle dNFS versteckt sich ein in das Oracle Executable integrierter NFS Client - die Datenbank Instanz / die Prozesse können somit NFS Verbindungen DIREKT aufbauen, ohne die NFS Client Software am Operating System zu nutzen.
Dies reduziert dramatisch den Overhead durch Context Switches und NFS Client Verarbeitung und schlägt sich in großen Performance- und Durchsatzunterschieden (bis zu Faktor 2 und mehr) bei gleichzeitiger Reduktion des CPU Bedarfs am Datenbank Server nieder.
Wie konfiguriert man die Oracle Datenbank Software für dNFS?
Einschalten von dNFS mit Oracle 11gR1

cd $ORACLE_HOME/lib
mv libodm11.so libodm11.so_stub
ln -s libnfsodm11.so libodm11.so
Einschalten von dNFS ab Oracle 11gR2

In Oracle 11gR2 kann man dNFS noch genau so wie mit Oracle 11gR1 einschalten (ab Oracle 12c nicht mehr!). Der korrekte Weg ist aber der folgende:
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk dnfs_on
Deaktivieren geht übrigens wie folgt:
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk dnfs_off
NFS Server Einstellungen
Bei den meisten professionellen NFS Storage Lösungen muss man für Oracle dNFS nichts zusätzliches konfigurieren, verwendet man aber auf Linux/Unix basierende NFS Server Lösungen, so muss man unbedingt beachten, dass die Oracle dNFS INSECURE Ports nutzt!
Beispiel zur Konfiguration von einem Linux basierenden NFS Server
Dieses Beispiel berücksichtigt nur jene Teile, die für Oracle relevant sind. NFS Zugriffseinschränkungen,... werden NICHT behandelt.
Ein Verzeichnis für NFS vorbereiten und freigeben
mkdir -p /nfs_shares/test_db
Diese NFS Share freigeben
vi /etc/exports
/nfs_shares/test_db *(rw,sync,no_wdelay,insecure,insecure_locks,no_root_squash)
NFS export aktivieren
Wenn der NFS Server schon läuft und genutzt wird - /etc/exports neue einlesen
exportfs -a
Wenn der NFS Server noch nicht läuft/konfiguriert ist
chkconfig nfs on
service nfs restart
NFS Konfiguration am Datenbank Server
Obwohl die Datenbank Instanz selbst NFS Verbindungen aufbaut und nutzt, verlangt Oracle eine "Fallback Möglichkeit"
Verzeichnis für den dNFS Mount anlegen
mkdir -p /u01/app/oracle/oradata/test_db
NFS Mount im System konfigurieren
vi /etc/fstab ## und folgende Zeile anfügen (alles in einer Zeile!)
nfsserver_hostname:/nfs_shares/test_db /u01/app/oracle/oradata/test_db nfs rw,bg,hard,nointr,tcp,vers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0 0 0
NFS Mount durchführen und Oracle den Zugriff ermöglichen
mount /u01/app/oracle/oradata/test_db
chown oracle:dba /u01/app/oracle/oradata/test_db
Ab jetzt wird die Datenbank ( Files unter /u01/app/oracle/oradata/test_db ) mit dNFS betrieben
Das waren die Schritte für eine einfache dNFS Konfiguration. Es gibt noch einige Advanced Konfigurationsmöglichkeiten wie:
-
Nutzen von mehreren NFS Pfaden (max 4)
-
Direct NFS CloneDB ab Oracle 11.2.0.2
-
RMAN Proxy Backup Integration für NFS mit NetApp Storages
Diese haben aber spezifische Anforderungen und Voraussetzungen, die den Rahmen dieses Artikels sprengen. Wir helfen Ihnen aber gerne bei der Umsetzung, wenn Sie diese Funktionalitäten nutzen wollen.
dNFS und Jumbo Frames
Jumbo Frames bedeutet, dass die Netzwerkpakete mit einer größeren Paketgröße arbeiten dürfen. Da für die Oracle Datenbank meistens 8k große Datenblöcke genutzt weden, sollte man Jumbo Frames so konfigurieren, dass die Datenbank Blöcke in einem Netzwerkpaket platz haben.
Wir empfehlen daher Jumbo Frames mit der Größe von 9000 bytes (MTU=9000). Dies muss man auf allen beteiligen Komponenten (NFS Server, Netzwerk Switches, Datenbank Server) definieren und einschalten.