存储迁移(版本不变,主机不变)

2026-01-08ASM / Oracle / RAC

1)检查操作系统和数据库2)原LUN数据备份3)确认主机识别到VSP存储的LUN和多路径确保正常4)检查数据库两个节点LUN和LUNID5)设备赋权(在rac的每个节点均操作)chown -R grid:asmadmin /dev/rhdisk*chmod 660 /dev/rhdisk*6)检查存储软链接7)停应用8)替换数据库集群votingdisk、OCR、data硬盘(需停集群和数据库)

create pfile='/home/oracle/mig/pfile1' from spfile;

create pfile='/home/grid/pfile' from spfile;修改pfilecontrol_files='+datas'db_create_file_dest='+datas'db_create_online_log_dest_1='+datas'

ps -ef|grep LOCAL=NO|grep -v grep|awk '{print $2}'|xargs kill -9

调整asm disk_string参数alter system set asm_diskstring='/dev/rhdisk*' scope=both sid='*';

停scan_listner和所有节点的listenersrvctl stop scan_listenersrvctl stop listenersrvctl stop listener -n ebfibd01srvctl stop listener -n ebfibd02srvctl stop listener -n nbfibd03srvctl stop listener -n nbfibd04

停2,3,4节点的数据库ps -ef|grep LOCAL=NO|awk '{print $2}'|xargs kill -9

Sql>alter system checkpoint global;Sql>alter system archive log current;srvctl stop database -d FILEBDB -i FILEBDB2srvctl stop database -d FILEBDB -i FILEBDB3srvctl stop database -d FILEBDB -i FILEBDB4

5)数据核查和验证/home/oracle/mig/dstat.sh

/usr/DynamicLinkManager/bin/dlnkmgr view -lu|grep -E 'SerialNumber|hdisk'

创建diskgroupcreate DISKGROUP datas NORMAL REDUNDANCYFAILGROUP hds_datas_sn DISK '/dev/rhdisk1511','/dev/rhdisk1512','/dev/rhdisk1513','/dev/rhdisk1514','/dev/rhdisk1515','/dev/rhdisk1516','/dev/rhdisk1517','/dev/rhdisk1518','/dev/rhdisk1519','/dev/rhdisk1520','/dev/rhdisk1521','/dev/rhdisk1522','/dev/rhdisk1523','/dev/rhdisk1524','/dev/rhdisk1525','/dev/rhdisk1526','/dev/rhdisk1527','/dev/rhdisk1528','/dev/rhdisk1529','/dev/rhdisk1530','/dev/rhdisk1531','/dev/rhdisk1532'FAILGROUP hds_datas_gx DISK'/dev/rhdisk1611','/dev/rhdisk1612','/dev/rhdisk1613','/dev/rhdisk1614','/dev/rhdisk1615','/dev/rhdisk1616','/dev/rhdisk1617','/dev/rhdisk1618','/dev/rhdisk1619','/dev/rhdisk1620','/dev/rhdisk1621','/dev/rhdisk1622','/dev/rhdisk1623','/dev/rhdisk1624','/dev/rhdisk1625','/dev/rhdisk1626','/dev/rhdisk1627','/dev/rhdisk1628','/dev/rhdisk1629','/dev/rhdisk1630','/dev/rhdisk1631','/dev/rhdisk1632'ATTRIBUTE 'compatible.rdbms'='11.2.0.4.0','compatible.asm' = '11.2.0.4.0','compatible.advm'='11.2.0.4.0';alter diskgroup datas set ATTRIBUTE 'DISK_REPAIR_TIME'='168H';

##############################################创建替换ocrocrcheckmore /var/opt/oracle/ocr.loc

–备份ocrconfig -export ocr.bak

–替换ocr的XP24000硬盘ocrconfig -add +ocrocrconfig -replace +crs -replacement +ocrocrconfig -delete +crs–检查确认ocrcheck

–重启集群检查集群crsctl stop crscrsctl start crs

–检查确认crsctl query css votedisk####################################################

9)数据迁移startup pfile='/home/oracle/mig/pfile' nomount;迁移数据库的控制文件和数据文件到HDS的ASM上set linesize 200col NAME for a60select NAME from v$controlfile where name like '%DATA%';

rman target / restore controlfile from '+DATA/filebdb/controlfile/current.260.906447355';

alter database mount;

run{allocate channel c1 type disk;allocate channel c2 type disk;allocate channel c3 type disk;allocate channel c4 type disk;allocate channel c5 type disk;allocate channel c6 type disk;allocate channel c7 type disk;allocate channel c8 type disk;allocate channel c9 type disk;allocate channel c10 type disk;allocate channel c11 type disk;allocate channel c12 type disk;allocate channel c13 type disk;allocate channel c14 type disk;allocate channel c15 type disk;allocate channel c16 type disk;allocate channel c17 type disk;allocate channel c18 type disk;allocate channel c19 type disk;allocate channel c20 type disk;allocate channel c21 type disk;backup as copy database format '+datas';release channel c1;release channel c2;release channel c3;release channel c4;release channel c5;release channel c6;release channel c7;release channel c8;release channel c9;release channel c10;release channel c11;release channel c12;release channel c13;release channel c14;release channel c15;release channel c16;release channel c17;release channel c18;release channel c19;release channel c20;release channel c21;}

switch database to copy;

run {allocate channel c1 type disk;allocate channel c2 type disk;allocate channel c3 type disk;allocate channel c4 type disk;set newname for tempfile 1 to '+datas';set newname for tempfile 2 to '+datas';set newname for tempfile 3 to '+datas';set newname for tempfile 4 to '+datas';set newname for tempfile 5 to '+datas';set newname for tempfile 6 to '+datas';set newname for tempfile 7 to '+datas';set newname for tempfile 8 to '+datas';set newname for tempfile 9 to '+datas';set newname for tempfile 10 to '+datas';set newname for tempfile 11 to '+datas';set newname for tempfile 12 to '+datas';set newname for tempfile 13 to '+datas';set newname for tempfile 14 to '+datas';set newname for tempfile 15 to '+datas';set newname for tempfile 16 to '+datas';set newname for tempfile 17 to '+datas';set newname for tempfile 18 to '+datas';set newname for tempfile 19 to '+datas';set newname for tempfile 20 to '+datas';set newname for tempfile 21 to '+datas';set newname for tempfile 22 to '+datas';set newname for tempfile 23 to '+datas';set newname for tempfile 24 to '+datas';set newname for tempfile 25 to '+datas';set newname for tempfile 26 to '+datas';set newname for tempfile 27 to '+datas';set newname for tempfile 28 to '+datas';set newname for tempfile 29 to '+datas';switch tempfile all;release channel c1;release channel c2;release channel c3;release channel c4;}

数据迁移完成

alter database open;数据库调整

set linesize 200col member for a60set pagesize 5000SELECT a.group#, b.member, a.status FROM v$log a, v$logfile b WHERE a.group#=b.group#;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 1;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 2;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 3;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 4;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 5;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 6;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 7;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 8;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 9;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 10;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 11;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 12;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 13;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 14;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 15;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 16;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 17;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 18;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 19;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 20;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 21;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 22;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 23;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 24;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 25;ALTER DATABASE ADD LOGFILE MEMBER '+datas' TO GROUP 26;

set linesize 200set pagesize 5000col member for a60SELECT a.group#,a.THREAD#, b.member, a.status,a.bytes/1024/1024 size_g FROM v$log a, v$logfile b WHERE a.group#=b.group# order by 1;

— 在ASM磁盘组中创建服务器参数文件;调整控制文件内容调整/home/oracle/mig/pfile控制文件指针create spfile='+DATAS/FILEBDB/spfileFILEBDB.ora' from pfile='/home/oracle/mig/pfile';

— 4个节点中更新initfilebdb1.ora initfilebdb2.oracp initFILEBDB1.ora initFILEBDB1.ora.origcp initFILEBDB2.ora initFILEBDB2.ora.origcp initFILEBDB3.ora initFILEBDB3.ora.origcp initFILEBDB4.ora initFILEBDB4.ora.orig

spfile='+DATAS/filebdb/spfilefilebdb.ora'

srvctl modify database -d filebdb -p +DATAS/filebdb/spfilefilebdb.ora;srvctl config database -d filebdb srvctl modify database -d filebdb -a "DATAS,FRA"

检查验证select name from v$datafile union allselect name from v$tempfile union allselect member from v$logfile union allselect name from v$controlfileorder by 1;show parameter pfile数据库重启srvctl start database -d filebdb

/home/oracle/mig/dstat.sh

ALTER SYSTEM CHECKPOINT GLOBAL;alter system archive log current;

ALTER SYSTEM SWITCH LOGFILE;

ALTER SYSTEM SWITCH LOGFILE;ALTER SYSTEM CHECKPOINT GLOBAL;

alter database drop logfile member '+FRA/filebdb/onlinelog/group_1.257.910397437';alter database drop logfile member '+FRA/filebdb/onlinelog/group_10.266.910397959';alter database drop logfile member '+FRA/filebdb/onlinelog/group_11.322.923829391';alter database drop logfile member '+FRA/filebdb/onlinelog/group_12.307.923829585';alter database drop logfile member '+FRA/filebdb/onlinelog/group_13.314.923830095';alter database drop logfile member '+FRA/filebdb/onlinelog/group_14.271.923829777';alter database drop logfile member '+FRA/filebdb/onlinelog/group_15.319.923829973';alter database drop logfile member '+FRA/filebdb/onlinelog/group_16.296.923830301';alter database drop logfile member '+FRA/filebdb/onlinelog/group_17.313.923827113';alter database drop logfile member '+FRA/filebdb/onlinelog/group_18.302.923827299';alter database drop logfile member '+FRA/filebdb/onlinelog/group_19.320.923827487';alter database drop logfile member '+FRA/filebdb/onlinelog/group_2.258.910397509';alter database drop logfile member '+FRA/filebdb/onlinelog/group_20.300.923827673';alter database drop logfile member '+FRA/filebdb/onlinelog/group_21.277.913103929';alter database drop logfile member '+FRA/filebdb/onlinelog/group_22.278.913104135';alter database drop logfile member '+FRA/filebdb/onlinelog/group_23.311.923830499';alter database drop logfile member '+FRA/filebdb/onlinelog/group_24.312.923830693';alter database drop logfile member '+FRA/filebdb/onlinelog/group_25.310.923830891';alter database drop logfile member '+FRA/filebdb/onlinelog/group_26.303.923831715';alter database drop logfile member '+FRA/filebdb/onlinelog/group_3.262.910397583';alter database drop logfile member '+FRA/filebdb/onlinelog/group_4.263.910453839';alter database drop logfile member '+FRA/filebdb/onlinelog/group_5.259.910397657';alter database drop logfile member '+FRA/filebdb/onlinelog/group_6.260.910453511';alter database drop logfile member '+FRA/filebdb/onlinelog/group_7.261.910397733';alter database drop logfile member '+FRA/filebdb/onlinelog/group_8.264.910397809';alter database drop logfile member '+FRA/filebdb/onlinelog/group_9.265.910397883';

alter database drop logfile member '+DATA/filebdb/onlinelog/group_1.261.910397399';alter database drop logfile member '+DATA/filebdb/onlinelog/group_10.272.910397921';alter database drop logfile member '+DATA/filebdb/onlinelog/group_11.559.923829291';alter database drop logfile member '+DATA/filebdb/onlinelog/group_12.561.923829487';alter database drop logfile member '+DATA/filebdb/onlinelog/group_13.562.923829991';alter database drop logfile member '+DATA/filebdb/onlinelog/group_14.560.923829679';alter database drop logfile member '+DATA/filebdb/onlinelog/group_15.558.923829875';alter database drop logfile member '+DATA/filebdb/onlinelog/group_16.563.923830191';alter database drop logfile member '+DATA/filebdb/onlinelog/group_17.603.923827019';alter database drop logfile member '+DATA/filebdb/onlinelog/group_18.611.923827203';alter database drop logfile member '+DATA/filebdb/onlinelog/group_19.606.923827393';alter database drop logfile member '+DATA/filebdb/onlinelog/group_2.262.910397471';alter database drop logfile member '+DATA/filebdb/onlinelog/group_20.615.923827579';alter database drop logfile member '+DATA/filebdb/onlinelog/group_21.720.913103821';alter database drop logfile member '+DATA/filebdb/onlinelog/group_22.721.913104041';alter database drop logfile member '+DATA/filebdb/onlinelog/group_23.612.923830399';alter database drop logfile member '+DATA/filebdb/onlinelog/group_24.602.923830595';alter database drop logfile member '+DATA/filebdb/onlinelog/group_25.604.923830789';alter database drop logfile member '+DATA/filebdb/onlinelog/group_26.613.923831615';alter database drop logfile member '+DATA/filebdb/onlinelog/group_3.268.910397545';alter database drop logfile member '+DATA/filebdb/onlinelog/group_4.269.910453803';alter database drop logfile member '+DATA/filebdb/onlinelog/group_5.263.910397619';alter database drop logfile member '+DATA/filebdb/onlinelog/group_6.264.910453473';alter database drop logfile member '+DATA/filebdb/onlinelog/group_7.265.910397695';alter database drop logfile member '+DATA/filebdb/onlinelog/group_8.270.910397771';alter database drop logfile member '+DATA/filebdb/onlinelog/group_9.271.910397845';

ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 1;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 2;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 3;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 4;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 5;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 6;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 7;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 8;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 9;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 10;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 11;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 12;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 13;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 14;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 15;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 16;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 17;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 18;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 19;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 20;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 21;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 22;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 23;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 24;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 25;ALTER DATABASE ADD LOGFILE MEMBER '+fra' TO GROUP 26;

10)应用启动更换voting disk和ocr硬盘ALTER DISKGROUP FRA ADDFAILGROUP hds_fra_sn DISK '/dev/rhdisk1504', '/dev/rhdisk1505', '/dev/rhdisk1506', '/dev/rhdisk1507', '/dev/rhdisk1508', '/dev/rhdisk1509', '/dev/rhdisk1510'FAILGROUP hds_fra_gx DISK '/dev/rhdisk1604', '/dev/rhdisk1605', '/dev/rhdisk1606', '/dev/rhdisk1607', '/dev/rhdisk1608', '/dev/rhdisk1609', '/dev/rhdisk1610'rebalance power 11;alter diskgroup FRA drop disks in failgroup FAIL_1 rebalance power 11;alter diskgroup FRA drop disks in failgroup FAIL_2 rebalance power 11;

ALTER DISKGROUP DG_VOTE ADDFAILGROUP hds_vote_sn1 DISK '/dev/rhdisk1500'FAILGROUP hds_vote_sn2 DISK '/dev/rhdisk1501'FAILGROUP hds_vote_gx DISK '/dev/rhdisk1600'rebalance power 11;

alter diskgroup DG_VOTE drop disks in failgroup FAIL_1 rebalance power 11;alter diskgroup DG_VOTE drop disks in failgroup FAIL_2 rebalance power 11;alter diskgroup DG_VOTE drop disks in failgroup FAIL_3 rebalance power 11;

ALTER DISKGROUP DG_OCR ADDFAILGROUP hds_ocr_sn DISK '/dev/rhdisk1502'FAILGROUP hds_ocr_gx DISK '/dev/rhdisk1602'rebalance power 11;alter diskgroup DG_OCR drop disks in failgroup FAIL_1 rebalance power 11;alter diskgroup DG_OCR drop disks in failgroup FAIL_2 rebalance power 11;

ALTER DISKGROUP DG_VOTE_GX ADD DISK '/dev/rhdisk1603' name hds_gx_addrebalance power 11;ALTER DISKGROUP DG_VOTE_SN ADD DISK '/dev/rhdisk1503' name hds_sn_addrebalance power 11;alter diskgroup DG_VOTE_SN drop disk DG_VOTE_SN_0000 rebalance power 11;alter diskgroup DG_VOTE_GX drop disk DG_VOTE_GX_0000 rebalance power 11;alter diskgroup DG_VOTE_GX drop disk hds_gx rebalance power 11;

ALTER DISKGROUP DG_OCR CHECK ALL;ALTER DISKGROUP DG_OCR CHECK ALL REPAIR;

ALTER DISKGROUP DG_VOTE CHECK ALL;ALTER DISKGROUP DG_VOTE CHECK ALL REPAIR;

alter diskgroup DATA dismount;srvctl modify database -d filebdb -p +DATAS/FILEBDB/spfileFILEBDB.orasrvctl config database -d filebdbsrvctl modify database -d filebdb -a "DATAS,FRA"srvctl disable diskgroup -g DATAsrvctl remove diskgroup -g DATA Cf

alter system set asm_preferred_read_failure_groups='DATAS.HDS_DATAS_GX', 'FRA.HDS_FRA_GX' scope=both sid='+ASM1';alter system set asm_preferred_read_failure_groups='DATAS.HDS_DATAS_GX', 'FRA.HDS_FRA_GX' scope=both sid='+ASM2';alter system set asm_preferred_read_failure_groups='DATAS.HDS_DATAS_SN', 'FRA.HDS_FRA_SN' scope=both sid='+ASM3';alter system set asm_preferred_read_failure_groups='DATAS.HDS_DATAS_SN', 'FRA.HDS_FRA_SN' scope=both sid='+ASM4';alter system set asm_diskgroups='DATAS','FRA','DG_OCR','DG_VOTE_GX','DG_VOTE_SN', 'DG_VOTE' scope=spfile sid='*';

alter system set asm_diskgroups='DATAS','FRA','DG_OCR','DG_VOTE_GX','DG_VOTE_SN', 'DG_VOTE' scope=both sid='+ASM1';alter system set asm_diskgroups='DATAS','FRA','DG_OCR','DG_VOTE_GX','DG_VOTE_SN', 'DG_VOTE' scope=both sid='+ASM2';alter system set asm_diskgroups='DATAS','FRA','DG_OCR','DG_VOTE_GX','DG_VOTE_SN', 'DG_VOTE' scope=both sid='+ASM3';alter system set asm_diskgroups='DATAS','FRA','DG_OCR','DG_VOTE_GX','DG_VOTE_SN', 'DG_VOTE' scope=both sid='+ASM4';

srvctl remove diskgroup -g data -falter diskgroup data mount;

检查确认crsctl query css votediskocrcheck

set linesize 200set pagesize 5000col path for a30col name for a15col FAILGROUP for a20select g.name,d.path,d.name,round(d.OS_MB/1024) SIZE_G,d.failgroup,d.HEADER_STATUS,d.MOUNT_STATUS,d.STATEFROM v$asm_diskgroup g, v$asm_disk dwhere d.group_number= g.group_numberorder by 1,2,3;

启动其他节点的数据库sqlplus "/ as sysdba"startup

4个节点重启集群和数据库/grid/app/11.2.0/grid/bin/crsctl stop crs/grid/app/11.2.0/grid/bin/crsctl start crs

停4个节点集群和数据库/grid/app/11.2.0/grid/bin/crsctl stop crs

12)所有主机删除EMC设备13)HDS链路调整14)调整硬盘权限chown -R grid:asmadmin /dev/rhdisk*chmod 660 /dev/rhdisk*

/usr/DynamicLinkManager/bin/dlnkmgr view -lu|grep -E 'SerialNumber|hdisk'

ls -l /dev/rhdisk*