Я изучаю использование Oracle EBR для горячего исправления нашей базы данных приложений. Я искал в Google информацию о EBR. Я понимаю, что EBR позволит пользователю иметь множество версий одного и того же объекта БД, таких как PL/SQL-процедура и т. Д. Пользователь сможет получить доступ к новой версии, когда она включена для этого конкретного пользователя, и переход будет плавным для существующего пользователя т.е. существующие сессии не будут затронуты. Но я не могу понять, как это не повлияет на существующие сеансы. Например, если пользователь «X» находится в середине транзакции, использующей сеанс БД, и для этого пользователя включена новая версия EBR, не повлияет ли она на текущий сеанс БД? или текущая сессия БД не увидит существующий EBR, и только новые сессии будут видеть новую версию. Пожалуйста, дайте мне знать ваше мнение.Редактирование запроса на редактирование
ответ
Издание разрешено на уровне сеанса не на уровне пользователя. Если пользователь X имеет дюжину сеансов, каждый из этих сеансов может использовать другое издание.
Было бы нецелесообразно пытаться изменить выпуск, который используется сеансом в середине транзакции. Я не могу представить, почему вы хотите попробовать. И я бы сильно заявлял, что это не сработает.
Если вы используете переопределение на основе версии, вы бы реалистично разрешили новую редакцию для новых сеансов или между транзакциями в определенном сеансе. Как правило, вы выполняете скользящее обновление, когда каждый сервер приложений перезагружается, и пул соединений настроен на использование новой версии, в то время как пулы соединений на других серверах остаются с использованием старой версии.
Спасибо за ваш комментарий. Если сервер должен перезагрузиться для пула соединений для использования новой версии, разве это не победит цель EBR, которая утверждает, что предоставляет «онлайн» исправление. Кроме того, администратор базы данных, который включит выпуск, не будет знать, находится ли какой-либо пользователь в середине транзакции или нет. – user2032118
@ user2032118 - Если вы используете EBR, у вас обычно будет большое количество серверов приложений. Извлекая один из пула, изменение пула соединений для использования новой редакции, а затем его возврат в пул не должно влиять на время работы приложения. Это не единственный способ развернуть новую версию, это всего лишь один общий выбор. Администратор баз данных может создавать столько выпусков, сколько захочет, пока происходят транзакции. Опять же, каждая сессия должна определить, какое издание использовать и изменить в подходящий момент. –