I would use GoldenGate for information consolidation and distribution, or if I needed to work with other systems like DB2 or SQL Server. But not for this. It's more of an ETL tool in my mind.
Since you want zero down time you should know GoldenGate does not support zero data loss, while Data Guard does.
Also GoldenGate uses bidirectional replication and conflicts are likely to occur in a bi-directional environment.
My understanding is that Oracle Streams will not be actively enhanced so I would not use it without a clear understanding of the product direction.
Data Guard is what you want. it has zero data loss capability, corruption detection, automatic database failover, and unlike GoldeGate you only need EE edition or an Active Data Guard license if you need that option.
Data Guard is designed to do exactly what you need. Double check your network requirements and protection mode and carry on. Fast failover exists for problems like yours.
Have you also considered RAC on Data Guard?
From your requirements, it sounds like you want both databases at both locations to be in sync, and be usable by the application. For the most part, this rules out Data Guard so you will probably want to use Golden Gate. GG can perform two-way replication if needed. That will keep the data in sync.
You could use Active Data Guard to keep the standby in sync and let the application have access to the data, but this access is READ ONLY. As such, it probably rules out Active Data Guard for more applications as most apps will want to write data at least on occasion.
I'm unable to find a good compare of Data Guard and GoldenGate. I see a few compares between it and Active Data Guard ( which seems fair ) but nothing without Active Data Guard.
This might be getting old but...
The sheet on the latest version of GoldenGate claims to do all the the things the OP asked for:
The bi-direction thing still worries me some, but if it works it works
Message was edited by: mseberg