How to Convert Standard ASM to Flex ASM using the Command Line Interface

    Sep 22, 2017 2:21:27 PM by Skant Gupta

    Prior to the Oracle Database 12c release, every node in a cluster used to run an ASM (Automatic Storage Management) instance and if an ASM instance failed on any node, then the database would become unavailable on that node. Let’s see how things are different with Flex ASM:

    1. Not all the nodes in the cluster need to run an ASM instance. Starting with 12c we can have ASM running on just a subset of nodes in the cluster. The nodes running ASM are known as Flex ASM nodes and the other nodes are referred to as ASM client nodes. ASM clients communicate with Flex ASM nodes to get the metadata and then get the data from the disk to the database instance.
    2. If ASM fails on a node on which it is running, Oracle automatically starts a replacement ASM instance on a different server based on the ASM cardinality set. The active Oracle 12c database instances that were relying on that ASM instance will reconnect to another surviving ASM instance on a different server without disruption.

    In this article I will show you how to convert Standard ASM to Flex ASM using the command line interface. The main advantage of using the CLI to convert to Flex ASM is that it is a faster method than using the GUI. Moreover, many of the big enterprises don’t have access to GUI Mode, there we need to learn CLI method as well.

    To do this, you must have your ASM configured in Oracle 12c or prior. You can check this using the following commands:

    [grid@cloud-rac1 ~]$ asmcmd showclustermode
    ASM cluster : Flex mode disabled
     
    [grid@cloud-rac1 ~]$ asmcmd showclusterstate
    Normal
     
    [grid@cloud-rac1 ~]$ asmcmd showversion
    ASM version         : 12.1.0.2.0
     
    [grid@cloud-rac1 ~]$ srvctl config asm
    ASM home: <CRS home>
    Password file: +DATA/orapwASM
    ASM listener: LISTENER

    If you are in that state, then you can proceed with the commands below.

    We need to know the name of network adapter.

    [grid@cloud-rac1 ~]$ ifconfig -a
    eth0      Link encap:Ethernet  HWaddr C6:B0:BA:B1:B8:BA
              inet addr:10.196.187.2  Bcast:10.196.187.3  Mask:255.255.255.252
              UP BROADCAST RUNNING MULTICAST  MTU:9000  Metric:1
              RX packets:826898 errors:0 dropped:0 overruns:0 frame:0
              TX packets:799778 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:653232940 (622.9 MiB)  TX bytes:522017847 (497.8 MiB)
     
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:229283 errors:0 dropped:0 overruns:0 frame:0
              TX packets:229283 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:110916998 (105.7 MiB)  TX bytes:110916998 (105.7 MiB)

    As we check, eth0 has public interconnect without asm.

    [grid@cloud-rac1 ~]$ oifcfg getif
    eth0  *  global  cluster_interconnect,public

    Now we invoke asmca in silent mode with the following set of parameters.

    [grid@cloud-rac1 ~]$ asmca -silent -convertToFlexASM -asmNetworks eth0/10.196.187.0 -asmListenerPort 1521

    To complete ASM conversion, run the following script as privileged user onthe node where you raised ASMCA with the root user; this node is called the "local node".

    /u01/app/grid/cfgtoollogs/asmca/scripts/converttoFlexASM.sh
     
    [opc@cloud-rac1 ~]$ sudo su - root
    [root@cloud-rac1 ~]# /u01/app/grid/cfgtoollogs/asmca/scripts/converttoFlexASM.sh
    CRS-2673: Attempting to stop 'ora.crsd' on 'cloud-rac1'
    CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'cloud-rac1'
    CRS-2673: Attempting to stop 'ora.testrac.db' on 'cloud-rac1'
    CRS-2673: Attempting to stop 'ora.REDO.dg' on 'cloud-rac1'
    CRS-2673: Attempting to stop 'ora.DATA.dg' on 'cloud-rac1'
    CRS-2673: Attempting to stop 'ora.cvu' on 'cloud-rac1'
    CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'cloud-rac1'
    CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'cloud-rac1'
    CRS-2673: Attempting to stop 'ora.FRA.dg' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.cvu' on 'cloud-rac1' succeeded
    CRS-2672: Attempting to start 'ora.cvu' on 'cloud-rac2'
    CRS-2677: Stop of 'ora.REDO.dg' on 'cloud-rac1' succeeded
    CRS-2677: Stop of 'ora.DATA.dg' on 'cloud-rac1' succeeded
    CRS-2677: Stop of 'ora.FRA.dg' on 'cloud-rac1' succeeded
    CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.scan1.vip' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.cloud-rac1.vip' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.scan1.vip' on 'cloud-rac1' succeeded
    CRS-2677: Stop of 'ora.cloud-rac1.vip' on 'cloud-rac1' succeeded
    CRS-2676: Start of 'ora.cvu' on 'cloud-rac2' succeeded
    CRS-2677: Stop of 'ora.testrac.db' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.data.data.acfs' on 'cloud-rac1'
    CRS-2673: Attempting to stop 'ora.fra.fra.acfs' on 'cloud-rac1'
    CRS-2673: Attempting to stop 'ora.redo.redo.acfs' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.redo.redo.acfs' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.REDO.REDO.advm' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.REDO.REDO.advm' on 'cloud-rac1' succeeded
    CRS-2677: Stop of 'ora.data.data.acfs' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.redo.redo.acfs' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.redo.redo.acfs' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.REDO.REDO.advm' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.REDO.REDO.advm' on 'cloud-rac1' succeeded
    CRS-2677: Stop of 'ora.data.data.acfs' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.redo.redo.acfs' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.redo.redo.acfs' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.REDO.REDO.advm' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.REDO.REDO.advm' on 'cloud-rac1' succeeded
    CRS-2677: Stop of 'ora.data.data.acfs' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.redo.redo.acfs' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.redo.redo.acfs' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.REDO.REDO.advm' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.REDO.REDO.advm' on 'cloud-rac1' succeeded
    CRS-2677: Stop of 'ora.data.data.acfs' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.DATA.DATA.advm' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.DATA.DATA.advm' on 'cloud-rac1' succeeded
    CRS-2677: Stop of 'ora.fra.fra.acfs' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.FRA.FRA.advm' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.FRA.FRA.advm' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.ons' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.ons' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.net1.network' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.net1.network' on 'cloud-rac1' succeeded
    CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'cloud-rac1' has completed
    CRS-2677: Stop of 'ora.crsd' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.ctssd' on 'cloud-rac1'
    CRS-2673: Attempting to stop 'ora.evmd' on 'cloud-rac1'
    CRS-2673: Attempting to stop 'ora.storage' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.storage' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.asm' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.ctssd' on 'cloud-rac1' succeeded
    CRS-2677: Stop of 'ora.evmd' on 'cloud-rac1' succeeded
    CRS-2677: Stop of 'ora.asm' on 'cloud-rac1' succeeded
    CRS-2673: Attempting to stop 'ora.cssd' on 'cloud-rac1'
    CRS-2677: Stop of 'ora.cssd' on 'cloud-rac1' succeeded
    CRS-2672: Attempting to start 'ora.evmd' on 'cloud-rac1'
    CRS-2672: Attempting to start 'ora.cssdmonitor' on 'cloud-rac1'
    CRS-2676: Start of 'ora.cssdmonitor' on 'cloud-rac1' succeeded
    CRS-2672: Attempting to start 'ora.cssd' on 'cloud-rac1'
    CRS-2672: Attempting to start 'ora.diskmon' on 'cloud-rac1'
    CRS-2676: Start of 'ora.diskmon' on 'cloud-rac1' succeeded
    CRS-2676: Start of 'ora.evmd' on 'cloud-rac1' succeeded
    CRS-2676: Start of 'ora.cssd' on 'cloud-rac1' succeeded
    CRS-2672: Attempting to start 'ora.ctssd' on 'cloud-rac1'
    CRS-2676: Start of 'ora.ctssd' on 'cloud-rac1' succeeded
    CRS-2672: Attempting to start 'ora.asm' on 'cloud-rac1'
    CRS-2676: Start of 'ora.ctssd' on 'cloud-rac1' succeeded
    CRS-2672: Attempting to start 'ora.asm' on 'cloud-rac1'
    CRS-2676: Start of 'ora.asm' on 'cloud-rac1' succeeded
    CRS-2672: Attempting to start 'ora.storage' on 'cloud-rac1'
    CRS-2676: Start of 'ora.storage' on 'cloud-rac1' succeeded
    CRS-2672: Attempting to start 'ora.crsd' on 'cloud-rac1'
    CRS-2676: Start of 'ora.crsd' on 'cloud-rac1' succeeded
    Oracle Grid Infrastructure restarted in node cloud-rac1
    PRCC-1014 : ASMNET1LSNR_ASM was already running
    PRCR-1004 : Resource ora.ASMNET1LSNR_ASM.lsnr is already running
    PRCR-1079 : Failed to start resource ora.ASMNET1LSNR_ASM.lsnr
    CRS-5702: Resource 'ora.ASMNET1LSNR_ASM.lsnr' is already running on 'cloud-rac1'
    CRS-5702: Resource 'ora.ASMNET1LSNR_ASM.lsnr' is already running on 'cloud-rac2'
    ASM listener ASMNET1LSNR_ASM running already
    CRS-4405: The following nodes are unknown to Oracle High Availability Services:
    cloud-rac2
    CRS-4405: The following nodes are unknown to Oracle High Availability Services:
    cloud-rac2
    Oracle Grid Infrastructure restarted in node cloud-rac2

    After completion of the script, you must verify the cluster mode.

    [grid@cloud-rac1 ~]$ asmcmd showclustermode
    ASM cluster : Flex mode enabled
    [grid@cloud-rac1 ~]$ asmcmd showversion
    ASM version         : 12.1.0.2.0
    [grid@cloud-rac1 ~]$ srvctl config asm
    ASM home: <CRS home>
    Password file: +DATA/orapwASM
    ASM listener: LISTENER
    ASM instance count: ALL
    Cluster ASM listener: ASMNET1LSNR_ASM
    [grid@cloud-rac1 ~]$

    As we see now eth0 is also connected with asm listener.

    [grid@cloud-rac1 ~]$ oifcfg getif
    eth0  *  global  cluster_interconnect,public
    eth0  10.196.187.0  global  asm

    As you can see, it is easy to convert Standard ASM to Flex ASM in Oracle 12c. Once you’ve converted to Flex ASM you don’t need worry about ASM failure on any node. And, you don’t need to be in GUI mode for this conversion.

    Tags: Oracle

    Skant Gupta

    Written by Skant Gupta

    Skant Gupta is an Oracle Certified Cloud Professional in Oracle Database 12c, an Oracle Certified Expert in Oracle Real Application Clusters (Oracle RAC) in Oracle Database 11g and 12c, and an Oracle Exadata Certified and an Oracle Certified Professional in Oracle Database 10g, 11g, and 12c. He works at Vodafone Technology in the UK and formerly worked as a senior DBA at Etisalat in Dubai. He has six years of experience with various Oracle technologies, focusing mainly on Cloud, database, and high availability solutions, Oracle WebLogic Suite, Oracle Exadata and Oracle GoldenGate. He has presented at several Oracle user groups worldwide, most recently in the US, the United Arab Emirates, and the India. He is also Technical Writer on http://www.oracle.com/technetwork/es/articles/index.html and http://www.oracle.com/technetwork/pt/articles/index.html with more than 30 article published in Oracle Technical Network.