签到成功

知道了

CNDBA社区CNDBA社区

linux下的rman备份在windows下进行恢复

2018-08-10 15:42 3843 2 原创 oracle
作者: tianxiadishi

1.软件版本
备份源
centos 7.2 + oracle 11g
目标库
windows server 2003 + oracle 11g

2.在centos 7.2下用rman做了一个全库备份,并使用winscp复制到windows下

3.在windows下创建一个oracle服务http://www.cndba.cn/tianxiadishi/article/2942

http://www.cndba.cn/tianxiadishi/article/2942

C:/Documents and Settings/Administrator>oradim -new -sid cbe1cs
实例已创建。

4.启动rman 恢复参数文件

set oracle_sid=cbe1cs
rman target /
startup nomount
restore spfile to 'E:/app/Administrator/product/11.2.0/dbhome_1/database/spfilecbe1cs.ora' from 'E:/x2/20180809_control_c-1848148640-20180809-09_yhc';

5.创建pfile,并修改相关参数值和目录结构,因为是测试,我的pfile只设置了db_name和db_unique_name参数,其它全使用默认http://www.cndba.cn/tianxiadishi/article/2942

6.启用到nomount,恢复控制文件

rman target /
startup mount
restore controlfile from 'E:/x2/20180809_control_c-1848148640-20180809-09_yhc';

7.使用catalog命令将从linux复制过来的备份集加载到windows的rman中http://www.cndba.cn/tianxiadishi/article/2942

crosscheck backup;
delete expired backup;   #这两步将恢复过来的控制文件中的备份记录清空
list backup
catalog start with 'E:/x2/'
list backup     #此时显示的备份集信息就是我们复制过来的备份

8.使用run运行恢复脚本http://www.cndba.cn/tianxiadishi/article/2942

http://www.cndba.cn/tianxiadishi/article/2942


run {
set newname for database to 'e:/rmanbk/data_%U';
restore database;
}

9.更换控制文件中关于数据文件位置记录

switch database to copy;

以上操作都是正常。没有报错,接下来,在做recover database是,报错了,信息如下:

RMAN> recover database until  sequence 2444;

启动 recover 于 10-8月 -18
使用通道 ORA_DISK_1

正在开始介质的恢复

通道 ORA_DISK_1: 正在开始将归档日志还原到默认目标
通道 ORA_DISK_1: 正在还原归档日志
归档日志线程=1 序列=2440
通道 ORA_DISK_1: 正在读取备份片段 E:/X2/20180809_ARCHIVE_2440_CBE1_6BTA4QVQ_983723002_6BTA4QVQ_1_1_YHC
通道 ORA_DISK_1: 段句柄 = E:/X2/20180809_ARCHIVE_2440_CBE1_6BTA4QVQ_983723002_6BTA4QVQ_1_1_YHC 标记 = TAG20180809T162321
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:03
归档日志文件名=E:/APP/ADMINISTRATOR/PRODUCT/11.2.0/DBHOME_1/RDBMS/ARC0000002440_0979413600.0001 线程=1 序列=2440
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 08/10/2018 15:02:04 上) 失败
RMAN-11003: 在分析/执行 SQL 语句期间失败: alter database recover logfile 'E:/APP/ADMINISTRATOR/PRODUCT/11.2.0/DBHOME_1/RDBMS/ARC0000002440_0979413600.
0001'
ORA-10562: Error occurred while applying redo to data block (file# 19, block# 72688)
ORA-10564: tablespace DS_IDX01
ORA-01110: data file 19: 'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_IDX01_FNO-19'
ORA-10561: block type 'TRANSACTION MANAGED INDEX BLOCK', data object# 80659
ORA-00600: internal error code, arguments: [6122], [0], [26774], [0], [], [], [], [], [], [], [], []

后来使用corruption关键字跳过错误恢复,方式如下:**http://www.cndba.cn/tianxiadishi/article/2942

RMAN> recover database allow 10 corruption;

启动 recover 于 10-8月 -18
使用通道 ORA_DISK_1

正在开始介质的恢复

线程 1 序列 2440 的归档日志已作为文件 E:/APP/ADMINISTRATOR/PRODUCT/11.2.0/DBHOME_1/RDBMS/ARC0000002440_0979413600.0001 存在于磁盘上
归档日志文件名=E:/APP/ADMINISTRATOR/PRODUCT/11.2.0/DBHOME_1/RDBMS/ARC0000002440_0979413600.0001 线程=1 序列=2440
通道 ORA_DISK_1: 正在开始将归档日志还原到默认目标
通道 ORA_DISK_1: 正在还原归档日志
归档日志线程=1 序列=2441
通道 ORA_DISK_1: 正在还原归档日志
归档日志线程=1 序列=2442
通道 ORA_DISK_1: 正在还原归档日志
归档日志线程=1 序列=2443
通道 ORA_DISK_1: 正在还原归档日志
归档日志线程=1 序列=2444
通道 ORA_DISK_1: 正在读取备份片段 E:/X2/20180809_ARCHIVE_2444_CBE1_6CTA4QVR_983723003_6CTA4QVR_1_1_YHC
通道 ORA_DISK_1: 段句柄 = E:/X2/20180809_ARCHIVE_2444_CBE1_6CTA4QVR_983723003_6CTA4QVR_1_1_YHC 标记 = TAG20180809T162321
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
归档日志文件名=E:/APP/ADMINISTRATOR/PRODUCT/11.2.0/DBHOME_1/RDBMS/ARC0000002441_0979413600.0001 线程=1 序列=2441
归档日志文件名=E:/APP/ADMINISTRATOR/PRODUCT/11.2.0/DBHOME_1/RDBMS/ARC0000002442_0979413600.0001 线程=1 序列=2442
归档日志文件名=E:/APP/ADMINISTRATOR/PRODUCT/11.2.0/DBHOME_1/RDBMS/ARC0000002443_0979413600.0001 线程=1 序列=2443
归档日志文件名=E:/APP/ADMINISTRATOR/PRODUCT/11.2.0/DBHOME_1/RDBMS/ARC0000002444_0979413600.0001 线程=1 序列=2444
无法找到归档日志
归档日志线程=1 序列=2445
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 08/10/2018 15:04:46 上) 失败
RMAN-06054: 介质恢复正在请求未知的线程 1 序列 2445 的归档日志以及起始 SCN 1182430162

继续,此时,登陆数据库,查看关的scn,发现一致了

SQL> select name,checkpoint_change# from v$database;

NAME                                                         CHECKPOINT_CHANGE#
------------------------------------------------------------ ------------------
CBE1                                                                 1182430162

SQL> select name,checkpoint_change# from v$datafile;

NAME                                                         CHECKPOINT_CHANGE#
------------------------------------------------------------ ------------------
E:/RMANBK/DATA_DATA_D-CBE1_TS-SYSTEM_FNO-1                           1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-SYSAUX_FNO-2                           1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-UNDOTBS1_FNO-3                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-USERS_FNO-4                            1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_EP01_FNO-5                          1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_HR01_FNO-6                          1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_FI01_FNO-7                          1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_YM01_FNO-8                          1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_QM01_FNO-9                          1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_SI01_FNO-10                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_MM01_FNO-11                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_PM01_FNO-12                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_SO01_FNO-13                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_AC01_FNO-14                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_PO01_FNO-15                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_TS01_FNO-16                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_PA01_FNO-17                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_IDX_FNO-18                          1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_IDX01_FNO-19                        1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_DM01_FNO-20                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_TM01_FNO-21                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-CBE0BK_FNO-22                          1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_XCOM_FNO-23                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_LARGE01_FNO-24                      1182430162

SQL> select name,checkpoint_change# from v$datafile_header;

NAME                                                         CHECKPOINT_CHANGE#
------------------------------------------------------------ ------------------
E:/RMANBK/DATA_DATA_D-CBE1_TS-SYSTEM_FNO-1                           1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-SYSAUX_FNO-2                           1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-UNDOTBS1_FNO-3                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-USERS_FNO-4                            1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_EP01_FNO-5                          1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_HR01_FNO-6                          1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_FI01_FNO-7                          1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_YM01_FNO-8                          1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_QM01_FNO-9                          1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_SI01_FNO-10                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_MM01_FNO-11                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_PM01_FNO-12                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_SO01_FNO-13                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_AC01_FNO-14                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_PO01_FNO-15                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_TS01_FNO-16                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_PA01_FNO-17                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_IDX_FNO-18                          1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_IDX01_FNO-19                        1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_DM01_FNO-20                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_TM01_FNO-21                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-CBE0BK_FNO-22                          1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_XCOM_FNO-23                         1182430162
E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_LARGE01_FNO-24                      1182430162

此时,打开数据库,报如下错误

SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-00344: 无法重新创建联机日志
'/home/oracle/u01/app/oracle/oradata/cbe1/redo01a.log'
ORA-27040: 文件创建错误, 无法创建文件
OSD-04002: 无法打开文件
O/S-Error: (OS 3) 系统找不到指定的路径。

由于是从linux备份过来的。此时,日志文件路径不对,需要手工修改,使用以下命令,结果报错,应该是不能识别原路径吧?http://www.cndba.cn/tianxiadishi/article/2942

SQL> alter database rename file
  2  '/home/oracle/u01/app/oracle/oradata/cbe1/redo01a.log',
  3  '/home/oracle/u01/app/oracle/fast_recovery_area/redo01b.log',
  4  '/home/oracle/u01/app/oracle/oradata/cbe1/redo02a.log',
  5  '/home/oracle/u01/app/oracle/fast_recovery_area/redo02b.log',
  6  '/home/oracle/u01/app/oracle/oradata/cbe1/redo03a.log',
  7  '/home/oracle/u01/app/oracle/fast_recovery_area/redo03b.log',
  8  '/home/oracle/u01/app/oracle/oradata/cbe1/redo04a.log',
  9  '/home/oracle/u01/app/oracle/fast_recovery_area/redo04b.log'
 10  to
 11  'E:/rmanbk/online/redo01.log',
 12  'E:/rmanbk/online/redo01a.log',
 13  'E:/rmanbk/online/redo02.log',
 14  'E:/rmanbk/online/redo02a.log',
 15  'E:/rmanbk/online/redo03.log',
 16  'E:/rmanbk/online/redo03a.log',
 17  'E:/rmanbk/online/redo04.log',
 18  'E:/rmanbk/online/redo04a.log';
alter database rename file
*
第 1 行出现错误:
ORA-01511: 重命名日志/数据文件时出错
ORA-01516: 不存在的日志文件, 数据文件或临时文件
"/home/oracle/u01/app/oracle/oradata/cbe1/redo01a.log"

那好吧。重建控制文件

http://www.cndba.cn/tianxiadishi/article/2942

alter database backup controlfile to trace as 'e:/xxx.dbf';
根据脚本重建控制文件,具体如下:
startup nomount
CREATE CONTROLFILE REUSE DATABASE "CBE1" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 5
    MAXLOGMEMBERS 5
    MAXDATAFILES 100
    MAXINSTANCES 1
    MAXLOGHISTORY 975
LOGFILE
  GROUP 1 (
    'E:/rmanbk/online/redo01b.log'
  ) SIZE 50M BLOCKSIZE 512,
  GROUP 2 (
    'E:/rmanbk/online/redo02b.log'
  ) SIZE 50M BLOCKSIZE 512,
  GROUP 3 (
    'E:/rmanbk/online/redo03b.log'
  ) SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-SYSTEM_FNO-1',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-SYSAUX_FNO-2',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-UNDOTBS1_FNO-3',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-USERS_FNO-4',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_EP01_FNO-5',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_HR01_FNO-6',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_FI01_FNO-7',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_YM01_FNO-8',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_QM01_FNO-9',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_SI01_FNO-10',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_MM01_FNO-11',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_PM01_FNO-12',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_SO01_FNO-13',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_AC01_FNO-14',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_PO01_FNO-15',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_TS01_FNO-16',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_PA01_FNO-17',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_IDX_FNO-18',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_IDX01_FNO-19',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_DM01_FNO-20',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_TM01_FNO-21',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-CBE0BK_FNO-22',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_XCOM_FNO-23',
  'E:/RMANBK/DATA_DATA_D-CBE1_TS-DS_LARGE01_FNO-24';

最后,重新打开数据库

alter database open restelogs;  
#不要忘掉创建temp表空间的数据文件。

不解:
此备份集拿到另外一台centos下的oracl 11g中恢复是没有问题的。
后来,用dbv 来检测报错的数据文件,也没有发现坏块http://www.cndba.cn/tianxiadishi/article/2942

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
tianxiadishi

tianxiadishi

关注
  • 17
    原创
  • 0
    翻译
  • 3
    转载
  • 14
    评论
  • 访问:110236次
  • 积分:96
  • 等级:注册会员
  • 排名:第31名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ