SCN bug
Интересный баг откопали журналисты - у Oracle заканчиваются SCN и в растерянности база получает ORA-600 -))) В оригинале много букв, я постараюсь покороче изложить свое понимание.
SCN храниться как 48-bit number (281,474,976,710,656). Однако, в существует проверка на превышение soft limit: если SCN превысит число, равное кол-ву секунд, прошедших с 01/01/1988 умноженное 16,384 это считается нарушением целостности. Действительно, вряд ли у кого-то есть база данных, работающая с 1988 года и делающая 16K транзакций в секунду. Но, проблема в том, что как остроумно написал Люис, SCN это system change number, а вовсе не system commit number -)
SCN может существенно поменяться в базе данных, если например у вас есть распределенные транзакции, в момент которой SCN между базами выравнивается. Но это тоже наверно не было бы проблемой, если бы не баг связанный с hot backup. В момент когда вы говорите alter database begin backup SCN начинают генерируется с повышенной частотой (Тут я не знаю, то ли это нормально, то ли виноват bug 12371955.8). Можно было бы ожидать, что после end backup это прекратится, но из за другого bug (я потерял его номер) этого не происходит и SCN продолжают генерироваться с большей частотой.
Таким образом, если у вас несколько нагруженных баз данных связанных между собой db link, и вы выполняете их резервное копирование с помощью begin/end backup - возможно вы встретите этот bug лично.
Волноваться не стоит, этот bug (как и еще несколько) были закрыты в Oracle Critical Patch Update Advisory - January 2012. Так что мне кажется журналистам просто захотелось сенсаций -)
Но и обслуживать работают промышленную БД с наличием бага, описанным в журнале - как-то непрофессионально. Так что очень рекомендую поставить CPU.
Рекомендую также прочитать официальную информацию (1376995.1) и много технических деталей в Bug 11767824. Интересная статья про SCN.
SCN храниться как 48-bit number (281,474,976,710,656). Однако, в существует проверка на превышение soft limit: если SCN превысит число, равное кол-ву секунд, прошедших с 01/01/1988 умноженное 16,384 это считается нарушением целостности. Действительно, вряд ли у кого-то есть база данных, работающая с 1988 года и делающая 16K транзакций в секунду. Но, проблема в том, что как остроумно написал Люис, SCN это system change number, а вовсе не system commit number -)
SCN может существенно поменяться в базе данных, если например у вас есть распределенные транзакции, в момент которой SCN между базами выравнивается. Но это тоже наверно не было бы проблемой, если бы не баг связанный с hot backup. В момент когда вы говорите alter database begin backup SCN начинают генерируется с повышенной частотой (Тут я не знаю, то ли это нормально, то ли виноват bug 12371955.8). Можно было бы ожидать, что после end backup это прекратится, но из за другого bug (я потерял его номер) этого не происходит и SCN продолжают генерироваться с большей частотой.
Таким образом, если у вас несколько нагруженных баз данных связанных между собой db link, и вы выполняете их резервное копирование с помощью begin/end backup - возможно вы встретите этот bug лично.
Волноваться не стоит, этот bug (как и еще несколько) были закрыты в Oracle Critical Patch Update Advisory - January 2012. Так что мне кажется журналистам просто захотелось сенсаций -)
Но и обслуживать работают промышленную БД с наличием бага, описанным в журнале - как-то непрофессионально. Так что очень рекомендую поставить CPU.
Рекомендую также прочитать официальную информацию (1376995.1) и много технических деталей в Bug 11767824. Интересная статья про SCN.
соц опрос: кто еще делает бекапы чем то отличным от рмана ?
ОтветитьУдалитьну кроме рмана есть довольно много вариантов...в том числе - такие экзотические, как "consistent snaps" у EMCшных массивов, которые хоть и не совсем consistent, но, тем не менее, в некоторых случаях по определенным причинам тоже используются...
ОтветитьУдалитьranger.
Лично работал в филиале одного крупного банка, где бекап до сих пор делают на ленту через begin backup end backup. И живут до сих пор на 9ке
ОтветитьУдалитьbrass, не вижу проблемы в таком бэкапе, если он - а вернее, восстановление из него - удовлетворяет требованиям бизнеса.
ОтветитьУдалитьranger.
Проблемы может и нет, но и смысла особого тоже.
ОтветитьУдалитьниасилил - а почему нет смысла? нормальный способ, вобщем-то.
ОтветитьУдалитьranger.
Я чего то не уловил, что будет, когда SCN достигнет 281 триллиона? Если я правильно понял, патч исправляет неоправданный рост SCN, но не увеличивает текущий лимит. Лишь в будущем Оракл планирует увеличить текущий лимит
ОтветитьУдалитьЯ понял так, чтобы этого не произошло и проверяется soft limit. так что проблема пока с soft limit. Ну а исправления (разные) направлены на то чтоб уменьшить рост генерации SCN
ОтветитьУдалитьС трудом представляю себе, чтоб SCN превзошел установленные лимиты естественным путем, и даже с учетом багов. Но вот охотно верю, что при наличии умелых рученок, зафигачившим ораклу adjust_scn - это запросто :)
ОтветитьУдалить