使用RMAN進行資料庫複製

atlantisholic發表於2011-04-14
一.準備環境
1.建立存放資料檔案和dump檔案的資料夾。
2.執行資料庫的全庫備份,需要包含歸檔日誌檔案。
3.複製主庫的pfile修改成需要克隆庫的pfile。
4.使用oradim建立克隆庫的服務。
5.將克隆庫啟動到nomount狀態。
6.執行復制命令。
C:\>set oracle_sid=xhtest3
C:\>mk d:\xhtest3
'mk' 不是內部或外部命令,也不是可執行的程式
或批處理檔案。
C:\>mkdir d:\xhtest3
C:\>mkdir d:\xhtest3\cdump          建立instance
C:\>mkdir d:\xhtest3\bdump
C:\>mkdir d:\xhtest3\archive
C:\>mkdir d:\xhtest3\udump
C:\>
 
*.background_dump_dest='d:\xhtest3'
*.compatible='10.1.0.2.0'
*.control_files='d:\xhtest3\control01.ctl'
*.core_dump_dest='d:\xhtest3\cdump'
*.db_block_size=8192
*.db_cache_size=25165824
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='xhtest3'
*.db_recovery_file_dest_size=2147483648
*.db_recovery_file_dest='d:\xhtest3'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=xhtestXDB)'
*.java_pool_size=50331648
*.job_queue_processes=10
*.large_pool_size=8388608
*.log_archive_dest_1='location=D:\xhtest3\archive'
*.open_cursors=300
*.pga_aggregate_target=25165824
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=200000000
*.sort_area_size=65536
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'                     
*.user_dump_dest='d:\xhtest3\udump'
*.instance_name='xhtest3'
*.service_names='xhtest3'                  配置instance引數

注意這次沒有db_file_name_convert ,
log_file_name_convert  看看rman能不能轉自動轉存到duplicate database 上
C:\>set oracle_sid=xhtest3
C:\>sqlplus "/ as sysdba"
SQL*Plus: Release 10.1.0.2.0 - Production on 星期五 7月 18 15:04:45 2008
Copyright (c) 1982, 2004, Oracle.  All rights reserved.
已連線到空閒例程。
SQL> startup nomount
ORACLE 例程已經啟動。
                                                                  啟動複製instance 到 nomount
Total System Global Area  289406976 bytes
Fixed Size                   788552 bytes
Variable Size             263190456 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes
SQL>

C:\>set oracle_sid=xhtest3
C:\>rman target /@xhtest auxiliary /
恢復管理器: 版本10.1.0.2.0 - Production
Copyright (c) 1995, 2004, Oracle.  All rights reserved.
連線到目標資料庫: XHTEST (DBID=1744081245)
已連線到備用資料庫: xhtest3 (未裝載)
RMAN>
RMAN> duplicate target database to xhtest3;
啟動 Duplicate Db 於 18-7月 -08
正在使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=159 devtype=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 07/18/2008 15:13:07
RMAN-05501: aborting duplication of target database
RMAN-05001: auxiliary filename D:\自建表空間資料檔案\TESTTB.DBF conflicts with a
 file used by the target database
RMAN-05001: auxiliary filename F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\EXAMPLE01              失敗,備粉集不知道轉儲到哪,只能手動set,體力活兒
.DBF conflicts with a file used by the target database
RMAN-05001: auxiliary filename F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\USERS01.D
BF conflicts with a file used by the target database
RMAN-05001: auxiliary filename F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSAUX01.
DBF conflicts with a file used by the target database
RMAN-05001: auxiliary filename F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\UNDOTBS01
.DBF conflicts with a file used by the target database
RMAN-05001: auxiliary filename F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSTEM01.
DBF conflicts with a file used by the target database
RMAN-05001: auxiliary filename F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\REDO03.LO
G conflicts with a file used by the target database
RMAN-05001: auxiliary filename F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\REDO02.LO
G conflicts with a file used by the target database
RMAN-05001: auxiliary filename F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\REDO01.LO
G conflicts with a file used by the target database
RMAN>
SQL> select file_id,file_name from dba_data_files;
   FILE_ID FILE_NAME
---------- ----------
         4 F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\USERS01.DBF
         3 F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSAUX01.DBF
         2 F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\UNDOTBS01.DBF
         1 F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSTEM01.DBF
         5 F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\EXAMPLE01.DBF

RMAN> run{
set newname for datafile 1 to 'd:\xhtest3\SYSTEM01.Dbf';
set newname for datafile 2 to 'd:\xhtest3\UNDOTBS01.dbf';
set newname for datafile 3 to 'd:\xhtest3\SYSAUX01.dbf';
set newname for datafile 4 to 'd:\xhtest3\USERS01.dbf' ;
set newname for datafile 5 to 'd:\xhtest3\EXAMPLE01.dbf';
set newname for datafile 6 to 'd:\xhtest3\testtb.dbf';
duplicate target database to xhtest3 logfile 'd:\xhtest3\redo01.log' size 10m,'d:\xhtest3\redo02.log' size 10m,'d:\xhtest3\redo04.log'                 體力啊體力,裡面名字位置可以隨便寫~~但system表空間不可改名
size 10m;}
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
啟動 Duplicate Db 於 18-7月 -08
使用通道 ORA_AUX_DISK_1
記憶體指令碼的內容:
{
   set until scn  613166;
   set newname for datafile  1 to
 "D:\XHTEST3\SYSTEM01.DBF";
   set newname for datafile  2 to
 "D:\XHTEST3\UNDOTBS01.DBF";
   set newname for datafile  3 to
 "D:\XHTEST3\SYSAUX01.DBF";
   set newname for datafile  4 to
 "D:\XHTEST3\USERS01.DBF";
   set newname for datafile  5 to
 "D:\XHTEST3\EXAMPLE01.DBF";
   set newname for datafile  6 to
 "D:\XHTEST3\TESTTB.DBF";
   restore
   check readonly
   clone database
   ;
}
正在執行記憶體指令碼
正在執行命令: SET until clause
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
啟動 restore 於 18-7月 -08
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_AUX_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到D:\XHTEST3\SYSTEM01.DBF
正將資料檔案00002恢復到D:\XHTEST3\UNDOTBS01.DBF
正將資料檔案00003恢復到D:\XHTEST3\SYSAUX01.DBF
正將資料檔案00004恢復到D:\XHTEST3\USERS01.DBF
正將資料檔案00005恢復到D:\XHTEST3\EXAMPLE01.DBF
正將資料檔案00006恢復到D:\XHTEST3\TESTTB.DBF
通道 ORA_AUX_DISK_1: 已恢復備份段 1
段控制程式碼 = F:\ORACLE\PRODUCT\10.1.0\FLASH_RECOVERY_AREA\XHTEST\BACKUPSET\2008_07_1
8\O1_MF_NNNDF_TAG20080718T110719_480279HN_.BKP 標記 = TAG20080718T110719
通道 ORA_AUX_DISK_1: 恢復完成
完成 restore 於 18-7月 -08
sql 語句: CREATE CONTROLFILE REUSE SET DATABASE "xhtest3" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES      100
  MAXINSTANCES     8
  MAXLOGHISTORY      454
 LOGFILE
  GROUP  1 'd:\xhtest3\redo01.log' SIZE 10 M ,
  GROUP  2 'd:\xhtest3\redo02.log' SIZE 10 M ,
  GROUP  3 'd:\xhtest3\redo04.log' SIZE 10 M
 DATAFILE
  'D:\XHTEST3\SYSTEM01.DBF'
 CHARACTER SET ZHS16GBK

記憶體指令碼的內容:
{
   switch clone datafile all;
}
正在執行記憶體指令碼
資料檔案 2 已轉換成資料檔案副本
輸入資料檔案副本 recid=1 stamp=660411379 檔名=D:\XHTEST3\UNDOTBS01.DBF
資料檔案 3 已轉換成資料檔案副本
輸入資料檔案副本 recid=2 stamp=660411379 檔名=D:\XHTEST3\SYSAUX01.DBF
資料檔案 4 已轉換成資料檔案副本
輸入資料檔案副本 recid=3 stamp=660411379 檔名=D:\XHTEST3\USERS01.DBF
資料檔案 5 已轉換成資料檔案副本
輸入資料檔案副本 recid=4 stamp=660411379 檔名=D:\XHTEST3\EXAMPLE01.DBF
資料檔案 6 已轉換成資料檔案副本
輸入資料檔案副本 recid=5 stamp=660411380 檔名=D:\XHTEST3\TESTTB.DBF
記憶體指令碼的內容:
{
   set until scn  613166;
   recover
   clone database
    delete archivelog
   ;
}
正在執行記憶體指令碼
正在執行命令: SET until clause
啟動 recover 於 18-7月 -08
使用通道 ORA_AUX_DISK_1
正在開始介質的恢復
存檔日誌執行緒 1 序列 50 已作為檔案 F:\歸檔備份\ARC00050_0660131038.001 存在於磁碟

存檔日誌執行緒 1 序列 51 已作為檔案 F:\歸檔備份\ARC00051_0660131038.001 存在於磁碟

存檔日誌執行緒 1 序列 52 已作為檔案 F:\歸檔備份\ARC00052_0660131038.001 存在於磁碟

存檔日誌執行緒 1 序列 53 已作為檔案 F:\歸檔備份\ARC00053_0660131038.001 存在於磁碟

存檔日誌執行緒 1 序列 54 已作為檔案 F:\歸檔備份\ARC00054_0660131038.001 存在於磁碟

存檔日誌執行緒 1 序列 55 已作為檔案 F:\歸檔備份\ARC00055_0660131038.001 存在於磁碟

存檔日誌檔名 =F:\歸檔備份\ARC00050_0660131038.001 執行緒 =1 序列 =50
存檔日誌檔名 =F:\歸檔備份\ARC00051_0660131038.001 執行緒 =1 序列 =51
存檔日誌檔名 =F:\歸檔備份\ARC00052_0660131038.001 執行緒 =1 序列 =52
存檔日誌檔名 =F:\歸檔備份\ARC00053_0660131038.001 執行緒 =1 序列 =53
存檔日誌檔名 =F:\歸檔備份\ARC00054_0660131038.001 執行緒 =1 序列 =54
存檔日誌檔名 =F:\歸檔備份\ARC00055_0660131038.001 執行緒 =1 序列 =55
完成介質的恢復
完成 recover 於 18-7月 -08
記憶體指令碼的內容:
{
   shutdown clone;
   startup clone nomount ;
}
正在執行記憶體指令碼
資料庫已解除安裝
Oracle 例程已關閉
已連線到備用資料庫 (未啟動)
Oracle 例程已啟動
系統全域性區域總計     289406976 位元組
Fixed Size                      788552 位元組
Variable Size                263190456 位元組
Database Buffers              25165824 位元組
Redo Buffers                    262144 位元組
sql 語句: CREATE CONTROLFILE REUSE SET DATABASE "xhtest3" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES      100
  MAXINSTANCES     8
  MAXLOGHISTORY      454
 LOGFILE
  GROUP  1 'd:\xhtest3\redo01.log' SIZE 10 M ,
  GROUP  2 'd:\xhtest3\redo02.log' SIZE 10 M ,
  GROUP  3 'd:\xhtest3\redo04.log' SIZE 10 M
 DATAFILE
  'D:\XHTEST3\SYSTEM01.DBF'
 CHARACTER SET ZHS16GBK

記憶體指令碼的內容:
{
   catalog clone datafilecopy  "D:\XHTEST3\UNDOTBS01.DBF";
   catalog clone datafilecopy  "D:\XHTEST3\SYSAUX01.DBF";
   catalog clone datafilecopy  "D:\XHTEST3\USERS01.DBF";
   catalog clone datafilecopy  "D:\XHTEST3\EXAMPLE01.DBF";
   catalog clone datafilecopy  "D:\XHTEST3\TESTTB.DBF";
   switch clone datafile all;
}
正在執行記憶體指令碼
已將資料檔案副本列入目錄
資料檔案副本 filename=D:\XHTEST3\UNDOTBS01.DBF recid=1 stamp=660411823
已將資料檔案副本列入目錄
資料檔案副本 filename=D:\XHTEST3\SYSAUX01.DBF recid=2 stamp=660411823
已將資料檔案副本列入目錄
資料檔案副本 filename=D:\XHTEST3\USERS01.DBF recid=3 stamp=660411824
已將資料檔案副本列入目錄
資料檔案副本 filename=D:\XHTEST3\EXAMPLE01.DBF recid=4 stamp=660411824
已將資料檔案副本列入目錄
資料檔案副本 filename=D:\XHTEST3\TESTTB.DBF recid=5 stamp=660411824
資料檔案 2 已轉換成資料檔案副本
輸入資料檔案副本 recid=1 stamp=660411823 檔名=D:\XHTEST3\UNDOTBS01.DBF
資料檔案 3 已轉換成資料檔案副本
輸入資料檔案副本 recid=2 stamp=660411823 檔名=D:\XHTEST3\SYSAUX01.DBF
資料檔案 4 已轉換成資料檔案副本
輸入資料檔案副本 recid=3 stamp=660411824 檔名=D:\XHTEST3\USERS01.DBF
資料檔案 5 已轉換成資料檔案副本
輸入資料檔案副本 recid=4 stamp=660411824 檔名=D:\XHTEST3\EXAMPLE01.DBF
資料檔案 6 已轉換成資料檔案副本
輸入資料檔案副本 recid=5 stamp=660411824 檔名=D:\XHTEST3\TESTTB.DBF
記憶體指令碼的內容:
{
   Alter clone database open resetlogs;
}
正在執行記憶體指令碼
資料庫已開啟
完成 Duplicate Db 於 18-7月 -08

    
OK以上完成全部 dulplicate 時候 可以指定 nofilecheck,skip read only ,skip tablespace name ,until 到一個時間點也可以  ,重點是要有rman備份 備份集合中還得加archivelog

 

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

相關文章