I guess my feel about is would be that you've got two approaches...
Approach 1)
One is to manage failure and planned outages through OS tools. I've used heartbeat etc from the HA Linux project (
http://linux-ha.org/). I've found this really good. I've used it is in a cluster of two servers and in the event of one of the servers in the cluster going down (for planned or unplanned reasons) then the remaining server takes over the IP addresses and services from the downed node. I believe this also supports sharing disk between the two servers although I've never tried this.
Approach 2)
Use the HA cabaility of the services you've mentioned.
* Oracle
Oracle supports various highly available solutions (at various costs!!).
i) The cheapest (In terms of Oracle licensing) is probably having the database on SAN disk. In the event of failure the disks that the database reside are on imported onto a backup server and the database started from their.
ii) Standby database. I believe there is an Oracle licensing costs to this. Basically it works by shipping Oracle Archive logs (basically deltas) over to a replica database where the change are applied. In the event of a failure the database can be brought up and should be very close to up to date.
iii) Oracle RAC. I don't know that much about this. Multiple database instances share the same datafiles via a clustered filesystem (I think).
* Java Services
I've used JBoss clustering and this seems to work very well, although I've only used as a backend to a website using mod_jk.
* Tiscali Backup
I have no idea
Hope something in here helped !!