From 18c, we can have Shared Scan Listeners between clusters instead of having different scan listener for each cluster. This will save a lot of IP's and configuration aspect. For example, instead of 10 clusters deploying 3 SCAN VIPs per cluster using a total of 30 IP addresses, with shared SCAN deployments, you only deploy 3 SCAN VIPs for those same 10 clusters, requiring only 3 IP addresses.
Log in to the server cluster on which you want to configure the shared SCAN.
Create a SCAN listener that is exclusive to this shared SCAN cluster, as follows:
$ srvctl add scan_listener -clientcluster geekcluster
Create a new Oracle Notification Service (ONS) resource that is specific to the server cluster.
$ srvctl add ons -clientcluster geekcluster
The srvctl add ons command assigns an ID to the SCAN.
Export the SCAN listener to the client cluster, as follows:
$ srvctl export scan_listener -clientcluster cluster_name -clientdata geekscan
Export the ONS resource to the client cluster, as follows:
$ srvctl export ons -clientcluster cluster_name -clientdata geekscandata
For each SCAN listener, create and set the ORACLE_CONFIG_HOME environment variable. Include the ORA_CONFIG_HOME and TNS_ADMIN parameter settings in this environment variable.
export ORACLE_CONFIG_HOME=$ORACLE_HOME;$ORACLE_HOME/network/admin
Configure shared SCAN on each cluster that will use this service. a.Log in to the client cluster on which you want to configure the shared SCAN.
Add the SCAN to the client cluster, as follows:
$ srvctl add scan -clientdata file_name
Create a SCAN listener that is exclusive to this client cluster, as follows:
$ srvctl add scan_listener -clientdata file_name
Create an ONS resource for this cluster, as follows:
$ srvctl add ons -clientdata file_name
You may have a doubt that , if we use shared scan listeners between cluster how about the failure of VIP, infact all clusters must be in same subnet/nat configured and then even if one of scan ip is not available then other two scan ip's serve the purpose. Also the scan listeners purpose is to provide a single client access naming and direct the connection to respective database client not actually handles the network I/O of database client.
-Suresh
Follow Me!!!