Цель при закрытии для обслуживания (или холодного резервного копирования) состоит в том, чтобы база данных оставалась в согласованном состоянии без необходимости отката / восстановления при запуске.
Есть 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?