数据库更换存储迁移方案
生产数据库环境
数据库版本:Oracle 11g R2 RAC (11204
数据存储方式:共享存储,ASM管理
ASM 组及名字: crsdg,datadg
数据库实例名:zgdb1,zgdb2
数据库数据量:100G
操作系统版本:RedHat 5.8
数据迁移实施步骤流程
    目前数据库的数据是存放在和其他业务共用的存储上,此次实施的目的是将数据迁移到新的存储上而不影响业务正常运行,迁移方案主要利用ASM 重平衡特性实现更换存储迁移数据,
时间需要预计2天左右,大体迁移步骤就是如下几步操作:
1.首先保证新存储和RAC当前节点间的可用性;
2.将新存储划分LUN给2台数据库服务器,2台数据库服务器不替换,可以重新规划存储方案或者保持原存储方案,目前依照原存储规划方案;
3.LUN磁盘映射给ORACLE集, 通过asmca或者asm命令行添加到ASM组中;
4.迁移原OCR和votedisk表决盘到新ASM组;
5.给现有ASM磁盘组添加ASM磁盘(新存储分配的),进行数据DATADG迁移,采用ASM重平衡的方式;
6.删除原存储的ASM磁盘;
7.检查系统、集、数据库日志;
新存储映射流程
存储划分LUN映射
1.存储和服务器之间连线;
2.划分存储LUN,保证LUN数量及大小与之前旧存储划分一致;
3.在数据库服务器安装多路径软件,保证2台服务链路一致;
4.检查链路是否一致 powermt display dev=all
LUN映射到ORACLE
1.编辑/etc/udev/rules.d/50-udev.rules文件,添加新存储映射
SUBSYSTEM=="block", KERNEL=="emcpowera", GROUP="asmadmin", OWNER="grid", MODE="0660"
SUBSYSTEM=="block", KERNEL=="emcpowerb", GROUP="asmadmin", OWNER="grid", MODE="0660"
SUBSYSTEM=="block", KERNEL=="emcpowerc", GROUP="asmadmin", OWNER="grid", MODE="0660"
SUBSYSTEM=="block", KERNEL=="emcpowerd", GROUP="asmadmin", OWNER="grid", MODE="0660"
SUBSYSTEM=="block", KERNEL=="emcpowere", GROUP="asmadmin", OWNER="grid", MODE="0660"
SUBSYSTEM=="block", KERNEL=="emcpowerf", GROUP="asmadmin", OWNER="grid", MODE="0660"
2.启动udev_start,识别存储路径   
3.切到grid用户,使用ASMCA,添加新的ASM磁盘组
数据库双重备份
    数据库迁移实施之前,先把当前数据进行备份,防止迁移异常之后,能够及时恢复数据,
使用2种方式对数据库进行备份;
方式一:rman备份数据
1.开启数据库归档,启动到mount下, alter database archivelog
2.备份参数文件
create pfile=’/home/oracle/a’ from spfile;
3.备份数据库
export ORACLE_SID= zgdb1
rman target / log='/tmp/rman_full.log' append <<EOF
run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
backup as compressed backupset filesperset 6 database
format '/home/oracle/backup/full_%d_%T_%s_%p';
backup current controlfile format '/home/oracle/backup/ctl_%d_%T_%s_%p';
}
    EOF
4.备份密码文件
cp $ORACLE_HOME/dbs/initpwzgdb1 /home/oracle/backup/
5.数据库还原
startup pfile=’/home/oracle/a’nomount;
restore controlfile from '/home/oracle/rman/ctl_ ';
alter database mount;
restore database;
recover database;
alter database open;
方式二:数据泵方式进行数据库备份
1.创建directory目录
create directory backup as '/home/oracle/backup';
sql数据库迁移另一个硬盘2.授权导出用户权限
grant read,write on directory backup to system;
3.备份数据
expdp system/oracle directory=backup dumpfile=zgdb.dmp logfile=expdp.log schemas=hsman  exclude=statistics cluster=n parallel=8;
4.恢复数据
impdp system/oracle directory=backup dumpfile=zgdb.dmp logfile=impdp.log schemas=hsman cluster=n parallel=8
ASM迁移详细步骤
集迁移实施步骤
1.grid用户下,使用asmca添加新的ASM组ocrvoting,3个10G LUN,采用normal方式;
2.grid用户下,添加votedisk
crsctl query css votedisk
crsctl replace votedisk ocrvoting
create pfile='/home/a' from spfile;
create spfile='+ocrvoting' from pfile='/home/a';
3.root用户下迁移ocr
ocrcheck
ocrconfig -add +ocrvoting
ocrconfig -replace +vocrvoting -replacement +crsdg
ocrconfig -delete +crsdg
sqlplus / as sysasm
alter diskgroup crsdg dismount;
drop diskgroup crsdg including contents;
4.检查votedisk和ocr状态
crsctl query css votedisk
ocrcheck
数据迁移实施步骤
1.查看数据磁盘状态
sqlplus / as sysdba
col GROUP_NUMBER format 99
col state format a10
col name format a15
col path format a20
col failgroup format a20 
set line 200
select GROUP_NUMBER,DISK_NUMBER,STATE,REDUNDANCY,TOTAL_MB,FREE_MB,name,path,failgroup    from v$asm_disk order by GROUP_NUMBER;
2.迁移数据磁盘组数据(PATH),时间较长;
SQL> alter diskgroup DATA add disk '/DEV/EMCPOWER1' rebalance power 11;