在Oracle 11g中引入了Direct Network File System(Oracle Direct NFS)的新特性,經過一個打包在Oracle內核中的NFS客戶機以改善實例使用NFS時的性能,同時進一步完善了經過NFS實現RAC的解決方案。常規的NFS客戶端軟件通常由操做系統供應商提供,這類NFS客戶端不會專門爲Oracle數據文件的IO作優化。而經過內建的Oracle Direct NFS,數據庫將能夠直接訪問NFS服務器上的文件,避免由OS內核NFS形成的額外開銷。Oracle宣稱由以上優化所帶來的性能提高,在DSS環境中超過40%,而在OLTP環境中超過10%(詳見<Oracle Database 11g Direct NFS Client a white paper>)。sql
接下來咱們將經過實例來演示如何構建Oracle Direct NFS客戶機,實際上這並不困難;Direct NFS客戶機會以以下順序查找裝載點的設置信息:數據庫
- $ORACLE_HOME/dbs/oranfstab 做用域爲$ORACLE_HOME相關的數據庫
- /etc/oranfstab 做用域爲主機上全部可用數據庫
- 最後爲/etc/mtab配置文件,以肯定可用的NFS裝載點
咱們通常推薦使用$ORACLE_HOME/dbs/oranfstab來配置Direct NFS客戶機;該oranfstab配置文件能夠包括Server,path,export以及mount參數,各參數表明的屬性以下:服務器
- Server:NFS服務器名
- Path:到達NFS服務器的最多4個網絡路徑,能夠是IP或者主機名
- Export:從NFS服務器導出的路徑
- Mount:NFS的本地裝載點
須要注意的是若是是在使用NFS實現RAC的情景中,那麼必須使用/etc/oranfstab配置文件。而且該配置文件應當在全部節點上時同步的。
在正式啓用Direct NFS客戶機前,NFS文件系統應當已由常規NFS方式mount而且可用。爲了啓用Direct NFS client,咱們還須要將標準的Oracle磁盤管理庫(Oracle Disk Manager (ODM) library)替換爲支持Direct NFS client的NFS ODM。能夠經過創建從標準ODM庫指向NFS ODM庫的符號連接來完成以上工做,可是須要注意的是以上操做僅能在實例關閉的狀況下才能實施而且有效。網絡
SQL> shutdown immediate; [maclean@rh2 ~]$ cd $ORACLE_HOME/lib [maclean@rh2 lib]$ mv libodm11.so libodm11.so.old [maclean@rh2 lib]$ ln -s libnfsodm11.so libodm11.so [maclean@rh2 lib]$ ls -l libodm11.so lrwxrwxrwx 1 maclean oinstall 14 Feb 18 19:27 libodm11.so -> libnfsodm11.so
接下來咱們將正式啓用Direct NFS Client,並會簡單測試其性能:oracle
[root@rh2 ~]# showmount -e nas Export list for nas: /d01 rh2 /* 以常規方式裝載NFS文件系統 */ [root@rh2 ~]# mount -t nfs nas:/d01 /d01 [maclean@rh2 ~]$ cat $ORACLE_HOME/dbs/oranfstab server: nas path: 192.168.1.188 export: /d01 mount: /d01 SQL> startup; 啓動階段告警日誌會出現如下信息: Oracle instance running with ODM: Oracle Direct NFS ODM Library Version 3.0 ................. Direct NFS: attempting to mount /d01 on filer nas defined in oranfstab Direct NFS: channel config is: channel id [0] local [] path [192.168.1.188] Direct NFS: mount complete dir /d01 on nas mntport 998 nfsport 2049 SQL> desc v$dnfs_servers; Name Null? Type ----------------------------------------- -------- ---------------------------- ID NUMBER SVRNAME VARCHAR2(255) DIRNAME VARCHAR2(1024) MNTPORT NUMBER NFSPORT NUMBER WTMAX NUMBER RTMAX NUMBER /*能夠經過查詢V$DNFS_SERVERS動態視圖來了解NFS客戶機的裝載狀況 */ SQL> col svrname for a10 SQL> col dirname for a10 SQL> select svrname,dirname,mntport,nfsport from v$dnfs_servers; SVRNAME DIRNAME MNTPORT NFSPORT ---------- ---------- ---------- ---------- nas /d01 998 2049 /* 此外V$DNFS_FILES視圖提供了當前Direct NFS打開的文件 V$DNFS_CHANNELS視圖提供了DNFS爲服務器打開的網絡路徑 V$DNFS_STATS視圖提供了DNFS的性能統計信息 */ SQL> set timing on; SQL> create tablespace nfs_perf datafile '/d01/perf01.dbf' size 2000M; Tablespace created. Elapsed: 00:00:30.91 SQL> shutdown immediate; /* 經過還原libodm11.so庫文件和刪除oranfstab配置文件能夠禁用Direct NFS */ [maclean@rh2 lib]$ cp libodm11.so.old libodm11.so [maclean@rh2 lib]$ rm $ORACLE_HOME/dbs/oranfstab SQL> select svrname,dirname,mntport,nfsport from v$dnfs_servers; no rows selected SQL> set timing on; SQL> create tablespace nfs_kernel datafile '/d01/kernel01.dbf' size 2000M; Tablespace created. Elapsed: 00:00:29.45 /* 彷佛從簡單的數據文件建立時間上體現不出Oracle Direct Nfs的優點...*/ That's ok
Comments