部署dataguard時須要利用主庫的備份建立容災庫,對於小庫能夠採用冷備方式,而對於大庫,因作冷備致使過長的停機時間是不少企業沒法容忍的。下面介紹在主庫不關閉的狀況下,作利用熱備建立容災庫的方法。(不描述dg實施的細節,只針對主庫熱備及在容災主機上作庫恢復的方式)sql
一、主庫熱備數據庫
主庫已開啓歸檔功能,在數據庫open狀態下作全備:session
Rman> run {rest
Sql ‘alter system archive log current’;日誌
backup full database format '/data/backup/full_db_%U.bpk';部署
}get
注:這裏不備份在線歸檔日誌,後面作容災庫恢復時,直接從主庫copy歸檔文件。io
二、容災庫建立登錄
啓動容災庫到mount狀態:file
sql> startup mount;
利用以前主庫熱備文件還原數據文件:
rman> restore database;
因爲目前容災庫狀態落後於主庫,須要利用主庫歸檔日誌文件作recover,以實現狀態一致。
須要肯定要從主庫複製哪些用於恢復的歸檔文件。
檢查還原後datafile的checkpoint_change#
sql> select checkpoint_change# from v$datafile_header;
513326
那麼主庫上checkpoint在513326以後的歸檔日誌文件都須要複製到容災庫,用於恢復。
登陸主庫,肯定須要複製的歸檔文件:
sql> Select sequence,first_change#,next_change#,name from v$archived_log where first_change#>=513326;
將文件複製容災庫:
$ scp arch*log 容災主機:/archive/
在容災庫上作日誌恢復:
Sql> recover automatic standby database;
輸入auto,恢復到最新的歸檔文件。
Sql> recover automatic standby database;
輸入cancel,提示恢復成功。
sql> alter database open; #能夠正常打開
sql> recover managed standby database cancel;
sql> recover managed standby database disconnect from session; #進入日誌恢復狀態
至此,在生產數據庫不中斷的狀況下,完成了容災數據庫的建立。
還能夠使用如下方式實現
rman >duplicate target database for standby
另外,11g能夠不用對主庫進行備份,就能夠建立dataguard.
11g 不用對主庫進行備份,就能夠建立dg,具體的命令爲:
run
{
allocate channel c1 type disk;
allocate auxiliary channel c2 type disk;
duplicate target database for standby from active database nofilenamecheck;
}