此命令的输出可以看出,Oracle RMAN的duplicate 命令内部执行的情况,对克隆有更深刻的理解。
之前的步骤演示请参考:

 

 c:\oracle\product\10.2.0\client_1\BIN>rman target sys/password@DGP

 
恢复管理器: Release 10.2.0.1.0 - Production on 星期二 1月 31 00:59:06 2012
 
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
 
连接到目标数据库: DG (DBID=1686618574)
 
RMAN> connect auxiliary sys/password@DGS
 
已连接到辅助数据库: DGC (未装载)
 
RMAN> duplicate target database to dgc;
 
启动 Duplicate Db 于 31-1月 -12
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=155 devtype=DISK
 
内存脚本的内容:
{
   set until scn  526998;
   set newname for datafile  1 to
 "/u01/app/oracle/oradata/dgc/system01.dbf";
   set newname for datafile  2 to
 "/u01/app/oracle/oradata/dgc/undotbs01.dbf";
   set newname for datafile  3 to
 "/u01/app/oracle/oradata/dgc/sysaux01.dbf";
   set newname for datafile  4 to
 "/u01/app/oracle/oradata/dgc/users01.dbf";
   restore
   check readonly
   clone database
   ;
}
正在执行内存脚本
 
正在执行命令: SET until clause
 
正在执行命令: SET NEWNAME
 
正在执行命令: SET NEWNAME
 
正在执行命令: SET NEWNAME
 
正在执行命令: SET NEWNAME
 
启动 restore 于 31-1月 -12
使用通道 ORA_AUX_DISK_1
 
通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到/u01/app/oracle/oradata/dgc/system01.dbf
正将数据文件00002恢复到/u01/app/oracle/oradata/dgc/undotbs01.dbf
正将数据文件00003恢复到/u01/app/oracle/oradata/dgc/sysaux01.dbf
正将数据文件00004恢复到/u01/app/oracle/oradata/dgc/users01.dbf
通道 ORA_AUX_DISK_1: 正在读取备份段 /home/oracle/all_DG_2.bak
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段句柄 = /home/oracle/all_DG_2.bak 标记 = TAG20120125T110557
通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:54
完成 restore 于 31-1月 -12
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "DGC" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES      100
  MAXINSTANCES     8
  MAXLOGHISTORY      292
 LOGFILE
  GROUP  1 ( '/u01/app/oracle/oradata/dgc/redo01.log' ) SIZE 50 M  REUSE,
  GROUP  2 ( '/u01/app/oracle/oradata/dgc/redo02.log' ) SIZE 50 M  REUSE,
  GROUP  3 ( '/u01/app/oracle/oradata/dgc/redo03.log' ) SIZE 50 M  REUSE
 DATAFILE
  '/u01/app/oracle/oradata/dgc/system01.dbf'
 CHARACTER SET ZHS16GBK
 
 
内存脚本的内容:
{
   switch clone datafile all;
}
正在执行内存脚本
 
释放的通道: ORA_AUX_DISK_1
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=1 stamp=773487060 文件名=/u01/app/oracle/oradata/dgc/undo
tbs01.dbf
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=2 stamp=773487060 文件名=/u01/app/oracle/oradata/dgc/sysa
ux01.dbf
数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=3 stamp=773487060 文件名=/u01/app/oracle/oradata/dgc/user
s01.dbf
 
内存脚本的内容:
{
   set until scn  526998;
   recover
   clone database
    delete archivelog
   ;
}
正在执行内存脚本
 
正在执行命令: SET until clause
 
启动 recover 于 31-1月 -12
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=155 devtype=DISK
 
正在开始介质的恢复
 
存档日志线程 1 序列 14 已作为文件 /u01/app/oracle/flash_recovery_area/DGP/archiv
elog/2012_01_25/o1_mf_1_14_7kywg5q6_.arc 存在于磁盘上
存档日志文件名 =/u01/app/oracle/flash_recovery_area/DGP/archivelog/2012_01_25/o1
_mf_1_14_7kywg5q6_.arc 线程 =1 序列 =14
介质恢复完成, 用时: 00:00:01
完成 recover 于 31-1月 -12
 
内存脚本的内容:
{
   shutdown clone;
   startup clone nomount ;
}
正在执行内存脚本
 
数据库已卸载
Oracle 实例已关闭
 
已连接到辅助数据库 (未启动)
Oracle 实例已启动
 
系统全局区域总计     167772160 字节
 
Fixed Size                     1218316 字节
Variable Size                 96471284 字节
Database Buffers              67108864 字节
Redo Buffers                   2973696 字节
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "DGC" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES      100
  MAXINSTANCES     8
  MAXLOGHISTORY      292
 LOGFILE
  GROUP  1 ( '/u01/app/oracle/oradata/dgc/redo01.log' ) SIZE 50 M  REUSE,
  GROUP  2 ( '/u01/app/oracle/oradata/dgc/redo02.log' ) SIZE 50 M  REUSE,
  GROUP  3 ( '/u01/app/oracle/oradata/dgc/redo03.log' ) SIZE 50 M  REUSE
 DATAFILE
  '/u01/app/oracle/oradata/dgc/system01.dbf'
 CHARACTER SET ZHS16GBK
 
 
内存脚本的内容:
{
   set newname for tempfile  1 to
 "/u01/app/oracle/oradata/dgc/temp01.dbf";
   switch clone tempfile all;
   catalog clone datafilecopy  "/u01/app/oracle/oradata/dgc/undotbs01.dbf";
   catalog clone datafilecopy  "/u01/app/oracle/oradata/dgc/sysaux01.dbf";
   catalog clone datafilecopy  "/u01/app/oracle/oradata/dgc/users01.dbf";
   switch clone datafile all;
}
正在执行内存脚本
 
正在执行命令: SET NEWNAME
 
临时文件 1 在控制文件中已重命名为 /u01/app/oracle/oradata/dgc/temp01.dbf
 
已将数据文件副本列入目录
数据文件副本 filename=/u01/app/oracle/oradata/dgc/undotbs01.dbf recid=1 stamp=77
3487080
 
已将数据文件副本列入目录
数据文件副本 filename=/u01/app/oracle/oradata/dgc/sysaux01.dbf recid=2 stamp=773
487081
 
已将数据文件副本列入目录
数据文件副本 filename=/u01/app/oracle/oradata/dgc/users01.dbf recid=3 stamp=7734
87081
 
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=1 stamp=773487080 文件名=/u01/app/oracle/oradata/dgc/undo
tbs01.dbf
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=2 stamp=773487081 文件名=/u01/app/oracle/oradata/dgc/sysa
ux01.dbf
数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=3 stamp=773487081 文件名=/u01/app/oracle/oradata/dgc/user
s01.dbf
 
内存脚本的内容:
{
   Alter clone database open resetlogs;
}
正在执行内存脚本
 
数据库已打开
完成 Duplicate Db 于 31-1月 -12
 
RMAN>
 


     本文转自andylhz 51CTO博客,原文链接:http://blog.51cto.com/andylhz2009/769170,如需转载请自行联系原作者