Oracle 11gR2 DNFS功能测试


Oracle 11.2.0.3 的dnfs与之前版本的dnfs配置还是有很多区别的,在测试后,整理下面的测试过程来说明oracle 11.2.0.3中的dnfs配置过程。

环境:
CentOS 6.5
Oracle 11.2.0.3

说明:
Oracle 11.2.0.3中的DNFS,是在操作系统的nfs目录挂载正常后,在nfs client端上按照一定步骤启用oracle的DNFS,从而提高nfs性能。
所以整个测试过程也分为两个阶段,第一个阶段是操作系统上的nfs配置和挂载,需要在nfs的server端和client端分别操作,该阶段与oracle数据库无关;
第二个阶段,只需要在nfs的client端进行,主要配置oracle文件,替换lib,在oracle中确认状态;
整个测试过程中都以oracle用户为命令操作用户,如果需要root权限,则使用sudo方式;

nfs Server端: IP为10.0.1.100;Hostname为enmoedu2.example.com ;nfs目录为/vol/oradata
nfs Client端: IP为10.0.1.200;Hostname为enmoedu1.example.com ;nfs挂载目录为/u01/nfs


阶段一:启用nfs服务
NFS服务端:
1.确认nfs和portmap服务状态:
sudo /etc/init.d/nfs status
sudo /etc/rc.d/init.d/portmap status

如果没有启动,使用下面的命令启用:
sudo /etc/init.d/nfs start
sudo /etc/rc.d/init.d/portmap start

2.配置nfs导出文件:
$ cat /etc/exports 
/vol/oradata *(rw,sync,no_wdelay,insecure,insecure_locks,no_root_squash)

注:参数设置内容说明:
第一部分为本地要导出的文件路径,在本例中,就是将/vol/oradata目录作为nfs共享出去;
第二部分指定可以连接的主机,可以指定nfs客户端IP地址,如果为*号,就说明所有的客户端都可以连接改nfs共享;
第三部分小括号内的参数,对nfs共享目录的权限等进行了说明,如可以读写,加密,锁定等设置;

3.导出文件确认:
whereis exportfs
sudo /usr/sbin/exportfs
sudo /usr/sbin/exportfs -rv

建立一个测试文件:
touch /vol/ordata/1.txt
echo "123"  > /vol/oradata/1.txt

确认挂载状态:
$ sudo /usr/sbin/showmount -e
Export list for enmoedu2:
/vol/oradata *

如果客户端挂载了nfs目录,可以看到下面的结果:
$ sudo /usr/sbin/showmount -a
All mount points on enmoedu2:
192.0.2.11:/vol/oradata


NFS客户端:
1.确认portmap服务状态,
只有portmap服务启动时,客户端才能挂载NFS共享目录:
sudo /etc/rc.d/init.d/portmap status 
如果服务没有启动,使用下面的命令启动:
sudo /etc/rc.d/init.d/portmap start

2.客户端服务启动后,创建挂载点并挂载nfs目录
cd /u01/
mkdir nfs
mount 192.0.0.2:/vol/oradata /u01/nfs

3.确认共享文件内容:
cat /u01/nfs/1.txt
如果再nfs客户端能够正常挂载nfs目录,并看到里面的内容与server端一致,则说明操作系统的nfs目录挂载正常。

阶段二:在NFS客户端设置并使用DNFS
Oracle DNFS是在操作系统NFS挂载正常的情况下,在客户端设置挂载命令,并对相应的oracle数据库lib进行替换,绕过操作系统的NFS驱动,使用oracle的DNFS驱动。
配置DNFS有几点需要注意:
DNFS的配置全部在NFS客户端进行,NFS服务端不需要进行任何操作;
DNFS的配置步骤,先编写oranfstab文件,然后替换lib对象,启动DNFS,如果客户端数据库是open状态,替换后需要重启生效;
DNFS配置完毕后,没有使用时,在v$dnfs_servers视图中查询不到,只有客户端使用这个目录,创建了文件后,才会显示nfs服务端信息;

NFS Client端启用DNFS步骤:
1.使用oracle用户编辑$ORACLE_HOME/dbs/oranfstab文件,内容如下
$ cd $ORACLE_HOME/dbs
$ cat oranfstab 
server: enmoedu2.example.com
path:192.0.2.12
export: /vol/oradata mount: /u01/nfs

注:参数设置内容说明:
server为NFS服务的名称,一般填写服务端的主机名;
path是NFS服务器的名称,一般填写服务端的IP地址;
export是nfs服务器导出的路径;mount是nfs本地挂载的路径;

2.替换相关lib,启用DNFS
启用DNFS的步骤:
$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk dnfs_on
rm -f /u01/app/oracle/product/11.2.0/db_1/lib/libodm11.so; cp /u01/app/oracle/product/11.2.0/db_1/lib/libnfsodm11.so /u01/app/oracle/product/11.2.0/db_1/lib/libodm11.so

注:该步骤与之前版本有有不同,11.2.0.3将操作封装成了上面的命令,之前版本是用这样的方式:
修改libodm11.so库文件的链接对象
$cd $ORACLE_HOME/lib
$mv libodm11.so libodm11.so.bak
$ln -s libnfsodm11.so libodm11.so

3.重启数据库,确认DNFS生效状态
如果nfs客户端数据库已经启动,则重启oracle数据库:
sqlplus / as sysdba
shutdown immediate
startup

启动后,查询nfs服务视图的内容:
SQL> select * from v$dnfs_servers;
no rows selected
结果发现服务视图内容为空,这并不是说,DNFS配置失败,即使配置成功,client并没有使用DNFS,也不会显示服务端信息;

在nfs的客户端数据库上,创建一个使用DNFS的表空间:
SQL> create tablespace dnfs datafile '/u01/nfs/dnfs01.dbf' size 20m;
Tablespace created.

此时再次查看nfs服务视图内容:
SQL>  select * from v$dnfs_servers;

        ID SVRNAME                   DIRNAME                 MNTPORT    NFSPORT      WTMAX      RTMAX
---------- ------------------------- -------------------- ---------- ---------- ---------- ----------
         1 enmoedu2.example.com      /vol/oradata                657       2049      32768      32768

可以看到,已经有了相关nfs服务器信息,上述在DNFS上创建表空的过程,在alert日志中记录为:
Tue May 19 15:36:19 2015
create tablespace dnfs datafile '/u01/nfs/dnfs01.dbf' size 20m
Tue May 19 15:36:19 2015
Starting background process SMCO
Tue May 19 15:36:19 2015
SMCO started with pid=24, OS id=13603 
Tue May 19 15:36:20 2015
Direct NFS: channel id [0] path [192.0.2.12] to filer [enmoedu2.example.com] via local [] is UP
Direct NFS: channel id [1] path [192.0.2.12] to filer [enmoedu2.example.com] via local [] is UP
Errors in file /u01/app/oracle/diag/rdbms/prod1/PROD1/trace/PROD1_ora_13539.trc:
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 44
Additional information: 1432096244
Completed: create tablespace dnfs datafile '/u01/nfs/dnfs01.dbf' size 20m

日志中显示了DNFS的使用过程。


最后在NFS服务端上,查看DNFS的端口信息为:
[ oracle@enmoedu2 dbs]$ sudo netstat -an |grep 2049
tcp        0      0 0.0.0.0:2049                0.0.0.0:*                   LISTEN      
tcp        0      0 192.0.2.12:2049             192.0.2.11:26409            ESTABLISHED 
tcp        0      0 192.0.2.12:2049             192.0.2.11:59448            ESTABLISHED 
tcp        0      0 192.0.2.12:2049             192.0.2.11:45394            ESTABLISHED 
tcp        0      0 192.0.2.12:2049             192.0.2.11:1009             ESTABLISHED 
udp        0      0 0.0.0.0:2049                0.0.0.0:*                               

你可能感兴趣的:(oracle)