數據庫冷遷移和熱遷移方法案例

磁盤冷遷移方法

如果Oracle正在使用的磁盤出現了報警,則及時替換磁盤是很有必要的。下面假設系統中hdisk4和hdisk5出現了問題,需要進行替換。當前數據庫放在卷組datavg上,查看datavg狀態,如下:

  1. #lsvg –p datavg
  2. datavg:
  3. PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION
  4. hdisk2 active 7 1 00 . . 00 . . 00 . . 00 . . 01
  5. hdisk3 active 7 1 00 . . 00 . . 00 . . 00 . . 01
  6. hdisk4 active 7 2 01 . . 00 . . 00 . . 00 . . 01
  7. hdisk5 active 7 2 01 . . 00 . . 00 . . 00 . . 02

將新的磁盤加入到系統中,通過運行cfgmgr命令後,可以查看磁盤在系統中的狀態,如下:

注意:磁盤必須支持可熱插拔。

  1. #lspv –L
  2. hdisk0 0004563fe7bf7fbe rootvg active
  3. hdisk1 0004563febd0d4e1 rootvg active
  4. hdisk2 0004563f1d374260 datavg active
  5. hdisk3 0004563f1d374439 datavg active
  6. hdisk4 0004563f1d374260 datavg active
  7. hdisk5 0004563f1d374439 datavg active
  8. hdisk6 0004563f1d374260 datavg active
  9. hdisk7 0004563f1d374439 datavg active

我們看到hdisk6和hdisk7出現在系統中,接着我們將這兩塊盤添加到卷組datavg中。你可以通過smitty命令或者直接用命令extendvg來添加,這裏爲了讓大家更加清晰理解,我用了smitty方法來添加,如下:

  1. #smitty extendvg
  2. Set Characteristics of a Volume Group
  3. Move cursor to desired item and press Enter.
  4. Change a Volume Group
  5. Add a Physical Volume from a Volume Group
  6. Remove a Physical Volume from a Volume Group
  7. Reorganize a Volume group

將hdisk6和hdisk7加入到卷組datavg中,如下:

  1. Add a Physical Volume to a Volume Group
  2. Type or select values in entry fields.
  3. Press Enter AFTER making all desired changes.
  4. [Entry Fields]
  5. Force the creation of a volume group? no
  6. *VOLUME GROUP name [datavg] +
  7. *PHYSICAL VOLUME nameS [hdisk6 hdisk7] +

添加成功後,你可以查看到卷組當前磁盤的狀態,hdisk6和hdisk7已被添加到datavg中,且所有物理分區(PP)全部爲空,如下:

  1. #lsvg –p datavg
  2. datavg:
  3. PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION
  4. hdisk2 active 7 1 00 . . 00 . . 00 . . 00 . . 01
  5. hdisk3 active 7 1 00 . . 00 . . 00 . . 00 . . 01
  6. hdisk4 active 7 2 01 . . 00 . . 00 . . 00 . . 01
  7. hdisk5 active 7 2 01 . . 00 . . 00 . . 00 . . 02
  8. hdisk6 active 7 7 01 . . 00 . . 00 . . 00 . . 02
  9. hdisk7 active 7 7 01 . . 00 . . 00 . . 00 . . 02

爲了更好進行數據庫遷移,這裏需要將Oracle數據庫關閉,如下:

SQL> show user

USER is “SYS”

SQL>shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

當關閉了數據庫後,查看Oracle數據庫的裸設備工作狀態,全部爲關閉狀態。如下:

  1. #lsvg –l datavg
  2. datavg:
  3. LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
  4. lv_system s raw 4 4 1 closed /syncd N/A
  5. lv_sysaux raw 3 3 1 closed /syncd N/A
  6. lv_ctl1 raw 1 1 1 closed /syncd N/A
  7. lv_ctl2 raw 1 1 1 closed /syncd N/A
  8. lv_redo1 raw 1 1 1 closed /syncd N/A
  9. lv_redo2 raw 1 4 1 closed /syncd N/A
  10. lv_undotbs01 raw 3 3 1 closed /syncd N/A
  11. lv_temp01 raw 2 2 1 closed /syncd N/A
  12. lv_users01 raw 2 2 1 closed /syncd N/A
  13. lv_spfileorcl raw 1 1 1 closed/syncd N/A
  14. lv_pwdorcl raw 1 1 1 closed /syncd N/A
  15. lv_test01 raw 1 1 1 closed /syncd N/A
  16. lv_test02 raw 1 1 1 closed /syncd N/A

所有前提工作準備就緒後,這裏就需要用到一個命令migratepv來進行數據庫的遷移,如下:

Physical Volumes

Move cursor to desired item and press Enter.

List ALL Physical Volumes in system

Add a Disk

Change Characteristics of a Physical Volume

List Contents of a Physical Volume

Move Contents of a Physical Volume

在SOURCE physical volume name選擇磁盤作爲源磁盤,如hdisk4;在DESTINATION physical volumes選擇磁盤作爲目標盤,如hdisk6。如下:

Move Contents of a Physical Volume

Type or select values in entry fields.

Press Enter AFTER making all desired changes.

[Entry Fields]

*SOURCE physical volume name hdisk4 +

*DESTINATION physical volumes [hdisk6] +

Move only data belonging to this [ ]

LOGICAL VOLUME?

注意:現在物理卷hdisk4上的所有內容開始向hdisk6進行遷移了,在此過程中,datavg卷組處於lock狀態,如下面命令執行報錯結果,就是因爲datavg的lock狀態,而無法顯示正常的結果。如下:

  1. #lsvg –l datavg
  2. 0516-1201 lspv: Waring : Volume group datavg is locked. This command
  3. will continue retries until lock is free. If lock is inadvertent
  4. and needs to be removed, execute chvg u datavg’.
  5. 數據遷移可能需要一斷時間,這主要取決於數據的容量有多大了。當遷移成功完成後,查看hdisk4hdisk6的內容,如下:
  6. #lspv –p hdisk4
  7. hdisk4:
  8. PP RANGE STATE REGION LV NAME TYPE MOUNT POINT
  9. 1-2 free outer edge
  10. 3-3 free outer middle
  11. 4-4 free center
  12. 5-5 free inner middle
  13. 6-7 free inner edge
  14. #lspv –p hdisk6
  15. hdisk6:
  16. PP RANGE STATE REGION LV NAME TYPE MOUNT POINT
  17. 1-2 free outer edge
  18. 2-2 used outer edge lv_redo1 raw N/A
  19. 3-3 used outer middle lv_ctl1 raw N/A
  20. 4-4 used center lv_undotbs1 raw N/A
  21. 5-5 used inner middle lv_undotbs1 raw N/A
  22. 6-7 used inner edge lv_undotbs1 raw N/A
  23. 7-7 free inner edge

從上圖你可以查看到,hdisk4的數據已經完整地遷移到了hdisk6,現在你可以用同樣的方法將hdisk5的數據遷移到hdisk7上,待所有數據都遷移完成後,通過smitty或者命令reducevg直接刪除hdisk4和hdisk5,如下:

Set Characteristics of a Volume Group

Move cursor to desired item and press Enter.

Change a Volume Group

Add a Physical Volume to a Volume Group

Remove a Physical Volume from a Volume Group

Reorganize a Volume Group

選擇要刪除的物理卷hdisk4和hdisk5,按回車鍵執行,如下:

Remove a Physical Volume from a Volume Group

Type or select values in entry fields.

Press Enter AFTER making all desired changes.

[Entry Fields]

*VOLUME GROUP name datavg +

*PHYSICAL VOLUME nameS [hdisk4] +

FORCE deallocation of all partitions on

this physical volume?

刪除hdisk4和hdisk5成功後,檢查卷組datavg目前的使用情況,如下:

  1. #reducevg datavg hdisk5
  2. #lsvg –p datavg
  3. datavg:
  4. PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION
  5. hdisk2 active 7 1 00 . . 00 . . 00 . . 00 . . 01
  6. hdisk3 active 7 1 00 . . 00 . . 00 . . 00 . . 01
  7. hdisk6 active 7 7 01 . . 00 . . 00 . . 00 . . 02
  8. hdisk7 active 7 7 01 . . 00 . . 00 . . 00 . . 01

待一切正常後,重新啓動Oracle數據庫實例。

這種方法不好的一點就是需要關閉Oracle實例,不能保證業務正常運行。如果不想關閉,可以通過磁盤的熱遷移來實現,其實這個磁盤熱遷移就是用AIX系統mirror功能。

磁盤熱遷移方法

如果你感覺冷遷移不太適合你的生產環境,我們可以採用磁盤的熱遷移方法來實現。環境和上面一樣,如下:

  1. #lsvg –p datavg
  2. datavg:
  3. PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION
  4. hdisk2 active 7 1 00 . . 00 . . 00 . . 00 . . 01
  5. hdisk3 active 7 1 00 . . 00 . . 00 . . 00 . . 01
  6. hdisk6 active 7 2 01 . . 00 . . 00 . . 00 . . 01
  7. hdisk7 active 7 2 01 . . 00 . . 00 . . 00 . . 01

從上圖可以看到,卷組datavg中當前有磁盤hdisk2、hdisk3、hdisk6、hdisk7。需要遷移,就需要磁盤,如下:

  1. #lspv
  2. hdisk0 0004563fe7bf7fbe rootvg active
  3. hdisk1 0004563febd0d4e1 rootvg active
  4. hdisk2 0004563f1d374260 datavg active
  5. hdisk3 0004563f1d374439 datavg active
  6. hdisk4 0004563f1d374260 none
  7. hdisk5 0004563f1d374439 none
  8. hdisk6 0004563f1d374260 datavg active
  9. hdisk7 0004563f1d374439 datavg active
  10. hdisk8 0004563f1d374260 none
  11. hdisk9 0004563f1d374439 none

從上圖lspv顯示的結果,可知,目前系統上有hdisk4、hdisk5、hdisk8和hdisk9未被使用。現在將這些磁盤加入到datavg中,如下:

  1. #extendvg datavg hdisk4 hdisk5 hdisk8 hdisk9

添加成功後,系統中磁盤狀態如下:

  1. #lspv
  2. hdisk0 0004563fe7bf7fbe rootvg active
  3. hdisk1 0004563febd0d4e1 rootvg active
  4. hdisk2 0004563f1d374260 datavg active
  5. hdisk3 0004563f1d374439 datavg active
  6. hdisk4 0004563f1d374260 datavg active
  7. hdisk5 0004563f1d374439 datavg active
  8. hdisk6 0004563f1d374260 datavg active
  9. hdisk7 0004563f1d374439 datavg active
  10. hdisk8 0004563f1d374260 datavg active
  11. hdisk9 0004563f1d374439 datavg active

現在可以執行mirrorvg命令對datavg進行鏡像,然而這個操作可能需要費時間,如下:

  1. #mirrorvg datavg
  2. 0516-1125 mirrorvg: Quorom requirement turned off, varyoff and varyon
  3. volume group for this to take effect.

注意,在鏡像期間,對卷組的大多數操作都是禁止的,如下:

  1. #lspv hdisk9
  2. 0516-1201 lspv: Waring : Volume group datavg is locked. This command
  3. will continue retries until lock is free. If lock is inadvertent
  4. and needs to be removed, execute chvg u datavg’.

但是有一點可以確定,數據庫實例可以正常運行。查看datavg卷組上裸設備的狀態可知,如下:

  1. #lsvg –l datavg
  2. datavg:
  3. LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
  4. lv_system s raw 4 4 1 open/syncd N/A
  5. lv_sysaux raw 3 3 1 open/syncd N/A
  6. lv_ctl1 raw 1 1 1 open/syncd N/A
  7. lv_ctl2 raw 1 1 1 open/syncd N/A
  8. lv_redo1 raw 1 1 1 open/syncd N/A
  9. lv_redo2 raw 1 4 1 open/syncd N/A
  10. lv_undotbs01 raw 3 3 1 open/syncd N/A
  11. lv_temp01 raw 2 2 1 open/syncd N/A
  12. lv_users01 raw 2 2 1 open/syncd N/A
  13. lv_spfileorcl raw 1 1 1 closed/syncd N/A
  14. lv_pwdorcl raw 1 1 1 closed /syncd N/A
  15. lv_test01 raw 1 1 1 open/syncd N/A
  16. lv_test02 raw 1 1 1 open/syncd N/A

當你完成鏡像後,需要拆除鏡像,將hdisk2、hdisk3、hdisk6、hdisk7從卷組datavg中刪除,如下操作:

  1. #reducevg datavg hdisk2 hdisk3 hdisk6 hdisk7
  2. #lspv
  3. hdisk0 0004563fe7bf7fbe rootvg active
  4. hdisk1 0004563febd0d4e1 rootvg active
  5. hdisk2 0004563f1d374260 none
  6. hdisk3 0004563f1d374439 none
  7. hdisk4 0004563f1d374260 datavg active
  8. hdisk5 0004563f1d374439 datavg active
  9. hdisk6 0004563f1d374260 none
  10. hdisk7 0004563f1d374439 none
  11. hdisk8 0004563f1d374260 datavg active
  12. hdisk9 0004563f1d374439 datavg active

在查看卷組datavg的狀態,如下:

  1. # lsvg –p datavg
  2. datavg:
  3. PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION
  4. hdisk4 active 7 1 00 . . 00 . . 00 . . 00 . . 01
  5. hdisk5 active 7 1 00 . . 00 . . 00 . . 00 . . 01
  6. hdisk8 active 7 2 01 . . 00 . . 00 . . 00 . . 01
  7. hdisk9 active 7 2 01 . . 00 . . 00 . . 00 . . 02

從上圖lsvg顯示的狀態可以知道,hdisk2、hdisk3、hdisk6、hdisk7已從datavg中拆除,現在只由hdisk4、hdisk5、hdisk8和hdisk9構成了datavg。如果在允許的情況下,建議最好重新激活一下卷組datavg,以及設置Quorum參數。如下:

  1. #varyoffvg datavg
  2. #chvg –Q y datavg
  3. #varyonvg datavg

上面兩種遷移方法,非常簡單易操作,但是爲了安全建議對數據還是做一個備份,保證萬無一失,如果你對數據庫比較熟悉,可以用數據庫的恢復方法、數據文件直接遷移的方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章