Факторы, вызывающие задержку усечения журнала
Изменения: 17 июля 2006 г.
Процесс усечения журнала освобождает место в файле журнала для повторного использования журналом транзакций. Поскольку сжатие не позволяет усечь или удалить активную часть журнала, усечение откладывается на длительный срок, в течение которого записи журнала остаются активными.
Примечание. |
---|
Дополнительные сведения о работе процесса усечения журнала см. в разделе Усечение журнала транзакций. |
Записи журнала могут оставаться активными по множеству причин, которые описываются в этом разделе. Чтобы определить, что препятствует усечению журнала транзакций в конкретном случае, используйте столбцы log_reuse_wait и log_reuse_wait_desc представления каталога sys.database.
Примечание. |
---|
Некоторые из этих причин (длительные транзакции, приостановленный сеанс зеркального отображения базы данных и др.) могут привести к переполнению журнала транзакций. Дополнительные сведения о том, что нужно делать при переполнении журнала транзакций, см. в разделе Устранение неполадок при переполнении журнала транзакций (ошибка 9002). |
В следующей таблице описываются значения столбцов log_reuse_wait и log_reuse_wait_desc представления каталога sys.database.
Значение столбца log_reuse_wait
Значение столбца log_reuse_wait_desc
Описание
0
NOTHING;
В данный момент существует один или более виртуальных файлов журнала, доступных для повторного использования.
1
CHECKPOINT
С момента последнего усечения журнала не было новых контрольных точек, либо заголовок журнала не перемещался за пределы виртуального файла журнала (для всех моделей восстановления).
Это широко распространенная причина задержки усечения журнала. Дополнительные сведения см. в разделе Контрольные точки и активная часть журнала.
2
LOG_BACKUP.
Чтобы переместить заголовок журнала вперед, необходимо выполнить резервное копирование журнала (только для полной модели восстановления и модели восстановления с неполным протоколированием).
Примечание.
Резервные копии журналов не препятствуют усечению.
После завершения создания резервной копии журнала заголовок журнала перемещается вперед, и некоторое пространство журнала может освободиться для повторного использования.
3
ACTIVE_BACKUP_OR_RESTORE
Выполняется резервное копирование или восстановление данных (для всех моделей восстановления).
Резервное копирование данных работает аналогично активной транзакции, поэтому при работе резервное копирование предотвращает усечение. Дополнительные сведения см. ниже в подразделе «Операции резервного копирования и восстановления данных».
4
ACTIVE_TRANSACTION
Активна одна из транзакций (для всех моделей восстановления).
- Во время начала создания резервной копии журнала может существовать длительная транзакция. В этом случае, чтобы освободить пространство, может потребоваться создание другой резервной копии журнала. Дополнительные сведения см. ниже в разделе «Длительные активные транзакции».
- Транзакция отложена (только в SQL Server 2005 Enterprise Edition и более поздних версиях). Отложенная транзакция — это активная транзакция, откат которой был заблокирован по причине недоступности какого-либо ресурса. Дополнительные сведения о причинах, вызывающих появление отложенных транзакций, и о том, как их можно вывести из такого состояния, см. в разделе Отложенные транзакции.
5
DATABASE_MIRRORING
Зеркальное отображение базы данных приостановлено или в режиме высокой производительности зеркальная база данных намного отстает от основной (только для полной модели восстановления).
Дополнительные сведения см. далее в разделе «Зеркальное отображение базы данных и журнал транзакций».
6
REPLICATION
Во время репликации транзакций в базу данных распространителя не доставляются транзакции, имеющие отношение к публикациям (только для полной модели восстановления).
Дополнительные сведения см. далее в разделе «Репликации транзакций и журнал транзакций».
7
DATABASE_SNAPSHOT_CREATION
Создается моментальный снимок базы данных (для всех моделей восстановления).
Это очень распространенная (и обычно кратковременная) причина задержки усечения журнала транзакций.
8
LOG_SCAN
Производится просмотр журнала (для всех моделей восстановления).
Это очень распространенная (и обычно кратковременная) причина задержки усечения журнала транзакций.
9
OTHER_TRANSIENT
Эта значение сейчас не используется.
Операции резервного копирования и восстановления данных
Усечение журнала во время операций резервного копирования или восстановления невозможно. В SQL Server 2005 и более поздних версиях резервное копирование журнала может выполняться во время резервного копирования данных. Однако усечение журнала во время такого резервного копирования журнала невозможно, поскольку журнал транзакций должен быть доступен для операции резервного копирования данных. Если усечению журнала препятствует резервное копирование данных, то проблему может решить отмена резервного копирования. При резервном копировании файлов избежать проблемы задержки усечения журнала можно с помощью параметра WITH NO_LOG.
Дополнительные сведения об усечении журналов см. в разделе Усечение журнала транзакций.
Важно! |
---|
Параметры NO_LOG и TRUNCATE_ONLY инструкции BACKUP LOG будут исключены из следующей версии SQL Server. Они удаляют неактивную часть журнала без создания его резервной копии и усекают журнал, уничтожая все, кроме активного журнала. Это приводит к разрыву цепочки журналов. До создания следующей полной или разностной резервной копии база данных не будет защищена от ошибок носителя. Поэтому настоятельно рекомендуется не использовать эти параметры в новых разработках и запланировать изменение приложений, использующих эти параметры сейчас. |
Активные длительные транзакции
Для активной транзакции требуется, чтобы журнал остался активным, начиная с записи, содержащей начало транзакции. Например, если запуском и завершением транзакции управляет пользователь, то типичной причиной возникновения длительной транзакции служит отсутствие пользователя после начала транзакции, в то время как для продолжения транзакции требуется его участие. В таких случаях сама по себе ожидающая транзакция формирует очень маленькую запись журнала, однако задерживает усечение журнала и приводит к его увеличению.
Примечание. |
---|
Дополнительные сведения о том, как предотвратить возникновение длительных транзакций, см. в разделе Кодирование эффективных транзакций. |
Зеркальное отображение базы данных и журнал транзакций
Для зеркального отображения базы необходимо, чтобы каждая запись журнала оставалась активной, пока экземпляр основного сервера получает уведомления от экземпляра зеркального сервера о записи на диск. Если экземпляр зеркального сервера начинает отставать от экземпляра основного сервера, то соответствующим образом увеличивается место на диске, занимаемое активным журналом. В этом случае может потребоваться остановка зеркального отображения базы данных, применение к зеркальной базе данных резервной копии журнала, усекающей журнал (с использованием параметра WITH NORECOVERY) и повторный запуск зеркального отображения.
Важно! |
---|
Более того, перед запуском зеркального отображения потребуется вручную применить все дополнительные резервные копии журнала (обязательно с использованием параметра WITH NORECOVERY), если таковые были созданы после требуемой резервной копии. Зеркальное отображение может быть запущено после применения самой последней резервной копии журнала. |
Дополнительные сведения см. в разделах Удаление зеркального отображения базы данных и Настройка зеркального отображения базы данных.
Репликация транзакций и журнал транзакций
Репликация слиянием и репликация моментальных снимков не влияют на размер журнала, в отличие от репликации транзакций. Если база данных содержит одну или несколько публикаций транзакций, журнал не может быть усечен, пока все транзакции, связанные с публикациями, не будут доставлены в базу данных распространителя. Если журнал транзакций становится слишком большим, а агент чтения журнала запускается по расписанию, необходимо рассмотреть возможность сокращения интервала между его запусками. Как вариант, можно перевести его в режим непрерывной работы. Если он установлен в режим непрерывной работы (по умолчанию), необходимо убедиться в том, что он запущен. Дополнительные сведения о проверке состояния агента чтения журнала см. в разделе Как просмотреть сведения и выполнить задачи для агентов, связанных с публикацией (монитор репликации).
Кроме этого, если в базе данных публикации или распространителя установлен параметр «синхронизация с резервной копией», то журнал транзакций не усекается до тех пор, пока не будет осуществлено резервное копирование всех транзакций. Если журнал транзакций становится слишком большим и этот параметр установлен, то необходимо рассмотреть сокращение интервалов резервного копирования журнала транзакций. Дополнительные сведения о резервном копировании и восстановлении баз данных, участвующих в репликации транзакций, см. в разделе Стратегии резервного копирования и восстановления из копии репликации моментальных снимков и репликации транзакций.
Управление репликацией
Отслеживание репликации
См. также
Основные понятия
Контрольные точки и активная часть журнала
Усечение журнала транзакций
Сжатие журнала транзакций
Устранение неполадок при переполнении журнала транзакций (ошибка 9002)
Другие ресурсы
Управление журналом транзакций