oracle数据库迁移存储方案

一、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 <

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#;

你可能感兴趣的:(oracle数据库,数据库,oracle,database)