«почему один сегмент отмены может служить только для одной активной транзакции?»
Это просто проектное решение.Вот как отменить сегменты предназначены для работы.Я предполагаю, что это было сделано для решения некоторых проблем, которые могли возникнуть с предыдущим механизмом отката.
Откат (который все еще доступен, но не рекомендуется в пользу отмены) включал явное создание сегментов отката администратором базы данных,и несколько транзакций могут быть назначены одному сегменту отката.Это имело некоторые недостатки, наиболее очевидно, что если одна транзакция, назначенная данному сегменту, генерировала достаточно данных отката, чтобы сегмент был заполнен (и больше не мог расширяться), то другие транзакции, использующие тот же сегмент, не смогут выполнить какую-либо операцию, которая генерируетданные отката.
Я предполагаю, что одной из целей разработки новой функции отмены было предотвращение такого рода межтранзакционных зависимостей.Поэтому они разработали механизм так, чтобы администратор баз данных определял размеры и создавал табличное пространство отмены, но управление сегментами внутри него осуществлялось внутри Oracle.Это позволяет использовать выделенные сегменты для каждой транзакции.Они по-прежнему могут создавать проблемы друг для друга, если табличное пространство заполняется (и не может автоматически расширяться), но на уровне сегмента нет возможности того, что одна транзакция вызовет проблемы для другой.