2009-09-30 33 views
1

我有一个使用Hibernate在Oracle 10g上运行的应用程序。我想知道是否可以使用Oracle RAC在应用程序端无需更改代码就数据库故障高度可用。Oracle RAC是否允许节点之间完全透明的故障转移?

我有两个适用于应用程序的Oracle RAC节点,理想情况下希望能够在其中一个节点上拔插头并让应用程序继续运行,而不会有任何异常情况到达应用程序代码。

我的应用程序发送选择,插入,更新和删除查询到数据库。

我一直在阅读有关透明应用切换,但我发现网站暗示只能选择查询可以透明地进行故障切换,并且所有其他类型的查询将会导致被抛出的异常,不得不重新查询-executed。我宁愿避免这种情况,因为我不想为我的代码库的每个部分添加额外的异常处理,从而进行数据库查询。

+0

@ginsoakedboy - 你说得对,在回答之前我的大脑没有完全投入 - 已经删除了我的回答 – dpbradley 2009-09-30 15:46:03

+0

感谢您的参与@dpbradley - 那么您怎么看,您认为答案是否定的?恐怕它是,但我希望有人有一个魔术棒:) – user181903 2009-09-30 15:56:16

+0

恐怕你原来的研究是正确的:-( – dpbradley 2009-09-30 17:29:54

回答

3

对不起,但不是真的。您正在寻找透明应用程序故障切换(TAF),并且Oracle目前不支持除了SELECT语句之外的其他任何操作。 DML将需要重新启动。请看this文章,以便对RAC(和TAF)可以为您做什么做出很好的解释。

无论如何,你将需要能够处理交易失败。这是我们进行交易的一个重要原因......所以我们可以处理失败的事情。同样要意识到,硬件故障(RAC保护您不受什么影响)只是交易可能失败的众多原因之一。

祝你好运,快乐的编码!