RMAN复制(Duplicate)数据库之实战

网友投稿 306 2022-08-24

RMAN复制(Duplicate)数据库之实战

F:/oracle>set oracle_sid=inthdmp2 F:/oracle>sqlplus "/ as sysdba" Copyright (c) 1982, 2005, Oracle. All rights reserved. 已连接到空闲例程。 SQL> startup ORACLE 例程已经启动。 数据库装载完毕。 数据库已经打开。 SQL> 2、连接并启动辅助实例到nomount 状态; F:/oracle>set oracle_sid=inthdmp F:/oracle>sqlplus "/ as sysdba" SQL*Plus: Release 10.2.0.1.0 - Production on 星期一10 月22 16:11:28 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. 已连接到空闲例程。 SQL> startup nomount ORACLE 例程已经启动。 SQL> 3、RMAN 连接到目标数据库和辅助实例。 F:/oracle>set oracle_sid=inthdmp2

###目标数据库使用操作系统认证,所以首先设置SID F:/oracle>rman target / auxiliary sys/verysafe:)@inthdmp 恢复管理器: Release 10.2.0.1.0 - Production on 星期五12 月02 15:03:10 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. 连接到目标数据库: inthdmp2 (DBID=3402005373) 已连接到辅助数据库: inthdmp (未装载) RMAN> 4、首先确认目标库存在可用备份。 RMAN> list backup; 使用目标数据库控制文件替代恢复目录 备份集列表 =================== BS 关键字类型LV 大小设备类型经过时间完成时间 ------- ---- -- ---------- ----------- ------------ ---------- 3 Full 443.16M DISK 00:00:51 04-12 月-09 BP 关键字: 3 状态: AVAILABLE 已压缩: NO 标记: TAG20071022T161927 段名:D:/BACKUP/06IV54CF_1_1 备份集3 中的数据文件列表 文件LV 类型Ckp SCN Ckp 时间名称 ---- -- ---- ---------- ---------- ---- 1 Full 1326175 04-12 月-09 F:/ORACLE/ORADATA/inthdmp2/SYSTEM01.DBF 2 Full 1326175 04-12 月-09 F:/ORACLE/ORADATA/inthdmp2/UNDOTBS01.DBF 3 Full 1326175 04-12 月-09 F:/ORACLE/ORADATA/inthdmp2/SYSAUX01.DBF 4 Full 1326175 04-12 月-09 F:/ORACLE/ORADATA/inthdmp2/inthdmp2.DBF 5 Full 1326175 04-12 月-09 F:/ORACLE/ORADATA/inthdmp2/USERS01.DBF BS 关键字类型LV 大小设备类型经过时间完成时间

4 Full 6.80M DISK 00:00:01 04-12 月-09 BP 关键字: 4 状态: AVAILABLE 已压缩: NO 标记: TAG20071022T162023 段名:D:/BACKUP/C-3402005373-20071022-00 包括的控制文件: Ckp SCN: 1326175 Ckp 时间: 04-12 月-09 包含的SPFILE: 修改时间: 24-9 月-07 RMAN> 5、万事俱备,只欠Duplicate 执行; RMAN> duplicate target database to inthdmp; ####只需要执行这一行 分配的通道: ORA_AUX_DISK_1 通道ORA_AUX_DISK_1: sid=39 devtype=DISK 内存脚本的内容:

{ set newname for datafile 1 to "F:/ORACLE/ORADATA/inthdmp/SYSTEM01.DBF"; set newname for datafile 2 to "F:/ORACLE/ORADATA/inthdmp/UNDOTBS01.DBF"; set newname for datafile 3 to "F:/ORACLE/ORADATA/inthdmp/SYSAUX01.DBF"; set newname for datafile 4 to "F:/ORACLE/ORADATA/inthdmp/inthdmp2.DBF"; set newname for datafile 5 to "F:/ORACLE/ORADATA/inthdmp/USERS01.DBF"; restore check readonly clone database ; }

正在执行内存脚本 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 正在执行命令: SET NEWNAME 启动restore 于22-10 月-07 使用通道ORA_AUX_DISK_1 通道ORA_AUX_DISK_1: 正在开始恢复数据文件备份集 通道ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件 正将数据文件00001 恢复到F:/ORACLE/ORADATA/inthdmp/SYSTEM01.DBF 正将数据文件00002 恢复到F:/ORACLE/ORADATA/inthdmp/UNDOTBS01.DBF 正将数据文件00003 恢复到F:/ORACLE/ORADATA/inthdmp/SYSAUX01.DBF 正将数据文件00004 恢复到F:/ORACLE/ORADATA/inthdmp/inthdmp2.DBF 正将数据文件00005 恢复到F:/ORACLE/ORADATA/inthdmp/USERS01.DBF 通道ORA_AUX_DISK_1: 正在读取备份段D:/BACKUP/06IV54CF_1_1 通道ORA_AUX_DISK_1: 已恢复备份段1 段句柄= D:/BACKUP/06IV54CF_1_1 标记= TAG20071022T161927 通道ORA_AUX_DISK_1: 恢复完成, 用时: 00:01:06 sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "inthdmp" RESETLOGS NOARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 ( 'F:/ORACLE/ORADATA/inthdmp/REDO01.LOG' ) SIZE 20 M REUSE, GROUP 2 ( 'F:/ORACLE/ORADATA/inthdmp/REDO02.LOG' ) SIZE 20 M REUSE, GROUP 3 ( 'F:/ORACLE/ORADATA/inthdmp/REDO03.LOG' ) SIZE 20 M REUSE DATAFILE 'F:/ORACLE/ORADATA/inthdmp/SYSTEM01.DBF' CHARACTER SET ZHS16GBK 内存脚本的内容: { switch clone datafile all; } 正在执行内存脚本 释放的通道: ORA_AUX_DISK_1 正在执行内存脚本 启动recover 于22-10 月-07 分配的通道: ORA_AUX_DISK_1 通道ORA_AUX_DISK_1: sid=39 devtype=DISK 完成recover 于22-10 月-07 内存脚本的内容:

{ shutdown clone; startup clone nomount ; }

正在执行内存脚本 数据库已卸载 Oracle 实例已关闭 已连接到辅助数据库(未启动) Oracle 实例已启动 系统全局区域总计285212672 字节 Fixed Size 1248552 字节 Variable Size 226493144 字节 Database Buffers 50331648 字节 Redo Buffers 7139328 字节 sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "inthdmp" RESETLOGS NOARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 ( 'F:/ORACLE/ORADATA/inthdmp/REDO01.LOG' ) SIZE 20 M REUSE, GROUP 2 ( 'F:/ORACLE/ORADATA/inthdmp/REDO02.LOG' ) SIZE 20 M REUSE, GROUP 3 ( 'F:/ORACLE/ORADATA/inthdmp/REDO03.LOG' ) SIZE 20 M REUSE DATAFILE 'F:/ORACLE/ORADATA/inthdmp/SYSTEM01.DBF' CHARACTER SET ZHS16GBK 内存脚本的内容:

{ set newname for tempfile 1 to "F:/ORACLE/ORADATA/inthdmp/TEMP01.DBF"; switch clone tempfile all; catalog clone datafilecopy "F:/ORACLE/ORADATA/inthdmp/UNDOTBS01.DBF"; catalog clone datafilecopy "F:/ORACLE/ORADATA/inthdmp/SYSAUX01.DBF"; catalog clone datafilecopy "F:/ORACLE/ORADATA/inthdmp/inthdmp2.DBF"; catalog clone datafilecopy "F:/ORACLE/ORADATA/inthdmp/USERS01.DBF"; switch

clone datafile all; } 正在执行内存脚本 正在执行命令: SET NEWNAME 临时文件1 在控制文件中已重命名为F:/ORACLE/ORADATA/inthdmp/TEMP01.DBF 已将数据文件副本列入目录 数据文件副本filename=F:/ORACLE/ORADATA/inthdmp/UNDOTBS01.DBF recid=1 stamp=636654246 已将数据文件副本列入目录 数据文件副本filename=F:/ORACLE/ORADATA/inthdmp/SYSAUX01.DBF recid=2 stamp=636654246 已将数据文件副本列入目录 数据文件副本filename=F:/ORACLE/ORADATA/inthdmp/inthdmp2.DBF recid=3 stamp=636654246 已将数据文件副本列入目录 数据文件副本filename=F:/ORACLE/ORADATA/inthdmp/USERS01.DBF recid=4 stamp=636654247 数据文件2 已转换成数据文件副本 输入数据文件副本recid=1 stamp=636654246 文件名=F:/ORACLE/ORADATA/inthdmp/UNDOTBS01.DBF 数据文件3 已转换成数据文件副本 输入数据文件副本recid=2 stamp=636654246 文件名=F:/ORACLE/ORADATA/inthdmp/SYSAUX01.DBF 数据文件4 已转换成数据文件副本 输入数据文件副本recid=3 stamp=636654246 文件名=F:/ORACLE/ORADATA/inthdmp/inthdmp2.DBF 数据文件5 已转换成数据文件副本 输入数据文件副本recid=4 stamp=636654247 文件名=F:/ORACLE/ORADATA/inthdmp/USERS01.DBF 内存脚本的内容:

{ Alter clone database open resetlogs; }

正在执行内存脚本 数据库已打开 完成Duplicate Db RMAN>

6、连接副本数据库看看 RMAN> host; Microsoft Windows [版本5.2.3790] (C) 版权所有1985-2003 Microsoft Corp. F:/oracle>sqlplus inth/inth Copyright (c) 1982, 2005, Oracle. All rights reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options SQL> select *from tab where tname like 'INTH%' and rownum<9; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- INTHTMP_HC_ORC_BJ TABLE INTHTMP_HC_ORD_PRODUCT_PACKAGE TABLE INTHTMP_HC_ORD_PROD_PACK_ITEM TABLE INTHTMP_HC_PRODUCT_BJ TABLE INTHTMP_HC_PROJ_PROD_CLASS_BJ TABLE SQL> OK,数据都在。创建成功:) 整体来看,这是个非常简单的示例,简单是简单在我们操作的步骤上,事实上duplicate 就是一个具有强大 功能的简单命令,就像是一堆积木,通过各种各样的灵活组合来实现各种各样的需求,比如你可以在执行 duplicate 命令时通过指定UNTIL TIME 来限定恢复数据所在时间。又比如你可以通过指定PFILE 参数从客户端 初始化参数文件启动辅助实例,取代在创建辅助实例里创建spfile 的操作。又或者通过Set Newname 指定某个 数据文件的存储位置等等。其它诸如异地恢复啦,复制到asm 啦之类都是以duplicate 命令和辅助实例为主,几 个相关命令和子句为辅的综合应用,复制就是这么简单。 另外此章节中重点看看第5 步,虽然我们只执行了duplicate 一条命令,但你如果细细分析其执行日志的话 能够得到的决不仅仅只是这些。比如执行日志第3 行就看出是自动分配的通道,日志第5 行开始则是将 db_file_name_convert 等参数转换为SET NEWNAME 命令,再接着往下看,发现有restore、clone database 之类 命令,看过“一步一步学RMAN”的朋友肯定还记的在该系列最后二章节中我们曾经实践过RMAN 恢复备份 到异机的操作。与本例对比的话操作方式有不少雷同,你完全可以把duplicate 也看成是恢复操作,当然二者操 作也有差异,比如duplicate 命令更加简单,而且duplicate 创建的副本数据库拥有独立的DBID,而RMAN 手工 恢复到异机创建的是与源库相同的DBID(当然duplicate 也可以创建DBID 与源库相同,比如standby 数据库, 这

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何正向引导“国潮营销”?(国潮品牌推广策略)
下一篇:AIX 5L上管理网卡
相关文章

 发表评论

暂时没有评论,来抢沙发吧~