Признаки повреждения БД системы Overseer
При некорректной работе системы с БД может возникнуть необходимость проверки базы данных на наличие повреждений.
Для этого следует запустить программу pgAdmin, подключится к БД, которая используется в системе Overseer для работы с событиями и выполнить тестовые действия с базой данных. Подробнее про то, как запустить программу pgAdmin описано тут.
Запросы в БД
- Проверить возможность выполнения команды VACUUM или запуска утилиты "vacuumdb".
Если требуется проверка работоспособности утилиты, следует выполнить команду:
vacuumdb test;
Для очистки БД от временных и "потерянных" данных, следует выполнить команду:
vacuum full;
Если в следствие выполнения данных команд будет выдано сообщение про отсутствие или недоступность файлов объектов БД (например, файлов индексов, таблиц), это означает наличие повреждений в проверяемой БД.
- Проверить возможность выполнения утилиты pg_resetxlog .
Для запуска утилиты следует:
- нажать комбинацию клавиш Win+R
- в открывшемся окне «Выполнить» ввести команду cmd;
- ввести команду cd PosgreSQL\bin\ в открывшемся окне для перехода в папку PostgreSQL;
- ввести команду pg_resetxlog "datadirectory", де datadirectory - полный адрес каталога данных БД PostgreSQL, как правило, это C:\postgre\data.
Если в следствие выполнения данной команды будет выдано сообщение про повреждение или непригодность файлов объектов БД (например,файлов с бинарными логами или индексов), это означает наличие повреждений в проверяемой БД.
- Проверить возможность выполнения операций с системными таблицами toast_tablename, если они упоминались в сообщениях об ошибках при выполнении действий п. 1, 2.
Для этого следует выполнить команду:
select * from pg_class where relname = 'toast_tablename';
Здесь под таблицей toast_tablename подразумевается любое название таблицы с префиксом toast и конкретным именем таблицы на месте tablename.
БД повреждена, если выполнение данной команды выдает пустой результат.
- Проверить возможность пересоздать индексы таблиц в БД.
Рекомендуется пересоздавать индексы для следующих таблиц: public.auto_client, public.auto_client_history, public.autocard, public.hmcard, public.media (или таблиц media_body,media_plate,media_data в обновленной структуре), public.platear, parking.park.
Для пересоздания индексов таблицы следует запустить программу pgAdmin, подключится к БД, которую использует система Overseer (подробнее Запуск программы pgAdmin) и выполнить два SQL-запроса по удалению (Drop index) и созданию (Create index) индексов. Данные действия рекомендуется выполнять при отключенной системе распознавания или в период наименьшей загрузки системы.
Если при выполнении действий по пересозданию индексов возникают ошибки, это может свидетельствовать о повреждении БД. Исправление данных ошибок возможно с потерей части данных БД.