The other day a colleague mentioned an interesting side-effect of CMAN: your clients never have to change the connection string ever again. I’ve used CMAN for various other reasons (firewall channeling, etc.) but never thought of it as a solution to ever changing connection strings when you frequently move databases around. And from experience I can tell that for some application support teams changing connection strings can be a real struggle.
For this use case give the CMAN servers a round-robin DNS alias and publish service names that don’t need changing. This way, wherever your CMANs and databases are located the connection string for the client remains the same, e.g.:
my_service = (DESCRIPTION = (FAILOVER = ON) (LOAD_BALANCE = OFF) (TRANSPORT_CONNECT_TIMEOUT = 3) (CONNECT_TIMEOUT = 6) (RETRY_COUNT = 1) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = cmans)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = my_service)) ) So far everybody is happy…