新技能Get!利用ACFS snapshot轻松创建COW测试库
面对如此强大的Oracle12c,你还有什么理由不升级?...
有时候,客户会因为种种因素,在ORACLE大版本升级上有所顾虑。作为顾问,不仅仅要帮助客户解决困难,还要告诉客户升级能带来哪些好处。如性能上能带来哪些提升,管理上带来哪里方便,功能上多了哪些新特性,架构上如何更进一步地实现了高可用。
在ORACLE 12c中,ASM得到了各种加强,特别是ACFS可以实现存放数据文件(12c支持数据文件,控制文件,日志文件等数据库的文件放在acfs上。参考Doc ID 1369107.1 中ACFS AdvancedFeatures Platform Availability – Minimum Version)。这个新特性让我很兴奋。——因为结合ACFS的snapshot功能,且snapshot支持COW(Copy-On-Write),我们可以非常简单快速地刷一个一模一样的测试库出来。
这篇文章介绍了如何在一个已经安装12c rac的虚拟机上,如何建立acfs文件系统,并且利用acfs snapshot刷一个COW库出来做测试库。
(注:由于微信不能很好的显示log,对于重复类似的命令,我用表示了。如果需要看完整的log,欢迎访问作者博客 http://www.oracleblog.org)Highlevel Step:
一、给虚拟机增加asm盘,以便建立acfs文件系统
二、创建acfs文件系统
三、在节点1创建数据库在acfs文件系统上。
四、在节点1上运行dml的同时,生成snapshot
五、利用上面生成的snapshot,在节点2上拉起来另外一个数据库。
OK,我们一步一步来实现。
一、给虚拟机增加asm盘,以便建立acfs文件系统1.创建共享acfs盘,共3个盘,每个盘3G大小:
VBoxManage createhd --filename asm_acfs_3g_01.vdi --size 3072 --format VDI --variant Fixed
2.将创建的asm盘attach到两个虚拟机上:
VBoxManage storageattach ol6-121-rac1 --storagectl "SATA" --port 5 --device 0 --type hdd --medium asm_acfs_3g_01.vdi --mtype shareable
3.将这些共享盘设置为可共享的:
VBoxManage modifyhd asm_acfs_3g_01.vdi --type shareable
4.进linux系统,为新加的盘进行分区:
fdisk /dev/sdf --> n -->p -->1-->1-->w
5. 本文用到是udev的方式使用asm盘,没有使用asmlib。
# /sbin/scsi_id -g -u -d /dev/sdf
1ATA_VBOX_HARDDISK_VBa36c3c6c-9da6bb20
6.获得上面的信息后,在两个节点的/etc/udev/rules.d/99-oracle-asmdevices.rules文件中,添加如下几行:
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VBa36c3c6c-9da6bb20", NAME="asm_acfs_3g_01", OWNER="oracle", GROUP="dba", MODE="0660
7.重启两个节点的udev服务,或者直接重启两个节点:
crsctl stop crs/sbin/udevadm control --reload-rules
/sbin/start_udev
二、创建acfs文件系统8. 在两个节点,创建acfs文件系统的mount point
# mkdir -p /mnt/acfs
# chown oracle:oinstall /mnt/acfs
9. 先检查可以用于新建diskgroup的disk
select path, name, header_status, os_mb from v$asm_disk;
10. 新建diskgroup DG_ACFS
CREATE DISKGROUP DG_ACFS EXTERNAL REDUNDANCY DISK '/dev/asm_acfs_3g_01' SIZE 3000M,
'/dev/asm_acfs_3g_02' size 3000M,
'/dev/asm_acfs_3g_03' size 3000M
ATTRIBUTE 'compatible.asm' = '12.1.0.0.0';
11. 设置compatible为12.1以上
alter diskgroup DG_ACFS set attribute 'compatible.advm'='12.1.0.0.0';
12. 建立volumns
alter diskgroup DG_ACFS add volume VOL1 size 8000M;
13. 检查设备名称:
select volume_name,volume_device from v$asm_volume;
14. 建立文件系统:
# mkfs -t acfs /dev/asm/vol1-28
15. 将acfs文件系统注册到crs:
acfsutil registry -a /dev/asm/vol1-28 /mnt/acfs
16. 将acfs文件系统mount到mount point上:
mount -t acfs /dev/asm/vol1-28 /mnt/acfs
17. 检查状态:
srvctl config filesystem -d /dev/asm/vol1-28三、在节点1创建数据库在acfs文件系统上
18. 使用dbca创建一个数据库到acfs文件系统上。注意,storage type的类型要选择file system,并且选择上面建立的mount point处。
具体步骤略。
19. 检查创建好的db,我们这里测试用的db实例名叫acfsdb:
$ srvctl config database -d acfsdb
select file_name from dba_data_files;
select name from v$controlfile;
select member from v$logfile;
select file_name from dba_temp_files;
四、在节点1上运行dml的同时,生成snapshot20. 我们创建snapshot的命令是用acfsutil,我们先来看看当前是没有snapshot的:
acfsutil snap info /mnt/acfs
21. 我们先来试试创建一个只读(Read-Only, RO)的snapshot:
$ date
Wed Feb 24 22:40:34 CST 2016
$ acfsutil snap create asfsdb_snap01 /mnt/acfs
acfsutil snap create: Snapshot operation is complete.
$ date
Wed Feb 24 22:40:40 CST 2016
$ acfsutil snap info /mnt/acfs
snapshot name: asfsdb_snap01
RO snapshot or RW snapshot: RO
关注 DBAplus社群
微信扫一扫关注公众号