使用RMAN建立Duplicate資料庫
主要操作步驟:
1. 建立auxiliary instance的口令檔案
2. 配置auxiliary instance的監聽和tnsnames.ora
3. 建立auxiliary instance的引數檔案
4. 啟動auxiliary instance到nomount狀態
5. target database open or mount
6. 保證備份檔案和歸檔檔案可用
7. 在RMAN中執行DUPLICATE命令
環境:
Windows xp
Oracle 10.2.0.1
同一臺機器做duplicate
1. 建立auxiliary instance的口令檔案
先建立aux例項:
C:\>oradim -NEW -SID aux
例項已建立。
建立口令檔案:
C:\>orapwd file=D:\oracle\product\10.2.0\db_1\database\PWDaux.ora password=sys
2. 配置auxiliary instance的監聽和tnsnames.ora
listener.ora中增加:
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = aux)
)
tnsnames.ora中增加:
aux =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = aux)
)
)
使用tnsping驗證:
C:\>tnsping aux
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 22-4月 -2009 09:47:35
Copyright (c) 1997, 2005, Oracle. All rights reserved.
已使用的引數檔案:
D:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora
已使用 TNSNAMES 介面卡來解析別名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = aux))) OK (10 毫秒)
3. 建立auxiliary instance的引數檔案
建立引數檔案d:\initaux.ora,內容如下:
compatible='10.2.0.1.0'
db_name='aux'
db_block_size=8192
SHARED_POOL_SIZE=50M
CONTROL_FILES='D:\oracle\product\10.2.0\oradata\auxi\control01.ctl'
DB_FILE_NAME_CONVERT='D:\oracle\product\10.2.0\oradata\orcl','D:\oracle\product\10.2.0\oradata\auxi'
LOG_FILE_NAME_CONVERT='D:\oracle\product\10.2.0\oradata\orcl','D:\oracle\product\10.2.0\oradata\auxi'
還必須建立D:\oracle\product\10.2.0\oradata\auxi目錄
4. 啟動auxiliary instance到nomount狀態
C:\>set oracle_sid=aux
C:\>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 4月 22 09:35:00 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已連線到空閒例程。
SQL> startup nomount pfile=d:\initaux.ora
ORACLE 例程已經啟動。
Total System Global Area 117440512 bytes
Fixed Size 1247588 bytes
Variable Size 58721948 bytes
Database Buffers 50331648 bytes
Redo Buffers 7139328 bytes
SQL> create spfile from pfile='d:\initaux.ora';
檔案已建立。
再用spfile重啟auxiliary instance,並exit
SQL> shutdown immediate
ORA-01507: ??????
ORACLE 例程已經關閉。
SQL> startup nomount
ORACLE 例程已經啟動。
Total System Global Area 138412032 bytes
Fixed Size 1247708 bytes
Variable Size 79693348 bytes
Database Buffers 50331648 bytes
Redo Buffers 7139328 bytes
SQL> exit
從 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 斷開
5. target database open or mount
確認target database狀態為open 或mount
6. 保證備份檔案和歸檔檔案可用
備份target database:
C:\>rman target /
RMAN> backup as compressed backupset database format='d:\full_%U.ora' plus archivelog;
RMAN> exit
由於是在同一臺機器做duplicate,備份檔案和歸檔日誌不用複製。
7. 在RMAN中執行DUPLICATE命令
C:\>rman target / auxiliary sys/sys@aux
恢復管理器: Release 10.2.0.1.0 - Production on 星期三 4月 22 11:40:03 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到目標資料庫: ORCL (DBID=1212147403)
已連線到輔助資料庫: AUX (未裝載)
RMAN> duplicate target database to aux;
啟動 Duplicate Db 於 22-4月 -09
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=36 devtype=DISK
記憶體指令碼的內容:
{
set until scn 771578;
set newname for datafile 1 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\SYSTEM01.DBF";
set newname for datafile 2 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\UNDOTBS01.DBF";
set newname for datafile 3 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\SYSAUX01.DBF";
set newname for datafile 4 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\USERS01.DBF";
set newname for datafile 5 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\EXAMPLE01.DBF";
restore
check readonly
clone database
;
}
正在執行記憶體指令碼
正在執行命令: SET until clause
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
啟動 restore 於 22-4月 -09
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_AUX_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\SYSTEM01.DBF
正將資料檔案00002恢復到D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\UNDOTBS01.DBF
正將資料檔案00003恢復到D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\SYSAUX01.DBF
正將資料檔案00004恢復到D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\USERS01.DBF
正將資料檔案00005恢復到D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\EXAMPLE01.DBF
通道 ORA_AUX_DISK_1: 正在讀取備份段 D:\FULL_0EKD3RRO_1_1.ORA
通道 ORA_AUX_DISK_1: 已恢復備份段 1
段控制程式碼 = D:\FULL_0EKD3RRO_1_1.ORA 標記 = TAG20090422T111608
通道 ORA_AUX_DISK_1: 恢復完成, 用時: 00:00:46
完成 restore 於 22-4月 -09
sql 語句: CREATE CONTROLFILE REUSE SET DATABASE "AUX" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ( 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\REDO01.LOG' ) SIZE 50 M REUSE,
GROUP 2 ( 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\REDO02.LOG' ) SIZE 50 M REUSE,
GROUP 3 ( 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\REDO03.LOG' ) SIZE 50 M REUSE
DATAFILE
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\SYSTEM01.DBF'
CHARACTER SET ZHS16GBK
記憶體指令碼的內容:
{
switch clone datafile all;
}
正在執行記憶體指令碼
釋放的通道: ORA_AUX_DISK_1
資料檔案 2 已轉換成資料檔案副本
輸入資料檔案副本 recid=1 stamp=684848459 檔名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\UNDOTBS01.DBF
資料檔案 3 已轉換成資料檔案副本
輸入資料檔案副本 recid=2 stamp=684848459 檔名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\SYSAUX01.DBF
資料檔案 4 已轉換成資料檔案副本
輸入資料檔案副本 recid=3 stamp=684848459 檔名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\USERS01.DBF
資料檔案 5 已轉換成資料檔案副本
輸入資料檔案副本 recid=4 stamp=684848459 檔名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\EXAMPLE01.DBF
記憶體指令碼的內容:
{
set until scn 771578;
recover
clone database
delete archivelog
;
}
正在執行記憶體指令碼
正在執行命令: SET until clause
啟動 recover 於 22-4月 -09
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=36 devtype=DISK
正在開始介質的恢復
存檔日誌執行緒 1 序列 16 已作為檔案 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2009_04_22\O1_MF_1_16_4YX3191Y_.ARC 存在於磁碟上
存檔日誌執行緒 1 序列 17 已作為檔案 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2009_04_22\O1_MF_1_17_4YX34WH4_.ARC 存在於磁碟上
存檔日誌檔名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2009_04_22\O1_MF_1_16_4YX3191Y_.ARC 執行緒 =1 序列 =16
存檔日誌檔名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2009_04_22\O1_MF_1_17_4YX34WH4_.ARC 執行緒 =1 序列 =17
介質恢復完成, 用時: 00:00:02
完成 recover 於 22-4月 -09
記憶體指令碼的內容:
{
shutdown clone;
startup clone nomount ;
}
正在執行記憶體指令碼
資料庫已解除安裝
Oracle 例項已關閉
已連線到輔助資料庫 (未啟動)
Oracle 例項已啟動
系統全域性區域總計 138412032 位元組
Fixed Size 1247708 位元組
Variable Size 79693348 位元組
Database Buffers 50331648 位元組
Redo Buffers 7139328 位元組
sql 語句: CREATE CONTROLFILE REUSE SET DATABASE "AUX" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ( 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\REDO01.LOG' ) SIZE 50 M REUSE,
GROUP 2 ( 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\REDO02.LOG' ) SIZE 50 M REUSE,
GROUP 3 ( 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\REDO03.LOG' ) SIZE 50 M REUSE
DATAFILE
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\SYSTEM01.DBF'
CHARACTER SET ZHS16GBK
記憶體指令碼的內容:
{
set newname for tempfile 1 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\TEMP01.DBF";
switch clone tempfile all;
catalog clone datafilecopy "D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\UNDOTBS01.DBF";
catalog clone datafilecopy "D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\SYSAUX01.DBF";
catalog clone datafilecopy "D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\USERS01.DBF";
catalog clone datafilecopy "D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\EXAMPLE01.DBF";
switch clone datafile all;
}
正在執行記憶體指令碼
正在執行命令: SET NEWNAME
臨時檔案 1 在控制檔案中已重新命名為 D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\TEMP01.DBF
已將資料檔案副本列入目錄
資料檔案副本 filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\UNDOTBS01.DBF recid=1 stamp=684848472
已將資料檔案副本列入目錄
資料檔案副本 filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\SYSAUX01.DBF recid=2 stamp=684848473
已將資料檔案副本列入目錄
資料檔案副本 filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\USERS01.DBF recid=3 stamp=684848473
已將資料檔案副本列入目錄
資料檔案副本 filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\EXAMPLE01.DBF recid=4 stamp=684848473
資料檔案 2 已轉換成資料檔案副本
輸入資料檔案副本 recid=1 stamp=684848472 檔名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\UNDOTBS01.DBF
資料檔案 3 已轉換成資料檔案副本
輸入資料檔案副本 recid=2 stamp=684848473 檔名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\SYSAUX01.DBF
資料檔案 4 已轉換成資料檔案副本
輸入資料檔案副本 recid=3 stamp=684848473 檔名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\USERS01.DBF
資料檔案 5 已轉換成資料檔案副本
輸入資料檔案副本 recid=4 stamp=684848473 檔名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\EXAMPLE01.DBF
記憶體指令碼的內容:
{
Alter clone database open resetlogs;
}
正在執行記憶體指令碼
資料庫已開啟
完成 Duplicate Db 於 22-4月 -09
這個過程中可能會出現如下報錯:
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: Duplicate Db 命令 (在 04/22/2009 10:41:16 上) 失敗
RMAN-03015: 在儲存的指令碼Memory Script中出現錯誤
RMAN-06026: 有些目標沒有找到 - 終止恢復
RMAN-06023: 沒有找到資料檔案5的副本來恢復
RMAN-06023: 沒有找到資料檔案4的副本來恢復
RMAN-06023: 沒有找到資料檔案3的副本來恢復
RMAN-06023: 沒有找到資料檔案2的副本來恢復
RMAN-06023: 沒有找到資料檔案1的副本來恢復
錯誤指出的是無法找到相關備份檔案,可通過
RMAN> restore validate database;
檢查備份的有效性,如不是備份問題,則說明需要通過切換一個歸檔解決
RMAN> sql 'alter system switch logfile';
此錯誤在metalink中的描述如下:
Doc ID: Note:108883.1
Subject: RMAN-06023 when Duplicating a Database
Solution Description
--------------------
You must issue a log switch and backup the archivelogs as well. This error is indicating that all pieces required to perform. the duplication are not present.When you issue a backup script. which backs up all of the archivelogs (after a log switch), the duplicate database script. completes successfully.
Explanation
-----------
You must also back up the archivelogs in order to perform. a duplicate from a hot backup.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17997/viewspace-591401/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【轉】RMAN建立duplicate資料庫資料庫
- RMAN duplicate 建立standby RAC資料庫資料庫
- 使用RMAN duplicate 建立standby資料庫(RAC或單機)資料庫
- 【RMAN】使用RMAN duplicate複製同機資料庫資料庫
- 【RMAN】使用duplicate本地複製資料庫資料庫
- 使用rman的命令duplicate複製資料庫資料庫
- RMAN DUPLICATE建立DataGuard物理備庫
- 使用rman建立standby資料庫資料庫
- 使用 RMAN DUPLICATE...FROM ACTIVE DATABASE 建立物理備用資料庫的分步指南Database資料庫
- 使用RMAN Duplicate方法搭建異名資料庫實驗資料庫
- 使用RMAN高階應用之Duplicate複製資料庫資料庫
- 使用RMAN建立物理Standby資料庫資料庫
- 【RMAN】使用RMAN duplicate複製同機資料庫遇到的問題資料庫
- 用RMAN執行DUPLICATE資料庫操作——RMAN使用者手冊資料庫
- duplicate rman複製資料庫技術資料庫
- 【DATAGUARD 學習】使用duplicate 建立物理standby 資料庫資料庫
- Oracle 11gR2 使用RMAN Duplicate複製資料庫Oracle資料庫
- Oracle11gR2使用RMAN duplicate複製資料庫Oracle資料庫
- 使用RMAN建立STANDBY資料庫——RMAN使用者手冊資料庫
- ORACLE DUPLICATE建立物理standby資料庫Oracle資料庫
- RMAN duplicate from active database 複製資料庫Database資料庫
- Rman duplicate資料庫複製(單系統)資料庫
- 使用RMAN建立資料庫備份庫(筆記)資料庫筆記
- 使用duplicate克隆資料庫資料庫
- 通過RMAN Duplicate建立Oracle物理standby備庫Oracle
- 使用RMAN進行快速Dataguard資料庫建立資料庫
- 使用RMAN DUPLICATE...FROM ACTIVE DATABASE命令來建立DataGuard物理備庫Database
- 利用RMAN建立STANDBY資料庫資料庫
- 一次使用duplicate建立測試資料庫的過程資料庫
- Oracle 11gR2 使用 RMAN duplicate from active database 複製資料庫OracleDatabase資料庫
- 利用RMAN建立備用資料庫資料庫
- RMAN實戰系列之一:用duplicate複製資料庫資料庫
- RMAN高階應用之Duplicate複製資料庫(1)概述資料庫
- RMAN學習筆記_ Duplicate建立DataGuard筆記
- 使用 RMAN 同步資料庫資料庫
- RMAN備份 建立catalog資料庫資料庫
- 基於RMAN 建立測試資料庫資料庫
- 11g RMAN新特性active database duplicate 資料庫異構Database資料庫