rac进行image copy备份,以及异机单机switch to copy方式恢复

前提:rac和单机上的oracle版本必须完全一致,此处采用11.2.0.4版本测试。(库名、实例名、sys密码、ORACLE_HOME等配置两方可以不一样,恢复后只有数据库名会变成和源端一样。一般会在恢复端dbca创建一个新的空库和实例用来做恢复。)

集群rac1节点进行rman备份,参数文件、数据文件、控制文件全部备份在节点1下的zc_test目录下,归档日志分布在节点1、节点2各自的文件系统中,故申请两个channel,分别备份在各自的zc_test/archive_dir中(以下的c2通道@的参数为节点2的ip和service_name)。在rman中执行

backup as copy spfile format '/home/oracle/zc_test/%U.ora';
backup incremental level 0 as copy tag 'test1' database format '/home/oracle/zc_test/%U.dbf';
run {
ALLOCATE CHANNEL c1 TYPE DISK CONNECT 'sys/oracle';
ALLOCATE CHANNEL c2 TYPE DISK CONNECT 'sys/oracle@192.168.13.12/rac';
backup as copy archivelog all format '/home/oracle/zc_test/archive_dir/%U.arc';
release channel c1;
release channel c2;
}
backup as copy current controlfile format '/home/oracle/zc_test/%U.ctl';

备份归档日志时若不创建其他节点的channel,将报错“***归档日志找不到”,ORA-19625。如下图。(若其他节点挂了,需要rman将归档日志记录全部删除,执行DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-0';,再重新备份)

集群rac1节点将spfile导出成可视化文件,在sqlplus中执行

create pfile='/home/oracle/zc_test/rac.ora' from spfile;

将两个节点zc_test目录下的所有备份数据拷贝至单机环境的/home/oracle/rac_dir目录下,并chown -R将所有文件的拥有者改为oracle:oinstall,修改rac.ora。删除集群参数,修改路径。(此处创建/home/oracle/app/oracle作为基础目录)

修改前

rac1.__db_cache_size=289406976
rac2.__db_cache_size=289406976
rac1.__java_pool_size=4194304
rac2.__java_pool_size=4194304
rac1.__large_pool_size=8388608
rac2.__large_pool_size=8388608
rac1.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
rac2.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
rac1.__pga_aggregate_target=268435456
rac2.__pga_aggregate_target=268435456
rac1.__sga_target=503316480
rac2.__sga_target=503316480
rac1.__shared_io_pool_size=0
rac2.__shared_io_pool_size=0
rac1.__shared_pool_size=192937984
rac2.__shared_pool_size=192937984
rac1.__streams_pool_size=0
rac2.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/rac/adump'
*.audit_trail='db'
*.cluster_database=TRUE
*.commit_write='batch,nowait'
*.compatible='11.2.0.4.0'
*.control_files='+DATA/rac/controlfile/current.260.1092592629'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_name='rac'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=racXDB)'
rac2.instance_number=2
rac1.instance_number=1
*.memory_target=769654784
*.open_cursors=300
*.processes=150
*.remote_listener='rac13-10-scan:1521'
*.remote_login_passwordfile='exclusive'
rac2.thread=2
rac1.thread=1
rac2.undo_tablespace='UNDOTBS2'
rac1.undo_tablespace='UNDOTBS1'

修改后

*.audit_file_dest='/home/oracle/app/oracle/admin/zhangchen/adump'
*.audit_trail='db'
*.commit_write='batch,nowait'
*.compatible='11.2.0.4.0'
*.control_files='/home/oracle/rac_dir/cf_D-RAC_id-2680574645_3h119equ.ctl'
*.db_block_size=8192
*.db_create_file_dest='/home/oracle/app/oracle/oradata'
*.db_domain=''
*.db_name='rac'
*.diagnostic_dest='/home/oracle/app/oracle'
*.dispatchers=''
*.memory_target=769654784
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='exclusive'

为数据路径创建新的保存目录(不覆盖单机上之前的/u01/...原始数据),以oracle用户身份创建对应目录。(主要为日志目录、asm访问记录存放目录、控制文件路径等)

mkdir -p /home/oracle/app/oracle/oradata/zhangchen
mkdir -p /home/oracle/app/oracle/fast_recovery_area
mkdir -p /home/oracle/app/oracle/admin/zhangchen/adump

oracle用户身份执行orapwd设置单机中的实例sys用户的访问密码,也可在恢复后再执行 (文件名必须为orapw$ORACLE_SID)

orapwd file=$ORACLE_HOME/dbs/orapworadb password=123456 force=y

rman执行恢复

shutdown immediate;
startup nomount pfile='/home/oracle/rac_dir/rac.ora';
restore controlfile from '/home/oracle/rac_dir/cf_D-RAC_id-2680574645_3h119equ.ctl';
alter database mount;
catalog archivelog ******;
catalog datafilecopy ******;
switch database to copy;
recover database until scn ******;
alter database open resetlogs;

注:直接recover database会报错,控制文件的scn和数据文件的scn不一致,需设置参数until 指定scn号。如图

alter database open resetlogs; 可能会报错,以下为对应解决方法:

  • ORA-00349,需重置redo日志路径或者重置块跟踪日志路径。首先是重新执行恢复,然以后在open resetlogs执行之前完成路径重命名alter database rename file '***' to '***';     另外执行alter database disable block change tracking;关闭块跟踪。最后再执行alter database open resetlogs则可以启动数据库了。

注:此处可能会遇到问题查询select member from v$logfile;视图展示路径不全(如下图)的问题,只展示+data或者+fra导致无法rename。原因是先执行了alter database open resetlogs导致修改了控制文件中的参数,所以rename一定要在alter database open resetlogs之前完成

 

恢复到单机结果验证:

rac环境

恢复后的单机环境

查询各节点ip:select utl_inaddr.get_host_address(host_name) from gv$instance;

查询服务名:show parameter service;

查看数据库是否属于rac:show parameter cluster_database;

普通恢复到异机rac脚本如下:

##asmcmd下将参数文件、控制文件、数据文件、归档日志拷贝到共享盘中
spfile_path=***
controlfile_path=***

rman target sys/123456 << !
startup nomount;
restore spfile to '/data/oracle/product/11.2.0/dbs/spfileorcl_mount_test.ora' from '$spfile_path';
sql 'alter system set control_files="$controlfile_path" scope=spfile';
restore controlfile from '$controlfile_path';
alter database mount;
catalog datafilecopy ...
catalog archivelog ...
switch database to copy;
run{
set until time "to_date('2022-03-10 16:50:00','yyyy-mm-dd hh24:mi:ss')";
recover database skip forever tablespace users;
}
alter database open resetlogs;
exit
!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值