当前位置: 首页 > news >正文

ORACLE RAC环境使用ASM机制零宕机时间更换存储的实践

ORACLE RAC使用存储,随时系统的发展,磁盘空间以及存储的老化、更换是一个典型的动作;基于ASM数据自动均衡分配到各个磁盘LUN的特性,可以使用此方式进行在线的迁移,ORACLE MOS上有一个文档:中文版: 零宕机时间迁移 ASM 磁盘组到另一个 SAN/磁盘阵列/DAS 的准确步骤 (文档 ID 1946664.1);对此有描述,如下是近期一个真实的客户ORACLE RAC 主机不换、存储更换迁移案例:

1、操作计划步骤

序号

实施项目

实施内容

时间

是否中断业务

1

服务器添加共享存储

  1. 存储上划分LUN,并映射到两台服务

已完成

2

节点2关机

HIS数据库集群2节点关闭数据库,关闭主机轮流重启

21:00-21:10

3

节点1关机

HIS数据库集群1节点关闭数据库,关闭主机轮流重启

21:10-21:20

4

配置ASM磁盘

配更改UDEV配置文件,使得新存储的asm disk对ASM实例可识别

21:20-21:40

5

添加asm磁盘

  1. 往3个磁盘组里添加新创建的ASM磁盘,并指定REBALANCE
  2. 观察同步状态,同步完成后方可进行下一步

21:40-22:40

6

删除旧的ASM磁盘

  1. 删除旧的ASM的磁盘组,并指定REBALANCE
  2. 观察删除状态确认删除完成后方可进行下一步

22:40-00:40

7

验证数据库

1、验证数据库正常

00:40-01:00

2、操作过程:

2.1.系统添加磁盘
新添加:8块1T的data盘 1块500G的arch盘 3块10g的ocr盘
原磁盘路径及权限
[root@hisdb1 ~]# ll /dev/mapper/hw*
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwarch01 -> ../dm-13
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata01 -> ../dm-11
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata02 -> ../dm-12
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata03 -> ../dm-17
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata04 -> ../dm-15
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata05 -> ../dm-18
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata06 -> ../dm-20
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata07 -> ../dm-14
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata08 -> ../dm-16
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwocr01 -> ../dm-19
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwocr02 -> ../dm-10
lrwxrwxrwx 1 root root 7 Apr 17 21:43 /dev/mapper/hwocr03 -> ../dm-9


在存储上划分LUN,并映射给数据库服务器,关闭HIS数据库集群1节点,并更改磁盘权限,待数据库节点1开机并数据库正常运行后,关闭HIS数据库集群2节点,并更改磁盘权限。
1.his一二节点分别在root下操作:
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
ENV{DM_NAME}=="hwarch01", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata01", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata02", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata03", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata04", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata05", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata06", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata07", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata08", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwocr01", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwocr02", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwocr03", OWNER:="grid", GROUP:="asmadmin", MODE:="660"

一节点root用户执行:
/u01/11.2.0/grid/bin/crsctl stop crs 

root下执行:
LINUX6.9重新加载UDEV规则
###start_uev
udevadm control -R
udevadm trigger
shutdown -f  
主机启动后检查crs 
/u01/11.2.0/grid/bin/crsctl stat res -t  数据库两个节点均为open后
ll /dev/mapper/hw*
ll /dev/dm-*
multipath -ll
二节点root用户执行
/u01/11.2.0/grid/bin/crsctl stop crs -f 

root下执行:
LINUX6.9重新加载UDEV规则
##start_uev
udevadm control -R
udevadm trigger

shutdown -f 
主机启动后检查crs 
crsctl status res -t 数据库两个节点均为open后
并在两节点检查磁盘挂载情况
ll /dev/mapper/hw*
ll /dev/dm-*
multipath -ll

在数据库服务器上设置磁盘的权限,/etc/udev/rules.d/99-oracle-asmdevices.rules中添加如下内容(注意:其中mpath-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx改为实际新加的lun的uuid)
ENV{DM_NAME}=="hwarch01", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
重新加载UDEV规则
udevadm control -R
udevadm trigger

2.2.当前ASM磁盘使用情况
目前的存储分配及 ASM 磁盘组使用情况如下:

2.3.新存储ASM磁盘划分需求


2.4.ASM数据磁盘组中存储盘更换步骤
2.4.1.加盘
图形化操作:
ASMCA 图形中选择相应的磁盘组,选择要加入的 ASM 磁盘,点击 OK 即可:
                                                                

添加ASM磁盘后的状态:
SQL> set line 150
SQL> col ERROR_CODE for a5
SQL> select * from v$asm_operation;
GROUP_NUMBER OPERA STAT      POWER     ACTUAL      SOFAR   EST_WORK   EST_RATE EST_MINUTES ERROR_CODE
------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- --------------------------------------------
           1 REBAL RUN           1          1      16707      28940       4143           2
           2 REBAL WAIT          1
           3 REBAL WAIT          1


因为asm使用图形化添加磁盘,默认power 1,默认的速率可能要很久,查看服务器现在io压力不大,调整power大小:
[root@hisdb1 ~]# iostat -xtm 2 10
调整power
SQL>ALTER DISKGROUP DATA REBALANCE POWER 5;

REBALANCE完成后,查询v$asm_operation记录将消失:
SQL> select * from v$asm_operation;
no rows selected

命令行操作:
命令方式:
SQL> alter diskgroup SYSDG add disk '/dev/mapper/hwocr01','/dev/mapper/hwocr02'……   rebalance power 10;
一次添加多个盘

查询ASM磁盘组状态
注意:REBALANCE过程根据数据量的大小不同完成时间也不一,REBALANCE过程可以通过v$asm_operation视图来查看:
SQL> set line 150
SQL> col ERROR_CODE for a5
SQL> select * from v$asm_operation;

GROUP_NUMBER OPERA STAT      POWER     ACTUAL      SOFAR   EST_WORK   EST_RATE EST_MINUTES ERROR_CODE
------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- --------------------------------------------
           1 REBAL RUN           1          1      16707      28940       4143           2
           2 REBAL WAIT          1
           3 REBAL WAIT          1
           
调整power
ALTER DISKGROUP DATA REBALANCE POWER 5;
REBALANCE完成后,查询v$asm_operation记录将消失:
SQL> select * from v$asm_operation;
no rows selected

添加ASM磁盘后的状态:
原磁盘组:
SQL> select NAME, ALLOCATION_UNIT_SIZE, STATE, TOTAL_MB, FREE_MB USABLE_FILE_MB from gv$asm_diskgroup;
NAME                           ALLOCATION_UNIT_SIZE STATE         TOTAL_MB USABLE_FILE_MB
------------------------------ -------------------- ----------- ---------- --------------
ARCH                                        1048576 MOUNTED         512000         393405
DATA                                        1048576 MOUNTED        2097152         185327
SYSDG                                       1048576 MOUNTED          30720          29794
ARCH                                        1048576 MOUNTED         512000         393405
DATA                                        1048576 MOUNTED        2097152         185327
SYSDG                                       1048576 MOUNTED          30720          29794
6 rows selected.
新磁盘组:
SQL> select NAME, ALLOCATION_UNIT_SIZE, STATE, TOTAL_MB, FREE_MB USABLE_FILE_MB from gv$asm_diskgroup;
SQL> select NAME, ALLOCATION_UNIT_SIZE, STATE, TOTAL_MB, FREE_MB USABLE_FILE_MB from gv$asm_diskgroup;
NAME                           ALLOCATION_UNIT_SIZE STATE         TOTAL_MB USABLE_FILE_MB
------------------------------ -------------------- ----------- ---------- --------------
ARCH                                        1048576 MOUNTED        1024000         965989
DATA                                        1048576 MOUNTED       10485760        8572567
SYSDG                                       1048576 MOUNTED          61440          60508
ARCH                                        1048576 MOUNTED        1024000         965989
DATA                                        1048576 MOUNTED       10485760        8572564
SYSDG                                       1048576 MOUNTED          61440          60508
6 rows selected.
2.4.2.踢盘
SQL> select a.name diskname,a.path,b.name diskgroupname,a.failgroup from 
v$asm_disk a, v$asm_diskgroup b where a.group_number=b.group_number;
从现有 ASM 磁盘组中移除 ASM 磁盘 
原磁盘组
su - grid
sqlplus / as sysasm
col diskname for a15
col path for a40
set linesize 200
select a.name diskname,a.path,b.name diskgroupname,a.failgroup from 
v$asm_disk a, v$asm_diskgroup b where a.group_number=b.group_number;
DISKNAME        PATH                                     DISKGROUPNAME                  FAILGROUP
--------------- ---------------------------------------- ------------------------------ ------------------------------
DATA_0001       /dev/mapper/data2                        DATA                           DATA_0001
ARCH_0000       /dev/mapper/arch                         ARCH                           ARCH_0000
DATA_0000       /dev/mapper/data1                        DATA                           DATA_0000
SYSDG_0002      /dev/mapper/ocr3                         SYSDG                          SYSDG_0002
SYSDG_0001      /dev/mapper/ocr2                         SYSDG                          SYSDG_0001
SYSDG_0000      /dev/mapper/ocr1                         SYSDG                          SYSDG_0000
6 rows selected.
新磁盘组
su - grid
sqlplus / as sysasm
col diskname for a15
col path for a40
set linesize 200
select a.name diskname,a.path,b.name diskgroupname,a.failgroup from 
v$asm_disk a, v$asm_diskgroup b where a.group_number=b.group_number;
ISKNAME        PATH                                     DISKGROUPNAME                  FAILGROUP
--------------- ---------------------------------------- ------------------------------ ------------------------------
DATA_0007       /dev/mapper/hwdata06                     DATA                           DATA_0007
DATA_0006       /dev/mapper/hwdata05                     DATA                           DATA_0006
SYSDG_0003      /dev/mapper/hwocr01                      SYSDG                          SYSDG_0003
DATA_0004       /dev/mapper/hwdata03                     DATA                           DATA_0004
DATA_0009       /dev/mapper/hwdata08                     DATA                           DATA_0009
DATA_0005       /dev/mapper/hwdata04                     DATA                           DATA_0005
DATA_0008       /dev/mapper/hwdata07                     DATA                           DATA_0008
ARCH_0001       /dev/mapper/hwarch01                     ARCH                           ARCH_0001
ARCH_0000       /dev/mapper/arch                         ARCH                           ARCH_0000
DATA_0003       /dev/mapper/hwdata02                     DATA                           DATA_0003
DATA_0002       /dev/mapper/hwdata01                     DATA                           DATA_0002
SYSDG_0004      /dev/mapper/hwocr02                      SYSDG                          SYSDG_0004
SYSDG_0005      /dev/mapper/hwocr03                      SYSDG                          SYSDG_0005
ARCH_0000       /dev/mapper/arch                         ARCH                           ARCH_0000
SYSDG_0001      /dev/mapper/ocr2                         SYSDG                          SYSDG_0001
DATA_0001       /dev/mapper/data2                        DATA                           DATA_0001
DATA_0000       /dev/mapper/data1                        DATA                           DATA_0000
SYSDG_0002      /dev/mapper/ocr3                         SYSDG                          SYSDG_0002
SYSDG_0000      /dev/mapper/ocr1                         SYSDG                          SYSDG_0000
-------------------------------------------------------------------------------------------------------------------
从现有 ASM 磁盘组中移除 ASM 磁盘 
alter diskgroup TESTDG drop disk DATADG_0010 [rebalance power n];
磁盘组:OCR
SQL>alter diskgroup SYSDG drop disk SYSDG_0000  rebalance power 10; 
SQL>alter diskgroup SYSDG drop disk SYSDG_0001  rebalance power 10;
SQL>alter diskgroup SYSDG drop disk SYSDG_0002  rebalance power 10;
磁盘组:DATA
SQL> alter diskgroup DATA drop disk DATA_0000  rebalance power 10;
SQL> alter diskgroup DATA drop disk DATA_0001  rebalance power 10;
磁盘组:ARCH
SQL> alter diskgroup ARCH drop disk ARCH_0000  rebalance power 10;
查询ASM磁盘状态
首先,完成旧的ASM磁盘删除后,观察rebalance情况:
SQL> select * from v$asm_operation;

SQL> select * from v$asm_operation;

no rows selected

查询没有记录,说明rebalance完成,确认无误。

4.3.2.查询删除ASM磁盘后的状态
SQL> select NAME, ALLOCATION_UNIT_SIZE, STATE, TOTAL_MB, FREE_MB USABLE_FILE_MB from gv$asm_diskgroup;
SQL> select failgroup, name from v$asm_disk where group_number=(select group_number from v$asm_diskgroup where name = 'SYSDG');                       
SQL> select failgroup, name from v$asm_disk where group_number=(select group_number from v$asm_diskgroup where name = 'DATA');
SQL> select failgroup, name from v$asm_disk where group_number=(select group_number from v$asm_diskgroup where name = 'ARCH');
至此,完成存储的迁移,新的磁盘已替换旧的磁盘。


SQL> select failgroup, name from v$asm_disk where group_number=(select group_number from v$asm_diskgroup where name = 'SYSDG');

FAILGROUP                      NAME
------------------------------ ------------------------------
SYSDG_0004                     SYSDG_0004
SYSDG_0005                     SYSDG_0005
SYSDG_0003                     SYSDG_0003

SQL> select failgroup, name from v$asm_disk where group_number=(select group_number from v$asm_diskgroup where name = 'DATA');

FAILGROUP                      NAME
------------------------------ ------------------------------
DATA_0007                      DATA_0007
DATA_0005                      DATA_0005
DATA_0004                      DATA_0004
DATA_0009                      DATA_0009
DATA_0008                      DATA_0008
DATA_0006                      DATA_0006
DATA_0002                      DATA_0002
DATA_0003                      DATA_0003

8 rows selected.

SQL> select failgroup, name from v$asm_disk where group_number=(select group_number from v$asm_diskgroup where name = 'ARCH');

FAILGROUP                      NAME
------------------------------ ------------------------------
ARCH_0001                      ARCH_0001

ASMCMD> lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576    512000   470466                0          470466              0             N  ARCH/
MOUNTED  EXTERN  N         512   4096  1048576   8388608  6475437                0         6475437              0             N  DATA/
MOUNTED  NORMAL  N         512   4096  1048576     30720    29794            10240            9777              0             Y  SYSDG/
ASMCMD> lsdsk
Path
/dev/mapper/hwarch01
/dev/mapper/hwdata01
/dev/mapper/hwdata02
/dev/mapper/hwdata03
/dev/mapper/hwdata04
/dev/mapper/hwdata05
/dev/mapper/hwdata06
/dev/mapper/hwdata07
/dev/mapper/hwdata08
/dev/mapper/hwocr01
/dev/mapper/hwocr02
/dev/mapper/hwocr03

相关文章:

  • 安宝特案例 | AR技术在院外心脏骤停急救中的革命性应用
  • 4.4 记忆机制与上下文管理:短期与长期记忆的设计与应用
  • 新时代质量管理体系-端到端流程通俗演义,什么是端到端流程?
  • 3D高斯个人笔记
  • 如何实现客户端热部署能力方案
  • 写一个esp开发SPI的链接吗,
  • 机器人新革命:Pi 0.5如何让智能走进千家万户
  • 【踩坑记录】stm32 jlink程序烧录不进去
  • 电力作业安全工器具全解析:分类、配置与检查要点
  • 解决高德地图AMapUtilCoreApi、NetProxy类冲突
  • 最小生成树-prim、kruskal算法
  • 配置 C/C++ 语言智能感知(IntelliSense)的 c_cpp_properties.json 文件内容
  • Redis Cluster 使用 CRC16 算法实现 Slot 槽位分片的核心细节
  • git Http改用户下载
  • 直接偏好优化(Direct Preference Optimization,DPO):论文与源码解析
  • 3. pandas笔记之:创建
  • 如何在Spring Boot中配置自定义端口运行应用程序
  • Linux GPIO驱动开发实战:Poll与异步通知双机制详解
  • 方案研读:106页华为企业架构设计方法及实例【附全文阅读】
  • 在深度学习中FLOPs和GFLOPs的含义及区别
  • 我国首次实现地月距离尺度的卫星激光测距
  • 沈阳市委常委马原出任阜新市委副书记、市政府党组书记
  • 解放日报头版:外资汽车产业链布局上海步伐明显加快
  • 东部战区新闻发言人就美“劳伦斯”号导弹驱逐舰过航台湾海峡发表谈话
  • 外交部回应菲律宾涉仁爱礁言论:菲方7轮运补均提前通报中方
  • “全国十大考古”揭晓:盘龙城遗址、周原遗址入围