Логирование в базах данных interbase (firebird)


Содержание

DataExpress

Конструктор баз данных

  • Темы пользователя
    • >в конференции
    • >>в форуме
  • Сообщения пользователя
    • >в конференции
    • >>в форуме
    • >>>в теме

Полезное: Редакторы баз данных Firebird

Полезное: Редакторы баз данных Firebird

Сообщение vovka3003 » Чт июн 09, 2020 10:08 pm

Парочка GUI-оболочек для разработки и администрирования баз данных InterBase и Firebird. Обе «Freeware».

1. Рецепт от SoftAce: IBExpert

2. Нарыл случайно, протестировал — показалась даже несколько «дружелюбнее» чем IBExpert: Database Browser Portable

Re: Полезное: Редакторы баз данных Firebird

Сообщение Пользователь » Вс июл 10, 2020 1:26 am

DBeaver — бесплатный универсальный кроссплатформенный SQL клиент

Сообщение Frost » Вт май 08, 2020 1:35 pm

О DBeaver кратко: много возможностей, небольшой вес, портабельность, свободное ПО.

Из основных особенностей прграммы можно выделить:

    Удобный структурированный интерфейс, основан на OpenSource фреймворке c большой подборкой мощных плагинов;
    Небольшой вес — 50Мб;
    Свободное программное обеспечение;
    Мультиплатформенность (работает под Linux, MacOS, Windows, Solaris, AIX, HPUX);
    Поддержка большого количества разных Баз Данных;
    Умеет делать тунеллирование через SSH (встроенный функционал, очень удобно);

Список поддерживаемых баз данных:

MySQL, Oracle, PostgreSQL, IBM DB2, Microsoft SQL Server, Sybase, ODBC, Java DB (Derby), Firebird (Interbase) , HSQLDB, SQLite, Mimer, H2, IBM Informix, SAP MAX DB, Cache, Ingres, Linter, Teradata, Vertica, MongoDB, Cassandra, Любой JDBC совместимый источник

Небольшой список того что умеет DBeaver:

    Обзор и правка метаданных: таблички, колонки, ключи, индексы
    Выполнение SQL запросов и скриптов
    Подсветка синтаксиса для SQL (специфичная для разных типов БД)
    Функция авто-дополнения в SQL редакторе
    Просмотр и редактирование данных в таблицах
    Поддержка BLOB/CLOB (просмотр и редактирование)
    Экспорт данных (таблици, результаты запросов)
    Менеджмент транзакций
    Поиск объектов в базе данных (таблици, колонки, процедуры и т.п.)
    Генерация диаграмм для структур БД
    Закладки для запросов и объектов в БД
    Менеджмент удаленных и локальных подключений
    Экспорт и Импорт в/из БД/файл
    Поиск данных в базе
    И многие другие возможности.

Оф. сайт: https://dbeaver.io

Личный опыт:

    Для подключения к файлу базы данных (программой DBeaver) мне потребовалось установить FireBird сервер;
    При настройке подключения использовал данные по умолчанию логин: SYSDBA и пароль masterkey ;
    Для отображения кирилицы вместо кракозябр в полях данных таблиц использовал запуск программы с ключом -vmargs -Dfile.encoding=UTF8 . Прописывается в ярлыке программы. (Спасибо selfexile с форума xbit, где в своем топике он дает ответ на свой же вопрос. Почему может происходить подобная ситуация с программами на JAVA можно прочесть в статье на хабре.
    При запуске с выше упомянутым ключом, программа не открывает базу с кирилицей в полном имени (пути к файлу), поэтому файл размещаем в папка с латинским наименованием.

Благодаря Edward Grech я узнал, что в документации JVM ™ Tool Interface написано примерно следующее:

IBExpert. Официальная бесплатная версия.


Сообщение Frost » Сб май 19, 2020 10:48 am

Не скачивайте IBExpert ни с каких других ресурсов! Не ведитесь на якобы кряки и патчи! IBExpert и так бесплатен, пользуйтесь только официальными ссылками!

1. Ссылка для скачивания с официального сайта: http://www.ibexpert.net/downloadcenter.

Перейдя по ссылке видим форму (Fig_1.png). Нажимаем [Register]. Открывается форма для заполнения (Fig_2.png). Заполняем поля:
Email, Name, Zip+City+State, Country.

Восстановление поврежденной базы данных Interbase или Firebird

Войдите в каталог Bin в папке, куда был установлен сервер Interbase/Firebird/Yaffil. Для того, чтобы не работать с «голым» окном командной строки, рекомендуется использовать любую файловую утилиту вроде Far или Total Commander.

Проверим базу данных на наличие повреждений:

вместо gdbase.gdb укажите полный путь к своему файлу базы данных (хорошая идея: для того чтобы не обременять себя вводом длинного пути, скопировать файл базы данных непосредственно в каталог BIN). Имя сервера указывать не надо!

Если утилита отработала и не выдала ничего на экран, то с базой все нормально.

Если есть повреждения, то попытаемся исправить их:

Проверим, исправились ли все повреждения:

Если повреждения остались, то запишем информацию в Bak-файл, а потом восстановим в другой новой базе данных. Для этого последовательно выполним команды:

Здесь применены следующие ключи:

  • -b — создавать архивную копию базы;
  • -v — выводить на экран подробный лог;
  • -ig — игнорировать ошибки в данных;
  • -g — запретить сборку мусора при чтении из базы.

Обратите внимание, что при указании имени базы данных необходимо указать имя сервера и через двоеточие полный путь к файлу базы данных на сервере (обратите внимание, что если вы даже скопировали файл базы данных в одну папку с утилитой резервного копирования все равно необходимо указать полный путь к файлу). При указании имени архива следует указать только полный путь к файлу без указания имени сервера.

При серьезных повреждениях базы данных в некоторых таблицах могут пропасть записи из-за чего не восстановятся внешние ссылки на эти таблицы. Или наоборот, появятся «фантомные» записи, нарушающие условия уникальности первичного ключа. В таких случаях на стадии восстановления базы данных из архива на экране будут отображены сообщения об ошибках и процесс восстановления прервется.

Спасти базу можно следующим образом: сначала восстановить ее без внешних ссылок (индексов) с помощью команды:

Затем, с помощью любой оболочки, например IBExpert, один за одним активизировать внешние ключи с целью выявить поврежденные таблицы. По мере выявления следует, либо удалить записи которые содержат ссылки на несуществующие записи, либо добавить несуществующие записи, либо обнулить ссылки. Здесь, хорошим подспорьем может стать наличие пусть и устаревшего, но неповрежденного архива этой же базы.

Если база повреждена настолько, что одной деактивации индексов недостаточно, то можно попробовать ключи -n (отключение проверок целостности данных) и -o (комит данных после каждой таблицы при восстановлении).

Пример команды с вышеупомянутыми ключами:

Как и в предыдущем случае, после разархивирования базы и ручного восстановления целостности данных базу следует еще раз сархивировать и восстановить из архива уже с обычным набором ключей.

Создание базы данных в Interbase и настройка ProxyInspector для работы с ней

Внимание:
IBConsole не входит в стандартный дистрибутив FireBird. Вы можете скачать эту утилиту отдельно с сайта Borland(нужно будет зарегистрироваться на сайте):
http://codecentral.borland.com/codecentral/ccweb.exe/download? >

Для того, чтобы создать базу данных необходимо на компьютере, на котором установлен Interbase/Firebird, запустить утилиту IBConsole(ярлык находится в группе Interbase), войти на сервер(Server | Login, по умолчанию после установки пользователь: SYSDBA, пароль: masterkey), далее запустить утилиту Interactive SQL: пункт меню Tools | Interactive SQL . .

Если это первый запуск IBConsole после установки Interbase/Firebird, то сервер необходимо сначала зарегистрировать в IBConsole. Выберите пункт меню Server | Register, в появившимся окне выберите Local Server и нажмите ОК. После чего нужно выполнить процедуру входа на сервер описанную выше.

После установки ProxyInspector SQL скрипт для создания БД на сервере Interbase/Firebird находится в каталоге

— каталог в который установлен ProxyInspector. Нажно открыть этот скрипт в ISQL командой Query | Load Script:

вместо строки enter database filename here ввести желаемое полное имя и путь к файлу БД(с расширением .gdb), также заменить если нужно имя пользователя и пароль(сохранять не рекомендуется), после чего выполнить команду Query | Execute. База данных будет создана.

Теперь нужно указать путь к ней в ProxyInspector. Запустите ProxyInspector, выберите пункт меню База | Настройки программы, страница База данных | Сервер Interbase:

при доступе по протоколу TCP/IP путь к БД будет состоять из имени или IP-адреса сервера БД, и полного имени файла БД(это же имя указывалось в SQL скрипте при создании БД), разделенных двоеточием. Например: db-server:c:\db-data\interbase\pi_ent.gdb или 10.0.0.5:d:\data\pi_ent.gdb и.т.д.


Если нужно измените имя пользователя и пароль для доступа к серверу Interbase. Опцию Выключать индексы во время импорта следует оставить включенной на время первоначального импорта большого объема лог файлов и выключить после него.

После этого на странице База данных настроек также нужно выбрать Сервер Interbase, нажать OK и перезапустить PI. После чего выбрать База данных | Соединить для подключения к БД.

Для доступа к БД Interbase с других компьютеров необходимо наличие библиотеки gds32.dll в каталоге \system32. Эта библиотека находится в каталоге \system32 компьютера с сервером Interbase и также устанавливается при установке Interbase Client.

InterBase v Firebird

Сверхбыстрая, масштабируемая и встраиваемая SQL-СУБД с возможностями защиты данных коммерческого уровня, аварийного восстановления и синхронизации изменений.

InterBase v Firebird

If you are looking to compare InterBase and Firebird then you will find the answers here to your questions around

  • Performance
  • ВОЗМОЖНОСТЬ МАСШТАБИРОВАНИЯ
  • Business Readiness
  • How key feature compare
  • Total Cost of Ownership

In summary, InterBase is faster, scales further, offers more business critical features, has commercial grade support and a lower total cost of ownership. Read below to see how that is all true.

Возможности InterBase Firebird
Платформы ( )
Windows
Linux
iOS and Android
Mac OS X
Solaris
Core SQL Engine
ACID Compliant
Embeddable
Stored Procedures, Triggers, Generators
High Concurrency
Data Security ( )
Database Encryption External
Column Level Encryption
Multiple Encryption Keys
User / Role Decryption
Business Continuity ( )
Backup
Журналирование
Point-in-Time recovery
In-built change tracking
Change Tracking / Sync 3 rd Party External option
License Cost Per Server & Destination

InterBase – Commercial Grade Database

InterBase is focused on providing commercial grade database features that supports you deliver cost effective software with industry best practice around change tracking, disaster recovery and data protection. InterBase delivers this power in an admin free, fast, scalability architecture so choosing InterBase means choosing a database that grows with you and meets your demands into the future.

Firebird – A distant relative

The Firebird database was developed from an open source copy of the InterBase code back in mid-2000. Firebird is currently community developed, which is co-ordinated by IBPhoenix. While InterBase and Firebird share a number of core features, 15+ years of commercially focused development has enabled InterBase develop a long way from the original open source code.

Below you will discover how InterBase will reduce your costs, save you time, add core business features to your product (especially around business continuity / disaster recovery) and is cheaper than choosing Firebird when it comes to data movement and support.

How they compare

InterBase v Firebird on Scale and Speed.

When it comes to speed and performance many processors make light work! Even mobile phones today carry multi-core processors and InterBase has experience developing for multi-platform devices exploiting SMP since 2002. In contrast Firebird has released in 2020 its first attempts at providing SMP support.

To give a flavor of how much faster and more scalable InterBase is, below are two key metrics from TPC-C performance benchmarking. TPC-C benchmarking provide an industry recognized standard for testing database performance using a fictional warehouse (wh) system that mimics real world usage by mixing read and write activity simultaneously.

Comparing the benchmark test for InterBase XE7 and Firebird 3 on identical hardware show InterBase to be consistently faster than Firebird.

Testing to ensure throughput when data is safely persisted, InterBase out performs Firebird dramatically. Testing a 4wh setup shows InterBase is 30% faster than Firebird. After this point Firebird’s performance drops significantly where as InterBase continues to scale.

Another critical test is against the time you wait for data to return. Based on a complete table scan (the quicker the better!) InterBase is consistently 5 times faster than Firebird, regardless of the data types or number of rows in a table.

One key element to InterBase and Firebird is database transaction handling. Originally InterBase, and thus Firebird, ran with a 32bit Transaction ID. While not a problem for many, the most active systems with large user numbers have in practice needed to backup and restore their database monthly to ensure they don’t run out of transaction IDs. InterBase has moved to a 64bit Transaction ID that mean even the busiest embedded systems today would take closer to 150 years before the system would need to be taken down for maintenance.

In summary; If you are looking for a fast database that will grow with you, InterBase scales further, for longer, and is consistently faster than Firebird.

InterBase v Firebird on Data Protection.

Data protection is a key worry for all businesses today. A data breach typically leads to 4% loss of your customer base with regulatory fines that can lead into millions of dollars and corrective action plans that require staff re-training, customer credit score monitoring etc all on top. This all adds up to a rather expensive exercise best avoided. It is far better to build this in upfront rather than pay for it later.

Watch the Rising to the Data Security Challenge webinar for best practice advice on how to reduce the risks around Data Protection.

When it comes to data protection, both InterBase and Firebird offer role based authentication to control access to data inside the database however this is just the foundation and encryption at rest is key to safe storage of data and avoiding the bigger fines.

The first encryption capability for Firebird arrived in 2020 allowing for the database in its entirety to be encrypted using external encryption libraries. While useful, the architecture is prone to man-in-the-middle attacks and encrypting everything unnecessarily will slow down the database engine and reduce scalability.

In contrast, a highly flexible encryption model has been built into the InterBase core engine since 2010 offering entire database and focused fast granular column level encryption. Additionally, InterBase allows the creation of multiple encryption keys to protect different types of data, a key requirement to conform to many industry best practices e.g. around PCI.


InterBase supports data protection best practice by separating the responsibility for defining data visibility away from general database users into the SYSDSO (System Data Security Officer) login. Having SYSDSO manage granular encryption ensures data visibility rules are built into your data layer and are enforced though-out the development life cycle. By removing the need to manage data visibility rules from the development and test teams, you protect your application from accidental data leaks when refactoring applications in the future. This also removes major risks associated with privilege attacks; the simplest example being developers seeing data they should not have access to.

InterBase v Firebird on Disaster Recovery.

Both InterBase and Firebird are ACID compliant, allowing data to be backed up while the database is live due to a multi-generational architecture.

Backup

Firebird has developed incremental backup allowing them to be run regularly appending files for only what has changed.

InterBase also offers incremental backup, but rather than into backup files that have a long restore process, InterBase produces a secondary read only database. This offers two immediate benefits

  • High demand data mining queries can be run onto a secondary server without impacting from the production server.
  • A copy of the database is available in case of hardware that doesn’t required a lengthy restore process to run first, reducing the costs and risk associated with down time.

Journaling and Point-in-time recovery

InterBase commercial grade features take one giant step on from incremental backups with Journaling and Journal Archives. Journaling allows a database to benefit from in-memory speed with the security of immediate write to disk. Journaling is available to InterBase users and is heavily used in a number of high demand medical data processing facilities due to the speed, performance and data integrity benefits it brings, where the loss of any data can be life or death.

InterBase Journal Archives are the next step on and provide point-in-time recovery, allowing you to take a database back in time to a specific split second to see how the data looked. This allows for the recovery of data, even when a backup hasn’t been run, for ultimate disaster recovery protection. Journaling to a SAN allow for complete data recovery even in the case of hardware failure.

InterBase v Firebird — Replication

The IoT Award winning InterBase technology Change Views provides a replication API built into the core InterBase kernel without extra run time charges. Designed from the ground up to be highly scalable, even for bi-directional data movement, Change Views dramatically reduces the cost of replicating data and ensures remote brief-cased data stays highly relevant.

Firebird doesn’t have any replication API, instead requires the purchase of IBReplicator licenses from IBPhoenix. IBReplicator is an established Replication Technology available for both InterBase and Firebird and is based on trigger based replication. IBReplicator charges $150 per replication server plus a replication target license of $130 per destination. Because of scalability issues, the largest pack pricing available is for 20 licenses. Bidirectional replication with IBReplicator is complicated to configure (as it requiring unique database users for each database to prevent circular changes) making it very time intensive to setup and complicated to manage (something you don’t need to worry about with Change Views). Firebird replication also requires remote databases to be fixed in their location to enable connectivity, rendering it impractical for mobilization projects where they are constantly on the move.

As Change Views is included in the InterBase license, Firebird replication soon outweighs the cost of InterBase (around 10 seats at list price), has a higher setup and management cost and are less flexible. Even if you found a way to manage Firebird replication to 1000 devices for a distributed project, IBReplicator costs would make InterBase a whopping 93% cheaper than using Firebird!

Read the Change Views white paper to discover how Change Views is different from other replication technologies and simplifies data movement.

InterBase v Firebird — Mobile

With mobile accounting for more connected devices today than traditional desktop and servers, mobile is key to the delivery of modern application architecture. The need for offline data is also essential to deliver the best user experience for end users.

InterBase brings its secure encrypted database format to iOS and Android (through InterBase ToGo) allowing one database to be used everywhere. With the addition of the patent pending Change Views, InterBase provides a scalable offline capability that helps reduce the cost of getting data to mobile.

Currently Firebird doesn’t have released support for mobile and tablet platforms.

Looking to take your work force to mobile? read
Mobilizating Enterprise Data – Top 5 mistakes and how to avo >

InterBase v Firebird – Support and Team Access.

InterBase has cost effective options for global commercial grade support that will help give your customers peace of mind. With established SLA that include installation support to get you going, InterBase on-going support is very low in comparison to Firebird’s charged for extra.

The entry level Firebird support offering is “30 day email only support” for $850, rising to $10,000 (Windows) to $20,000 (Linux) per year.

To put it another way:

  • Just 30 day’s support for Firebird costs more than 1 years support for 100 InterBase desktop deployment licenses.
  • For 100 desktop deployments, Firebird is 15.4 x more expensive than InterBase for 1 years support.
  • If you combined licenses and 1 years support costs for 100 desktop deployments, Firebird is almost 4 times the price of InterBase in year one, and then 15.4 x more expensive for each additional year.
InterBase Firebird
100 Desktop Deployments $2,163 $0
1 years support $649 $10,000
Total $2,812 $10,000

A supported top-end InterBase license (Server with unlimited users) for windows has annual running costs that are $7,891 per year cheaper than Firebird.

Every year you pay for Firebird support, you could have purchased 4¾ years InterBase support. Over 3 years, and including upfront license costs, that is a saving of $16,643.

InterBase Firebird
1 Windows Server (with Unlimited users) $7,030 $0
1st years support $2,109 $10,000
2nd years support $2,109 $10,000
3rd years support $2,109 $10,000
Total $13,357 $30,000

When it comes to Linux you could have InterBase supported for 9 years (9 x $2109 = $18,981) for less than the price of a single years support for Firebird (1 x $20,000).


When it comes to access to the InterBase product manangement team, this is included for all InterBase ISV / VAR and OEM customers in your general license costs. The same privilege for Firebird with IBPhoenix costs $50,000!

Summary

It is never an easy conversation to suggest a customer pays for something when they could opt for an Open Source free alternative, however Open Source is not quite like a free beer, it’s more like a free puppy; you have to look after it and care for it and the costs do mount up. While InterBase has a license cost, it delivers more bang for your buck!

InterBase is faster, vastly more scalable, is packed with superior disaster recovery and data protection compliance features that are key to maintaining both you and your customer’s reputations. Additionally, Change Views adds a zero cost and highly scalable replication engine API that reduces significantly both data movement and replication licensing costs for the lowest total cost of ownership.

InterBase continues to offer a faster and more scalable solution than Firebird that will grow with your customer. And as an ISV/OEM/VAR customer your future requirements can always be shared directly with the product management team freely.

If your data is important, Choose InterBase. Choose to Embed, Deploy, Relax!

Как отследить изменения в БД firebird

Можно ли как либо отслеживать добавление записей в БД?А то создавать поток из которого будет посылаться каждую секунду запрос к БД с вопросом «добавилось?», не сильно рационально мне кажется.

Эвент должен энэйблить кнопку «Обновить».Если конфигурация сети такова, что эвенты «не доходят», то раз в * секунд опрашивать сервер на наличие флага «поменялось» (как на сервере этот флаг реализовать — отдельный вопрос), и снова лишь для того, чтобы энейблить волшебную кнопку.И в отдельный трэд сие пихать ни к чему, достаточно в OnIdle (не всякий раз, а в случае, если после предыдущей проверки прошло более * сек).

zinpub,согласен, реально сия автоматизация в 99,999% нафик не нужна. Разве что отслеживать всякие там состояния для отображения на табло прилетов/вылетов и т.п.

Логирование в базах данных interbase (firebird)

Программа была написана с единственной целью: разобраться с жалобами пользователей на частые обрывы соединения с сервером Firebird, которые не подтверждались другими программами, такими как ping.

Алгоритм действия программы очень прост: устанавливается связь с базой данных и через указанные промежутки времени выполняется пакет одинаковых запросов к БД. Время выполнения пакета фиксируется в протоколе.

Если связь оборвалась – это также фиксируется в протоколе и в цикле делаются попытки восстановления связи. После восстановления связи – тестирование продолжается.

Главное окно программы

Для запуска программы нажмите Start, для остановки – Stop.

При каждом запуске протокол (таблица справа) очищается.

Для сохранения результатов в файл – нажмите Save.

Значения параметров настройки

Database: путь к базе данных, соединение с которой проверяется.

User и Password: логин и пароль пользователя для подключения к базе данных.

SQL: выполняемый запрос

Period (sec): периодичность (в секундах) выполнения пакета запросов

Amount queries: количество запросов SQL в одном пакете.

В приведенном примере программа каждую секунду будет выполнять пакет из 100 запросов «select 1 from rdb$database» и фиксировать результат в таблице справа.

Столбцы таблицы

Time: дата-время окончания выполнения пакета запросов

Value: суммарное время выполнения пакета запросов (в мсек)

Error: сообщение об ошибке (разрыве связи) – если есть

Обработка результатов

Меняя сложность выполняемого запроса, количество запросов в пакете, можно смещать акцент нагрузки на сеть (много простых коротких запросов) или на сам сервер (мало сложных, длительных запросов).


Мониторинг времени выполнения пакета запросов в течение дня позволит выявить моменты высокой нагрузки на сервер или на сеть.

Запустив мониторинг одновременно на нескольких клиентских компьютерах, можно локализовать узкие места в системе: выяснить, связано ли торможение с проблемами на сервере, или с конкретным участком сети.

Ниже приводится пример графика, построенного по результатам мониторинга трех компьютеров. По графику видно, что в районе 19:02 на всех трех компьютерах возникла проблема со временем реакции сервера, однако к обрыву связи это не привело (в логах нет ошибок).

Логирование в базах данных interbase (firebird)

Восстановление «безнадежных» баз данных. InterBase Surgeon

В общем, восстановление базы данных может быть очень хлопотным и тяжелым делом, поэтому никогда не бывает лишним сделать резервную копию базы данных, чтобы не заниматься восстановлением поврежденных данных. Тем не менее, даже если это и случилось, не стоит отчаиваться — выход можно найти даже в самых, казалось бы, безнадежных ситуациях, и сейчас мы рассмотрим два таких случая.

Первый случай представляет собой классическую проблему — это невосстанавливающаяся резервная копия из-за наличия NULL-значений в столбце с ограничениями NOT NULL, которую пустили на восстановление прямо поверх рабочего файла. Рабочий файл затерся, процесс восстановления (restore) прервался из-за ошибки, и мы получили в результате необдуманных действий большой кусок бесполезных данных вместо резервной копии, который лежит на диске и, кажется, не поддается восстановлению. Но выход все же был найден. В той реальной ситуации, в которой мы нашли данное решение, программист сумел вспомнить, на какую именно таблицу и на какой столбец было наложено злополучное ограничение NOT NULL. Файл резервной копии был загружен в шестнадцатеричный редактор, и там путем поиска было найдено сочетание байтов, соответствующее определению этого столбца. После многочисленных экспериментов выяснилось, что ограничение NOT NULL добавляет единичку «где-то рядом» с именем столбца. Прямой правкой в НЕХ-редакторе эта единичка была исправлена на 0, и резервная копия была восстановлена. Программист отделался легким испугом и навсегда запомнил, как правильно организовывать процесс резервного копирования и восстановления из резервной копии.

Следующий сличай казался совершенно безнадежным, однако выход все же был найден.

Ситуация сложилась катастрофическая. База данных «сломалась» на этапе расширения из-за нехватки дискового пространства. InterBase записал на странице учета страниц число страниц, превышающее ее реальный размер. Более того, на страницах учета страниц, похоже, также образовались повреждения. В результате база данных вообще не открывалась ни средствами администрирования, ни утилитой gbak, а при попытке подключиться к базе данных появлялась ошибка «Unexpected end of file». При запуске утилиты gfix происходили весьма странные вещи, программа попросту входила в бесконечный цикл. Сервер в момент работы gfix с огромной скоростью (около 100 Кбайт/с) писал ошибки в лог (файл interbase.log). В результате файл лога очень быстро заполнял все свободное дисковое пространство, и пришлось даже написать программу, которая по таймеру уничтожала неимоверно распухающий лог. Этот процесс продолжался довольно долго — gfix работал более 16 ч без каких-либо видимых результатов.

Лог наполнялся ошибками вида «Page XXXX doubly allocated». В исходных кодах InterBase (в файле val.c) есть скупое описание этой ошибки. Оно гласит, что данная ошибка возникает в случае, когда одна и та же страница данных используется дважды. Очевидно, что эта ошибка, как и зацикливание, являлась следствием разрх тения критически важных страниц в базе данных В результате после нескольких дней безуспешных экспериментов попытки восстановить данные стандартными (документированными) способами были оставлены Поэтому пришлось перейти к низкоуровневому анализу данных, хранящихся в поврежденной базе данных, точнее, в том неупорядоченном массиве данных, который oт нее остался.

Автором идеи о том, как извлечь информацию из подобных «безнадежных» баз данных является Александр Козельский, начальник отдела информационных технологий компании East View Publications Inc. (www.eastview.com).

Метод восстановления, полученный в результате исследований, основывался на том факте, что база данных имеет страничную организацию, а данные из каждой таблицы сгруппированы по страницам данных. Каждая страница данных содержит идентификатор таблицы, для которой она хранит данные.

Особенно было важно восстановить данные из нескольких критичных таблиц. Существовали данные из таких же таблиц, полученные из старой резервной копии, которая отлично работала и могла служить образцом.

База данных-образец была загружена в редактор шестнадцатеричных кодов, затем был произведен поиск образцов тех данных, которые нас интересовали. Шестнадцатеричное представление этих данных было скопировано в буфер, а затем в редактор загрузили остатки поврежденной базы данных. В поврежденной базе данных была найдена последовательность байтов, соответствующая образцу, и была проанализирована страница, на которой нашлась эта последовательность. Сначала было определено начало страницы, что оказалось несложно, поскольку размер файла базы данных кратен размеру страницы данных. Найти начало страницы также оказалось возможным, для этого пришлось поделить номер текущего байта на размер страницы — 8192 байта, а затем округлить результат до целых (в результате получился номер текущей страницы) и умножить полученное число на размер страницы. Таким образом, был найден номер байта, соответствующий началу текущей страницы. Проанализировав заголовок, определили тип страницы (для страниц с данными тип равен пяти — см. файл ods.h из комплекта исходных кодов InterBase, а также ниже главу «Структура базы данных InterBase»), а также идентификатор нужной таблицы.

Дальше была написана программа, которая «просматривала» всю базу данных, собирала все страницы для нужной нам таблицы в единый кусок и сбрасывала его в файл.

Получив таким образом «выжимку» только тех данных, которые были нужны в первую очередь, приступили к анализу содержимого отобранных страниц. InterBase активно использует сжатие данных для экономии места. Например, строку типа VARCHAR, содержащую строку «ABC», он хранит в виде последовательности таких значений: длины строки (2 байта, в нашем случае это 00 03), затем самих символов, а потом контрольной суммы. Пришлось написать анализатор строк, а также других типов данных, который преобразовывал специализированное шестнадцатеричное представление данных в «нормальный» вид.

Применив такой метод «рукопашного» разбора содержимого базы данных, удалось извлечь около 80% информации из нескольких критически важных таблиц.

Рубрика «Firebird/Interbase»

Сравнение качества кода Firebird, MySQL и PostgreSQL

Сегодняшняя статья несколько необычна. Как минимум по той причине, что вместо анализа одного проекта, будем искать ошибки сразу в трёх, а также посмотрим, где найдутся наиболее интересные баги. А самое интересное — мы выясним, кто молодец и пишет самый качественный код. Итак, на повестке дня — разбор ошибок в коде проектов Firebird, MySQL и PostgreSQL.
Читать полностью »

Тестирование БД мобильного Delphi-приложения

В предыдущем материале «Выбор СУБД для мобильного Delphi-приложения», как следует из его названия, был показан первый этап в разработке той подсистемы приложения, что отвечает за хранение и бо́льшую часть обработки его данных; уточнение про «бо́льшую часть» сделано неспроста, т. к. в итоге обозначенный выбор пал на СУБД Interbase именно из-за возможности применять хранимые процедуры (ХП), которые и стали сосредоточением основной логики по работе с данными, оставляя за Делфи-кодом несложную задачу по их вызову.

Для лучшего понимания необходимости тестирования в данном конкретном случае, нужно отметить, что в описанном проекте изначально была задана довольно высокая планка качества, поддержание которой в части функционала, реализованного в процедурах, достиглось, в том числе, за счёт автотестов, проверяющих ключевые ХП (они ответственны за критический для приложения функционал – систему рекомендаций). Именно один из способов организации такого тестирования – на основе DUnitX и XML – и является предметом статьи.Читать полностью »

Создание приложений с использованием Firebird, jOOQ и Spring MVC

Всем привет. На этот раз будет описан процесс создания web приложения на языке Java с использованием фреймворка Spring MVC, библиотеки jOOQ и СУБД Firebird.

Для упрощения разработки вы можете воспользоваться одной из распространённых IDE для Java (NetBeans, IntelliJ IDEA, Eclipse, JDeveloper или др.). Лично я использовал NetBeans. Для тестирования и отладки нам так же потребуется установить один и веб-серверов или серверов приложения (Apache Tomcat или Glass Fish) Создаём проект на основе шаблона Maven проекта веб-приложения.
Читать полностью »

Шифрование БД под управлением Firebird 3.0

В современном информационном мире, информация играет значительную роль в жизни человека, общества и государства. Рост размера накапливаемых и обрабатываемых данных подымает вопросы об их хранении и обеспечении конфиденциальности. Уже существует немало технических решений и предложений для решения подобных задач. Среди них конечно же есть и системы управления базами данных (СУБД) которые поддерживают шифрование хранимых данных. Вот об одном из таких решений и пойдёт речь.

В апреле 2020 года вышла новая версия СУБД Firebird под номером 3. Из нововведений, среди прочего, появилось и немало механизмов защиты хранимых и передаваемых данных. Там есть и защита канала передачи данных, есть управление пользователями, а также есть шифрование самой БД, которое реализовано как прозрачное шифрование на уровне страниц данных. Реализуется это всё с помощью написания специальных расширений для Firebird. Можно конечно и самому разобраться и написать эти расширения, но почему бы не взять существующие. Тем более, что для написания, как минимум, нужно понимать в криптографии, иметь на вооружении знания какого-нибудь криптографического пакета и разобраться с новым С++ Firebird API.
Читать полностью »

Как вести логи изменений данных пользователями в базе данных, сохраняя их в другой базе данных

Уважаемые читатели. Это вторая статья из цикла по базам данных.
Решил сделать некоторое оглавление по планируемым статьям этого цикла:


  1. Как сделать разный часовой пояс в разных базах данных на одном сервере.
  2. Как вести логи изменений данных пользователями в базе данных, сохраняя их в другой базе данных, для того чтобы основная база данных не забивалась мусором и не росла.
  3. Как создать свою файловую систему на основе blob полей в базе данных. Почему это удобно. Вопросы эффективности хранения файлов: как получить максимальное быстродействие и при этом минимальное занимаемое место.

Я был удивлен количеством комментариев к первой статье, поэтому сразу хочу заметить, что не претендую на единственно правильный способ реализации. Я уверен, что творческие люди найдут еще немало других способов реализовать данную задачу. Но реализуя ее в свое время, я не нашел ни одной статьи с описанием такого функционала и делать данную задачу пришлось с нуля, хотя она на мой взгляд актуальна. Реализация, которую я буду описывать, полностью рабочая и используется мной на практике.

Так же я приветствую конструктивную критику. Бывает люди пишут интересные вещи и ты можешь взглянуть на проблему под углом, о котором не предполагал и как-то улучшить свои механизмы.

База данных firebird 3.

Формулировка задачи следующая: необходимо писать подробные логи изменений данных пользователями в базе данных (insert, update, delete), но при этом писать их в другой базе данных на другом сервере. Необходимо это для того чтобы размер основной базы данных не рос как на дрожжах, ее удобно было бекапить, ресторить, чтобы она работала быстро, не накапливала мусора, не содержала лишней и редконужной информации.
Читать полностью »

Как сделать разный часовой пояс в разных базах данных на одном сервере

Уважаемые читатели, решил поделиться с Вами техническим решением некоторых интересных и на первый взгляд не очевидных проблем. Всю жизнь я в основном только черпал информацию, читал замечательные статьи (в том числе на Хабре) очень помогавшие мне в решении тех или иных технических проблем. Но в последние 2 года, занявшись разработкой своей облачной платформы для автоматизации предприятий, мне пришлось решать довольно много задач “впервые”, т.е. которые если кто-то и решал, то описания (даже близко) я не находил. В связи с этим я решил написать 3 цикла статей: цикл по базам данных, цикл по безопасности и цикл по системам автоматизации. Эта статья — первая статья первого цикла.

Краткая формулировка задачи: каким-то образом current_date, current_time и current_timestamp должны выдавать дату-время в зависимости от настроек в аккаунте пользователя и при этом на самом сервере будет стоять московское время.

Система задумывалась неограниченно масштабируемая, с огромным числом потенциальных пользователей в любом регионе нашей необъятной страны, в какой-то момент встал вопрос, а удобно ли будет пользователям, например во Владивостоке, работать в системе с московским временем. Сервера то находятся в Москве, на них стоит московское время, при этом каждому пользователю (не важно, из какого он региона) выделяется несколько своих (индивидуальных) баз данных и все они находятся, грубо говоря, на одном сервере. Делать под каждый часовой пояс свой сервер глупо, да и не возможно с точки зрения концепции системы, ибо любой пользователь в любой момент может часовой пояс поменять.
Читать полностью »

Создание web приложения на PHP с иcпользованием Firebird и Laravel

В прошлой статье я рассказывал о пакете для поддержки СУБД Firebird в фреймворке Laravel. На этот раз мы рассмотрим процесс создания web приложения с использованием СУБД Firebird на языке PHP с использованием Laravel.

Обзор драйверов для работы с Firebird

В PHP есть два драйвера для работы с СУБД Firebird:

Обзор расширения Firebird/Interbase

Расширение Firebird/Interbase появилось раньше и является наиболее проверенным. Для установки расширения Firebird/Interbase в конфигурационном файле php.ini необходимо раскомментировать строку

или для UNIX подобных систем строку

Это расширение требует, чтобы у вас была установлена клиентская библиотека fbclient.dll/gds32.dll (для UNIX подобных систем fbclient.so) соответствующей разрядности.

Замечание для пользователей Win32/Win64

Для работы этого расширения системной переменной Windows PATH должны быть доступны DLL-файлы fbclient.dll или gds32.dll. Хотя копирование DLL-файлов из директории PHP в системную папку Windows также решает проблему (потому что системная директория по умолчанию находится в переменной PATH), это не рекомендуется. Этому расширению требуются следующие файлы в переменной PATH: fbclient.dll или gds32.dll.

Выбор СУБД для мобильного Delphi-приложения

Данная статья написана по мотивам – мотивам разработки мобильного приложения, недавно вышедшего на платформах iOS и Android. Это событие можно было бы назвать заурядным и мало кому интересным, если бы не одно большое и несколько незначительных «но»: вся разработка (включая сервер) велась на Delphi, а в качестве СУБД, как ни странно, задействована совсем не SQLite. Автор, безусловно, понимает, что на текущий момент уже существуют мобильные Delphi-приложения, включая доступные в официальных магазинах, однако не наблюдает обилия русскоязычных публикаций, призванных, как минимум, предостеречь читателей от ошибок, сделанных разработчиком таких проектов. Написанное же здесь преследует цель помочь тем, кто сейчас выбирает СУБД для своего творения, либо уже остановился на каком-то варианте, но желает убедиться в правильности своего решения.

Прежде чем начать, необходимо дать краткое представление о разработанном приложении – это список покупок, имеющий в своём запасе некоторый уникальный функционал. Если кто-то сам уже пользуется (или пользовался) одним из многочисленных аналогов, то сейчас мог скептически хмыкнуть – мол зачем ещё один, и так есть из чего выбрать, на что можно лишь посоветовать продолжить чтение, чтобы ознакомиться с его принципиальной особенностью.
Читать полностью »

Добавление поддержки СУБД Firebird в фреймворк Laravel

Во время написания примера (позже будет ссылка) веб-приложения на PHP с использованием СУБД Firebird возник вопрос выбора фреймворка для разработки с использованием архитектурной модели MVC. Выбор фреймворков под PHP очень большой, но наиболее удобным, простым и легко расширяемым показался Laravel. Однако этот фреймворк не поддерживал из коробки СУБД Firebird. Laravel использует для работы с базой данных драйвера PDO. Поскольку для Firebird существует драйвер PDO, то это натолкнуло меня на мысль, что можно с некоторыми усилиями заставить работать Laravel c Firebird.

Laravel — бесплатный веб-фреймворк с открытым кодом, предназначенный для разработки с использованием архитектурной модели MVC (англ. Model View Controller — модель-представление-контроллер). Laravel – это удобный и легко расширяемый фреймворк для построения ваших веб-приложений. Из коробки фреймворк Laravel поддерживает 4 СУБД: MySQL, Postgres, SQLite и MS SQL Server. В этой статье я расскажу как добавить ещё одну СУБД Firebird.
Читать полностью »

Часть 1. Платформа СППР Универсальные алгоритмы

Приветствую, уважаемое сообщество!
Забегая вперед прошу прощения у тех, кто ожидает новизны или революционных идей. Их тут нет. Но есть вполне хорошая прикладная система.
Системы поддержки принятия решений сейчас набирают обороты. Причем я не буду особо останавливаться на перечислении способов реализации. Оговорюсь только об основных свойствах.
Я бы очень упрощенно и обобщенно назвал эти системы вероятностными. То есть они выдают рекомендации с известной долей вероятности используя накопленную и проанализированную статистику. Не скажу что это плохо. Тема BigData и Machine learning нынче в тренде. Так же эти системы работают по принципу черного ящика. Поэтому проверить достоверность работы заложенной модели не всегда можно выявить.Читать полностью »

СУБД Firebird и менеджер БД IBExpert

Читайте также:

  1. IT менеджер. Москва, Россия
  2. АКТИВНЫЕ И ПАССИВНЫЕ МЕНЕДЖЕРЫ
  3. Библиотековед, менеджер библиотечно-информационных технологий и систем
  4. Блок занятий №1. Профессиональная деятельность педагога как эффективного менеджера.
  5. В повседневный обиход вошло словосочетание «педагогический менеджмент». Кто такой менеджер-педагог ? Какие требования предъявляются к нему?
  6. Ведомость расчетов с менеджером по рекламе за 1 квартал 2015 г., в деятельности, переведенной на систему ЕНВД, в рублях
  7. Ветеринарному врачу и менеджеру нельзя концентрироваться на узких проблемах. Надо смотреть в целом.
  8. Готов ли к выполнению роли менеджера сегодняшний практик?
  9. Как работал Менеджер Человечества
  10. Какой должна быть оптимальная система профессионального становления и совершенствования менеджера культуры?
  11. Легко и быстро оформить заказ, после чего с вами непременно свяжется наш менеджер, и
  12. Ли Якокка. Карьера менеджера


Описание среды программирования

ПО разработано на базе операционной системы Windows Seven 32-bit. Эта ОС позволяет работать со средой разработки Embarcadero RAD Studio Delphi XE, менеджером БД IBExpert в связке с СУБД Firebird, а также имеет набор необходимых драйверов для работы с СУБД.

В качестве среды разработки была выбрана Embarcadero RAD Studio Delphi, версия XE. Это популярная среда визуальной разработки, основанная на Object Pascal. Программное обеспечение Embarcadero RAD Studio XE представляет собой полнофункциональный набор средств разработки приложений, который позволяет быстро и наглядно создавать приложения с графическим пользовательским интерфейсом для Windows, .NET, PHP и web-решений. RAD Studio XE включает в себя Delphi, C++Builder, Delphi Prism и RadPHP и поддерживает компилируемые, управляемые и динамические языки, подключение к базам данных в разнородной среде, полнофункциональные платформы визуальной разработки, а также обширную экосистему программного обеспечения сторонних разработчиков. Все это дает возможность в 5 раз ускорить разработку приложений для разных платформ Windows, web-решений и баз данных. Среды разработки RAD Studio многократно упрощают и ускоряют создание визуальных приложений и инструментов, активно работающих с базами данных, – от приложений с графическим интерфейсом для настольных систем и сенсорных экранов до облачных решений, управляемых базами данных многозвенных систем, web-приложений и служб.

Под Delphi XE также написаны компоненты FIBPlus для работы с СУБД Firebird/InterBase. Они используются для доступа к базе данных.

Среди множества различных систем управления базами данных в настоящей работе было решено использовать в качестве платформы именно СУБД Firebird, версия 2.5. Вот почему.

Firebird – это мощная, компактная реляционная система управления базами данных (РСУБД) с архитектурой клиент-сервер. Она может выполняться на разнообразных серверных и клиентских платформах, включая Windows, Linux и на некоторых других платформах UNIX, включая FreeBSD и Max OS X. Это РСУБД промышленного применения, чьи возможности имеют высокий уровень соответствия стандартам SQL, при этом она реализует некоторые мощные расширения языка процедурного программирования конкретного производителя.

Firebird – серьезный программный продукт, созданный для установки в малых и больших сетях, он также обладает некоторыми полезными возможностями для автономных конфигураций. Его небольшой размер дает возможность одиночным разработчикам легко выполнять большие производственные разработки в домашнем офисе. Мощь и высокий уровень соответствия стандартам делает Firebird привлекательной средой для изучения информационных технологий в университетах.

Созданный как проект с открытыми исходными кодами, Firebird является первым в новом поколении потомков InterBase 6.0 Open Edition фирмы Borland, который был сформирован для разработки открытых исходных кодов в июле 2000 г. в рамках InterBase Public License (IPL).

Для того чтобы начать проектирование БД, нужно установить сервер БД Firebird (рисунок 1) и менеджер БД IBExpert (рисунок 2).

Рисунок 2 – Символ СУБД Firebird

Рисунок 3 – Символ IBExpert

Менеджер БД IBExpert (рисунок 3) обладает всем необходимым функционалом для успешного проектирования БД и работы с данными на платформе Firebird и InterBase. Кроме того он является бесплатным для всех, проживающих на территории стран бывшего СССР (лицензия ex-USSR).

• Управление локальными и удаленными серверами;

• Интерактивное выполнение SQL-запросов.

IBExpert — это профессиональная среда для разработки и ад­министрирования БД InterBase и FireBird. Эта программа облегча­ет работу пользователя IB и FB при создании баз данных. Програм­ма IBExpert позволяет создавать компоненты БД: таблицы, пред­ставления, запросы, триггеры, домены и др.

Рисунок 4 – Менеджер БД IBExpert

Дата добавления: 2015-06-29 ; Просмотров: 2121 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

Запуск isql

Для запуска isql откройте командную строку и перейдите в каталог Firebird /bin вашей инсталляции Firebird на сервере или клиенте. Наберите следующую команду в подсказке командной строки и нажмите клавишу :

isql [имя-базы-данных] [-u[ser] -pas[sword] ]

Имя базы данных не является обязательным. Если вы его указываете, то isql будет открывать соединение с указанной базой данных. Это должен быть либо полный путь к базе данных из того места, где вы находитесь, либо правильный алиас в версии 1.5 и более поздних.

Переключатели -user и -password являются необязательными, когда вы запускаете isql без указания связи с базой данных, и требуются, когда вы запускаете isql в удаленном режиме. Если переменные окружения ISC USER и ISC PASSWORD не установлены, имя пользователя и пароль требуются при старте isql локально.

Запуск программы в POSIX:

./isql -user TEMPDBA -password osoweary [в POSIX] isql -user TEMPDBA -password osoweary [в Windows]

запускается программа и сохраняются заданные имя пользователя и пароль без их идентификации.

isql hotchicken:/data/mydatabase.fdb -user TEMPDBA -password osoweary

Указанная команда запускает программу на клиенте Windows и соединяется с базой данных на сервере POSIX, предоставляя верные на сервере имя пользователя и пароль.

запускает локально программу на сервере Linux и соединяется с базой данных в предположении, что переменные окружения ISC_USER и ISC_PASSWORD установлены и доступны вашему пользовательскому профилю пользователя в Linux.

Если вы подключились к базе данных при запуске isql, вы увидите консоль, похожую на рис. 37.1. Конкретный вид окна командной строки зависит от операционной системы. Командная строка isql одинакова для всех платформ.

Рис. 37.1. Консоль, отображаемая при запуске isql с подключением к базе данных

Если вы не ввели путь к базе данных или имя пользователя и пароль не определены на сервере, вы увидите нечто, похожее на рис. 37.2.

Рис. 37.2. Консоль, отображаемая при запуске isql без подключения к базе данных

Если были ошибки в командной строке или возникли проблемы с идентификацией пользователя, вы можете также увидеть сообщения об ошибке. Если вы видите подсказку SDQ>, значит вы находитесь в командной строке isql и можете из нее соединяться с базой данных.

Илон Маск рекомендует:  SaaS-сервисы для email и sms-рассылок
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL