11g新特性-使用DNFS

时间:2023-03-09 00:52:13
11g新特性-使用DNFS

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相关的参数调整。

使用这个特性大致步骤如下:

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)

挂载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/nfsdata

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

3.创建表空间并查看
SQL> create tablespace nfs_tbs datafile'/u02/nfsdata/nfstbs001.dbf' size 10M ;

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]