暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

深入解析:ASM Normal Redundancy谁完成数据镜像IO?

张大朋 2016-05-27
445


张大朋(Lunar)Oracle 资深技术专家

Lunar 拥有超过十年的 ORACLE SUPPORT 从业经验,曾经服务于ORACLE ACS部门,现就职于 ORACLE Sales Consultant 部门,负责的产品主要是 Exadata,Golden Gate,Database 等。


编辑手记:我们不仅要学习一个知识点,还要从作者的验证过程,学习如何动手实战,从实践中得到真知。


前几天,一些朋友讨论ASM中提出一个问题:

如果是NORMAL redundancy磁盘组,数据的镜像是由oracle rdbms进程完成,还是由ASM的进程完成?

我们知道,ASM NORMAL REDUNDANCY磁盘组类似于RAID 10的操作,也就是镜像+条带化。


在传统架构中,Oracle只负责写入一份数据,数据保护(镜像)是由存储或者RAID卡来完成的,那么在ASM中是否也是DB完成一次写入,ASM进行同步呢?


根据下面的测试,结论是:

DB的进程完成数据库中所有应用数据的IO操作,包括镜像数据的IO。而ASM进程只负责元数据(metadata extent)的维护和IO。


具体测试如下:

首先,我们创建一个normal redundancy的磁盘组,用来存放数据库的redo,比如 +REDODG:


这个两个磁盘的failure group的信息如下:


磁盘信息和权限如下:

[oracle@lunardb1 ~]$ ll dev/mapper/redolun*

brw-rw---- 1 oracle oinstall 253, 8 Jun 16 10:39 dev/mapper/redolun1

brw-rw---- 1 oracle oinstall 253, 9 Jun 16 10:39 dev/mapper/redolun2


然后,我们使用REDODG创建了9组redo log group(这套10204的RAC的redo都放在上面了):


这个数据库实例的LGWR进程号为 11159:

[oracle@lunardb1 ~]$ ps -ef|grep lgwr|grep lunar

oracle   11159     1  0 Mar03 ?        08:01:25 ora_lgwr_lunar1

[oracle@lunardb1 ~]$ 

sys@lunar>select spid from v$process where PROGRAM like '%LGWR%';

 

SPID

------------

11159

现在我们使用strace跟踪一下这个进程在数据库切换日志时的动作,如果lgwr进程只写了一个设备,比如/dev/mapper/redolun1或者/dev/mapper/redolun2,那么可以再跟踪一下ASMB进程。


如果LGWR进程写了两个设备,即/dev/mapper/redolun2和/dev/mapper/redolun1都写入了相应的IO,那么我们可以认为,数据库的LGWR自己完成了primary extent和mirror extent的全部操作。

这也是Oracle 文档中一直说明的一点“ASM负责ASM实例的metadata的IO,而DB完成应用实际数据的IO”。


具体跟踪文件如下:


上面的跟踪文件可以很清晰的看到,LGWR进程连续写了2分相同的数据到fd为16和17的设备上。

那么16和17是什么呢:

[oracle@lunardb1 fd]$ cd proc/11159/fd

[oracle@lunardb1 fd]$ ls -lrt

total 0

lr-x------ 1 oracle oinstall 64 Jun 13 17:04 0 -> dev/null

lrwx------ 1 oracle oinstall 64 Jun 13 17:04 9 -> /u01/oracle/app/product/10.2/db_1/dbs/lkinstlunar1 (deleted)

l-wx------ 1 oracle oinstall 64 Jun 13 17:04 8 -> /u01/oracle/app/admin/lunar/bdump/alert_lunar1.log

lrwx------ 1 oracle oinstall 64 Jun 13 17:04 7 -> /u01/oracle/app/product/10.2/db_1/dbs/hc_lunar1.dat

l-wx------ 1 oracle oinstall 64 Jun 13 17:04 6 -> /u01/oracle/app/admin/lunar/bdump/alert_lunar1.log

l-wx------ 1 oracle oinstall 64 Jun 13 17:04 5 -> /u01/oracle/app/admin/lunar/udump/lunar1_ora_11099.trc

lr-x------ 1 oracle oinstall 64 Jun 13 17:04 4 -> /dev/null

lr-x------ 1 oracle oinstall 64 Jun 13 17:04 3 -> /dev/null

l-wx------ 1 oracle oinstall 64 Jun 13 17:04 2 -> /u01/oracle/app/admin/lunar/bdump/lunar1_lgwr_11159.trc

lr-x------ 1 oracle oinstall 64 Jun 13 17:04 18 -> /u01/oracle/app/product/10.2/db_1/rdbms/mesg/oraus.msb

lrwx------ 1 oracle oinstall 64 Jun 13 17:04 17 -> /dev/mapper/redolun2

lrwx------ 1 oracle oinstall 64 Jun 13 17:04 16 -> /dev/mapper/redolun1

lrwx------ 1 oracle oinstall 64 Jun 13 17:04 15 -> socket:[32662]

lrwx------ 1 oracle oinstall 64 Jun 13 17:04 14 -> /u01/oracle/app/product/10.2/db_1/dbs/hc_lunar1.dat

lr-x------ 1 oracle oinstall 64 Jun 13 17:04 13 -> /u01/oracle/app/product/10.2/db_1/rdbms/mesg/oraus.msb

lr-x------ 1 oracle oinstall 64 Jun 13 17:04 12 -> /dev/zero

lr-x------ 1 oracle oinstall 64 Jun 13 17:04 11 -> /dev/zero

lrwx------ 1 oracle oinstall 64 Jun 13 17:04 10 -> socket:[32659]

lr-x------ 1 oracle oinstall 64 Jun 13 17:04 1 -> /dev/null

[oracle@lunardb1 fd]$ 

[oracle@lunardb1 fd]$ ll 17

lrwx------ 1 oracle oinstall 64 Jun 13 17:04 17 -> /dev/mapper/redolun2

[oracle@lunardb1 fd]$ ll 16

lrwx------ 1 oracle oinstall 64 Jun 13 17:04 16 -> /dev/mapper/redolun1

这里看到,16和17就是redodg所使用的两个磁盘。也就是说,LGWR自己完成了primary extent和mirror extent的IO操作。


至此已经很清楚了,那么可以我们可以推断,DBWR等数据库操作也是有DB自己的进程完成了,而ASM只负责元数据的IO操作和维护。具体的测试,有兴趣的可以自己跟踪。


上面的跟踪信息还可以看到,实际上oracle使用AIO的方式(使用io_submit,io_getevents等),定期同步控制文件的信息,仍然是写16和17两个设备。

并且通知ARCH进程进行归档操作,并在完成后,写入alert.log的过程:


至此,已经完全可以得出结论,ASM的冗余操作分为两部分:

1,数据库中实际应用数据的冗余,primary extent和mirror extent都由数据库自己完成

2,ASM的元数据的镜像操作由ASM进程自己完成。


技术之道,求而索之,其乐无穷。


如何加入"云和恩墨大讲堂"微信群

搜索 盖国强(Eygle) :eeygle,或者扫描下面二维码,备注:云和恩墨大讲堂,即可入群。每周与千人共享免费技术分享,与讲师在线讨论。

近期文章

如约而至 | 云和恩墨大讲堂电子期刊第五期

删繁就简-云和恩墨的一道面试题解析

用SQL解一道数学题:Gauss和Poincare

Oracle 12c ASM 防火防盗新特性揭秘

DBA入门之路:学习与进阶之经验谈

资源下载

(OraNews)回复关键字获取

2016DTCC, 2016数据库大会PPT;

DBALife,"DBA的一天"精品海报大图;

12cArch,“Oracle 12c体系结构”精品海报;

DBA01,《Oracle DBA手记》第一本下载;

YunHe“云和恩墨大讲堂”案例文档下载;

最后修改时间:2020-05-07 23:31:34
文章转载自张大朋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论