Hello friends, The Oracle DBA occasionally needs to update some of the Oracle Clusterware network configurations. Today let's check how to update the private network part. The Environment Oracle RAC with 2 nodes: ol8-19-rac1 and ol8-19-rac2 Oracle Linux Server release 8.8 Grid Version 34318175;TOMCAT RELEASE UPDATE 19.0.0.0.0 (34318175) 34160635;OCW RELEASE UPDATE 19.16.0.0.0 (34160635) 34139601;ACFS RELEASE UPDATE 19.16.0.0.0 (34139601) 34133642;Database Release Update : 19.16.0.0.220719 (34133642) 33575402;DBWLM RELEASE UPDATE 19.0.0.0.0 (33575402) DB Version 34086870;OJVM RELEASE UPDATE: 19.16.0.0.220719 (34086870) 34160635;OCW RELEASE UPDATE 19.16.0.0.0 (34160635) 34133642;Database Release Update : 19.16.0.0.220719 (34133642) When you see <dbenv>, load the DB HOME variables. When you see <gridenv>, load the GRID HOME variables. IPs # Public 192.168.56.161 ol8-19-rac1.localdomain ol8-19-rac1 192.168.56.162 ol8-19-rac2.localdomain ol8-19-rac2 # Virtual 192.168.56.163 ol8-19-rac1-vip.localdomain ol8-19-rac1-vip 192.168.56.164 ol8-19-rac2-vip.localdomain ol8-19-rac2-vip # Private 10.1.2.161 ol8-19-rac1-priv.localdomain ol8-19-rac1-priv 10.1.2.162 ol8-19-rac2-priv.localdomain ol8-19-rac2-priv As the grid user, take a backup of profile.xml on all cluster nodes before proceeding. [oracle@ol8-19-rac1 ~]$ cp -p $ORACLE_HOME/gpnp/`hostname`/profiles/peer/profile.xml $ORACLE_HOME/gpnp/`hostname`/profiles/peer/profile.xml.bkp [oracle@ol8-19-rac1 ~]$ ll $ORACLE_HOME/gpnp/`hostname`/profiles/peer/profile.xml.bkp -rw-r--r--. 1 oracle oinstall 2171 May 27 20:09 /u01/app/19.0.0/grid/gpnp/ol8-19-rac1/profiles/peer/profile.xml.bkp Now, let’s check the Oracle CRS networks and the Linux networks. It’s possible to identify that Oracle is using the network as his private one. “eth2 10.1.2.0” [oracle@ol8-19-rac1 ~]$ oifcfg getif eth1 192.168.56.0 global public eth2 10.1.2.0 global cluster_interconnect,asm [oracle@ol8-19-rac1 ~]$ ip -c -br a lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 10.0.2.15/24 fe80::a00:27ff:fe63:d73f/64 eth1 UP 192.168.56.161/24 192.168.56.163/24 192.168.56.166/24 192.168.56.165/24 fe80::a00:27ff:fe4f:b8aa/64 eth2 UP 10.1.2.161/24 169.254.1.211/19 fe80::a00:27ff:fe01:a7de/64 eth3 UP 10.1.3.161/24 fe80::a00:27ff:fef3:172b/64 [oracle@ol8-19-rac2 ~]$ ip -c -br a lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 10.0.2.15/24 fe80::a00:27ff:fe63:d73f/64 eth1 UP 192.168.56.162/24 192.168.56.164/24 192.168.56.167/24 fe80::a00:27ff:fe76:b954/64 eth2 UP 10.1.2.162/24 169.254.26.118/19 fe80::a00:27ff:fe7f:8663/64 eth3 UP 10.1.3.162/24 fe80::a00:27ff:fea8:d7c3/64 Let’s also check the ASM Listener configuration and take note. [oracle@ol8-19-rac1 ~]$ srvctl config listener -asmlistener Name: ASMNET1LSNR_ASM Type: ASM Listener Owner: oracle Subnet: 10.1.2.0 Home: <CRS home> End points: TCP:1525 Listener is enabled. Listener is individually enabled on nodes: Listener is individually disabled on nodes: [oracle@ol8-19-rac1 ~]$ srvctl status listener -l ASMNET1LSNR_ASM Listener ASMNET1LSNR_ASM is enabled Listener ASMNET1LSNR_ASM is running on node(s): ol8-19-rac2,ol8-19-rac1 [oracle@ol8-19-rac1 ~]$ srvctl config asm ASM home: <CRS home> Password file: +CRS/orapwASM Backup of Password file: +CRS/orapwASM_backup ASM listener: LISTENER ASM instance count: 2 Cluster ASM listener: ASMNET1LSNR_ASM Firstly, let’s check if both nodes are able to reach the network we intend to use. [oracle@ol8-19-rac1 tmp]$ ping -c 3 10.1.3.161 PING 10.1.3.161 (10.1.3.161) 56(84) bytes of data. 64 bytes from 10.1.3.161: icmp_seq=1 ttl=64 time=0.010 ms 64 bytes from 10.1.3.161: icmp_seq=2 ttl=64 time=0.014 ms 64 bytes from 10.1.3.161: icmp_seq=3 ttl=64 time=0.018 ms --- 10.1.3.161 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2052ms rtt min/avg/max/mdev = 0.010/0.014/0.018/0.003 ms [oracle@ol8-19-rac1 tmp]$ ping -c 3 10.1.3.162 PING 10.1.3.162 (10.1.3.162) 56(84) bytes of data. 64 bytes from 10.1.3.162: icmp_seq=1 ttl=64 time=0.168 ms 64 bytes from 10.1.3.162: icmp_seq=2 ttl=64 time=0.151 ms 64 bytes from 10.1.3.162: icmp_seq=3 ttl=64 time=0.171 ms --- 10.1.3.162 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2068ms rtt min/avg/max/mdev = 0.151/0.163/0.171/0.013 ms [oracle@ol8-19-rac2 tmp]$ ping -c 3 10.1.3.161 PING 10.1.3.161 (10.1.3.161) 56(84) bytes of data. 64 bytes from 10.1.3.161: icmp_seq=1 ttl=64 time=0.153 ms 64 bytes from 10.1.3.161: icmp_seq=2 ttl=64 time=0.156 ms 64 bytes from 10.1.3.161: icmp_seq=3 ttl=64 time=0.176 ms --- 10.1.3.161 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2081ms rtt min/avg/max/mdev = 0.153/0.161/0.176/0.017 ms [oracle@ol8-19-rac2 tmp]$ ping -c 3 10.1.3.162 PING 10.1.3.162 (10.1.3.162) 56(84) bytes of data. 64 bytes from 10.1.3.162: icmp_seq=1 ttl=64 time=0.010 ms 64 bytes from 10.1.3.162: icmp_seq=2 ttl=64 time=0.025 ms 64 bytes from 10.1.3.162: icmp_seq=3 ttl=64 time=0.015 ms --- 10.1.3.162 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2037ms rtt min/avg/max/mdev = 0.010/0.016/0.025/0.007 ms Since everything seems OK, now we will start changing the private network. We will change it from the subnet to . As the grid user, proceed as below in only one of the nodes. eth2:10.1.2.0 eth3:10.1.3.0 [oracle@ol8-19-rac1 ~]$ oifcfg setif -global eth3/10.1.3.0:cluster_interconnect,asm [oracle@ol8-19-rac1 ~]$ srvctl add listener -asmlistener -l ASMNEWLSNR_ASM -subnet 10.1.3.0 [oracle@ol8-19-rac1 ~]$ srvctl update listener -listener ASMNET1LSNR_ASM -asm -remove -force --The error below is expected, as we are only testing if the previous listener still exists. [oracle@ol8-19-rac1 ~]$ lsnrctl stop ASMNET1LSNR_ASM LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 28-MAY-2023 07:55:09 Copyright (c) 1991, 2023, Oracle. All rights reserved. TNS-01101: Could not find listener name or service name ASMNET1LSNR_ASM Check if the ASM Listener was created correctly. [oracle@ol8-19-rac1 ~]$ srvctl config asm ASM home: <CRS home> Password file: +CRS/orapwASM Backup of Password file: +CRS/orapwASM_backup ASM listener: LISTENER ASM instance count: 2 Cluster ASM listener: ASMNEWLSNR_ASM [oracle@ol8-19-rac1 ~]$ srvctl config listener -asmlistener Name: ASMNEWLSNR_ASM Type: ASM Listener Owner: oracle Subnet: 10.1.3.0 Home: <CRS home> End points: TCP:1526 Listener is enabled. Listener is individually enabled on nodes: Listener is individually disabled on nodes: In the 19c version, we also have one more resource to handle, the ASM Network. [oracle@ol8-19-rac1 ~]$ srvctl config asmnetwork ASM network 1 exists Subnet IPv4: 10.1.2.0// Subnet IPv6: Network is enabled Network is individually enabled on nodes: Network is individually disabled on nodes: [oracle@ol8-19-rac1 ~]$ srvctl status asmnetwork ASM network is running on ol8-19-rac2,ol8-19-rac1 As the root user, proceed as below. [root@ol8-19-rac1 scripts]# srvctl remove asmnetwork -netnum 1 -force [root@ol8-19-rac1 scripts]# srvctl add asmnetwork -netnum 1 -subnet 10.1.3.0 Now let’s restart the entire cluster. [root@ol8-19-rac1 ~]# crsctl stop cluster -all -f CRS-2673: Attempting to stop 'ora.crsd' on 'ol8-19-rac2' CRS-2673: Attempting to stop 'ora.crsd' on 'ol8-19-rac1' ... CRS-2673: Attempting to stop 'ora.cssd' on 'ol8-19-rac1' CRS-2677: Stop of 'ora.cssd' on 'ol8-19-rac1' succeeded [root@ol8-19-rac1 ~]# crsctl stop crs -f CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'ol8-19-rac1' ... CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'ol8-19-rac1' has completed CRS-4133: Oracle High Availability Services has been stopped. [root@ol8-19-rac2 ~]# crsctl stop crs -f CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'ol8-19-rac2' ... CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'ol8-19-rac2' has completed CRS-4133: Oracle High Availability Services has been stopped. [root@ol8-19-rac1 ~]# crsctl start crs CRS-4123: Oracle High Availability Services has been started. [root@ol8-19-rac2 ~]# crsctl start crs CRS-4123: Oracle High Availability Services has been started. Check if everything is OK. [oracle@ol8-19-rac1 tmp]$ crsctl status res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.LISTENER.lsnr ONLINE ONLINE ol8-19-rac1 STABLE ONLINE ONLINE ol8-19-rac2 STABLE ora.chad ONLINE ONLINE ol8-19-rac1 STABLE ONLINE ONLINE ol8-19-rac2 STABLE ora.net1.network ONLINE ONLINE ol8-19-rac1 STABLE ONLINE ONLINE ol8-19-rac2 STABLE ora.ons ONLINE ONLINE ol8-19-rac1 STABLE ONLINE ONLINE ol8-19-rac2 STABLE ora.proxy_advm OFFLINE OFFLINE ol8-19-rac1 STABLE OFFLINE OFFLINE ol8-19-rac2 STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.ASMNEWLSNR_ASM.lsnr(ora.asmgroup) 1 ONLINE ONLINE ol8-19-rac1 STABLE 2 ONLINE ONLINE ol8-19-rac2 STABLE ora.CRS.dg(ora.asmgroup) 1 ONLINE ONLINE ol8-19-rac1 STABLE 2 ONLINE ONLINE ol8-19-rac2 STABLE ora.DATA.dg(ora.asmgroup) 1 ONLINE ONLINE ol8-19-rac1 STABLE 2 ONLINE ONLINE ol8-19-rac2 STABLE ora.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE ol8-19-rac2 STABLE ora.LISTENER_SCAN2.lsnr 1 ONLINE ONLINE ol8-19-rac1 STABLE ora.LISTENER_SCAN3.lsnr 1 ONLINE ONLINE ol8-19-rac1 STABLE ora.RECO.dg(ora.asmgroup) 1 ONLINE ONLINE ol8-19-rac1 STABLE 2 ONLINE ONLINE ol8-19-rac2 STABLE ora.asm(ora.asmgroup) 1 ONLINE ONLINE ol8-19-rac1 Started,STABLE 2 ONLINE ONLINE ol8-19-rac2 Started,STABLE ora.asmnet1.asmnetwork(ora.asmgroup) 1 ONLINE ONLINE ol8-19-rac1 STABLE 2 OFFLINE OFFLINE STABLE ora.cdbrac.db 1 ONLINE ONLINE ol8-19-rac1 Open,HOME=/u01/app/o racle/product/19.0.0 /dbhome_1,STABLE 2 ONLINE ONLINE ol8-19-rac2 Open,HOME=/u01/app/o racle/product/19.0.0 /dbhome_1,STABLE ora.cvu 1 ONLINE ONLINE ol8-19-rac1 STABLE ora.ol8-19-rac1.vip 1 ONLINE ONLINE ol8-19-rac1 STABLE ora.ol8-19-rac2.vip 1 ONLINE ONLINE ol8-19-rac2 STABLE ora.qosmserver 1 ONLINE ONLINE ol8-19-rac1 STABLE ora.scan1.vip 1 ONLINE ONLINE ol8-19-rac2 STABLE ora.scan2.vip 1 ONLINE ONLINE ol8-19-rac1 STABLE ora.scan3.vip 1 ONLINE ONLINE ol8-19-rac1 STABLE -------------------------------------------------------------------------------- In my case, the ASM Network was not running on node 2, so I started it manually, and I will check in future reboots if I face the same issue again. [oracle@ol8-19-rac2 tmp]$ srvctl start asmnetwork [oracle@ol8-19-rac2 tmp]$ srvctl status asmnetwork ASM network is running on ol8-19-rac2,ol8-19-rac1 Since everything is running smoothly, let’s remove the previous network from the Oracle CRS. As the grid user, proceed as below. [oracle@ol8-19-rac1 tmp]$ oifcfg delif -global eth2/10.1.2.0 [oracle@ol8-19-rac1 tmp]$ oifcfg getif eth1 192.168.56.0 global public eth3 10.1.3.0 global cluster_interconnect,asm In the next article, I will explain how to update the IP from the other layers of the Oracle CRS. That’s it!