Возможности
Сравнение по ключам
Проверка пары ID+KNR порциями по 500. Содержимое BlobArch не читается — проверяется только длина.
Таблицы ANL и дамп
Найденные записи копируются в таблицы <ТАБЛИЦА>ANL и экспортируются через DBMS_DATAPUMP.
Множество БД
Параметры подключений из Excel или CSV, параллельная обработка до 32 потоков, сбой одной базы не останавливает остальные.
Лог в реальном времени
Отдельный лог для каждого района, итоги по таблице районов, кнопка «Остановить», файл сводки.
Безопасность
Сервер слушает только 127.0.0.1. Пароли не сохраняются и не пишутся в лог, имена объектов Oracle проверяются.
Без клиента Oracle
Используется драйвер oracledb (thin-режим). Windows и Linux, Python 3.
Как это работает
Этап 1 — сравнение
Для каждой записи территориальной БД проверяется наличие в республиканской и заполненность BlobArch. Проблемные ключи пишутся в файл результата.
Этап 2 — выгрузка
Ключи из файла читаются, создаётся таблица ANL, записи копируются, таблицы экспортируются в один дамп района.
Результат этапа 1
# REGION|TABLE|ID|KNR|REASON Алматы|ТАБЛИЦА|101|5|не найдено в республиканской БД Алматы|ТАБЛИЦА|102|7|поле BlobArch пустое в республиканской БД
Файлы
| Файл | Назначение |
|---|---|
compare_result_<район>.txt | Ключи проблемных записей (этап 1) |
compare_log_<район>.log | Лог этапа 1 |
compare_log_anl_<район>.log | Лог этапа 2 |
compare_anl_<район>.dmp | Дамп Data Pump на сервере БД (имя района латиницей) |
compare_summary[_anl].txt | Сводка по всем базам |
Запуск
git clone https://github.com/shgulnur2026/oracle-db-compare.git cd oracle-db-compare pip install -r requirements.txt python app.py
Откройте http://127.0.0.1:8765, введите параметры подключений, список таблиц и папку результатов.
CREATE TABLE и READ/WRITE на каталог DIRECTORY; дамп создаётся на сервере БД.