首页 > 代码库 > 基于RMAN从活动数据库异机克隆(rman duplicate from active DB)

基于RMAN从活动数据库异机克隆(rman duplicate from active DB)

Oracle 11g RMAN能够实现基于活动数据库进行异机克隆,从而省去需要先备份再ftp到辅助服务器的过程。这一切可以全部交给Oracle来搞定。在克隆期间,Oracle会读取Target DB的所有数据结构,无须人为的干预(不同的磁盘系统,文件路径与文件名要指定转换方式)。尽管如此,对于生产环境数据库在整个克隆期间性能会下降,其次在Target Server与Auxiliary Server中会产生较大的网络流量。如果这些可以接受的话,从活动数据库进行异机克隆是一个不错的选择。本文首先描述了克隆时不同的连接与克隆方式样本,最后演示了基于活动数据库的克隆。

 

1、RMAN不同克隆类型的连接方式
     关于RMAN不同克隆类型,请参考: 基于 RMAN 的同机数据库克隆 基于RMAN的异机数据库克隆(rman duplicate)
     $ export ORACLE_SID=sybo3
  
     # 从备份集克隆,不连接到Target DB以及catalog,或者没有使用catalog
     $ rman AUXILIARY /
  
     # 从备份集克隆,无catalog,元数据来源于Target DB控制文件
     $ rman TARGET sys/pwd@TAR AUXILIARY sys/pwd@AUX
  
     # 从备份集克隆连接到catalog,但不连接到target DB,元数据库来自RMAN catalog
     $ rman CATALOG rman/pwd@catalogdb AUXILIARY sys/pwd@AUX
  
     # 同时连接到target DB以及catalog 元数据来源于Target DB控制文件或catalog,该方式支持从备份集克隆,从活动数据库克隆
     $ rman TARGET sys/pwd@TAR CATALOG rman/pwd@catalogdb AUXILIARY sys/pwd@AUX

 

2、常用的数据库克隆场景
     # Auxiliary DB使用与Target DB相同的磁盘系统,文件位置及文件名,下同。需要转换的情形请参考: RMAN 数据库克隆文件位置转换方法
     DUPLICATE TARGET DATABASE TO sybo3
       SPFILE
       NOFILENAMECHECK;
  
     # 将数据库克隆到Target DB一周以前的状态,注,备份集或归档日志应存在 
     DUPLICATE TARGET DATABASE TO sybo3
       UNTIL TIME ‘SYSDATE-7‘
       SPFILE
       NOFILENAMECHECK;
  
     # 备份集保存在不同于Target DB保存的位置,此时需要在RMAN中单独指定其位置
     DUPLICATE DATABASE TO sybo3
       SPFILE
       BACKUP LOCATION ‘/u01/bak/fast_recovery_area/sybo3‘
       NOFILENAMECHECK;

 

3、基于活动数据库克隆图示

       技术分享

4、演示机遇活动数据库异机克隆

[sql] view plain copy
 
 print?
  1. --环境:      
  2. --目标数据库: 192.168.7.25/sybo3      /u01/database/sybo3   主机名:linux3         
  3. --辅助数据库: 192.168.7.26/sybo3      /u01/database/sybo3   主机名:linux4   目标数据库与辅助数据库使用相同的文件位置      
  4. --说明:          
  5. --本次演示使用为使用任何备份文件,连接到target DB。      
  6. --对于下面描述过程中,如创建参数文件,密码文件,监听等等有不甚了解的,可参考下面链接中有关文章的描述。         
  7. --http://blog.csdn.net/robinson_0612/article/category/827734  (体系结构相关)          
  8. --http://blog.csdn.net/robinson_0612/article/category/828434  (网络配置相关)        
  9.   
  10. [oracle@linux3 database]$ cat /etc/issue        
  11. Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)        
  12. Kernel \r on an \m        
  13.         
  14. SQL> select * from v$version where rownum<2;        
  15.         
  16. BANNER        
  17. --------------------------------------------------------------------------------          
  18. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production    
  19.   
  20. --Target DB的配置,位于主机linux3  
  21. SQL> select instance_name,host_name from v$instance;  
  22.   
  23. INSTANCE_NAME    HOST_NAME  
  24. ---------------- ----------------------------------------------------------------  
  25. sybo3            linux3.orasrv.com  
  26.   
  27. --Target DB处于归档模式  
  28. SQL> select name,open_mode,log_mode from v$database;  
  29.   
  30. NAME      OPEN_MODE            LOG_MODE  
  31. --------- -------------------- ------------  
  32. SYBO3     READ WRITE           ARCHIVELOG  
  33.   
  34. --Target DB上用于验证克隆成功的表  
  35. SQL> select * from t;  
  36.   
  37. NAME       ACTION  
  38. ---------- --------------------  
  39. Robinson   Transfer DB  
  40. Jackson    Transfer DB by rman  
  41.   
  42. -- Author : Robinson Cheng  
  43. -- Blog   : http://blog.csdn.net/robinson_0612  
  44.   
  45. [oracle@linux3 ~]$ export ORACLE_SID=sybo3  
  46. [oracle@linux3 ~]$ rman target /  
  47. RMAN> list backupset;         --->目标数据库无任何备份集  
  48.   
  49. specification does not match any backup in the repository  
  50.   
  51. RMAN> list copy;  
  52.   
  53. specification does not match any datafile copy in the repository  
  54. specification does not match any control file copy in the repository  
  55. specification does not match any archived log in the repository  
  56.   
  57. RMAN> list backup of archivelog all;  
  58.   
  59. specification does not match any backup in the repository  
  60.   
  61.   
  62. a、在Auxiliary server创建相应的dump文件夹     
  63. [oracle@linux4 database]$ more sybo3.sh      
  64. #!/bin/sh     
  65. mkdir -p /u01/database     
  66. mkdir -p /u01/database/sybo3/adump     
  67. mkdir -p /u01/database/sybo3/controlf     
  68. mkdir -p /u01/database/sybo3/fra     
  69. mkdir -p /u01/database/sybo3/oradata     
  70. mkdir -p /u01/database/sybo3/redo     
  71. mkdir -p /u01/database/sybo3/dpdump     
  72. mkdir -p /u01/database/sybo3/pfile     
  73. [oracle@linux4 database]$ ./sybo3.sh     
  74.   
  75.   
  76. b、配置辅助实例参数文件     
  77. --由于auxiliary DB与target DB不存在文件位置转换,因此无需作任何修改,直接将其ftp到Auxiliary server  
  78. --如果没有pfile文件,可从target db生成。 create pfile from spfile;  
  79. [oracle@linux3 ~]$ scp $ORACLE_HOME/dbs/initsybo3.ora 192.168.7.26:$ORACLE_HOME/dbs     
  80.   
  81.   
  82. c、生成辅助实例密码文件        
  83. --如果使用orapwd命令建立密码文件应保证与target DB密码相同  
  84. --或者直接使用Target DB的密码文件  
  85. [oracle@linux3 ~]$ scp $ORACLE_HOME/dbs/orapwsybo3 192.168.7.26:$ORACLE_HOME/dbs  
  86.   
  87.   
  88. d、在Auxiliary Server与Target Server配置监听(方式多样,不详述)  
  89. --Auxiliary Server  
  90. [oracle@linux4 admin]$ more listener.ora  
  91. SID_LIST_LISTENER_SYBO3 =  
  92.   (SID_LIST =  
  93.     (SID_DESC =  
  94.       (GLOBAL_DBNAME = sybo3.orasrv.com)  
  95.       (ORACLE_HOME = /u01/oracle/db_1)  
  96.       (SID_NAME = sybo3)  
  97.     )  
  98.   )  
  99.   
  100. LISTENER_SYBO3 =  
  101.   (DESCRIPTION =  
  102.     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.26)(PORT = 1531))  
  103.   )  
  104.   
  105. ADR_BASE_LISTENER_SYBO3 = /u01/oracle  
  106. [oracle@linux4 admin]$ more tnsnames.ora   
  107. TAR =  
  108.   (DESCRIPTION =  
  109.     (ADDRESS_LIST =  
  110.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.25)(PORT = 1531))  
  111.     )  
  112.     (CONNECT_DATA =  
  113.       (SERVICE_NAME = SYBO3.ORASRV.COM)  
  114.     )  
  115.   )  
  116.   
  117. AUX =  
  118.   (DESCRIPTION =  
  119.     (ADDRESS_LIST =  
  120.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.26)(PORT = 1531))  
  121.     )  
  122.     (CONNECT_DATA =  
  123.       (SERVICE_NAME = SYBO3.ORASRV.COM)  
  124.     )  
  125.   )  
  126.   
  127. --Target Server  
  128. [oracle@linux3 ~]$ more /u01/oracle/db_1/network/admin/listener.ora   
  129. # listener.ora Network Configuration File: /u01/oracle/db_1/network/admin/listener.ora  
  130. # Generated by Oracle configuration tools.  
  131.   
  132. SID_LIST_LISTENER_SYBO3 =  
  133.   (SID_LIST =  
  134.     (SID_DESC =  
  135.       (GLOBAL_DBNAME = sybo3.orasrv.com)  
  136.       (ORACLE_HOME = /u01/oracle/db_1)  
  137.       (SID_NAME = sybo3)  
  138.     )  
  139.   )  
  140.   
  141. LISTENER_SYBO3 =  
  142.   (DESCRIPTION =  
  143.     (ADDRESS = (PROTOCOL = TCP)(HOST = linux3.orasrv.com)(PORT = 1531))  
  144.   )  
  145.   
  146. ADR_BASE_LISTENER_SYBO3 = /u01/oracle  
  147.   
  148. [oracle@linux3 ~]$ more /u01/oracle/db_1/network/admin/tnsnames.ora   
  149. # tnsnames.ora Network Configuration File: /u01/oracle/db_1/network/admin/tnsnames.ora  
  150. # Generated by Oracle configuration tools.  
  151. # 注,在Target Server与Auxiliary Server的tnames.ora文件中,使用了相同的entry,即同时存在TAR与AUX  
  152. TAR =  
  153.   (DESCRIPTION =  
  154.     (ADDRESS_LIST =  
  155.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.25)(PORT = 1531))  
  156.     )  
  157.     (CONNECT_DATA =  
  158.       (SERVICE_NAME = SYBO3.ORASRV.COM)  
  159.     )  
  160.   )  
  161.   
  162. AUX =  
  163.   (DESCRIPTION =  
  164.     (ADDRESS_LIST =  
  165.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.26)(PORT = 1531))  
  166.     )  
  167.     (CONNECT_DATA =  
  168.       (SERVICE_NAME = SYBO3.ORASRV.COM)  
  169.     )  
  170.   )  
  171.   
  172. --使用下面的命令确保能够Ping通  
  173. [oracle@linux3 admin]$ tnsping TAR    
  174. [oracle@linux3 admin]$ tnsping AUX      
  175. [oracle@linux4 admin]$ tnsping TAR    
  176. [oracle@linux4 admin]$ tnsping AUX  
  177.   
  178.   
  179. e、实施数据库克隆  
  180. [oracle@linux4 ~]$ export ORACLE_SID=sybo3  
  181. [oracle@linux4 ~]$ sqlplus / as sysdba  
  182. SQL> startup nomount;  
  183. SQL> exit  
  184. [oracle@linux4 ~]$ rman target sys/oracle@TAR auxiliary sys/oracle@AUX  
  185.   
  186. Recovery Manager: Release 11.2.0.1.0 - Production on Fri Aug 2 11:44:09 2013  
  187.   
  188. Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.  
  189.   
  190. connected to target database: SYBO3 (DBID=2347733014)  
  191. connected to auxiliary database: SYBO3 (not mounted)  
  192.   
  193. RMAN> duplicate database to sybo3 from active database spfile nofilenamecheck; --->发布duplicate命令  
  194.   
  195. Starting Duplicate Db at 02-AUG-13  
  196. using target database control file instead of recovery catalog  
  197. allocated channel: ORA_AUX_DISK_1  
  198. channel ORA_AUX_DISK_1: SID=134 device type=DISK  
  199.   
  200. contents of Memory Script:  
  201. {  
  202.    backup as copy reuse                                 --->该命令块备份服务器参数文件并修改spfile参数  
  203.    targetfile  ‘/u01/oracle/db_1/dbs/spfilesybo3.ora‘ auxiliary format   
  204.  ‘/u01/oracle/db_1/dbs/spfilesybo3.ora‘   ;  
  205.    sql clone "alter system set spfile= ‘‘/u01/oracle/db_1/dbs/spfilesybo3.ora‘‘";  
  206. }  
  207. executing Memory Script  
  208.   
  209. Starting backup at 02-AUG-13  
  210. allocated channel: ORA_DISK_1  
  211. channel ORA_DISK_1: SID=145 device type=DISK  
  212. Finished backup at 02-AUG-13  
  213.   
  214. sql statement: alter system set spfile= ‘‘/u01/oracle/db_1/dbs/spfilesybo3.ora‘‘  
  215.   
  216. contents of Memory Script:  
  217. {  
  218.    sql clone "alter system set  db_name =    --->该命令块主要是修改db_name,重启auxliary DB   
  219.  ‘‘SYBO3‘‘ comment=  
  220.  ‘‘duplicate‘‘ scope=spfile";  
  221.    shutdown clone immediate;  
  222.    startup clone nomount;  
  223. }  
  224. executing Memory Script  
  225.   
  226. sql statement: alter system set  db_name =  ‘‘SYBO3‘‘ comment= ‘‘duplicate‘‘ scope=spfile  
  227.   
  228. Oracle instance shut down  
  229.   
  230. connected to auxiliary database (not started)  
  231. Oracle instance started  
  232.   
  233. Total System Global Area     376635392 bytes  
  234.   
  235. Fixed Size                     1336652 bytes  
  236. Variable Size                285215412 bytes  
  237. Database Buffers              83886080 bytes  
  238. Redo Buffers                   6197248 bytes  
  239.   
  240. contents of Memory Script:  
  241. {  
  242.    sql clone "alter system set  db_name =   
  243.  ‘‘SYBO3‘‘ comment=  
  244.  ‘‘Modified by RMAN duplicate‘‘ scope=spfile";  
  245.    sql clone "alter system set  db_unique_name =   
  246.  ‘‘SYBO3‘‘ comment=  
  247.  ‘‘Modified by RMAN duplicate‘‘ scope=spfile";  
  248.    shutdown clone immediate;  
  249.    startup clone force nomount           --->该命令块备份控制文件并恢复控制文件到Auxiliary DB  
  250.    backup as copy current controlfile auxiliary format  ‘/u01/database/sybo3/controlf/control01.ctl‘;  
  251.    restore clone controlfile to  ‘/u01/database/sybo3/controlf/control02.ctl‘ from   
  252.  ‘/u01/database/sybo3/controlf/control01.ctl‘;  
  253.    alter clone database mount;  
  254. }  
  255. executing Memory Script  
  256.   
  257. sql statement: alter system set  db_name =  ‘‘SYBO3‘‘ comment= ‘‘Modified by RMAN duplicate‘‘ scope=spfile  
  258.   
  259. sql statement: alter system set  db_unique_name =  ‘‘SYBO3‘‘ comment= ‘‘Modified by RMAN duplicate‘‘ scope=spfile  
  260.   
  261. Oracle instance shut down  
  262.   
  263. Oracle instance started  
  264.   
  265. Total System Global Area     376635392 bytes  
  266.   
  267. Fixed Size                     1336652 bytes  
  268. Variable Size                285215412 bytes  
  269. Database Buffers              83886080 bytes  
  270. Redo Buffers                   6197248 bytes  
  271.   
  272. Starting backup at 02-AUG-13  
  273. using channel ORA_DISK_1  
  274. channel ORA_DISK_1: starting datafile copy     
  275. copying current control file  
  276. output file name=/u01/oracle/db_1/dbs/snapcf_sybo3.f tag=TAG20130802T114449 RECID=5 STAMP=822397490  
  277. channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01  
  278. Finished backup at 02-AUG-13  
  279.   
  280. Starting restore at 02-AUG-13  
  281. allocated channel: ORA_AUX_DISK_1  
  282. channel ORA_AUX_DISK_1: SID=133 device type=DISK  
  283.   
  284. channel ORA_AUX_DISK_1: copied control file copy  
  285. Finished restore at 02-AUG-13  
  286.   
  287. database mounted  
  288. RMAN-05538: WARNING: implicitly using DB_FILE_NAME_CONVERT    --->这个地方提示隐式使用DB_FILE_NAME_CONVERT参数  
  289.   
  290. contents of Memory Script:  
  291. {                                      --->该命令块用于set newname以及热备数据文件,使用copy方式  
  292.    set newname for datafile  1 to   
  293.  "/u01/database/sybo3/oradata/system01.dbf";  
  294.    set newname for datafile  2 to   
  295.  "/u01/database/sybo3/oradata/sysaux01.dbf";  
  296.    set newname for datafile  3 to   
  297.  "/u01/database/sybo3/oradata/undotbs01.dbf";  
  298.    set newname for datafile  4 to   
  299.  "/u01/database/sybo3/oradata/users01.dbf";  
  300.    set newname for datafile  5 to   
  301.  "/u01/database/sybo3/oradata/example01.dbf";  
  302.    backup as copy reuse  
  303.    datafile  1 auxiliary format   
  304.  "/u01/database/sybo3/oradata/system01.dbf"   datafile   
  305.  2 auxiliary format   
  306.  "/u01/database/sybo3/oradata/sysaux01.dbf"   datafile   
  307.  3 auxiliary format   
  308.  "/u01/database/sybo3/oradata/undotbs01.dbf"   datafile   
  309.  4 auxiliary format   
  310.  "/u01/database/sybo3/oradata/users01.dbf"   datafile   
  311.  5 auxiliary format   
  312.  "/u01/database/sybo3/oradata/example01.dbf"   ;  
  313.    sql ‘alter system archive log current‘;  
  314. }  
  315. executing Memory Script  
  316.   
  317. executing command: SET NEWNAME  
  318.   
  319. executing command: SET NEWNAME  
  320.   
  321. executing command: SET NEWNAME  
  322.   
  323. executing command: SET NEWNAME  
  324.   
  325. executing command: SET NEWNAME  
  326.   
  327. Starting backup at 02-AUG-13  
  328. using channel ORA_DISK_1  
  329. channel ORA_DISK_1: starting datafile copy  
  330. input datafile file number=00001 name=/u01/database/sybo3/oradata/system01.dbf  
  331. output file name=/u01/database/sybo3/oradata/system01.dbf tag=TAG20130802T114457  
  332. channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:45  
  333. channel ORA_DISK_1: starting datafile copy  
  334. input datafile file number=00002 name=/u01/database/sybo3/oradata/sysaux01.dbf  
  335. output file name=/u01/database/sybo3/oradata/sysaux01.dbf tag=TAG20130802T114457  
  336. channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:35  
  337. channel ORA_DISK_1: starting datafile copy  
  338. input datafile file number=00005 name=/u01/database/sybo3/oradata/example01.dbf  
  339. output file name=/u01/database/sybo3/oradata/example01.dbf tag=TAG20130802T114457  
  340. channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07  
  341. channel ORA_DISK_1: starting datafile copy  
  342. input datafile file number=00003 name=/u01/database/sybo3/oradata/undotbs01.dbf  
  343. output file name=/u01/database/sybo3/oradata/undotbs01.dbf tag=TAG20130802T114457  
  344. channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07  
  345. channel ORA_DISK_1: starting datafile copy  
  346. input datafile file number=00004 name=/u01/database/sybo3/oradata/users01.dbf  
  347. output file name=/u01/database/sybo3/oradata/users01.dbf tag=TAG20130802T114457  
  348. channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01  
  349. Finished backup at 02-AUG-13  
  350.   
  351. sql statement: alter system archive log current  
  352.   
  353. contents of Memory Script:  
  354. {  
  355.    backup as copy reuse           --->该命令块备份归档日志  
  356.    archivelog like  "/u01/database/sybo3/fra/SYBO3/archivelog/2013_08_02/o1_mf_1_43_8zpbwsry_.arc" auxiliary format   
  357.  "/u01/database/sybo3/fra/SYBO3/archivelog/2013_08_02/o1_mf_1_43_%u_.arc"   ;  
  358.    catalog clone recovery area;   --->而且克隆整个recovery area  
  359.    switch clone datafile all;  
  360. }  
  361. executing Memory Script  
  362.   
  363. Starting backup at 02-AUG-13  
  364. using channel ORA_DISK_1  
  365. channel ORA_DISK_1: starting archived log copy  
  366. input archived log thread=1 sequence=43 RECID=48 STAMP=822397594  
  367. output file name=/u01/database/sybo3/fra/SYBO3/archivelog/2013_08_02/o1_mf_1_43_1aog9ikr_.arc RECID=0 STAMP=0  
  368. channel ORA_DISK_1: archived log copy complete, elapsed time: 00:00:01  
  369. Finished backup at 02-AUG-13  
  370.   
  371. searching for all files in the recovery area  
  372.   
  373. List of Files Unknown to the Database  
  374. =====================================  
  375. File Name: /u01/database/sybo3/fra/SYBO3/archivelog/2013_08_02/o1_mf_1_43_1aog9ikr_.arc  
  376. cataloging files...  
  377. cataloging done  
  378.   
  379. List of Cataloged Files   --->这个地方列出了已经传送到Auxiliary Server的数据文件,以及归档日志  
  380. =======================  
  381. File Name: /u01/database/sybo3/fra/SYBO3/archivelog/2013_08_02/o1_mf_1_43_1aog9ikr_.arc  
  382.   
  383. datafile 1 switched to datafile copy  
  384. input datafile copy RECID=5 STAMP=822397596 file name=/u01/database/sybo3/oradata/system01.dbf  
  385. datafile 2 switched to datafile copy  
  386. input datafile copy RECID=6 STAMP=822397596 file name=/u01/database/sybo3/oradata/sysaux01.dbf  
  387. datafile 3 switched to datafile copy  
  388. input datafile copy RECID=7 STAMP=822397596 file name=/u01/database/sybo3/oradata/undotbs01.dbf  
  389. datafile 4 switched to datafile copy  
  390. input datafile copy RECID=8 STAMP=822397596 file name=/u01/database/sybo3/oradata/users01.dbf  
  391. datafile 5 switched to datafile copy  
  392. input datafile copy RECID=9 STAMP=822397596 file name=/u01/database/sybo3/oradata/example01.dbf  
  393.   
  394. contents of Memory Script:  
  395. {  
  396.    set until scn  1234019;  
  397.    recover                  --->这个命令块开始recover  
  398.    clone database  
  399.     delete archivelog  
  400.    ;  
  401. }  
  402. executing Memory Script  
  403.   
  404. executing command: SET until clause  
  405.   
  406. Starting recover at 02-AUG-13  
  407. using channel ORA_AUX_DISK_1  
  408.   
  409. starting media recovery  
  410.   
  411. archived log for thread 1 with sequence 43 is already on disk as file /u01/database/sybo3/fra/SYBO3/archivelog/  
  412.     2013_08_02/o1_mf_1_43_1aog9ikr_.arc  
  413. archived log file name=/u01/database/sybo3/fra/SYBO3/archivelog/2013_08_02/o1_mf_1_43_1aog9ikr_.arc thread=1 sequence=43  
  414. media recovery complete, elapsed time: 00:00:00  
  415. Finished recover at 02-AUG-13  
  416.   
  417. contents of Memory Script:  
  418. {  
  419.    shutdown clone immediate;  
  420.    startup clone nomount;                    --->该命令块修改参数以及重建控制文件  
  421.    sql clone "alter system set  db_name =   
  422.  ‘‘SYBO3‘‘ comment=  
  423.  ‘‘Reset to original value by RMAN‘‘ scope=spfile";  
  424.    sql clone "alter system reset  db_unique_name scope=spfile";  
  425.    shutdown clone immediate;  
  426.    startup clone nomount;  
  427. }  
  428. executing Memory Script  
  429.   
  430. database dismounted  
  431. Oracle instance shut down  
  432.   
  433. connected to auxiliary database (not started)  
  434. Oracle instance started  
  435.   
  436. Total System Global Area     376635392 bytes  
  437.   
  438. Fixed Size                     1336652 bytes  
  439. Variable Size                285215412 bytes  
  440. Database Buffers              83886080 bytes  
  441. Redo Buffers                   6197248 bytes  
  442.   
  443. sql statement: alter system set  db_name =  ‘‘SYBO3‘‘ comment= ‘‘Reset to original value by RMAN‘‘ scope=spfile  
  444.   
  445. sql statement: alter system reset  db_unique_name scope=spfile  
  446.   
  447. Oracle instance shut down  
  448.   
  449. connected to auxiliary database (not started)  
  450. Oracle instance started  
  451.   
  452. Total System Global Area     376635392 bytes  
  453.   
  454. Fixed Size                     1336652 bytes  
  455. Variable Size                285215412 bytes  
  456. Database Buffers              83886080 bytes  
  457. Redo Buffers                   6197248 bytes  
  458. sql statement: CREATE CONTROLFILE REUSE SET DATABASE "SYBO3" RESETLOGS ARCHIVELOG   
  459.   MAXLOGFILES     16  
  460.   MAXLOGMEMBERS      3  
  461.   MAXDATAFILES      100  
  462.   MAXINSTANCES     8  
  463.   MAXLOGHISTORY      292  
  464.  LOGFILE  
  465.   GROUP  1  SIZE 50 M ,  
  466.   GROUP  2  SIZE 50 M ,  
  467.   GROUP  3  SIZE 50 M   
  468.  DATAFILE  
  469.   ‘/u01/database/sybo3/oradata/system01.dbf‘  
  470.  CHARACTER SET AL32UTF8  
  471.   
  472.   
  473. contents of Memory Script:  
  474. {  
  475.    set newname for tempfile  1 to              --->将数据文件,临时文件更新到控制文件  
  476.  "/u01/database/sybo3/oradata/temp01.dbf";  
  477.    switch clone tempfile all;  
  478.    catalog clone datafilecopy  "/u01/database/sybo3/oradata/sysaux01.dbf",   
  479.  "/u01/database/sybo3/oradata/undotbs01.dbf",   
  480.  "/u01/database/sybo3/oradata/users01.dbf",   
  481.  "/u01/database/sybo3/oradata/example01.dbf";  
  482.    switch clone datafile all;  
  483. }  
  484. executing Memory Script  
  485.   
  486. executing command: SET NEWNAME  
  487.   
  488. renamed tempfile 1 to /u01/database/sybo3/oradata/temp01.dbf in control file  
  489.   
  490. cataloged datafile copy  
  491. datafile copy file name=/u01/database/sybo3/oradata/sysaux01.dbf RECID=1 STAMP=822397612  
  492. cataloged datafile copy  
  493. datafile copy file name=/u01/database/sybo3/oradata/undotbs01.dbf RECID=2 STAMP=822397612  
  494. cataloged datafile copy  
  495. datafile copy file name=/u01/database/sybo3/oradata/users01.dbf RECID=3 STAMP=822397612  
  496. cataloged datafile copy  
  497. datafile copy file name=/u01/database/sybo3/oradata/example01.dbf RECID=4 STAMP=822397612  
  498.   
  499. datafile 2 switched to datafile copy  
  500. input datafile copy RECID=1 STAMP=822397612 file name=/u01/database/sybo3/oradata/sysaux01.dbf  
  501. datafile 3 switched to datafile copy  
  502. input datafile copy RECID=2 STAMP=822397612 file name=/u01/database/sybo3/oradata/undotbs01.dbf  
  503. datafile 4 switched to datafile copy  
  504. input datafile copy RECID=3 STAMP=822397612 file name=/u01/database/sybo3/oradata/users01.dbf  
  505. datafile 5 switched to datafile copy  
  506. input datafile copy RECID=4 STAMP=822397612 file name=/u01/database/sybo3/oradata/example01.dbf  
  507.   
  508. contents of Memory Script:  
  509. {  
  510.    Alter clone database open resetlogs;   --->open 数据库  
  511. }  
  512. executing Memory Script  
  513.   
  514. database opened  
  515. Finished Duplicate Db at 02-AUG-13  
  516.   
  517.   
  518. f、验证结果  
  519. [oracle@linux4 ~]$ sqlplus / as sysdba  
  520.   
  521. SQL> select * from t;  
  522.   
  523. NAME       ACTION  
  524. ---------- --------------------  
  525. Robinson   Transfer DB  
  526. Jackson    Transfer DB by rman  
  527.   
  528. SQL> set linesize 190  
  529. SQL> select host_name,instance_name from v$instance;  
  530.   
  531. HOST_NAME                            INSTANCE_NAME  
  532. ------------------------------------ ----------------  
  533. linux4.orasrv.com                    sybo3  

5、后记
a、无论使用何种方式进行数据库克隆,都是使用了基于时间点的不完全恢复,都需要使用open resetlog方式打开数据库。
b、从活动数据库进行克隆时,需要保证Target DB处于归档模式。
c、从活动数据库进行克隆应当保证Target Server与Auxiliary Server 的tnsnames文件中都存在到Target DB与Auxiliary DB的连接字符串。
d、可以在Target Server与Auxiliary Server任意一端发布duplicate database to newdb from active database进行克隆。
e、从活动数据库克隆应保证Traget DB与Auxiliary DB具有相同的密码(位于密码文件)或者直接从Target Server复制密码文件到Auxiliary Server。

转:http://blog.csdn.net/leshami/article/details/9718153

基于RMAN从活动数据库异机克隆(rman duplicate from active DB)