[Oracle][Maintain]Clone DataBase Without Shutdown
有一段時間都沒再玩Oracle11g新特性
但今年一月底準備出差前往大陸上海分公司進行Oracle教育訓練
還好分公司是我比較熟悉的Oracle10g,剛好藉出差機會順便整理以前相關文件並且實作
以利快速喚醒沉睡已久的Oracle記憶。
Oracle10g複製DataBase有三種方法,rman Duplicate、datapump(邏輯)或Clone(物理)
每種方法只要依需求正確使用就能享受每種技術所帶來的便利
Clone優點
非常快速的複製方法(只需copy來源資料庫.dbf和redo log)
操作方式簡單方便,安全性高。
Clone缺點
無法跨平台複製。
資料庫版本須一致才能複製。
再複製redo log階段如果資料異動頻繁,可能需要重新來過。
實做Clone DataBase Without Shutdown
Source OS:windows2003 R2 32bit
Source DB: 10.2.0.4.0 32bit
Oracle SID=v3demo
Target OS:windows2003 R2 32bit
Target DB: 10.2.0.4.0 32bit
Oracle SID=mydemo
Step1:登入source sqlplus
確認instance status
Step2:備份source controlfile
(檔案備份路徑:$ORACLE_HOME\admin\SID\udump)
這時可以先擷取該檔案內容,方便後面create new controlfile使用
Step3:shutdown target DB
Step4:複製data files與redo files
Source Database在未Shutdown的狀態,複製data files與redo files到target
database 時,必須先 copy data files 完畢才能 copy redo files
複製完畢~~
Step5:startup nomount
Step6:Delete target controlfile and Create controlfile
Target DB->須以系統環境填入正確路徑
CREATE CONTROLFILE SET DATABASE mydemo RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 800
MAXINSTANCES 8
MAXLOGHISTORY 584
LOGFILE
GROUP 1 'Target DB\REDO01.LOG' SIZE 200M,
GROUP 2 'Target DB\REDO02.LOG' SIZE 200M,
GROUP 3 'Target DB\REDO03.LOG' SIZE 200M
-- STANDBY LOGFILE
DATAFILE
'Target DB\SYSTEM01.DBF',
'Target DB\UNDOTBS01.DBF',
'Target DB\SYSAUX01.DBF',
'Target DB\USERS01.DBF',
'Target DB\DATA_ADNT01.DBF',
'Target DB\DATA_AGBC01.DBF',
…………略
Step7:recover database using backup controlfile
畫面會提示輸入能夠用來 recover database 的其中一個redo file的路徑
確認source current redo
select f.group# "GROUP",
f.member,
g.status group_status,
g.sequence#,
g.archived arc
from v$logfile f, v$log g
where f.group# = g.group#;
Step8:alter database open resetlogs
Step9:remount temp tablespace
ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\oradata\mydemo\TEMP01.DBF' REUSE;
Check instance
這樣就完成了Clone資料庫,而這時兩邊資料庫所有的object應該都要一模一樣。