数据库冷迁移和热迁移方法案例

磁盘冷迁移方法

如果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

上面两种迁移方法,非常简单易操作,但是为了安全建议对数据还是做一个备份,保证万无一失,如果你对数据库比较熟悉,可以用数据库的恢复方法、数据文件直接迁移的方法。

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