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]