记一次使用ASMLIB标记磁盘导致的数据库系统宕机案例

news2024/11/16 3:33:10

在对某医院HIS数据库环境搜集过程中,发现这套Oracle RAC数据库没有正确使用到multipath提供的多路径磁盘,本着对用户及合作伙伴负责的态度,将过程做一描述说明,以及提出一点解决问题的思路建议。

系统环境:

操作系统为Linux

数据库Oracle 19c

采用ASMLIB创建共享磁盘查看相关信息如下(仅以DATA01为例):

执行multipath -ll命令返回如下

DATA01 (3600507680c80833288000000000000ca) dm-3 IBM   ,2145      
size=500G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=30 status=active
|- 7:0:0:0 sdb       8:16 active ready running
|- 16:0:0:0 sdae       65:224 active ready running
|- 7:0:1:0 sdi       8:128 active ready running
|- 16:0:2:0 sdas       66:192 active ready running
|- 7:0:2:0 sdp       8:240 active ready running
|- 16:0:3:0 sdar       66:176 active ready running
|- 7:0:3:0 sdw       65:96 active ready running
`- 16:0:1:0 sdad       65:208 active ready running
OCR03 (3600507680c80833288000000000000e3) dm-9 IBM   ,2145      
size=5.0G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=30 status=active
|- 7:0:0:6 sdh       8:112 active ready running
|- 16:0:0:6 sdak       66:64 active ready running
|- 7:0:1:6 sdo       8:224 active ready running
|- 16:0:2:6 sday       67:32 active ready running
|- 7:0:2:6 sdv       65:80 active ready running
|- 16:0:3:6 sdbe       67:128 active ready running
|- 7:0:3:6 sdac       65:192 active ready running
`- 16:0:1:6 sdaq       66:160 active ready running
OCR02 (3600507680c80833288000000000000e2) dm-8 IBM   ,2145      
size=5.0G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=30 status=active
|- 7:0:0:5 sdg       8:96 active ready running
|- 16:0:0:5 sdaj       66:48 active ready running
|- 7:0:1:5 sdn       8:208 active ready running
|- 16:0:2:5 sdax       67:16 active ready running
|- 7:0:2:5 sdu       65:64 active ready running
|- 16:0:3:5 sdbd       67:112 active ready running
|- 7:0:3:5 sdab       65:176 active ready running
`- 16:0:1:5 sdap       66:144 active ready running
OCR01 (3600507680c80833288000000000000e1) dm-7 IBM   ,2145      
size=5.0G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=30 status=active
|- 7:0:0:4 sdf       8:80 active ready running
|- 16:0:0:4 sdai       66:32 active ready running
|- 7:0:1:4 sdm       8:192 active ready running
|- 16:0:2:4 sdaw       67:0 active ready running
|- 7:0:2:4 sdt       65:48 active ready running
|- 16:0:3:4 sdbc       67:96 active ready running
|- 7:0:3:4 sdaa       65:160 active ready running
`- 16:0:1:4 sdao       66:128 active ready running
DATA04 (3600507680c80833288000000000000cd) dm-6 IBM   ,2145      
size=500G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=30 status=active
|- 7:0:0:3 sde       8:64 active ready running
|- 16:0:0:3 sdah       66:16 active ready running
|- 7:0:1:3 sdl       8:176 active ready running
|- 16:0:2:3 sdav       66:240 active ready running
|- 7:0:2:3 sds       65:32 active ready running
|- 16:0:3:3 sdbb       67:80 active ready running
|- 7:0:3:3 sdz       65:144 active ready running
`- 16:0:1:3 sdan       66:112 active ready running
DATA03 (3600507680c80833288000000000000cc) dm-5 IBM   ,2145      
size=500G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=30 status=active
|- 7:0:0:2 sdd       8:48 active ready running
|- 16:0:0:2 sdag       66:0 active ready running
|- 7:0:1:2 sdk       8:160 active ready running
|- 16:0:2:2 sdau       66:224 active ready running
|- 7:0:2:2 sdr       65:16 active ready running
|- 16:0:3:2 sdba       67:64 active ready running
|- 7:0:3:2 sdy       65:128 active ready running
`- 16:0:1:2 sdam       66:96 active ready running
DATA02 (3600507680c80833288000000000000cb) dm-4 IBM   ,2145      
size=500G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=30 status=active
|- 7:0:0:1 sdc       8:32 active ready running
|- 16:0:0:1 sdaf       65:240 active ready running
|- 7:0:1:1 sdj         8:144 active ready running
|- 16:0:2:1 sdat       66:208 active ready running
|- 7:0:2:1 sdq       65:0 active ready running
|- 16:0:3:1 sdaz       67:48 active ready running
|- 7:0:3:1 sdx         65:112 active ready running
`- 16:0:1:1 sdal       66:80 active ready running


查看multipath.conf配置文件

defaults {
polling_interval 10
path_selector   "round-robin 0"
path_grouping_policy multibus
uid_attribute   ID_SERIAL
prio     alua
path_checker   readsector0
rr_min_io   100
max_fds     8192
rr_weight   priorities
failback   immediate
no_path_retry   fail
user_friendly_names yes
}
multipaths {
multipath {      
  wwid     3600507680c80833288000000000000ca
  alias     DATA01
  path_grouping_policy multibus
  path_selector   "round-robin 0"
  failback   manual
  rr_weight   priorities
  no_path_retry   5
}
multipath {
  wwid     3600507680c80833288000000000000cb
  alias     DATA02
  path_grouping_policy multibus
  path_selector   "round-robin 0"
  failback   manual
  rr_weight   priorities
  no_path_retry   5
}
multipath {
  wwid     3600507680c80833288000000000000cc
  alias     DATA03
  path_grouping_policy multibus
  path_selector   "round-robin 0"
  failback   manual
  rr_weight   priorities
  no_path_retry   5
}
multipath {
  wwid     3600507680c80833288000000000000cd
  alias     DATA04
  path_grouping_policy multibus
  path_selector   "round-robin 0"
  failback   manual
  rr_weight   priorities
  no_path_retry   5
}
multipath {
  wwid     3600507680c80833288000000000000e1
  alias     OCR01
  path_grouping_policy multibus
  path_selector   "round-robin 0"
  failback   manual
  rr_weight   priorities
  no_path_retry   5
}
multipath {
  wwid     3600507680c80833288000000000000e2
  alias     OCR02
  path_grouping_policy multibus
  path_selector   "round-robin 0"
  failback   manual
  rr_weight   priorities
  no_path_retry   5
}
multipath {
  wwid     3600507680c80833288000000000000e3
  alias     OCR03
  path_grouping_policy multibus
  path_selector   "round-robin 0"
  failback   manual
  rr_weight   priorities
  no_path_retry   5
}
}
blacklist {
wwid 36f4ee08029ce6e002a007008d5711e3b
}

查看ASM信息

col path for a30
col name for a10
set line 300
SQL> select mode_status,name,state,path from v$asm_disk;
MODE_STATUS     NAME   STATE       PATH
--------------------- ---------- ------------------------ ---------------------------
ONLINE       OCR_0000 NORMAL     /dev/oracleasm/disks/OCR01
ONLINE       OCR_0001 NORMAL     /dev/oracleasm/disks/OCR02
ONLINE       OCR_0002 NORMAL     /dev/oracleasm/disks/OCR03
ONLINE       DATA_0003 NORMAL     /dev/oracleasm/disks/DATA04
ONLINE       DATA_0002 NORMAL     /dev/oracleasm/disks/DATA03
ONLINE       DATA_0001 NORMAL     /dev/oracleasm/disks/DATA02
ONLINE       DATA_0000 NORMAL     /dev/oracleasm/disks/DATA01
7 rows selected.
SQL> show parameter asm_disk
NAME         TYPE         VALUE
------------------------------------ --------------------------------- ------------
asm_diskgroups       string         DATA
asm_diskstring       string         /dev/oracleasm/disks/*

图片

图片

可以看到,8个盘的标签都是DATA01,其中sdb、sdi、sdp、sdw、sdae、sdar、sdas、sdad为单路径,8个路径绑定成了DATA01,当前正使⽤着[8, 16]这个设备,这个设备为sdb。

查看设备的主设备号和次设备号,看这个设备是对应到/dev/目录下的那个设备时,发现/dev/oracleasm/disks下面的盘不是对应到/dev/dm-xx盘,由此基本确定了asmlib没有使用多路径的盘。

ASMLIB包的基本原理是对盘起一个名字,如“DATA01”然后把这个名字存入磁盘的内容的头部。下次机器自动启动时,会自动运行/etc/rc.d/init.d/oracleasm start,这时会自动扫描硬盘,扫描过程中,是会读前面我们写入名称,由于使用了多路径,那么在/dev/下会有几个设备名对应着同一个硬盘,其中/dev/sdxxx的是各个路径盘,/dev/dm-xx是把这些路径合并了一个盘,正常情况下oracle会要求ASMLIB使用/dev/dm-xx盘,但ASMLIB的扫描规则是使用最先扫描到的盘,后面再扫描到的设备,只要上面的名称与前面相同,就使用前面的设备名,不管再次扫描到的了。由此极有可能导致链路宕掉随之而来ASM卷组盘也掉了,进而引发数据文件损坏或者宕机。其实oracle的官方网站也说明了此问题。

Metalink Note<How To Setup ASM & ASMLIB On Native Linux Multipath Mapper disks?

[ID 602952.1]

ASMLIB Installation & Configuration On MultiPath Mapper Devices (Step by Step Demo) On RAC Or Standalone Configurations. (文档 ID 1594584.1)

建议修改/etc/sysconfig/oracleasm(oracleasm-_dev_oracleasm)配置文中ORACLEASM_SCANORDER及ORACLEASM_SCANEXCLUDE,以便ASMLIB能找到正确的设备文件

 Configure ASMLIB to use multipath  (from each node on RAC environments):

By any path the ASMLIB can found the disks, but, the best path is using the multipath :

Modify in /etc/sysconfig/oracleasm :
ORACLEASM_SCANORDER=”dm”
ORACLEASM_SCANEXCLUDE=”sd”

note: The Oracle ASMLib configuration file is located at /etc/sysconfig/oracleasm. It is a link to file /etc/sysconfig/oracleasm-_dev_oracleasm.

Restart ASMLIB (from each node on RAC environments):
/etc/init.d/oracleasm stop
/etc/init.d/oracleasm start

参考链接:

http://www.help2ora.com/index.php/2011/08/16/how-to-setup-asm-asmlib-on-native-linux-multipath-mapper-disks/

https://www.oracle.com/linux/technologies/multipath-disks.html

如有可能尽量采用udev绑定,因为Oracle官方也建议RedHat/OLE 5以上建议采用udev。因为采用ASMLIB包的形式,只要Linux Kernel更新,都需要替换新的ASMLIB包,这就意味着ASMLIB需要花费时间去维护,同时可能引入未知的Bug。

也欢迎关注我的公众号【徐sir的IT之路】,一起学习!
————————————————————————————
公众号:徐sir的IT之路
CSDN :https://blog.csdn.net/xxddxhyz?type=blog
墨天轮:https://www.modb.pro/u/3605
PGFANS:https://www.pgfans.cn/user/home?userId=5568
————————————————————————————

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1436073.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第八届:世界3D渲染挑战赛《无尽阶梯》正式开启

全世界的3D艺术创作者们引颈期盼的盛事“全球3D渲染艺术大奖赛”已迈入第八个年头。本届比赛的主题为“无尽的阶梯”&#xff0c;参赛者们可通过挑战赛展现自身的创造力&#xff0c;比赛在行业内拥有极高的知名度&#xff0c;含金量十足&#xff0c;参赛这可通过这里提高自己在…

[React] ref属性

简介 ref 即 reference &#xff0c;是 React 提供给我们的安全访问 DOM 元素或者某个组件实例的句柄。 组件被调用时会新建一个该组件的实例&#xff0c;而 ref 就会指向这个实例。它可以是一个回调函数&#xff0c;这个回调函数会在组件被挂载后立即执行。 为了防止内存泄漏…

【C语言】贪吃蛇 详解

该项目需要的技术要点 C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32API等。 由于篇幅限制 和 使知识模块化&#xff0c; 若想了解 使用到的 Win32API 的知识&#xff1a;请点击跳转&#xff1a;【Win32API】贪吃蛇会使用到的 Win32API 目录 1. 贪吃蛇游…

配置Jenkins自动构建打包项目

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 需求说明 1、给A项目配置jenkins每2小时无条件自动构建一次&#xff0c;无论是否有代码提交。 2、给B项目配置jenkins每15分钟检…

如何在Mac上允许主流浏览器使用弹出式窗口?这里有详细步骤

这篇文章教你如何关闭流行的Mac浏览器上的弹出窗口阻止程序,包括Safari、Chrome和Firefox。它还探讨了你可能希望这样做的原因及其影响。 如何在Mac上允许Safari使用弹出窗口 如果你经常在Mac上使用Safari,你会注意到默认情况下弹出窗口阻止程序是打开的。有时,这并不方便…

Python进阶----在线翻译器(Python3的百度翻译爬虫)

目录 一、此处需要安装第三方库requests: 二、抓包分析及编写Python代码 1、打开百度翻译的官网进行抓包分析。 2、编写请求模块 3、输出我们想要的消息 三、所有代码如下&#xff1a; 一、此处需要安装第三方库requests: 在Pycharm平台终端或者命令提示符窗口中输入以下代…

Springboot集成jasypt实现配置文件加密

Jasypt它提供了单密钥对称加密和非对称加密两种加密方式。 单密钥对称加密&#xff1a;一个密钥加盐&#xff0c;可以同时用作内容的加密和解密依据&#xff1b; 非对称加密&#xff1a;使用公钥和私钥两个密钥&#xff0c;才可以对内容加密和解密&#xff1b; 我们以单密钥对称…

鸿蒙内核框架

1 内核概述 内核简介 用户最常见到并与之交互的操作系统界面&#xff0c;其实只是操作系统最外面的一层。操作系统最重要的任务&#xff0c;包括管理硬件设备&#xff0c;分配系统资源等&#xff0c;我们称之为操作系统内在最重要的核心功能。而实现这些核心功能的操作系统模…

Android ImageView 设置圆角及外边框样式

github地址&#xff1a;GitHub - WeiLianYang/RoundImageView: &#x1f525;&#x1f525;&#x1f525;用于设置 ImageView 的 圆角、外边框颜色、外边框宽度 添加依赖 repositories {mavenCentral() } implementation io.github.weilianyang:RoundImageView:1.0.2 效果预…

Dijkstra算法(求最短路)

简介&#xff1a; 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的&#xff0c;因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法&#xff0c;解决的是有权图中最短路径问题。 特点&#xff1a; 迪杰斯特拉算法采用的是一种贪心策略&a…

nginx简单配置四种携带/时的拼接关系

代理静态文件&#xff08;代理路径后缀与被代理的路径后缀不相同&#xff09; 1、 当 location 尾部有 /&#xff0c;且代理地址尾部也有 / 时&#xff1a; location /test11/ {root /usr/local/nginx/html/; } 则访问 http://ip/test11/aaa&#xff0c;实际访问的是/us…

Linux环境下配置mysql主从复制

主从配置需要注意的地方 1、主DB server和从DB server数据库的版本一致 2、主DB server和从DB server数据库数据一致[这里就会可以把主的备份在从上还原&#xff0c;也可以直接将主的数据目录拷贝到从的相应数据目录] 3、主DB server开启二进制日志,主DB server和从DB serve…

使用esp32 cam + SR602人体感应模块制作一个小型的监控

需求&#xff1a; 做一个小型的监控&#xff0c;类似电子猫眼&#xff0c;监测到人之后&#xff0c;取一张图 然后发送到自己的邮箱。 架构&#xff1a; 1.sr602 传感器监测到人 2. esp32 cam 取图 并通过mqtt协议传到远端服务器 3, 服务器利用python 搭建一个mqtt客户端&…

dump分析方法

一、关于dump 1、什么是dump 在计算机领域中&#xff0c;术语“dump”通常用来指代将某种数据以某种格式进行转储或导出的过程。这个术语可以用于多种不同的上下文&#xff0c;下面是一些常见的情况&#xff1a; 内存转储&#xff08;Memory Dump&#xff09;&#xff1a;在…

GRUB2 致力于 TPM2 自动磁盘解锁、TrenchBoot 等

Oracle 的 Daniel Kiper 提供了当前 GRUB 引导加载程序开发活动的状态更新、未来展望以及预计在 11 月份发布下一个版本的计划。 Kiper 本周末出席了在布鲁塞尔举行的 FOSDEM 2024&#xff0c;再次提供有关 GRUB 的状态更新。 早在 12 月&#xff0c;GRUB 2.12 就发布了&#…

09_树莓派_树莓派外设板_GPIO_按键的中断与消抖

目录 1.树莓派外设集成板总体介绍 2.第一部分 按键矩阵 GPIO_按键与中断 3.实现效果 1.树莓派外设集成板总体介绍 1&#xff09;前言&#xff1a;这是一块为了验证树莓派【兼容树莓派多个型号】的40pins的外设接口的外接板&#xff0c;告别复杂的面包板外设搭建。【欢迎各位…

Allegro如何把Symbols,shapes,vias,Clines,Cline segs等多种元素一起移动

Allegro如何把Symbols,shapes,vias,Clines,Cline segs等多种元素一起移动 在用Allegro进行PCB设计时,有时候需要同时移动某个区域的所有元素,如:Symbols,shapes,vias,Clines,Cline segs等元素。那么如何操作呢? 首先就是把Symbols,shapes,vias,Clines,Cline …

速度规划:s形曲线------pencv c++绘图(1)

理论篇 代码篇&#xff1a; opencv环境配置 注意&#xff01;注意&#xff01;注意&#xff01; 配置结束后运行环境切换为如下再运行&#xff1a; #include <iostream> #include <cmath>#include <opencv2/opencv.hpp>using namespace std;double a_max…

2023年03月CCF-GESP编程能力等级认证C++编程二级真题解析

一、单选题(每题2分,共30分) 第1题 以下存储器中的数据不会受到附近强磁场干扰的是( )。 A.硬盘 B.U盘 C.内存 D.光盘 答案:D 第2题 下列流程图,属于计算机的哪种程序结构?( )。 A.顺序结构 B.循环结构 C.分支结构 D.数据结构 答案:C 第3题 下列关…

IT行业针对大数据的安全文件传输的重要性

在数字化浪潮的推动下&#xff0c;数据已成为现代社会的宝贵资源。特别是大数据&#xff0c;以其海量、多样化、高速增长和低价值密度的特性&#xff0c;对信息技术&#xff08;IT&#xff09;行业产生了深远影响。大数据的应用不仅推动了云计算、物联网和人工智能等领域的发展…