1. Flex ASM说明
Oracle 在12c 中引入Oracle Flex ASM特性, 其可以使ASM实例和数据库实例在不同的节点上运行,而不是之前的ASM实例必须和数据库实例运行在同一个节点上。也就是说当某个节点上的ASM 实例挂掉后,其上的数据库实例还可以正常运行。
在Oracle 12c中,在创建数据库的时候还需要选择是否启用Oracle Flex 集群和Flex ASM, 但是到了18c中,默认就是Flex 集群和Flex ASM,不再需要选择。 下图是12c中使用ASMCA工具将普通ASM 实例转换成Flex ASM。
2. Flex ASM 测试
因为在Oracle 18c 中默认就是Flex ASM。 所以我们这里直接在RAC 环境上测试该功能。
2.1 当前RAC 环境
[grid@www.cndba.cn ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.DATA.dg
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.LISTENER.lsnr
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.MGMT.GHCHKPT.advm
OFFLINE OFFLINE rac1 STABLE
OFFLINE OFFLINE rac2 STABLE
ora.MGMT.dg
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.OCR.dg
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.helper
OFFLINE OFFLINE rac1 IDLE,STABLE
OFFLINE OFFLINE rac2 IDLE,STABLE
ora.mgmt.ghchkpt.acfs
OFFLINE OFFLINE rac1 STABLE
OFFLINE OFFLINE rac2 STABLE
ora.net1.network
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.ons
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ora.proxy_advm
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac2 STABLE
ora.MGMTLSNR
1 ONLINE ONLINE rac2 169.254.11.39 192.16
8.56.101,STABLE
ora.asm
1 ONLINE ONLINE rac1 Started,STABLE
2 ONLINE ONLINE rac2 Started,STABLE
3 OFFLINE OFFLINE STABLE
ora.cndba.db
1 ONLINE ONLINE rac2 Open,HOME=/u01/app/o
racle/product/18.3.0
/db_1,STABLE
2 ONLINE ONLINE rac1 Open,HOME=/u01/app/o
racle/product/18.3.0
/db_1,STABLE
ora.cvu
1 ONLINE ONLINE rac2 STABLE
ora.mgmtdb
1 ONLINE ONLINE rac2 Open,STABLE
ora.qosmserver
1 ONLINE ONLINE rac2 STABLE
ora.rac1.vip
1 ONLINE ONLINE rac1 STABLE
ora.rac2.vip
1 ONLINE ONLINE rac2 STABLE
ora.rhpserver
1 OFFLINE OFFLINE STABLE
ora.scan1.vip
1 ONLINE ONLINE rac2 STABLE
--------------------------------------------------------------------------------
[grid@www.cndba.cn ~]$
[grid@www.cndba.cn ~]$ srvctl -version
srvctl version: 18.0.0.0.0
[grid@www.cndba.cn ~]$ crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
[grid@rac1 ~]$
2.2 查看Flex ASM中实例信息
[grid@www.cndba.cn ~]$ asmcmd showclustermode
ASM cluster : Flex mode enabled - Direct Storage Access
[grid@www.cndba.cn ~]$ asmcmd showclusterstate
Normal
[grid@www.cndba.cn ~]$
[grid@www.cndba.cn ~]$ srvctl status asm -detail
ASM is running on rac1,rac2
ASM is enabled.
ASM instance +ASM1 is running on node rac1
Number of connected clients: 3
Client names: +APX1:+APX:rac cndba1:cndba:rac rac1:_OCR:rac
ASM instance +ASM2 is running on node rac2
Number of connected clients: 4
Client names: +APX2:+APX:rac -MGMTDB:_mgmtdb:rac cndba2:cndba:rac rac2:_OCR:rac
[grid@www.cndba.cn ~]$
[grid@www.cndba.cn ~]$ srvctl config asm -detail
ASM home: <CRS home>
Password file: +OCR/orapwASM
Backup of Password file:
ASM listener: LISTENER
ASM is enabled.
ASM is individually enabled on nodes:
ASM is individually disabled on nodes:
ASM instance count: 3
Cluster ASM listener: ASMNET1LSNR_ASM
[grid@www.cndba.cn ~]$
2.3 模拟ASM 实例故障
SQL>select instance_name,instance_number from gv$instance;
INSTANCE_NAME INSTANCE_NUMBER
-------------------------------- ---------------
cndba1 1
cndba2 2
[grid@www.cndba.cn ~]$ srvctl status database -d cndba -detail
Instance cndba1 is running on node rac1
Instance cndba1 is connected to ASM instance +ASM1
Instance cndba2 is running on node rac2
Instance cndba2 is connected to ASM instance +ASM2
关闭节点1上的ASM 实例
[grid@www.cndba.cn ~]$ ps -ef|grep pmon
grid 8425 12500 0 09:00 pts/2 00:00:00 grep --color=auto pmon
oracle 15875 1 0 06:19 ? 00:00:00 ora_pmon_cndba1
grid 27886 1 0 05:21 ? 00:00:00 asm_pmon_+ASM1
grid 29346 1 0 05:21 ? 00:00:00 apx_pmon_+APX1
[grid@www.cndba.cn ~]$ srvctl stop asm -node rac1 -stopoption abort -force
[grid@www.cndba.cn ~]$ ps -ef|grep pmon
grid 8620 12500 0 09:00 pts/2 00:00:00 grep --color=auto pmon
oracle 15875 1 0 06:19 ? 00:00:00 ora_pmon_cndba1
grid 29346 1 0 05:21 ? 00:00:00 apx_pmon_+APX1
[grid@www.cndba.cn ~]$
此时ASM 实例只在节点2上运行:
[grid@www.cndba.cn ~]$ srvctl status asm
ASM is running on rac2
[grid@www.cndba.cn ~]$ srvctl status database -d cndba -detail
Instance cndba1 is running on node rac1
Instance cndba1 is connected to ASM instance +ASM2
Instance cndba2 is running on node rac2
Instance cndba2 is connected to ASM instance +ASM2
[grid@www.cndba.cn ~]$ srvctl status asm -detail
ASM is running on rac2
ASM is enabled.
ASM instance +ASM2 is running on node rac2
Number of connected clients: 6
Client names: +APX1:+APX:rac +APX2:+APX:rac -MGMTDB:_mgmtdb:rac cndba1:cndba:rac cndba2:cndba:rac rac2:_OCR:rac
[grid@www.cndba.cn ~]$
我们可以看到+ASM2上也运行这节点1上的db 实例。
但是节点1上的数据库实例正常运行:
SQL> select instance_name,instance_number from gv$instance;
INSTANCE_NAME INSTANCE_NUMBER
-------------------------------- ---------------
cndba1 1
cndba2 2
启动节点1上的ASM实例,又恢复原状:
[grid@www.cndba.cn ~]$ srvctl start asm -node rac1
[grid@www.cndba.cn ~]$ srvctl status asm -detail
ASM is running on rac1,rac2
ASM is enabled.
ASM instance +ASM1 is running on node rac1
Number of connected clients: 3
Client names: +APX1:+APX:rac cndba1:cndba:rac rac1:_OCR:rac
ASM instance +ASM2 is running on node rac2
Number of connected clients: 4
Client names: +APX2:+APX:rac -MGMTDB:_mgmtdb:rac cndba2:cndba:rac rac2:_OCR:rac
[grid@www.cndba.cn ~]$
[grid@www.cndba.cn ~]$ srvctl status database -d cndba -detail
Instance cndba1 is running on node rac1
Instance cndba1 is connected to ASM instance +ASM1
Instance cndba2 is running on node rac2
Instance cndba2 is connected to ASM instance +ASM2
通过实验,可以验证任意一个节点的ASM实例的意外关闭/启动,都不会影响该节点上的数据库状态,这极大的增强了RAC的高可用性。
版权声明:本文为博主原创文章,未经博主允许不得转载。