RAC

环境介绍:源库为RAC环境,目标库为RAC环境,通过rman进行异机迁移及追加归档的方式实现数据迁移。减少停机时间。

在RAC任一节点上(建议选择CPU占用少的节点),使用Oracle用户设置源数据库的ORACLE_SID,并使用数据库的rman用户登录RMAN

在rman中执行备份脚本

备份没有报错就说明备份成功了。

脚本说明:脚本中的红色部分,可结合具体业务情况修改retention policy:备份保留时长,根据业务迁移的时间规划,设备保留多少天,这里设置保留50天controlfile autobackup:是否自动备份控制文件,及控制文件备份的路径和备份集的文件名,建议打开控制文件自动备份,备份路径根据实际业务修改Allocate channel:根据源数据库服务器的性能分派合理的通道,比如有8核的CPU,比如空闲CPU的60%。Backup incremental level 0:首次备份必须是Level 0备份集的路径:数据库和归档日志备份集的路径可根据实际业务调整

可选项:压缩备份集

可在backup后加上as compressed backupset,对备份集进行压缩:

说明:启用备份集的压缩,CPU的占用率较高,一般2个通道大约占用70%的CPU(实验室测试数据),过高的CPU占用率会影响数据库的性能,可能导致数据库挂起,建议在业务空间时间使用。压缩率为7:1,即700G的数据库,备份后大约为100G,以性能及时间换空间,若网络传输不是数据库迁移的瓶颈,建议不压缩。Oracle10g备份集压缩bug比较多,不建议使用。oracle11g备份集压缩比较成熟,必要时可考虑使用。

创建备份集目录

备份集建议存储在共享存储,各节点都可以访问,若存储在任一节点的本地,则后续只能在该节点备份。

备份路径规划:

Backup Level

Backup Path

Level 0

/home/oracle/backup/L0/

Arch备份

/home/oracle/backup/arch

创建备份文件目录,并赋予权限:

Oracle用户创建

# mkdir -p /home/oracle/backup/L0/

# mkdir -p /home/oracle/backup/arch

通过scp命令将源端的所有备份文件传输到目标端服务器相应的备份目录下。

oracle@rac01:/home/oracle/backup>scp -r L0

oracle@192.168.100.113:/home/oracle/backup/

在目标端的节点1上,以Oracle用户操作

启动数据库到nomount状态

恢复pfile文件

源数据库查看spfile备份信息

关闭数据库

RMAN> shutdown immediate

在目标数据库RAC的节点1上,以Oracle用户操作

打开pfile文件

内存参数

根据目标数据库实际的物理内存调整

创建目录

*.audit_file_dest='/u01/app/oracle/admin/racdb/adump'

在RAC的所有节点上,创建目录:

/u01/app/oracle/admin/racdb/adump

Oracle用户创建审计目录

# mkdir -p /u01/app/oracle/admin/racdb/adump

数据文件磁盘组

*.db_create_file_dest='+DATA'

db_create_file_dest指定了数据文件所在的磁盘组+DATA,恢复前确保+DATA磁盘组已创建或修改为正确的磁盘组名。

FRA

*.db_recovery_file_dest='+ARCH'

FRA磁盘组,恢复前确保+FRA磁盘组已创建或修改为正确的磁盘组名

*.db_recovery_file_dest_size=4193255424

ARCH大小,请确保目标服务器有至少4193255424的大小或根据目标服务器+ARCH的磁盘组大小修改

db_recovery_file_dest_size参数值

在grid账号下,asmcmd指令集内创建’+DATA/racdb/controlfile’目录,如果启用了OMF这步可以不做。本次采用OMF管理不需要创建。

在目标数据库RAC的节点1上,以Oracle用户操作

启动数据库到nomount

设置DBID

RMAN> set dbid 1101198979;

此dbid号从源端查询而来

Sql>select dbid from v$database;

指定备份控制文件路径和文件名,恢复控制文件

在目标数据库RAC的节点1上,以Oracle用户操作

修改pfile中控制文件信息

编辑$ORACLE_HOME/dbs/下的pfile文件initracdb1.ora,其中racdb1为节点1的ORACLE SID,修改*.control_files参数的控制文件名,控制文件的路径和名称参考控制文件恢复的结果。

启动数据库到mount状态

创建spfile文件到ASM

在ASM中查看生成的spfile文件

修改参数文件指向spfile文件位置

关闭数据库

当前的数据库是以pfile文件启动,恢复前关闭数据库以spfile文件启动。

SQL> shutdown immediate;

在目标数据库RAC的节点1上,以Oracle用户操作

修改还原数据库脚本中的set newname信息:磁盘组、路径及文件名.

此处如果为omf管理且磁盘组名称一致的不需要指定文件的名称及set newname命令

查看需要变更路径的数据文件

select 'set newname for datafile '||file#||' to '''||name||''';' from v$datafile;

查看需要重建的tempfile

select 'alter database tempfile '''||file_name||''' offline ' from dba_temp_files;

查看需要drop的temp表空间

select 'alter database tempfile '''||file_name||''' drop ' from dba_temp_files;

RMAN>场景1修改文件路径

场景2不修改路径

恢复成功

由于未复制online redo log,提示介质恢复正在请求未知的线程 1序列43的scn 1428035,忽略该错误。

若源数据库打开了块跟踪,在恢复时Oracle会提示相关错误信息,建议禁用块跟踪,在目标数据库RAC的节点1上,以Oracle用户操作

在目标数据库RAC的节点1上,以Oracle用户操作使用readonly打开数据库 查看数据表情况

查看新增归档文件

备份归档文件

List backup of archivelog all;


下一篇:ORACLE RAC中连接ScanIP报错ORA