Wednesday, September 1, 2021

Modifying Node VIP In a RAC Cluster

How to update the new Node VIP on a cluster node?


1. Verify the cluster resource where it reported ora.LISTENER.lsnr is on OFFLINE on node1

[root@oraclenode1 named]# crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  OFFLINE      oraclenode1              STABLE
               ONLINE  ONLINE       oraclenode2              STABLE
ora.chad
               ONLINE  ONLINE       oraclenode1              STABLE
               ONLINE  ONLINE       oraclenode2              STABLE
ora.net1.network
               ONLINE  ONLINE       oraclenode1              STABLE
               ONLINE  ONLINE       oraclenode2              STABLE
ora.ons
               ONLINE  ONLINE       oraclenode1              STABLE
               ONLINE  ONLINE       oraclenode2              STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       oraclenode1              STABLE
      2        ONLINE  ONLINE       oraclenode2              STABLE
      3        ONLINE  OFFLINE                               STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       oraclenode1              STABLE
      2        ONLINE  ONLINE       oraclenode2              STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       oraclenode2              STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       oraclenode1              STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       oraclenode1              STABLE
ora.RECO.dg(ora.asmgroup)
      1        ONLINE  ONLINE       oraclenode1              STABLE
      2        ONLINE  ONLINE       oraclenode2              STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       oraclenode1              Started,STABLE
      2        ONLINE  ONLINE       oraclenode2              Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       oraclenode1              STABLE
      2        ONLINE  ONLINE       oraclenode2              STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       oraclenode2              STABLE
ora.oraclenode1.vip
      1        ONLINE  OFFLINE                               STABLE
ora.oraclenode2.vip
      1        ONLINE  ONLINE       oraclenode2              STABLE
ora.qosmserver
      1        ONLINE  ONLINE       oraclenode2              STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       oraclenode2              STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       oraclenode1              STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       oraclenode1              STABLE
--------------------------------------------------------------------------------
[root@oraclenode1 named]# 

2. Tried starting the LISTENER which got failed to start on node1 and reported node1 VIP is already in use

[root@oraclenode1 named]# srvctl start listener -l LISTENER
PRCR-1079 : Failed to start resource ora.LISTENER.lsnr
CRS-5005: IP Address: 10.38.4.168 is already in use in the network
CRS-2674: Start of 'ora.oraclenode1.vip' on 'oraclenode1' failed
[root@oraclenode1 named]#

3.Verify the node1 VIP configuration and find that node1 has assigned with VIP 10.38.4.168
[root@oraclenode1 named]# srvctl config nodeapps -n oraclenode1
PRKO-2207 : Warning:-node option has been deprecated and will be ignored.
Network 1 exists
Subnet IPv4: 10.38.4.0/255.255.252.0/ens192, static
Subnet IPv6:
Ping Targets:
Network is enabled
Network is individually enabled on nodes:
Network is individually disabled on nodes:
VIP exists: network number 1, hosting node oraclenode1
VIP Name: oraclenode1-vip.localdomain.com
VIP IPv4 Address: 10.38.4.168
VIP IPv6 Address:
VIP is enabled.
VIP is individually enabled on nodes:
VIP is individually disabled on nodes:
ONS exists: Local port 6100, remote port 6200, EM port 2016, Uses SSL true
ONS is enabled
ONS is individually enabled on nodes:
ONS is individually disabled on nodes:
[root@oraclenode1 named]#

[root@oraclenode1 named]# srvctl config  vip -n oraclenode1
VIP exists: network number 1, hosting node oraclenode1
VIP Name: oraclenode1-vip.localdomain.com
VIP IPv4 Address: 10.38.4.168
VIP IPv6 Address:
VIP is enabled.
VIP is individually enabled on nodes:
VIP is individually disabled on nodes:
[root@oraclenode1 named]# 

4. After consulting with network team got to know that node1 VIP(10.38.4.168) is reserved for some other server and network team has assigned the new VIP(10.38.4.138) for node1

Verify that newly assigned IP is not used anywhere in the network:

[root@oraclenode1 named]# ping 10.38.4.138
PING 10.38.4.138 (10.38.4.138) 56(84) bytes of data.
^C
--- 10.38.4.138 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
[root@oraclenode1 named]#

5. Stop the VIP on node1 if not already stopped   
[root@oraclenode1 named]# srvctl stop  vip -n oraclenode1
PRKO-3250 : Failed to stop VIPs on node oraclenode1 because no VIP was running on the given node
[root@oraclenode1 named]#

6. Verify on the server ifconfig output this VIP is not running/assigned to any inetrface or VLAN 
[root@oraclenode1 named]# ifconfig
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.38.4.110  netmask 255.255.252.0  broadcast 10.38.7.255
        inet6 fe80::9dc9:2ec6:523a:9200  prefixlen 64  scopeid 0x20<link>
        ether 00:50:56:9f:53:e8  txqueuelen 1000  (Ethernet)
        RX packets 125750  bytes 12533560 (11.9 MiB)
        RX errors 0  dropped 72  overruns 0  frame 0
        TX packets 21033  bytes 7756095 (7.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens192:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.38.4.162  netmask 255.255.252.0  broadcast 10.38.7.255
        ether 00:50:56:9f:53:e8  txqueuelen 1000  (Ethernet)

ens192:2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.38.4.154  netmask 255.255.252.0  broadcast 10.38.7.255
        ether 00:50:56:9f:53:e8  txqueuelen 1000  (Ethernet)

ens224: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.38.9.110  netmask 255.255.255.0  broadcast 10.38.9.255
        inet6 fe80::300e:be6a:d7ae:a0b8  prefixlen 64  scopeid 0x20<link>
        ether 00:50:56:9f:87:8c  txqueuelen 1000  (Ethernet)
        RX packets 336280  bytes 362673837 (345.8 MiB)
        RX errors 0  dropped 13  overruns 0  frame 0
        TX packets 224204  bytes 186974979 (178.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens224:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 169.254.21.65  netmask 255.255.224.0  broadcast 169.254.31.255
        ether 00:50:56:9f:87:8c  txqueuelen 1000  (Ethernet)

ens256: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:50:56:9f:6c:01  txqueuelen 1000  (Ethernet)
        RX packets 2  bytes 120 (120.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 30  bytes 3420 (3.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 49235  bytes 170353234 (162.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 49235  bytes 170353234 (162.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:f6:a4:0b  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@oraclenode1 named]#

7. Configure the new VIP on node1 using srvctl nodeapps as shown below which will fails at first attempt due to wrong subnet used. 


In second attempt we have corrected the correct subnet and which got added to cluster.

First Attempt:
[root@oraclenode1 named]# srvctl modify nodeapps -n oraclenode1 -A 10.38.4.138/255.255.255.0/ens192
PRCN-3024 : Mismatch between the subnet mask of the VIP (255.255.255.0) and that of the associated network (255.255.252.0)
[root@oraclenode1 named]# 

Second Atempet:
[root@oraclenode1 named]# srvctl modify nodeapps -n oraclenode1 -A 10.38.4.138/255.255.252.0/ens192
[root@oraclenode1 named]# srvctl config  vip -n oraclenode1
VIP exists: network number 1, hosting node oraclenode1
VIP IPv4 Address: 10.38.4.138
VIP IPv6 Address:
VIP is enabled.
VIP is individually enabled on nodes:
VIP is individually disabled on nodes:
[root@oraclenode1 named]#

[root@oraclenode1 named]# srvctl config nodeapps -n oraclenode1
PRKO-2207 : Warning:-node option has been deprecated and will be ignored.
Network 1 exists
Subnet IPv4: 10.38.4.0/255.255.252.0/ens192, static
Subnet IPv6:
Ping Targets:
Network is enabled
Network is individually enabled on nodes:
Network is individually disabled on nodes:
VIP exists: network number 1, hosting node oraclenode1
VIP IPv4 Address: 10.38.4.138
VIP IPv6 Address:
VIP is enabled.
VIP is individually enabled on nodes:
VIP is individually disabled on nodes:
ONS exists: Local port 6100, remote port 6200, EM port 2016, Uses SSL true
ONS is enabled
ONS is individually enabled on nodes:
ONS is individually disabled on nodes:
[root@oraclenode1 named]#

8. Finally we can start the LISTENER 

[root@oraclenode1 named]# srvctl status listener -l LISTENER
Listener LISTENER is enabled
Listener LISTENER is running on node(s): oraclenode1,oraclenode2
[root@oraclenode1 named]#

[root@oraclenode1 named]# crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       oraclenode1              STABLE
               ONLINE  ONLINE       oraclenode2              STABLE
ora.chad
               ONLINE  ONLINE       oraclenode1              STABLE
               ONLINE  ONLINE       oraclenode2              STABLE
ora.net1.network
               ONLINE  ONLINE       oraclenode1              STABLE
               ONLINE  ONLINE       oraclenode2              STABLE
ora.ons
               ONLINE  ONLINE       oraclenode1              STABLE
               ONLINE  ONLINE       oraclenode2              STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       oraclenode1              STABLE
      2        ONLINE  ONLINE       oraclenode2              STABLE
      3        ONLINE  OFFLINE                               STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       oraclenode1              STABLE
      2        ONLINE  ONLINE       oraclenode2              STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       oraclenode2              STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       oraclenode1              STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       oraclenode1              STABLE
ora.RECO.dg(ora.asmgroup)
      1        ONLINE  ONLINE       oraclenode1              STABLE
      2        ONLINE  ONLINE       oraclenode2              STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       oraclenode1              Started,STABLE
      2        ONLINE  ONLINE       oraclenode2              Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       oraclenode1              STABLE
      2        ONLINE  ONLINE       oraclenode2              STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       oraclenode2              STABLE
ora.oraclenode1.vip
      1        ONLINE  ONLINE       oraclenode1              STABLE
ora.oraclenode2.vip
      1        ONLINE  ONLINE       oraclenode2              STABLE
ora.qosmserver
      1        ONLINE  ONLINE       oraclenode2              STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       oraclenode2              STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       oraclenode1              STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       oraclenode1              STABLE
--------------------------------------------------------------------------------
[root@oraclenode1 named]#

Regards,
Mallik

No comments:

Post a Comment

Automation Script | Archivelog Generation Hourly Monitoring

1. List out all the running databases and pic one database where we want to monitore the archive log generation from last 1 month. [oracle@o...