Я понимаю, что когда вы выполняете откат БД Oracle к точке сохранения, все точки сохранения, отмеченные после этой исходной точки сохранения, стираются, но все ли зафиксированные транзакции после этой точки сохранения также откатываются? Это полное воспоминание о базе данных? Я предполагаю, что да, просто хочу уточнить. Большое спасибо.
точки сохранения оракула
Ответы (1)
Если вы фиксируете свою транзакцию, то все точки сохранения до этого становятся недействительными, поэтому «все совершенные транзакции, начиная с этой точки сохранения, также откатываются» на самом деле не имеет смысла. Вы никогда не сможете откатить коммит.
Использование ROLLBACK с предложением TO SAVEPOINT выполняет следующие операции:
- Откатывает только часть транзакции после точки сохранения. Это не завершает транзакцию.
- Удаляет все точки сохранения, созданные после этой точки сохранения. Именованная точка сохранения сохраняется, поэтому вы можете многократно возвращаться к одной и той же точке сохранения. Предыдущие точки сохранения также сохраняются.
Использование «всех транзакций» в вашем вопросе сбивает с толку. Транзакции и точки сохранения применяются только к одному сеансу — любые транзакции в других сеансах не затрагиваются никакими откатами, которые вы выполняете в своем сеансе.
Откат вашего сеанса до точки сохранения стирает «любые точки сохранения, отмеченные после исходной точки сохранения» в том же сеансе, которые, следовательно, находятся в одной и той же транзакции. Это не влияет ни на какие транзакции или точки сохранения в любых других сеансах, и ваша текущая транзакция все еще активна.
Так что нет, это не полное воспоминание о базе данных. Для этого существуют инструменты, но точки сохранения — это совсем другое вещь.
Подробнее о транзакциях и точках сохранения.