ITPub博客

首页 > Linux操作系统 > Linux操作系统 > windows下异机恢复---改变db_name

windows下异机恢复---改变db_name

Linux操作系统 作者:xfhuangfu 时间:2015-07-04 09:07:48 0 删除 编辑
本次试验,参考metalink上的 doc:419137.1
将源db通过rman异机恢复到目的库,并重新修改db_name为sp
源主机 192.168.1.244 ,db_name为win10g ,rman中的控制文件自动备份打开

往表t中插入数据,观察日志情况,并切换日志组

SSQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        120 CURRENT                6079303 NO
         2        119 INACTIVE               6079232 YES
         3        118 INACTIVE               6079199 YES

SQL> insert into t values(6);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        120 ACTIVE                 6079303 YES
         2        119 INACTIVE               6079232 YES
         3        121 CURRENT                6083207 NO
         

第二次

SQL> insert into t values(7);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        120 ACTIVE                 6079303 YES
         2        122 CURRENT                6083236 NO
         3        121 ACTIVE                 6083207 YES


第三次

SQL> insert into t values(8);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        123 CURRENT                6083256 NO
         2        122 ACTIVE                 6083236 YES
         3        121 ACTIVE                 6083207 YES


                 

第四次

SQL> insert into t values(9);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        123 ACTIVE                 6083256 YES
         2        122 ACTIVE                 6083236 YES
         3        124 CURRENT                6083276 NO

         
         

第五次


SQL> insert into t values(10);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        123 ACTIVE                 6083256 YES
         2        125 CURRENT                6083295 NO
         3        124 ACTIVE                 6083276 YES



第六次

SQL> insert into t values(11);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        126 CURRENT                6083310 NO
         2        125 ACTIVE                 6083295 YES
         3        124 ACTIVE                 6083276 YES

       


第七次


SQL> insert into t values(12);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> select group#,sequence#,status,first_change#,archived from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE# ARC
---------- ---------- ---------------- ------------- ---
         1        126 ACTIVE                 6083310 YES
         2        125 ACTIVE                 6083295 YES
         3        127 CURRENT                6083332 NO
         
         
SQL> select * from t;

        ID
----------
         6
         7
         8
         9
        10
        11
        12

已选择7行。


这个时候在闪回恢复区中生成了 多个归档日志文件

然后备份win10g

run{
backup as compressed backupset database;
backup archivelog all not backed up delete input;
delete noprompt obsolete recovery window of 5 days;
}
         

启动 backup 于 20-3月 -13
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=158 devtype=DISK
通道 ORA_DISK_1: 启动压缩的全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=C:\ORADATA\WIN10G\SYSTEM01.DBF
输入数据文件 fno=00003 name=C:\ORADATA\WIN10G\SYSAUX01.DBF
输入数据文件 fno=00002 name=C:\ORADATA\WIN10G\UNDOTBS01.DBF
输入数据文件 fno=00005 name=C:\ORADATA\WIN10G\EXAMPLE01.DBF
输入数据文件 fno=00006 name=C:\ORADATA\TT.DBF
输入数据文件 fno=00004 name=C:\ORADATA\WIN10G\USERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 20-3月 -13
通道 ORA_DISK_1: 已完成段 1 于 20-3月 -13
段句柄=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\BACKUPSET\2013_03_20\
O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP 标记=TAG20130320T173244 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:05
完成 backup 于 20-3月 -13

启动 backup 于 20-3月 -13
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动存档日志备份集
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =120 记录 ID=118 时间戳=810581265
输入存档日志线程 =1 序列 =121 记录 ID=119 时间戳=810581329
输入存档日志线程 =1 序列 =122 记录 ID=120 时间戳=810581366
输入存档日志线程 =1 序列 =123 记录 ID=121 时间戳=810581414
输入存档日志线程 =1 序列 =124 记录 ID=122 时间戳=810581447
输入存档日志线程 =1 序列 =125 记录 ID=123 时间戳=810581480
输入存档日志线程 =1 序列 =126 记录 ID=124 时间戳=810581510
输入存档日志线程 =1 序列 =127 记录 ID=125 时间戳=810581633
通道 ORA_DISK_1: 正在启动段 1 于 20-3月 -13
通道 ORA_DISK_1: 已完成段 1 于 20-3月 -13
段句柄=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\BACKUPSET\2013_03_20\
O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP 标记=TAG20130320T173353 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
通道 ORA_DISK_1: 正在删除存档日志
存档日志文件名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_120_8NM08K2X_.ARC 记录 ID=118 时间戳 =810581265
存档日志文件名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_121_8NM0BKL2_.ARC 记录 ID=119 时间戳 =810581329
存档日志文件名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_122_8NM0CPPG_.ARC 记录 ID=120 时间戳 =810581366
存档日志文件名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_123_8NM0F6PG_.ARC 记录 ID=121 时间戳 =810581414
存档日志文件名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_124_8NM0G7OZ_.ARC 记录 ID=122 时间戳 =810581447
存档日志文件名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_125_8NM0H8OZ_.ARC 记录 ID=123 时间戳 =810581480
存档日志文件名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_126_8NM0J6OZ_.ARC 记录 ID=124 时间戳 =810581510
存档日志文件名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_20\O1_MF_1_127_8NM0N11G_.ARC 记录 ID=125 时间戳 =810581633
完成 backup 于 20-3月 -13

启动 Control File and SPFILE Autobackup 于 20-3月 -13
段 handle=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\AUTOBACKUP\2013_03
_20\O1_MF_S_810581634_8NM0N30H_.BKP comment=NONE
完成 Control File and SPFILE Autobackup 于 20-3月 -13

使用通道 ORA_DISK_1
未找到已废弃的备份

RMAN>


RMAN> list backup;


备份集列表
===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
72      Full    168.66M    DISK        00:00:56     20-3月 -13
        BP 关键字: 72   状态: AVAILABLE  已压缩: YES  标记: TAG20130320T173244
段名:C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\BACKUPSET\2013_03_20\O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP
  备份集 72 中的数据文件列表
  文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  1       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\SYSTEM01.DBF
  2       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\UNDOTBS01.DBF
  3       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\SYSAUX01.DBF
  4       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\USERS01.DBF
  5       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\EXAMPLE01.DBF
  6       Full 6083442    20-3月 -13 C:\ORADATA\TT.DBF

BS 关键字  大小       设备类型占用时间 完成时间
------- ---------- ----------- ------------ ----------
73      3.66M      DISK        00:00:00     20-3月 -13
        BP 关键字: 73   状态: AVAILABLE  已压缩: NO  标记: TAG20130320T173353
段名:C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\BACKUPSET\2013_03_20\O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP

  备份集 73 中的已存档日志列表
  Thrd Seq     低 SCN    短时间     下一个 SCN   下一次
  ---- ------- ---------- ---------- ---------- ---------
  1    120     6079303    20-3月 -13 6083207    20-3月 -13
  1    121     6083207    20-3月 -13 6083236    20-3月 -13
  1    122     6083236    20-3月 -13 6083256    20-3月 -13
  1    123     6083256    20-3月 -13 6083276    20-3月 -13
  1    124     6083276    20-3月 -13 6083295    20-3月 -13
  1    125     6083295    20-3月 -13 6083310    20-3月 -13
  1    126     6083310    20-3月 -13 6083332    20-3月 -13
  1    127     6083332    20-3月 -13 6083507    20-3月 -13

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
74      Full    6.95M      DISK        00:00:01     20-3月 -13
        BP 关键字: 74   状态: AVAILABLE  已压缩: NO  标记: TAG20130320T173354
段名:C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\AUTOBACKUP\2013_03_20\O1_MF_S_810581634_8NM0N30H_.BKP
  包括的控制文件: Ckp SCN: 6083513      Ckp 时间: 20-3月 -13
  包含的 SPFILE: 修改时间: 20-3月 -13

RMAN>



目的主机   192.168.1.240  db_name为tt ,rman中的设置都为默认

现在想要把244主机上的备份异地恢复到240主机上,并重名名db_name为sp


1:将源主机(244)上的备份 全部scp到目的主机(240)的 C:\scp目录下

O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP -------数据文件备份
O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP -------归档日志文件备份
O1_MF_S_810581634_8NM0N30H_.BKP   ---------- 控制文件自动备份   


在目的库tt上创建pfile文件

SQL> startup nomount;
ORACLE 例程已经启动。

Total System Global Area  293601280 bytes
Fixed Size                  1248624 bytes
Variable Size              96469648 bytes
Database Buffers          192937984 bytes
Redo Buffers                2945024 bytes
SQL> create pfile from spfile;

文件已创建。


2:关闭目的库sp,恢复控制文件

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

然后删除原来so数据库的所有数据文件、控制文件及日志文件

修改zt库上的pfile文件(所在目录为C:\oracle\product\10.2.0\db_1\database\inittt.ora)

将里面的 db_name改为 win10g  ,如果有 undo_tablespace 则改为源主机对应的,而service_names、
instance_name 可改可不改

如果这里直接将db_name 改为 sp 的话,那么在将db启动到mount状态时报错:

ORA-01103: 控制文件中的数据库名 ''WIN10G'' 不是 ''SP''



然后恢复控制文件

RMAN> startup nomount;

Oracle 实例已启动

系统全局区域总计     293601280 字节

Fixed Size                     1248624 字节
Variable Size                 96469648 字节
Database Buffers             192937984 字节
Redo Buffers                   2945024 字节

RMAN>

RMAN> restore controlfile from 'C:\scp\O1_MF_S_810581634_8NM0N30H_.BKP'; //必须在rman中执行

启动 restore 于 20-3月 -13
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK

通道 ORA_DISK_1: 正在复原控制文件
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:01
输出文件名=C:\SPDATA\SP\CONTROL01.CTL
输出文件名=C:\SPDATA\SP\CONTROL02.CTL
输出文件名=C:\SPDATA\SP\CONTROL03.CTL
完成 restore 于 20-3月 -13

RMAN>


3:查看控制文件里的备份信息 

RMAN> startup mount;

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

RMAN> list backup;


备份集列表
===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
72      Full    168.66M    DISK        00:00:56     20-3月 -13
        BP 关键字: 72   状态: AVAILABLE  已压缩: YES  标记: TAG20130320T173244
段名:C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\BACKUPSET\2013_03_20\O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP
  备份集 72 中的数据文件列表
  文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  1       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\SYSTEM01.DBF
  2       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\UNDOTBS01.DBF
  3       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\SYSAUX01.DBF
  4       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\USERS01.DBF
  5       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\EXAMPLE01.DBF
  6       Full 6083442    20-3月 -13 C:\ORADATA\TT.DBF

BS 关键字  大小       设备类型占用时间 完成时间
------- ---------- ----------- ------------ ----------
73      3.66M      DISK        00:00:00     20-3月 -13
        BP 关键字: 73   状态: AVAILABLE  已压缩: NO  标记: TAG20130320T173353
段名:C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\BACKUPSET\2013_03_20\O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP

  备份集 73 中的已存档日志列表
  Thrd Seq     低 SCN    短时间     下一个 SCN   下一次
  ---- ------- ---------- ---------- ---------- ---------
  1    120     6079303    20-3月 -13 6083207    20-3月 -13
  1    121     6083207    20-3月 -13 6083236    20-3月 -13
  1    122     6083236    20-3月 -13 6083256    20-3月 -13
  1    123     6083256    20-3月 -13 6083276    20-3月 -13
  1    124     6083276    20-3月 -13 6083295    20-3月 -13
  1    125     6083295    20-3月 -13 6083310    20-3月 -13
  1    126     6083310    20-3月 -13 6083332    20-3月 -13
  1    127     6083332    20-3月 -13 6083507    20-3月 -13

RMAN>




可见还是源库(win10g)上的信息


然后将目的主机(240)上的备份片重新注册到控制文件中


RMAN> catalog backuppiece 'C:\scp\O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP';//必须在rman中执行


启动 implicit crosscheck backup 于 20-3月 -13
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
已交叉检验的 2 对象
完成 implicit crosscheck backup 于 20-3月 -13

启动 implicit crosscheck copy 于 20-3月 -13
使用通道 ORA_DISK_1
已交叉检验的 6 对象
完成 implicit crosscheck copy 于 20-3月 -13

搜索恢复区域中的所有文件
正在编制文件目录...
没有为文件编制目录

已列入目录的备份段
备份段 handle=C:\SCP\O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP recid=74 stamp=810583087

RMAN> catalog backuppiece 'C:\SCP\O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP';//必须在rman中执行


已列入目录的备份段
备份段 handle=C:\SCP\O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP recid=75 stamp=810583100

RMAN>



注册以后重新查看控制文件里的备份集信息(查看段名的区别)

RMAN> list backup;


备份集列表
===================

BS 关键字  大小       设备类型占用时间 完成时间
------- ---------- ----------- ------------ ----------
74      3.66M      DISK        00:00:00     20-3月 -13
        BP 关键字: 74   状态: AVAILABLE  已压缩: NO  标记: TAG20130320T173353
段名:C:\SCP\O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP

  备份集 74 中的已存档日志列表
  Thrd Seq     低 SCN    短时间     下一个 SCN   下一次
  ---- ------- ---------- ---------- ---------- ---------
  1    120     6079303    20-3月 -13 6083207    20-3月 -13
  1    121     6083207    20-3月 -13 6083236    20-3月 -13
  1    122     6083236    20-3月 -13 6083256    20-3月 -13
  1    123     6083256    20-3月 -13 6083276    20-3月 -13
  1    124     6083276    20-3月 -13 6083295    20-3月 -13
  1    125     6083295    20-3月 -13 6083310    20-3月 -13
  1    126     6083310    20-3月 -13 6083332    20-3月 -13
  1    127     6083332    20-3月 -13 6083507    20-3月 -13

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
75      Full    168.66M    DISK        00:00:00     20-3月 -13
        BP 关键字: 75   状态: AVAILABLE  已压缩: YES  标记: TAG20130320T173244
段名:C:\SCP\O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP
  备份集 75 中的数据文件列表
  文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  1       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\SYSTEM01.DBF
  2       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\UNDOTBS01.DBF
  3       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\SYSAUX01.DBF
  4       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\USERS01.DBF
  5       Full 6083442    20-3月 -13 C:\ORADATA\WIN10G\EXAMPLE01.DBF
  6       Full 6083442    20-3月 -13 C:\ORADATA\TT.DBF

RMAN>
RMAN> crosscheck backup;
RMAN> delete expired backup;



4:在mount状态下,更新控制文件里关于数据文件的路径

在源库(244)上执行 report schema,列出数据文件编号对应的数据文件 

RMAN> report schema;

数据库方案报表

永久数据文件列表
===========================
文件大小 (MB) 表空间           回退段数据文件名称
---- -------- -------------------- ------- ------------------------
1    500      SYSTEM               ***     C:\ORADATA\WIN10G\SYSTEM01.DBF
2    100      UNDOTBS1             ***     C:\ORADATA\WIN10G\UNDOTBS01.DBF
3    370      SYSAUX               ***     C:\ORADATA\WIN10G\SYSAUX01.DBF
4    52       USERS                ***     C:\ORADATA\WIN10G\USERS01.DBF
5    100      EXAMPLE              ***     C:\ORADATA\WIN10G\EXAMPLE01.DBF
6    100      TT                   ***     C:\ORADATA\TT.DBF

临时文件列表
=======================
文件大小 (MB) 表空间           最大大小 (MB) 临时文件名称
---- -------- -------------------- ----------- --------------------
1    21       TEMP                 32767       C:\ORADATA\WIN10G\TEMP01.DBF


然后对应数据文件编号和数据文件名,修改存放目的库的具体路径

在目的库(240)上

mount状态下

run{
set newname for datafile 1 to 'C:\spdata\sp\SYSTEM01.DBF';
set newname for datafile 2 to  'C:\spdata\sp\UNDOTBS01.DBF';
set newname for datafile 3 to  'C:\spdata\sp\SYSAUX01.DBF';
set newname for datafile 4 to  'C:\spdata\sp\USERS01.DBF'; 
set newname for datafile 5 to  'C:\spdata\sp\EXAMPLE01.DBF';  
set newname for datafile 6 to  'C:\spdata\sp\TT.DBF'; 
restore database;
switch datafile all;
}


正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

启动 restore 于 20-3月 -13
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到C:\SPDATA\SP\SYSTEM01.DBF
正将数据文件00002恢复到C:\SPDATA\SP\UNDOTBS01.DBF
正将数据文件00003恢复到C:\SPDATA\SP\SYSAUX01.DBF
正将数据文件00004恢复到C:\SPDATA\SP\USERS01.DBF
正将数据文件00005恢复到C:\SPDATA\SP\EXAMPLE01.DBF
正将数据文件00006恢复到C:\SPDATA\SP\TT.DBF
通道 ORA_DISK_1: 正在读取备份段 C:\SCP\O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP


通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = C:\SCP\O1_MF_NNNDF_TAG20130320T173244_8NM0KWSW_.BKP 标记 = TAG20130320T
173244
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:55
完成 restore 于 20-3月 -13

数据文件 1 已转换成数据文件副本
输入数据文件副本 recid=35 stamp=810583327 文件名=C:\SPDATA\SP\SYSTEM01.DBF
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=36 stamp=810583327 文件名=C:\SPDATA\SP\UNDOTBS01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=37 stamp=810583327 文件名=C:\SPDATA\SP\SYSAUX01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=38 stamp=810583327 文件名=C:\SPDATA\SP\USERS01.DBF
数据文件 5 已转换成数据文件副本
输入数据文件副本 recid=39 stamp=810583327 文件名=C:\SPDATA\SP\EXAMPLE01.DBF
数据文件 6 已转换成数据文件副本
输入数据文件副本 recid=40 stamp=810583327 文件名=C:\SPDATA\SP\TT.DBF


set newname for 指明数据文件往个路径还原
restore database  开始还原数据库
switch datafile all   更新控制文件里记录的数据文件路径

执行完上述命令以后,v$datafile已经更新,但是v$logfile还是源库(244)

SQL> select name from v$datafile;

NAME
------------------------------------------------------

C:\SPDATA\SP\SYSTEM01.DBF
C:\SPDATA\SP\UNDOTBS01.DBF
C:\SPDATA\SP\SYSAUX01.DBF
C:\SPDATA\SP\USERS01.DBF
C:\SPDATA\SP\EXAMPLE01.DBF
C:\SPDATA\SP\TT.DBF

已选择6行。



SQL> select group#,member from v$logfile;

    GROUP# MEMBER
---------- ----------------------------------------
         3 C:\ORADATA\WIN10G\REDO03.LOG
         2 C:\ORADATA\WIN10G\REDO02.LOG
         1 C:\ORADATA\WIN10G\REDO01.LOG
         
         


5:更新控制文件中redo log的位置

将源库(244)win10g上的三个redo log拷贝到目的库(240)的 C:\SPDATA\SP\zt  目录下

mount状态下

SQL> select open_mode from v$database;

OPEN_MODE
----------
MOUNTED


SQL> alter database rename file  'C:\ORADATA\WIN10G\REDO01.LOG' to 'C:\SPDATA\SP\REDO01.LOG';//不能在rman中执行

数据库已更改。

SQL> alter database rename file  'C:\ORADATA\WIN10G\REDO02.LOG' to 'C:\SPDATA\SP\REDO02.LOG';

数据库已更改。

SQL> alter database rename file  'C:\ORADATA\WIN10G\REDO03.LOG' to 'C:\SPDATA\SP\REDO03.LOG';

数据库已更改。


查看数据文件头和控制文件的scn信息

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

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            6083442
         2            6083442
         3            6083442
         4            6083442
         5            6083442
         6            6083442

已选择6行。

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

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            6083442
         2            6083442
         3            6083442
         4            6083442
         5            6083442
         6            6083442

已选择6行。
  



SQL> select group#,sequence#,status, first_change# from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE#
---------- ---------- ---------------- -------------
         1        126 INACTIVE               6083310
         3        127 ACTIVE                 6083332
         2        128 CURRENT                6083507



查看归档日志里的具体信息

SQL> select SEQUENCE#,FIRST_CHANGE#,NEXT_CHANGE# from v$archived_log;

。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。省略。。。。。。。。。。。。。。。。
 
 SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
---------- ------------- ------------
       115       6079023      6079059
       116       6079059      6079150
       117       6079150      6079199
       118       6079199      6079232
       119       6079232      6079303
       120       6079303      6083207
       121       6083207      6083236
       122       6083236      6083256
       123       6083256      6083276
       124       6083276      6083295
       125       6083295      6083310

 SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
---------- ------------- ------------
       126       6083310      6083332
       127       6083332      6083507

已选择90行。



SQL>

RMAN> recover database;

启动 recover 于 21-3月 -13
使用通道 ORA_DISK_1

正在开始介质的恢复

通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复
通道 ORA_DISK_1: 正在恢复存档日志
存档日志线程 =1 序列=127
通道 ORA_DISK_1: 正在读取备份段 C:\SCP\O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = C:\SCP\O1_MF_ANNNN_TAG20130320T173353_8NM0N1L2_.BKP 标记 = TAG20130320T173353
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:01
存档日志文件名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\ARCHIVELOG\2
013_03_21\O1_MF_1_127_8NNPDCN0_.ARC 线程 =1 序列 =127
无法找到存档日志
存档日志线程 =1 序列=1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 03/20/2013 18:09:00 上) 失败
RMAN-06054: 介质恢复正请求未知的日志: 线程 1 seq 1 lowscn 6083508


recover database until cancel  这个命令必须在sqlplus中运行,不能在rman中运行


然后在sqlplus中执行也报错

SQL> recover database until cancel;

ORA-00283: 恢复会话因错误而取消
ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成
 
 
而继续在ramn中执行,也报错

RMAN> recover database until scn 6083507;

启动 recover 于 20-3月 -13
使用通道 ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 03/20/2013 19:07:52 上) 失败
RMAN-06556: 数据文件 1 必须从 scn 6083506 之前的备份复原


此时直接使用resetlogs方式打开db

RMAN> alter database open resetlogs;

 


然后找到控制文件的语法,重建控制文件(open状态下)

SQL> alter database backup controlfile to trace ;

然后在udump中找到最新的trace文件,获得控制文件的语法
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
--     Set #2. RESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- The contents of online logs will be lost and all backups will
-- be invalidated. Use this only if online logs are damaged.
-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
--  ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "WIN10G" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'C:\SPDATA\SP\REDO01.LOG'  SIZE 50M,
  GROUP 2 'C:\SPDATA\SP\REDO02.LOG'  SIZE 50M,
  GROUP 3 'C:\SPDATA\SP\REDO03.LOG'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  'C:\SPDATA\SP\SYSTEM01.DBF',
  'C:\SPDATA\SP\UNDOTBS01.DBF',
  'C:\SPDATA\SP\SYSAUX01.DBF',
  'C:\SPDATA\SP\USERS01.DBF',
  'C:\SPDATA\SP\EXAMPLE01.DBF',
  'C:\SPDATA\SP\TT.DBF'
CHARACTER SET ZHS16GBK
;
++++++++++++++++++++++++++++++++++++++++++++++++++
 
然后关闭数据库、删除tt库上的三个控制文件、将pfile中的db_name 改为sp

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>

删除控制文件、修改pfile中的db_name为sp


然后启动db到nomount状态下

修改控制文件的语法,将REUSE一定要改为 SET ,win10g改为sp,否则报错如下:

CREATE CONTROLFILE REUSE DATABASE "SP" RESETLOGS  ARCHIVELOG
*
第 1 行出现错误:
ORA-01503: CREATE CONTROLFILE ??
ORA-01504: ???? 'SP' ??? db_name 'win10g' ???


SQL> CREATE CONTROLFILE SET DATABASE "SP" RESETLOGS  ARCHIVELOG
  2      MAXLOGFILES 16
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 8
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 1 'C:\SPDATA\SP\REDO01.LOG'  SIZE 50M,
  9    GROUP 2 'C:\SPDATA\SP\REDO02.LOG'  SIZE 50M,
 10    GROUP 3 'C:\SPDATA\SP\REDO03.LOG'  SIZE 50M
 11  -- STANDBY LOGFILE
 12  DATAFILE
 13    'C:\SPDATA\SP\SYSTEM01.DBF',
 14    'C:\SPDATA\SP\UNDOTBS01.DBF',
 15    'C:\SPDATA\SP\SYSAUX01.DBF',
 16    'C:\SPDATA\SP\USERS01.DBF',
 17    'C:\SPDATA\SP\EXAMPLE01.DBF',
 18    'C:\SPDATA\SP\TT.DBF'
 19  CHARACTER SET ZHS16GBK
 20  ;

控制文件已创建。

SQL>

SQL> alter database open resetlogs;

数据库已更改。


SQL> select name from v$database;

NAME
---------
SP

可以看到此时的数据库名改为了最新的SP

下面看下控制文件、日志文件和数据文件的scn信息

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

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            6084324
         2            6084324
         3            6084324
         4            6084324
         5            6084324
         6            6084324

已选择6行。

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

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            6084324
         2            6084324
         3            6084324
         4            6084324
         5            6084324
         6            6084324

已选择6行。

SQL>
SQL> select group#,sequence#,status from v$log;

    GROUP#  SEQUENCE# STATUS
---------- ---------- ----------------
         1          0 UNUSED
         2          1 CURRENT
         3          0 UNUSED

SQL>


验证t表中的数据

SQL>
SQL> select * from scott.t;

        ID
----------
         6
         7
         8
         9
        10
        11
        12

已选择7行。





来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28373936/viewspace-1722262/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Xiaofei Huangfu Oracle DBA,Oracle ACE Oracle 19c OCM12c OCM,11g OCM MySQL 5.6,5.7,8.0 OCP 18年以上IT从业经验,有丰富的数据库和开发领域经验,多年Oracle运维经验和java开发经验。

注册时间:2013-09-05

  • 博文量
    151
  • 访问量
    231234