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
How to Change Public IP within Same Subnet of Grid
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.
How to Add a Cluster Listener on Default Network to Grid
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.
How to Add a Cluster Listener on Second Network to Grid
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.