Oracle 数据库现在大部分都用 ASM 管理磁盘,在操作系统上不能直观看出盘是否是 ASM Disk 。因此我们一般会在安装 Oracle 配置 ASM 前将盘改个特定字符串开头的名字,以便系统开发和运维人员一眼就能看出它们是 Oracle ASM Disk 。
那如果在安装 Oracle 配置 ASM 前没有改名怎么办?做 IT 运维都是整天战战兢兢如履薄冰。要是哪天被不知情的同事把 ASM 用到的磁盘格了,导致生产系统故障,需要面对长时间从备份恢复数据 或者 丢失部分数据的话, DBA 面临的可就是 “ 被 ” 删库不得不跑路了。
Oracle 中给已有 ASM_Diskgroup 中磁盘改名也是比较 easy 的。以 Oracle RAC on AIX 为例, AIX 上缺省磁盘名都是 hdiskXX ,我们可以 rendev 命令对盘进行改名( Linux 系统上用 UDEV 实现)。既然要对底层盘改名,那最好是有一个短暂的数据库停机时间窗口。如果没有停机时间窗口, Oracle RAC 逐个节点操作,完成在线改名,步骤如下:
在 Oracle RAC 节点 1 上找出 ASM 用到的盘,比如本例中 ASM Diskgroup OCRDG 用的 hdisk7, hdisk8, hdisk9
停止 Oracle RAC 节点 1 上数据库实例,然后再停止节点 1 上所有服务 (/oracle/grid/bin/crsctl stop crs -f) ,确保节点 1 上服务都漂移到了节点 2
节点 1 用 rendev 将盘改成新名字(这里对新命名盘还用 hdisk 前缀,这条很重要,后面我们详细说明),主要改名后宿主和权限变了,要用 chmod,chown 改回来
启动 Oracle RAC 节点 1 集群服务 (/oracle/grid/bin/crsctl start crs)
启动 Oracle RAC 节点 1 数据库实例
把数据库服务从节点 2 移回节点 1
对 Oracle RAC 节点 2 ,重复上述第 1- 第 6 步,完成对节点 2 上 ASM diskgroup 中盘的改名
我们再来说说对新命名盘为什么还要用 hdisk 前缀,比如上面示例中改名为 hdisk_ora_ocr1, hdisk_ora_ocr2, hdisk_ora_ocr3 。如果不用 hdisk 前缀,直接改名为 ora_ocr1, ora_ocr2, ora_ocr3 行不行?答案是这样会很麻烦。
Oracle RAC 从 11gR2 开始,把 GI(Grid Infrastructure) 集群的配置信息存在 本地,并启用了一个很重要的守护进程( gpnpd ),相应的配置文件则存在 $GRID_HOME/gpnp/hostname/profiles/peer/profile.xml 。Oracle 依据这个配置文件中 DiscoveryString="/dev/rhdisk*" 找 ASM OCR 所在盘,然后启动集群 ASM 。如果把盘名前缀改成了非 hdisk 开头,则需要修正这个 profile.xml ,而这个 profile.xml 有 wallet 机制保护,不能直接编辑,需要用 Oracle gpnptool 工具去改,想想是不是有点麻烦。
做运维讲究大道至简,不能也没必要把问题搞得更复杂(如果出于好奇想研究研究,您可以参考 Oracle DOC: https://community.oracle.com/docs/DOC-1006976 )。AIX 上盘名最长可达 15 个字符,前缀依然用 hdisk ,后面还有 10 个字符,应该足够表达 ASM 盘的用途了。这样就可以轻松改好已有 ASM diskgroup 盘的名字,再也不用担心误操作 “ 被 ” 删库跑路了。
如有任何问题,可点击文末阅读原文,到社区原文下留言探讨
觉得本文有用,请转发、点赞或点击“在看”,让更多同行看到
点击阅读原文关注社区 “数据库”技术主题 ,将会不断更新优质资料、文章,您也可以前往提出疑难问题,与同行切磋交流。地址:https://www.talkwithtrend.com/Channel/597
下载 twt 社区客户端 APP
长按识别二维码即可下载
或到应用商店搜索“twt”
*本公众号所发布内容仅代表作者观点,不代表社区立场