Tommy 碎碎念

Tommy Wu's blog

下一篇 »

使用 RMAN 建立 STANDBY DATABASE 的方式
post by tommy @ 04 七月, 2002 20:22
由於硬體成本下降的關係, 對於一些公司來說, 另外裝設一個 STANDY DATABASE 來說, 所花費的硬體成本與得到的好處相比, 這個費用實在不算什麼, 畢竟如果原本的資料庫上面的硬體有了問題, 導致資料檔案無法使用, 或者連作業系統都無法開機時, 可以很輕鬆的在一分鐘之內, 就轉由 STANDBY DATABASE 來取代.

如果只是做一般的備份, 真的要回復時, 安裝加上回復的時間, 對於一些公司來說, 這個損失可能更大.

所以... 如果可能, 我建議你使用 STANDBY DATABASE.

如果你的資料庫很小的時候, 製作一個 STANDBY DATABASE 可以說是十分容易, 因為只要將資料庫停下來, 把檔案複製一份就可以做到. 但是如果你的資料庫很大時, 這個動作就不是一件容易的事情.

舉例來說, 我們目前線上的資料庫, 檔案超過 100G, 如果是要傳到另一台機器, 可能要一個小時以上. 問題是... 有這麼大的資料庫的系統, 通常不能允許停機這麼久, 所以傳統的方式很難產生出另一個 STANDBY DATABASE.

現在, 我們可以利用 RMAN 來產生另一個 STANDBY DATABASE 所需要的檔案, 又不用將資料庫停下, 可以在線上作業. (當然, 做這個動作時, 可能資料庫的反應會因為 I/O 的關係變的較慢, 但至少不用停機來處理)

下面就是使用的方式:

  • 使用 RMAN 將原本資料庫備份.
rman target / nocatalog <<EOF
run {
allocate channel d1 type disk;
backup incremental level 0 format '/misdb/backup/df_%U' database
maxsetsize 2000M include current controlfile for standby;
sql "alter system archive log current";
}
exit
EOF
  • 使用 SQLPLUS 建立一個 STANDBY 使用的 CONTROL FILE.
sqlplus "/ as sysdba" <<EOF
alter database create standby controlfile as '/misdb/backup/standby.ctl';
exit
EOF
  • 將產生的檔案複製到 STANDBY 的機器上. 使用相同的路徑結構.
  • 設定 STANDBY DATABASE 的 init.ora, tnsnames.ora, orapwd... 之類的檔案. (可以由原資料庫中複製過來使用)
  • 使用 SQLPLUS 將 STANDBY DATABASE 啟動在 nomount 狀態.
sqlplus "/ as sysdba" <<EOF
startup nomount pfile=<init.ora>
exit
EOF
  • 執行 RMAN 產生 STANDBY DATABASE.
rman target sys/sys_pwd@prod_db auxiliary / nocatalog <<EOF
run {
allocate auxiliary channel dup1 type disk;
allocate auxiliary channel dup2 type disk;
duplicate target database for standby
nofilenamecheck
dorecover;
}
exit
EOF
整個作業大致完成.
Del.icio.us Furl HEMiDEMi Technorati MyShare
迴響
暱稱:
標題:
個人網頁:
電子郵件:
authimage

迴響

  

Bad Behavior 已經阻擋了 96 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS