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.
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)
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
Next Post:- Some other new features in ASM
[…] 12c Database : ASM Enhancements : FlexASM – Overview […]