Strictly speaking, adding a public IP to server at OS-level is no problem, but you can't add any public IP to join any node of RAC at grid-level, because the clusterware must determine the public IP by resolving hostname of its node at startup-time. You can only replace it.
There're two possible scenarios of changing public IP that you have to identify first. Please read my posts for further steps.
- Same Subnet
- Different Subnet
This includes public IP, VIP and SCAN VIP.
Instead of changing public IP. There're some workarounds that are more like adding a public IP to RAC (Grid Infrastructure).
New SCAN VIP on Default Network
If you want the additional IP to listen to the service of cluster databases, you can add a SCAN VIP to grid infrastructure. The clusterware will spawn a new scan listener for this VIP and distribute it to either node 1 or node 2.
New Cluster Listener on Default Network
For listening to the connections from different port (e.g. 1522), you can also add a cluster listener through SRVCTL to work for you.
New Cluster Listener on New Network
You can also add a new subnet (network) to the grid infrastructure to share loading of the default network. After that, you need to add a cluster listener on the second network to make it work for you.
New Standalone Listener
If you want the additional IP specifically to listen to databases, you can add a traditional listener (e.g. LISTENER2) entry to either on grid-level or database-level to service your clients. The standalone listener is irrelavant to the cluster network.