基於 RMAN 的同機資料庫克隆

us_yunleiwang發表於2013-12-05

Oracle資料庫克隆,也叫著Oracle資料庫複製,可以透過基於使用者管理的方式來完成,也可以基於RMAN方式來實現。而且Oracle建議使用RMAN方式來實現,因為它簡單易用,隱藏其複雜的邏輯,僅僅是執行一條duplicate命令就可以喝茶了。當然,前期的準備工作也是不可少滴,如建立相應的dump目錄,準備引數檔案,配置監聽等等。本文描述了Oracle 11g下如何使用RMAN實現同機克隆資料庫。

 

1、RMAN克隆的幾種型別
    a、利用RMAN備份克隆並訪問目標資料庫(也就是原資料庫),也就是複製期間由Oracle net與目標資料庫保持連線
    b、利用RMAN備份克隆不訪問目標資料庫,比如網路不通阿,目標資料庫不可用等等,總之是人為或故障使得與目標庫失去連線
    c、直接使用活動資料庫(active)進行克隆,實時備份加克隆,夠牛滴!

 

2、RMAN克隆做了什麼?
    RMAN克隆根據需要連線或不連線到目標資料庫後,需要連線一個輔助例項。這個輔助例項也就是我們複製後的例項。
    我們知道任何一個資料庫至少有一個例項與之對應,如果是RAC環境則可以多個例項對應一個資料庫。
    因此,我們在克隆資料庫之前先建一個nomount狀態的輔助例項用於分配記憶體等等一系列的後臺程式啦。
    有了例項就好辦啦,RMAN為這個輔助例項生成控制檔案,基於這個例項上還原資料庫,恢復資料庫等等不拉不拉的N多操作。
    那這個N多操作靠誰呢,那就是釋出命令: duplicate target databaseto aux_db
    那RMAN如何連線到輔助例項呢? 與連線target或catalog方式類似,connect auxiliary 
name/pwd@tnsstring
    通常情況下,對於磁碟備份還原操作,RMAN會自動建立及分配相應的通道,輔助例項也不例外,當然是自動分配輔助通道
    而在磁帶介質就麻煩一點了,需要手工來指定其通道,並行度等等。
    下面簡要描述一下RMAN克隆不同階段都作了什麼吧,關於克隆資料庫時資料檔案位置轉換請參考: RMAN 資料庫克隆檔案位置轉換方法
         a、RMAN確定備份的屬性,位置等等,也就備份存在性,可用等等了。
         b、RMAN為輔助例項分配通道及輔助通道的引數設定
         c、RMAN還原資料檔案到輔助例項(此時使用了目標資料庫控制檔案)
         d、RMAN構建輔助例項的控制檔案
         e、根據需要還原歸檔日誌並進行相應的介質恢復
         f、重置輔助例項的dbid,並使用open resetlog方式開啟資料庫,此時會建立相應的聯機重做日誌檔案

 

3、RMAN克隆大致步驟
    a、備份目標資料庫(根據需要克隆型別而定,異機的話ftp一下,此步也可以置於步驟e之後,f之前)
    b、建立相應的dump資料夾
    c、配置輔助例項引數檔案
    d、生成輔助例項密碼檔案
    e、配置輔助例項監聽
    f、實施資料庫克隆(輔助例項啟動到nomount狀態後)
    h、驗證結果

 

4、RMAN同機克隆親密接觸

  1. --環境:  
  2. --目標資料庫: sybo3      /u01/database/sybo3  
  3. --輔助資料庫: sybo5      /u01/database/sybo5  
  4. --說明:  
  5. --對於下面描述過程中,如建立引數檔案,密碼檔案,監聽等等有不甚瞭解的,可參考下面連結中有關文章的描述。其次本次演示使用了備份檔案並連線到target db  
  6. --http://blog.csdn.net/robinson_0612/article/category/827734  (體系結構相關)  
  7. --http://blog.csdn.net/robinson_0612/article/category/828434  (網路配置相關)   
  8.   
  9. [oracle@linux3 database]$ cat /etc/issue  
  10. Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)  
  11. Kernel \r on an \m  
  12.   
  13. SQL> select * from v$version where rownum<2;  
  14.   
  15. BANNER  
  16. --------------------------------------------------------------------------------  
  17. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production  
  18.   
  19.   
  20. a、備份目標資料庫  
  21. --生成後續驗證克隆成功的測試資料  
  22. SQL> insert into t select 'Jackson','Transfer DB by rman' from dual;  
  23.   
  24. SQL> commit;  
  25.   
  26. SQL> select * from t;  
  27.   
  28. NAME       ACTION  
  29. ---------- --------------------  
  30. Robinson   Transfer DB  
  31. Jackson    Transfer DB by rman  
  32.   
  33. SQL> alter system archive log current;  
  34.   
  35. [oracle@linux3 ~]$ rman target /  
  36.   
  37. Recovery Manager: Release 11.2.0.1.0 - Production on Thu Jul 25 08:39:42 2013  
  38.   
  39. Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.  
  40.   
  41. connected to target database: SYBO3 (DBID=2347733014)  
  42.   
  43. RMAN> backup database include current controlfile plus archivelog delete input;  
  44.   
  45. piece handle=/u01/database/sybo3/flash_recovery_area/SYBO3/backupset/2013_07_25/o1_mf_annnn_TAG20130725T083957_8z0wyy9n_.bkp   
  46. tag=TAG20130725T083957 comment=NONE  
  47. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01  
  48.   
  49. piece handle=/u01/database/sybo3/flash_recovery_area/SYBO3/backupset/2013_07_25/o1_mf_nnndf_TAG20130725T083959_8z0wz06c_.bkp   
  50. tag=TAG20130725T083959 comment=NONE  
  51. channel ORA_DISK_1: backup set complete, elapsed time: 00:01:30  
  52. Finished backup at 2013/07/25 08:41:29  
  53.   
  54. Starting Control File and SPFILE Autobackup at 2013/07/25 08:41:31  
  55. piece handle=/u01/database/sybo3/flash_recovery_area/SYBO3/autobackup/2013_07_25/o1_mf_s_821695291_8z0x1vsf_.bkp comment=NONE  
  56. Finished Control File and SPFILE Autobackup at 2013/07/25 08:41:34  
  57.   
  58.   
  59. b、建立相應的dump資料夾  
  60. [oracle@linux3 database]$ more sybo5.sh  
  61. #!/bin/sh  
  62. mkdir -p /u01/database  
  63. mkdir -p /u01/database/sybo5/adump  
  64. mkdir -p /u01/database/sybo5/controlf  
  65. mkdir -p /u01/database/sybo5/flash_recovery_area  
  66. mkdir -p /u01/database/sybo5/oradata  
  67. mkdir -p /u01/database/sybo5/redo  
  68. mkdir -p /u01/database/sybo5/dpdump  
  69. mkdir -p /u01/database/sybo5/pfile  
  70. [oracle@linux3 database]$ ./sybo5.sh   
  71.   
  72.   
  73. c、配置輔助例項引數檔案  
  74. --在sqlplus下生成輔助例項的引數檔案  
  75. SQL> create pfile='/u01/oracle/db_1/dbs/initsybo5.ora' from spfile;    
  76.     
  77. --修改輔助例項引數檔案     
  78. $ sed -i 's/sybo3/sybo5/g' $ORACLE_HOME/dbs/initsybo5.ora    
  79. $ grep sybo3 $ORACLE_HOME/dbs/initsybo5.ora    --&gt校驗是否還存在sybo3相關字元     
  80.   
  81. --下面是修改後最終的結果  
  82. [oracle@linux3 database]$ more $ORACLE_HOME/dbs/initsybo5.ora  
  83. sybo5.__db_cache_size=113246208  
  84. sybo5.__java_pool_size=4194304  
  85. sybo5.__large_pool_size=4194304  
  86. sybo5.__oracle_base='/u01/oracle'#ORACLE_BASE set from environment  
  87. sybo5.__pga_aggregate_target=142606336  
  88. sybo5.__sga_target=234881024  
  89. sybo5.__shared_io_pool_size=0  
  90. sybo5.__shared_pool_size=104857600  
  91. sybo5.__streams_pool_size=0  
  92. *.audit_file_dest='/u01/database/sybo5/adump/'  
  93. *.audit_trail='db'  
  94. *.compatible='11.2.0.0.0'  
  95. *.control_files='/u01/database/sybo5/controlf/control01.ctl','/u01/database/sybo5/controlf/control02.ctl'  
  96. *.db_block_size=8192  
  97. *.db_domain='orasrv.com'  
  98. *.db_name='sybo5'  
  99. *.db_recovery_file_dest='/u01/database/sybo5/flash_recovery_area/'  
  100. *.db_recovery_file_dest_size=4039114752  
  101. *.dg_broker_config_file1='/u01/database/sybo5/db_broker/dr1sybo5.dat'  
  102. *.dg_broker_config_file2='/u01/database/sybo5/db_broker/dr2sybo5.dat'  
  103. *.dg_broker_start=FALSE  
  104. *.diagnostic_dest='/u01/database/sybo5'  
  105. *.log_archive_dest_1=''          #此處未指定archive位置,使用預設的閃回區  
  106. *.memory_target=374341632  
  107. *.open_cursors=300  
  108. *.processes=150  
  109. *.remote_login_passwordfile='EXCLUSIVE'  
  110. *.undo_tablespace='UNDOTBS1'  
  111.   
  112.   
  113. d、生成輔助例項密碼檔案  
  114. --直接使用orapwd命令完成  
  115. $ orapwd file=$ORACLE_HOME/dbs/orapwsybo5 password=oracle entries=10   
  116.   
  117.   
  118. e、配置輔助例項監聽  
  119. --配置輔助例項的監聽方式很多,如netca,netmgr,直接命令方式等等,下面直接給出的指令碼  
  120. [oracle@linux3 ~]$ more $ORACLE_HOME/network/admin/listener.ora  
  121. # listener.ora Network Configuration File: /u01/oracle/db_1/network/admin/listener.ora  
  122. # Generated by Oracle configuration tools.  
  123.   
  124. SID_LIST_LISTENER_SYBO5 =  
  125.   (SID_LIST =  
  126.     (SID_DESC =  
  127.       (GLOBAL_DBNAME = sybo5.orasrv.com)  
  128.       (ORACLE_HOME = /u01/oracle/db_1)  
  129.       (SID_NAME = sybo5)  
  130.     )  
  131.   )  
  132.   
  133. SID_LIST_LISTENER_SYBO3 =  
  134.   (SID_LIST =  
  135.     (SID_DESC =  
  136.       (GLOBAL_DBNAME = sybo3.orasrv.com)  
  137.       (ORACLE_HOME = /u01/oracle/db_1)  
  138.       (SID_NAME = sybo3)  
  139.     )  
  140.   )  
  141.   
  142. LISTENER_SYBO5 =  
  143.   (DESCRIPTION =  
  144.     (ADDRESS = (PROTOCOL = TCP)(HOST = linux3.orasrv.com)(PORT = 1532))  
  145.   )  
  146.   
  147. ADR_BASE_LISTENER_SYBO5 = /u01/oracle  
  148.   
  149. LISTENER_SYBO3 =  
  150.   (DESCRIPTION =  
  151.     (ADDRESS = (PROTOCOL = TCP)(HOST = linux3.orasrv.com)(PORT = 1531))  
  152.   )  
  153.   
  154. ADR_BASE_LISTENER_SYBO3 = /u01/oracle  
  155.   
  156. [oracle@linux3 ~]$ more $ORACLE_HOME/network/admin/tnsnames.ora  
  157. # tnsnames.ora Network Configuration File: /u01/oracle/db_1/network/admin/tnsnames.ora  
  158. # Generated by Oracle configuration tools.  
  159.   
  160. SYBO5 =  
  161.   (DESCRIPTION =  
  162.     (ADDRESS_LIST =  
  163.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.25)(PORT = 1532))  
  164.     )  
  165.     (CONNECT_DATA =  
  166.       (SERVICE_NAME = SYBO5.ORASRV.COM)  
  167.     )  
  168.   )  
  169.   
  170. SYBO3 =  
  171.   (DESCRIPTION =  
  172.     (ADDRESS_LIST =  
  173.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.25)(PORT = 1531))  
  174.     )  
  175.     (CONNECT_DATA =  
  176.       (SERVICE_NAME = SYBO3.ORASRV.COM)  
  177.     )  
  178.   )  
  179.   
  180.   
  181. f、實施資料庫克隆    
  182. --下面先啟動輔助例項到nomount狀態  
  183. [oracle@linux3 ~]$ export ORACLE_SID=sybo5  
  184. [oracle@linux3 ~]$ sqlplus / as sysdba  
  185. SQL> startup nomount pfile=/u01/oracle/db_1/dbs/initsybo5.ora;  
  186. ORACLE instance started.  
  187.   
  188. --呼叫RMAN連線到目標資料庫與輔助資料庫  
  189. [oracle@linux3 ~]$ rman target sys/oracle@sybo3 auxiliary sys/oracle@sybo5  
  190.   
  191. Recovery Manager: Release 11.2.0.1.0 - Production on Thu Jul 25 14:32:51 2013  
  192.   
  193. Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.  
  194.   
  195. connected to target database: SYBO3 (DBID=2347733014)  
  196. connected to auxiliary database: SYBO5 (not mounted)  
  197.   
  198. RMAN> run{  
  199. 2> set newname for datafile 1  to '/u01/database/sybo5/oradata/system01.dbf';                          
  200. 3> set newname for datafile 2  to '/u01/database/sybo5/oradata/sysaux01.dbf';                          
  201. 4> set newname for datafile 3  to '/u01/database/sybo5/oradata/undotbs01.dbf';                         
  202. 5> set newname for datafile 4  to '/u01/database/sybo5/oradata/users01.dbf';                           
  203. 6> set newname for datafile 5  to '/u01/database/sybo5/oradata/example01.dbf';                         
  204. 7> set newname for tempfile 1  to '/u01/database/sybo5/oradata/temp01.dbf';   
  205. 8> duplicate target database to sybo5  
  206. 9> logfile  
  207. 10> group 1 ('/u01/database/sybo5/redo/redo01a.log','/u01/database/sybo5/redo/redo01b.log'size 10m,  
  208. 11> group 2 ('/u01/database/sybo5/redo/redo02a.log','/u01/database/sybo5/redo/redo02b.log'size 10m,  
  209. 12> group 3 ('/u01/database/sybo5/redo/redo03a.log','/u01/database/sybo5/redo/redo03b.log'size 10m;  
  210. 13> switch datafile all;  
  211. 14> }  
  212.   
  213. executing command: SET NEWNAME  
  214.   
  215. executing command: SET NEWNAME  
  216.   
  217. executing command: SET NEWNAME  
  218.   
  219. executing command: SET NEWNAME  
  220.   
  221. executing command: SET NEWNAME  
  222.   
  223. executing command: SET NEWNAME  
  224.   
  225. Starting Duplicate Db at 2013/07/25 14:33:14  
  226. using target database control file instead of recovery catalog   ----&gt使用了原資料庫的控制檔案  
  227. allocated channel: ORA_AUX_DISK_1  
  228. channel ORA_AUX_DISK_1: SID=134 device type=DISK  
  229.   
  230. contents of Memory Script:                  -------&gtOracle會自動生成auxiliary db的spfile  
  231. {  
  232.    sql clone "create spfile from memory";  
  233. }  
  234. executing Memory Script  
  235.   
  236. sql statement: create spfile from memory       
  237.   
  238. contents of Memory Script:                   -------&gt下面的SQL使用spfile重啟auxiliary db到nomount狀態  
  239. {  
  240.    shutdown clone immediate;  
  241.    startup clone nomount;  
  242. }  
  243. executing Memory Script                    
  244.   
  245. Oracle instance shut down  
  246.   
  247. connected to auxiliary database (not started)  
  248. Oracle instance started  
  249.   
  250. Total System Global Area     376635392 bytes  
  251.   
  252. Fixed Size                     1336652 bytes  
  253. Variable Size                260049588 bytes  
  254. Database Buffers             109051904 bytes  
  255. Redo Buffers                   6197248 bytes  
  256.   
  257. contents of Memory Script:                  -----&gt下面的這段SQL完成了一系列任務,見後面的分解  
  258. {  
  259.    sql clone "alter system set  db_name =   
  260.  ''SYBO3'' comment=  
  261.  ''Modified by RMAN duplicate'' scope=spfile";  
  262.    sql clone "alter system set  db_unique_name =   
  263.  ''SYBO5'' comment=  
  264.  ''Modified by RMAN duplicate'' scope=spfile";  
  265.    shutdown clone immediate;  
  266.    startup clone force nomount  
  267.    restore clone primary controlfile;  
  268.    alter clone database mount;  
  269. }  
  270. executing Memory Script  
  271.   
  272. sql statement: alter system set  db_name =  ''SYBO3'' comment= ''Modified by RMAN duplicate'' scope=spfile --&gt修改db_name  
  273.   
  274. sql statement: alter system set  db_unique_name = ''SYBO5'' comment= ''Modified by RMAN duplicate'' scope=spfile --&gt修改db_unique_name  
  275.   
  276. Oracle instance shut down  
  277.   
  278. Oracle instance started  
  279.   
  280. Total System Global Area     376635392 bytes  
  281.   
  282. Fixed Size                     1336652 bytes  
  283. Variable Size                260049588 bytes  
  284. Database Buffers             109051904 bytes  
  285. Redo Buffers                   6197248 bytes  
  286.   
  287. Starting restore at 2013/07/25 14:33:29          ---&gt開始restore  
  288. allocated channel: ORA_AUX_DISK_1  
  289. channel ORA_AUX_DISK_1: SID=134 device type=DISK  
  290.   
  291. channel ORA_AUX_DISK_1: starting datafile backup set restore  
  292. channel ORA_AUX_DISK_1: restoring control file     ---&gt首先restore controlfile  
  293. channel ORA_AUX_DISK_1: reading from backup piece /u01/database/sybo3/flash_recovery_area/SYBO3/autobackup/2013_07_25/  
  294.     o1_mf_s_821695291_8z0x1vsf_.bkp  
  295. channel ORA_AUX_DISK_1: piece handle=/u01/database/sybo3/flash_recovery_area/SYBO3/autobackup/2013_07_25/  
  296.     o1_mf_s_821695291_8z0x1vsf_.bkp tag=TAG20130725T084131  
  297. channel ORA_AUX_DISK_1: restored backup piece 1  
  298. channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01   --&gtcontrolfile restore完成  
  299. output file name=/u01/database/sybo5/controlf/control01.ctl        --&gtoutput到的位置   
  300. output file name=/u01/database/sybo5/controlf/control02.ctl        --&gt注意此時的控制檔案中記錄的資訊依舊是sybo3的,即target db      
  301. Finished restore at 2013/07/25 14:33:30  
  302.   
  303. database mounted                                                   --&gt資料庫切換到mount狀態,對應語句alter clone database mount  
  304.   
  305. contents of Memory Script:                                         --&gt這些SQL語句用於設定auxiliary db 資料檔案位置  
  306. {  
  307.    set until scn  886687;                                          --&gtOracle自動設定了相應的scn  
  308.    set newname for datafile  1 to   
  309.  "/u01/database/sybo5/oradata/system01.dbf";  
  310.    set newname for datafile  2 to   
  311.  "/u01/database/sybo5/oradata/sysaux01.dbf";  
  312.    set newname for datafile  3 to   
  313.  "/u01/database/sybo5/oradata/undotbs01.dbf";  
  314.    set newname for datafile  4 to   
  315.  "/u01/database/sybo5/oradata/users01.dbf";  
  316.    set newname for datafile  5 to   
  317.  "/u01/database/sybo5/oradata/example01.dbf";  
  318.    restore                                                         --&gt 釋出restore命令            
  319.    clone database  
  320.    ;  
  321. }  
  322. executing Memory Script  
  323.   
  324. executing command: SET until clause  
  325.   
  326. executing command: SET NEWNAME  
  327.   
  328. executing command: SET NEWNAME  
  329.   
  330. executing command: SET NEWNAME  
  331.   
  332. executing command: SET NEWNAME  
  333.   
  334. executing command: SET NEWNAME  
  335.   
  336. Starting restore at 2013/07/25 14:33:35                            --&gt開始資料檔案的restore  
  337. using channel ORA_AUX_DISK_1                                       --&gt根據控制檔案的資訊讀取備份集並還原到set newname位置  
  338.   
  339. channel ORA_AUX_DISK_1: starting datafile backup set restore  
  340. channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set  
  341. channel ORA_AUX_DISK_1: restoring datafile 00001 to /u01/database/sybo5/oradata/system01.dbf  
  342. channel ORA_AUX_DISK_1: restoring datafile 00002 to /u01/database/sybo5/oradata/sysaux01.dbf  
  343. channel ORA_AUX_DISK_1: restoring datafile 00003 to /u01/database/sybo5/oradata/undotbs01.dbf  
  344. channel ORA_AUX_DISK_1: restoring datafile 00004 to /u01/database/sybo5/oradata/users01.dbf  
  345. channel ORA_AUX_DISK_1: restoring datafile 00005 to /u01/database/sybo5/oradata/example01.dbf  
  346. channel ORA_AUX_DISK_1: reading from backup piece /u01/database/sybo3/flash_recovery_area/SYBO3/backupset/2013_07_25/  
  347.   o1_mf_nnndf_TAG20130725T083959_8z0wz06c_.bkp  
  348. channel ORA_AUX_DISK_1: piece handle=/u01/database/sybo3/flash_recovery_area/SYBO3/backupset/2013_07_25/  
  349.   o1_mf_nnndf_TAG20130725T083959_8z0wz06c_.bkp tag=TAG20130725T083959  
  350. channel ORA_AUX_DISK_1: restored backup piece 1  
  351. channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:15     --&gt完成資料檔案restore  
  352. Finished restore at 2013/07/25 14:34:50  
  353.   
  354. contents of Memory Script:                                           --&gt下面的指令碼將新的資料檔案全部更新到控制檔案  
  355. {  
  356.    switch clone datafile all;  
  357. }  
  358. executing Memory Script  
  359.   
  360. datafile 1 switched to datafile copy  
  361. input datafile copy RECID=7 STAMP=821716490 file name=/u01/database/sybo5/oradata/system01.dbf  
  362. datafile 2 switched to datafile copy  
  363. input datafile copy RECID=8 STAMP=821716491 file name=/u01/database/sybo5/oradata/sysaux01.dbf  
  364. datafile 3 switched to datafile copy  
  365. input datafile copy RECID=9 STAMP=821716491 file name=/u01/database/sybo5/oradata/undotbs01.dbf  
  366. datafile 4 switched to datafile copy  
  367. input datafile copy RECID=10 STAMP=821716491 file name=/u01/database/sybo5/oradata/users01.dbf  
  368. datafile 5 switched to datafile copy  
  369. input datafile copy RECID=11 STAMP=821716491 file name=/u01/database/sybo5/oradata/example01.dbf  
  370.   
  371. contents of Memory Script:                                          --&gt下面的指令碼Oracle自動設定了scn後釋出recover命令  
  372. {  
  373.    set until scn  886687;  
  374.    recover  
  375.    clone database  
  376.     delete archivelog  
  377.    ;  
  378. }  
  379. executing Memory Script  
  380.   
  381. executing command: SET until clause  
  382.   
  383. Starting recover at 2013/07/25 14:34:51    --&gt下面使用archivelog進行recover  
  384. using channel ORA_AUX_DISK_1  
  385.   
  386. starting media recovery  
  387.   
  388. archived log for thread 1 with sequence 16 is already on disk as file /u01/database/sybo3/flash_recovery_area/SYBO3/  
  389.   archivelog/2013_07_25/o1_mf_1_16_8z16rk6o_.arc       --&gt此時運用到了一個sybo3已經存在的歸檔日誌,sequence 為16  
  390. channel ORA_AUX_DISK_1: starting archived log restore to default destination  --&gt接下來還原歸檔日誌到預設位置  
  391. channel ORA_AUX_DISK_1: restoring archived log  
  392. archived log thread=1 sequence=15                      --&gt從備份的歸檔日誌中讀取 sequence為15 的   
  393. channel ORA_AUX_DISK_1: reading from backup piece /u01/database/sybo3/flash_recovery_area/SYBO3/backupset/2013_07_25/  
  394.   o1_mf_annnn_TAG20130725T084129_8z0x1syh_.bkp  
  395. channel ORA_AUX_DISK_1: piece handle=/u01/database/sybo3/flash_recovery_area/SYBO3/backupset/2013_07_25/  
  396.   o1_mf_annnn_TAG20130725T084129_8z0x1syh_.bkp tag=TAG20130725T084129  
  397. channel ORA_AUX_DISK_1: restored backup piece 1  
  398. channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01  
  399. archived log file name=/u01/database/sybo5/flash_recovery_area/SYBO5/archivelog/2013_07_25/o1_mf_1_15_8z1krh5x_.arc thread=1 sequence=15  
  400. channel clone_default: deleting archived log(s)      --&gt刪除歸檔日誌  
  401. archived log file name=/u01/database/sybo5/flash_recovery_area/SYBO5/archivelog/2013_07_25/o1_mf_1_15_8z1krh5x_.arc RECID=12 STAMP=821716495  
  402. archived log file name=/u01/database/sybo3/flash_recovery_area/SYBO3/archivelog/2013_07_25/o1_mf_1_16_8z16rk6o_.arc thread=1 sequence=16  
  403. media recovery complete, elapsed time: 00:00:04      --&gt介質恢復完成  
  404. Finished recover at 2013/07/25 14:35:00  
  405.   
  406. contents of Memory Script:                           --&gt下面的指令碼用於還原恢復之後的後續工作  
  407. {                                                    --&gt包括重新設定db_name,db_unique_name  
  408.    shutdown clone immediate;  
  409.    startup clone nomount;  
  410.    sql clone "alter system set  db_name =   
  411.  ''SYBO5'' comment=  
  412.  ''Reset to original value by RMAN'' scope=spfile";  
  413.    sql clone "alter system reset  db_unique_name scope=spfile";  
  414.    shutdown clone immediate;  
  415.    startup clone nomount;  
  416. }  
  417. executing Memory Script  
  418.   
  419. database dismounted  
  420. Oracle instance shut down  
  421.   
  422. --Author: Robinson  
  423. --Blog  : http://blog.csdn.net/robinson_0612  
  424.   
  425. connected to auxiliary database (not started)  
  426. Oracle instance started  
  427.   
  428. Total System Global Area     376635392 bytes  
  429.   
  430. Fixed Size                     1336652 bytes  
  431. Variable Size                260049588 bytes  
  432. Database Buffers             109051904 bytes  
  433. Redo Buffers                   6197248 bytes  
  434.   
  435. sql statement: alter system set  db_name =  ''SYBO5'' comment= ''Reset to original value by RMAN'' scope=spfile  
  436.   
  437. sql statement: alter system reset  db_unique_name scope=spfile  
  438.   
  439. Oracle instance shut down  
  440.   
  441. connected to auxiliary database (not started)  
  442. Oracle instance started  
  443.   
  444. Total System Global Area     376635392 bytes  
  445.   
  446. Fixed Size                     1336652 bytes  
  447. Variable Size                260049588 bytes  
  448. Database Buffers             109051904 bytes  
  449. Redo Buffers                   6197248 bytes  
  450. sql statement: CREATE CONTROLFILE REUSE SET DATABASE "SYBO5" RESETLOGS ARCHIVELOG   --&gt注意這裡,重新建立控制檔案  
  451.   MAXLOGFILES     16  
  452.   MAXLOGMEMBERS      3  
  453.   MAXDATAFILES      100  
  454.   MAXINSTANCES     8  
  455.   MAXLOGHISTORY      292  
  456.  LOGFILE  
  457.   GROUP  1 ( '/u01/database/sybo5/redo/redo01a.log''/u01/database/sybo5/redo/redo01b.log' ) SIZE 10 M ,  
  458.   GROUP  2 ( '/u01/database/sybo5/redo/redo02a.log''/u01/database/sybo5/redo/redo02b.log' ) SIZE 10 M ,  
  459.   GROUP  3 ( '/u01/database/sybo5/redo/redo03a.log''/u01/database/sybo5/redo/redo03b.log' ) SIZE 10 M   
  460.  DATAFILE  
  461.   '/u01/database/sybo5/oradata/system01.dbf'  
  462.  CHARACTER SET AL32UTF8  
  463.   
  464. contents of Memory Script:                     
  465. {  
  466.    set newname for tempfile  1 to   
  467.  "/u01/database/sybo5/oradata/temp01.dbf";  
  468.    switch clone tempfile all;  
  469.    catalog clone datafilecopy  "/u01/database/sybo5/oradata/sysaux01.dbf",   
  470.  "/u01/database/sybo5/oradata/undotbs01.dbf",   
  471.  "/u01/database/sybo5/oradata/users01.dbf",   
  472.  "/u01/database/sybo5/oradata/example01.dbf";  
  473.    switch clone datafile all;  
  474. }  
  475. executing Memory Script  
  476.   
  477. executing command: SET NEWNAME  
  478.   
  479. renamed tempfile 1 to /u01/database/sybo5/oradata/temp01.dbf in control file  
  480.   
  481. cataloged datafile copy  
  482. datafile copy file name=/u01/database/sybo5/oradata/sysaux01.dbf RECID=1 STAMP=821716521  
  483. cataloged datafile copy  
  484. datafile copy file name=/u01/database/sybo5/oradata/undotbs01.dbf RECID=2 STAMP=821716521  
  485. cataloged datafile copy  
  486. datafile copy file name=/u01/database/sybo5/oradata/users01.dbf RECID=3 STAMP=821716521  
  487. cataloged datafile copy  
  488. datafile copy file name=/u01/database/sybo5/oradata/example01.dbf RECID=4 STAMP=821716521  
  489.   
  490. datafile 2 switched to datafile copy  
  491. input datafile copy RECID=1 STAMP=821716521 file name=/u01/database/sybo5/oradata/sysaux01.dbf  
  492. datafile 3 switched to datafile copy  
  493. input datafile copy RECID=2 STAMP=821716521 file name=/u01/database/sybo5/oradata/undotbs01.dbf  
  494. datafile 4 switched to datafile copy  
  495. input datafile copy RECID=3 STAMP=821716521 file name=/u01/database/sybo5/oradata/users01.dbf  
  496. datafile 5 switched to datafile copy  
  497. input datafile copy RECID=4 STAMP=821716521 file name=/u01/database/sybo5/oradata/example01.dbf  
  498.   
  499. contents of Memory Script:  
  500. {  
  501.    Alter clone database open resetlogs;  
  502. }  
  503. executing Memory Script  
  504.   
  505. database opened  
  506. Finished Duplicate Db at 2013/07/25 14:35:36  
  507.   
  508. --驗證克隆的結果  
  509. [oracle@linux3 dbs]$ export ORACLE_SID=sybo5  
  510. [oracle@linux3 dbs]$ sqlplus / as sysdba  
  511.   
  512. SQL*Plus: Release 11.2.0.1.0 Production on Thu Jul 25 14:38:21 2013  
  513.   
  514. Copyright (c) 1982, 2009, Oracle.  All rights reserved.  
  515.   
  516. Connected to:  
  517. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production  
  518. With the Partitioning, OLAP, Data Mining and Real Application Testing options  
  519.   
  520. SQL> select * from t;  
  521.   
  522. NAME       ACTION  
  523. ---------- --------------------  
  524. Robinson   Transfer DB  
  525. Jackson    Transfer DB by rman  
  526.   
  527. SQL> select name,dbid,open_mode from v$database;   --&gt使用了與之前資料庫不同的dbid  
  528.   
  529. NAME            DBID OPEN_MODE  
  530. --------- ---------- --------------------  
  531. SYBO5     2292457546 READ WRITE  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23490154/viewspace-1062386/,如需轉載,請註明出處,否則將追究法律責任。

相關文章