Экспертиза Firebird проводится, когда спор зависит от содержимого базы .fdb, схемы, версий записей и транзакций, резервных копий, данных трассировки, повреждения, сбоя или результата миграции. Специалист устанавливает версию сервера и клиента, архитектуру, формат данных на диске (ODS), размер страницы, диалект SQL, кодировку, конфигурацию и связь данных с прикладной системой. Это специализированное направление экспертизы баз данных и СУБД.
До полного исследования можно оценить читаемость заголовочной страницы, совместимость версии, наличие копий gbak и nbackup, данных трассировки и журналов, признаки многотомной базы и нужный период. Предварительная оценка показывает, на какие вопросы позволяют ответить сохранившиеся материалы. Прежние версии записей могли быть удалены сборкой мусора, а исправляющие действия — изменить страницы, поэтому возможность восстановления проверяют отдельно. Для первого обращения достаточно описания и списка материалов.
Не открывайте единственную FDB рабочим приложением, не копируйте открытый файл обычными средствами и не запускайте gfix -mend, восстановление из копии поверх оригинала или замену файла. Зафиксируйте ошибку, процессы, время и часовой пояс, сохраните файл, резервные копии и файлы изменений (delta file) документированным способом. Выполняет это владелец системы или уполномоченный им администратор; если база принадлежит другой стороне, доказательство сохраняют через суд. Пароли и ключи передаются отдельно по согласованному каналу.
Отдельно о том, что будет, если ответить не удастся. Задачу, по которой уже из присланных материалов видно, что вывода не получится, мы просто не берём в работу и говорим об этом сразу. Это не обещание положительного вывода: отказ на входе означает лишь, что невозможность видна уже из перечня материалов. Если же невозможность выясняется по итогам полноценного исследования, это результат, а не пустой счёт: заключение объясняет, почему ответа нет и чего именно не хватило. В споре такой вывод часто закрывает вопрос: обоснованный ответ, что прежние версии записей убраны служебной очисткой, показывает суду границы имеющихся источников. Назначать ли после этого дополнительную или повторную экспертизу, решает назначивший её орган. Бывает и частичная невозможность: тогда указывают, на какие вопросы ответ получен, а на какие нет и по какой причине.
Кто снимает копию, решают по объекту. Иногда это делает сам заказчик или его администратор по согласованному плану; иногда — наш специалист, удалённо или с выездом, как отдельная консультация; иногда фиксация входит в саму экспертизу. Выбор зависит от сложности системы, доступности и трудоёмкости: копию файла базы и резервные копии снимают по-разному на одиночном сервере и на нагруженном кластере. Если инфраструктурой управляет другая сторона, порядок доступа определяет суд, и фиксацию проводят с участием эксперта.
Ждать здесь нельзя, и вот почему. Служебная очистка (sweep) запускается автоматически по достижении заданного интервала и убирает прежние версии записей сама: «не запускать» её нельзя, можно только отключить, а без очистки база разрастается и работает медленнее. Поэтому первое действие — копия, и способ выбирают по числу файлов базы: для одномтомной подходит nbackup без остановки службы, для многотомной он неприменим — руководство Firebird запрещает его для таких баз, и остаётся корректная остановка службы с копированием всех томов. Число томов проверяют заранее, до команды. Время, команду и контрольные суммы фиксируют в любом случае. Копия содержит сведения о людях и коммерческую информацию, поэтому объём доступа, обезличивание и срок хранения рабочих копий согласуют до передачи.
Что является объектом экспертизы Firebird
Расширение .fdb не подтверждает версию и исправность базы. Для выбора движка устанавливают ODS, архитектуру Classic, SuperClassic или SuperServer, платформу, размер страницы, диалект SQL, кодировку по умолчанию, шифрование и внешние зависимости. Старое приложение может использовать InterBase-совместимые компоненты или встроенный сервер, что также проверяется.
В состав объектов и сопроводительных данных включают:
- основной файл или все тома многотомной базы и их порядок;
- заголовочная страница, страницы инвентаризации страниц (PIP) и транзакций (TIP), указательные страницы, страницы данных, индексов и BLOB;
- метаданные: таблицы (relations), поля, домены, ограничения, индексы, триггеры, процедуры, функции, пакеты, роли и права;
- версии записей, предыдущие версии (back versions), идентификаторы и доступные состояния транзакций;
- логические резервные копии
gbak, физические полные/инкрементальные копииnbackup, файл изменений и история резервного копирования; - данные трассировки,
firebird.log, конфигурация сервера, приложения и ОС.
Рабочая логическая выгрузка отражает только успешно прочитанное состояние и может скрывать исходное размещение, повреждённые страницы и прежние версии. Физический файл без приложения и документации, наоборот, не объясняет бизнес-смысл таблиц и полей.
Что может и чего не может установить эксперт
При достаточной сохранности можно описать структуру и активные данные, сравнить версии FDB, исследовать метаданные транзакций и версии записей, проверить цепочку резервных копий, причины повреждения и полноту миграции. Извлечённый фрагмент всегда оценивается по странице, записи, транзакционному контексту и связи с другими объектами.
При достаточных материалах эксперт может установить:
- какие объекты и записи доступны в представленном состоянии базы;
- чем различаются две версии базы или резервной копии и какие данные затронуты;
- имеются ли сохранившиеся предыдущие версии (back versions) либо фрагменты ранее удалённых данных;
- каково состояние транзакций, с которыми связаны конкретные версии записей;
- имеются ли структурные повреждения и какие таблицы или индексы они затрагивают;
- что отражено в реально запущенной трассировке и серверных журналах;
- можно ли восстановить резервную копию и полностью ли выполнена миграция.
Firebird не предоставляет в самой FDB универсальную историю SQL-команд с физическими авторами и точным временем каждой строки. Идентификатор транзакции и состояние на TIP не равны имени пользователя, тексту запроса и намерению. Для установления технической связи нужны данные трассировки или прикладного аудита, сведения о соединении, аутентификация, журналы приложения, ОС и сети. Эксперт устанавливает технические обстоятельства, а виновность, умысел и правовую оценку события определяет суд или иной уполномоченный орган.
Материалы для исследования
Предпочтительна копия, полученная при корректно остановленном доступе, либо штатным механизмом, который обеспечивает согласованность работающей базы. Простое файловое копирование FDB при активных соединениях может дать несогласованный объект. Если доступ специально останавливают ради копирования, до команды фиксируют доступные подключения и транзакции, процессы, время и ошибки, а саму остановку, исполнителя, параметры и результат протоколируют как изменяющее действие. Любой сбор с работающей системы заранее согласуют и документируют его влияние.
В комплект обычно включают:
- исходная FDB и все тома, их пути, размеры, временные атрибуты и SHA-256 завершённых копий;
- резервные копии
gbak, полные и инкрементальные файлыnbackup, файл изменений и сведенияRDB$BACKUP_HISTORY; - версия Firebird, архитектура, платформа, конфигурационные файлы, aliases/databases.conf и плагины;
- конфигурации и результаты трассировки,
firebird.log, сообщения приложения и ОС; - сведения об активных транзакциях, подключениях и таблицах мониторинга, если они были сохранены в спорный момент;
- DDL, логические выгрузки, отчёты
gstat, команды и результаты ранее выполненныхgfix, резервного копирования и восстановления; - бинарные файлы и версия приложения, клиентская библиотека, логи, настройки подключения и бизнес-правила;
- техническое задание, политика резервного копирования, карта миграции, период и часовой пояс.
Для каждого объекта указывают источник и владельца, лицо, выполнившее получение, средство и его версию, команды и параметры, время начала и окончания с часовым поясом, размер и SHA-256 завершённой копии. Исходную FDB обозначают как мастер-копию и сохраняют неизменной, для анализа создают рабочую копию. Каждую передачу регистрируют, а после неё повторно вычисляют SHA-256 и сопоставляют с предыдущим значением. Если база зашифрована, ключ или плагин собирают отдельно и не пересылают вместе с открытыми материалами.
Передача копии, в которой есть сведения о людях или охраняемая законом тайна, требует законного основания. По назначенной экспертизе объекты поступают от назначившего органа; вне процесса — от обладателя сведений и в объёме, необходимом для ответа на поставленные вопросы. Обезличивание при этом обсуждают не как уступку, а как способ передать меньше, чем есть. Эксперт не разглашает сведения, ставшие известными ему в связи с исследованием, а рабочие копии удаляет по окончании работы.
MVCC, версии записей и страницы учёта транзакций (TIP)
Firebird использует многоверсионность: при обновлении создаётся новая версия записи, а прежняя может сохраняться как предыдущая версия (back version), пока она нужна активным транзакциям. Страницы учёта транзакций (Transaction Inventory Pages, TIP) хранят двухбитовые состояния: транзакция активна (active), находится в неопределённом состоянии (limbo), отменена или признана неактивной (dead) либо подтверждена (committed). Связка идентификатора транзакции и TIP помогает оценить видимость версии, но не содержит автоматически текст SQL, имя конкретного человека или время операции.
У этого признака есть важное ограничение, о котором нужно знать заранее. Служебная очистка (sweep) не только убирает ненужные версии: она переводит давно отменённые транзакции в состояние «подтверждена», потому что после уборки их версий различать эти состояния уже не требуется. Больше того, отменённую транзакцию сервер обычно убирает сразу и тогда же помечает её как подтверждённую. Значит, состояние committed само по себе не отличает подтверждение от отката, и вывод о судьбе транзакции строят не на нём одном. Наблюдаемая граница, на которую ссылаются в заключении, — старейшая интересующая транзакция из заголовочной страницы: до неё сведения о состояниях достоверны, за ней их надо подтверждать другими источниками.
Сборка мусора (garbage collection) удаляет версии, которые больше не нужны, а служебная очистка (sweep) продвигает состояние и помогает очищать накопившийся мусор. Последующие чтения, обслуживание и резервное копирование способны повлиять на доступность старых версий; страницы затем переиспользуются. Поэтому «MVCC хранит всю историю» — неверно. Исходный файл сохраняют до подключения сервером, а найденные предыдущие версии проверяют на полноту и принадлежность.
Удалённые данные и повреждение
Кандидаты на прежние значения могут сохраняться в предыдущих версиях записей, неочищенных страницах, старых FDB, копиях gbak/nbackup, файле изменений или материалах приложения. Результат зависит от возраста транзакций, сборки мусора, служебной очистки, повторного использования страниц, последующей нагрузки и ранее выполненного резервного копирования/восстановления. Наличие фрагмента не гарантирует, что удастся надёжно собрать все поля и момент удаления.
gfix -validate помогает обнаруживать некоторые структурные проблемы, но обычная проверка может изменять базу, в частности освобождать потерянные страницы (orphan pages); только вариант с -no_update запрещает исправление. Режим исправления (mend), разрешение неопределённых транзакций (limbo), служебная очистка (sweep) и другие исправляющие операции также меняют состояние. Их не запускают на оригинале. Даже успешная проверка не подтверждает бизнес-корректность данных, а восстановление через gbak может исключить непригодные структуры и создать новую физическую базу. Если спор целиком о том, что и когда изменилось в записях, его разбирает экспертиза изменений и удаления данных.
gbak, nbackup и проверка восстановления
gbak создаёт переносимую логическую резервную копию, считывая объекты и данные, а при восстановлении формируется новая база. Такая копия полезна для переноса и логической проверки, но не сохраняет исходное физическое размещение страниц и все криминалистические следы. Ошибки чтения, параметры сборки мусора и отключение индексов документируют.
nbackup работает на уровне страниц и поддерживает полные и инкрементальные резервные копии. Для согласованного внешнего копирования режим резервного копирования направляет изменения в файл изменений; окончание режима объединяет их. Инкрементальная цепочка зависит от уровней, SCN и базовых копий. Официальное руководство запрещает применять nbackup к многотомным базам (multi-file databases): операция может привести к повреждению или потере данных без предупреждения утилиты. Копии nbackup также не являются переносимыми и восстанавливаются только на совместимой платформе и версии Firebird. Файл, названный резервной копией, нельзя считать исправным без проверки заголовков, истории и фактического восстановления на совместимом стенде.
Копирование работающей FDB без gbak, nbackup, режима резервного копирования либо корректной остановки официально не рекомендуется. При этом nbackup не является допустимым способом для многотомной базы. В экспертизе дополнительно сохраняют исходное состояние до запуска штатной утилиты, потому что цель сохранения и исследования исходного состояния отличается от обычного администрирования.
Трассировка, аудит и серверные журналы
Firebird Trace API и Services позволяют собирать сведения о подключениях, транзакциях, операторах, процедурах, ошибках и других событиях в пределах конфигурации сессии. Системный аудит использует конфигурацию трассировки сервера и начинает работать только при соответствующей настройке. Охват определяется фильтрами включения/исключения, порогами, размером и временем активности; отсутствовавшие ранее события задним числом не появляются.
firebird.log содержит сообщения сервера о запуске, ошибках, сетевых и внутренних проблемах, но не является журналом каждого SQL-запроса. Таблицы мониторинга описывают главным образом текущее состояние и меняются при работе системы. Для временной линии данные трассировки и серверные материалы сопоставляют с приложением, ОС и сетью, учитывая часовой пояс и точность часов.
Сбои, производительность и миграция
Причины отказа или замедления исследуют по firebird.log и трассировке, активным подключениям и транзакциям, длительным снимкам, показателям старейшей интересующей, активной и снимковой транзакции (oldest interesting/active/snapshot transaction), сборке мусора и служебной очистке, планам, индексам, чтениям/записям страниц, таблице блокировок, памяти, вводу-выводу и журналам приложения. Текущий gstat не доказывает прошлую картину без снимка за спорный период.
При миграции сопоставляют таблицы и поля, домены, генераторы/последовательности, первичные и внешние ключи, ограничения, значения по умолчанию, вычисляемые поля, кодировки и правила сортировки, точность чисел, временные метки/часовые пояса, BLOB, массивы, индексы, представления, триггеры, процедуры, функции, пакеты, роли и права. Проверяют отклонённые строки, правила преобразования, повторные запуски и изменения после контрольной точки. Равное количество строк не подтверждает эквивалентность поведения PSQL и приложения. Когда предметом спора становится сам перенос, а не устройство базы, задачу закрывает экспертиза миграции баз данных.
Примеры вопросов на экспертизу
При судебной экспертизе окончательный круг вопросов определяет суд, а в иных предусмотренных законом процедурах — орган или лицо, назначившие экспертизу. Вопросы о виновности, умысле, правовой квалификации события, нарушении договора и ответственности разрешает суд или иной уполномоченный орган. Эксперт отвечает на поставленные вопросы в пределах специальных знаний и представленных материалов; о неясности вопроса, выходе за пределы компетенции или недостаточности материалов он в установленном порядке сообщает суду, органу или лицу, назначившим экспертизу.
До назначения стороны могут использовать приведённые ниже формулировки как предложения о технических вопросах. Для Firebird полезно указать FDB или резервную копию, версию и ODS, таблицу или объект, период, часовой пояс и технический критерий. Например, можно предложить исследовать, содержат ли база, данные трассировки и журналы сведения об изменении записи X и с какими техническими идентификаторами оно связано, либо какие нарушения выявляются проверками и как они влияют на чтение таблиц A и B. Дополнительные примеры:
- Каковы версия формата ODS, размер страницы, диалект SQL и состав основных объектов представленной базы?
- Какие записи и их версии доступны для исследования в указанной таблице?
- Имеются ли признаки структурного повреждения и какие объекты оно затрагивает?
- Различаются ли представленные FDB и в каких таблицах или метаданных?
- Каково состояние транзакций, связанных с указанными версиями записей?
- Восстанавливается ли представленная копия
gbakлибо цепочкаnbackupбез ошибок? - Какие операции отражены в трассировке и с какими подключением, учётной записью и удалённым адресом?
- Соответствует ли применявшийся порядок резервного копирования установленным требованиям?
- Каковы технические причины зафиксированного сбоя или деградации?
- Полностью ли перенесены перечисленные данные и программные объекты?
Порядок работы, результат и стоимость
Специалист идентифицирует версию и ODS, инвентаризирует материалы, фиксирует их SHA-256, создаёт рабочие копии и совместимый изолированный стенд. Затем анализирует страницы и метаданные, выполняет документированные проверки без изменения данных, отдельно тестирует восстановление и альтернативные причины. Исходная FDB как мастер-копия не используется для исправления или обычного запуска.
Если судебная экспертиза уже назначена, назначенный по делу эксперт не принимает от одной стороны напрямую дополнительные файлы базы, резервные копии и файлы изменений и не даёт ей частную оценку по существу поручения: вопросы, доступ и новые материалы идут через назначившего субъекта. Это не исключает обращения стороны к другому, не назначенному по делу специалисту — за консультацией или рецензией по законно полученным материалам. Предшествующую содержательную работу специалиста для одной стороны раскрывают при рассмотрении его кандидатуры; допустимость назначения и возможный отвод решает уполномоченный субъект с учётом мнения участников. Чтобы снизить риски, роли консультанта стороны и кандидата в судебные эксперты целесообразно разделять.
Результатом может быть консультация, внесудебное исследование, заключение специалиста, судебная экспертиза или рецензия. Ориентир по стоимости — от 100 000 ₽, срок — от 10 рабочих дней; влияют версия, объём, повреждение, цепочка резервных копий, шифрование, приложение, период и вопросы. Процессуальный статус определяется назначением, а доказательственное значение — судом. Готовое чужое заключение проверяет рецензия на заключение экспертизы баз данных и СУБД.
Проведение экспертизы по уголовному делу
Судебная экспертиза по уголовному делу производится государственными судебными экспертами и иными экспертами из числа лиц, обладающих специальными знаниями.
Негосударственными судебно-экспертными учреждениями постановление Пленума Верховного Суда Российской Федерации от 21 декабря 2010 г. № 28 «О судебной экспертизе по уголовным делам» признаёт некоммерческие организации, созданные в соответствии с Гражданским кодексом Российской Федерации и Федеральным законом «О некоммерческих организациях» и осуществляющие судебно-экспертную деятельность в соответствии с принятыми ими уставами.
По сведениям организации, проведение судебных экспертиз предусмотрено её уставом (см. действующую редакцию в разделе «Документы организации»). Это само по себе не означает автоматического поручения любой экспертизы. Возможность поручить конкретное исследование определяет назначающий орган с учётом предмета дела, квалификации эксперта, оснований для отвода и действующего перечня экспертиз, выполняемых только государственными судебно-экспертными организациями.