Oracle 11.2.0.3 的dnfs与之前版本的dnfs配置还是有很多区别的,在测试后,整理下面的测试过程来说明oracle 11.2.0.3中的dnfs配置过程。
环境:
CentOS 6.5
Oracle 11.2.0.3
阶段二:在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:*