原作者:Bane Radulovic
译者: 魏兴华
审核: 魏兴华
DBGeeK社区联合出品
原文链接:http://asmsupportguy.blogspot.sg/2015/12/asm-data-scrubbing.html
根据维基百科, 数据清理(data scrubbing)的定义是“一种数据纠错技术,利用后台任务周期性的扫描内存或存储的错误,在检测到错误后利用数据的多余副本来对数据进行纠正,数据清理可以减少数据错误不断累计的可能性,进而降低由数据错误带来的风险”。
数据清理(disk scrubbing)是Oracle 12C ASM出现的新功能, Oracle ASM 12C官方文档中写道,“ASM的磁盘清理通过校验不经常被读取的数据,提高了可用性和可靠性,对于磁盘组是normal 和 high redundancy冗余模式的,磁盘清理会检查数据的逻辑错误,在发现后利用镜像磁盘进行错误的自动修复,同时磁盘清理利用了磁盘组的冲平衡功能来降低IO资源的消耗。”
Setup
首先我们来构造一个实验,我的环境中有一个normal冗余的磁盘组DATA,有一点需要在这里指出来,本环境中的磁盘管理是通过12.1.0.2的ASM filter driver (AFD)来做的。
译者注:AFD,这是一个可以取代 ASMLIB 和 udev 设置的新功能,并且还增加了 I/O Filter 功能,该功能可以拒绝所有无效的 I/O 请求,最主要的作用是防止意外覆写 ASM 磁盘的底层盘。
[grid@dbserver]$ sqlplus / as sysasm
SQL*Plus: Release 12.1.0.2.0 Production on Tue Dec 8 14:08:22 2015
...
SQL> select NAME, TYPE, STATE from v$asm_diskgroup_stat;
NAME TYPE STATE
------------ ------ -----------
DATA NORMAL MOUNTED
SQL> select DISK_NUMBER, PATH from v$asm_disk_stat;
DISK_NUMBER PATH
----------- ----------------
0 AFD:ASMDISK01
2 AFD:ASMDISK03
4 AFD:ASMDISK05
1 AFD:ASMDISK02
6 AFD:ASMDISK07
5 AFD:ASMDISK06
3 AFD:ASMDISK04
7 rows selected.
SQL>
我在这个磁盘组中创建了一些数据文件:
[grid@dbserver]$ asmcmd ls +DATA/BR/DATAFILE
SYSTEM.261.887497785
USERS.262.8874978313
UNDOTBS1.269.887497831
SYSAUX.270.887497739
T1.305.897911209
T2.306.897911479
T3.307.897911659
Scrubbing a file
我们可以通过ASM的清理功能去对一个磁盘组、一个盘、一个文件做清理,下面的例子里,我们演示对一个ASM文件做清理。