Trying to wrap my head around TAF

  • From: Charles Schultz <sacrophyte@xxxxxxxxx>
  • To: ORACLE-L <oracle-l@xxxxxxxxxxxxx>
  • Date: Fri, 19 Jun 2009 14:56:36 -0500

[Warning: High acronym content]

So I have been reading the online documentation and giving myself a
headache. =) Interesting how easy it is to get distracted and start reading
about FCF, ONS, FAN and the like. I have two points that I think are
specific to TAF and would appreciate clarification from those that have used
these things in Real Life(tm).
1) The MAA documentation sets constantly refers to using both RAC and DG for
HA.Yet only in a very few places do I see TAF configurations utilizing both
RAC and DG. For example, here is snippet from "Client Failover Best
Practices for Highly Available Oracle Databases: Oracle Database 10g Release
2<http://www.oracle.com/technology/deploy/availability/pdf/MAA_WP_10gR2_ClientFailoverBestPractices.pdf>
":
SALESOCI =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = BOSTON1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = BOSTON2)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = CHICAGO1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = CHICAGO2)(PORT = 1521))
      (LOAD_BALANCE = yes)
    )
    (CONNECT_DATA=
      (SERVICE_NAME=salesOCI)
    )
  )

Additionally, in other bodies of work I very rarely see this combination. I
am curious, if this is a "Best Practice", how come it is not more widely
used? Surely this is not that new (while the whitepaper cited above is from
March of 2009, the features are from Oracle 10gR2). Are folks using this
type of connection string in Real Life, to not only go between nodes in one
cluster, but also to "failover" to standby nodes? Note that in the quoted
example, this is *not* a stretch cluster (between Chicago and Boston! Wow!),
but rather a Primary/Standby environment.

2) Similar to this, I am trying to understand the different TAF parameters
used in 
dbms_service.create_service<http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_serv.htm#i1001480>.
The documentation has very little to say about them (just the bare bones -
the 11g 
documentation<http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28419/d_serv.htm#sthref7056>is
exactly the same I think), and when one implicitly creates a service
by
modifying the SERVICE_NAMES parameter, all the parameters default to null
(according to dba_services). Are those TAF parameters actually used, or are
they merely place-holders for "future" functionality? If they do play a role
in TAF, what and how?

Thanks for your time and help.

-- 
Charles Schultz

Other related posts: