powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Когда происходит увеличение SCN?
7 сообщений из 7, страница 1 из 1
Когда происходит увеличение SCN?
    #32184161
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем поняла из книги когда происходит увеличение SCN (system change number) - при check point или при commit?
...
Рейтинг: 0 / 0
Когда происходит увеличение SCN?
    #32184194
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть в принципе два SCN:

1. SCN - system change number
2. SCN - system commit number

Они генерятся из одно последовательности, но первый генерится при любом изменении блока, а второй только при коммите. При чекпоинте, насколько я понимаю, ничего не присваивается.
...
Рейтинг: 0 / 0
Когда происходит увеличение SCN?
    #32184231
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Они генерятся из одно последовательности, но первый генерится при любом изменении блока, а второй только при коммите.

Как же тогда учиться по книгам?:-( В книге "Подготовка Адинистраторов БД" от Лори, дословно стр. 510

При запуске БД Оракл синхронизирует все свои дисковые ресурсы с помощью контрольных точек. Каждый раз при ее выполнении ей присваивается номер изменения системы (System Change Number) ... Всякий раз, когда пользователь завершает транзакцию, Оракл регистрирует новый SCN.

Кого вешать ...? :-)

Ваши объяснения как всегда очень пояснительны!

Насколько я поняла из Они генерятся из одно последовательности system commit number это system change number после которго произошел коммит.

Теперь если порассуждать, то становится понятным, что system change number должен изменяться на уровне изменний блоков а не на уровне фиксации транзакции. Например, грязные блоки могут сесть в датафайлы еще до комита, и Ораклу просто необходимо для них уже иметь более высокий SCN, чтобы иметь возможность определить в случае crash recovery что эти блоки следует откатить. А определить он это сможет, посмотрев redo. Если там последний system commit number ниже system change number блока, блок следует восстановить из rollback.

Ход мыслей правилен?
...
Рейтинг: 0 / 0
Когда происходит увеличение SCN?
    #32184269
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После изменения блока тот попадает в очередь чекпойнта (dirty queue) вместе с адресом redo-блока и SCN изменения.

При чекпойнте оракл фиксирует SCN чекпойнта, затем сбрасывает грязные блоки с SCN ниже фиксированного. Когда все требуемые блоки сброшены на диск, обновляются заголовки датафайлов, в которые прописывается этот самый SCN начала чекпойнта.

Есть еще одна особенность (с 8.0.5) - каждые три секунды в контрольный файл пишется SCN, до которого грязные блоки действительно сброшены в датафайлы (инкрементальный чекпойнт). Тогда после аварии ораклу надо прочитать из redo не все redo-блоки с момента последнего чекпойнта, а только с того redo-блока, который прописан в контрольном файле.

Таким образом, redo нет необходимости просматривать. Можно сразу начинать восстановление с определенного адреса в файле. Если, конечно, есть контрольный файл.
...
Рейтинг: 0 / 0
Когда происходит увеличение SCN?
    #32184324
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашла топик\r
\r
/topic/31367\r
\r
про \r
\r
SCN - Sytem Commit Number \r
SCN - System Checkpoint Number \r
SCN - System Change Number \r
\r
Вот ваш текст от туда\r
\r
Все SCN в оракле используют одну и ту же последовательность. Разница в моментах времени, когда происходит изменение этой последовательности. При коммите назначается system commit number. Он же пишется в транзакционную таблицу блока и сегмента отката для пометки завершенности транзакции. System checkpoint number - это номер изменения системы, на который надо проводить синхронизацию, по окончании чекпойнта он прописывается в заголовки датафайлов. А в промежутках между коммитами, чекпойнтами и т.д. оракл проводит свои внутренние операции, которые помечаются как system change number. Поэтому различить их достаточно сложно. \r
\r
Как я поняла\r
\r
1) System Change Number генерится по мере изменения блоков независимо от чекпоинта или комита.\r
\r
2) При возниконовении чекпоинта фиксируется текущий System Change Number, который становится System Checkpoint Number, и сбрасываются грязные блоки с SCN ниже фиксированного.\r
\r
System checkpoint number - это номер изменения системы, на который надо проводить синхронизацию \r
\r
Что имеется ввиду под синхронизацией? Подтягивание изменений из логов при восстановлении?\r
\r
3) При коммите фиксируется текущий System Change Number, который становится Sytem Commit Number, он используется для пометки завершенности транзакции.
...
Рейтинг: 0 / 0
Когда происходит увеличение SCN?
    #32184349
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синхронизация - во всех датафайлах гарантированно записаны данные на какой-то момент. Сравните с обычной ситуацией - в одном датафайле данные на один SCN, в других - на другой.
...
Рейтинг: 0 / 0
Когда происходит увеличение SCN?
    #32184366
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть под синхронизацией здесь понимается сброс в датафайлы грязных блоков с SCN ниже фиксированного а не то что пондумала я

Подтягивание изменений из логов при восстановлении

Вроде бы создалось понимание более или менее. Спасибо!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Когда происходит увеличение SCN?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]