在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