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.

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

  1. Анонимный31/1/12 12:51 PM

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

    ОтветитьУдалить
  2. Анонимный31/1/12 1:28 PM

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

    ranger.

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

    ОтветитьУдалить
  4. Анонимный31/1/12 2:53 PM

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

    ranger.

    ОтветитьУдалить
  5. Проблемы может и нет, но и смысла особого тоже.

    ОтветитьУдалить
  6. Анонимный31/1/12 5:41 PM

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

    ranger.

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

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

    ОтветитьУдалить
  9. Анонимный26/3/12 5:50 PM

    С трудом представляю себе, чтоб SCN превзошел установленные лимиты естественным путем, и даже с учетом багов. Но вот охотно верю, что при наличии умелых рученок, зафигачившим ораклу adjust_scn - это запросто :)

    ОтветитьУдалить