Цель при закрытии для обслуживания (или холодного резервного копирования) состоит в том, чтобы база данных оставалась в согласованном состоянии без необходимости отката / восстановления при запуске.
Есть 3 команды SQL * Plus, shutdown
которые достигают этого в теории, и все они немедленно предотвращают подключение новых сеансов к экземпляру:
shutdown normal
или просто shutdown
: ждет отключения всех сеансов. Этот режим редко используется на практике, потому что он опирается на клиентов с хорошим поведением, которые не оставляют соединения открытыми. Раньше это был единственный shutdown
режим, который не отменял выполнение транзакций.
shutdown transactional
: отключает сеансы после завершения текущих транзакций, предотвращая начало новых транзакций.
shutdown immediate
: немедленно отключает все сеансы и откатывает прерванные транзакции перед завершением работы. Обратите внимание, что отключение происходит немедленно, но завершение работы может не происходить, так как выполнение любых прерванных транзакций может потребовать времени для отката.
Четвертый режим shutdown
есть shutdown abort
. Это как потянув за шнур питания - экземпляр останавливается в настоящее время без какой - либо очистки. Вы обычно хотите снова запустить базу данных и сразу же после нее полностью отключиться, как в вашем примере. Руководство по концепциям гласит :
Этот режим предназначен для аварийных ситуаций, например, когда никакая другая форма выключения не является успешной.
Все примеры, которые вы приводите, выполняют контрольную точку как часть shutdown [normal]
или shutdown immediate
около того явной контрольной точки, предположительно, чтобы уменьшить время, необходимое для восстановления .
общий совет:
- Не используйте
shutdown normal
.
- Используйте только
shutdown transactional
для отключения при посещении , когда вы хотите минимизировать отмененные транзакции (только при посещении, потому что этот вид завершения не гарантирует отключение базы данных вообще, если превышены тайм-ауты).
- Используйте
shutdown immediate
для автоматического отключения или когда вам не нужны текущие транзакции.
- Не используйте
shutdown abort
(плюс запуск / выключение) без необходимости - это было более распространено в более ранних версиях Oracle, чем сегодня. В других ситуациях (не исправлениях / обновлениях), если у вас есть необходимость минимизировать время простоя, этот режим может быть подходящим.
shutdown abort
? Разыгрывая антагониста, если мы можем доверять Oracle для правильного восстановления при отключении питания, разве мы не должны доверять ему во время ashutdown abort
, особенно если это быстрее и мы собираемся немедленно сделать astartup restrict
и ashutdown immediate
? Другими словами, есть ли факты, которые мы можем увидеть, чтобы поддержать страшное предупреждение Oracleshutdown abort
?