lisongqing
作者lisongqing联盟成员·2020-07-01 16:19
软件架构设计师·IPS

如何给Oracle已有ASM_Diskgroup中磁盘改名

字数 1613阅读 5257评论 0赞 2

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 逐个节点操作,完成在线改名,步骤如下:

  1. 在 Oracle RAC 节点 1 上找出 ASM 用到的盘,比如本例中 ASM Diskgroup OCRDG 用的 hdisk7, hdisk8, hdisk9
  2. 停止 Oracle RAC 节点 1 上数据库实例,然后再停止节点 1 上所有服务 (/oracle/grid/bin/crsctl stop crs -f) ,确保节点 1 上服务都漂移到了节点 2
  3. 节点 1 用 rendev 将盘改成新名字(这里对新命名盘还用 hdisk 前缀,这条很重要,后面我们详细说明),主要改名后宿主和权限变了,要用 chmod,chown 改回来
  4. 启动 Oracle RAC 节点 1 集群服务 (/oracle/grid/bin/crsctl start crs)
  5. 启动 Oracle RAC 节点 1 数据库实例
  6. 把数据库服务从节点 2 移回节点 1
  7. 对 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 盘的名字,再也不用担心误操作 “ 被 ” 删库跑路了。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广