複製、遷移資料庫的方法:
1. 利用SQL Statement.
2. 使用OS command.
3. 使用TMU工具.
注意:
遷移前請先確認資料庫不是在version log狀態,若資料庫在version log 狀態,須先停止,然後清除後移除version log.
一些與檔案路徑有關的問題:
在資料庫中與路徑相關的部份是資料庫實體檔案(我們知道資料庫物件有分邏輯物件與實體物件,邏輯物件包含table、index、view,實體物件為實體檔案、參數檔…等),在遷移資料庫時,我們必須先搞清楚變更路徑後會影響哪些物件?
在Redbrick中提供兩種設定路徑的方法:
1. 在建立segment時指定實體路徑。
2. 在rbw.config的OPTION DEFAULT_DATA_SEGMENT、OPTION DEFAULT_INDEX_SEGMENT、OPTION TEMPORARY_DATA_SEGMENT、OPTION TEMPORARY_INDEX_SEGMENT參數中設定好基本路徑,並在create segment時使用相對路徑。
由於資料庫系統表中對segment的紀錄分為上述兩種,因此我們下面所介紹的複製、遷移redbrick資料庫也會針對這兩種類型分別介紹。
如何複製redbrick資料庫?
相對路徑:
1. 建立一塊新的空間,這塊空間必須大小適中、且必須讓redbrick user擁有讀與寫的權利。
2. 使用redbrick user來創建實體資料檔所要存放的目錄。
3. 將所有Redbrick中所有的實體資料檔(PSU file) copy到新的目錄上。
4. 在rbw.config檔中將copy過去的資料庫邏輯邏輯名稱加上去。
絕對路徑:
方法1(風險較小):
1. 使用TMU UNLOAD...EXTERNAL 指令將數據庫內所有記錄unload(萃取) 到磁帶或是硬碟上。
2. 確認新的空間上有足夠的空間可以讓redbrick user將萃取出來的資料寫入新的目錄。
3. 使用redbrick user來創建實體資料檔所要存放的目錄。
4. 使用create table、create index來創建資料庫的所有物件。
5. 使用LOAD DATA將步驟1所產出的data reload到新的table裡。
6. 在rbw.config檔中將copy過去的資料庫邏輯邏輯名稱加上去。
你可以使用rb_cm工具來進行數據庫遷移,rb_cm工具基本上是unload與load的指令集成,透過這個工具你可以將data從A經由網路遷移到B。
方法2(風險較大):
1. 確認新的空間上有足夠的空間可以讓redbrick user將萃取出來的資料寫入新的目錄。
2. 使用redbrick user來創建實體資料檔所要存放的目錄。
3. copy所有的欲複製的資料庫檔案及目錄到新的路徑上。
4. 使用有DBA權限或是segment的creator帳號,利用alter segment…change path指令將segment的路徑改為複製後的新絕對路徑。
5. 在rbw.config檔中將copy過去的資料庫邏輯邏輯名稱加上去。
如何遷移redbrick資料庫?
相對路徑:
1. 建立一塊新的空間,這塊空間必須大小適中、且必須讓redbrick user擁有讀與寫的權利。
2. 使用redbrick user來創建實體資料檔所要存放的目錄。
3. 將原來的data file copy到新的路徑下,copy後將原來的data file砍掉。
4. 在rbw.config檔中將copy過去的資料庫邏輯邏輯名稱加上去。
絕對路徑:
1. 建立一塊新的空間,這塊空間必須大小適中、且必須讓redbrick user擁有讀與寫的權利。
2. 使用redbrick user來創建實體資料檔所要存放的目錄。
3. 使用OS的cp指令將data file複製到新的目錄上。
4. 如果你不想使用絕對路徑來定義你的檔案路徑,你可以直接跳到步驟7。
5. 如果你想使用絕對路徑來定義你的data file path,將檔案從來源端cp到目的端後即可將來源端data file移除。
6. 使用有DBA權限或是segment的creator帳號,利用alter segment…change path指令將segment的路徑改為複製後的新絕對路徑。
7. 在rbw.config檔中將copy過去的資料庫邏輯邏輯名稱加上去。
注意:利用copy的方式搬移資料庫僅侷限於在相同平台相同版本間搬移。不同版本間的搬遷請使用rb_cm工具。