一、RAC数据库迁移方案
oracle rac主要分为两部分:数据磁盘组和OCR磁盘组。
迁移原理:利用ASM rebalance特性进行存储迁移。
停机窗口:在线完成,无需停机。
具体步骤:
1、利用rman备份数据库
全备脚本
#这个是rman全备shell脚本
#date 2019-02-27
#定义全局变量ORACLE_SID、ORACLE_HOME、ORACLE_BASE、NLS_LANG
export ORACLE_SID=or11g
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_4
export ORACLE_BASE=/u01/app/oracle
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
#定义变量backuptime,用于保存备份文件和备份日志
backuptime=`date +"20%y%m%d%H%M%S"`
backup_dir=/u01/app/$backuptime
if [[ ! -e "$backup_dir" ]]
then
mkdir -p $backup_dir
touch $backup_dir/log
chown -R oracle:oinstall $backup_dir
chmod -R 775 $backup_dir
fi
su - oracle 1>$backup_dir/log 2>&1 <<EOF
cd $ORACLE_HOME/bin
rman target /
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
crosscheck backup;
sql 'alter system archive log current';
backup database format '$backup_dir/db_%d_%T_%U';
sql 'alter system archive log current';
backup archivelog all format '$backup_dir/arc_%t_%s' delete all input;
backup current controlfile format '$backup_dir/cntrl_%s_%p_%s';
crosscheck archivelog all;
delete noprompt expired backup;
delete noprompt obsolete;
delete noprompt backup of database completed before 'sysdate - 30';
release channel c1;
release channel c2;
release channel c3;
}
EOF
echo "backup complete!"
2、备份OCR(使用root执行)
#ocrconfig -manualback
3、检查OCR配置
#ocrcheck
4、从新存储划分磁盘(大小与原有相同)
5、使用udev绑定ASM磁盘(对于虚拟机不需要配置多路径)
6、确认新磁盘,修改asm_diskstring参数
#查看当前值
SQL> show parameter asm_diskstring
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
asm_diskstring string /dev/asm*
#修改当前参数值
SQL>alter system set asm_diskstring=’/dev/asm*’,’/dev/emcpowerh*’
注:
#’/dev/asm*‘是当前磁盘.
#’/dev/emcpowerh*'是新磁盘.
#查看新识别到的硬盘
SQL> select path from v$asm_disk;
7、使用ASMCA添加硬盘
8、等待rebalance完成
SQL> select * from v$asm_operation;
SQL> select * from gv$asm_operation;
#没有数据则rebalance完成
9、rebalance完成后删掉旧磁盘
asmca
删除相应磁盘
10、删除磁盘也会触发rebalance操作,确认rebalance操作完成后,再从操作系统层面、存储层面删除磁盘。
SQL> select * from v$asm_operation;
SQL> select * from gv$asm_operation;
SQL>select name,allocation_unit_size, total_mb from v$asm_diskgroup;
SQL>alter diskgroup dgroup1 rebalance;
二、单实例数据库迁移方案
利用rman copy 特性进行存储迁移
停机窗口:需要停机
1、划分存储、绑定,创建文件系统并挂载到新目录。新目录暂定为:/datanew
2、迁移数据文件及控制文件
#修改参数
db_create_file_dest
control_files
db_recovery_file_dest
#迁移控制文件(将数据库启动到nomount状态)
restore controlfile from ‘/u01/control01.ctl’; --旧控制文件
#将数据库启动到mount状态
alter database mount;
#迁移数据文件
backup as copy database format '/datanew';
switch database to copy;
recover database;
3、迁移临时表空间和联机日志文件,添加新的临时文件到新的磁盘组,删除老的临时文件
run
{
set newname for tempfile ‘/u01/temp01.dbf’ to ‘/datanew/temp01.dbf’;
switch tempfile all;
}
4、打开数据库
5、重建在线日志(确保都处于open)
select a.group#,a.thread#,a.members,a.archived,a.status,b.member from v$log a,v$logfile b
where a.group#=b.group#;