作者 主題: ORACLE Tips: 使用 RMAN 建立 STANDBY DATABASE 的方式  (閱讀 10004 次)

0 會員 與 1 訪客 正在閱讀本文。

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5384
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
ORACLE Tips: 使用 RMAN 建立 STANDBY DATABASE 的方式
By Tommy Wu <tommy at teatime.com.tw>

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

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

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

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

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

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

下面就是使用的方式:

1. 使用 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

2. 使用 SQLPLUS 建立一個 STANDBY 使用的 CONTROL FILE.

sqlplus "/ as sysdba" <<EOF
alter database create standby controlfile as '/misdb/backup/standby.ctl';
exit
EOF

3. 將產生的檔案複製到 STANDBY 的機器上. 使用相同的路徑結構.
   
4. 設定 STANDBY DATABASE 的 init.ora, tnsnames.ora, orapwd... 之類的檔案.
   (可以由原資料庫中複製過來使用)
   
5. 使用 SQLPLUS 將 STANDBY DATABASE 啟動在 nomount 狀態.

sqlplus "/ as sysdba" <<EOF
startup nomount pfile=<init.ora>
exit
EOF

6. 執行 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

7. 整個作業大致完成.


本文的最新版本可以由下列的網頁取得:
 
http://www.teatime.com.tw/~tommy/doc/rman_standby_db.txt

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7311
    • 檢視個人資料
ORACLE Tips: 使用 RMAN 建立 STANDBY DATABASE 的方式
« 回覆 #1 於: 2002-07-04 15:47 »
記得Oracle好像有DB Replication的功能,
只要Record commit就會同步到另一台,
不過不確定是不是用RMAN,
但備份軟體通常都是用RMAN的方式去備!

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5384
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
ORACLE Tips: 使用 RMAN 建立 STANDBY DATABASE 的方式
« 回覆 #2 於: 2002-07-04 16:40 »
引述: "duncanlo"
記得Oracle好像有DB Replication的功能,
只要Record commit就會同步到另一台,
不過不確定是不是用RMAN,
但備份軟體通常都是用RMAN的方式去備!


你說的可能是  Advanced Replication, 這個與 Standby 有點差別,
前者是對資料庫的物件, 如 table... 之類做複製, 後者是對整個資料庫.
各有不同的使用時機...

如果是單單就備份與備援來看, 應該不會用前面那個方法.

RMAN 應該只處理備份的事情.

對於一個企業來說, 資料庫的備份是很重要的事情, 但是目前在 OpenSource 上的資料庫產品, 這方面都很弱, 很難真的讓人下決心去使用.

我們以前曾打算使用 PostgreSQL 來取代 ORACLE, 但是.... 一想到備份與有問題的時候要如何回復到當機的那一刻... 就沒辦法了....

只能說, 這類的產品在這方面還有很大的進步空間.

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7311
    • 檢視個人資料
ORACLE Tips: 使用 RMAN 建立 STANDBY DATABASE 的方式
« 回覆 #3 於: 2002-07-04 17:07 »
所以說Oracle才有RMAN...

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5384
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
ORACLE Tips: 使用 RMAN 建立 STANDBY DATABASE 的方式
« 回覆 #4 於: 2002-07-04 17:17 »
ORACLE 我記得到 8 之後才有這個工具, 之前只能使用 alter tablespace ts1 begin backup 之類的指令來做線上備份...
但是目前 PostgreSQL (就 SQL 功能來說, 可能比 ORACLE 還好) 來看, 只有 dump 的功能可以用. :-(

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7311
    • 檢視個人資料
ORACLE Tips: 使用 RMAN 建立 STANDBY DATABASE 的方式
« 回覆 #5 於: 2002-07-04 17:28 »
那時....粉多人還是作離線備份....