Экспертиза 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 «О судебной экспертизе по уголовным делам», негосударственными судебно-экспертными учреждениями признаются некоммерческие организации, созданные на основании Гражданского кодекса Российской Федерации и Федерального закона «О некоммерческих организациях» и ведущие судебно-экспертную деятельность согласно своим уставам.
По сведениям организации, проведение судебных экспертиз предусмотрено её уставом (см. действующую редакцию в разделе «Документы организации»). Это само по себе не означает автоматического поручения любой экспертизы. Возможность поручить конкретное исследование определяет назначающий орган.
В случаях, перечисленных пунктом 5 постановления № 28, когда экспертизу по уголовному делу назначает суд, ему следует мотивировать в определении или постановлении поручение исследования учреждению либо конкретному лицу. Пункт 5 постановления № 28 связывает выбор негосударственного учреждения с невозможностью провести исследование в государственном учреждении, обслуживающем соответствующую территорию: например, из-за отсутствия нужного специалиста, материально-технической базы или специальных условий, либо с отводом компетентных государственных учреждений. Дополнительно учитываются квалификация эксперта, основания для отвода и действующий перечень экспертиз, выполняемых только государственными судебно-экспертными организациями.