ASM DISKGROUP Migrate to Anotherr SAN (迁移ASM到新存储)
上周刚刚做了ASM Storage的一套13T 2 Nodes 11GR2 database RAC ON AIX 从老的SAN迁移到新的SAN , 迁移的磁盘组包含了DATAFILE 和所有Clusterware 的文件(OCR andvoting disk), ORACLE ASM 的Rebalance特性使这件事情变的非常的容易,随着ASM的逐渐成熟,如果你计划做对已使用了ASM disggroup 做存储的迁移,ASM 的Rebalance 可以做为一套解决方案而且可以做到0 Downtime, 下面简单的分享这个过程。
迁移步骤
1.备份整个数据库和GI文件,并验证备份文件有效性
GI.
# ocrcheck
# crsctl query css votedisk
DB.
spfile,controlfile,datafile,logfile,tempfile,archivelog..
select d.name group_name,f.type,count(*) cnt from v$asm_file f join v$asm_diskgroup d on f.group_number=d.group_number group by rollup (d.name,f.type);
A 迁移GI
1, 迁移OCR
Run as Root user # ocrconfig -add +CRSDG_NEW # ocrconfig -delete +CRSDG
2, 迁移VotingDisk
Run as Root user # crsctl replace votedisk +CRSDG_NEW
B ASM spfile
sqlplus / as sysasm SQL> create pfile='/tmp/init/init' from spfile; SQL> create spfile='+CRSDG_NEW' from pfile='/tmp/init/init';
验证
As grid user or root $ ORACLE_HOME/bin/gpnptool get or As grid user $ asmcmd spget
NOTE:
12C后flex ASM同样需要迁移ASM password file.
ASMCMD> pwget --asm ASMCMD> pwcopy --asm +OLDDG +NEWDG/pwdasm_bak
C 迁移DB
1, 主机挂载存储LUN
2.增加新存储磁盘路径配置asm_diskstring(ASM INSTANCE)
SQL> show parameter asm_diskstring
3.确认新存储盘可以在v$asm_disk视图中存在,检查当前的ASM DISKGROUP和ASM DISK
Disk Group Information
set pages 40000 lines 120 col NAME for a15 select GROUP_NUMBER DG#, name, ALLOCATION_UNIT_SIZE AU_SZ, STATE, TYPE, TOTAL_MB, FREE_MB, OFFLINE_DISKS from v$asm_diskgroup;
ASM Disk Information
col name for a20 select group_number,name,OS_MB ,TOTAL_MB,FREE_MB ,HOT_USED_MB,COLD_USED_MB,PATH ,SECTOR_SIZE from v$asm_disk order by 1;
Combined ASM Disk and ASM Diskgroup information
col PATH for a20 col DG_NAME for a15 col DG_STATE for a10 col FAILGROUP for a15 col name for a20 set lines 200 pages 10000 select dg.name dg_name, dg.state dg_state, dg.type, d.disk_number dsk_no, d.path, d.mount_status, d.FAILGROUP,d.name, d.state from v$asm_diskgroup dg, v$asm_disk d where dg.group_number=d.group_number order by dg_name, dsk_no;
SAN LUN Information
#lsdev -Cc disk
4.分批替换ASM DISKGROUP 存储LUN, 以ASM DISKGROUP 为单元
5.一次增加一批新ASM Disks 空间足够替换ASM Diskgroup原有组大小(比原磁盘组多一个asmdisk),并指定初始化asm_power_limit = 5 控制ASM Rebalance 强度,根据I/O 可承
受可适当调整并行强度。
ALTER DISKGROUP dgroup1 ADD DISK '/devices/diskd1', '/devices/diskd2', '/devices/diskd3' REBALANCE POWER 5 ;
6.监控ASM 增加后均衡进度(Monitoring ASM disk operations)
select GROUP_NUMBER, OPERATION, STATE, ACTUAL, SOFAR, EST_MINUTES from Gv$asm_operation;
7.等ASM Rebalance完成后,对磁盘组上个别表查询验证 ASM DISKGROUP 可读写
8.一次删除已增加新磁盘asmdiskgroup的所有老asmdisk 并指定Rebalance power
ALTER DISKGROUP DATADG1 drop DISK 'DATADG1_0000', 'DATADG1_0001', 'DATADG1_0002', 'DATADG1_0003' REBALANCE POWER 8;
9.监控ASM 删除后均衡进度(Monitoring ASM disk operations)
select GROUP_NUMBER, OPERATION, STATE, ACTUAL, SOFAR, EST_MINUTES from Gv$asm_operation;
10.其它ASM DISKGROUP 替换重复使用5# 到9# 步骤
注意事项:
1.更建议在数据库事务不繁忙的时刻或维护窗口去做迁移
2.asm_power_limit可动态调整建议在5-9,白天可以调到最低1,晚上可以适当加大,加大该参数会增加I/O 和CPU 负载
3.一次增加一批是为了减少数据在磁盘上的重组次数(这里一个原有750G*4,新增加750G*5 的ASM DG在POWER 是5和有事务情况disk io 95+busy 下 用了6小时左右)
4.通过GV$ASM_operation 的EST_MINUTES 可以估算Rebalance剩余时间,但是11g 是最后一步增加了COMPACT 步骤,是物理磁盘上优化操作,可能会使用很久一段时间容易造成
Rebalance hang假象,可以配置隐藏参数_DISABLE_REBALANCE_COMPACT=TRUE禁用,不到迫不得已不建议生产上禁用(这里一个原有750G*4,新增加750G*5 的ASM DG就最后的
COMPACT 在POWER 是8的情况下用了1个小时,HP xp24000 migrate VPS)
5. 如果未指定依赖说系统参数asm_power_limit(可动态调整);修改指定了alter diskgroup drop disk 时指定了POWER可以使用下面的SQL:
alter diskgroup [dgname] rebalance power [N];
6. 一个操作可以同时rebalance add new disk and drop disk
Reference:
MOS # 837308.1 Exact Steps To Migrate ASM Diskgroups To Another SAN/Disk-Array/DAS/etc Without Downtime.
对不起,这篇文章暂时关闭评论。