CloneDB是Oracle 11.2.0.3推出的一项新特性,它利用的了11g新引入的Direct NFS。它直接利用目标数据库的备份,无需将备份COPY到克隆环境下,使得一个备份可以克隆多个不同用途的数据库。它同时采用了copy-on-write技术,使得备份中只有被修改了的block才会被应用到克隆数据库中,极大的节省了克隆数据库的空间,并提升了数据库克隆的速度。
下面对该项特性进行了测试,共涉及三台服务器,采用的均是32位RHEL 6.3操作系统,数据库版本11.2.0.4。
NFS服务器:
主机名:node3.being.com
IP: 192.168.2.13
共享路径:/u01
生产数据库:
主机名: node1.being.com
IP: 192.168.2.11
ORACLE_HOME: /u01/app/oracle/product/11.2.0.4/db_1
ORACLE_SID:prod
挂载点:/backup/prod/
克隆数据库:
主机名:node2.being.com
IP:192.168.2.12
ORACLE_HOME:/u01/app/oracle/product/11.2.0.4/db_1
ORACLE_SID:orcl
挂载点:/prod/backup
一、准备NFS环境
首先查看一下node3的磁盘情况
[root@node3 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 5.8G 3.9G 1.6G 72% /
tmpfs 504M 0 504M 0% /dev/shm
/dev/sda4 20G 172M 19G 1% /u01
在这里,打算将/u01作为NFS磁盘共享出去。
在NFS Server的主配置文件中/etc/exports添加以下内容:
/u01 *(rw,no_root_squash)
在这里,注意/u01的权限,刚开始/u01默认的是755权限,node1挂载后,无法创建文件,报“Permission denied”。
修改/u01的权限
[root@node3 ~]# chmod 757 /u01/
重启rpcbind和nfs服务
[root@node3 ~]# /etc/init.d/rpcbind restart
Stopping rpcbind: [FAILED]
Starting rpcbind: [ OK ]
[root@node3 ~]# /etc/init.d/nfs restart
Shutting down NFS daemon: [FAILED]
Shutting down NFS mountd: [FAILED]
Shutting down NFS quotas: [FAILED]
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
查看配置是否成功
[root@node3 ~]# showmount -e 192.168.2.13
Export list for 192.168.2.13:
/u01 *
将rpcbind和nfs服务设为开机自启动
[root@node3 ~]# chkconfig rpcbind on
[root@node3 ~]# chkconfig nfs on
二、在生产数据库上挂载NFS文件系统
以root身份登录,创建备份目录
[root@node1 ~]# mkdir /backup/prod
挂载node3提供的nfs磁盘
[root@node1 ~]# showmount -e 192.168.2.13
Export list for 192.168.2.13:
/u01 *
[root@node1 ~]# mount 192.168.2.13:/u01 /backup/prod/
[root@node1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 7.7G 3.6G 3.8G 49% /
tmpfs 400M 184M 217M 46% /dev/shm
/dev/sda1 194M 27M 158M 15% /boot
/dev/sda4 28G 11G 16G 41% /u01
192.168.2.13:/u01 20G 172M 19G 1% /backup/prod
挂载后,无法给/backup/prod修改文件属主和属组,譬如我想将该目录设置为oracle用户专享的,结果如下:
[root@node1 ~]# chown oracle.oinstall /backup/prod/
chown: changing ownership of `/backup/prod/': Invalid argument