Database-Oracle-Windows操作系统下使用RMAN进行Oracle11g单实例的生产库迁移恢复

Database-Oracle-Windows操作系统下使用RMAN进行Oracle11g单实例的生产库迁移恢复

一般(相同同数据库版本)流程

在目标数据库上安装软件
原库全备
复制文件到目标数据库
备份集以及原库上的pfile: create pfile from spfile;
根据原库pfile创建或修改没有的目录
重做日志路径、控制文件路径,快速恢复区等
目标数据库:
C:\Users\Administrator>ORADIM -NEW -SID orcl
C:>set oracle_sid=orcl
C:>rman target /
RMAN> startup nomount
RMAN> set dbid 1450825846
RMAN> startup nomount pfile=‘D:\app\Administrator\product\11.2.0\dbhome_1\databa
se\INITorcl’;
RMAN> restore controlfile from ‘C:\app\Administrator\fast_recovery_area\orcl\AUT
OBACKUP\2016_11_03\O1_MF_S_926954699_D1OSLDL3_.BKP’;

RMAN> restore spfile from ‘C:\app\Administrator\fast_recovery_area\orcl\AUTOBACK
UP\2016_11_11\O1_MF_S_927642226_D2BRZOYF_.BKP’;

RMAN> alter database mount;

RMAN> restore database;(因为原库与目标库快速恢复区相同)

RMAN> recover database;

启动 recover 于 12-11月-16
使用通道 ORA_DISK_1

正在开始介质的恢复

无法找到归档日志
归档日志线程=1 序列=10
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 11/04/2016 10:24:31 上) 失败
RMAN-06054: 介质恢复正在请求未知的线程 1 序列 10 的归档日志以及起始 SCN 1042267

报错了?正常的,因为我们创建的热备份并不是一致性备份,源端的归档是过来了,但联机重做日志文件并没有随备份集复制过来,因此恢复时肯定恢复不到源端的当前状态。这个错误是提醒你要想继续恢复的话还需要线程1生成的SEQUENCE#为10的重做日志文件。如果你要保持一致,必须复制源数据库端的重做日志文件,那必须首先SHUTDOWN源端数据库才行。

RMAN> recover database until scn=1042267;

启动 recover 于 04-11月-16
使用通道 ORA_DISK_1

正在开始介质的恢复
介质恢复完成, 用时: 00:00:00

完成 recover 于 12-11月-16
开库:
ALTER DATABASE OPEN RESETLOGS;

create spfile from pfile;
oradim -EDIT -SID orcl -STARTMODE auto -SRVCSTART system

软件版本不同的情况

此次迁移各服务器情况:
24(正式库) 11.2.0.1 win-server-2008
23(目标主机) 11.2.0.4 win-server-2012

此次在recover database until…时提醒数据文件报RMAN-06054: 介质恢复正在请求未知的线程 1 序列 **的归档日志以及起始 SCN ***错误。
在把序列为
的日志拿过来后rman又重新报了06054错误(一个比scn****更小的scn)并需要序列+1的归档,怀疑此次rman异常的原因是因为该生产库多次异常断电导致数据库里存在一个像洞一样的东西。
然后在recover until 较小的scn时成功recover,因为版本不同,开库需要upgrade。


SQL>  alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00704: bootstrap process failure
ORA-39700: database must be opened with UPGRADE option
Process ID: 11035
Session ID: 59 Serial number: 29

[oracle@testdb orcl]$ sqlplus / as sysdba
 
SQL*Plus: Release 11.2.0.3.0 Production on Thu Apr 9 13:36:01 2015
 
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
 
Connected to an idle instance.
 
SQL> startup upgrade;
ORACLE instance started.
 
Total System Global Area  313159680 bytes
Fixed Size                  2227944 bytes
Variable Size             230687000 bytes
Database Buffers           75497472 bytes
Redo Buffers                4747264 bytes
Database mounted.
Database opened.

catupgrd.sql 该脚本花费时间较长,大约30分钟,执行完毕后干净的关库后再重新打开数据库再检查是否还有失效的对象:

SQL> @$ORACLE_HOME/rdbms/admin/catupgrd.sql;

 
Connected to an idle instance.
 
SQL> startup
ORACLE instance started.
 
Total System Global Area  501059584 bytes
Fixed Size                  2229744 bytes
Variable Size             444598800 bytes
Database Buffers           46137344 bytes
Redo Buffers                8093696 bytes
 
Database mounted.
Database opened.
SQL> select count(*) from dba_objects where status='INVALID';
 
  COUNT(*)
----------
      5930
 
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
 
SQL> select count(*) from dba_objects where status='INVALID';
 
  COUNT(*)
----------
         0


正式迁移恢复

以上操作的备份集不是最新的,因此需要再一次备份恢复,在备份前需要将正式库关闭,然后open resetlog一下,这样正式库相当于全新的(把洞补上),然后全备,恢复。

RMAN> startup nomount

Oracle 实例已启动

系统全局区域总计   13695889408 字节

Fixed Size                     2294256 字节
Variable Size               7784631824 字节
Database Buffers            5838471168 字节
Redo Buffers                  70492160 字节

RMAN> set dbid 1454198642

正在执行命令: SET DBID

RMAN> startup nomount pfile='D:\app\Administrator\product\11.2.0\dbhome_1\database\INITorcl';

数据库已经启动

RMAN> restore controlfile from 'D:\app\Administrator\flash_recovery_area\orcl\AUTOBACKUP\2017_05_15\O1_MF_S_944071445_DK
LZ8OMC_.BKP';

启动 restore 于 15-5月 -17
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=301 设备类型=DISK

通道 ORA_DISK_1: 正在还原控制文件
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
输出文件名=D:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL
输出文件名=C:\ORACLE_BACKUP\ORCL\CONTROL02.CTL
完成 restore 于 15-5月 -17


RMAN> alter database mount;

数据库已装载
释放的通道: ORA_DISK_1

RMAN> restore database;

启动 restore 于 15-5月 -17
启动 implicit crosscheck backup 于 15-5月 -17
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=301 设备类型=DISK
分配的通道: ORA_DISK_2
通道 ORA_DISK_2: SID=321 设备类型=DISK
已交叉检验的 11 对象
已交叉检验的 70 对象
.......


RMAN> recover database;

启动 recover 于 15-5月 -17
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2

正在开始介质的恢复

无法找到归档日志
归档日志线程=1 序列=1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 05/15/2017 18:22:03 上) 失败
RMAN-06054: 介质恢复正在请求未知的线程 1 序列 1 的归档日志以及起始 SCN 329554756


将提示中需要的序列日志拿到24上,没有归档的用alter system switch logfile;
RMAN> recover database;

启动 recover 于 15-5月 -17
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2

正在开始介质的恢复

无法找到归档日志
归档日志线程=1 序列=3
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 05/15/2017 18:31:06 上) 失败
RMAN-06054: 介质恢复正在请求未知的线程 1 序列 3 的归档日志以及起始 SCN 329560091

RMAN> recover database until scn=329560091;

启动 recover 于 15-5月 -17
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2

正在开始介质的恢复
介质恢复完成, 用时: 00:00:01

完成 recover 于 15-5月 -17


RMAN> alter database open resetlogs;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: alter db 命令 (在 05/15/2017 18:33:02 上) 失败
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00704: bootstrap process failure
ORA-39700: database must be opened with UPGRADE option
进程 ID: 11896
会话 ID: 281 序列号: 11
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
ORA-03114: 未连接到 ORACLE
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: alter db 命令 (在 05/15/2017 18:33:02 上) 失败
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00704: bootstrap process failure
ORA-39700: database must be opened with UPGRADE option
进程 ID: 11896
会话 ID: 281 序列号: 11

PS C:\Users\Administrator> sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on 星期一 5月 15 18:37:04 2017

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

已连接到空闲例程。

SQL> startup upgrade
ORACLE 例程已经启动。

Total System Global Area 1.3696E+10 bytes
Fixed Size                  2294256 bytes
Variable Size            7818186256 bytes
Database Buffers         5804916736 bytes
Redo Buffers               70492160 bytes
数据库装载完毕。
数据库已经打开。

SQL> @D:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\catupgrd.sql;

SQL> select count(*) from dba_objects where status='INVALID';
 
SQL> @D:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\utlrp.sql
SQL> select count(*) from dba_objects where status='INVALID';
         

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值