Last week,Some developers ask me how we can connect our Weblogic(in the exalogic) server to exadata,I quickly read the ACS document.
Summaries in briefly,
First of all,you need to define a new LISTENER which is named LISTENER_IB at the Exadata Database server.
[oracle@sba5db01 ~]$ srvctl config listener Name: LISTENER Network: 1, Owner: oracle Home: <CRS home> End points: TCP:1521 Name: LISTENER_IB Network: 2, Owner: oracle Home: <CRS home> End points: TCP:1522/SDP:1522
This listener has to listen our service,remember that one service can register more than one listener.
LSNRCTL> status LISTENER_IB Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_IB))) STATUS of the LISTENER ------------------------ Alias LISTENER_IB Version TNSLSNR for Linux: Version 11.2.0.2.0 - Production Start Date 10-APR-2012 12:06:25 Uptime 2 days 10 hr. 30 min. 27 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/11.2.0.2/grid/network/admin/listener.ora Listener Log File /u01/app/11.2.0.2/grid/log/diag/tnslsnr/sba5db01/listener_ib/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_IB))) (DESCRIPTION=(ADDRESS=(PROTOCOL=sdp)(HOST=192.168.10.111)(PORT=1522))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.10.111)(PORT=1522))) Services Summary... Service "SERVICE_NAME.domain.lokal" has 1 instance(s). Instance "SERVICE_NAME1", status READY, has 1 handler(s) for this service... Service "SYS$SRCUSER_ORA.AV$SRC_QUEUE_44.SERVICE_NAME.domain.LOKAL" has 1 instance(s). Instance "SERVICE_NAME1", status READY, has 1 handler(s) for this service... Service "SYS$SRCUSR_RAC.AV$SRC_QUEUE_21.SERVICE_NAME.domain.LOKAL" has 1 instance(s). Instance "SERVICE_NAME1", status READY, has 1 handler(s) for this service... The command completed successfully LSNRCTL>
This IP which is listened from port 1522 is a virtual IB IPs.
In the hosts files. ### CELL Node Private Interface details 192.168.10.97 sba5cel01-priv.domain.lokal sba5cel01-priv 192.168.10.98 sba5cel02-priv.domain.lokal sba5cel02-priv 192.168.10.99 sba5cel03-priv.domain.lokal sba5cel03-priv 192.168.10.100 sba5cel04-priv.domain.lokal sba5cel04-priv 192.168.10.101 sba5cel05-priv.domain.lokal sba5cel05-priv 192.168.10.102 sba5cel06-priv.domain.lokal sba5cel06-priv 192.168.10.103 sba5cel07-priv.domain.lokal sba5cel07-priv 192.168.10.104 sba5cel08-priv.domain.lokal sba5cel08-priv 192.168.10.105 sba5cel09-priv.domain.lokal sba5cel09-priv 192.168.10.106 sba5cel10-priv.domain.lokal sba5cel10-priv 192.168.10.107 sba5cel11-priv.domain.lokal sba5cel11-priv 192.168.10.108 sba5cel12-priv.domain.lokal sba5cel12-priv 192.168.10.109 sba5cel13-priv.domain.lokal sba5cel13-priv 192.168.10.110 sba5cel14-priv.domain.lokal sba5cel14-priv ### SDP IB IPs 192.168.10.111 sba5db01-ibvip.domain.lokal sba5db01-ibvip 192.168.10.112 sba5db02-ibvip.domain.lokal sba5db02-ibvip 192.168.10.113 sba5db03-ibvip.domain.lokal sba5db03-ibvip 192.168.10.114 sba5db04-ibvip.domain.lokal sba5db04-ibvip 192.168.10.115 sba5db05-ibvip.domain.lokal sba5db05-ibvip 192.168.10.116 sba5db06-ibvip.domain.lokal sba5db06-ibvip 192.168.10.117 sba5db07-ibvip.domain.lokal sba5db07-ibvip 192.168.10.118 sba5db08-ibvip.domain.lokal sba5db08-ibvip
At the database side,look inside the parameters files,
listener_networks='((NAME=network2) (LOCAL_LISTENER=LISTENER_IBLOCAL)(REMOTE_LISTENER=LISTENER_IBREMOTE))’,'((NAME=network1)(LOCAL_LISTENER=LISTENER_IPLOCAL)(REMOTE_LISTENER=LISTENER_IPREMOTE))’
These 4 parameters LISTENER_IBLOCAL,LISTENER_IBREMOTE,LISTENER_IPLOCAL,LISTENER_IPREMOTE have to defined in the TNSNAMES.ORA file (at the dbhome not grid home)
LISTENER_IBREMOTE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = sba5db02-ibvip.domain.lokal)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = sba5db03-ibvip.domain.lokal)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = sba5db04-ibvip.domain.lokal)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = sba5db05-ibvip.domain.lokal)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = sba5db06-ibvip.domain.lokal)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = sba5db07-ibvip.domain.lokal)(PORT = 1522)) (ADDRESS = (PROTOCOL = TCP)(HOST = sba5db08-ibvip.domain.lokal)(PORT = 1522)) ) ) LISTENER_IBLOCAL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = sba5db01-ibvip.domain.lokal)(PORT = 1522)) (ADDRESS = (PROTOCOL = SDP)(HOST = sba5db01-ibvip.domain.lokal)(PORT = 1522)) ) ) LISTENER_IPLOCAL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = sba5db01-ibvip.domain.lokal)(PORT = 1521)) ) ) LISTENER_IPREMOTE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = sba5-scan)(PORT = 1521)) ) )
And finally your connection string like this:
SDP connection
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=SDP)(HOST=sba5db01-ibvip.domain.lokal)(PORT=1522))
(ADDRESS=(PROTOCOL=SDP)(HOST=sba5db02-ibvip.domain.lokal)(PORT=1522))
(ADDRESS=(PROTOCOL=SDP)(HOST=sba5db03-ibvip.domain.lokal)(PORT=1522))
(ADDRESS=(PROTOCOL=SDP)(HOST=sba5db04-ibvip.domain.lokal)(PORT=1522))
(ADDRESS=(PROTOCOL=SDP)(HOST=sba5db05-ibvip.domain.lokal)(PORT=1522))
(ADDRESS=(PROTOCOL=SDP)(HOST=sba5db06-ibvip.domain.lokal)(PORT=1522))
(ADDRESS=(PROTOCOL=SDP)(HOST=sba5db07-ibvip.domain.lokal)(PORT=1522))
(ADDRESS=(PROTOCOL=SDP)(HOST=sba5db08-ibvip.domain.lokal)(PORT=1522)))
(CONNECT_DATA=(SERVICE_NAME=SERVICE_NAME.domain.lokal)))