Цитата: Troll ➤ Именно тут кроется корень заблуждения. Что должна или не должна Windows - понятие весьма относительное и кроется в массе параметров, в том числе общесервисных. Команду shutdown дали напрямую, поэтому ее гарантированно получили, дайте startup, тоже увидите какие-то следы ее выполнения/невыполнения.
Тут нет никакого корня :) То что Windows должна, она сделала - запустила службу. А вот уже по этому факту запустить базу - задача Оракла. И он ее не выполняет. И опять же, нет никаких гарантий, что мы гарантировано получили команду shutdown. Мы этого не знаем.
Цитата: Разве эти пункты расходятся с тем, что нам требуется? Если база не была остановлена нормальным shutdown immediate, то это первый случай. Если она застряла в каком-то промежуточном статусе - второй. Что касается слова recovery, то тут игра слов, скорее, вводит в заблуждение. Речь идет не о восстановлении из бекапа, а об откате незавершенных транзакций. Не будете же, надеюсь, настаивать, что все транзакции должны заканчиваться commit? А это как раз тоже самое. Подчеркиваю еще раз, это штатное завершение работы БД. Тем более той, которая не остановилась на shutdown immediate. А если она не остановилась, но уже получила команду останова, то никак больше, кроме abort, штатно ее вы уже не остановите. И работать не сможете. Зато, если кто-то не очень умелый смастерит запрос, отъедающий TEMP и UNDO, выставленные другим не очень умелым в unlimited, то хоть на излете суток его abort прибьет и, может быть, пересоздавать ничего не придется. Нюансы abort проявятся, если часть файлов бекапа потеряете, но это уже совсем другая история.
Безусловно речь не идет о восстановлении из бэкапа. Речь идет о том, что при открытии базы будет запущен механизм восстановления, который в том числе, сделает откат незавершенных транзакций. Но в данном случае я не вижу необходимости в столь крайних мерах. Я исхожу из того, что при рестарте службы, база нормально стартует. На сколько я знаю, по умолчанию, при останове службы выполняется именно shutdown immediate, а это значит, что в выполнении shutdown abort нет никакой необходимости. Кроме того, если помните, речь шла о том, что при подключении к такой "незапущенной" базе она находится все же в закрытом статусе. Т.е. мы подключаемся к простаивающему инстансу. Тогда тем более делать abort нет смысла. Хотя вероятно это и не повредит базе. Но опять же, исходя из опыта, нет гарантии, что так будет всегда. По моей логике, сначала нужно воспользоваться более "щадащими" процедурами. И если они не помогут, тогда уже думать что делать. Нет смысла подвергать базу дополнительному риску ради создания бэкапа. Так можно получить неработающими и базу и бэкап. Вы видимо уже догадываетесь, что ни о каких архивлогах и бэкапе на-лету речь не идет, и указанная Вами ситуация с потерей части бэкапа, тут вполне возможна :)