1.首先在源rac 环境创造 数据,任何能体现与恢复环境不同的情况都可以。

本次模拟环境的目标机器上有一个db名与rac库一致的单实例db简略部分步骤

insert into test.table1 values('2','B');
insert into test.table1 values('3','C');
commit;

2.对源库rac环境进行备份

#!/bin/sh
export
BACKUP_DATE=`date +%d`
RMAN_LOG_FILE=/backup/backup_test0_pdb_`date +%y%m%d`.log
TODAY=`date`
USER=`id|cut -d "(" -f2|cut -d ")" -f1`
echo "-----------------$TODAY-------------------">$RMAN_LOG_FILE
export PATH
export ORACLE_BASE=/u01/oracle/app/oracle
export ORACLE_HOME=/u01/oracle/app/oracle/product/12.1.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=racdb1
ORACLE_SID=racdb1
export ORACLE_SID
ORACLE_USER=oracle
export ORACLE_USER
echo "ORACLE_SID: $ORACLE_SID">>$RMAN_LOG_FILE
echo "ORACLE_HOME:$ORACLE_HOME">>$RMAN_LOG_FILE
echo "ORACLE_USER:$ORACLE_USER">>$RMAN_LOG_FILE
echo "==========================================">>$RMAN_LOG_FILE
echo "BACKUP DATABASE BEGIN......">>$RMAN_LOG_FILE
echo "                   ">>$RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE
WEEK_DAILY=`date +%a`
echo "WARING!!!!!!!!! BEGIN TO BACKUP!!!!!!">>$RMAN_LOG_FILE
echo "Today is : $WEEK_DAILY incremental level= 0">>$RMAN_LOG_FILErman nocatalog target / log $RMAN_LOG_FILE  <<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
alter system switch logfile ;
alter system switch logfile ;
alter system switch logfile ;
alter system switch logfile ;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/ctl_lev0_backup_%d.%F.conf';
backup  incremental level=0 skip inaccessible filesperset 6 database format='/backup/data_lev0_%U_%T'  tag='backup_lev0';
backup filesperset 5 format '/backup/racdb_%d_%T_%s' archivelog all ;
backup current controlfile format '/backup/ctl_lev0_%U_%T';
alter system switch logfile ;
release channel c2;
release channel c1;
release channel c3;
release channel c4;
}
allocate channel for maintenance device type disk;
report obsolete;
delete noprompt obsolete;
crosscheck backup;
delete noprompt expired backup;
list backup summary;
release channel;
EOF

3.以更改好的pfile 文件启动数据库到nomount状态,相关pfile文件涉及的目录需要被创建及赋权

.audit_file_dest='/u01/oracle/app/oracle/admin/racdb/adump'
*.audit_trail='DB'
*.cluster_database=FALSE
*.compatible='12.1.0.2.0'
*.connection_brokers='((TYPE=DEDICATED)(BROKERS=1))','((TYPE=EMON)(BROKERS=1))'# connection_brokers default value
*.control_files='/oradata/racdb/control01.ctl','/oradata/racdb/control02.ctl'
*.core_dump_dest='/u01/oracle/app/oracle/diag/rdbms/racdb/racdb/cdump'
*.db_block_size=8192
*.db_create_file_dest='/oradata'
*.db_domain=''
*.db_name='racdb'
*.diagnostic_dest='/u01/oracle/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=racdbXDB)'
*.enable_pluggable_database=TRUE
*.log_archive_dest_1='location=/oradata/racdbarch'
*.log_buffer=5068K# log buffer update
*.open_cursors=300
*.optimizer_dynamic_sampling=2
*.optimizer_mode='ALL_ROWS'
*.pga_aggregate_target=256M
*.plsql_warnings='DISABLE:ALL'# PL/SQL warnings at init.ora
*.processes=300
*.query_rewrite_enabled='TRUE'
*.remote_login_passwordfile='EXCLUSIVE'
*.result_cache_max_size=3936K
*.sga_target=768M
*.skip_unusable_indexes=TRUE
*.undo_tablespace='UNDOTBS1'

4.使用传输过来的备份集恢复控制文件(记得最好源端的目录与目标端恢复目录一致)

rman target /
startup nomount pfile='/home/oracle/initracdb1125.ora' ;
restore controlfile from '/backup/ctl_lev0_backup_RACDB.c-1086556923-20211126-01.conf';

5.将备份集注册到控制文件

RMAN> alter database mount;
RMAN> CATALOG START WITH '/backup';

6.确认恢复库的数据文件情况,进行更改,目的便于恢复到目标库的环境状态下;

set pagesize 200
set linesize 200
select 'SET NEWNAME FOR DATAFILE '|| file# ||' to ' ||''''|| name ||''''|| ';' from v$datafile;--根据实际情况确认更改
SET NEWNAME FOR DATAFILE 1 to '/oradata/racdb/system.260.1088939967';
SET NEWNAME FOR DATAFILE 3 to '/oradata/racdb/sysaux.259.1088939875';
SET NEWNAME FOR DATAFILE 4 to '/oradata/racdb/undotbs1.262.1088940095';
SET NEWNAME FOR DATAFILE 5 to '/oradata/racdb/pdbseed/system.268.1088940189';
SET NEWNAME FOR DATAFILE 6 to '/oradata/racdb/users.261.1088940093';
SET NEWNAME FOR DATAFILE 7 to '/oradata/racdb/pdbseed/sysaux.267.1088940189';
SET NEWNAME FOR DATAFILE 8 to '/oradata/racdb/undotbs2.270.1088940777';
SET NEWNAME FOR DATAFILE 9 to '/oradata/racdb/pdb1/system.274.1088941153';
SET NEWNAME FOR DATAFILE 10 to '/oradata/racdb/pdb1/sysaux.275.1088941153';
SET NEWNAME FOR DATAFILE 11 to '/oradata/racdb/pdb1/users.277.1088941313';

7.进行恢复

CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
SET NEWNAME FOR DATAFILE 1 to '/oradata/racdb/system.260.1088939967';
SET NEWNAME FOR DATAFILE 3 to '/oradata/racdb/sysaux.259.1088939875';
SET NEWNAME FOR DATAFILE 4 to '/oradata/racdb/undotbs1.262.1088940095';
SET NEWNAME FOR DATAFILE 5 to '/oradata/racdb/pdbseed/system.268.1088940189';
SET NEWNAME FOR DATAFILE 6 to '/oradata/racdb/users.261.1088940093';
SET NEWNAME FOR DATAFILE 7 to '/oradata/racdb/pdbseed/sysaux.267.1088940189';
SET NEWNAME FOR DATAFILE 8 to '/oradata/racdb/undotbs2.270.1088940777';
SET NEWNAME FOR DATAFILE 9 to '/oradata/racdb/pdb1/system.274.1088941153';
SET NEWNAME FOR DATAFILE 10 to '/oradata/racdb/pdb1/sysaux.275.1088941153';
SET NEWNAME FOR DATAFILE 11 to '/oradata/racdb/pdb1/users.277.1088941313';
restore database;
switch datafile all;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}

8.recover database;

RMAN> recover database;Starting recover at 26-NOV-21
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=23 device type=DISKstarting media recoverychannel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=76
channel ORA_DISK_1: reading from backup piece /backup/racdb_RACDB_20211126_157
channel ORA_DISK_1: piece handle=/backup/racdb_RACDB_20211126_157 tag=TAG20211126T100516
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/oradata/racdbarch/1_76_1088940159.dbf thread=1 sequence=76
unable to find archived log
archived log thread=1 sequence=77
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 11/26/2021 10:45:23
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 77 and starting SCN of 3270738rman recover 过程中 报错 在备份中无法找到sequence就会报错RMAN-06054sequence 是 数据库日志递增序列号,日志切换时会顺序递增。
thread 是 instance ID ,单实例是 1,rac环境会出现大于1的情况
scn 是 system change NUMBER 是跟随事务递增的
源端去查
rman target /
list backup of archivelog sequence 77 thread 1;
specification does not match any backup in the repository查询到源端归档日志备份情况,结果发现并没有进行备份
RMAN> list backup of archivelog all;List of Backup Sets
===================BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
155     4.99M      DISK        00:00:05     26-NOV-21      BP Key: 155   Status: AVAILABLE  Compressed: NO  Tag: TAG20211126T100516Piece Name: /backup/racdb_RACDB_20211126_157List of Archived Logs in backup set 155Thrd Seq     Low SCN    Low Time  Next SCN   Next Time---- ------- ---------- --------- ---------- ---------1    75      3269418    26-NOV-21 3269426    26-NOV-21

恢复过程中可能会报错,要确定归档是否存在,因为所需要的归档并未被备份,所以可以进行 open resetlog .
在11g官方文档error messages中对错误描述如下:
RMAN-06054: media recovery requesting unknown archived log for thread string with sequence string and starting SCN of string

Cause: Media recovery is requesting a log whose existence is not recorded in the recovery catalog or target database control file.
Action: If a copy of the log is available, then add it to the recovery catalog and/or control file via a CATALOG command and then retry the RECOVER command. If not, then a point-in-time recovery up to the missing log is the only alternative and database can be opened using ALTER DATABASE OPEN RESETLOGS command.

可见,出先此错误的原因是恢复需要的日志记录在控制文件或恢复目录中找不到。解决方法分两种情况:
1.如果相关的日志存在且可用的话,就将此日志记录添加到控制文件或恢复目录中。
2.如果相关的日志已经被删除了或不可用了,那么就按照错误的提示scn将数据库恢复到此scn。也就是说此时数据库只能进行不完全恢复了.
3.在打开数据库时得使用resetlogs打开。

9.修改恢复库redo

set linesize 200
select 'alter database rename file '''||member||q'[' to '/oradata/racdb';]' from v$logfile;--根据实际情况确认及更改
alter database rename file '+DATA1DG/RACDB/ONLINELOG/group_2.265.1088940167' to '/oradata/racdb/redo02.log';
alter database rename file '+DATA1DG/RACDB/ONLINELOG/group_1.264.1088940159' to '/oradata/racdb/redo01.log';
alter database rename file '+DATA1DG/RACDB/ONLINELOG/group_3.271.1088940911' to '/oradata/racdb/redo03.log';
alter database rename file '+DATA1DG/RACDB/ONLINELOG/group_4.272.1088940919' to '/oradata/racdb/redo04.log';

10.创建新的spfile 并打开

create spfile from memory;alter database open resetlogs;

11.重建temp 表空间(作为一个rac备份的异机恢复单实例,往往并不具备正常的可用性,可能需要从此步骤开始的如下步骤)

        11.1重建temp表空间以及数据文件

--需基于实际环境
create temporary tablespace temp02 tempfile '/oradata/racdb/temp02.dbf' size 10M autoextend on next 100M maxsize 30G;
alter database default temporary tablespace temp02;
drop tablespace temp including contents and datafiles;
create temporary tablespace temp tempfile '/oradata/racdb/temp01.dbf' size 100M autoextend on next 100M maxsize 30G;
alter database default temporary tablespace temp;
drop tablespace temp02 including contents and datafiles;--处理pdb的temp表空间及数据文件
alter pluggable database pdb1 open;
alter session set container=pdb1;
create temporary tablespace temp02 tempfile '/oradata/racdb/pdb1/temp02.dbf' size 10M autoextend on next 100M maxsize 30G;
alter database default temporary tablespace temp02;
drop tablespace temp including contents and datafiles;
create temporary tablespace temp tempfile '/oradata/racdb/pdb1/temp01.dbf' size 100M autoextend on next 100M maxsize 30G;
alter database default temporary tablespace temp;
drop tablespace temp02 including contents and datafiles;

11.2如果是全库恢复或者存在pdb较多的情况你可能需要重建控制文件来处理那些目录及数据文件以处理出现在altert中仅会存在于rac环境的报错。

可能会需要重建control 控制文件
alter database backup controlfile to trace as '/tmp/control_rebuild.trc'

        11.3 特别针对于 pdb$seed,需要隐含参数 _oracle_script

实际上pdb$seed是不允许被更改的,但由于rac恢复到单机的操作它可能会报错
ORA-65017: seed pluggable database may not be dropped or altered
按如下设置进行配置处理
alter session set "_oracle_script"=true;alter pluggable database pdb$seed close immediate instances=all;alter pluggable database pdb$seed open;ALTER SESSION SET CONTAINER = PDB$SEED;
create temporary tablespace temp02 tempfile '/oradata/racdb/pdbseed/temp02.dbf' size 10M autoextend on next 100M maxsize 30G;
alter database default temporary tablespace temp02;
drop tablespace temp including contents and datafiles;
create temporary tablespace temp tempfile '/oradata/racdb/pdbseed/temp01.dbf' size 100M autoextend on next 100M maxsize 30G;
alter database default temporary tablespace temp;
drop tablespace temp02 including contents and datafiles;
alter pluggable database pdb$seed close immediate;alter pluggable database open read only instances=all;alter session set "_oracle_script"=false;

ORACLE 12c rac备份异机单实例恢复(RMAN recover database出现RMAN-06054)相关推荐

  1. Oracle RAC备份异机单实例恢复演练

    本文只节选了操作方案的部分章节: 3.   操作步骤 3.1. 异机单实例Oracle数据库软件安装 在异机上进行单实例Oracle数据库软件安装.该步骤过程不再本文中重复描述,如果对安装过程存在疑问 ...

  2. Oracle 10g RAC RMAN备份异机单实例恢复

    本文通过将Oracle 10g RAC RMAN的完整的备份进行异机恢复的过程,可以对在恢复的过程中可以发现备份时的一些问题.比如规档日志的冗余,控制文件与参数文件的自动备份的利用等,本示例是拿了rm ...

  3. Oracle 运维篇+RAC集群转单实例/RMAN异机恢复/RMAN迁移/RMAN备份恢复操作概要

    说明:本文为Oracle RAC集群转单实例/RMAN异机恢复/RMAN迁移/RMAN备份恢复操作概要方便用户查阅 温馨提示:如果您发现本文哪里写的有问题或者有更好的写法请留言或私信我进行修改优化 说 ...

  4. linux dump命令 异机,Oracle 11.2.0.4 从单实例,使用RMAN 异机恢复到RAC

    Oracle 11.2.0.4从单实例,使用RMAN异机恢复到RAC 注意: (1)迁移的2个db版本版本要一致.包括小版本. (2)RMAN异机恢复的时候,db_name必须相同.如果说要想改成其他 ...

  5. linux mysql异机备份_Linux环境下oracle数据库Rman备份异机恢复

    备份的数据库和要恢复的数据库OS和数据库的版本均一致,恢复的目录也均一致! 备份数据库: RMAN> backup format '/home/oracle/scripts/full_prod. ...

  6. Oracle 12c RAC 安装文档

    首先,谢谢原作者:此文为转载的文章,现将原地址贴出如下: Oracle 12c RAC 安装文档​www.cnblogs.com/leohahah/p/9488963.html 更多精彩Zabbix文 ...

  7. 最新炼数成金Oracle 12C RAC集群原理与管理实战

    注意:Oracle 12C RAC部分课程,暂时缺少两集,如有补充会及时更新;介意的朋友先不要下载 但是其中另一套课程,来自三位DBA大牛的技术分享,非常值得听一听 ===============课程 ...

  8. RAC (双节点) + 单实例 DATAGUARD 安装遇到的问题处理

    RAC (双节点) + 单实例 DATAGUARD 安装遇到的问题处理 PRIMARY:  RAC 双节点 ,存储:ASM STANDBY: 单实例          存储: ASM 单实例  数据库 ...

  9. 用RMAN 备份异机恢复 迁移数据

    先假设一种情况,假设有一个数据库,数据量是2T. 如果要对这个数据库进行迁移,在不考虑磁盘空间的前提下,要求在最短的时间内完成切换操作. 在不考虑磁盘空间前提下,备份时间,网络传输时间,恢复时间. 这 ...

最新文章

  1. 软件成本度量方法及CMMI V2.0,你Get到了吗?
  2. 3-18函数——作用域的查找空间
  3. java做服务器端给客户端传数据包_java 服务器怎样给客户端传输数据
  4. JS静态变量和静态函数
  5. linux+虚拟机上的wdcp,linux虚拟主机服务器wdcp系统教程
  6. 真正厉害的产品经理,都是“数据思维”的高手
  7. 常见的扫描类型有以下几种:Nmap的SYN、Connect、Null、FIN、Xmas、Maimon、ACK
  8. 奶粉中的php是什么,婴儿配方奶粉的分类及用途
  9. 修改msde登录方式,设置sa密码为空
  10. 【心路历程】(NOIP 206)(HNOI 358)
  11. @Autowired与@Resource的差别
  12. Java集合框架学习总结
  13. SSL基础:21:使用ca子命令为其他证书签名
  14. 不懂技术能做项目经理吗?
  15. 恒玉佳壬二酸使用方法,15壬二酸能帮助祛痘吗
  16. 信号完整性(SI)电源完整性(PI)学习笔记(二十一)差分对与差分阻抗(一)
  17. docker: error pulling image configuration
  18. 1009 type C 与DP检测,USB3.0与PD协议
  19. 数字IC后端物理实现流程1-环境建立
  20. gitee如何删除仓库

热门文章

  1. 倒相孔音箱和密闭音箱的知识介绍
  2. javascript实现的五星评价(版本1-1)
  3. 【测试】根据场景法设计在线购物系统的测试用例
  4. Fundebug能够捕获这些BUG
  5. 如何做好一个TeamLeader,欢迎留言探讨
  6. 教你使用CSDN-markdown编辑器
  7. Cookies是什么?
  8. linux安装ppt教程视频教程下载,Linux教程ch2Linux安装及入门.ppt
  9. php输出语句,php的输出语句是什么
  10. 【Proteus仿真】UNO +PCF8574转IIC接口流水灯