Πώς ενεργοποιούμε το Oracle Direct NFS για αυξημένο performance μεταξύ Oracle Database και NFS Shares

- Πώς φτιάχνουμε Logon Trigger για να ελέγχουμε τους χρήστες που επιτρέπουμε να συνδεθούν σε Oracle Database - 13 Ιανουάριος 2025
- Πώς συλλέγουμε to actual execution plan από τα queries με χρήση Extended Event και πως διαβάζουμε τα δεδομένα του - 2 Δεκέμβριος 2024
- Πώς βρίσκουμε τι δικαιώματα έχει ένας χρήστης σε Oracle Database - 1 Νοέμβριος 2024
Σε αυτό το άρθρο θα δούμε πως ενεργοποιούμε το Direct NFS
για την συνδεσιμότητα Oracle Database με NFS Servers. Όταν το ενεργοποιούμε η επικοινωνία μεταξύ της Oracle Database και NFS Servers γίνεται απευθείας, χωρίς να εμπλέκετε το kernel του λειτουργικού συστήματος, βελτιώνοντας την απόδοση σε επίπεδο I/O αλλά και των υπολοίπων resources (CPU, RAM). Υποστηρίζει parallel I/O, asynchronous I/O και πολλά security options.
Τις πληροφορίες για τα NFS Shares τις παίρνει από το /etc/fstab
(mtab).
Τα βήματα
Φτιάχνουμε τους φακέλους με owner τον χρήστη oracle και τα παρακάτω δικαιώματα:
su root mkdir -p /oracle/nfs mkdir -p /oracle/oradata mkdir -p /oracle/fra chown -R oracle:oinstall /oracle/nfs chown -R oracle:oinstall /oracle/oradata chown -R oracle:oinstall /oracle/fra chmod -R 775 /oracle/nfs chmod -R 775 /oracle/oradata chmod -R 775 /oracle/fra
Για να είμαστε σίγουροι ότι δεν θα μας κόβουν τα δικαιώματα προς τον NFS Server παμε στο αρχείο exports και προσθέτουμε μία εγγραφή για το κάθε NFS Share όπως παρακάτω:
vi /etc/exports
/oracle/nfs *(rw,sync,no_wdelay,insecure_locks,no_root_squash)
/oracle/oradata *(rw,sync,no_wdelay,insecure_locks,no_root_squash)
/oracle/fra *(rw,sync,no_wdelay,insecure_locks,no_root_squash)
Έπειτα κάνουμε restart το NFS service:
chkconfig nfs on
service nfs restart
Προσθέτουμε στο αρχείο /etc/fstab
μία εγγραφή για το κάθε NFS Share ώστε να γίνονται μόνοι τους mount με το που ξεκινήσει το κάθε μηχάνημα:
su root vi /etc/fstab
win-nfs:/nfs /oracle/nfs nfs rw,bg,hard,nointr,tcp,vers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0 0 0
win-nfs:/oradata /oracle/oradata nfs rw,bg,hard,nointr,tcp,vers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0 0 0
win-nfs:/fra /oracle/fra nfs rw,bg,hard,nointr,tcp,vers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0 0 0

Τώρα είμαστε έτοιμοι να τους κάνουμε mount:
mount /oracle/nfs mount /oracle/oradata mount /oracle/fra
Αν θέλουμε να δώσουμε συγκεκριμένα άλλα options (π.χ. Kerberos security option) πέρα από αυτα που έχει στο /etc/fstab
τότε μπορούμε να δημιουργήσουμε το αρχείο $ORACLE_HOME/dbs/oranfstab
το οποίο παρακάμπτει το /etc/fstab
:
vi $ORACLE_HOME/dbs/oranfstab
Δηλώνουμε τον NFS Server με την IP του, το NFS protocol και τα NFS Shares:
server: win-nfs # nfs server hostname path: 172.25.94.95 # nfs server ip nfs_version: nfsv3 export: /nfs mount: /oracle/nfs export: /oradata mount: /oracle/oradata export: /fra mount: /oracle/fra
Από την έκδοση Oracle Database 12c και έπειτα το Direct NFS ενεργοποιείται από default μόνο του. Αν δεν είναι ήδη ενεργοποιημένο και θέλουμε να το ενεργοποιήσουμε, τρέχουμε το παρακάτω:
cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk dnfs_on
Αντίστοιχα αν θέλουμε να το απενεργοποιήσουμε:
cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk dnfs_off
Πώς ελέγχουμε αν έχει ενεργοποιηθεί
Για να δούμε ότι έχει ενεργοποιηθεί όταν δημιουργήσουμε την βάση δεδομένων τρέχουμε το παρακάτω select, να δούμε αν θα φέρει εγγραφές:
select * from v$dnfs_servers;

Επίσης μπορούμε να δούμε τα αρχεία που το κάνουν χρήση το Direct NFS με το παρακάτω query:
select * from v$dnfs_files;

Ένας άλλος τρόπος για να δούμε αν έχει ενεργοποιηθεί το Direct NFS, είναι να δούμε το alert log
της Oracle Database όταν ξεκινάει αν εμφανίζει το μήνυμα:
Oracle instance running with ODM: Oracle Direct NFS ODM Library Version 3.0
Αν όμως μας εμφανίσει το παρακάτω σφάλμα:
Direct NFS: please check that oradism is setuid
Θα πρέπει να αλλάξουμε τον owner σε root
και τα δικαιώματα στο αρχείο oradism
:
chown root:oinstall $ORACLE_HOME/bin/oradism chmod 4750 $ORACLE_HOME/bin/oradism