RMAN高階應用之Duplicate複製資料庫(4)實戰
使用rman的duplicate命令複製資料庫系列,本系列可以視為一步一步學RMAN的姊妹篇~~~~
RMAN高階應用之Duplicate複製資料庫(2)輔助例項
RMAN高階應用之Duplicate複製資料庫(3)複製流程
經過前面的準備工作,大展拳腳的時刻終於來臨了。在正在建立複製之前,我們先來描述一下需求,一個明確的、清晰的、可實現的需求更加有助於我們操作的實施,所以語言描述能力也是一項非常高超的技巧,下面大家看我舉例,一個清晰的需求描述:NOCATALOG模式本地完整複製目標庫JSSWEB到副本資料庫JSSDUP。
看看,都學著點吧,什麼叫言簡意賅,言簡意賅就是NOCATALOG模式本地完整複製目標庫JSSWEB到副本資料庫JSSDUP。
我們假設例項已建立(輔助例項的建立過程見第2章)。
1、連線並啟動目標資料庫(至少要啟動到mount狀態);
F:oracle>set oracle_sid=jssweb
F:oracle>sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 10月 22 16:13:04 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已連線到空閒例程。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 113246208 bytes
Fixed Size 1247564 bytes
Variable Size 83887796 bytes
Database Buffers 20971520 bytes
Redo Buffers 7139328 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL>
2、連線並啟動輔助例項到nomount狀態;
F:oracle>set oracle_sid=jssdup
F:oracle>sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 10月 22 16:11:28 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已連線到空閒例程。
SQL> startup nomount
ORACLE 例程已經啟動。
Total System Global Area 285212672 bytes
Fixed Size 1248552 bytes
Variable Size 226493144 bytes
Database Buffers 50331648 bytes
Redo Buffers 7139328 bytes
SQL>
3、RMAN連線到目標資料庫和輔助例項。
F:oracle>set oracle_sid=jssweb
###目標資料庫使用作業系統認證,所以首先設定SID
F:oracle>rman target / auxiliary sys/verysafe:)@jssdup
恢復管理器: Release 10.2.0.1.0 - Production on 星期五 10月 19 15:03:10 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到目標資料庫: JSSWEB (DBID=3402005373)
已連線到輔助資料庫: JSSDUP (未裝載)
RMAN>
4、首先確認目標庫存在可用備份。
RMAN> list backup;
使用目標資料庫控制檔案替代恢復目錄
備份集列表
===================
BS 關鍵字 型別 LV 大小 裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
3 Full 443.16M DISK 00:00:51 19-10月-07
BP 關鍵字: 3 狀態: AVAILABLE 已壓縮: NO 標記: TAG20071022T161927
段名:D:BACKUP6IV54CF_1_1
備份集 3 中的資料檔案列表
檔案 LV 型別 Ckp SCN Ckp 時間 名稱
---- -- ---- ---------- ---------- ----
1 Full 1326175 19-10月-07 F:ORACLEORADATAJSSWEBSYSTEM01.DBF
2 Full 1326175 19-10月-07 F:ORACLEORADATAJSSWEBUNDOTBS01.DBF
3 Full 1326175 19-10月-07 F:ORACLEORADATAJSSWEBSYSAUX01.DBF
4 Full 1326175 19-10月-07 F:ORACLEORADATAJSSWEBJSSWEB.DBF
5 Full 1326175 19-10月-07 F:ORACLEORADATAJSSWEBUSERS01.DBF
BS 關鍵字 型別 LV 大小 裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
4 Full 6.80M DISK 00:00:01 19-10月-07
BP 關鍵字: 4 狀態: AVAILABLE 已壓縮: NO 標記: TAG20071022T162023
段名:D:BACKUPC-3402005373-20071022-00
包括的控制檔案: Ckp SCN: 1326175 Ckp 時間: 19-10月-07
包含的 SPFILE: 修改時間: 24-9月 -07
RMAN>
5、萬事俱備,只欠Duplicate執行;
RMAN> duplicate target database to jssdup; ####只需要執行這一行
啟動 Duplicate Db 於 22-10月-07
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=39 devtype=DISK
記憶體指令碼的內容:
{
set newname for datafile 1 to
"F:ORACLEORADATAJSSDUPSYSTEM01.DBF";
set newname for datafile 2 to
"F:ORACLEORADATAJSSDUPUNDOTBS01.DBF";
set newname for datafile 3 to
"F:ORACLEORADATAJSSDUPSYSAUX01.DBF";
set newname for datafile 4 to
"F:ORACLEORADATAJSSDUPJSSWEB.DBF";
set newname for datafile 5 to
"F:ORACLEORADATAJSSDUPUSERS01.DBF";
restore
check readonly
clone database
;
}
正在執行記憶體指令碼
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
啟動 restore 於 22-10月-07
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_AUX_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到F:ORACLEORADATAJSSDUPSYSTEM01.DBF
正將資料檔案00002恢復到F:ORACLEORADATAJSSDUPUNDOTBS01.DBF
正將資料檔案00003恢復到F:ORACLEORADATAJSSDUPSYSAUX01.DBF
正將資料檔案00004恢復到F:ORACLEORADATAJSSDUPJSSWEB.DBF
正將資料檔案00005恢復到F:ORACLEORADATAJSSDUPUSERS01.DBF
通道 ORA_AUX_DISK_1: 正在讀取備份段 D:BACKUP6IV54CF_1_1
通道 ORA_AUX_DISK_1: 已恢復備份段 1
段控制程式碼 = D:BACKUP6IV54CF_1_1 標記 = TAG20071022T161927
通道 ORA_AUX_DISK_1: 恢復完成, 用時: 00:01:06
完成 restore 於 22-10月-07
sql 語句: CREATE CONTROLFILE REUSE SET DATABASE "JSSDUP" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ( 'F:ORACLEORADATAJSSDUPREDO01.LOG' ) SIZE 20 M REUSE,
GROUP 2 ( 'F:ORACLEORADATAJSSDUPREDO02.LOG' ) SIZE 20 M REUSE,
GROUP 3 ( 'F:ORACLEORADATAJSSDUPREDO03.LOG' ) SIZE 20 M REUSE
DATAFILE
'F:ORACLEORADATAJSSDUPSYSTEM01.DBF'
CHARACTER SET ZHS16GBK
記憶體指令碼的內容:
{
switch clone datafile all;
}
正在執行記憶體指令碼
釋放的通道: ORA_AUX_DISK_1
資料檔案 2 已轉換成資料檔案副本
輸入資料檔案副本 recid=1 stamp=636654235 檔名=F:ORACLEORADATAJSSDUPUNDOTBS01.DBF
資料檔案 3 已轉換成資料檔案副本
輸入資料檔案副本 recid=2 stamp=636654235 檔名=F:ORACLEORADATAJSSDUPSYSAUX01.DBF
資料檔案 4 已轉換成資料檔案副本
輸入資料檔案副本 recid=3 stamp=636654235 檔名=F:ORACLEORADATAJSSDUPJSSWEB.DBF
資料檔案 5 已轉換成資料檔案副本
輸入資料檔案副本 recid=4 stamp=636654235 檔名=F:ORACLEORADATAJSSDUPUSERS01.DBF
記憶體指令碼的內容:
{
recover
clone database
noredo
,
delete archivelog
;
}
正在執行記憶體指令碼
啟動 recover 於 22-10月-07
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=39 devtype=DISK
完成 recover 於 22-10月-07
記憶體指令碼的內容:
{
shutdown clone;
startup clone nomount ;
}
正在執行記憶體指令碼
資料庫已解除安裝
Oracle 例項已關閉
已連線到輔助資料庫 (未啟動)
Oracle 例項已啟動
系統全域性區域總計 285212672 位元組
Fixed Size 1248552 位元組
Variable Size 226493144 位元組
Database Buffers 50331648 位元組
Redo Buffers 7139328 位元組
sql 語句: CREATE CONTROLFILE REUSE SET DATABASE "JSSDUP" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ( 'F:ORACLEORADATAJSSDUPREDO01.LOG' ) SIZE 20 M REUSE,
GROUP 2 ( 'F:ORACLEORADATAJSSDUPREDO02.LOG' ) SIZE 20 M REUSE,
GROUP 3 ( 'F:ORACLEORADATAJSSDUPREDO03.LOG' ) SIZE 20 M REUSE
DATAFILE
'F:ORACLEORADATAJSSDUPSYSTEM01.DBF'
CHARACTER SET ZHS16GBK
記憶體指令碼的內容:
{
set newname for tempfile 1 to
"F:ORACLEORADATAJSSDUPTEMP01.DBF";
switch clone tempfile all;
catalog clone datafilecopy "F:ORACLEORADATAJSSDUPUNDOTBS01.DBF";
catalog clone datafilecopy "F:ORACLEORADATAJSSDUPSYSAUX01.DBF";
catalog clone datafilecopy "F:ORACLEORADATAJSSDUPJSSWEB.DBF";
catalog clone datafilecopy "F:ORACLEORADATAJSSDUPUSERS01.DBF";
switch clone datafile all;
}
正在執行記憶體指令碼
正在執行命令: SET NEWNAME
臨時檔案 1 在控制檔案中已重新命名為 F:ORACLEORADATAJSSDUPTEMP01.DBF
已將資料檔案副本列入目錄
資料檔案副本 filename=F:ORACLEORADATAJSSDUPUNDOTBS01.DBF recid=1 stamp=636654246
已將資料檔案副本列入目錄
資料檔案副本 filename=F:ORACLEORADATAJSSDUPSYSAUX01.DBF recid=2 stamp=636654246
已將資料檔案副本列入目錄
資料檔案副本 filename=F:ORACLEORADATAJSSDUPJSSWEB.DBF recid=3 stamp=636654246
已將資料檔案副本列入目錄
資料檔案副本 filename=F:ORACLEORADATAJSSDUPUSERS01.DBF recid=4 stamp=636654247
資料檔案 2 已轉換成資料檔案副本
輸入資料檔案副本 recid=1 stamp=636654246 檔名=F:ORACLEORADATAJSSDUPUNDOTBS01.DBF
資料檔案 3 已轉換成資料檔案副本
輸入資料檔案副本 recid=2 stamp=636654246 檔名=F:ORACLEORADATAJSSDUPSYSAUX01.DBF
資料檔案 4 已轉換成資料檔案副本
輸入資料檔案副本 recid=3 stamp=636654246 檔名=F:ORACLEORADATAJSSDUPJSSWEB.DBF
資料檔案 5 已轉換成資料檔案副本
輸入資料檔案副本 recid=4 stamp=636654247 檔名=F:ORACLEORADATAJSSDUPUSERS01.DBF
記憶體指令碼的內容:
{
Alter clone database open resetlogs;
}
正在執行記憶體指令碼
資料庫已開啟
完成 Duplicate Db 於 22-10月-07
RMAN>
6、連線副本資料庫看看
RMAN> host;
Microsoft Windows [版本 5.2.3790]
(C) 版權所有 1985-2003 Microsoft Corp.
F:oracle>sqlplus jss/jss
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 10月 22 16:35:07 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select *from tab where tname like 'JSS%' and rownum<9;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
JSSTMP_HC_ORC_BJ TABLE
JSSTMP_HC_ORD_PRODUCT_PACKAGE TABLE
JSSTMP_HC_ORD_PROD_PACK_ITEM TABLE
JSSTMP_HC_PRODUCT_BJ TABLE
JSSTMP_HC_PROJ_PROD_CLASS_BJ TABLE
SQL>
OK,資料都在。建立成功:)
整體來看,這是個非常簡單的示例,簡單是簡單在我們操作的步驟上,事實上duplicate就是一個具有強大功能的簡單命令,就像是一堆積木,通過各種各樣的靈活組合來實現各種各樣的需求,比如你可以在執行duplicate命令時通過指定UNTIL TIME 來限定恢復資料所在時間。又比如你可以通過指定PFILE引數從客戶端初始化引數檔案啟動輔助例項,取代在建立輔助例項裡建立spfile的操作。又或者通過Set Newname指定某個資料檔案的儲存位置等等。其它諸如異地恢復啦,複製到asm啦之類都是以duplicate命令和輔助例項為主,幾個相關命令和子句為輔的綜合應用,複製就是這麼簡單。
另外此章節中重點看看第5步,雖然我們只執行了duplicate一條命令,但你如果細細分析其執行日誌的話能夠得到的決不僅僅只是這些。比如執行日誌第3行就看出是自動分配的通道,日誌第5行開始則是將db_file_name_convert等引數轉換為SET NEWNAME 命令,再接著往下看,發現有restore、clone database之類命令,看過“一步一步學RMAN”的朋友肯定還記的在該系列最後二章節中我們曾經實踐過RMAN恢復備份到異機的操作。與本例對比的話操作方式有不少雷同,你完全可以把duplicate也看成是恢復操作,當然二者操作也有差異,比如duplicate命令更加簡單,而且duplicate建立的副本資料庫擁有獨立的DBID,而RMAN手工恢復到異機建立的是與源庫相同的DBID(當然duplicate也可以建立DBID與源庫相同,比如standby資料庫,這部分內容也許會出現在下下下下個系列中進行演示)。
命令執行完不代表操作就完了,多看看執行日誌,分析分析執行原理,綜合融會才能夠讓你的認識有更高提升。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-22302/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用RMAN高階應用之Duplicate複製資料庫資料庫
- RMAN高階應用之Duplicate複製資料庫(3)複製流程資料庫
- RMAN高階應用之Duplicate複製資料庫(1)概述資料庫
- RMAN高階應用之Duplicate複製資料庫(5)補充資料庫
- RMAN高階應用之Duplicate複製資料庫(2)輔助例項資料庫
- RMAN實戰系列之一:用duplicate複製資料庫資料庫
- 實戰10g新特性之rman duplicate複製資料庫資料庫
- 【RMAN】使用duplicate本地複製資料庫資料庫
- duplicate rman複製資料庫技術資料庫
- 【RMAN】使用RMAN duplicate複製同機資料庫資料庫
- RMAN duplicate from active database 複製資料庫Database資料庫
- Rman duplicate資料庫複製(單系統)資料庫
- 使用rman的命令duplicate複製資料庫資料庫
- MongoDB高階應用之高可用方案實戰(4)MongoDB
- 【RMAN】使用RMAN duplicate複製同機資料庫遇到的問題資料庫
- Oracle 11gR2 使用RMAN Duplicate複製資料庫Oracle資料庫
- Oracle11gR2使用RMAN duplicate複製資料庫Oracle資料庫
- DG rman duplicate 複製庫錯誤
- Duplicate 複製資料庫實驗過程資料庫
- Oracle 之 Duplicate 複製資料庫Oracle資料庫
- DUPLICATE遠端複製資料庫資料庫
- duplicate複製資料庫(rac-rac)資料庫
- RMAN複製資料庫(十)資料庫
- RMAN複製資料庫(九)資料庫
- RMAN複製資料庫(八)資料庫
- RMAN複製資料庫(七)資料庫
- RMAN複製資料庫(六)資料庫
- RMAN複製資料庫(五)資料庫
- RMAN複製資料庫(四)資料庫
- RMAN複製資料庫(三)資料庫
- RMAN複製資料庫(二)資料庫
- RMAN複製資料庫(一)資料庫
- 使用RMAN複製資料庫資料庫
- oracle rman複製資料庫Oracle資料庫
- Oracle 11gR2 使用 RMAN duplicate from active database 複製資料庫OracleDatabase資料庫
- Oracle備份與恢復系列(四)續 RMAN Duplicate複製資料庫Oracle資料庫
- 續上_在同一節點上利用rman duplicate複製資料庫資料庫
- 資料庫移植後高階複製出錯資料庫