Признаки повреждения БД системы Overseer

Материал из VIT company
Перейти к навигации Перейти к поиску

При некорректной работе системы с БД может возникнуть необходимость проверки базы данных на наличие повреждений.


Для этого следует запустить программу pgAdmin, подключится к БД, которая используется в системе Overseer для работы с событиями и выполнить тестовые действия с базой данных. Подробнее про то, как запустить программу pgAdmin описано тут.


Запросы в БД


  1. Проверить возможность выполнения команды VACUUM или запуска утилиты "vacuumdb".


Если требуется проверка работоспособности утилиты, следует выполнить команду:

vacuumdb test;


Для очистки БД от временных и "потерянных" данных, следует выполнить команду:

vacuum full;



Если в следствие выполнения данных команд будет выдано сообщение про отсутствие или недоступность файлов объектов БД (например, файлов индексов, таблиц), это означает наличие повреждений в проверяемой БД.


  1. Проверить возможность выполнения утилиты pg_resetxlog .


Для запуска утилиты следует:

  • нажать комбинацию клавиш Win+R
  • в открывшемся окне «Выполнить» ввести команду cmd;
  • ввести команду cd PosgreSQL\bin\ в открывшемся окне для перехода в папку PostgreSQL;
  • ввести команду pg_resetxlog "datadirectory", де datadirectory - полный адрес каталога данных БД PostgreSQL, как правило, это C:\postgre\data.



Если в следствие выполнения данной команды будет выдано сообщение про повреждение или непригодность файлов объектов БД (например,файлов с бинарными логами или индексов), это означает наличие повреждений в проверяемой БД.


  1. Проверить возможность выполнения операций с системными таблицами toast_tablename, если они упоминались в сообщениях об ошибках при выполнении действий п. 1, 2.


Для этого следует выполнить команду:

select * from pg_class where relname = 'toast_tablename';


Здесь под таблицей toast_tablename подразумевается любое название таблицы с префиксом toast и конкретным именем таблицы на месте tablename.


БД повреждена, если выполнение данной команды выдает пустой результат.


  1. Проверить возможность пересоздать индексы таблиц в БД.


Рекомендуется пересоздавать индексы для следующих таблиц: 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) индексов. Данные действия рекомендуется выполнять при отключенной системе распознавания или в период наименьшей загрузки системы.


Если при выполнении действий по пересозданию индексов возникают ошибки, это может свидетельствовать о повреждении БД. Исправление данных ошибок возможно с потерей части данных БД.