From the past few months, I have been delivering a lots of sessions on 11.2 RAC and I must say, there are many new things which are being added to it. There are some more highlighted pieces about the changes and some are not so much. So I have thought that I shall share those new goodies which didn’t qualify to be come in the limelight here 🙂 . Please note that that all what I shall mention is not an earth shattering news and/or internals. These are just notes or pointers about stuff that I found pretty interesting and worth sharing with everyone 🙂 .
So the first goodie is, node pinning!
Before 11.2 RAC, the only way to mention the nodes and their IP configurations was either DNS or in the static file /etc/hosts. This would assign the static IP’s only to the nodes and also, the numbers that would be assigned to the nodes would be unchangeable. But in 11.2, we have, besides DNS(and to some extent /etc/hosts file too but its not recommended to be used), DHCP available as well. This would mean that the IP addresses assigned to the nodes are going to be dynamic and would stay with them for certain time period only. This is also now applicable to the node numbers. They would also be assigned for a time period only and won’t remain the same all the time. So the nodes, which are from the fresh 11.2 cluster, would be unpinned i.e. there is no hard coupling between a node and its number and it may change as well. You can check whether the nodes of yours are pinned or unpinned with the OLSNODES command.
[grid@host01 ~]$ olsnodes -h
Usage: olsnodes [ [-n] [-i] [-s] [-t] [<node> | -l [-p]] | [-c] ] [-g] [-v]
where
-n print node number with the node name
-p print private interconnect address for the local node
-i print virtual IP address with the node name
<node> print information for the specified node
-l print information for the local node
-s print node status - active or inactive
-t print node type - pinned or unpinned
-g turn on logging
-v Run in debug mode; use at direction of Oracle Support only.
-c print clusterware name
On my 3 node RAC running on OEL 5 and with db version 11201, this was the output.
[grid@host01 ~]$ olsnodes -t
host01 Unpinned
host02 Unpinned
host03 Unpinned
And now using the OLSNODES in the debug mode, we can see the node numbers assigned to them as well (we can see it in a more easy manner as well).
[grid@host01 ~]$ olsnodes -v
lang init : Initializing LXL global
main: Initializing CLSS context
memberlist: No of cluster members configured = 256
memberlist: Allocated mem for lease node vector.
memberlist: Leased NodeList entries used = 3.
memberlist: Getting information for nodenum = 1
memberlist: node_name = host01
memberlist: ctx->lsdata->node_num = 1
print data: Printing the node data
host01
memberlist: Getting information for nodenum = 2
memberlist: node_name = host02
memberlist: ctx->lsdata->node_num = 2
print data: Printing the node data
host02
memberlist: Getting information for nodenum = 3
memberlist: node_name = host03
memberlist: ctx->lsdata->node_num = 3
print data: Printing the node data
host03
main: olsnodes executed successfully
term: Terminating LSF
And now with a more easy manner,
[grid@host01 ~]$ olsnodes -n
host01 1
host02 2
host03 3
If you do want to pin a node with its current number, it can be done(and undone) by the following way,
[root@host01 ~]# /u01/app/11.2.0/grid/bin/crsctl pin css -n host03
CRS-4664: Node host03 successfully pinned.
[root@host01 ~]# /u01/app/11.2.0/grid/bin/olsnodes -n
host01 1
host02 2
host03 3
[root@host01 ~]# /u01/app/11.2.0/grid/bin/olsnodes -t
host01 Unpinned
host02 Unpinned
host03 Pinned
[root@host01 ~]#
[root@host01 ~]# /u01/app/11.2.0/grid/bin/crsctl unpin css -n host03
CRS-4667: Node host03 successfully unpinned.
[root@host01 ~]# /u01/app/11.2.0/grid/bin/olsnodes -t -n
host01 1 Unpinned
host02 2 Unpinned
host03 3 Unpinned
[root@host01 ~]# /u01/app/11.2.0/grid/bin/olsnodes -t -n host03
host03 3 Unpinned
[root@host01 ~]#
As I said before, all nodes which are going to be a part a fresh 11.2 RAC installation, would be by default unpinned only. And if you have the nodes from the old RAC installation, they would be considered as pinned by default after 11.2 upgrade. If you are going to attempt to delete a node that is already pinned, before you would proceed , you should unpin the node and then then go ahead.
Now, its not really something which would be serving as I said already I believe but still, it was a new thing for me to know 🙂 . And to be honest, this is really not a useless thing actually as this is a step forward of Oracle to break the hard coupling of a resource tied to a specific node, the way we are accustomed to manage them in the prior versions, something which I shall talk about in the next post. Till then, happy pinning/unpinning 🙂 .

can you give a short summary of the advantage/disadvantage of (un)pinned status?
Is the only difference only in deletion of nodes?
Martin,
If we look at this status, its nothing that being a DBA I would be actually need to be bothered about or have to manage. But as I mentioned in the post, this step is going to help when the requirement to run a resource will not be limited to a specific node(s) but will be completely transparent to it.
Aman….
Hi
This was my exam question last week and still not sure about the answer.
Any help is much appreciated.
Assume that you want to make a connection to the ERP service associated with a newly created RAC database called PROD on a cluster called cluster01 that consists of three nodes: node1,node2 and node3.
Which two connect settings are correctly configured to connect to the ERP service?
A-) ERP=(DESCRIPTION=
(LOAD_BALANCE=on)
<ADDRESS=(Protocol=tcp))))
B-) ERP=(DESCRIPTION=
(LOAD_BALANCE=on)
(ADDRES2=(Protocol=TCP)(Host=node1-vip)(PORT=1521))
(ADDRES=(Protocol=TCP)(Host=node2-vip)(PORT=1521))
(ADDRES=(Protocol=TCP)(Host=node3-vip)(PORT=1521))
DATA=(SERVICE_NAME=ORCL)))
c-) ERP=(DESCRIPTION=
(LOAD_BALANCE=on)
(ADDRES=(Protocol=TCP)(Host=cluster01-scan1)(PORT=1521))
(ADDRES=(Protocol=TCP)(Host=cluster01-scan2)(PORT=1521))
(ADDRES=(Protocol=TCP)(Host=cluster01-scan3)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=ERP)))
d-) url=”jdbc:oracle:thin: @(Description=
<LOAD_BALANCE=on)
(ADDRES=(Protocol=TCP)(Host=cluster01-scan1)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=ERP)))
Nice article Aman !
@ John for your question,The answer is C and D