I use what is below to periodically gather what the load balancing advisory posts. The data reflects the percentage of connections to distribute to each instance for a given service in a RAC.
#!/home/oracle/local/bin/python
import cx_Oracle, string
conn = cx_Oracle.connect(mode = cx_Oracle.SYSDBA)
cursor = conn.cursor()
cursor.execute("select to_char(from_tz(enq_time,'GMT') at time zone sessiontimezone,'YYYY/MM/DD HH24:MI:SS'),t.user_data.srv,t.user_data.payload from sys.sys$service_metrics_tab t order by t.enq_time")
"""
VERSION=1.0 database=wcprod service=wcpfan { {instance=wcprod3 percent=14 flag=GOOD aff=TRUE}{instance=wcprod1 percent=20 flag=GOOD aff=TRUE}{instance=wcprod2 percent=66 flag=GOOD aff=TRUE} }
"""
for r in cursor:
payload = r[2]
dist=payload[payload.find("{ {") + 2:payload.rfind("}")]
while dist.find("}") > 0:
tmp=dist[dist.find("{ {") + 2:dist.rfind("}")]
tmp=tmp[:tmp.find("}")]
instance=tmp[:tmp.find(" ")+1]
instance=instance[instance.find("=")+1:]
tmp=tmp[tmp.find(" ")+1:]
print r[0],instance,
instance=tmp[2:tmp.find(" ")+1]
tmp=tmp[tmp.find(" "):]
instance=instance[instance.find("=")+1:]
tmp=tmp[tmp.find(" ")+1:]
print instance,
instance=tmp[2:tmp.find(" ")+1]
tmp=tmp[tmp.find(" "):]
instance=instance[instance.find("=")+1:]
tmp=tmp[tmp.find(" ")+1:]
print instance
dist=dist[dist.find("}")+1:]