Subscribe to Posts by Email

Subscriber Count

    696

Disclaimer

All information is offered in good faith and in the hope that it may be of use for educational purpose and for Database community purpose, but is not guaranteed to be correct, up to date or suitable for any particular purpose. db.geeksinsight.com accepts no liability in respect of this information or its use. This site is independent of and does not represent Oracle Corporation in any way. Oracle does not officially sponsor, approve, or endorse this site or its content and if notify any such I am happy to remove. Product and company names mentioned in this website may be the trademarks of their respective owners and published here for informational purpose only. This is my personal blog. The views expressed on these pages are mine and learnt from other blogs and bloggers and to enhance and support the DBA community and this web blog does not represent the thoughts, intentions, plans or strategies of my current employer nor the Oracle and its affiliates or any other companies. And this website does not offer or take profit for providing these content and this is purely non-profit and for educational purpose only. If you see any issues with Content and copy write issues, I am happy to remove if you notify me. Contact Geek DBA Team, via geeksinsights@gmail.com

Pages

12c Database : ASM Enhancements : FlexASM – Overview

Flex ASM is a new architecture in Oracle Cluster/Grid Infrastructure where you can reduce the foot print of ASM instances in the cluster. I.e you really do not need 4 ASM instances for 4 Nodes.

In addition to above, Flex ASM also alleviate the problem of RDBMS instance dependency on ASM instance. For instance, if an ASM instance is down in a node , all of the rdbms instances in that node will fail and down.

To understand how this works. we just need to get some brief on leaf nodes and hub nodes.

In a clustered environment (Now oracle Flexcluster), Oracle now expands the capability of monitoring and managing the middleware layer through grid infrastructure i.e if you have oracle ebs instances as your middleware those also can be part of your cluster but having less priority those are called leaf nodes. Hub nodes in the contrast are high priority like RDBMS instances or ASM instances etc.

Coming back to the Flex ASM, asm disks can be mounted across this hub nodes for example a group of nodes called as a hub and managed by certain set of asm instances and so on with either a separate ASM private network or with private cluster interconnect. The ASM instances itself now acts as clients to its ASM instances in flex asm mode, as the one of the hub nodes really not running the asm instance rather connected as a client to other hub node and uses that asm instance remotely In order to achieve this, you will need to have special considerations on your RAC Cluster.

ASM network

With Flex ASM Oracle 12c, a new type of network is called the ASM network. it is used for communication between ASM and its clients and is accessible on all the nodes. All ASM clients in the cluster have access to one or ore ASM network. Also it is possible to configure single network can perform both function as a private and an ASM network

ASM Listeners

To support FLex ASM, a set of ASM listeners are configured for every ASM network. Up to three ASM listener addresses are registred as remote listeners in each client database instance. All clients connections are load balanced across the entire set of ASM instances
        ora.ASMNET1LSNR_ASM.lsnr
                        ONLINE  ONLINE       Geek DBA12c-rac01                STABLE
                        ONLINE  ONLINE       Geek DBA12c-rac02                STABLE
                        ONLINE  ONLINE       Geek DBA12c-rac03                STABLE    

ADVM Proxy

ASM Dynamic Volume Manager (ADVM) Proxy is a special Orale instance.  It enables ADVM to connect to Flex ASM and is required to run on the same node as ADVM and ACFS. It can be shutdown when ACFS is not running
                ora.proxy_advm
                               
                NAME                           TARGET     STATE           SERVER       STATE_DETAILS   
                -------------------------      ---------- ----------      ------------ ------------------
                Name       Target          State        Server State
                ora.proxy_advm                 ONLINE     ONLINE          Geek DBA12c-rac01       STABLE 
                ora.proxy_advm                 ONLINE     ONLINE          Geek DBA12c-rac02       STABLE 
                ora.proxy_advm                 ONLINE     ONLINE          Geek DBA12c-rac03       STABLE 

                # a seperate apx instance will be running
                $ ps -elf | grep pmon | grep APX
                0 S oragrid      4019     1  0  80   0 - 457594 semtim 08:09 ?       00:00:00 apx_pmon_+APX2
        

See the installation screen shots while you install the Grid Infrastructure the ASM has new options

The first one is selection of ASM Network so that you can use seperate cluster network for ASM

The second one is selection of ASM flex storage option if this option is selected the Flex ASM option will be enabled and the ASM instances will not run on all instances and clients has direct access to the ASM storage by reading the metadata from other ASM instances.

image

image

Let's see practicaly what is it,

   #Checking whether ASM instance is not in FlexASM Mode and the ASM clients
        $srvctl config asm
         
        ASM home: /u01/app/oracle/12.1.0.1/grid
        Password file: +DATA/ASM/PASSWORD/pwdasm.490.780738119
        ASM listener: LISTENER
        ASM instance count: ALL
        Cluster ASM listener: ASMNET1LSNR_ASM

        Notice the ASM Instance count = ALL says that asm instances should run on all instances

        #Another check , check the cardinality in the CRS Profile, the crs_hub_size means asm should run 
        on all instances
        
        $ crsctl status resource ora.asm -f | grep CARDINALITY=
        CARDINALITY=%CRS_HUB_SIZE%

    
        # v$asm_client shows the clients connected to asm instances
        # as you see the asm instances are local to the database clients
        
        SQL> select INST_ID,GROUP_NUMBER, INSTANCE_NAME, DB_NAME, 
        INSTANCE_NAME||':'||DB_NAME client_id, STATUS from gv$asm_client;
        
           INST_ID GROUP_NUMBER INSTANCE_N DB_NAME  CLIENT_ID             STATUS
        ---------- ------------ ---------- -------- -------------------- ------------
             1          1       racdb1   racdb   racdb1:racdb           CONNECTED -->asm instance 1 to db instance 1  
             2          1       racdb2   racdb   racdb2:racdb           CONNECTED -->asm instance 2 to db instance 2  
             3          1       racdb3   racdb   racdb3:racdb           CONNECTED -->asm instance 3 to db instance 3
             3          0       +APX1       +APX     +APX1:+APX         CONNECTED --> ADVM proxy instances
             3          0       +APX2       +APX     +APX2:+APX         CONNECTED
             3          0       +APX3       +APX     +APX3:+APX         CONNECTED
             3          1       -MGMTDB    _mgmtdb  -MGMTDB:_mgmtdb     CONNECTED --> MGMT repository db
                     

        The asm instances are locally connected to each of its own asm instances like below

General Architecture - Non Flex ASM (i.e Standard ASM)

image Cardinality=cluster hub size, or ALL

Let's set the cardinality to 2, means I want only 2 asm instances in my cluster, Means Enabling Flex ASM

#Enabling Flex ASM

   # asm is running on three nodes
        
        $  srvctl status asm -detail
        ASM is running on racdb3,racdb2,racdb1
        ASM is enabled.

        # modify the asm count
        $ srvctl modify asm -count 2
        
        # check the ASM configuration
        srvctl config asm
                 
                ASM home: /u01/oracle/12.1.0.1/grid
                Password file: +DATA/ASM/PASSWORD/pwdasm.490.780738119
                ASM listener: LISTENER
                ASM instance count: 2
                Cluster ASM listener: ASMNET1LSNR_ASM
        
                Notice the ASM Instance count = ALL says that asm instances should run on all instances
        
                Another check , check the cardinality in the CRS Profile
        
                +ASM1 > crsctl status resource ora.asm -f | grep CARDINALITY=
                CARDINALITY=2

        # check the asm, its now running only on two nodes

        $  srvctl status asm -detail
        ASM is running on racdb3,racdb2
        ASM is enabled.

        # check the status of database instances to which db asm instance its serving.
        # as you saw the node 3
        
        SQL> select INST_ID,GROUP_NUMBER, INSTANCE_NAME, DB_NAME, INSTANCE_NAME||':'||DB_NAME client_id, STATUS from gv$asm_client
              where DB_NAME = 'racdb';
        INST_ID   GROUP_NUMBER  INSTANCE_N DB_NAME  CLIENT_ID         STATUS
        ---------- ------------ ---------- -------- -------------------- ------------
             3          1       racdb1   racdb   racdb1:racdb     CONNECTED  <-- ASM connection connected via Network
             3          1       racdb2   racdb   racdb2:racdb     CONNECTED
             2          1       racdb3   racdb   racdb3:racdb     CONNECTED
             
        # v$asm_client shows the clients connected to asm instances
        # as you see the inst_id 3 serving racdb1 & racdb3 instances now.
        # also see now the asm instance 3 is part of asm client, means asm instance 3 itself register
        # as part of client
        
        SQL> select INST_ID,GROUP_NUMBER, INSTANCE_NAME, DB_NAME, INSTANCE_NAME||':'||DB_NAME client_id, STATUS from gv$asm_client;
        
           INST_ID GROUP_NUMBER INSTANCE_N DB_NAME  CLIENT_ID         STATUS
        ---------- ------------ ---------- -------- -------------------- ------------
             3          1       +ASM3       +ASM     +ASM3:+ASM         CONNECTED --> ASM instance
             3          1       racdb1      racdb   racdb1:racdb        CONNECTED --> INST_ID=3 serving
             3          1       racdb2      racdb   racdb2:racdb        CONNECTED   serving t wo databases
             2          1       racdb3      racdb   racdb3:racdb        CONNECTED
             3          0       +APX1       +APX     +APX1:+APX         CONNECTED --> ADVM proxy instances
             3          0       +APX2       +APX     +APX2:+APX         CONNECTED
             3          0       +APX3       +APX     +APX3:+APX         CONNECTED
             3          1       -MGMTDB    _mgmtdb  -MGMTDB:_mgmtdb     CONNECTED --> MGMT repository db


        #once you set the cardinality to two the asm alert log shows this
        Thu Oct 27 09:35:35 2013
        NOTE: ASMB registering with ASM instance as client 0x70004 (reg:398621261)
        NOTE: ASMB connected to ASM instance +ASM3 (Flex mode; client id 0x70004)
        NOTE: ASMB rebuilding ASM server state
        NOTE: ASMB rebuilt 1 (of 1) groups
        NOTE: ASMB rebuilt 20 (of 20) allocated files
        NOTE: fetching new locked extents from server
        NOTE: 0 locks established; 0 pending writes sent to server
        SUCCESS: ASMB reconnected & completed ASM server state

General Architecture - Flex ASM

image Cardinality or count = 2

Next Post:- Some other new features in ASM

Technorati : , , , , ,

1 comment to 12c Database : ASM Enhancements : FlexASM – Overview