Nenhuma interrupção durante a manutenção programada, incluindo uma reinicialização do sistema operacional? Oracle RAC. É a única opção real em que posso pensar e, certamente, o único banco de dados de cluster paralelo que eu confiaria para isso. Até mesmo o RAC deve, algumas vezes, ficar inativo para os patches do banco de dados, mas a maioria pode ser aplicada durante a execução.
Se você conseguir lidar com pelo menos 10 a 15 segundos de inatividade, há várias outras opções, incluindo armazenamento em cluster no nível do aplicativo (cluster veritas, cluster da Microsoft, cluster de oracle) ou replicação no nível do banco de dados. Uma infra-estrutura virtual por si só não ajuda muito. O sistema operacional ainda precisa ser desativado.
Também é possível combinar bancos de dados replicados com um cliente multihomed para produção ininterrupta, embora eu não consiga lembrar o nome de tais clientes, no momento, de qualquer maneira.
Eu devo acrescentar que você provavelmente vai querer usar algum tipo de * NIX para mantê-los no mínimo. Tanto quanto me lembro, houve apenas uma atualização que vale a pena reiniciar no RHEL e OEL nos últimos dois anos.
O Oracle RAC é um cluster paralelo. O banco de dados é armazenado em armazenamento compartilhado e acessado por todos os nós simultaneamente. Feito corretamente, deve melhorar o desempenho geral na maioria dos casos e gerar pouca ou nenhuma diferença nos tempos de resposta da consulta. Esta é uma tecnologia complexa, no entanto, e fazer o certo está longe de ser trivial.
Existem algumas outras tecnologias paralelas que prometem cinco noves (99,999% de tempo de atividade, igual a 5 minutos de inatividade por ano), mas elas são muito antigas (VAX) ou muito novas (NDB).