Оглавление Введение 31
Об авторе 31
О техническом редакторе 31
О научном редакторе перевода на русский язык 31
Благодарности 32
Введение в Firebird 33
Что такое Firebird? 33
Кому нужна эта книга? 33
Где найти нужную вам информацию? 33
Приложения и глоссарий 34
Происхождение Firebird 35
Проект Firebird 36
Спарки 37
Обзор возможностей 37
Версии Firebird 37
Доступ к сети 38
Многоверсионная архитектура 38
Транзакции 38
Хранимые процедуры и триггеры 39
Ссылочная целостность 39
Оперативное копирование базы данных 39
Безопасность 40
Пример базы данных 42
Соглашения по документации 42
Синтаксические шаблоны 42
Специальные символы 43
ЧАСТЬ I. УЧЕБНЫЙ ЛАГЕРЬ 45
Глава 1. Инсталляция 47
Системные требования 47
Память на сервере (все платформы) 47
Инсталляционные диски 48
Минимальные требования к машине 49
Как получить инсталляционный комплект 50
Содержание комплекта 50
Соглашения по именованию в комплекте инсталляции 51
Зеркальные сайты 52
Комплект поставки для Linux 52
Сжатые файлы (tarballs) 54
Реализация NPTL для высших версий Linux 54
Комплект поставки для Windows 55
Сжатые файлы 56
Серверы 56
Клиентские библиотеки 56
Тестирование результатов инсталляции 57
Сетевой протокол 57
Тестирование сервера 57
Проверка, что сервер Firebird запущен 58
Инсталляция встраиваемого сервера 61
Пример структуры встроенной инсталляции 62
Другие вещи, которые вам нужно знать 62
Пользователи 62
Инструмент администратора 64
Размещение на диске по умолчанию 65
Пора дальше 69
Глава 2. Установка сети 70
Сетевые протоколы 70
Именованные каналы 70
Локальный доступ 70
Клиент-сервер 71
Встраиваемый сервер 71
Смешанные платформы 72
Сетевой адрес для сервера 72
Файл HOSTS 73
Местонахождение файла HOSTS 73
Имя сервера и путь к нему 74
Синтаксис строки соединения 75
Конфигурирование сервиса порта TCP/IP 76
Как сервер устанавливает прослушиваемый порт 77
Установка клиента для поиска порта сервиса 80
Конфигурирование файла services 81
Проверка соединения с помощью ping 82
Если ping выдает ошибку 83
Проблемы с событиями 83
Другие сетевые проблемы 84
Пора дальше 84
Глава 3. Конфигурирование Firebird 85
Конфигурация на уровне базы данных 85
Переменные окружения 85
Где устанавливаются переменные окружения 86
Windows 86
POSIX 87
ISC_USER и ISC_PASSWORD 87
Переменная FIREBIRD (или INTERBASE) 87
FIREBIRD_TMP 88
*_LOCK и *_MSG 88
TMP 88
Файл конфигурации Firebird 89
Изменение параметров конфигурации 89
Пора дальше 93
Глава 4. Основные операции 94
Запуск Firebird на Linux/UNIX 94
Суперсервер 94
Классический сервер 96
Запуск сервера Firebird в Windows 98
Суперсервер 98
Выполнение Firebird как сервиса в Windows NT, 2000 и XP 99
Апплеты Firebird Manager 100
Выполнение Firebird как приложения на платформах Windows 100
Запуск сервера как приложения вручную 101
Останов сервера 102
Алиасы базы данных 103
aliases.conf 103
Переносимость 103
Управление доступом 104
Администрирование баз данных 105
fbmgr/ibmgr 105
instsvc.exe 106
gbak 106
gsec 106
gfix 106
gstat 107
fb_lock_print 107
Введение в isql 107
Запуск isql 107
Использование isql 107
Оператор CONNECT 108
Создание базы данных с использованием isql 109
Оператор CREATE DATABASE 109
Пора дальше 110
ЧАСТЬ II. КЛИЕНТ-СЕРВЕР 111
Глава 5. Введение в архитектуру клиент-сервер 113
Базы данных клиент-сервер в сравнении с файл-серверами 114
Характеристики СУБД клиент-сервер 114
Масштабируемость 114
Функциональная совместимость 115
Защита данных 115
Распределение функций 115
Двухуровневая модель 116
Многоуровневая модель 117
Стандартизация 117
Проектирование систем клиент-сервер 118
Абстракция хранимых данных 118
"Руки прочь" от доступа к данным 122
Множество пользователей и параллельность 122
Пора дальше 123
Глава 6. Сервер Firebird 124
Роль сервера 125
Платформы для операционных систем 125
Примеры топологий 126
Двухуровневая архитектура клиент-сервер 126
Однопользовательская модель 127
Серверы Firebird в среде DTP 128
Терминальные серверы 130
Базы данных 130
Программирование на стороне сервера 131
Хранимые процедуры 131
Триггеры 131
Функции, определенные пользователем 132
Приложения, работающие с несколькими базами данных 132
Безопасность сервера 132
Безопасность базы данных 133
Пора дальше 133
Глава 7. Клиенты Firebird 134
Что такое клиент Firebird? 134
Клиентская библиотека Firebird 135
Разработка приложений 136
Динамические приложения клиент-сервер 136
Ядро API Firebird 137
Встроенные приложения Firebird 138
Сервисы API 140
Инсталляция клиентов 140
Инсталляция клиента Linux/UNIX 141
Инсталляция клиента Windows 142
Список имен и размещение клиентской библиотеки 148
Пора дальше 149
ЧАСТЬ III. ТИПЫ ДАННЫХ FIREBIRD И ДОМЕНЫ 151
Глава 8. О типах данных Firebird 153
Где задаются типы данных 153
Поддерживаемые типы данных 153
Булевы типы данных 154
"Диалекты" SQL 154
Идентификаторы с разделителями в SQL-92 154
Контекстные переменные 155
Временные значения 156
Примеры использования 157
Предопределенные литералы даты 157
Примеры использования предопределенных литералов даты 158
Столбцы 158
Домены 158
Преобразование типов данных 159
Неявное преобразование типов 159
Явное преобразование типов: CAST() 160
Изменение определения столбцов и доменов 160
Изменение типа данных столбца 161
Изменение типа данных домена 161
Ключевые слова, используемые для спецификации типа данных 161
Специальная тема миграции: диалекты SQL 162
ODS и диалект 162
Где учитывается диалект 164
Как определять диалект 165
Пора дальше 166
Глава 9. Числовые типы данных 167
Операции с числовыми типами 168
Целые типы 168
SMALLINT 169
INTEGER 169
BIGINT, NUMERIC(18,0) 169
Автоинкремент или тип IDENTITY 170
Генераторы 170
Масштабируемые типы с фиксированной точкой 172
Тип данных NUMERIC 173
Тип данных DECIMAL 174
Конвертированные базы данных 174
Специальные ограничения в статическом SQL 174
Поведение типов с фиксированной точкой в операциях 175
Числовой ввод и показатели степени 178
Типы данных с плавающей точкой 178
FLOAT 180
DOUBLE PRECISION 180
Пора дальше 181
Глава 10. Типы даты и времени 182
DATE 182
TIMESTAMP 182
Доли секунды 183
TIME 183
Интервал времени 183
Литералы даты 183
Распознаваемые форматы литералов даты и времени 184
"Скользящее окно века" в Firebird 185
Разделители в неамериканских датах 186
Пробелы в литералах даты 186
Заключение в апострофы литералов даты 186
Литералы месяца 187
Примеры литералов даты 187
Предварительно определенные литералы даты 187
Неявное преобразование типов в литералах даты и времени 188
Контекстные переменные даты и времени 189
Операции, использующие значения даты и времени 190
Общие правила для операций 191
Выражения в качестве операндов 191
Использование CAST() с типами дата/время 192
Преобразование между типами дата/время 192
Преобразование типов даты в CHAR(n) и VARCHAR(n) 193
Преобразования между типами дата/время и другими типами данных 195
Использование преобразований 195
Функция EXTRACT() 196
Синтаксис 196
Объединение EXTRACT() с другими функциями 197
Понимание функции EXTRACT() 199
Пора дальше 200
Глава 11. Символьные типы данных 201
Основы использования строк 201
Ограничитель строки 201
Конкатенация 202
Управляющие символы 202
Ограничения символьных типов 203
Символьные данные фиксированной длины 203
CHAR(n), алиас для CHARACTER(n) 204
NCHAR(n), алиас для NATIONAL CHARACTER(n) 204
Символьные данные переменной длины 204
Наборы символов и последовательность сортировки 205
Набор символов клиента 206
Переопределение набора символов 207
Наборы символов Firebird 208
Набор символов для клиентского соединения 213
Специальные наборы символов 214
Последовательности сортировки 215
Пользовательские наборы символов и сортировки 218
Пора дальше 220
Глава 12. BLOB и массивы 221
Типы BLOB 221
Поддерживаемые типы BLOB 222
Сегменты BLOB 223
Операции с полями BLOB 224
Когда использовать типы BLOB 225
Типы массивов 226
Типы ARRAY и SQL 226
Когда использовать тип массива 227
Подходящие типы элементов 227
Определение массивов 227
Многомерные массивы 227
Хранение столбцов массивов 228
Доступ к данным массива 229
Ограничения доступа динамического SQL 230
Пора дальше 230
Глава 13. Домены 231
Создание домена 232
Идентификатор домена 232
Тип данных домена 232
Атрибут DEFAULT 233
Атрибут NOT NULL 234
Условия CHECK 234
Атрибут CHARSET/CHARACTER SET 237
Атрибут COLLATE 237
Использование доменов в определении столбца 238
Пример 238
Переопределения в доменах 238
Когда домены не работают 240
Объявление домена BOOLEAN 240
Изменение определения домена 240
Примеры 241
Ограничения на изменение типов данных 241
Удаление домена 242
Пора дальше 242
ЧАСТЬ IV. БАЗА ДАННЫХ И ЕЕ ОБЪЕКТЫ 243
Глава 14. Чертежная доска для базы данных 245
Пользователь SYSDBA и пароль 245
Метаданные 245
Язык определения данных 246
Системные таблицы 246
Проектирование базы данных 246
Описание и анализ 247
Модель данных база данных 248
Одна база данных или много? 248
Физические объекты 249
Соглашения по именованию объектов базы данных и ограничения 256
Скрипты схемы 258
Скрипты Firebird 258
Зачем использовать скрипты? 258
Что находится в скриптах DDL? 259
Основные шаги 262
Управление скриптами вашей схемы 265
Пора дальше 267
Глава 15. Создание и ведение базы данных 268
Физическое хранение базы данных 268
Размещение 268
Безопасность доступа 269
ISC_USER и ISC_PASSWORD 269
Создание базы данных 270
Диалект 270
Обязательные и необязательные атрибуты 271
Получение информации о базе данных 273
Базы данных из одного и нескольких файлов 274
Задание размера файла для однофайловой базы данных 275
Создание многофайловой базы данных 275
Изменение базы данных 276
Кэш базы данных 277
Ограничения и значения по умолчанию 278
Вычисление размера кэша 279
Установка размера кэша на уровне базы данных 280
Изменение значений по умолчанию для сервера 282
Проверка размера кэша 283
Базы данных только для чтения 283
Внешние файлы 284
Преобразование базы данных в режим только для чтения 284
Теневые копии базы данных 285
Преимущества и ограничения теневого копирования 285
Реализация теневого копирования 286
Создание теневой копии 288
Увеличение размера теневой копии 291
Удаление теневой копии 291
"Гигиена" базы данных 292
Фоновая сборка мусора 292
Сборка мусора в процессе резервного копирования 293
Проверка и ремонт 293
Удаление базы данных 297
Синтаксис 297
Пора дальше 297
Глава 16. Таблицы 298
О таблицах Firebird 298
Структурные описания 298
Создание таблиц 298
Владение таблицами и привилегии 299
Оператор CREATE TABLE 299
Ограничения 305
Ограничения целостности 306
Ссылочное ограничение 306
Именованные ограничения 306
Ограничения целостности 307
Ограничение NOT NULL 307
Ограничение PRIMARY KEY 307
Ограничения CHECK 314
Ограничения UNIQUE 316
Использование внешних файлов в качестве таблиц 317
Синтаксис для CREATE TABLE...EXTERNAL FILE 317
Импорт внешних файлов в таблицы Firebird 320
Экспорт таблиц Firebird во внешние файлы 322
Конвертирование внешних таблиц во внутренние 323
Изменение таблиц 323
Подготовка к выполнению ALTER TABLE 323
Изменение столбцов в таблице 324
Удаление столбцов 325
Удаление ограничений 326
Добавление столбца 327
Когда недостаточно ALTER TABLE 328
Удаление таблицы 329
DROP TABLE 329
RECREATE TABLE 330
Временные таблицы 330
Постоянные "временные" таблицы 330
Пора дальше 331
Глава 17. Ссылочная целостность данных 332
Терминология 333
Ограничение FOREIGN KEY 333
Реализация ограничения 334
Действия триггеров по изменению правил целостности 336
Взаимодействие ограничений 337
Триггеры действий пользователя 338
Таблицы соответствия и ваша модель данных 339
Привилегии на ссылки 341
Обработка других видов отношений 342
Отношение один-к-одному 342
Отношение многие-ко-многим 343
Ссылающиеся на себя отношения 346
Обязательные отношения 347
Ошибка "объект находится в использовании" 347
Пора дальше 348
Глава 18. Индексы 349
Ограничения 349
Автоматические индексы в сравнении с определенными пользователем индексами 350
Импорт существующих индексов 350
Направленные индексы 350
Планы запросов 351
Как могут помочь индексы 351
Сортировка и группирование 352
Соединения 352
Сравнения 352
Что индексировать 352
Когда индексировать 353
Использование CREATE INDEX 354
Обязательные элементы 354
Необязательные элементы 355
Индексы для нескольких столбцов 356
Предикаты OR в запросах 357
Критерии поиска 357
Просмотр индексов 358
Изменение индекса 358
Активация/деактивация 358
Изменение структуры индекса 359
Удаление индекса 359
Ограничения 359
Тема оптимизации: оптимальное индексирование 360
Действия по обслуживанию индексов 360
Улучшение селективности индекса 360
Получение статистики по индексу 364
Интерфейс gstat 365
Другие переключатели gstat 371
Пора дальше 377
ЧАСТЬ V. FIREBIRD SQL 379
Глава 19. Язык SQL в Firebird 381
Firebird и стандарты 381
Операторы SQL 382
Язык определения данных (DDL) 383
Язык манипулирования данными (DML) 383
Возможности встраиваемого языка (ESQL) 383
Динамический в сравнении со статическим SQL 384
Интерактивный SQL (ISQL) 385
Процедурный язык (PSQL) 385
Диалекты SQL 385
Ресурсы SQL 386
Книги 386
Свободная поддержка SQL 387
Пора дальше 387
Глава 20. Запросы DML 388
Наборы данных 388
Таблица является набором 388
Выходные наборы 389
Кардинальное число и положение 389
Входные наборы 390
Выходные наборы в качестве входных наборов 390
Наборы курсора 391
Вложенные наборы 392
Привилегии 393
Оператор SELECT 393
Предложения в операторе SELECT 394
Запросы, подсчитывающие строки 403
Оператор INSERT 405
Добавление данных в столбцы BLOB 406
Использование INSERT для автоматических полей 406
Оператор UPDATE 409
Позиционированные операции в сравнении с поисковыми 409
Использование оператора UPDATE 410
Оператор DELETE 412
Оператор EXECUTE 412
Запросы, которые вызывают хранимые процедуры 413
Выполняемые процедуры 413
Процедуры выбора 413
Использование параметров 414
Замечания для пользователей Delphi 415
Пакетные операции 416
Пакетные добавления 416
Операции DML и события изменения состояния 417
Предложения действия ссылочной целостности 417
Пользовательские триггеры 417
Пора дальше 419
Глава 21. Выражения и предикаты 420
Выражения 420
Предикаты 421
Где проверяется истинность 422
Утверждения 422
Решение, что является истинным 423
Символы, используемые в выражениях 424
Операторы SQL 426
Приоритет операторов 426
Оператор конкатенации 427
Арифметические операции 427
Операторы сравнения 428
Другие предикаты сравнения 429
Логические операторы 432
Предикат IS [NOT] NULL 433
Предикаты существования 433
Обсуждение NULL 437
NULL в выражениях 437
NULL в вычислениях 438
Понимание истинности и ложности 438
NULL и внешние функции (UDF) 439
Установка значения в NULL 439
Использование выражений 440
Вычисляемые столбцы 440
Определение столбцов COMPUTED BY 446
Условия поиска 446
Условия упорядочения и группирования 448
Выражения CHECK в DDL 449
Выражения в PSQL 449
Вызовы функций 450
Внутренние функции SQL 450
Внешние функции (UDF) 456
Пора дальше 461
Глава 22. Запросы к множеству таблиц 462
Виды многотабличных запросов 462
Соединения 463
Подзапросы 463
Запросы UNION 463
Соединения 463
Внутреннее соединение 464
Синтаксис неявного INNER JOIN в SQL-89 465
Синтаксис явного INNER JOIN в SQL-92 465
Смешивание неявного и явного синтаксисов 467
Внешние соединения 467
LEFT OUTER JOIN 467
RIGHT OUTER JOIN 468
FULL OUTER JOIN 469
Перекрестные соединения 470
Естественные соединения 470
Двусмысленность в запросах JOIN 470
Алиасы таблиц 471
Допустимые имена алиасов таблиц 472
Внутренний курсор 472
Реентерабельные соединения 473
Курсоры для реентерабельных соединений 473
Подзапросы 475
Задание столбца при использовании подзапроса 475
Коррелированные подзапросы 476
Подзапрос или соединение? 476
Поиск с использованием подзапроса 477
Реентерабельные подзапросы 477
Добавление данных с использованием подзапроса с соединениями 478
Оператор UNION 478
Наборы, совместимые для объединения 479
Использование столбцов времени выполнения в объединениях 480
Условия поиска и упорядочивания 481
Реентерабельные запросы UNION 481
UNION ALL 482
Темы оптимизации: планы запросов и оптимизатор 482
Планы и оптимизатор запросов Firebird 482
Улучшение плана запроса 494
Пора дальше 498
Глава 23. Упорядоченные и агрегатные наборы 499
Обсуждение сортировки 499
Задание порядка в предложениях сортировки 499
Временное пространство сортировки 500
Индексирование 501
Предложение ORDER BY 501
Элементы сортировки 502
Направление сортировки 505
Размещение пустых значений 505
Предложение GROUP BY 506
Список группируемых полей 506
Группирующий элемент 508
Подвыражение HAVING 511
Подвыражение COLLATE 512
Использование ORDER BY в группирующем запросе 512
Улучшенные условия группирования 512
Пора дальше 515
Глава 24. Просмотры 516
Что такое просмотр? 516
Ключи и индексы 516
Упорядочение и группирование строк 517
Некоторые простые спецификации просмотров 517
Почему просмотры могут быть полезными 518
Привилегии 518
Создание просмотров 519
Оператор CREATE VIEW 520
Просмотры только для чтения и изменяемые 524
Просмотры только для чтения 524
Естественно изменяемые просмотры 526
Изменение поведения изменяемых просмотров 526
Изменить определение просмотра? 527
Удаление просмотра 527
Использование просмотров в SQL 527
Использование планов запросов для просмотров 528
Другие наследуемые таблицы 530
Хранимые процедуры выбора 530
Внешние виртуальные таблицы 531
Пора дальше 532
ЧАСТЬ VI. ТРАНЗАКЦИИ 533
Глава 25. Обзор транзакций Firebird 535
Свойства ACID 536
Атомарность 536
Согласованность 536
Изолированность 536
Устойчивость 537
Контекст транзакции 537
Одна транзакция, много запросов 537
Транзакции и MGA 539
Пересылка в сравнении с COMMIT 539
Откат 539
Блокировка строки 540
Блокировка на уровне таблицы 541
Добавление 542
"Старение" и статистика транзакций 542
Идентификатор и возраст транзакции 542
"Заинтересованные транзакции" 543
OIT и OAT должны постоянно изменяться 546
Условия для изменения OIT и OAT 547
Чистка в сравнении со сборкой мусора 548
Статистика транзакций 549
gstat 549
isql 550
Что может рассказать вам статистика 550
Пора дальше 551
Глава 26. Конфигурирование транзакций 552
Параллельность 552
Факторы, влияющие на параллельность 552
Уровень изоляции 553
Способ доступа 556
Способ разрешения блокировок ("Режим блокировок") 556
Резервирование таблиц 557
Версии записей 560
Зависимые строки 561
Блокировки и конфликты блокировок 561
Время действия 561
Конфликты блокировки 562
Что такое взаимная блокировка? 563
Пора дальше 564
Глава 27. Программирование с транзакциями 565
Язык для транзакций 565
ESQL 565
API 566
Запуск транзакции 566
SQL 566
API 568
Доступ к идентификатору транзакции 570
Использование TID в приложениях 571
Процесс выполнения транзакции 571
Вложенные транзакции 571
Пользовательские точки сохранения 572
Логический контекст 575
Завершение транзакций 575
Диагностирование исключений 578
Транзакции для нескольких баз данных 580
Зависшие транзакции 581
Ограниченные базы данных 581
Пессимистическая блокировка 582
Блокировка на уровне таблицы 582
Блокировка на уровне оператора 583
Хранимые процедуры, триггеры и транзакции 588
Хранимые процедуры 588
Триггеры 588
"Точки сохранения" в PSQL 588
Советы по оптимизации поведения транзакции 589
Выбор подходящей модели транзакции 589
Не переходите к "общему" пока вам это не понадобилось 589
Использование возможностей множества транзакций 589
Сохраняйте передвижение OAT! 589
Пора дальше 590
ЧАСТЬ VII. ПРОГРАММИРОВАНИЕ НА СЕРВЕРЕ 591
Глава 28. Введение в программирование в Firebird 593
Обзор модулей сервера 593
Хранимые процедуры 594
Преимущества использования хранимых процедур 595
Триггеры 595
Преимущества использования триггеров 596
Триггеры в качестве автоинкрементного механизма 596
Триггеры и транзакции 596
Расширения языка PSQL 597
Ограничения PSQL 597
Типы операторов, не поддерживаемых в PSQL 598
Исключения 598
События 599
Безопасность 599
Внутреннее устройство технологии 600
Эффекты изменений 600
Пора дальше 601
Глава 29. Разработка модулей PSQL 602
Элементы процедур и триггеров 602
Оператор CREATE 602
Элементы заголовка 605
Элементы тела 605
Элементы языка 606
Программные конструкции 608
Блоки BEGIN ... END 608
Условные блоки 609
Переменные 611
Операторы SELECT ... INTO 616
Операторы управления потоком 619
EXECUTE STATEMENT 620
POST_EVENT 623
Разработка модулей 623
Добавление комментариев 623
Чувствительность к регистру и пробелы 623
Управление вашим кодом 624
Компиляция хранимых процедур и триггеров 625
Удаление исходных текстов модулей 627
Пора дальше 628
Глава 30. Хранимые процедуры 629
Выполняемые хранимые процедуры 629
Хранимые процедуры выбора 629
Создание хранимых процедур 630
Элементы заголовка 630
Элементы тела 631
Выполняемые процедуры 633
Сложная обработка 634
Поддержка "живых" клиентских наборов 634
Операции в выполняемых процедурах 634
Многотабличные процедуры 635
Конструкция SELECT ... INTO 636
Использование (вызов) выполняемых процедур 638
Рекурсивные процедуры 639
Курсоры в PSQL 641
Хранимые процедуры выбора 642
Использование процедур выбора 642
Техника 644
Конструкция FOR SELECT ... DO 644
Простая процедура с вложенными операторами SELECT 646
Вызов процедуры выбора 647
Вложенные процедуры 648
Процедура с промежуточными итогами 652
Просмотр массива в хранимой процедуре 654
Тестирование процедур 656
Процедуры для совместного использования 656
Изменение хранимых процедур 656
Влияние на приложения 657
Синтаксис изменения процедур 657
Удаление хранимых процедур 660
Ограничения 660
Тема оптимизации: использование внутренних возможностей 661
Относительно RDB$DB_KEY 661
RDB$DB_KEY в многотабличных наборах 665
Пора дальше 666
Глава 31. Триггеры 667
Фаза, событие и последовательность 667
Фаза и событие 667
Последовательность 668
Состояние 669
Создание триггеров 669
Синтаксис 670
Элементы заголовка 670
Тело триггера 671
Особенности PSQL для триггеров 671
Переменные события 672
Переменные NEW и OLD 672
Изменение других таблиц 678
Поддержание обязательного отношения 678
Поддержка ссылочной целостности 681
Изменение строк в той же таблице 686
Изменение триггеров 687
Синтаксис для изменения триггеров 687
Удаление триггеров 689
Пора дальше 689
Глава 32. Обработка ошибок и события 690
Типы исключений 690
Что такое исключение? 690
Создание исключения 691
Исключения в действии 692
Обработка исключений 693
Оператор WHEN 693
Вложенные исключения в качестве точек сохранения 696
Обработка исключения REASSIGN_SALES 696
Протокол ошибок 698
Исключения в триггерах 700
Сообщения исключений во время выполнения 701
Список кодов ошибок 702
Написание вашего собственного списка кодов ошибок 702
События 704
Использование сообщений о событиях 704
Элементы механизма 705
Синхронное прослушивание 706
Асинхронная сигнализация 708
Асинхронное прослушивание 709
Использование POST_EVENT 710
Пора дальше 711
ЧАСТЬ VIII. БЕЗОПАСНОСТЬ 713
Глава 33. Безопасность в операционной среде 715
Физическая безопасность 715
Использование защищенных файловых систем 716
Защита оперативных копий 716
Защита, основанная на возможностях платформы 717
Ограничение подключения к операционной системе 717
POSIX 717
Платформы Microsoft Windows 718
Выполнение произвольного кода 719
Firebird 1.0.х 720
Firebird 1.5 720
Безопасность сетевого соединения 721
Web и другие многозвенные серверные приложения 721
Использование выделенных серверов 722
Использование средств межсетевой защиты 722
Отражение атак 722
Пора дальше 722
Глава 34. Защита сервера 723
Ввод учетных данных пользователя 723
Шифрование пароля 724
Учет пользователей в SQL 725
Пользователь SYSDBA 725
Слабое место POSIX 725
Утилита gsec 726
Запуск интерактивной сессии gsec 727
Использование gsec из командной строки 730
Сообщения об ошибках gsec 731
Специальная тема: настройка безопасности пользователя 732
База данных безопасности 732
Предоставление пользователям возможности изменять свой собственный пароль 733
Как спрятать список пользователей/паролей 734
Как запротоколировать попытки соединения с базой данных 735
Как остановить злоумышленников 737
Пора дальше 738
Глава 35. Безопасность на уровне базы данных 739
Безопасность и доступ по умолчанию 739
А теперь плохие новости 739
Привилегии 741
Упаковка привилегий 741
Объекты 742
Ограничения привилегий 743
Пользователи 743
Специальные пользователи 744
Пользователь PUBLIC 744
Предоставление привилегий 745
Права UPDATE к столбцам 745
Права REFERENCES к столбцам 746
Привилегии к объектам 747
Множество привилегий и множество получателей привилегий 748
Привилегии через роли 750
Создание роли 751
Назначение привилегий роли 751
Предоставление роли пользователям 751
Подключение к базе данных с использованием роли 751
Удаление роли 752
Предоставление прав на предоставление привилегий 752
Неожиданные эффекты 753
Отмена полномочий 754
Использование REVOKE 755
Отмена привилегий у нескольких пользователей 756
Отмена права предоставлять привилегии 758
Скрипты безопасности 759
Создание скрипта 759
Инсталляция полномочий непосредственно из процедуры 762
Пора дальше 763
Глава 36. Конфигурация и специальные возможности 764
Сравнение архитектуры Суперсервера и Классического сервера 764
Выполняемые программы и процессы 764
Управление блокировками 765
Использование ресурсов 765
Локальный доступ 766
Файл конфигурации Firebird 767
Параметры 767
Параметры для конфигурирования временного пространства для сортировки 769
Параметры, связанные с ресурсами 771
Параметры, связанные с коммуникацией 773
Работа со встроенным сервером 781
Запуск встроенного сервера 781
Приложения 781
Размещение и переименование библиотеки 782
Жестко закодированные пути к базе данных 782
Утилиты удаленных сервисов 783
Вопросы безопасности сервера 783
Совместимость нескольких серверов 784
Останов встроенного сервера 784
Модули внешних кодов 785
Разработка ваших собственных UDF 785
Написание модуля функции 786
Фильтры BLOB 792
Написание фильтров BLOB 793
Объявление фильтров BLOB 793
Вызов фильтров BLOB 794
Инструменты для написания фильтров 794
Модули интернациональных языков 795
Конфигурирование внешних размещений 795
Установки в файле конфигурации 795
UDFAccess 796
Пора дальше 798
ЧАСТЬ IX. ИНСТРУМЕНТЫ 799
Глава 37. Интерактивный SQL (утилита isql) 801
Интерактивный режим 801
Текстовый редактор по умолчанию 801
Запуск isql 802
Соединение с базой данных 803
Символ терминатора 805
Продолжение строки подсказки 805
Транзакции в isql 805
Поиск в буфере строк 806
Использование предупреждений 807
Обработка исключений 807
Установка в isql диалекта 807
Интерактивные команды 808
Создание и изменение объектов базы данных 809
Общие команды isql 809
Команды SHOW 813
Команды SET 820
Выход из интерактивной сессии isql 826
Командный режим 826
Выполнение isql в командном режиме 826
Переключатели командной строки 827
Извлечение метаданных 828
Использование isql –extract 829
Использование isql –a 829
Пора дальше 830
Глава 38. Резервное копирование и восстановление баз данных (gbak) 831
Файлы gbak 831
Другие таланты gbak 832
Обновление структуры на диске (ODS) 833
Права на выполнение копирования и восстановления базы данных 834
Изменение владельца базы данных 834
Имя пользователя и пароль 834
Выполнение копирования 835
Аргументы для gbak –b[ackup] 835
Переключатели копирования 836
Переносимые копии 838
Копирование в один файл 838
Копирование многофайловой базы данных во множество файлов 838
Копирование только метаданных 839
Выполнение удаленного копирования 840
Решение вопросов безопасности 840
Возвращаемые коды и ответная реакция 840
Выполнение восстановления 841
Аргументы gbak для восстановления 841
Переключатели восстановления 841
Восстанавливать или создавать? 843
Объекты, определенные пользователем 844
Восстановление в один файл 844
Многофайловое восстановление 844
Возвращаемые коды и ответная реакция 845
Размер страницы и размер кэша по умолчанию 845
Использование gbak с Менеджером сервисов Firebird 846
Восстановление в POSIX 847
Копирование 847
Восстановление 848
Сообщение об ошибках gbak 848
Пора дальше 855
Глава 39. Утилита gfix 856
Использование gfix 856
Получение доступа к базе данных из gfix 857
Чистка базы данных 857
Сборка мусора 858
Интервал чистки 858
Выполнение ручной чистки 860
Закрытие базы данных 860
Закрытие базы данных перед остановом сервера 861
Команда gfix –shut 861
Изменение установок базы данных 863
Установка размера кэша по умолчанию 863
Изменение режима доступа 864
Изменение диалекта базы данных 864
Включение и отключение "использовать все пространство" 864
Включение и отключение синхронного вывода 865
Запрос версии сервера Firebird 866
Проверка и починка данных 867
Когда проверять базу данных 867
Выполнение проверки базы данных 867
Восстановление разрушенной базы данных 868
Восстановление транзакций 868
Двухфазное подтверждение 868
Восстановление транзакции 869
Теневые копии 870
Активизация теневой копии 870
Удаление недоступных теневых копий 871
Список переключателей gfix 871
Сообщения об ошибках gfix 873
Пора дальше 874
Глава 40. Менеджер блокировок 875
Менеджер блокировок Firebird 876
Состояния блока 876
Таблица блокировок 877
Утилита Lock Print 879
Статичные отчеты 881
Интерактивные отчеты 881
Вывод отчета в файл 881
Простое использование Lock Print 882
Интерактивная выборка 899
Установка конфигурации блокировки 900
Файлы конфигурации 900
ПРИЛОЖЕНИЯ 903
Приложение 1. Список внешних функций 905
Функции условной логики 905
Математические функции 908
Функции даты и времени 915
Строковые и символьные функции 924
Функции BLOB 931
Тригонометрические функции 936
Подпрограммы форматирования данных 940
Приложение 2. Решение сетевых проблем 943
Можете ли вы вообще соединиться с базой данных? 943
Можете ли вы соединиться с базой данных в локально закольцованном варианте? 944
Прослушивает ли сервер порт Firebird? 945
Вы получили ошибку, хотя сервис выполняется? 945
Находится ли база данных на физически локальном диске? 945
Правильные ли имя пользователя и пароль? 946
Имеет ли владелец серверного процесса достаточно полномочий для открытия файлов? 946
Может ли клиент найти хост? 946
Нужно ли вам отключить автоматический набор номера для Интернета в Windows? 948
Изменить порядок сетевых адаптеров 948
Изменение конфигурации Internet Explorer 949
Запретить автодозвон через реестр 949
Запретить автодозвон RAS 949
Все еще есть проблемы? 949
Приложение 3. Интерфейсы приложений 950
Драйверы JayBird JDBC 950
ODBC 951
Драйвер Firebird ODBC/JDBC 951
Другие драйверы ODBC 952
Firebird .NET Provider 953
IBPP для разработки C++ 953
Delphi, Kylix и Borland C++ Builder 954
IB Objects 954
FIBPlus 955
Другие 956
PHP 957
Python 958
Perl 959
Приложение 4. Как выполнять ремонт базы данных 960
Восемь шагов восстановления 960
Получение исключительного доступа 960
Создание копии работающего файла 961
Выполнение проверки 961
Исправление разрушенных страниц 962
Проверка после исправления –mend 962
Очистка и восстановление базы данных 962
Восстановление очищенной резервной копии в качестве новой базы данных 963
Проверка восстановленной базы данных 963
Как поступать, если проблемы остались 963
Приложение 5. Инструменты администрирования 965
Графические инструменты администратора 965
Database Workbench 965
IBExpert 965
BlazeTop 966
IBAccess 966
IBAdmin 967
IB_SQL 967
IBOConsole 967
Инструменты резервного копирования 968
DBak 968
gbak BackupRunner 968
Time To Backup 969
Разное 969
Инструменты починки базы данных IBSurgeon 969
Анализатор статистики IBAnalyst 969
Interbase DataPump 970
Advanced Data Generator для Firebird 970
Менеджеры полномочий 970
Где посмотреть информацию о других инструментах 971
Приложение 6. Пример базы данных 972
Создание базы данных Employee с помощью скриптов 972
Приложение 7. Ограничения Firebird 974
Приложение 8. Наборы символов и порядков сортировки 980
Приложение 9. Системные таблицы и просмотры 986
Системные таблицы 986
Системные просмотры 1007
Приложение 10. Коды ошибок 1009
Приложение 11. Зарезервированные слова 1065
Приложение 12. Литература и источники 1069
Рекомендуемая литература 1069
Список Web-сайтов 1070
Сайты проекта Firebird 1070
Web-сайты ресурсов 1070
Форумы Firebird 1071
Как стать разработчиком Firebird 1073
Глоссарий 1074
Предметный указатель 1098
6 Оглавление 29 Оглавление