基於RMAN 建立測試資料庫

guoge發表於2012-12-17

我們經常需要根據生產資料庫做一個測試資料庫進行例如軟體測試、資料結構更新測試等操作。希望這個測試資料庫和生產資料庫儘可能地相似。使用資料庫冷備的方式,需要關閉生產資料庫,自然不現實;使用匯入匯出的方式,花費的時間可能較長;使用熱備的方式之外,其實還是可以使用RMAN的方式。下面就基於相同版本作業系統和ORACLE,如何在相同位置建立測試資料庫。

假設源資料庫所在機器地址為 132.147.100.81(簡稱機器1),資料庫例項名為ORCL ,作業系統為Windows2003

測試資料庫在機器地址為 132.147.100.82(簡稱機器2), 作業系統同機器1

      機器1:

          1、進行RMAN 備份:

        RMAN  target  /

        執行以下指令碼:

RUN { 

allocate channel c1 type disk;

allocate channel c2 type disk;

BACKUP FORMAT 'd:\backup\orcl_%U_%T' skip inaccessible filesperset 5  DATABASE TAG orcl_hot_db_bk; 

sql 'alter system archive log current';

BACKUP FORMAT 'd:\backup\arch_%U_%T' skip inaccessible filesperset 5 ARCHIVELOG ALL DELETE INPUT; 

backup current controlfile tag='bak_ctlfile' format='d:\backup\ctl_file_%U_%T';

backup spfile tag='spfile' format='d:\backup\ORCL_spfile_%U_%T';

release channel c2;

release channel c1;

}

2.  匯出Spfile 檔案“

SQL> Create pfile = d:\init.ora from spfile;

3.  建立一個指向測試資料庫的服務別名:

AUXORCL =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 132.147.100.82)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = ORCL)

      (UR=A)

    )

  )

其中,(UR=A) 必須加上,因為在克隆資料庫時,測試資料是nomount 狀態,沒有這個引數,將不能連線上資料庫。

機器2

1 . 安裝好ORACLE軟體,不安裝ORACLE例項。

2. 使用 DBCA,建立ORCL例項,但最後一步不真正建立資料庫,而是儲存成指令碼。

3.執行生成的指令碼中的createdb.Bat中除最後一句的其它語句,目地是建立新例項所需的目錄和服務。

4. 將機器1中備份的資料庫(d:\backup) 複製到相同的目錄。

5. 使用netca 建立監聽

6  使用orapwd  命令 建立口令檔案:

7 複製機器1上的init.ora 檔案,修改其中引數,例如SGA區大小等,這不是必須的,主要依賴機器2的配置。

 8 .   連線到空例項: sqlplus /  as sysdba後  ,使用修改後的Init.ora啟動到nomount狀態,並生成spfile檔案。

機器1:

 重新以RMAN 連線源資料庫和測試資料庫:

 Rman  target / auxiliary sys/oracle@auxorcl

執行:

DUPLICATE TARGET DATABASE TO orcl 

執行成功後,會關閉測試資料庫,還可以在機器2相應的目錄下的資料檔案。

機器2:

 重新啟動資料庫,並以resetlog方式開啟資料庫。

至此,你會發現測試資料庫建立成功。

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

相關文章