暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle RAC Flex ASM 特性测试

原创 心在梦在 2023-06-05
523

Oracle RAC Flex ASM 特性测试

 
 在 Oracle 12c 之前,对于要使用 ASM 的数据库实例来说,所有节点上的 ASM 实例必须已处于运行状态,才能启动数据库实例。如果 ASM 实例未运行,则对应的数据库实例也无法启动。

 Oracle 12c 开始引入Oracle Flex ASM 的特性,解除了上述限制,它的一个主要特性是故障切换到集群中的其他节点。

下面,我们用19c RAC 环境,简单测试一下该特性:

 

1. 查看rac集群模式

[grid@rac1 ~]$ asmcmd showclustermode ASM cluster : Flex mode enabled - Direct Storage Access --> 默认已开启flex特性

2. 查看节点asm实例状态

[grid@rac1 ~]$ srvctl status asm -detail ASM is running on rac2,rac1 -->asm在两个节点上都运行 ASM is enabled. ASM instance +ASM1 is running on node rac1 Number of connected clients: 2 Client names: MESDB1:MESDB:mesdb-cluster rac1:_OCR:mesdb-cluster ASM instance +ASM2 is running on node rac2 Number of connected clients: 2 Client names: MESDB2:MESDB:mesdb-cluster rac2:_OCR:mesdb-cluster

3. 查看数据库实例状态

[grid@rac1 ~]$ srvctl status database -d MESDB -detail Instance MESDB1 is running on node rac1 Instance MESDB1 is connected to ASM instance +ASM1 -->此时节点1上的MESDB1实例连接的是+ASM1 Instance MESDB2 is running on node rac2 Instance MESDB2 is connected to ASM instance +ASM2 -->此时节点2上的MESDB2实例连接的是+ASM2

4. 强制关闭节点1上的asm实例

[grid@rac1 ~]$ ps -ef|grep pmon oracle 2579 1 0 13:36 ? 00:00:00 ora_pmon_MESDB1 grid 11114 9590 0 13:45 pts/11 00:00:00 grep --color=auto pmon grid 15935 1 0 May29 ? 00:00:05 asm_pmon_+ASM1 -- 方法1: [grid@rac1 ~]$ kill -9 15935 [grid@rac1 ~]$ ps -ef|grep pmon oracle 2579 1 0 13:36 ? 00:00:00 ora_pmon_MESDB1 grid 12175 9590 0 13:47 pts/11 00:00:00 grep --color=auto pmon -- 方法2: [root@rac1 ~]# srvctl stop asm -node rac1 -o abort -force [root@rac1 ~]# ps -ef|grep pmon oracle 3828 1 0 14:50 ? 00:00:00 ora_pmon_orcl1 root 7130 108701 0 14:56 pts/3 00:00:00 grep --color=auto pmon

5. 查看asm实例信息

[grid@rac1 ~]$ srvctl status asm ASM is running on rac2 -->此时asm只在节点2上运行 [grid@rac2 ~]$ srvctl status asm -detail ASM is running on rac2 ASM is enabled. ASM instance +ASM2 is running on node rac2 Number of connected clients: 3 Client names: MESDB1:MESDB:mesdb-cluster MESDB2:MESDB:mesdb-cluster rac2:_OCR:mesdb-cluster [grid@rac1 ~]$ srvctl status database -d MESDB -detail Instance MESDB1 is running on node rac1 Instance MESDB1 is connected to ASM instance +ASM2 -->节点1上面的实例MESDB1,不在是连接+ASM1实例,自动切换到节点2上的asm实例+ASM2 Instance MESDB2 is running on node rac2 Instance MESDB2 is connected to ASM instance +ASM2 -->此时节点2上的MESDB2实例连接的仍然是+ASM2

6. 检查节点1上的数据库状态

[oracle@rac1 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Tue May 30 13:52:37 2023 Version 19.19.0.0.0 Copyright (c) 1982, 2022, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.19.0.0.0 SQL> set line222 SQL> select INST_ID,INSTANCE_NAME,STATUS from gv$instance; INST_ID INSTANCE_NAME STATUS ---------- ------------------------------------------------ ------------------------------------ 1 MESDB1 OPEN 2 MESDB2 OPEN SQL> select INST_ID,name,open_mode from gv$database; INST_ID NAME OPEN_MODE ---------- --------------------------- ------------------------------------------------------------ 2 MESDB READ WRITE 1 MESDB READ WRITE

结论:在节点1上数据库实例并未受到影响。 

7. 再次启动节点1的asm实例

[grid@rac1 ~]$ srvctl start asm -node rac1 [grid@rac1 ~]$ srvctl status asm -detail ASM is running on rac2,rac1 --->asm实例又重新恢复,分别在2个节点上都运行 ASM is enabled. ASM instance +ASM1 is running on node rac1 Number of connected clients: 2 Client names: MESDB1:MESDB:mesdb-cluster rac1:_OCR:mesdb-cluster ASM instance +ASM2 is running on node rac2 Number of connected clients: 2 Client names: MESDB2:MESDB:mesdb-cluster rac2:_OCR:mesdb-cluster

8. 再次检查节点1上的数据库状态

--恢复到最初状态 [grid@rac1 ~]$ srvctl status database -d MESDB -detail Instance MESDB1 is running on node rac1 Instance MESDB1 is connected to ASM instance +ASM1 -->此时节点1上的MESDB1实例连接的是+ASM1 Instance MESDB2 is running on node rac2 Instance MESDB2 is connected to ASM instance +ASM2 -->此时节点2上的MESDB2实例连接的是+ASM2

注释:关于停止ASM实例说明

--1) 如果采用方法1 kill 进程的方式,杀死asm实例,那么从集群状态可以看到,asm实例会自动重新启动 [grid@rac1 ~]$ crsctl stat res -t ora.asm(ora.asmgroup) 1 ONLINE OFFLINE rac1 Instance Shutdown,STARTING 2 ONLINE ONLINE rac2 Started ora.MESDB.db 1 ONLINE ONLINE rac1 Open,HOME=/oracle/app/oracle/product/db/191900,STABLE 2 ONLINE ONLINE rac2 Open,HOME=/oracle/app/oracle/product/db/191900,STABLE --2)如果采用方法2,手动停止asm实例,asm 不会自动重新启动,需要手动启动 [grid@rac1 ~]$ crsctl stat res -t ora.asm(ora.asmgroup) 1 OFFLINE OFFLINE Instance Shutdown,STBLE 2 ONLINE ONLINE rac2 Started,STABLE ora.MESDB.db 1 ONLINE ONLINE rac1 Open,HOME=/oracle/app/oracle/product/db/191900,STABLE 2 ONLINE ONLINE rac2 Open,HOME=/oracle/app/oracle/product/db/191900,STABLE
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论