【11g】Oracle 11g Direct NFS

Oracle 11g Direct NFS 

Direct NFS Client
NAS存储设备使用网络文件系统(NFS)访问数据。在Oracle数据库10g中,使用操作系统特定的内核NFS驱动程序访问NAS设备。这需要您调优许多参数,而且不同平台的配置也有所不同。NFS客户机往往在不同的操作系统平台上不一致。可管理性并不容易,因为您必须处理20多个配置参数。
在Oracle Database 11g中,Oracle NFS在Oracle RDBMS内核中实现了NFS Version 3协议。实现Oracle Direct NFS提供了以下好处:
、通过避免内核NFS层,可以避免瓶颈和资源约束。
、为Oracle提供一个通用NFS接口,用于所有操作系统平台和受支持的NFS服务器。
、提供跨NFS服务器的多个连接的负载平衡,从而提高性能。
、性能是可以预测的,因为Oracle NFS实现使您能够完全控制到网络文件服务器的输入/输出路径。
、更简单的管理,包括更简单的配置和更好的诊断能力。
Configuring Direct NFS
要实现Oracle Direct NFS客户机,不需要配置太多。NFS按照以下顺序直接搜索挂载点条目:
$ORCLE_HOME/dbs/oranfstab
/etc/orafnstab
/etc/mtab
数据库使用第一个匹配作为挂载点。Oracle总是要求,即使使用直接NFS,内核NFS系统也必须执行挂载。由于这个原因,Oracle总是将oranfstab文件中的挂载点信息与操作系统NFS挂载点交叉检查。如果不匹配,则直接NFS不能充当NFS服务器的客户机,并停止为NFS服务器提供服务。
Enabling Direct NFS
您必须遵循以下步骤才能启用直接NFS
1.必须使用内核NFS客户机挂载所有NFS挂载点。必须确保通过ODM NFS挂载计划使用的任何文件系统,并使Oracle可以通过常规NFS挂载使用这些文件系统。
2.如果希望指定特定于oracle的选项来引导NFS,那么需要一个oranfstab文件。这是一个可选步骤。oranfstab文件必须具有以下属性,以便数据库可以通过直接NFS访问所有NFS服务器:
server:提供NFS服务器名称。
mount: 为NFS服务器提供本地挂载点。
export: 提供从NFS服务器导出的路径。
path: 提供到NFS服务器的网络路径。您可以使用IP地址或名称指定最多四个网络路径。如果当前路径失败,使用多个网络路径可以使直接NFS客户机使用备用路径。多个路径还使客户机能够执行负载平衡。
Mnt_timeout:指定(以秒为单位)NFS客户机在超时之前等待成功挂载的时间。这个参数是可选的。默认超时时间为10分钟(600)。
Dontroute: 指定发送的消息不应由操作系统路由,而应使用它们绑定到的IP地址发送。注意,这个POSIX选项有时不能在同一子网中有多个路径的Linux系统上工作。


一个典型的oranfstab文件看起来类似如下:
server: TestServer1
path: 130.33.34.11
export: /vol/oradata1 
mount: /mnt/oradata1
为了删除数据库当前使用的NFS路径,必须重新启动数据库。
3. 您必须替换标准ODM库libnfsodm10。因此,使用ODM NFS库,如下所示:
$ cd $ORACLE_HOME/lib
$ mv libodmll.so libodmll.so_stub
$ ln -s libnfsodm11.so libodm11.so
可以使用以下三种方法中的任何一种禁用直接NFS客户机。
删除oranfstab文件。
用存根libodm11替换ODM NFS库。所以文件。
通过删除NFS服务器的特定NFS服务器或网络路径来修改oranfstab文件。
如果数据库不能使用直接NFS打开NFS服务器,那么它将使用操作系统内核客户机。
监控直接NFS
您可以查询以下视图来管理直接NFS:
V$DNFS_STATS Shows performance statistics for Direct NFS.
V$DNFS_SERVERS Shows servers accessed by Direct NFS.
V$DNFS_FILES Shows files currently using Direct NFS.
V$DNFS_CHANNELS Shows the open network paths being used by Direct NFS.

Example

NFS SERVER 10.10.10.22
NFS CLIENT 10.10.10.12

1、nfs server需要启动的服务:

#service portmap start
Starting portmap: [  OK  ]
#service nfs start
Starting NFS services:  [  OK  ]
Starting NFS quotas: [  OK  ]
Starting NFS daemon: [  OK  ]
Starting NFS mountd: [  OK  ]
Starting RPC idmapd: [  OK  ]

2、nfs client需要启动的服务

#service portmap start
Starting portmap: [  OK  ]


3、在NFS SERVICE端配置NFS

   root用户编辑文件/etc/exports内容如下:

/u01/nfs 10.10.10.12(rw,no_root_squash,insecure)   --必须为此权限

检查配置结果:
[root@db11g-em10g nfs]# exportfs
/u01/nfs        10.10.10.12
[root@db11g-em10g nfs]# exportfs -rv
exporting 10.10.10.12:/u01/nfs

4、在NFS Client端root用户挂载NFS文件系统
[root@db11g oracle]# mount 10.10.10.22:/u01/nfs /oracle/nfs


5、配置NFS CLIENT数据库支持Direct NFS

   oracle用户编辑$ORACLE_HOME/dbs/oranfstab文件,内容如下
[oracle@db11g ~]$ cat $ORACLE_HOME/dbs/oranfstab
server:db11g-em10g
path:10.10.10.22
export:/u01/nfs mount:/oracle/nfs

   修改libodm11.so库文件的链接对象
$cd $ORACLE_HOME/lib
$mv libodm11.so libodm11.so.bak
$ln -s libnfsodm11.so libodm11.so

数据库启动的告警日志中有如下信息:

Oracle instance running with ODM: Oracle Direct NFS ODM Library Version 2.0

6、在NFS Client端创建表空间测试:

SQL> select * from v$dnfs_servers

        ID SVRNAME         DIRNAME                 MNTPORT    NFSPORT      WTMAX      RTMAX
---------- --------------- -------------------- ---------- ---------- ---------- ----------
         6 db11g-em10g  /u01/nfs                    718       2049          0          0


SQL> create tablespace dnfs datafile '/oracle/nfs/dnfs01.dbf' size 2M;
SQL> select * from v$dnfs_files

FILENAME                                   FILESIZE       PNUM     SVR_ID
---------------------------------------- ---------- ---------- ----------
/oracle/nfs/dnfs01.dbf                      2105344          9          5

7、检查NFS SERVER端口的链接情况:
[root@db11g-em10g nfs]# netstat -an |grep 2049
tcp        0      0 0.0.0.0:2049                0.0.0.0:*                   LISTEN     
tcp        0      0 10.10.10.22:2049            10.10.10.12:23052           ESTABLISHED
tcp        0      0 10.10.10.22:2049            10.10.10.12:728             ESTABLISHED
tcp        0      0 10.10.10.22:2049            10.10.10.12:56522           ESTABLISHED
udp        0      0 0.0.0.0:2049                0.0.0.0:*                              


发现的问题:
1、NFS CLient端必须要启动portmap服务,否者在client端mount nfs文件出错:
[root@db11g oracle]# mount 10.10.10.22:/u01/nfs /oracle/nfs
mount.nfs: Input/output error
[root@db11g oracle]# service portmap start
Starting portmap: [  OK  ]
[root@db11g oracle]# mount 10.10.10.22:/u01/nfs /oracle/nfs


2、NFS SERVER端的配置文件/etc/exports使用默认的内容:
[root@db11g-em10g nfs]# cat /etc/exports
/u01/nfs 10.10.10.12(rw,sync,no_root_squash)


那么在Client端创建表空间时候出现如下的错误:
[oracle@db11g dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.1.0.7.0 - Production on Sat Dec 22 15:33:19 2012

Copyright (c) 1982, 2008, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning and Real Application Testing options

SQL> create tablespace nfsdemo datafile '/oracle/nfs/nfsdemo01.dbf' size 2M;
create tablespace nfsdemo datafile '/oracle/nfs/nfsdemo01.dbf' size 2M
*
ERROR at line 1:
ORA-01119: error in creating database file '/oracle/nfs/nfsdemo01.dbf'
ORA-27086: unable to lock file - already in use
Linux Error: 37: No locks available
Additional information: 10

告警日志提示如下错误:
Sat Dec 22 15:38:18 2012
ORA-1119 signalled during: create tablespace dnfs datafile '/oracle/nfs/dnfs01.dbf' size 2M...
Sat Dec 22 15:46:52 2012
create tablespace dnfs datafile '/oracle/nfs/dnfs01.dbf' size 2M
Direct NFS: NFS3ERR 1 Not owner. path db11g-em10g mntport 718 nfsport 2049

参考至: 《McGraw.Hill.OCP.Oracle.Database.11g.New.Features.for.Administrators.Exam.Guide.Apr.2008》            
http://docs.oracle.com/cd/E11882_01/install.112/e41961/storage.htm#CWLIN279
http://blog.sina.com.cn/s/blog_70bb81860101bs90.html

本文原创,转载请注明出处、作者

如有错误,欢迎指正

邮箱:[email protected]

猜你喜欢

转载自blog.csdn.net/viviliving/article/details/91793527