新技能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社群


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册