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.

8 комментариев:

Анонимный комментирует...

соц опрос: кто еще делает бекапы чем то отличным от рмана ?

Анонимный комментирует...

ну кроме рмана есть довольно много вариантов...в том числе - такие экзотические, как "consistent snaps" у EMCшных массивов, которые хоть и не совсем consistent, но, тем не менее, в некоторых случаях по определенным причинам тоже используются...

ranger.

Brass комментирует...

Лично работал в филиале одного крупного банка, где бекап до сих пор делают на ленту через begin backup end backup. И живут до сих пор на 9ке

Анонимный комментирует...

brass, не вижу проблемы в таком бэкапе, если он - а вернее, восстановление из него - удовлетворяет требованиям бизнеса.

ranger.

Brass комментирует...

Проблемы может и нет, но и смысла особого тоже.

Анонимный комментирует...

ниасилил - а почему нет смысла? нормальный способ, вобщем-то.

ranger.

Sergey Golikov комментирует...

Я чего то не уловил, что будет, когда SCN достигнет 281 триллиона? Если я правильно понял, патч исправляет неоправданный рост SCN, но не увеличивает текущий лимит. Лишь в будущем Оракл планирует увеличить текущий лимит

Dmitry Volkov комментирует...

Я понял так, чтобы этого не произошло и проверяется soft limit. так что проблема пока с soft limit. Ну а исправления (разные) направлены на то чтоб уменьшить рост генерации SCN