[Oracle][Maintain]Clone DataBase Without Shutdown

[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

clip_image002

clip_image002[5]

確認instance status

clip_image002[7]

Step2:備份source controlfile

clip_image002[9]

(檔案備份路徑:$ORACLE_HOME\admin\SID\udump)

這時可以先擷取該檔案內容,方便後面create new controlfile使用

Step3:shutdown target DB

clip_image002[11]

Step4:複製data files與redo files

Source Database在未Shutdown的狀態,複製data files與redo files到target

database 時,必須先 copy data files 完畢才能 copy redo files

複製完畢~~

Step5:startup nomount

clip_image002[13]

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',

…………略 

image

Step7:recover database using backup controlfile

畫面會提示輸入能夠用來 recover database 的其中一個redo file的路徑

clip_image002[17]

確認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#;

clip_image002[19]

Step8:alter database open resetlogs

clip_image002[21]

Step9:remount temp tablespace


ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\oradata\mydemo\TEMP01.DBF' REUSE; 

clip_image002[23]

Check instance

image

這樣就完成了Clone資料庫,而這時兩邊資料庫所有的object應該都要一模一樣。