資料庫複製方式進行資料庫恢復

yb708發表於2013-11-08

資料庫複製方式進行資料庫恢復

       在我們的測試工作中可能會遇到這樣的需求,需要根據目前已經存在的一個執行的orracle資料庫來恢復出一個相同的資料庫,同時在一些情況下最好這個源資料庫不被關掉,提供正常服務,另外整個恢復過程的要求可接受的時間內完成。在這種情況下一些傳統備份恢復可能無法實現或者效率太低,因此在這樣一種情況下可以考慮使用11g以後新增duplicate命令方式來進行資料庫的複製。

       使用duplicate方式來複制一個資料主要有如下一些步驟:

1)在需要恢復資料庫的機器上新建好資料檔案目錄,並保證目錄空間足夠。

2)在需要恢復資料庫的機器上建立一個資料庫服務,服務名可以和源資料庫名相同或者不同(該步驟只在windows平臺需要,linux平臺可忽略):

Oradim –new –sid duptest (duptest為目標庫的服務名)

3)在目標庫建立密碼檔案:

Orapwd file=” D:\oracle\product\11.2.0\dbhome_1\database\pwdduptest.ora” password = oracle entries =10

(注意:duptest和上面的服務名一致;D:\oracle\product\11.2.0\dbhome_1\databaseORACLE_HOME目錄)

4)建立目標庫的引數檔案,可根據源資料庫的初始化引數檔案來建立,方法如下:

Create pfile from spfile;

在源庫中執行以上命令得到init開頭的引數檔案,進行相應修改後重新命名為init+服務名.ora的方式,比如這裡重新命名檔案為INITDUPTEST.ORA,並放置到ORACLE_HOME下的database目錄下。

5)啟動目標庫到nomount狀態:

Startup nomount

6)使用rman連線到源庫和目標庫:

C:\Users\Administrator>rman

 

RMAN> connect target sys/oracle@test

連線到目標資料庫: TEST (DBID=2128587833)

 

RMAN> connect auxiliary sys/oracle@test

已連線到輔助資料庫: TEST (DBID=2128587833)

 

7)rman中執行duplicate命令,開始資料庫複製,該命令將自動把源資料庫中的控制檔案資料檔案及重做日誌檔案複製到目標庫中:

RMAN> run{

 set newname for datafile 1 to 'D:\oracle\oradata\duptest\SYSTEM01.DBF';

 set newname for datafile 2 to 'D:\oracle\oradata\duptest\SYSAUX01.DBF';

 set newname for datafile 3 to 'D:\oracle\oradata\duptest\UNDOTBS01.DBF';

 set newname for datafile 4 to 'D:\oracle\oradata\duptest\USERS01.DBF';

 set newname for datafile 1 to 'D:\oracle\oradata\duptest\TEMP01.DBF';

duplicate target database to duptest from active database password file spfil

e nofilenamecheck;

  }

在以上命令執行後,如果出現如下內容表示命令執行成功:

記憶體指令碼的內容:

{

   Alter clone database open resetlogs;

}

正在執行記憶體指令碼

資料庫已開啟

完成 Duplicate Db 05-11-13

8)登入到目標庫中驗證資料庫是否可用。

 

       至此一個和源資料庫相同的資料庫就恢復完成。當然這只是一個比較基本的完整資料庫複製過程,同時duplicate方式還可以完成一些特殊的需求,比如根據需要只複製部分表空間的資料等。

       通過上面的恢復過程可以看到duplicate實際上是一種RMAN新特性,使用該方式可以在一些特定場景中完美完成資料庫複製需求,使用得當可以減少目前資料庫恢復時間,提高效率

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

相關文章