windows主机下使用rman恢复备份到不同主机

本文详细介绍了如何使用RMAN工具迁移Oracle数据库,包括设置、备份、恢复、日志同步等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0

源主机ip :  192.168.6.144


1:ORACLE相关设置如下:


ORACLE_BASE=C:\oracle\product\10.2.0 

ORACLE_HOME=C:\oracle\product\10.2.0\db_1

ORACLE_SID=orcl

Path=C:\oracle\product\10.2.0\db_1\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem



2:查看数据库归档模式


SQL> archive log list;

数据库日志模式            存档模式

自动存档             启用

存档终点            USE_DB_RECOVERY_FILE_DEST

最早的联机日志序列     4

下一个存档日志序列   6

当前日志序列           6



如果为非归档,可以用如下命令修改


SQL> startup mount

ORACLE 例程已经启动。

Total System Global Area  167772160 bytes

Fixed Size                  1247900 bytes

Variable Size              75498852 bytes

Database Buffers           88080384 bytes

Redo Buffers                2945024 bytes

数据库装载完毕。

SQL>

SQL> alter database archivelog;

数据库已更改。



3:查看源库数据文件、日志文件和控制文件信息


SQL> select file_name from dba_Data_files;

FILE_NAME

--------------------------------------------------------------------------------

C:\ORADATA\ORCL\USERS01.DBF

C:\ORADATA\ORCL\SYSAUX01.DBF

C:\ORADATA\ORCL\UNDOTBS01.DBF

C:\ORADATA\ORCL\SYSTEM01.DBF

C:\ORADATA\ORCL\EXAMPLE01.DBF

C:\ORADATA\ORCL\TT.DBF

C:\ORADATA\ORCL\TEST.DBF

已选择7行。


SQL> select member from v$logfile;

MEMBER

--------------------------------------------------------------------------------

C:\ORADATA\ORCL\REDO03.LOG

C:\ORADATA\ORCL\REDO02.LOG

C:\ORADATA\ORCL\REDO01.LOG

SQL> select name from v$controlfile;

NAME

--------------------------------------------------------------------------------

C:\ORADATA\ORCL\CONTROL01.CTL

C:\ORADATA\ORCL\CONTROL02.CTL

C:\ORADATA\ORCL\CONTROL03.CTL


4:备份源数据库,并以这个备份作为恢复的基础


SQL> select dbid from v$database;

  DBID

---------------

 1321505122


C:\>rman target /


恢复管理器: Release 10.2.0.1.0 - Production on 星期三 9月 12 09:20:39 2012

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

连接到目标数据库: ORCL (DBID=1321505122)

RMAN> backup database plus archivelog;   //备份源数据库

启动 backup 于 13-9月 -12

当前日志已存档

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=140 devtype=DISK

通道 ORA_DISK_1: 正在启动存档日志备份集

通道 ORA_DISK_1: 正在指定备份集中的存档日志

输入存档日志线程 =1 序列 =20 记录 ID=18 时间戳=793883108

输入存档日志线程 =1 序列 =21 记录 ID=19 时间戳=793883136

输入存档日志线程 =1 序列 =22 记录 ID=20 时间戳=793883175

输入存档日志线程 =1 序列 =23 记录 ID=21 时间戳=793883197

输入存档日志线程 =1 序列 =24 记录 ID=22 时间戳=793883259

通道 ORA_DISK_1: 正在启动段 1 于 13-9月 -12

通道 ORA_DISK_1: 已完成段 1 于 13-9月 -12

段句柄=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2012_09_13\O1_MF_ANNNN_TAG20120913T110741_852MHZSW_.BKP 标记=TAG20120913T110741 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:04

完成 backup 于 13-9月 -12

启动 backup 于 13-9月 -12

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

输入数据文件 fno=00001 name=C:\ORADATA\ORCL\SYSTEM01.DBF

输入数据文件 fno=00003 name=C:\ORADATA\ORCL\SYSAUX01.DBF

输入数据文件 fno=00005 name=C:\ORADATA\ORCL\EXAMPLE01.DBF

输入数据文件 fno=00006 name=C:\ORADATA\ORCL\TT.DBF

输入数据文件 fno=00007 name=C:\ORADATA\ORCL\TEST.DBF

输入数据文件 fno=00002 name=C:\ORADATA\ORCL\UNDOTBS01.DBF

输入数据文件 fno=00004 name=C:\ORADATA\ORCL\USERS01.DBF

通道 ORA_DISK_1: 正在启动段 1 于 13-9月 -12

通道 ORA_DISK_1: 已完成段 1 于 13-9月 -12

段句柄=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2012_09_13\O1_MF_NNNDF_TAG20120913T110748_852MJ489_.BKP 标记=TAG20120913T110748 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:05

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

备份集中包括当前控制文件

在备份集中包含当前的 SPFILE

通道 ORA_DISK_1: 正在启动段 1 于 13-9月 -12

通道 ORA_DISK_1: 已完成段 1 于 13-9月 -12

段句柄=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2012_09_13\O1_MF_NCSNF_TAG20120913T110748_852ML6SW_.BKP 标记=TAG20120913T110748 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02

完成 backup 于 13-9月 -12

启动 backup 于 13-9月 -12

当前日志已存档

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在启动存档日志备份集

通道 ORA_DISK_1: 正在指定备份集中的存档日志

输入存档日志线程 =1 序列 =25 记录 ID=23 时间戳=793883335

通道 ORA_DISK_1: 正在启动段 1 于 13-9月 -12

通道 ORA_DISK_1: 已完成段 1 于 13-9月 -12

段句柄=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2012_09_13\O1_MF_ANNNN_TAG20120913T110856_852ML93F_.BKP 标记=TAG20120913T110856 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02

完成 backup 于 13-9月 -12


RMAN> backup current controlfile;  // 备份当前控制文件

启动 backup 于 13-9月 -12

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

备份集中包括当前控制文件

通道 ORA_DISK_1: 正在启动段 1 于 13-9月 -12

通道 ORA_DISK_1: 已完成段 1 于 13-9月 -12

段句柄=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2012_09_13\O1_MF_NCNNF_TAG20120913T111243_852MSCTC_.BKP 标记=TAG20120913T111243 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01

完成 backup 于 13-9月 -12



5:生成源数据库的参数文件


SQL> show parameter spfile;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

spfile                               string      C:\ORACLE\PRODUCT\10.2.0\DB_1\

                                                 DBS\SPFILEORCL.ORA

SQL> create pfile from spfile;


然后到 C:\oracle\product\10.2.0\db_1\database目录下生成一个文件 initorcl.ora  ,将这个参数文件传到目的库(192.168.6.244)中 C:\oracle\product\10.2.0\db_1\database目录下;

将源库C:\oracle\product\10.2.0\flash_recovery_area\ORCL\BACKUPSET\2012_09_12目录下的备份文件全部拷贝到 目的库(192.168.6.244)中




目的主机ip: 192.168.6.244



1:上传oracle的安装包,安装的时候选择仅安装数据库软件 ,不要用dbca创建库


2:修改  initorcl.ora 文件中的部分参数

 

 adump、bdump、cdump和udump  位置

 control_files  位置

 db_recovery_file_dest 位置


 

3:windows下可以通过oradim创建一个服务启动oracle环境


 C:\>oradim -new -sid jim

   实例已创建。



4:通过rman将数据库启动到nomount状态


C:\>set oracle_sid=jim

C:\>rman target /

恢复管理器: Release 10.2.0.1.0 - Production on 星期三 9月 12 10:11:05 2012

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

已连接到目标数据库 (未启动)

RMAN> startup nomount pfile='C:\oracle\product\10.2.0\db_1\database\initorcl.ora';

Oracle 实例已启动

系统全局区域总计     167772160 字节

Fixed Size                     1247900 字节

Variable Size                 62915940 字节

Database Buffers             100663296 字节

Redo Buffers                   2945024 字节

RMAN>


5:通过备份的控制文件恢复出控制文件


将源库(6.144)backupset目录下的备份集拷贝到目的库(6.244)的C:\db_arch\backupset目录下,然后找到备份控制文件的备份集名字


RMAN> restore controlfile  to 'C:\oradata\jim\control01.ctl' from 'C:\db_arch\backupset\O1_MF_NCNNF_TAG20120913T111243_852MSCTC_.BKP';

启动 restore 于 13-9月 -12

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=157 devtype=DISK

通道 ORA_DISK_1: 正在复原控制文件

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:04

完成 restore 于 13-9月 -12



6:有了控制文件以后,然后挂载数据库


RMAN> alter database mount;

数据库已装载

释放的通道: ORA_DISK_1

RMAN>


mount数据库的过程中会去读控制文件,如果初始化参数 initorcl.ora  中的 control_files指定了多个控制文件路径,需要将前一步恢复出来的控制文件多复制几份,

然后放到对应的路径下;否则mount数据库的时候,报如下错


RMAN-03002: alter db 命令 (在 09/12/2012 10:32:59 上) 失败

ORA-00205: 标识控制文件时出错, 有关详细信息, 请查看预警日志



7:oracle 10g开始,新增了一个功能,通过catalog start with命令,oracle 可以搜索指定目录中的备份文件,并将这些备份文件添加到控制文件。

 以下命令就是向控制文件中加载备份集


RMAN> catalog start with 'C:\db_arch\backupset';

启动 implicit crosscheck backup 于 13-9月 -12

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=156 devtype=DISK

已交叉检验的 4 对象

完成 implicit crosscheck backup 于 13-9月 -12

启动 implicit crosscheck copy 于 13-9月 -12

使用通道 ORA_DISK_1

完成 implicit crosscheck copy 于 13-9月 -12

搜索恢复区域中的所有文件

正在编制文件目录...

没有为文件编制目录

搜索与样式 C:\db_arch\backupset 匹配的所有文件

数据库未知文件的列表

=====================================

文件名: C:\DB_ARCH\backupset\O1_MF_ANNNN_TAG20120913T110741_852MHZSW_.BKP

文件名: C:\DB_ARCH\backupset\O1_MF_ANNNN_TAG20120913T110856_852ML93F_.BKP

文件名: C:\DB_ARCH\backupset\O1_MF_NCNNF_TAG20120913T111243_852MSCTC_.BKP

文件名: C:\DB_ARCH\backupset\O1_MF_NCSNF_TAG20120913T110748_852ML6SW_.BKP

文件名: C:\DB_ARCH\backupset\O1_MF_NNNDF_TAG20120913T110748_852MJ489_.BKP

是否确实要将上述文件列入目录 (输入 YES 或 NO)? yes

正在编制文件目录...

目录编制完毕

已列入目录的文件的列表

=======================

文件名: C:\DB_ARCH\backupset\O1_MF_ANNNN_TAG20120913T110741_852MHZSW_.BKP

文件名: C:\DB_ARCH\backupset\O1_MF_ANNNN_TAG20120913T110856_852ML93F_.BKP

文件名: C:\DB_ARCH\backupset\O1_MF_NCNNF_TAG20120913T111243_852MSCTC_.BKP

文件名: C:\DB_ARCH\backupset\O1_MF_NCSNF_TAG20120913T110748_852ML6SW_.BKP

文件名: C:\DB_ARCH\backupset\O1_MF_NNNDF_TAG20120913T110748_852MJ489_.BKP



9:编写恢复脚本,然后执行恢复


RMAN> 

run{

set newname for datafile 1 

to 'C:\oradata\jim\SYSTEM01.DBF';

set newname for datafile 2

to 'C:\oradata\jim\UNDOTBS01.DBF';

set newname for datafile 3

to 'C:\oradata\jim\SYSAUX01.DBF';

set newname for datafile 4

to 'C:\oradata\jim\USERS01.DBF';

set newname for datafile 5

to 'C:\oradata\jim\EXAMPLE01.DBF';

set newname for datafile 6

to 'C:\oradata\jim\TT01.DBF';

set newname for datafile 7

to 'C:\oradata\jim\TEST.DBF';

restore database;

switch datafile all;  // 对于nocatalog模式下,rman备份的信息是保存在控制文件里,而这个命令就是更新控制文件里的信息

}

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

启动 restore 于 13-9月 -12

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00001恢复到C:\ORADATA\JIM\SYSTEM01.DBF

正将数据文件00002恢复到C:\ORADATA\JIM\UNDOTBS01.DBF

正将数据文件00003恢复到C:\ORADATA\JIM\SYSAUX01.DBF

正将数据文件00004恢复到C:\ORADATA\JIM\USERS01.DBF

正将数据文件00005恢复到C:\ORADATA\JIM\EXAMPLE01.DBF

正将数据文件00006恢复到C:\ORADATA\JIM\TT01.DBF

正将数据文件00007恢复到C:\ORADATA\JIM\TEST.DBF

通道 ORA_DISK_1: 正在读取备份段 C:\DB_ARCH\BACKUPSET\O1_MF_NNNDF_TAG20120913T110

748_852MJ489_.BKP

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = C:\DB_ARCH\BACKUPSET\O1_MF_NNNDF_TAG20120913T110748_852MJ489_.BKP 标记

= TAG20120913T110748

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:45

完成 restore 于 13-9月 -12

数据文件 1 已转换成数据文件副本

输入数据文件副本 recid=9 stamp=793887265 文件名=C:\ORADATA\JIM\SYSTEM01.DBF

数据文件 2 已转换成数据文件副本

输入数据文件副本 recid=10 stamp=793887265 文件名=C:\ORADATA\JIM\UNDOTBS01.DBF

数据文件 3 已转换成数据文件副本

输入数据文件副本 recid=11 stamp=793887265 文件名=C:\ORADATA\JIM\SYSAUX01.DBF

数据文件 4 已转换成数据文件副本

输入数据文件副本 recid=12 stamp=793887266 文件名=C:\ORADATA\JIM\USERS01.DBF

数据文件 5 已转换成数据文件副本

输入数据文件副本 recid=13 stamp=793887266 文件名=C:\ORADATA\JIM\EXAMPLE01.DBF

数据文件 6 已转换成数据文件副本

输入数据文件副本 recid=14 stamp=793887266 文件名=C:\ORADATA\JIM\TT01.DBF

数据文件 7 已转换成数据文件副本

输入数据文件副本 recid=15 stamp=793887266 文件名=C:\ORADATA\JIM\TEST.DBF

RMAN>


10:将以shudown immediate方式关闭源库,并将源库(1.144)目录下的三个redolog拷贝到目的库(6.244)上的数据文件目录C:\oradata\jim  ;

并将源库(6.144)上的归档日志拷贝到目的库(6.244)的C:\db_arch\backupset目录下 ; 如下操作时修改控制文件里新日志文件的路径


在目的库(6.244)上再开一个sql窗口,执行


SQL> select  open_mode from v$database;

OPEN_MODE

----------

MOUNTED

SQL> alter database rename file  'C:\oradata\orcl\redo01.log' to 'C:\oradata\jim\redo01.log';

数据库已更改。

SQL> alter database rename file  'C:\oradata\orcl\redo02.log' to 'C:\oradata\jim\redo02.log';

数据库已更改。

SQL> alter database rename file  'C:\oradata\orcl\redo03.log' to 'C:\oradata\jim\redo03.log';

数据库已更改。




11:利用归档日志进行数据库的恢复


RMAN> recover database;

启动 recover 于 13-9月 -12

使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 26 已作为文件 C:\ORADATA\JIM\REDO01.LOG 存在于磁盘上

存档日志线程 1 序列 27 已作为文件 C:\ORADATA\JIM\REDO02.LOG 存在于磁盘上

存档日志线程 1 序列 28 已作为文件 C:\ORADATA\JIM\REDO03.LOG 存在于磁盘上

通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复

通道 ORA_DISK_1: 正在恢复存档日志

存档日志线程 =1 序列=25

通道 ORA_DISK_1: 正在读取备份段 C:\DB_ARCH\BACKUPSET\O1_MF_ANNNN_TAG20120913T110

856_852ML93F_.BKP

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = C:\DB_ARCH\BACKUPSET\O1_MF_ANNNN_TAG20120913T110856_852ML93F_.BKP 标记

= TAG20120913T110856

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:01

存档日志文件名 =C:\DB_ARCH\ORCL\ARCHIVELOG\2012_09_13\O1_MF_1_25_852R7JVT_.ARC

线程 =1 序列 =25

通道 default: 正在删除存档日志

存档日志文件名 =C:\DB_ARCH\ORCL\ARCHIVELOG\2012_09_13\O1_MF_1_25_852R7JVT_.ARC

记录 ID=29 时间戳 =793888112

存档日志文件名 =C:\ORADATA\JIM\REDO01.LOG 线程 =1 序列 =26

存档日志文件名 =C:\ORADATA\JIM\REDO02.LOG 线程 =1 序列 =27

存档日志文件名 =C:\ORADATA\JIM\REDO03.LOG 线程 =1 序列 =28

介质恢复完成, 用时: 00:00:08

完成 recover 于 13-9月 -12

RMAN>




12:以resetlogs方式打开db


RMAN> alter database open resetlogs;

数据库已打开




13:另外开一个sql窗口,验证数据


SQL> connect test/test;

已连接。

SQL> select * from test;

        ID NAME

---------- ----------

         1 a

         2 b

         3 c

         4 d

         5 c

         6 c

已选择6行。



以resetlogs方式打开数据库以后,需要对库做一次全备




14:增加temp临时文件


从dselect tablespace_name from dba_tablespaces 视图可以查到临时表空间的名字,但是在实际的存储目录上,却没有发现临时表空间


SQL> select name from v$tempfile;

NAME

------------------------------------------

C:\ORADATA\ORCL\TEMP01.DBF



然后增加临时表空间temp的数据文件,大小依据之前的临时表空间大小


SQL> alter tablespace temp add tempfile 'C:\ORADATA\JIM\TEMP01.DBF' size 100m;

SQL> select name from v$tempfile;

NAME

-------------------------------------------------------------------------------

C:\ORADATA\ORCL\TEMP01.DBF

C:\ORADATA\JIM\TEMP01.DBF



删除控制文件中关于临时表空间的相关记录


SQL> alter database tempfile 'C:\ORADATA\ORCL\TEMP01.DBF' offline;

数据库已更改。

SQL> alter database tempfile 'C:\ORADATA\ORCL\TEMP01.DBF' drop including datafil

es;

数据库已更改。

SQL> select name from v$tempfile;

NAME

--------------------------------------------------------------------------------

C:\ORADATA\JIM\TEMP01.DBF


至此,用rman迁移数据全部ok


参考链接    http://blog.youkuaiyun.com/tianlesoftware/article/details/6245209

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

转载于:http://blog.itpub.net/24862808/viewspace-743364/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值