2014-11-25 3 views
1

Я новичок в Oracle и последовательности. Я создал последовательность в Oracle, (я использую Oracle 11g прямо сейчас)Устранена ли последовательность Oracle после сброса базы данных или восстановления после сбоя?

Но я боюсь, если последовательность потеряет свое следующее предполагаемое увеличиваемое значение, когда сервер Oracle перезагрузится или восстановится после сбоя?

например пусть себе последовательность держит 5

Следующее значение должно дать, когда последовательность доступ составит 6

Но это будет получить обратно в 0, когда база данных сброса/перезагрузки?

+0

Для дальнейшего использования: Oracle 12c теперь поддерживает Session Sequences ('create sequence myseq session'), которые являются приватными для каждого сеанса (т. Е. Автоматически перезагружаются). Обычные последовательности, однако, сохраняются в соответствии с другими ответами ниже. –

+0

Спасибо за обновление Джеффри. Единственная проблема здесь в том, что мы не можем перейти на Oracle 12c прямо сейчас из-за других потенциальных пользователей наших систем, над которыми мы работаем. На данный момент мы должны придерживаться 11g и придерживаться решения последовательности. В любом случае спасибо. – Amit

+0

Я никогда не рекомендовал модернизировать до 12c. Я просто добавил комментарий, потому что StackOverflow предназначен для всех (а не только для вас), включая людей в будущем, которые ищут ответы. –

ответ

2

Не волнуйтесь, значения последовательности сохраняются и сохраняются на перезагрузках.

Однако следующее значение могло бы быть выше, чем значение 6, которое вы ожидаете. Это зависит от настройки последовательности CACHE. Если вы создали его, например, CACHE 20 значения кэширования теряются. В вашем примере следующее значение может быть равно 20 после перезапуска экземпляра. Но он никогда не будет на 0 или меньше предыдущего значения (если вы не включили атрибут CYCLE и уже использовали все доступные номера)

+0

Спасибо за ваш ответ .. :) – Amit

1

Последовательность считается данными, как и другие данные, поэтому она будет синхронизирована с данные. Если «перезагрузка» означает «восстановить»: в этом случае она также может быть сброшена на ноль ... но вместе со всеми другими данными, чтобы быть точным! Если вы вернетесь к моменту времени, когда последовательность не существует, она будет восстановлена ​​именно в такой ситуации: нет последовательности.

Если с помощью «перезагрузки» вы имеете в виду «перезапуск», нет проблемы: все остается. То есть все зафиксированные данные остаются в базе данных.

+0

При перезагрузке я действительно имел в виду перезагрузку базы данных. Спасибо за ваш ответ tvCa. – Amit

Смежные вопросы