1.Direct NFS概念介绍
首先了解LINUX下的NFS网络文件系统,它是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。在类unix系统之间共享资源,不需要安装软件。端口不固定,需要portmap(端口映射)提供RPC(远程过程调用)一种协议;NFS向RPC注册端口。
但是,ORACLE数据库为了加快和远程机器之间的传输速度,采用了自己的驱动,绕过了将数据传给操作系统,然后由操作系统把数据通过网络写到远程机器上的过程,直接通过网络写到远程机器上。
2.配置方法:
(1)由于NFS在实现的过程中需要调用RPC协议,所以共享文件之间的两台机器之间需要保证俩服务必须启着:
server端服务:portmap服务和nfs服务
client端服务:nfs服务
(2)在服务器端设置某目录为共享,相当于windows平台将文件夹设置为共享:
第一步:编辑/etc/exports
文件格式:
共享目录名称 客户端地址(权限,另一个权限) 另一个客户端地址(权限,另一个权限)
权限可以为:
1.no_root_squash: 表示不对root 的身份进行转换
2.all_squash: 所有用户身份都转化
3.all_squash,anonuid=500,anongid=500: 所有新生成文件的所有者、所属组都转换成为500
4. root_squash 表示对root的身份进行转换,转换成nfsnobody
5. ro 只读
6..rw 读写
7.anonuid 可以自行设定这个UID的值,这个UID必需要存在于你的/etc/passwd当中
8.anongid 同anonuid,但是变成groupID就是了
9.sync 资料同步写入到内存与硬盘当中
10.async 资料会先暂存于内存当中,而非直接写入硬盘
11.insecure 允许从这台机器过来的非授权访问
常见的配置为:/u01/dnfs 192.168.1.3(rw,no_root_squash,insecure)
第二步:exportfs命令,使共享生效
命令语法;exportfs [-aruv]
a 全部挂载(或卸载)/etc/exports档案内的设定
r 重新挂载/etc/exports 里面的设定,也同步的更新/etc/exports和/var/lib/nfs/xtab里面的内容
u 卸载某一目录
v 在export的时候,将分享的目录显示到荧屏上
常见命令为:exportfs -rv
(3)在客户端挂载服务端共享目录并设置开机自动挂载
挂载共享目录:mount 192.168.1.2:/u01/dnfs_server /u01/dnfs_client
设置开机自动重启:
编辑/etc/fstab文件新增内容:
192.168.1.2:/u01/dnfs_server /u01/dnfs_client nfs ro 0 0
(4)开启ORACLE Direct NFS功能
由于ORACLE在默认情况下是不开启Direct NFS功能,所以需要手工开启,在11G中比10G的执行脚本更加方便,需要进入$ORACLE_HOME/rdbms/lib目录,执行指令:
make -f ins_rdbms.mk dnfs_on
(5)切换到oracle用户,编辑oranfstab文件,使ORACLE在使用Direct NFS时,可以找到映射关系。
su - oracle
vi $ORACLE_HOME/dbs/oranfstab
server:prod
path:192.168.255.129
export:/vol/oradata mount:/oracle/nfs
(6)重启数据库,使oranfstab文件修改生效。
(7)在数据库创建表空间,验证配置是否成功:
创建表空间:
create tablespace nfs datafile '/u01/dnfs_client/test.dbf' size 10m;
验证:
select * from v$dnfs_servers;
select * from v$dnfs_filess;
select * from v$dnfs_stats;
select * from v$dnfs_channels;
如果在上述视图中查询出结果,则说明ORACLE是用的Direct NFS功能,上述配置成功。
注意:一定要在上述四个视图中查询出结果,才能说明Direct NFS配置成功,否则,即使在NFS server端出现test.dbf文件,只能说明是通过LINUX层面的NFS功能来实现的!