NFS相信應該都很熟悉了,可是咱們對它的性能一直有所詬病。Oracle在10g版本經過容許對數據庫文件直接IO引入ASM。在11g版本中,Oracle對NFS提供了相似的加強,爲了改進NFS的性能,開創了DNFS(Direct Network File System)的數據庫世界,也就是說通過簡單設置以後,就能直接利用其餘NAS存儲設備了。利用這個新特性,Oracle數據庫核心自動進行所用調整處理,簡單來講就是Oracle本身內部實現了一套NFS Client的機制而不是操做系統NFS Client去和NFS Server打交道了。DBA和SA再也不須要熟悉與NFS相關的參數調整。sql
使用這個特性大體步驟以下:數據庫
nfs Server端: IP爲192.168.211.129;Hostname爲tserver.oracle.com ; nfs目錄爲/u02/nfsserver
nfs Client端: IP爲192.168.211.128;Hostname爲test.oracle.com ; nfs目錄爲/u02/nfsdata服務器
1.配置server端,掛載client (這一步和平時的掛載nfs沒有區別)
配置nfs服務端:
[oracle@tserver bin]$ sudo mkdir -p /u02/nfsserver
[oracle@tserver bin]$ sudo chown oracle:oinstall /u02/nfsserver
[oracle@tserver bin]$ /usr/sbin/exportfs -v
[oracle@tserver bin]$ sudo vi /etc/exports
[oracle@tserver bin]$ cat /etc/exports
/u02/nfsserver *(rw,sync)
[oracle@tserver bin]$ /etc/init.d/nfs stop
[oracle@tserver bin]$ sudo /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
[oracle@tserver bin]$
[oracle@tserver bin]$ sudo /usr/sbin/exportfs -v
/u02/nfsserver <world>(rw,wdelay,root_squash,no_subtree_check,anonuid=65534,anongid=65534)oracle
掛載nfs client
[oracle@test bin]$ sudo mkdir -p /u02/nfsdata
[oracle@test bin]$ sudo chown oracle:oinstall /u02/nfsdata
[oracle@test agent]$ sudo mount -t nfs even.oracle.com:/u02/nfsserver /u02/nfsdata
Password:
[oracle@test agent]$
[oracle@test agent]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
55G 19G 33G 37% /
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 1.3G 537M 732M 43% /dev/shm
even.oracle.com:/u02/nfsserver
55G 27G 25G 53% /u02/nfsdataapp
2.替換內核的odm(作這一步應該要當心,若是odm替換錯誤的話,連sqlplus都沒法使用)
[oracle@test lib]$ pwd
/u01/app/oracle/product/11.1/db_1/lib
[oracle@test lib]$ mv libodm11.so libodm11.so.bak
[oracle@test lib]$ ln -s libnfsodm11.so libodm11.so
[oracle@test lib]$ ls -lrt | grep odm
-rw-r--r-- 1 oracle oinstall 8905 Sep 10 2008 libodmd11.so
-rw-r--r-- 1 oracle oinstall 44730 Sep 10 2008 libnfsodm11.so
lrwxrwxrwx 1 oracle oinstall 12 Feb 15 14:17 libodm11.so.bak -> libodmd11.so
lrwxrwxrwx 1 oracle oinstall 14 Feb 17 14:37 libodm11.so -> libnfsodm11.so性能
替換完成以後要重啓數據庫方能生效,在啓動時alert日誌中會有以下的提示:
Oracle instance running with ODM: Oracle Direct NFS ODM Library Version 2.0 ui
3.建立表空間並查看
SQL> create tablespace nfs_tbs datafile'/u02/nfsdata/nfstbs001.dbf' size 10M ;spa
Tablespace created.操作系統
SQL> select * from v$dnfs_servers;日誌
ID SVRNAME DIRNAME MNTPORT NFSPORT WTMAX RTMAX
---------- --------------- -------------------- ---------- ---------- ---------- ----------
7 even.oracle.com /u02/nfsserver 924 2049 0 0
4.Oracle是如何知道哪一個目錄掛載了NFS
按照優先級有3個目錄:
$ORACLE_HOME/dbs/oranfstab
/etc/oranfstab
/etc/mtab
oranfstab文件不是實現DNFS必需的(對於RAC來講是必需的,必需在全部的RAC節點上同步oranfstab)。它是一個列出專門針對Oracle數據庫DNFS額外選項的特殊文件,大體有以下幾個屬性:
Server:NFS服務器名
Path: NFS服務器的IP地址,最多能夠用4個不一樣的網卡地址
export: NFS服務端的nfs路徑
mount:NFS client端掛載的路徑
參考:Step by Step - Configure Direct NFS Client (DNFS) on Linux [ID 762374.1]