Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

XX002 1С:Предприятие и СУБД

Ошибка PostgreSQL XX002: index_corrupted — диагностика и устранение

Обновлено: 26.08.2026 · Официальная документация ↗
  • Аварийное прерывание транзакций с сообщением ERROR: index "" contains corrupted page at block ... (SQLSTATE XX002).
  • В платформе 1С:Предприятие возникают ошибки вида «Ошибка СУБД: Таблица или индекс повреждены» при проведении документов или формировании отчетов.
  • Планировщик запросов (Query Planner) падает или возвращает неконсистентные строки (отличающиеся от вывода при отключении enable_indexscan).
  • В системном журнале PostgreSQL фиксируются сбои верификации контрольных сумм страниц B-Tree.

1. Экспресс-проверка через модуль amcheck

Установите расширение для глубокой проверки B-деревьев без блокировок:

CREATE EXTENSION IF NOT EXISTS amcheck;

-- Проверка целостности конкретного индекса
SELECT bt_index_check('"_accumrgtn12345_1"', true);

-- Проверка всех индексов текущей схемы
SELECT c.relname, bt_index_check(c.oid, true)
FROM pg_index i
JOIN pg_class c ON c.oid = i.indexrelid
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE n.nspname = 'public' AND c.relam = 403
ORDER BY c.relname;

2. Фоновое перестроение поврежденного индекса

В рабочей базе 1С переиндексацию следует выполнять без длительных блокировок записи:

REINDEX INDEX CONCURRENTLY "_accumrgtn12345_1";

3. Комплексная переиндексация таблицы

REINDEX TABLE CONCURRENTLY "_accumrgtn12345";

4. Временный обход повреждения до проведения регламентных работ

Если блокируется проведение критически важных операций, отключите использование поврежденных индексов на уровне сессии:

SET enable_indexscan = off;
SET enable_bitmapscan = off;

5. Проверка дисковой подсистемы и контрольных сумм

# Проверка SMART накопителя
smartctl -a /dev/nvme0n1

# Проверка dmesg на ошибки I/O контроллера
dmesg -T | grep -Ei "blk_update_request|i/o error|xfs_corrupt"
💡 Практика специалистов: Если ошибка XX002 повторяется на разных таблицах после REINDEX, немедленно проверьте оперативную память (memtest86+) и отключите асинхронную запись fsync (параметр fsync=off категорически запрещен в production).

Частые вопросы (FAQ)

Что вызывает появление ошибки XX002 в PostgreSQL?

Основные причины: сбои дисковой подсистемы (I/O error, «тихое» повреждение данных без ECC), сбои питания в момент сброса буферов dirty pages, некорректная работа кэша RAID-контроллера с севшей батареей (BBU), а также редкие баги glibc при изменении правил сортировки (LC_COLLATE).

Чем отличается REINDEX от REINDEX CONCURRENTLY?

Обычный REINDEX накладывает блокировку AccessExclusiveLock, полностью запрещающую чтение и запись в таблицу. Режим CONCURRENTLY создает новый индекс параллельно, требуя лишь ShareUpdateExclusiveLock, что позволяет 1С продолжать работу без простоя.

Поможет ли тестирование и исправление (ТиИ) в 1С при ошибке XX002?

Да, процедура «Реиндексация таблиц информационной базы» в режиме «Тестирование и исправление» пересоздает все индексы штатными средствами платформы, однако требует монопольного захвата базы данных.

Как включить постоянную защиту от скрытой порчи страниц в PostgreSQL?

Инициализируйте кластер с флагом контрольных сумм (initdb -k / --data-checksums) или активируйте их в оффлайн-режиме через pg_checksums -e -D /var/lib/postgresql/data.

Полезные материалы
Рекомендуем