参考MOS 2796053.1
测试ODA 版本19.9
1. Please verify that the new IPs/subnet/gateway are correct
2. Take a backup of the ODA with ODABR on both nodes
Refer to Note 2466177.1 - ODA (Oracle Database Appliance): ODABR a System Backup/Restore Utility
3. Verify that the clusterware is up
# /u01/app/19.11.0.0/grid/bin/crsctl check cluster -all
**************************************************************
odabm1:
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
**************************************************************
odabm2:
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
**************************************************************
4. Check the current interface configuration of the Grid Infrastructure
as grid OS user
$ /u01/app/19.11.0.0/grid/bin/oifcfg getif
icbond0 192.168.16.0 global cluster_interconnect
privasm 192.168.17.0 global asm
pubnet <old subnet> global public
5. Add the new subnet to the configuration
as grid OS user
$ /u01/app/19.11.0.0/grid/bin/oifcfg setif -global pubnet/<new subnet>:public
6. Remove the old one
as grid OS user
/u01/app/19.11.0.0/grid/bin/oifcfg delif -global pubnet/<old subnet>
7. Verify the changes
as grid OS user
$ /u01/app/18.0.0.0/grid/bin/oifcfg getif
icbond0 192.168.16.0 global cluster_interconnect
privasm 192.168.17.0 global asm
pubnet <new subnet> global public
8. Stop the Grid Infrastructure
as root OS user
# /u01/app/19.11.0.0/grid/bin/crsctl stop cluster -all
9. Change the hostip/subnet mask/gateway in the interface configuration file on both nodes
as root OS user
vi /etc/sysconfig/network-scripts/ifcfg-pubnet
# This file is automatically created by the ODA software.
# This file is automatically created by the ODA software.
BOOTPROTO=none
DEVICE=pubnet
ONBOOT=yes
TYPE=Bridge
DELAY=0
NM_CONTROLLED=no
IPADDR=<new hostip of the local host>
NETMASK=<new netmask>
GATEWAY=<new gateway>
10. Change pubnet's gateway in /etc/sysconfig/network file
as root user
vi /etc/sysconfig/network
NETWORKING=yes
NOZEROCONF=yes
GATEWAYDEV=pubnet
GATEWAY=<new gateway>
11. Restart the network on both nodes. Please note that you will lose the connectivity to the ODA at that point
as root OS user
# systemctl restart network
12. Ask the network administrators to implement all the network related changes on switch and DNS side
13. Reconnect to the host via an ssh terminal
14. Verify that the new IP/subnet/gateway is configured on both nodes
as root OS user
# ifconfig -a
# netstat -rn
15. Change the DNS configuration on both nodes if required
#vi /etc/resolv.conf
search mydomain.com
nameserver <ip of dns1>
nameserver <ip of dns2>
nameserver <ip of dns3>
Test the DNS resolution
# nslookup <hostname1>
Server: <DNS server>
Address: <DNS server>#53
Name: <hostname1>.mydomain.com
Address: <new hostip1>
Verify that DNS and reverse DNS lookups return the right IPs, hostnames, VIPs, SCAN.
Verify the order of name resolution in /etc/nsswitch.conf. It should be the following:
hosts: files dns myhostname
16. Change NTP/Chrony configuration on both nodes if required
19.10 uses NTP
as root OS user
# vi /etc/ntp.conf
server <ip of ntp1> prefer
server <ip of ntp2>
Validate ntp resolution
# systemctl stop ntpd
Use "-q" for the test as it only queries the time
# ntpdate -q <ip of ntp1>
server 206.223.27.1, stratum 3, offset 0.007801, delay 0.02850
30 Jul 16:41:28 ntpdate[77304]: adjust time server 206.223.27.1 offset 0.007801 sec
# systemctl start ntpd
# systemctl status ntpd
19.11+ uses Chrony
# vi /etc/chrony.conf
server <ip of ntp1> iburst
server <ip of ntp2> iburst
driftfile /var/lib/chrony/drift
makestep 1.0 -1
rtcsync
logdir /var/log/chrony
# systemctl restart chronyd
# systemctl status chronyd
17. Change the IPs in /etc/hosts on both ODA nodes
as root OS user
# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
<new hostip1> <hostname1>.mydomain.com <hostname1>
192.168.16.24 <hostname1>-priv.mydomain.com <hostname1>-priv
<new vip1> <vipname1>.mydomain.com <vipname1>
<new hostip2> <hostname2>.mydomain.com <hostname2>
192.168.16.25 <hostname2>-priv.mydomain.com <hostname2>-priv
<new vip2> <vipname2>.mydomain.com <vipname2>
18. Remove known_hosts file for grid and oracle users on all ODA nodes
as root OS user
rm ~oracle/.ssh/known_hosts
rm ~grid/.ssh/known_hosts
19. Start the Grid Infrastructure
as root OS user
# /u01/app/19.11.0.0/grid/bin/crsctl start cluster -all
20. Change the VIPs for both nodes
Check the current configuration
# /u01/app/19.11.0.0/grid/bin/srvctl config nodeapps -viponly
Network 1 exists
Subnet IPv4: <old subnet>/<old netmask>/pubnet, 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 <hostname1>
VIP Name: <vipname1>
VIP IPv4 Address: <old vip1>
VIP IPv6 Address:
VIP is enabled.
VIP is individually enabled on nodes:
VIP is individually disabled on nodes:
VIP exists: network number 1, hosting node <hostname2>
VIP Name: <vipname2>
VIP IPv4 Address: <old vip2>
VIP IPv6 Address:
VIP is enabled.
VIP is individually enabled on nodes:
VIP is individually disabled on nodes:
Change the VIPs
# /u01/app/19.11.0.0/grid/bin/srvctl modify nodeapps -node <hostname1> -address <vipname1>/<new netmask>/pubnet
# /u01/app/19.11.0.0/grid/bin/srvctl modify nodeapps -node <hostname2> -address <vipname2>/<new netmask>/pubnet
Verify the changes
# /u01/app/19.11.0.0/grid/bin/srvctl config nodeapps -viponly
Network 1 exists
Subnet IPv4: <new subnet>/<new netmask>/pubnet, 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 <hostname1>
VIP Name: <vipname1>
VIP IPv4 Address: <new vip1>
VIP IPv6 Address:
VIP is enabled.
VIP is individually enabled on nodes:
VIP is individually disabled on nodes:
VIP exists: network number 1, hosting node <hostname2>
VIP Name: <vipname2>
VIP IPv4 Address: <new vip2>
VIP IPv6 Address:
VIP is enabled.
VIP is individually enabled on nodes:
VIP is individually disabled on nodes:
21. Verify the configuration of the network resources
# /u01/app/19.11.0.0/grid/bin/srvctl config network
Network 1 exists
Subnet IPv4: <new subnet>/<new netmask>/pubnet, static
Subnet IPv6:
Ping Targets:
Network is enabled
Network is individually enabled on nodes:
Network is individually disabled on nodes:
22. Change the SCAN IP(s)
# /u01/app/19.11.0.0/grid/bin/srvctl config scan
SCAN name: <scan name>, Network: 1
Subnet IPv4: <old subnet>/<old netmask>/pubnet, static
Subnet IPv6:
SCAN 1 IPv4 VIP: <old scanip1>
SCAN VIP is enabled.
SCAN 2 IPv4 VIP: <old scanip2>
SCAN VIP is enabled.
Change the SCAN IPs
[root@odabm1 ~]# /u01/app/19.11.0.0/grid/bin/srvctl modify scan -scanname odabm-scan -netnum 1
[root@odabm1 ~]# /u01/app/19.11.0.0/grid/bin/srvctl config scan
SCAN name: <scan name>, Network: 1
Subnet IPv4: <new subnet>/<new netmask>//pubnet, static
Subnet IPv6:
SCAN 1 IPv4 VIP: <new scanip1>
SCAN VIP is enabled.
SCAN 2 IPv4 VIP: <new scanip2>
SCAN VIP is enabled.
23. You might need to change the configuration files under /u01/app/19.11.0.0/grid/network/admin
as grid OS user
# cd /u01/app/19.11.0.0/grid/network/admin
# ls -l
total 20
-rw-r--r-- 1 grid oinstall 1223 Jun 28 13:00 listener.ora
drwxr-xr-x 2 grid oinstall 4096 Apr 17 2019 samples
-rw-r--r-- 1 grid oinstall 1536 Feb 14 2018 shrept.lst
-rw-r--r-- 1 root root 200 Jul 15 11:40 sqlnet.ora
# cat sqlnet.ora
# sqlnet.ora.<hostname> Network Configuration File: /u01/app/19.0.0.0/grid/network/admin/sqlnet.ora.<hostname>
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
# cat listener.ora
ASMNET2LSNR_ASM=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=ASMNET2LSNR_ASM))))
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))
LISTENER_SCAN2=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2))))
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1))))
ASMNET1LSNR_ASM=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=ASMNET1LSNR_ASM))))
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_ASMNET1LSNR_ASM=ON#lineaddedbyAgent
VALID_NODE_CHECKING_REGISTRATION_ASMNET1LSNR_ASM=SUBNET#lineaddedbyAgent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON#lineaddedbyAgent
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN1=OFF#lineaddedbyAgent-DisabledbyAgentbecauseREMOTE_REGISTRATION_ADDRESSisset
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN2=ON#lineaddedbyAgent
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN2=OFF#lineaddedbyAgent-DisabledbyAgentbecauseREMOTE_REGISTRATION_ADDRESSisset
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON#lineaddedbyAgent
VALID_NODE_CHECKING_REGISTRATION_LISTENER=SUBNET#lineaddedbyAgent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_ASMNET2LSNR_ASM=ON#lineaddedbyAgent
VALID_NODE_CHECKING_REGISTRATION_ASMNET2LSNR_ASM=SUBNET#lineaddedbyAgent
With the default configuration you don’t have to touch anything.
24. Restart the Grid Infrastructure to verify that all resources can startup fine
as root OS user
# /u01/app/19.11.0.0/grid/bin/crsctl stop cluster -all
# /u01/app/19.11.0.0/grid/bin/crsctl start cluster -all
# /u01/app/19.11.0.0/grid/bin/crsctl stat res -t
25. Run CVU to verify the health of the Grid Infrastructure
as grid OS user
Setup ssh user equivalence
/u01/app/19.11.0.0/grid/oui/prov/resources/scripts/sshUserSetup.sh -user grid -hosts "hostname1 hostname2" -noPromptPassphrase -confirm -advanced
Run CVU
$ cluvfy stage -post crsinst -n all -verbose
...
Post-check for cluster services setup was successful.
Warnings were encountered during execution of CVU verification request "stage -post crsinst".
Verifying OCR Integrity ...WARNING
PRVG-6017 : OCR backup is located in the same disk group "+DATA" as OCR.
The above warnings is expected.
26. Query the current network configuration in the metadata database
# odacli list-networks -u 0
--nodenumber/-u option is deprecated.
ID Name NIC Interface Type IP Address Subnet Mask Gateway VLAN ID
---------------------------------------- -------------------- ------------ --------------- ------------------ ------------------ ------------------ --------
5d087c04-2d3a-4702-929e-4b4f802f38f0 ASM-network privasm BRIDGE 192.168.17.2 255.255.255.128
4334eaac-20f6-42b7-95fd-bd743b20b562 Public-network pubnet BRIDGE <old hostip1> <old netmask> <old gateway>
d1cdb9a7-c84b-4066-babf-6024f17b4930 Private-network icbond0 INTERNAL 192.168.16.24 255.255.255.0
# odacli list-networks -u 1
--nodenumber/-u option is deprecated.
ID Name NIC Interface Type IP Address Subnet Mask Gateway VLAN ID
---------------------------------------- -------------------- ------------ --------------- ------------------ ------------------ ------------------ --------
1853e344-b87b-4f8a-8e53-a5e88c65232f ASM-network privasm BRIDGE 192.168.17.3 255.255.255.128
f20064ad-3f55-4830-8d03-1634ac6515cb Public-network pubnet BRIDGE <old hostip2> <old netmask> <old gateway>
7b62fc72-4f9d-4b8a-9b99-ab939ed124af Private-network icbond0 INTERNAL 192.168.16.25 255.255.255.0
27. Stop the DCS agent on both nodes
# systemctl stop initdcsagent
28. Take a backup of the mysql db on both nodes
# /opt/oracle/dcs/mysql/bin/mysqldump --defaults-file=/opt/oracle/dcs/mysql/etc/mysqldb.cnf dcsagentdb > /tmp/dcsagentdb.sql
Restore can be done with
# /opt/oracle/dcs/mysql/bin/mysql --defaults-file=/opt/oracle/dcs/mysql/etc/mysqldb.cnf dcsagentdb < /tmp/dcsagentdb.sql
29. Connect to the Mysql DB and change the IP/subnet/gateway/VIPs/SCANs on both nodes
Change the public IP, subnet, gateway
# /opt/oracle/dcs/mysql/bin/mysql --defaults-file=/opt/oracle/dcs/mysql/etc/mysqldb.cnf
mysql> use dcsagentdb
mysql> select ipaddress,subnetmask,gateway,nicname,nodenumber from Network;
+----------------------+------------------------+------------------------+---------+------------+
| ipaddress | subnetmask | gateway | nicname | nodenumber |
+----------------------+------------------------+------------------------+---------+------------+
| 192.168.17.3 | 255.255.255.128 | | privasm | 1 |
| <PubIp of DBS1n1> | <NetMask of DBS1n1> | <Gateway of DBS1n1> | ens3 | 0 |
| <oldPubIP of BMn1> | <oldNetMask of BMn1> | <oldGateway of BMn1> | pubnet | 0 |
| 192.168.17.133 | 255.255.255.252 | | ens5 | 0 |
| 192.168.17.2 | 255.255.255.128 | | privasm | 0 |
| 192.168.17.134 | 255.255.255.252 | | ens5 | 1 |
| <PubIp of DBS1n2> | <NetMask of DBS1n2> | <Gateway of DBS1n2> | ens3 | 0 |
| 192.168.16.25 | 255.255.255.0 | | icbond0 | 1 |
| <PubIp of DBS2n1> | <NetMask of DBS2n1> | <Gateway of DBS2n1> | ens3 | 1 |
| 192.168.17.4 | 255.255.255.128 | | ens4 | 0 |
| 192.168.17.5 | 255.255.255.128 | | ens4 | 1 |
| 192.168.17.7 | 255.255.255.128 | | ens4 | 1 |
| 192.168.17.130 | 255.255.255.252 | | ens5 | 1 |
| 192.168.16.24 | 255.255.255.0 | | icbond0 | 0 |
| 192.168.17.6 | 255.255.255.128 | | ens4 | 0 |
| <oldPubIp of BMn2> | <oldNetMask of BMn2> | <oldGateway of BMn2> | pubnet | 1 |
| <PubIp of DBS2n2> | <NetMask of DBS2n2> | <Gateway of DBS2n2> | ens3 | 1 |
| 192.168.17.129 | 255.255.255.252 | | ens5 | 0 |
+----------------------+------------------------+------------------------+---------+------------+
18 rows in set (0.00 sec)
Where BMn1 and BMn2 are Bare Metal host1. host2 and DBS1n1 and DBSn1n2 is DBSystem host1, host2.
Update the IP/network/gateway
mysql> update Network set IPADDRESS='<new hostip1>',subnetmask='<new netmask>',gateway='<new gateway>' where nicname='pubnet' and nodenumber='0';
myslq> update Network set IPADDRESS='<new hostip2>',subnetmask='<new netmask>',gateway='<new gateway>' where nicname='pubnet' and nodenumber='1';
Verify the changes
mysql> select ipaddress,subnetmask,gateway,nicname,nodenumber from Network;
+----------------------+------------------------+------------------------+---------+------------+
| ipaddress | subnetmask | gateway | nicname | nodenumber |
+----------------------+------------------------+------------------------+---------+------------+
| 192.168.17.3 | 255.255.255.128 | | privasm | 1 |
| <PubIp of DBS1n1> | <oldNetMask of DBS1n1> | <Gateway of DBS1n1> | ens3 | 0 |
| <newPubIP of BMn1> | <newNetMask of BMn1> | <newGateway of BMn1> | pubnet | 0 |
| 192.168.17.133 | 255.255.255.252 | | ens5 | 0 |
| 192.168.17.2 | 255.255.255.128 | | privasm | 0 |
| 192.168.17.134 | 255.255.255.252 | | ens5 | 1 |
| <PubIp of DBS1n2> | <NetMask of DBS1n2> | <Gateway of DBS1n2> | ens3 | 0 |
| 192.168.16.25 | 255.255.255.0 | | icbond0 | 1 |
| <PubIp of DBS2n1> | <NetMask of DBS2n1> | <Gateway of DBS2n1> | ens3 | 1 |
| 192.168.17.4 | 255.255.255.128 | | ens4 | 0 |
| 192.168.17.5 | 255.255.255.128 | | ens4 | 1 |
| 192.168.17.7 | 255.255.255.128 | | ens4 | 1 |
| 192.168.17.130 | 255.255.255.252 | | ens5 | 1 |
| 192.168.16.24 | 255.255.255.0 | | icbond0 | 0 |
| 192.168.17.6 | 255.255.255.128 | | ens4 | 0 |
| <newPubIp of BMn2> | newNetMask of BMn2> | <newGateway of BMn2> | pubnet | 1 |
| <PubIp of DBS2n2> | <NetMask of DBS2n2> | <Gateway of DBS2n2> | ens3 | 1 |
| 192.168.17.129 | 255.255.255.252 | | ens5 | 0 |
+----------------------+------------------------+------------------------+---------+------------+
Change SCAN IPs
mysql> select * from Network_ipAddresses;
+--------------------------------------+---------------------+
| Network_id | ipAddresses |
+--------------------------------------+---------------------+
| 4334eaac-20f6-42b7-95fd-bd743b20b562 | <old scanip2 of BM> |
| 4334eaac-20f6-42b7-95fd-bd743b20b562 | <old scanip1 of BM> |
| f20064ad-3f55-4830-8d03-1634ac6515cb | <old scanip2 of BM> |
| f20064ad-3f55-4830-8d03-1634ac6515cb | <old scanip1 of BM> |
| 3f5acfae-81ac-472c-bc56-54eeb2849be6 | <scanip1 of DBS1> |
| 3f5acfae-81ac-472c-bc56-54eeb2849be6 | <scanip2 of DBS1> |
| f95d8dc3-2461-41ca-850b-28a10c08f685 | <scanip1 of DBS1> |
| f95d8dc3-2461-41ca-850b-28a10c08f685 | <scanip2 of DBS1> |
| 7abd0f0a-f033-449f-9bcd-8768cd66c0a8 | <scanip2 of DBS2> |
| 7abd0f0a-f033-449f-9bcd-8768cd66c0a8 | <scanip1 of DBS2> |
| 7ba3ebf3-0521-4512-b6d8-d11abd8987bc | <scanip2 of DBS2> |
| 7ba3ebf3-0521-4512-b6d8-d11abd8987bc | <scanip1 of DBS2> |
+--------------------------------------+--------------+
12 rows in set (0.00 sec)
mysql> update Network_ipAddresses set IPADDRESSES='<new scanip1 of BM>' where IPADDRESSES='<old scanip1 of BM>';
mysql> update Network_ipAddresses set IPADDRESSES='<new scanip2 of BM>' where IPADDRESSES='<old scanip2 of BM>';
mysql> select * from Network_ipAddresses;
+--------------------------------------+---------------------+
| Network_id | ipAddresses |
+--------------------------------------+---------------------+
| 4334eaac-20f6-42b7-95fd-bd743b20b562 | <new scanip2 of BM> |
| 4334eaac-20f6-42b7-95fd-bd743b20b562 | <new scanip1 of BM> |
| f20064ad-3f55-4830-8d03-1634ac6515cb | <new scanip2 of BM> |
| f20064ad-3f55-4830-8d03-1634ac6515cb | <new scanip1 of BM> |
| 3f5acfae-81ac-472c-bc56-54eeb2849be6 | <scanip1 of DBS1> |
| 3f5acfae-81ac-472c-bc56-54eeb2849be6 | <scanip2 of DBS1> |
| f95d8dc3-2461-41ca-850b-28a10c08f685 | <scanip1 of DBS1> |
| f95d8dc3-2461-41ca-850b-28a10c08f685 | <scanip2 of DBS1> |
| 7abd0f0a-f033-449f-9bcd-8768cd66c0a8 | <scanip2 of DBS2> |
| 7abd0f0a-f033-449f-9bcd-8768cd66c0a8 | <scanip1 of DBS2> |
| 7ba3ebf3-0521-4512-b6d8-d11abd8987bc | <scanip2 of DBS2> |
| 7ba3ebf3-0521-4512-b6d8-d11abd8987bc | <scanip1 of DBS2> |
+--------------------------------------+---------------------+
12 rows in set (0.00 sec)
mysql> select * from SysInstance_ipAddresses;
+--------------------------------------------+---------------------+
| SysInstance_id | ipAddresses |
+--------------------------------------------+---------------------+
| 3df7fa6f-1350-41aa-b8f4-40857521984d | <old scanip1 of BM> |
| 3df7fa6f-1350-41aa-b8f4-40857521984d | <old scanip2 of BM> |
| 72c1f16d-5c02-4235-86fe-cc5de83caa84 | <scanip1 of DBS1> |
| 72c1f16d-5c02-4235-86fe-cc5de83caa84 | <scanip2 of DBS1> |
| d79ae81f-efd7-42d4-ad47-3e53b1ce318f | <scanip1 of DBS2> |
| d79ae81f-efd7-42d4-ad47-3e53b1ce318f | <scanip2 of DBS2> |
+--------------------------------------+---------------------------+
mysql> update SysInstance_ipAddresses set ipAddresses=''<new scanip1 of BM>' where ipAddresses='<old scanip1 of BM>;
mysql> update SysInstance_ipAddresses set ipAddresses=''<new scanip2 of BM>' where ipAddresses='<old scanip2 of BM>';
mysql> select * from SysInstance_ipAddresses;
+--------------------------------------+---------------------+
| SysInstance_id | ipAddresses |
+--------------------------------------+---------------------+
| 3df7fa6f-1350-41aa-b8f4-40857521984d | <new scanip1 of BM> |
| 3df7fa6f-1350-41aa-b8f4-40857521984d | <new scanip2 of BM> |
| 72c1f16d-5c02-4235-86fe-cc5de83caa84 | <scanip1 of DBS1> |
| 72c1f16d-5c02-4235-86fe-cc5de83caa84 | <scanip2 of DBS1> |
| d79ae81f-efd7-42d4-ad47-3e53b1ce318f | <scanip1 of DBS2> |
| d79ae81f-efd7-42d4-ad47-3e53b1ce318f | <scanip2 of DBS2> |
+--------------------------------------+---------------------+
6 rows in set (0.00 sec)
Change VIPs
mysql> select * from VIPS;
+--------------------------------------+--------------+------------+---------------+
| NW_ID | ipAddress | nodeNumber | vipName |
+--------------------------------------+--------------+------------+---------------+
| 4334eaac-20f6-42b7-95fd-bd743b20b562 | <old vip1 of BM> | 0 | <vipname1 of BM> |
| 4334eaac-20f6-42b7-95fd-bd743b20b562 | <old vip2 of BM> | 1 | <vipname2 of BM> |
| f20064ad-3f55-4830-8d03-1634ac6515cb | <old vip1 of BM> | 0 | <vipname1 of BM> |
| f20064ad-3f55-4830-8d03-1634ac6515cb | <old vip2 of BM> | 1 | <vipname2 of BM> |
| 3f5acfae-81ac-472c-bc56-54eeb2849be6 | <vip1 of DBS1> | 0 | <vipname1 of DBS1> |
| 3f5acfae-81ac-472c-bc56-54eeb2849be6 | <vip2 of DBS1> | 1 | <vipname2 of DBS1> |
| f95d8dc3-2461-41ca-850b-28a10c08f685 | <vip1 of DBS1> | 0 | <vipname1 of DBS1> |
| f95d8dc3-2461-41ca-850b-28a10c08f685 | <vip2 of DBS1> | 1 | <vipname2 of DBS1> |
| 7abd0f0a-f033-449f-9bcd-8768cd66c0a8 | <vip1 of DBS2> | 0 | <vipname1 of DBS2> |
| 7abd0f0a-f033-449f-9bcd-8768cd66c0a8 | <vip2 of DBS2> | 1 | <vipname2 of DBS2> |
| 7ba3ebf3-0521-4512-b6d8-d11abd8987bc | <vip1 of DBS2> | 0 | <vipname1 of DBS2> |
| 7ba3ebf3-0521-4512-b6d8-d11abd8987bc | <vip2 of DBS2> | 1 | <vipname2 of DBS2> |
+--------------------------------------+--------------+------------+-------------------+
12 rows in set (0.00 sec)
mysql> update VIPS set IPADDRESS='<new vip1 of BM>' where IPADDRESS='<old vip1 of BM>';
mysql> update VIPS set IPADDRESS='<new vip2 of BM>' where IPADDRESS='<old vip2 of BM>';
mysql> select * from VIPS;
+--------------------------------------+--------------+------------+---------------+
| NW_ID | ipAddress | nodeNumber | vipName |
+--------------------------------------+--------------+------------+---------------+
| 4334eaac-20f6-42b7-95fd-bd743b20b562 | <new vip1 of BM> | 0 | <vipname1 of BM> |
| 4334eaac-20f6-42b7-95fd-bd743b20b562 | <new vip2 of BM> | 1 | <vipname2 of BM> |
| f20064ad-3f55-4830-8d03-1634ac6515cb | <new vip1 of BM> | 0 | <vipname1 of BM> |
| f20064ad-3f55-4830-8d03-1634ac6515cb | <new vip2 of BM> | 1 | <vipname2 of BM> |
| 3f5acfae-81ac-472c-bc56-54eeb2849be6 | <vip1 of DBS1> | 0 | <vipname1 of DBS1> |
| 3f5acfae-81ac-472c-bc56-54eeb2849be6 | <vip2 of DBS1> | 1 | <vipname2 of DBS1> |
| f95d8dc3-2461-41ca-850b-28a10c08f685 | <vip1 of DBS1> | 0 | <vipname1 of DBS1> |
| f95d8dc3-2461-41ca-850b-28a10c08f685 | <vip2 of DBS1> | 1 | <vipname2 of DBS1> |
| 7abd0f0a-f033-449f-9bcd-8768cd66c0a8 | <vip1 of DBS2> | 0 | <vipname1 of DBS2> |
| 7abd0f0a-f033-449f-9bcd-8768cd66c0a8 | <vip2 of DBS2> | 1 | <vipname2 of DBS2> |
| 7ba3ebf3-0521-4512-b6d8-d11abd8987bc | <vip1 of DBS2> | 0 | <vipname1 of DBS2> |
| 7ba3ebf3-0521-4512-b6d8-d11abd8987bc | <vip2 of DBS2> | 1 | <vipname2 of DBS2> |
+--------------------------------------+--------------+------------+---------------+
12 rows in set (0.00 sec)
mysql> select * from SysInstance_vip ;
+--------------------------------------+--------------+------------+---------------+
| SysInstance_id | ipAddress | nodeNumber | vipName |
+--------------------------------------+--------------+------------+---------------+
| 3df7fa6f-1350-41aa-b8f4-40857521984d | <old vip1 of BM> | 0 | <vipname1 of BM> |
| 3df7fa6f-1350-41aa-b8f4-40857521984d | <old vip2 of BM> | 1 | <vipname2 of BM> |
| 72c1f16d-5c02-4235-86fe-cc5de83caa84 | <vip1 of DBS1> | 0 | <vipname1 of DBS1> |
| 72c1f16d-5c02-4235-86fe-cc5de83caa84 | <vip2 of DBS1> | 1 | <vipname2 of DBS1> |
| d79ae81f-efd7-42d4-ad47-3e53b1ce318f | <vip1 of DBS2> | 0 | <vipname1 of DBS2> |
| d79ae81f-efd7-42d4-ad47-3e53b1ce318f | <vip2 of DBS2> | 1 | <vipname2 of DBS2> |
+--------------------------------------+--------------+------------+-------------------+
mysql> update SysInstance_vip set ipAddress='<new vip1 of BM>' where vipName='<vipname1 of BM>';
mysql> update SysInstance_vip set ipAddress='<new vip2 of BM>' where vipName='<vipname2 of BM>';
mysql> select * from SysInstance_vip ;
+--------------------------------------+---------------+-----------+---------------+
| SysInstance_id | ipAddress | nodeNumber | vipName |
+--------------------------------------+---------------+-----------+---------------+
| 3df7fa6f-1350-41aa-b8f4-40857521984d | <new vip1 of BM> | 0 | <vipname1 of BM> |
| 3df7fa6f-1350-41aa-b8f4-40857521984d | <new vip2 of BM> | 1 | <vipname2 of BM> |
| 72c1f16d-5c02-4235-86fe-cc5de83caa84 | <vip1 of DBS1> | 0 | <vipname1 of DBS1> |
| 72c1f16d-5c02-4235-86fe-cc5de83caa84 | <vip2 of DBS1> | 1 | <vipname2 of DBS1> |
| d79ae81f-efd7-42d4-ad47-3e53b1ce318f | <vip1 of DBS2> | 0 | <vipname1 of DBS2> |
| d79ae81f-efd7-42d4-ad47-3e53b1ce318f | <vip2 of DBS2> | 1 | <vipname2 of DBS2> |
+--------------------------------------+------------------+---+------+-------------+
mysql> quit;
30. Start the DCS agent on both nodes
# systemctl start initdcsagent
31. Validate the metadata update by using "odacli list-networks"
# odacli list-networks -u 0
ID Name NIC Interface Type IP Address Subnet Mask Gateway VLAN ID
---------------------------------------- -------------------- ------------ --------------- ------------------ ------------------ ------------------ --------
5d087c04-2d3a-4702-929e-4b4f802f38f0 ASM-network privasm BRIDGE 192.168.17.2 255.255.255.128
4334eaac-20f6-42b7-95fd-bd743b20b562 Public-network pubnet BRIDGE <new hostip1> <new netmask> <new gateway>
d1cdb9a7-c84b-4066-babf-6024f17b4930 Private-network icbond0 INTERNAL 192.168.16.24 255.255.255.0
# odacli list-networks -u 1
ID Name NIC Interface Type IP Address Subnet Mask Gateway VLAN ID
---------------------------------------- -------------------- ------------ --------------- ------------------ ------------------ ------------------ --------
1853e344-b87b-4f8a-8e53-a5e88c65232f ASM-network privasm BRIDGE 192.168.17.3 255.255.255.128
f20064ad-3f55-4830-8d03-1634ac6515cb Public-network pubnet BRIDGE <new hostip2> <new netmask> <new gateway>
7b62fc72-4f9d-4b8a-9b99-ab939ed124af Private-network icbond0 INTERNAL 192.168.16.25 255.255.255.0
32. Sync up the DNS and NTP related metadata in the metadata database in case any of them has changed. Run it only on node0.
as root OS user
Update the registry
# chown grid:oinstall /u01/app/19.11.0.0/grid/bin/osdbagrp
# odacli update-registry -n sysinstance -f
# chown root:oinstall /u01/app/19.11.0.0/grid/bin/osdbagrp
Check the configuration before and after the registry update
# odacli describe-system
System Information
----------------------------------------------------------------
Name: testoda-c
Domain Name: mydomain.com
Time Zone: "Europe/Budapest"
DB Edition: EE
DNS Servers: <dns1> <dns2> <dns3>
NTP Servers: <ntp1> <ntp2>
33. Verify the connectivity to your database(s). You might need to change the configuration files under the RDBMS home's network/admin folder
as oracle OS user
$ export ORACLE_HOME=/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1
$ export PATH=$ORACLE_HOME/bin:$PATH
$ export ORACLE_SID=dbonbm1
$ cat /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_10/network/admin/tnsnames.ora
$ cat /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_10/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
DBONBM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = odabm-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbonbm.us.oracle.com)
)
)
$ srvctl status database -database dbonbm
Instance dbonbm1 is running on node <BM host1>
Instance dbonbm2 is running on node <BM host2>
# odacli list-databases
ID DB Name DB Type DB Version CDB Class Shape Storage Status DbHomeID
---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------
a4b566ef-702a-4d40-847b-4736aaaf6bbf dbonbm RAC 19.11.0.0.210420 true OLTP odb1 ASM CONFIGURED 71664706-214f-4bf3-bd5a-4059e65f81b5
# odacli list-dbhomes
ID Name DB Version Home Location Status
---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------
71664706-214f-4bf3-bd5a-4059e65f81b5 OraDB19000_home10 19.11.0.0.210420 /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1 CONFIGURED
$ sqlplus sys@dbonbm as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jul 23 17:58:21 2021
Version 19.11.0.0.0
Copyright (c) 1982, 2020, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.11.0.0.0
SQL> exit;
34. Open the BUI and try to create a dummy database and perform database related lifecycle operations to verify that everything works as expected
35. Any additional interfaces, that require IP/subnet/gateway changes, have to be reconfigured with the ODA tooling.
36. Updating public network could affect the application KVM guests that use it, hence their network configuration needs to be updated as well.
DBSystem related network changes are covered in MOS Note 2797758.1 How To Change DBSystem Nodes' Public IP / Network After Deployment on ODA Release 19.10 and later