摘要:《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;