ASM数据文件迁移(非存放OCR和VOTE)需求:oracle11.2.0.4ASMdatadg中的数据迁移到其他磁盘ASMDATADG数据迁移有两种方式:第一种是迁移到新的磁盘上(dg冗余策略不变)第二种是迁移到新的磁盘组上(dg冗余策略变成新磁盘组)两种方式不管是哪种,最终更改的是底层磁盘,只是dg冗余策略不同而已。第一种方式操作思路有两种:添加新的FAILGROUP,删除旧的FAILGROUP,通过dg默认rebalance,自动平衡各种数据文件往旧的FAILGROUP中添加磁盘,然后从该旧的FAILGROUP中删除旧的磁盘,循环操作即可(不做介绍)第二种方式操作思路:这种方式需要和数据库打交道。创建新的冗余策略的DG,将Oracle数据库迁移到新DG上。第一种方式思路1操作步骤:1:添加新的FAILGROUP2:查看rebalance3:删除FAILGROUP第二种方式操作思路:1:创建新DG2:进入asmcmd创建目录3:迁移oracle数据库注意:以下“SQL>”表示都在ASM实例下执行如何进入ASM管理工具执行参考我的经验:sqlplussysassysasm进入ASM管理工具http://jingyan.baidu.com/article/b2c186c8d2577ac46ef6ff02.html
第一种方式思路1操作步骤:
1、1:藜局腑载添加新的FAILGROUPSQL>selectname,path,mount_status,failgroupfromv$asm_di霜杼厮贿skorderbyname;NAME PATH MOUNT_STATFAILGROUP------------------------------------------------------------------------------DATADG_0002 /dev/mapper/dataB01 CACHEDDATAFIAL04DATADG_0005 /dev/mapper/dataB03 CACHEDDATAFIAL04GRIDMIRDG_0000 /dev/mapper/crsB11 CACHEDGMIRFAIL01GRIDMIRDG_0001 /dev/mapper/crsB12 CACHEDGMIRFIAL02GRIDNEWDG_0000 /dev/mapper/crsB13 CACHEDGNEWFIAL04GRIDNEWDG_0001 /dev/mapper/crsC01 CACHEDGNEWFIAL05_DROPPED_0003_DATADG MISSINGDATAFIAL07_DROPPED_0004_DATADG MISSINGDATAFIAL07目前DATADG存放数据文件(冗余策略--标准冗余策略),且DATADG有两个FAILGROUP:DATAFIAL07和DATAFIAL04。从上面可以发现DATAFIAL07中的磁盘都已经失效了。由于DATADG采用标准模式,一个FAILGROUP失效不会影响到数据库。所以现在需要立马添加一组FAILGROUP来恢复DATADG冗余策略,防止DATAFIAL04失效导致数据库宕机。现在我们来添加磁盘:alterdiskgroupdatadgaddfailgroupDATAFIAL08disk'/dev/mapper/dataB02';alterdiskgroupdatadgaddfailgroupDATAFIAL08disk'/dev/mapper/dataB04';alterdiskgroupdatadgaddfailgroupDATAFIAL09disk'/dev/mapper/dataB05';当然我们也可以通过添加丢失磁盘来检测磁盘是否正在丢失:SQL>alterdiskgroupdatadgaddfailgroupDATAFIAL08disk'/dev/mapper/dataA01';ERRORatline1:ORA-27061:waitingforasyncI/OsfailedLinux-x86_64Error:5:Input/outputerrorAdditionalinformation:-1注意:这里添加了两个新的FAILGROUP。因为如果想要删除旧FAILGROUPDATADG必须保留两个FAILGROUP。
2、查看rebalanceSQL>select*fromV$ASM_OPERATION;GROUP_NUMBEROPERASTATPOWERACTUAL SOFAREST_WORKEST_RATEEST_MINUTESERROR_CODE------------------------------------------------------------------------------------------------------------------------------ 1REBALRUN 1 1 1103351716 829 49SQL>showparameterasm_power_limitNAME TYPE VALUE-----------------------------------------------------------------------------asm_power_limit integer 1从中可以看出,默认rebalance采用POWER1,ASM_POWER_LIMIT:指定磁盘rebalance的程度,有0-11个级别,默认值为1,指定的级别越高,则rebalance的操作就会越快被完成(当然这也意味着这个时间段内将占用更多的资源),指定级别较低的话,虽然rebalance操作会耗时更久,但对当前系统的IO及负载影响会更少如果想加快再平衡速度。可以更改dgpower:SQL>alterdiskgroupdatadgrebalancepower5;手动平衡磁盘组可能涉及大量的工作,该操作可能费时较久,一定要注意该操作对IO性能的影响。另外再次强调,上述语句将很快返回diskgroupaltered的提示,但这并不表示操作真正完成,它只是反馈语句提交而已,查看磁盘后台的操作,可以通过v$asm_operator视图,或者在语句执行时增加wait子句,这样ASM将会等到操作真正完成时,才返回提示信息。当然可以可通过更改ASM默认SQL>altersystemsetasm_power_limit=5sid='*';只需要在一个节点执行即可
3、3:删除颇稚仑蓝旧FAILGROUPSQL>selectname,path,mount_status,failgroupfromv$asm忧溲枷茫_diskorderbyname;NAME PATH MOUNT_STATFAILGROUP------------------------------------------------------------------------------------------DATADG_0000 /dev/mapper/dataB02 CACHEDDATAFIAL08DATADG_0001 /dev/mapper/dataB04 CACHEDDATAFIAL08DATADG_0002 /dev/mapper/dataB01 CACHEDDATAFIAL04DATADG_0003 /dev/mapper/dataB05 CACHEDDATAFIAL09DATADG_0005 /dev/mapper/dataB03 CACHEDDATAFIAL04GRIDMIRDG_0000 /dev/mapper/crsB11 CACHEDGMIRFAIL01GRIDMIRDG_0001 /dev/mapper/crsB12 CACHEDGMIRFIAL02GRIDNEWDG_0000 /dev/mapper/crsB13 CACHEDGNEWFIAL04GRIDNEWDG_0001 /dev/mapper/crsC01 CACHEDGNEWFIAL05这里因为datadg是标准冗余策略,已经有三个FAILGROUP,必须留下两个FAILGROUP,可以删除旧的FAILGROUP。删除FAILGROUP的步骤:一个个删除该FAILGROUP中磁盘即可SQL>alterdiskgroupdatadgdropdiskDATADG_0005;SQL>alterdiskgroupdatadgdropdiskDATADG_0002;如果想回退删除操作:SQL>alterdiskgroupdatadgundropdisks;如果再平衡操作完成,那么回退操作是无效的。
第二种方式操作思路:
1、1:创建新DGCREATEDISKGROUPdatanewdgNORMALREDUNDANCYFAILGROUPgnewfail01DISK'/dev/mapper/dataB14'FAILGROUPgnewfial04DISK'/dev/mapper/dataB15'ATTRIBUTE'compatible.asm'='11.2.0.0.0';
2、2:进入asmcmd创建目录目录与datadg保持一致ASMCMD>cddatadgASMCMD>lsORCL/ASMCMD>cdorclASMCMD>pwd+datadg/orclASMCMD>lsCONTROLFILE/DATAFILE/ONLINELOG/PARAMETERFILE/TEMPFILE/spfileorcl.oraASMCMD>?相关命令commands:--------md_backup,md_restorelsattr,setattrcd,cp,du,find,help,ls,lsct,lsdg,lsof,mkaliasmkdir,pwd,rm,rmaliaschdg,chkdg,dropdg,iostat,lsdsk,lsod,mkdg,mountoffline,online,rebal,remap,umountdsget,dsset,lsop,shutdown,spbackup,spcopy,spgetspmove,spset,startupchtmpl,lstmpl,mktmpl,rmtmplchgrp,chmod,chown,groups,grpmod,lsgrp,lspwusr,lsusrmkgrp,mkusr,orapwusr,passwd,rmgrp,rmusrvolcreate,voldelete,voldisable,volenable,volinfovolresize,volset,volstat
3、3:迁移oracle数据库具体参考我的经验:Oracle数据库迁移http://jingyan.baidu.com/article/1974b2899ae7bef4b0f77465.html只不过将每个节点的initorcl1.ora或者initorcl2.ora文件内容修改成[oracle@node1dbs]$catinitorcl1.oraSPFILE='+datanewdg/orcl/spfileorcl.ora'同时在停止数据库后,使用ASMCMD中的cp命令复制所有文件到datanewdg:以下ASMCMD>cpspfileorcl.ora+datanewdg/orclcopying+datadg/orcl/spfileorcl.ora->+GRIDMIRDG/orcl/spfileorcl.oraASMCMD>