SDP is easy to set and you can do it in few steps. For easy understanding I'm using 2 node Exadata.
tnsnames.ora file is also added in this page for reference.
Pre-setup
It is better to use dcli to propagate these changes to all the nodes.
Two files have to be edited to enable SDP setup in each node and those nodes have to be rebooted.
create a text file called node with all the node name
ed05db01
ed05db02
Check if /etc/infiniband/openib.conf
SDP_LOAD=yes
Use the below script to do presetup
# Script name :preset.sh
sed -i "/^use both server/c\use both server * :" /etc/ofed/libsdp.conf
sed -i "/^use both client/c\use both client * :" /etc/ofed/libsdp.conf
grep sdp_zcopy_thresh /etc/modprobe.conf
if [ $? = 0 ] ; then
sed -i "/sdp_zcopy_thresh/c\options ib_sdp sdp_zcopy_thresh=0 recv_poll=0 sdp_apm_enable=0" /etc/modprobe.conf
else
echo "options ib_sdp sdp_zcopy_thresh=0 recv_poll=0 sdp_apm_enable=0" >> /etc/modprobe.conf
fi
chmod 750 preset.sh
dcli -g node -l root -x preset.sh
Some cases I had seen that above changes took effect without rebooting the node. I have no explanation for that. So at the end if you don't see sdp not working, reboot the node
dcli -g node -l root -x preset.sh
Some cases I had seen that above changes took effect without rebooting the node. I have no explanation for that. So at the end if you don't see sdp not working, reboot the node
dcli -g node -l root reboot
Now you need internal IPs for each node, so for us we need 2 IPs.
NOTE: These IPs shouldnt not be pingable as of now, you should get 100% pocket loss.
All ips should be part of your internal subnet. by default it'll be configured in bondib0
Now you need internal IPs for each node, so for us we need 2 IPs.
NOTE: These IPs shouldnt not be pingable as of now, you should get 100% pocket loss.
All ips should be part of your internal subnet. by default it'll be configured in bondib0
Setup
[root@ed05db01 admin]# ifconfig bondib0|grep "inet addr"
inet addr:192.168.169.41 Bcast:192.168.175.255 Mask:255.255.248.0
Use a IP calculator available via google. I usually use http://jodies.de/ipcalc
provide your ip: 192.168.169.41 and netmask: 255.255.248.0 and pick any two unpingable ip from range between "HostMin" and "HostMax" and add those entry into /etc/hosts of each node of your rack
192.168.170.207 ed05db01-ibvip.comp.com ed05db01-ibvip
192.168.170.208 ed05db02-ibvip.comp.com ed05db02-ibvip
Now create network with IP "Network" IP you got from the calculator
inet addr:192.168.169.41 Bcast:192.168.175.255 Mask:255.255.248.0
Use a IP calculator available via google. I usually use http://jodies.de/ipcalc
provide your ip: 192.168.169.41 and netmask: 255.255.248.0 and pick any two unpingable ip from range between "HostMin" and "HostMax" and add those entry into /etc/hosts of each node of your rack
192.168.170.207 ed05db01-ibvip.comp.com ed05db01-ibvip
192.168.170.208 ed05db02-ibvip.comp.com ed05db02-ibvip
Now create network with IP "Network" IP you got from the calculator
/u01/app/11.2.0.4/grid/bin/srvctl add network -k 2 -S 192.168.168.0/255.255.248.0/bondib0
You can validate this by
/u01/app/11.2.0.4/grid/bin/crsctl stat res -t | grep net
Based on /etc/hosts entry now you can create vip for each node, but can be executed from one node
/u01/app/11.2.0.4/grid/bin/srvctl add vip -n ed05db01 -A ed05db01-ibvip/255.255.248.0/bondib0 -k 2
/u01/app/11.2.0.4/grid/bin/srvctl add vip -n ed05db02 -A ed05db02-ibvip/255.255.248.0/bondib0 -k 2
Now add and start SDP listener from one node, run it as GI owner:
/u01/app/11.2.0.4/grid/bin/srvctl add listener -l LISTENER_IB -k 2 -p TCP:1522,/SDP:1522
/u01/app/11.2.0.4/grid/bin/srvctl start listener -l LISTENER_IB
/u01/app/11.2.0.4/grid/bin/srvctl start listener -l LISTENER_IB
Now to know what VIP is configured for each node, execute
srvctl status vip –i ed05db01
srvctl status vip –i ed05db02
Now register your remote listener
alter system set remote_listener="ed05db-scan1:1521" scope=both;
After this tnsnames.ora have to be edited with these information tnsnames.ora file
After this register the sdp with the database
alter system set listener_networks='((NAME=network2) (LOCAL_LISTENER=LISTENER_IBLOCAL)(REMOTE_LISTENER=LISTENER_IBREMOTE))', '((NAME=network1)(LOCAL_LISTENER=LISTENER_IPLOCAL)(REMOTE_LISTENER=LISTENER_IPREMOTE))' scope=both;