《use physical standby database build test database》

摘要:《use physical standby database build test database》

2009/6/20

今天作業是利用dataguard standby database建立測試用的資料庫。

好處是可以在平日工作時,不影響prdocution的效能又可以建立測試資料庫;

但是如果可預期測試資料庫的建立時程,也可以考慮自production 每日的備份中建立測試資料庫。

Standby Database:
SQL> alter database recover managed standby database cancel;
SQL> shutdown immediate;

複製所有 datafile、controlfile、參數檔(在這是放到c:\pfile.ora) 到測試主機。

TEST Database:

1.先建立 dump 的目錄結構,否則待會在啟動或關閉資料庫時因為要寫alert log,如果沒有相對的目錄會造成指令很慢才回應。

2.建立 oracle service

  c:\ oradim -new -sid oracleTEST -INTPWD change_on_install -MAXUSERS 5 -STARTMODE AUTO -PFILE c:\pfile.ora

  執行完後,會建立一個服務並開啟到 nomount

3.因為是從standby database複製的,所以是standby controlfile,在此先將它開啟到standby mode,再產生controlfile的文件,我們要重建controlfile。

C:\SET ORACLE_SID=ORACLETEST
C:\sqlplus /nolog
SQL> conn sys/change_on_install as sysdba
SQL> alter database mount standby database;
SQL> alter database backup controlfile to trace;
SQL> create spfile from pfile ='c:\pfile.ora'

然後請到udump找重建controlfile的script,記住我們要的是resetlogs的那一段;將檔案放到c:\createctl.sql 執行。

SQL> shutdown immediate
SQL> startup nomount
SQL> @c:\createctl.sql

在這如果遇到 ORA-01504、ORA-01161 請參考另一篇文章 《參數檔、controlfile、datafile header的關係》。

SQL> alter database open resetlogs;

到這裡為止測試資料庫已能使用。

但是這時測試資料庫與production、standby database的dbid及db_name重覆。

可以用nid修改dbid及db_name,當然之前說的參數檔及controlfile也要改,還要open resetlogs;這裡就不講了,請大家自行試試囉。

4.最後一步驟,別忘了要把standby database mount起來,否則dataguard就沒用囉。

Standby database:
SQL> startup nomount;
SQL> alter database mount standby database;
SQL> alter database recover managed standby database disconnect from session;