точки сохранения оракула

Я понимаю, что когда вы выполняете откат БД Oracle к точке сохранения, все точки сохранения, отмеченные после этой исходной точки сохранения, стираются, но все ли зафиксированные транзакции после этой точки сохранения также откатываются? Это полное воспоминание о базе данных? Я предполагаю, что да, просто хочу уточнить. Большое спасибо.


person Franco    schedule 04.04.2017    source источник


Ответы (1)


Если вы фиксируете свою транзакцию, то все точки сохранения до этого становятся недействительными, поэтому «все совершенные транзакции, начиная с этой точки сохранения, также откатываются» на самом деле не имеет смысла. Вы никогда не сможете откатить коммит.

Из документации:

Использование ROLLBACK с предложением TO SAVEPOINT выполняет следующие операции:

  • Откатывает только часть транзакции после точки сохранения. Это не завершает транзакцию.
  • Удаляет все точки сохранения, созданные после этой точки сохранения. Именованная точка сохранения сохраняется, поэтому вы можете многократно возвращаться к одной и той же точке сохранения. Предыдущие точки сохранения также сохраняются.

Использование «всех транзакций» в вашем вопросе сбивает с толку. Транзакции и точки сохранения применяются только к одному сеансу — любые транзакции в других сеансах не затрагиваются никакими откатами, которые вы выполняете в своем сеансе.

Откат вашего сеанса до точки сохранения стирает «любые точки сохранения, отмеченные после исходной точки сохранения» в том же сеансе, которые, следовательно, находятся в одной и той же транзакции. Это не влияет ни на какие транзакции или точки сохранения в любых других сеансах, и ваша текущая транзакция все еще активна.

Так что нет, это не полное воспоминание о базе данных. Для этого существуют инструменты, но точки сохранения — это совсем другое вещь.

Подробнее о транзакциях и точках сохранения.

person Alex Poole    schedule 04.04.2017
comment
Это прекрасно все объясняет. Большое спасибо. - person Franco; 04.04.2017