Обеспечивает ли Oracle RAC полностью прозрачное аварийное переключение между узлами?
Вопрос
У меня есть приложение, работающее на Oracle 10g с использованием Hibernate.Мне интересно, можно ли обеспечить высокую доступность приложения в случае сбоев базы данных без каких-либо изменений кода на стороне приложения, используя Oracle RAC.
У меня есть два узла Oracle RAC для приложения, и в идеале я хотел бы иметь возможность отключить один из узлов и продолжить работу приложения без каких-либо исключений, достигающих кода приложения.
Мое приложение отправляет запросы выбора, вставки, обновления и удаления в базу данных.
Я читал о прозрачном переключении приложений при сбое, но сайты, которые я нашел, предполагают, что только избранные запросы могут быть прозрачными, и что все остальные типы запросов приведут к выдаче исключений и необходимости повторного выполнения запроса.Я бы предпочел избегать этого, поскольку не хочу добавлять дополнительную обработку исключений в каждую часть моей кодовой базы, которая выполняет запросы к базе данных.
Решение
Извините, но не совсем.Вы смотрите на прозрачное аварийное переключение приложений (TAF), а Oracle в настоящее время не поддерживает TAF ни для чего, кроме операторов SELECT.DML необходимо будет перезапустить.Взгляни на этот статья с хорошим объяснением того, что RAC (и TAF) могут для вас сделать.
Несмотря ни на что, вам нужно будет уметь обрабатывать сбои транзакций.Это важная причина, по которой у нас есть транзакции...чтобы мы могли изящно справляться с неудачами.Помните также, что аппаратный сбой (от которого вас защищает RAC) — это лишь одна из множества причин, по которым транзакция может не удаться.
Удачи, приятного кодирования!